/*! ht - v0.0.2 - 2013-02-18 * Copyright (c) 2013 Doug Martin; Licensed MIT */ (function(){"use strict";function e(e){var t=function(e){return typeof e=="string"?e:typeof e=="object"?e.hashCode?e.hashCode():""+e:""+e},n=e.declare({instance:{constructor:function(){this.__entries=[],this.__keys=[],this.__values=[]},pushValue:function(e,t){return this.__keys.push(e),this.__values.push(t),this.__entries.push({key:e,value:t}),t},remove:function(e){var t=null,n=this.__entries,r,i=this.__keys,s=this.__values,o=n.length-1;for(;o>=0;o--)if(!!(r=n[o])&&r.key===e)return n.splice(o,1),i.splice(o,1),s.splice(o,1),r.value;return t},set:function(e,t){var n=null,r=this.__entries,i=this.__values,s=r.length-1;for(;s>=0;s--){var o=r[s];if(o&&e===o.key){i[s]=t,o.value=t,n=t;break}}return n||r.push({key:e,value:t}),n},find:function(e){var t=null,n=this.__entries,r,i=n.length-1;for(;i>=0;i--){r=n[i];if(r&&e===r.key){t=r.value;break}}return t},getEntrySet:function(){return this.__entries},getKeys:function(){return this.__keys},getValues:function(e){return this.__values}}});return e.declare({instance:{constructor:function(){this.__map={}},entrySet:function(){var e=[],t=this.__map;for(var n in t)t.hasOwnProperty(n)&&(e=e.concat(t[n].getEntrySet()));return e},put:function(e,r){var i=t(e),s=null;return(s=this.__map[i])||(s=this.__map[i]=new n),s.pushValue(e,r),r},remove:function(e){var n=t(e),r=null,i=this.__map[n];return i&&(r=i.remove(e)),r},get:function(e){var n=t(e),r=null,i;return!(i=this.__map[n])||(r=i.find(e)),r},set:function(e,r){var i=t(e),s=null,o=null,u=this.__map;return(o=u[i])?s=o.set(e,r):s=(u[i]=new n).pushValue(e,r),s},contains:function(e){var n=t(e),r=!1,i=null;return!(i=this.__map[n])||(r=!!i.find(e)),r},concat:function(e){if(e instanceof this._static){var t=new this._static,n=e.entrySet().concat(this.entrySet());for(var r=n.length-1;r>=0;r--){var i=n[r];t.put(i.key,i.value)}return t}throw new TypeError("When joining hashtables the joining arg must be a HashTable")},filter:function(t,n){var r=this.entrySet(),i=new this._static;r=e.filter(r,t,n);for(var s=r.length-1;s>=0;s--){var o=r[s];i.put(o.key,o.value)}return i},forEach:function(t,n){var r=this.entrySet();e.forEach(r,t,n)},every:function(t,n){var r=this.entrySet();return e.every(r,t,n)},map:function(t,n){var r=this.entrySet();return e.map(r,t,n)},some:function(t,n){var r=this.entrySet();return e.some(r,t,n)},reduce:function(t,n){var r=this.entrySet();return e.reduce(r,t,n)},reduceRight:function(t,n){var r=this.entrySet();return e.reduceRight(r,t,n)},clear:function(){this.__map={}},keys:function(){var e=[],t=this.__map;for(var n in t)e=e.concat(t[n].getKeys());return e},values:function(){var e=[],t=this.__map;for(var n in t)e=e.concat(t[n].getValues());return e},isEmpty:function(){return this.keys().length===0}}})}"undefined"!=typeof exports?"undefined"!=typeof module&&module.exports&&(module.exports=e(require("extended")().register("declare",require("declare.js")).register(require("is-extended")).register(require("array-extended")))):"function"==typeof define?define(["extended","declare","is-extended","array-extended"],function(t,n,r,i){return e(t().register("declare",n).register(r).register(i))}):this.Ht=e(this.extended().register("declare",this.declare).register(this.isExtended).register(this.arrayExtended))}).call(this);