text: //// Achoom //// 1.0.0 //// January 2018 //// http://achoom.loop.coop/ /////////
  
  "use strict";!function(e){
  var t=e.OOM=e.OOM||{},r=t.TOOLKIT=t.TOOLKIT||{},n=t.Achoom=$traceurRuntime.createClass(function(){
  var e=void 0!==arguments[0]?arguments[0]:{},n=void 0!==arguments[1]?arguments[1]:t.hub,a=this
  ;Object.defineProperty(this,"id",{
  value:"123456".replace(/./g,function(e){return r.rndCh(48,122)
  }).replace(/[:-@\[-`]/g,function(e){return r.rndCh(97,122)})
  }),Object.defineProperty(this,"hub",{value:n
  }),this._validateConstructor(e),this.validConstructor.forEach(function(t){
  var r=e[t.name];if(null==r)throw Error("I am unreachable?")
  ;Object.defineProperty(a,t.name,{value:r})
  }),Object.defineProperty(this,"ready",{value:this._getReady()})
  },{_getReady:function(){var e=this
  ;if(this.setupStart)throw new Error("Achoom._getReady(): Can only run once")
  ;return Object.defineProperty(this,"setupStart",{
  value:r.getNow()}),new Promise(function(t,n){
  setTimeout(function(){Object.defineProperty(e,"setupEnd",{
  value:r.getNow()}),t({setupDelay:e.setupEnd-e.setupStart})},0)})
  },_validateConstructor:function(e){
  var t,n,a="Achoom._validateConstructor(): "
  ;if("object"!==(void 0===e?"undefined":$traceurRuntime.typeof(e)))throw new Error(a+"config is type "+(void 0===e?"undefined":$traceurRuntime.typeof(e))+" not object")
  ;this.validConstructor.forEach(function(o){
  if(!r.applyDefault(o,e))throw new TypeError(a+"config."+o.name+" is mandatory")
  ;if(n=e[o.name],
  t=r.validateType(o,n))throw new TypeError(a+"config."+o.name+" "+t)
  ;if(t=r.validateRange(o,n))throw new RangeError(a+"config."+o.name+" "+t)
  })},get validConstructor(){return[{title:"First Param",
  name:"firstParam",alias:"fp",
  tooltip:"An example numeric parameter, intended as a placeholder",
  devtip:"You should replace this placeholder with a real parameter",
  form:"range",power:1,suffix:"Units",type:"number",min:1,max:100,
  step:1,default:50},{title:"Second Param",name:"secondParam",
  alias:"sp",
  tooltip:"An example object parameter, intended as a placeholder",
  devtip:"You should replace this placeholder with a real parameter",
  form:"hidden",type:Date}]},xxx:function(e){
  var t=this,r=(t.hub,t.a,t.b,t.c,e);r.xx,r.yy,r.zz}},{})
  ;Object.defineProperties(n,{NAME:{value:"Achoom"},VERSION:{
  value:"1.0.0"},HOMEPAGE:{value:"http://achoom.loop.coop/"},
  REMARKS:{value:"The great green neon Oom"}
  }),r.rndCh=r.rndCh||function(e,t){
  return String.fromCharCode(Math.random()*(t-e)+e)
  },r.applyDefault=r.applyDefault||function(e,t){
  return!!t.hasOwnProperty(e.name)||!!e.hasOwnProperty("default")&&(t[e.name]="function"==typeof e.default?e.default(t):e.default,
  !0)},r.validateType=r.validateType||function(e,t){
  switch($traceurRuntime.typeof(e.type)){case"string":
  return(void 0===t?"undefined":$traceurRuntime.typeof(t))===e.type?null:"is type "+(void 0===t?"undefined":$traceurRuntime.typeof(t))+" not "+e.type
  ;case"function":
  return t instanceof e.type?null:"is not an instance of "+e.type.name
  ;case"object":
  return t===e.type?null:"is not the expected object"}
  throw new TypeError("TOOLKIT.validateType: valid.type for "+e.name+" is "+$traceurRuntime.typeof(e.type))
  },r.validateRange=r.validateRange||function(e,t){
  return null!=e.min&&e.min>t?"is less than the minimum "+e.min:null!=e.max&&e.max<t?"is greater than the maximum "+e.max:null!=e.step&&t/e.step%1?t+" ÷ "+e.step+" leaves "+t/e.step%1:void 0
  },r.getNow=r.getNow||function(){var t
  ;if("object"===$traceurRuntime.typeof(e.process)&&"function"==typeof e.process.hrtime){
  var r=e.process.hrtime();t=(1e9*r[0]+r[1])/1e6
  }else t=e.performance.now();return t}
  }("object"===("undefined"==typeof global?"undefined":$traceurRuntime.typeof(global))?global:this);
  
  
  
  //// Made by Oomtility Make 1.0.14 //\\//\\ http://oomtility.loop.coop /////////
  