!function(){var e=function(e,t){switch(t){case String:if("string"==typeof e)return!0 break case Number:if("number"==typeof e)return!0 break case Array:if(e instanceof Array)return!0 break case RegExp:if(e instanceof RegExp)return!0 break case Date:if(e instanceof Date)return!0 break case Object:return!0}return!1} Object.defineProperty(Object.prototype,"consume",{value:function(e,t,r){var n "function"!=typeof t&&(r=r||t,t=null),n=r?Object.hasProperty.bind(this):Object.hasOwnProperty.bind(this),e.projectOnto(this,{filter:n,mutator:t})},enumerable:!1}),Object.defineProperty(Object.prototype,"projectOnto",{value:function(e,t){var r,n t=t||{},r=t.filter||function(){return!0},n=t.mutator||function(e){return e.clone()} for(p in this)r.call(this,p)&&(e[p]=n(this[p]))},enumerable:!1}),Object.defineProperty(Object.prototype,"hasProperty",{value:function(e){return e in this},enumerable:!1}),Object.defineProperty(Function.prototype,"extends",{value:function(e){return this.prototype=Object.create(e.prototype,{}),Object.defineProperty(this.prototype,"__super__",{value:e,enumerable:!1}),this},enumerable:!1}),Object.defineProperty(Object.prototype,"super",{value:function(e,t){var r=this.__proto__.__super__ if("string"!=typeof e){if(!(e instanceof Array||void 0===e))throw"Error: Arguments to super() must be passed in an array." t=e,this.__protoCount__||Object.defineProperty(this,"__protoCount__",{value:0,writable:!0,enumerable:!1}) for(var n=0;ni;i++)if(p!=arguments.length||!(e(arguments[i],n[i])||arguments[i]instanceof n[i])&&arguments[i]){if(o)return o.apply(this,arguments) throw t+" called with the wrong type of parameters."}if((!n||0==n.length)&&0!=arguments.length){if(o)return o.apply(this,arguments) throw t+" called with the wrong type of parameters."}return r.apply(this,arguments)}},enumerable:!1}),Object.defineProperty(Object.prototype,"namespace",{value:function(e){var t,r,n t=e.split("."),r=this for(var o=0;o