(function() {
	var __r__c__ = this;
	/** Generated by SimQ **/
	/** modules **/
	
	// Generated by CoffeeScript 1.6.3
	(function() {
	  var SUPPORTED, arrayIndexOf, cache, creating, modules, require, resolve, stats;
	
	  if (!this.require) {
	    SUPPORTED = ['js', 'json', 'ts', 'coffee', 'eco'];
	    modules = {};
	    stats = {};
	    cache = {};
	    creating = [];
	    require = function(name, parent) {
	      var fullName, m;
	      if (parent == null) {
	        parent = null;
	      }
	      fullName = resolve(name, parent);
	      if (typeof cache[fullName] === 'undefined') {
	        m = {
	          exports: {},
	          id: fullName,
	          filename: fullName,
	          loaded: false,
	          parent: null,
	          children: null
	        };
	        if (arrayIndexOf(creating, fullName) === -1) {
	          creating.push(fullName);
	          modules[fullName].apply(window, [m.exports, m]);
	          creating.splice(arrayIndexOf(creating, fullName));
	          cache[fullName] = m;
	        }
	        m.loaded = true;
	      } else {
	        m = cache[fullName];
	      }
	      if (typeof stats[fullName] === 'undefined') {
	        stats[fullName] = {
	          atime: null,
	          mtime: null,
	          ctime: null
	        };
	      }
	      stats[fullName].atime = new Date;
	      return m.exports;
	    };
	    resolve = function(name, parent) {
	      var ext, num, original, part, parts, prev, result, _i, _j, _k, _len, _len1, _len2;
	      if (parent == null) {
	        parent = null;
	      }
	      original = name;
	      if (parent !== null && name[0] === '.') {
	        num = parent.lastIndexOf('/');
	        if (num !== -1) {
	          parent = parent.substr(0, num);
	        }
	        name = parent + '/' + name;
	      }
	      parts = name.split('/');
	      result = [];
	      prev = null;
	      for (_i = 0, _len = parts.length; _i < _len; _i++) {
	        part = parts[_i];
	        if (part === '.' || part === '') {
	          continue;
	        } else if (part === '..' && prev) {
	          result.pop();
	        } else {
	          result.push(part);
	        }
	        prev = part;
	      }
	      name = result.join('/');
	      if ((original[0] === '/') || (parent !== null && parent[0] === '/' && original[0] === '.')) {
	        name = '/' + name;
	      }
	      if (typeof modules[name] !== 'undefined') {
	        return name;
	      }
	      for (_j = 0, _len1 = SUPPORTED.length; _j < _len1; _j++) {
	        ext = SUPPORTED[_j];
	        if (typeof modules[name + '.' + ext] !== 'undefined') {
	          return name + '.' + ext;
	        }
	      }
	      for (_k = 0, _len2 = SUPPORTED.length; _k < _len2; _k++) {
	        ext = SUPPORTED[_k];
	        if (typeof modules[name + '/index.' + ext] !== 'undefined') {
	          return name + '/index.' + ext;
	        }
	      }
	      throw new Error("Module " + original + " was not found.");
	    };
	    arrayIndexOf = function(array, search) {
	      var element, i, _i, _len;
	      if (typeof Array.prototype.indexOf !== 'undefined') {
	        return array.indexOf(search);
	      }
	      if (array.length === 0) {
	        return -1;
	      }
	      for (i = _i = 0, _len = array.length; _i < _len; i = ++_i) {
	        element = array[i];
	        if (element === search) {
	          return i;
	        }
	      }
	      return -1;
	    };
	    this.require = function(name, parent) {
	      if (parent == null) {
	        parent = null;
	      }
	      return require(name, parent);
	    };
	    this.require.simq = true;
	    this.require.version = 1;
	    this.require.resolve = function(name, parent) {
	      if (parent == null) {
	        parent = null;
	      }
	      return resolve(name, parent);
	    };
	    this.require.define = function(bundleOrName, obj) {
	      var m, name, _results;
	      if (obj == null) {
	        obj = null;
	      }
	      if (typeof bundleOrName === 'string') {
	        return modules[bundleOrName] = obj;
	      } else {
	        _results = [];
	        for (name in bundleOrName) {
	          m = bundleOrName[name];
	          _results.push(modules[name] = m);
	        }
	        return _results;
	      }
	    };
	    this.require.release = function() {
	      var name, _results;
	      _results = [];
	      for (name in cache) {
	        _results.push(delete cache[name]);
	      }
	      return _results;
	    };
	    this.require.getStats = function(name, parent) {
	      var fullName;
	      if (parent == null) {
	        parent = null;
	      }
	      fullName = resolve(name, parent);
	      if (fullName === null) {
	        throw new Error('Module ' + name + ' was not found.');
	      }
	      if (typeof stats[fullName] === 'undefined') {
	        stats[fullName] = {
	          atime: null,
	          mtime: null,
	          ctime: null
	        };
	      }
	      return stats[fullName];
	    };
	    this.require.__setStats = function(bundle) {
	      var data, name, _results;
	      _results = [];
	      for (name in bundle) {
	        data = bundle[name];
	        _results.push(stats[name] = {
	          atime: new Date(data.atime),
	          mtime: new Date(data.mtime),
	          ctime: new Date(data.ctime)
	        });
	      }
	      return _results;
	    };
	    this.require.cache = cache;
	  }
	
	  return this.require.define;
	
	}).call(this)({
	 '/lib/Args.js': function(exports, module) {
	
		/** node globals **/
		var require = function(name) {return __r__c__.require(name, '/lib/Args.js');};
		require.resolve = function(name, parent) {if (parent === null) {parent = '/lib/Args.js';} return __r__c__.require.resolve(name, parent);};
		require.define = function(bundle) {__r__c__.require.define(bundle);};
		require.cache = __r__c__.require.cache;
		var __filename = '/lib/Args.js';
		var __dirname = '/lib';
		var process = {cwd: function() {return '/';}, argv: ['node', '/lib/Args.js'], env: {}};
	
		/** code **/
		// Generated by CoffeeScript 1.6.3
		(function() {
		  var args, count, emptyArgument, expandArguments, exportFunc, fn, isFunction, name, type, types;
		
		  types = {
		    string: '[object String]',
		    number: '[object Number]',
		    'boolean': '[object Boolean]',
		    array: '[object Array]',
		    object: '[object Object]',
		    fn: '[object Function]'
		  };
		
		  exportFunc = {
		    string: function(d) {
		      return {
		        type: 'string',
		        d: d
		      };
		    },
		    number: function(d) {
		      return {
		        type: 'number',
		        d: d
		      };
		    },
		    'boolean': function(d) {
		      return {
		        type: 'boolean',
		        d: d
		      };
		    },
		    array: function(d) {
		      return {
		        type: 'array',
		        d: d
		      };
		    },
		    object: function(d) {
		      return {
		        type: 'object',
		        d: d
		      };
		    },
		    any: function(d) {
		      return {
		        type: 'any',
		        d: d
		      };
		    },
		    fn: function(d) {
		      return {
		        type: 'fn',
		        d: d
		      };
		    },
		    oneOf: function(list, d) {
		      var i, readable, t, type, _i, _len;
		      if (d == null) {
		        d = null;
		      }
		      readable = [];
		      for (i = _i = 0, _len = list.length; _i < _len; i = ++_i) {
		        type = list[i];
		        t = type().type;
		        list[i] = types[t];
		        readable.push(t);
		      }
		      return {
		        type: 'oneOf',
		        d: d,
		        dCalled: arguments.length === 2,
		        types: list,
		        readable: readable
		      };
		    }
		  };
		
		  emptyArgument = {};
		
		  type = Object.prototype.toString;
		
		  isFunction = function(v) {
		    return type.call(v) === '[object Function]';
		  };
		
		  count = function(num) {
		    switch (num) {
		      case 1:
		        return 'st';
		      case 2:
		        return 'nd';
		      case 3:
		        return 'rd';
		      default:
		        return 'th';
		    }
		  };
		
		  expandArguments = function(params, expected) {
		    var actual, e, i, _i, _len;
		    if (params == null) {
		      params = [];
		    }
		    if (expected == null) {
		      expected = [];
		    }
		    for (i = _i = 0, _len = expected.length; _i < _len; i = ++_i) {
		      e = expected[i];
		      if (isFunction(e)) {
		        e = e();
		      }
		      actual = type.call(params[i]);
		      if (params[i] !== null && e.type !== 'any' && ((e.type === 'oneOf' && e.types.indexOf(actual) === -1) || (e.type !== 'oneOf' && types[e.type] !== actual))) {
		        params.splice(i, 0, emptyArgument);
		      }
		    }
		    return params;
		  };
		
		  args = function(params, expected) {
		    var e, expect, fn, i, last, must, num, param, _i, _len;
		    if (params == null) {
		      params = [];
		    }
		    if (expected == null) {
		      expected = [];
		    }
		    if (type.call(params) === '[object Arguments]') {
		      params = Array.prototype.slice.call(params);
		    }
		    params = expandArguments(params, expected);
		    for (i = _i = 0, _len = params.length; _i < _len; i = ++_i) {
		      param = params[i];
		      expect = null;
		      e = expected[i];
		      if (typeof e !== 'undefined') {
		        expect = isFunction(e) ? e().type : e.type;
		      }
		      if (param === emptyArgument) {
		        fn = isFunction(e);
		        if (fn || (!fn && e.type === 'oneOf' && e.dCalled === false)) {
		          if (fn) {
		            must = e().type;
		          } else {
		            if (e.readable.length === 1) {
		              must = e.readable[0];
		            } else {
		              last = e.readable.pop();
		              must = e.readable.join(', ') + ' or ' + last;
		            }
		          }
		          num = i + 1;
		          throw new Error(num + count(num) + ' argument must be ' + must);
		        }
		        params[i] = e.d;
		      }
		    }
		    return params;
		  };
		
		  for (name in exportFunc) {
		    fn = exportFunc[name];
		    args[name] = fn;
		  }
		
		  module.exports = args;
		
		}).call(this);
		
	
	}, '/lib/Expand.js': function(exports, module) {
	
		/** node globals **/
		var require = function(name) {return __r__c__.require(name, '/lib/Expand.js');};
		require.resolve = function(name, parent) {if (parent === null) {parent = '/lib/Expand.js';} return __r__c__.require.resolve(name, parent);};
		require.define = function(bundle) {__r__c__.require.define(bundle);};
		require.cache = __r__c__.require.cache;
		var __filename = '/lib/Expand.js';
		var __dirname = '/lib';
		var process = {cwd: function() {return '/';}, argv: ['node', '/lib/Expand.js'], env: {}};
	
		/** code **/
		// Generated by CoffeeScript 1.6.3
		(function() {
		  window.normalizeArguments = require('/lib/Args.js');
		
		}).call(this);
		
	
	}
	});
	__r__c__.require.version = '5.6.3';
	
	/** run section **/
	
	/** /lib/Expand.js **/
	__r__c__.require('/lib/Expand.js');
}).call({});