text: /*! decentraland-ecs@6.4.9-20200604190111.commit-1114741 */;
  !function(t,e){for(var n in e)t[n]=e[n]}(this,function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=30)}([function(t,e,n){"use strict";var o=this&&this.__assign||function(){return(o=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)},r=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},i=this&&this.__read||function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var o,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(o=i.next()).done;)s.push(o.value)}catch(t){r={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,"__esModule",{value:!0});var a=n(1),p=n(8),u=n(17),l=function(){function t(t,e,n){this.componentId=t,this.componentName=e,this.classId=n}return t=r([p.EventConstructor()],t)}();e.DisposableComponentCreated=l;var c=function(){function t(t){this.componentId=t}return t=r([p.EventConstructor()],t)}();e.DisposableComponentRemoved=c;var h=function(){function t(t,e){this.componentId=t,this.component=e}return t=r([p.EventConstructor()],t)}();function f(t,e){return function(n){if(n.isComponent)throw new TypeError("You cannot extend a component. Trying to extend "+n.originalClassName+" with: "+t);if("number"!=typeof e||isNaN(e))throw new Error("classId: "+e+" is an invalid integer");var o=n,r=function(){if(!f.engine)throw new Error("You need to set a DisposableComponent.engine before creating disposable components");var n=Array.prototype.slice.call(arguments),r=new(o.bind.apply(o,s([void 0],n))),i=a.newId("C");return Object.defineProperty(r,"__name__symbol_",{enumerable:!1,writable:!1,configurable:!1,value:t}),Object.defineProperty(r,"__component__id_",{enumerable:!1,writable:!1,configurable:!1,value:i}),void 0!==e&&Object.defineProperty(r,"__classId__symbol_",{enumerable:!1,writable:!1,configurable:!1,value:e}),f.engine&&f.engine.registerComponent(r),r};return void 0!==e&&(r.__classId__symbol_=e),r.__name__symbol_=t,r.isComponent=!0,r.isDisposableComponent=!0,r.originalClassName=t,(r.prototype=n.prototype).constructor=n,r}}function d(t){if(!t)throw new TypeError(t+" is not a component.");if(t.__component__id_)return t.__component__id_;throw new TypeError(t+" is not a registered disposable component.")}e.DisposableComponentUpdated=h,e.Component=function(t,e){return function(n){if(n.isComponent)throw new TypeError("You cannot extend a component. Trying to extend "+n.originalClassName+" with: "+t);var o=n,r=function(){var n=Array.prototype.slice.call(arguments),r=new(o.bind.apply(o,s([void 0],n)));return Object.defineProperty(r,"__name__symbol_",{enumerable:!1,writable:!1,configurable:!1,value:t}),void 0!==e&&Object.defineProperty(r,"__classId__symbol_",{enumerable:!1,writable:!1,configurable:!1,value:e}),r};return void 0!==e&&(r.__classId__symbol_=e),r.__name__symbol_=t,r.isComponent=!0,r.originalClassName=t,(r.prototype=n.prototype).constructor=n,r}},e.DisposableComponent=f,function(t){t.engine=null}(f=e.DisposableComponent||(e.DisposableComponent={})),e.getComponentName=function(t){if(!t)throw new TypeError(t+" is not a component.");if(t.__name__symbol_)return t.__name__symbol_;throw new TypeError(t+" is not a registered component.")},e.getComponentClassId=function(t){if(!t)throw new TypeError(t+" is not a component.");if(t.__classId__symbol_)return t.__classId__symbol_;if(!t.__name__symbol_)throw new TypeError(t+" is not a registered component.");return null},e.getComponentId=d;var y=function(){function t(){this.dirty=!1,this.data={},this.subscriptions=[]}return t.component=function(t,e){if(delete t[e]){var n=e+"_"+Math.random();t[n]=void 0,Object.defineProperty(t,n,o(o({},Object.getOwnPropertyDescriptor(t,n)),{enumerable:!1})),Object.defineProperty(t,e.toString(),{get:function(){return this[n]},set:function(t){var o=this[n];if(this.data[e]=t?d(t):null,this[n]=t,t!==o){this.dirty=!0;for(var r=0;r<this.subscriptions.length;r++)this.subscriptions[r](e,t,o)}},enumerable:!0})}},t.field=function(t,e){delete t[e]&&Object.defineProperty(t,e.toString(),{get:function(){return this.data[e]},set:function(t){var n=this.data[e];if(this.data[e]=t,t!==n){this.dirty=!0;for(var o=0;o<this.subscriptions.length;o++)this.subscriptions[o](e,t,n)}},enumerable:!0})},t.uiValue=function(t,e){delete t[e]&&Object.defineProperty(t,e.toString(),{get:function(){return this.data[e].toString()},set:function(t){var n=this.data[e],o=new u.UIValue(t);if(this.data[e]=o,o!==n){this.dirty=!0;for(var r=0;r<this.subscriptions.length;r++)this.subscriptions[r](e,o,n)}},enumerable:!0})},t.readonly=function(t,e){delete t[e]&&Object.defineProperty(t,e.toString(),{get:function(){if(e in this.data==!1)throw new Error("The field "+e+" is uninitialized");return this.data[e]},set:function(t){if(e in this.data)throw new Error("The field "+e+" is readonly");this.data[e]=t,this.dirty=!0},enumerable:!0,configurable:!1})},t.prototype.onChange=function(t){return this.subscriptions.push(t),this},t.prototype.toJSON=function(){return this.data},t}();e.ObservableComponent=y,e.isDisposableComponent=function(t){return"__component__id_"in t}},function(t,e,n){"use strict";var o=this&&this.__read||function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var o,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(o=i.next()).done;)s.push(o.value)}catch(t){r={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s},r=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,"__esModule",{value:!0});var i=0;e.log=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];"undefined"!=typeof dcl?dcl.log.apply(dcl,r(t)):console.log.apply(console,r(["DEBUG:"],t))},e.error=function(t,e){"undefined"!=typeof dcl?dcl.error(t,e):console.error("ERROR:",t,e)},e.newId=function(t){if(i++,0===t.length)throw new Error("newId(type: string): type cannot be empty");return t+i.toString(36)},e.uuid=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}))},e.buildArray=function(t,e){for(var n=[],o=0;o<t;++o)n.push(e());return n},e.openExternalURL=function(t){"undefined"!=typeof dcl?dcl.openExternalUrl(t):console.error("ERROR: openExternalURL dcl is undefined")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.CW=0]="CW",t[t.CCW=1]="CCW"}(e.Orientation||(e.Orientation={})),function(t){t[t.LOCAL=0]="LOCAL",t[t.WORLD=1]="WORLD",t[t.BONE=2]="BONE"}(e.Space||(e.Space={})),e.ToGammaSpace=1/2.2,e.ToLinearSpace=2.2,e.Epsilon=1e-6,e.DEG2RAD=Math.PI/180,e.RAD2DEG=360/(2*Math.PI)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(9),r=n(2),i=n(10),s=n(6),a=function(){function t(t,e,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),this.x=t,this.y=e,this.z=n}return Object.defineProperty(t.prototype,"isNonUniform",{get:function(){var t=Math.abs(this.x),e=Math.abs(this.y);if(t!==e)return!0;var n=Math.abs(this.z);return t!==n||e!==n},enumerable:!0,configurable:!0}),t.Add=function(e,n){return new t(e.x,e.y,e.z).addInPlace(n)},t.GetClipFactor=function(e,n,o,r){var i=t.Dot(e,o)-r;return i/(i-(t.Dot(n,o)-r))},t.GetAngleBetweenVectors=function(e,n,r){var i=e.normalizeToRef(o.MathTmp.Vector3[1]),s=n.normalizeToRef(o.MathTmp.Vector3[2]),a=t.Dot(i,s),p=o.MathTmp.Vector3[3];return t.CrossToRef(i,s,p),t.Dot(p,r)>0?Math.acos(a):-Math.acos(a)},t.FromArray=function(e,n){return void 0===n&&(n=0),new t(e[n],e[n+1],e[n+2])},t.FromFloatArray=function(e,n){return t.FromArray(e,n)},t.FromArrayToRef=function(t,e,n){n.x=t[e],n.y=t[e+1],n.z=t[e+2]},t.FromFloatArrayToRef=function(e,n,o){return t.FromArrayToRef(e,n,o)},t.FromFloatsToRef=function(t,e,n,o){o.copyFromFloats(t,e,n)},t.Zero=function(){return new t(0,0,0)},t.One=function(){return new t(1,1,1)},t.Up=function(){return new t(0,1,0)},t.Down=function(){return new t(0,-1,0)},t.Forward=function(){return new t(0,0,1)},t.Backward=function(){return new t(0,0,-1)},t.Right=function(){return new t(1,0,0)},t.Left=function(){return new t(-1,0,0)},t.TransformCoordinates=function(e,n){var o=t.Zero();return t.TransformCoordinatesToRef(e,n,o),o},t.TransformCoordinatesToRef=function(e,n,o){return t.TransformCoordinatesFromFloatsToRef(e.x,e.y,e.z,n,o)},t.TransformCoordinatesFromFloatsToRef=function(t,e,n,o,r){var i=o.m,s=t*i[0]+e*i[4]+n*i[8]+i[12],a=t*i[1]+e*i[5]+n*i[9]+i[13],p=t*i[2]+e*i[6]+n*i[10]+i[14],u=1/(t*i[3]+e*i[7]+n*i[11]+i[15]);r.x=s*u,r.y=a*u,r.z=p*u},t.TransformNormal=function(e,n){var o=t.Zero();return t.TransformNormalToRef(e,n,o),o},t.TransformNormalToRef=function(t,e,n){this.TransformNormalFromFloatsToRef(t.x,t.y,t.z,e,n)},t.TransformNormalFromFloatsToRef=function(t,e,n,o,r){var i=o.m;r.x=t*i[0]+e*i[4]+n*i[8],r.y=t*i[1]+e*i[5]+n*i[9],r.z=t*i[2]+e*i[6]+n*i[10]},t.CatmullRom=function(e,n,o,r,i){var s=i*i,a=i*s;return new t(.5*(2*n.x+(-e.x+o.x)*i+(2*e.x-5*n.x+4*o.x-r.x)*s+(-e.x+3*n.x-3*o.x+r.x)*a),.5*(2*n.y+(-e.y+o.y)*i+(2*e.y-5*n.y+4*o.y-r.y)*s+(-e.y+3*n.y-3*o.y+r.y)*a),.5*(2*n.z+(-e.z+o.z)*i+(2*e.z-5*n.z+4*o.z-r.z)*s+(-e.z+3*n.z-3*o.z+r.z)*a))},t.Clamp=function(e,n,o){var r=new t;return t.ClampToRef(e,n,o,r),r},t.ClampToRef=function(t,e,n,o){var r=t.x;r=(r=r>n.x?n.x:r)<e.x?e.x:r;var i=t.y;i=(i=i>n.y?n.y:i)<e.y?e.y:i;var s=t.z;s=(s=s>n.z?n.z:s)<e.z?e.z:s,o.copyFromFloats(r,i,s)},t.Hermite=function(e,n,o,r,i){var s=i*i,a=i*s,p=2*a-3*s+1,u=-2*a+3*s,l=a-2*s+i,c=a-s;return new t(e.x*p+o.x*u+n.x*l+r.x*c,e.y*p+o.y*u+n.y*l+r.y*c,e.z*p+o.z*u+n.z*l+r.z*c)},t.Lerp=function(e,n,o){var r=new t(0,0,0);return t.LerpToRef(e,n,o,r),r},t.LerpToRef=function(t,e,n,o){o.x=t.x+(e.x-t.x)*n,o.y=t.y+(e.y-t.y)*n,o.z=t.z+(e.z-t.z)*n},t.Dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z},t.Cross=function(e,n){var o=t.Zero();return t.CrossToRef(e,n,o),o},t.CrossToRef=function(t,e,n){var o=t.y*e.z-t.z*e.y,r=t.z*e.x-t.x*e.z,i=t.x*e.y-t.y*e.x;n.copyFromFloats(o,r,i)},t.Normalize=function(e){var n=t.Zero();return t.NormalizeToRef(e,n),n},t.NormalizeToRef=function(t,e){t.normalizeToRef(e)},t.Minimize=function(e,n){var o=new t(e.x,e.y,e.z);return o.minimizeInPlace(n),o},t.Maximize=function(e,n){var o=new t(e.x,e.y,e.z);return o.maximizeInPlace(n),o},t.Distance=function(e,n){return Math.sqrt(t.DistanceSquared(e,n))},t.DistanceSquared=function(t,e){var n=t.x-e.x,o=t.y-e.y,r=t.z-e.z;return n*n+o*o+r*r},t.Center=function(e,n){var o=t.Add(e,n);return o.scaleInPlace(.5),o},t.RotationFromAxis=function(e,n,o){var r=t.Zero();return t.RotationFromAxisToRef(e,n,o,r),r},t.RotationFromAxisToRef=function(t,e,n,r){var s=o.MathTmp.Quaternion[0];i.Quaternion.RotationQuaternionFromAxisToRef(t,e,n,s),r.copyFrom(s.eulerAngles)},t.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},t.prototype.getClassName=function(){return"Vector3"},t.prototype.getHashCode=function(){var t=this.x||0;return t=397*(t=397*t^(this.y||0))^(this.z||0)},t.prototype.asArray=function(){var t=[];return this.toArray(t,0),t},t.prototype.toArray=function(t,e){return void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,this},t.prototype.toQuaternion=function(){return i.Quaternion.Identity.setEuler(this.y,this.x,this.z)},t.prototype.addInPlace=function(t){return this.addInPlaceFromFloats(t.x,t.y,t.z)},t.prototype.addInPlaceFromFloats=function(t,e,n){return this.x+=t,this.y+=e,this.z+=n,this},t.prototype.add=function(e){return new t(this.x+e.x,this.y+e.y,this.z+e.z)},t.prototype.addToRef=function(t,e){return e.copyFromFloats(this.x+t.x,this.y+t.y,this.z+t.z)},t.prototype.subtractInPlace=function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this},t.prototype.subtract=function(e){return new t(this.x-e.x,this.y-e.y,this.z-e.z)},t.prototype.subtractToRef=function(t,e){return this.subtractFromFloatsToRef(t.x,t.y,t.z,e)},t.prototype.subtractFromFloats=function(e,n,o){return new t(this.x-e,this.y-n,this.z-o)},t.prototype.subtractFromFloatsToRef=function(t,e,n,o){return o.copyFromFloats(this.x-t,this.y-e,this.z-n)},t.prototype.applyMatrix4=function(t){this.applyMatrix4ToRef(t,this)},t.prototype.applyMatrix4ToRef=function(t,e){var n=this.x,o=this.y,r=this.z,i=t.m,s=1/(i[3]*n+i[7]*o+i[11]*r+i[15]);return e.x=(i[0]*n+i[4]*o+i[8]*r+i[12])*s,e.y=(i[1]*n+i[5]*o+i[9]*r+i[13])*s,e.z=(i[2]*n+i[6]*o+i[10]*r+i[14])*s,e},t.prototype.rotate=function(t){return this.rotateToRef(t,this)},t.prototype.rotateToRef=function(t,e){var n=this.x,o=this.y,r=this.z,i=t.x,s=t.y,a=t.z,p=t.w,u=p*n+s*r-a*o,l=p*o+a*n-i*r,c=p*r+i*o-s*n,h=-i*n-s*o-a*r;return e.x=u*p+h*-i+l*-a-c*-s,e.y=l*p+h*-s+c*-i-u*-a,e.z=c*p+h*-a+u*-s-l*-i,e},t.prototype.negate=function(){return new t(-this.x,-this.y,-this.z)},t.prototype.scaleInPlace=function(t){return this.x*=t,this.y*=t,this.z*=t,this},t.prototype.scale=function(e){return new t(this.x*e,this.y*e,this.z*e)},t.prototype.scaleToRef=function(t,e){return e.copyFromFloats(this.x*t,this.y*t,this.z*t)},t.prototype.scaleAndAddToRef=function(t,e){return e.addInPlaceFromFloats(this.x*t,this.y*t,this.z*t)},t.prototype.equals=function(t){return t&&this.x===t.x&&this.y===t.y&&this.z===t.z},t.prototype.equalsWithEpsilon=function(t,e){return void 0===e&&(e=r.Epsilon),t&&s.Scalar.WithinEpsilon(this.x,t.x,e)&&s.Scalar.WithinEpsilon(this.y,t.y,e)&&s.Scalar.WithinEpsilon(this.z,t.z,e)},t.prototype.equalsToFloats=function(t,e,n){return this.x===t&&this.y===e&&this.z===n},t.prototype.multiplyInPlace=function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this},t.prototype.multiply=function(t){return this.multiplyByFloats(t.x,t.y,t.z)},t.prototype.multiplyToRef=function(t,e){return e.copyFromFloats(this.x*t.x,this.y*t.y,this.z*t.z)},t.prototype.multiplyByFloats=function(e,n,o){return new t(this.x*e,this.y*n,this.z*o)},t.prototype.divide=function(e){return new t(this.x/e.x,this.y/e.y,this.z/e.z)},t.prototype.divideToRef=function(t,e){return e.copyFromFloats(this.x/t.x,this.y/t.y,this.z/t.z)},t.prototype.divideInPlace=function(t){return this.divideToRef(t,this)},t.prototype.minimizeInPlace=function(t){return this.minimizeInPlaceFromFloats(t.x,t.y,t.z)},t.prototype.maximizeInPlace=function(t){return this.maximizeInPlaceFromFloats(t.x,t.y,t.z)},t.prototype.minimizeInPlaceFromFloats=function(t,e,n){return t<this.x&&(this.x=t),e<this.y&&(this.y=e),n<this.z&&(this.z=n),this},t.prototype.maximizeInPlaceFromFloats=function(t,e,n){return t>this.x&&(this.x=t),e>this.y&&(this.y=e),n>this.z&&(this.z=n),this},t.prototype.floor=function(){return new t(Math.floor(this.x),Math.floor(this.y),Math.floor(this.z))},t.prototype.fract=function(){return new t(this.x-Math.floor(this.x),this.y-Math.floor(this.y),this.z-Math.floor(this.z))},t.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.prototype.lengthSquared=function(){return this.x*this.x+this.y*this.y+this.z*this.z},t.prototype.normalize=function(){return this.normalizeFromLength(this.length())},t.prototype.normalizeFromLength=function(t){return 0===t||1===t?this:this.scaleInPlace(1/t)},t.prototype.normalizeToNew=function(){var e=new t(0,0,0);return this.normalizeToRef(e),e},t.prototype.normalizeToRef=function(t){var e=this.length();return 0===e||1===e?t.copyFromFloats(this.x,this.y,this.z):this.scaleToRef(1/e,t)},t.prototype.clone=function(){return new t(this.x,this.y,this.z)},t.prototype.copyFrom=function(t){return this.copyFromFloats(t.x,t.y,t.z)},t.prototype.copyFromFloats=function(t,e,n){return this.x=t,this.y=e,this.z=n,this},t.prototype.set=function(t,e,n){return this.copyFromFloats(t,e,n)},t.prototype.setAll=function(t){return this.x=this.y=this.z=t,this},t}();e.Vector3=a},function(t,e,n){"use strict";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)},s=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var a,p=n(0),u=n(5),l=n(26),c=n(1),h=n(15);!function(t){t[t.TRANSFORM=1]="TRANSFORM",t[t.UUID_CALLBACK=8]="UUID_CALLBACK",t[t.BOX_SHAPE=16]="BOX_SHAPE",t[t.SPHERE_SHAPE=17]="SPHERE_SHAPE",t[t.PLANE_SHAPE=18]="PLANE_SHAPE",t[t.CONE_SHAPE=19]="CONE_SHAPE",t[t.CYLINDER_SHAPE=20]="CYLINDER_SHAPE",t[t.TEXT_SHAPE=21]="TEXT_SHAPE",t[t.NFT_SHAPE=22]="NFT_SHAPE",t[t.UI_WORLD_SPACE_SHAPE=23]="UI_WORLD_SPACE_SHAPE",t[t.UI_SCREEN_SPACE_SHAPE=24]="UI_SCREEN_SPACE_SHAPE",t[t.UI_CONTAINER_RECT=25]="UI_CONTAINER_RECT",t[t.UI_CONTAINER_STACK=26]="UI_CONTAINER_STACK",t[t.UI_TEXT_SHAPE=27]="UI_TEXT_SHAPE",t[t.UI_INPUT_TEXT_SHAPE=28]="UI_INPUT_TEXT_SHAPE",t[t.UI_IMAGE_SHAPE=29]="UI_IMAGE_SHAPE",t[t.UI_SLIDER_SHAPE=30]="UI_SLIDER_SHAPE",t[t.CIRCLE_SHAPE=31]="CIRCLE_SHAPE",t[t.BILLBOARD=32]="BILLBOARD",t[t.ANIMATION=33]="ANIMATION",t[t.FONT=34]="FONT",t[t.UI_FULLSCREEN_SHAPE=40]="UI_FULLSCREEN_SHAPE",t[t.UI_BUTTON_SHAPE=41]="UI_BUTTON_SHAPE",t[t.GLTF_SHAPE=54]="GLTF_SHAPE",t[t.OBJ_SHAPE=55]="OBJ_SHAPE",t[t.AVATAR_SHAPE=56]="AVATAR_SHAPE",t[t.BASIC_MATERIAL=64]="BASIC_MATERIAL",t[t.PBR_MATERIAL=65]="PBR_MATERIAL",t[t.HIGHLIGHT_ENTITY=66]="HIGHLIGHT_ENTITY",t[t.SOUND=67]="SOUND",t[t.TEXTURE=68]="TEXTURE",t[t.VIDEO_CLIP=70]="VIDEO_CLIP",t[t.VIDEO_TEXTURE=71]="VIDEO_TEXTURE",t[t.AUDIO_CLIP=200]="AUDIO_CLIP",t[t.AUDIO_SOURCE=201]="AUDIO_SOURCE",t[t.AUDIO_STREAM=202]="AUDIO_STREAM",t[t.GIZMOS=203]="GIZMOS",t[t.SMART_ITEM=204]="SMART_ITEM"}(a=e.CLASS_ID||(e.CLASS_ID={}));var f=function(t){function e(e){void 0===e&&(e={});var n=t.call(this)||this;return n.position=e.position||u.Vector3.Zero(),n.rotation=e.rotation||u.Quaternion.Identity,n.scale=e.scale||new u.Vector3(1,1,1),n}return r(e,t),Object.defineProperty(e.prototype,"eulerAngles",{get:function(){return this.rotation.eulerAngles},enumerable:!0,configurable:!0}),e.prototype.lookAt=function(t,e){void 0===e&&(e=u.MathTmp.staticUp);var n=new u.Matrix;return u.Matrix.LookAtLHToRef(this.position,t,e,n),n.invert(),u.Quaternion.FromRotationMatrixToRef(n,this.rotation),this},e.prototype.rotate=function(t,e){return this.rotation.multiplyInPlace(this.rotation.angleAxis(e,t)),this},e.prototype.translate=function(t){return this.position.addInPlace(t),this},s([p.ObservableComponent.field],e.prototype,"position",void 0),s([p.ObservableComponent.field],e.prototype,"rotation",void 0),s([p.ObservableComponent.field],e.prototype,"scale",void 0),e=s([p.Component("engine.transform",a.TRANSFORM)],e)}(p.ObservableComponent);e.Transform=f;var d=function(t){function e(e,n,o){void 0===e&&(e=!0),void 0===n&&(n=!0),void 0===o&&(o=!0);var r=t.call(this)||this;return r.x=!0,r.y=!0,r.z=!0,r.x=e,r.y=n,r.z=o,r}return r(e,t),s([p.ObservableComponent.field],e.prototype,"x",void 0),s([p.ObservableComponent.field],e.prototype,"y",void 0),s([p.ObservableComponent.field],e.prototype,"z",void 0),e=s([p.Component("engine.billboard",a.BILLBOARD)],e)}(p.ObservableComponent);e.Billboard=d;var y=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.withCollisions=!0,e.isPointerBlocker=!0,e.visible=!0,e}return r(e,t),s([p.ObservableComponent.field],e.prototype,"withCollisions",void 0),s([p.ObservableComponent.field],e.prototype,"isPointerBlocker",void 0),s([p.ObservableComponent.field],e.prototype,"visible",void 0),e}(p.ObservableComponent);e.Shape=y;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e=s([p.DisposableComponent("engine.shape",a.BOX_SHAPE)],e)}(y);e.BoxShape=v;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e=s([p.DisposableComponent("engine.shape",a.SPHERE_SHAPE)],e)}(y);e.SphereShape=m;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),s([p.ObservableComponent.field],e.prototype,"segments",void 0),s([p.ObservableComponent.field],e.prototype,"arc",void 0),e=s([p.DisposableComponent("engine.shape",a.CIRCLE_SHAPE)],e)}(y);e.CircleShape=b;var g=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.width=1,e.height=1,e}return r(e,t),s([p.ObservableComponent.field],e.prototype,"width",void 0),s([p.ObservableComponent.field],e.prototype,"height",void 0),s([p.ObservableComponent.field],e.prototype,"uvs",void 0),e=s([p.DisposableComponent("engine.shape",a.PLANE_SHAPE)],e)}(y);e.PlaneShape=g;var _=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.radiusTop=0,e.radiusBottom=1,e.segmentsHeight=1,e.segmentsRadial=36,e.openEnded=!1,e.radius=null,e.arc=360,e}return r(e,t),s([p.ObservableComponent.field],e.prototype,"radiusTop",void 0),s([p.ObservableComponent.field],e.prototype,"radiusBottom",void 0),s([p.ObservableComponent.field],e.prototype,"segmentsHeight",void 0),s([p.ObservableComponent.field],e.prototype,"segmentsRadial",void 0),s([p.ObservableComponent.field],e.prototype,"openEnded",void 0),s([p.ObservableComponent.field],e.prototype,"radius",void 0),s([p.ObservableComponent.field],e.prototype,"arc",void 0),e=s([p.DisposableComponent("engine.shape",a.CONE_SHAPE)],e)}(y);e.ConeShape=_;var C=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.radiusTop=0,e.radiusBottom=1,e.segmentsHeight=1,e.segmentsRadial=36,e.openEnded=!1,e.radius=null,e.arc=360,e}return r(e,t),s([p.ObservableComponent.field],e.prototype,"radiusTop",void 0),s([p.ObservableComponent.field],e.prototype,"radiusBottom",void 0),s([p.ObservableComponent.field],e.prototype,"segmentsHeight",void 0),s([p.ObservableComponent.field],e.prototype,"segmentsRadial",void 0),s([p.ObservableComponent.field],e.prototype,"openEnded",void 0),s([p.ObservableComponent.field],e.prototype,"radius",void 0),s([p.ObservableComponent.field],e.prototype,"arc",void 0),e=s([p.DisposableComponent("engine.shape",a.CYLINDER_SHAPE)],e)}(y);e.CylinderShape=C;var x=function(t){function e(e){var n=t.call(this)||this;return n.src=e,n}return r(e,t),s([y.readonly],e.prototype,"src",void 0),e=s([p.DisposableComponent("engine.shape",a.GLTF_SHAPE)],e)}(y);e.GLTFShape=x;var w=function(t){function e(e,n){void 0===n&&(n=new u.Color3(.6404918,.611472,.8584906));var o=t.call(this)||this;return o.src=e,o.color=n,o}return r(e,t),s([y.readonly],e.prototype,"src",void 0),s([p.ObservableComponent.field],e.prototype,"color",void 0),e=s([p.DisposableComponent("engine.shape",a.NFT_SHAPE)],e)}(y);e.NFTShape=w;var O=function(t){function e(e,n){var o=t.call(this)||this;if(o.src=e,n)for(var r in n){o[r]=n[r]}return o}return r(e,t),s([p.ObservableComponent.readonly],e.prototype,"src",void 0),s([p.ObservableComponent.readonly],e.prototype,"samplingMode",void 0),s([p.ObservableComponent.readonly],e.prototype,"wrap",void 0),s([p.ObservableComponent.readonly],e.prototype,"hasAlpha",void 0),e=s([p.DisposableComponent("engine.texture",a.TEXTURE)],e)}(p.ObservableComponent);e.Texture=O;var T=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.states=[],e}return r(e,t),e.prototype.addClip=function(t){var e=this;return this.states.push(t),t.onChange((function(){e.dirty=!0})),this},e.prototype.getClip=function(t){for(var e=0;e<this.states.length;e++){var n=this.states[e];if(n.clip===t)return n}var o=new l.AnimationState(t);return this.addClip(o),o},s([p.ObservableComponent.readonly],e.prototype,"states",void 0),e=s([p.Component("engine.animator",a.ANIMATION)],e)}(y);e.Animator=T;var R=function(t){function e(e){var n=t.call(this)||this;return n.src=e,n}return r(e,t),s([p.ObservableComponent.readonly],e.prototype,"src",void 0),e=s([p.DisposableComponent("engine.shape",a.OBJ_SHAPE)],e)}(y);e.OBJShape=R;var A=function(t){function e(e){void 0===e&&(e="");var n=t.call(this)||this;return n.src=e,n}return r(e,t),s([p.ObservableComponent.readonly],e.prototype,"src",void 0),e=s([p.DisposableComponent("engine.font",a.FONT)],e)}(p.ObservableComponent);e.Font=A,function(t){t.SanFrancisco="builtin:SF-UI-Text-Regular SDF",t.SanFrancisco_Heavy="builtin:SF-UI-Text-Heavy SDF",t.SanFrancisco_Semibold="builtin:SF-UI-Text-Semibold SDF",t.LiberationSans="builtin:LiberationSans SDF"}(e.Fonts||(e.Fonts={}));var E,P=function(t){function e(e){var n=t.call(this)||this;return n.outlineWidth=0,n.outlineColor=new u.Color3(1,1,1),n.color=new u.Color3(1,1,1),n.fontSize=10,n.fontWeight="normal",n.opacity=1,n.value="",n.lineSpacing="0px",n.lineCount=0,n.resizeToFit=!1,n.textWrapping=!1,n.shadowBlur=0,n.shadowOffsetX=0,n.shadowOffsetY=0,n.shadowColor=new u.Color3(1,1,1),n.zIndex=0,n.hTextAlign="center",n.vTextAlign="center",n.width=1,n.height=1,n.paddingTop=0,n.paddingRight=0,n.paddingBottom=0,n.paddingLeft=0,n.isPickable=!1,n.billboard=!1,e&&(n.value=e),n}return r(e,t),s([p.ObservableComponent.field],e.prototype,"outlineWidth",void 0),s([p.ObservableComponent.field],e.prototype,"outlineColor",void 0),s([p.ObservableComponent.field],e.prototype,"color",void 0),s([p.ObservableComponent.field],e.prototype,"fontSize",void 0),s([p.ObservableComponent.field],e.prototype,"fontWeight",void 0),s([p.ObservableComponent.component],e.prototype,"font",void 0),s([p.ObservableComponent.field],e.prototype,"opacity",void 0),s([p.ObservableComponent.field],e.prototype,"value",void 0),s([p.ObservableComponent.field],e.prototype,"lineSpacing",void 0),s([p.ObservableComponent.field],e.prototype,"lineCount",void 0),s([p.ObservableComponent.field],e.prototype,"resizeToFit",void 0),s([p.ObservableComponent.field],e.prototype,"textWrapping",void 0),s([p.ObservableComponent.field],e.prototype,"shadowBlur",void 0),s([p.ObservableComponent.field],e.prototype,"shadowOffsetX",void 0),s([p.ObservableComponent.field],e.prototype,"shadowOffsetY",void 0),s([p.ObservableComponent.field],e.prototype,"shadowColor",void 0),s([p.ObservableComponent.field],e.prototype,"zIndex",void 0),s([p.ObservableComponent.field],e.prototype,"hTextAlign",void 0),s([p.ObservableComponent.field],e.prototype,"vTextAlign",void 0),s([p.ObservableComponent.field],e.prototype,"width",void 0),s([p.ObservableComponent.field],e.prototype,"height",void 0),s([p.ObservableComponent.field],e.prototype,"paddingTop",void 0),s([p.ObservableComponent.field],e.prototype,"paddingRight",void 0),s([p.ObservableComponent.field],e.prototype,"paddingBottom",void 0),s([p.ObservableComponent.field],e.prototype,"paddingLeft",void 0),s([p.ObservableComponent.field],e.prototype,"isPickable",void 0),s([p.ObservableComponent.field],e.prototype,"billboard",void 0),e=s([p.Component("engine.text",a.TEXT_SHAPE)],e)}(y);e.TextShape=P,function(t){t[t.OPAQUE=0]="OPAQUE",t[t.ALPHA_TEST=1]="ALPHA_TEST",t[t.ALPHA_BLEND=2]="ALPHA_BLEND",t[t.ALPHA_TEST_AND_BLEND=3]="ALPHA_TEST_AND_BLEND",t[t.AUTO=4]="AUTO"}(E=e.TransparencyMode||(e.TransparencyMode={}));var S=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.alphaTest=.5,e.transparencyMode=E.AUTO,e}return r(e,t),s([p.ObservableComponent.field],e.prototype,"alphaTest",void 0),s([p.ObservableComponent.field],e.prototype,"albedoColor",void 0),s([p.ObservableComponent.field],e.prototype,"emissiveColor",void 0),s([p.ObservableComponent.field],e.prototype,"metallic",void 0),s([p.ObservableComponent.field],e.prototype,"roughness",void 0),s([p.ObservableComponent.field],e.prototype,"ambientColor",void 0),s([p.ObservableComponent.field],e.prototype,"reflectionColor",void 0),s([p.ObservableComponent.field],e.prototype,"reflectivityColor",void 0),s([p.ObservableComponent.field],e.prototype,"directIntensity",void 0),s([p.ObservableComponent.field],e.prototype,"microSurface",void 0),s([p.ObservableComponent.field],e.prototype,"emissiveIntensity",void 0),s([p.ObservableComponent.field],e.prototype,"environmentIntensity",void 0),s([p.ObservableComponent.field],e.prototype,"specularIntensity",void 0),s([p.ObservableComponent.component],e.prototype,"albedoTexture",void 0),s([p.ObservableComponent.component],e.prototype,"alphaTexture",void 0),s([p.ObservableComponent.component],e.prototype,"emissiveTexture",void 0),s([p.ObservableComponent.component],e.prototype,"bumpTexture",void 0),s([p.ObservableComponent.component],e.prototype,"refractionTexture",void 0),s([p.ObservableComponent.field],e.prototype,"disableLighting",void 0),s([p.ObservableComponent.field],e.prototype,"transparencyMode",void 0),e=s([p.DisposableComponent("engine.material",a.PBR_MATERIAL)],e)}(p.ObservableComponent);e.Material=S;var z=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.alphaTest=.5,e}return r(e,t),s([p.ObservableComponent.component],e.prototype,"texture",void 0),s([p.ObservableComponent.field],e.prototype,"alphaTest",void 0),e=s([p.DisposableComponent("engine.material",a.BASIC_MATERIAL)],e)}(p.ObservableComponent);e.BasicMaterial=z;var I=function(t){function e(e){var n=t.call(this)||this;if(n.uuid=c.newId("UUID"),!e||!("apply"in e)||!("call"in e))throw new Error("Callback is not a function");return n.callback=e,n}return r(e,t),e.uuidEvent=function(t,n){if(delete t[n]){var o=n+"_"+Math.random();t[o]=void 0,Object.defineProperty(t,o,i(i({},Object.getOwnPropertyDescriptor(t,o)),{enumerable:!1})),Object.defineProperty(t,n.toString(),{get:function(){return this[o]},set:function(t){var r=this[o];if(t){if(!(t instanceof e))throw new Error("value is not an OnUUIDEvent");this.data[n]=t.uuid}else this.data[n]=null;if(this[o]=t,t!==r){this.dirty=!0;for(var i=0;i<this.subscriptions.length;i++)this.subscriptions[i](n,t,r)}},enumerable:!0})}},e.prototype.toJSON=function(){return{uuid:this.uuid,type:this.type}},s([p.ObservableComponent.field],e.prototype,"callback",void 0),e}(p.ObservableComponent);e.OnUUIDEvent=I;var M=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.button=h.ActionButton.ANY,e.hoverText="Interact",e.distance=10,e.showFeedback=!0,e}return r(e,t),e.prototype.toJSON=function(){return{uuid:this.uuid,type:this.type,button:this.button,hoverText:this.hoverText,distance:this.distance,showFeedback:this.showFeedback}},s([p.ObservableComponent.field],e.prototype,"button",void 0),s([p.ObservableComponent.field],e.prototype,"hoverText",void 0),s([p.ObservableComponent.field],e.prototype,"distance",void 0),s([p.ObservableComponent.field],e.prototype,"showFeedback",void 0),e}(I);e.OnPointerUUIDEvent=M;var F=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="onPointerLock",e}return r(e,t),s([p.ObservableComponent.readonly],e.prototype,"type",void 0),e=s([p.Component("engine.onPointerLock",a.UUID_CALLBACK)],e)}(I);e.OnPointerLock=F;var D=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="onAnimationEnd",e}return r(e,t),s([p.ObservableComponent.readonly],e.prototype,"type",void 0),e=s([p.Component("engine.onAnimationEnd",a.UUID_CALLBACK)],e)}(I);e.OnAnimationEnd=D;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e=s([p.Component("engine.smartItem",a.SMART_ITEM)],e)}(p.ObservableComponent);e.SmartItem=L;var U=function(t){function e(e){var n=t.call(this)||this;return n.url=e,n}return r(e,t),s([p.ObservableComponent.readonly],e.prototype,"url",void 0),e=s([p.DisposableComponent("engine.VideoClip",a.VIDEO_CLIP)],e)}(p.ObservableComponent);e.VideoClip=U;var N=function(t){function e(e,n){var o=t.call(this)||this;if(o.volume=1,o.playbackRate=1,o.loop=!1,o.seek=-1,o.playing=!1,!(e instanceof U))throw new Error("Trying to create VideoTexture(VideoClip) with an invalid VideoClip");if(o.videoClipId=p.getComponentId(e),n)for(var r in n){o[r]=n[r]}return o}return r(e,t),e.prototype.play=function(){this.playing=!0},e.prototype.pause=function(){this.playing=!1},e.prototype.reset=function(){this.seekTime(0)},e.prototype.seekTime=function(t){this.seek=t,this.dirty=!0,this.data.nonce=Math.random()},e.prototype.toJSON=function(){if(this.seek<0)return t.prototype.toJSON.call(this);var e=JSON.parse(JSON.stringify(t.prototype.toJSON.call(this)));return this.seek=-1,e},s([p.ObservableComponent.readonly],e.prototype,"videoClipId",void 0),s([p.ObservableComponent.readonly],e.prototype,"samplingMode",void 0),s([p.ObservableComponent.readonly],e.prototype,"wrap",void 0),s([p.ObservableComponent.field],e.prototype,"volume",void 0),s([p.ObservableComponent.field],e.prototype,"playbackRate",void 0),s([p.ObservableComponent.field],e.prototype,"loop",void 0),s([p.ObservableComponent.field],e.prototype,"seek",void 0),s([p.ObservableComponent.field],e.prototype,"playing",void 0),e=s([p.DisposableComponent("engine.VideoTexture",a.VIDEO_TEXTURE)],e)}(p.ObservableComponent);e.VideoTexture=N},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(2)),o(n(9)),o(n(22)),o(n(23)),o(n(33)),o(n(34)),o(n(35)),o(n(24)),o(n(36)),o(n(37)),o(n(11)),o(n(38)),o(n(39)),o(n(25)),o(n(10)),o(n(6)),o(n(40)),o(n(14)),o(n(3)),o(n(21)),o(n(5))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(){}return t.WithinEpsilon=function(t,e,n){void 0===n&&(n=1401298e-51);var o=t-e;return-n<=o&&o<=n},t.ToHex=function(t){var e=t.toString(16);return t<=15?("0"+e).toUpperCase():e.toUpperCase()},t.Sign=function(t){var e=+t;return 0===e||isNaN(e)?e:e>0?1:-1},t.Clamp=function(t,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),Math.min(n,Math.max(e,t))},t.Log2=function(t){return Math.log(t)*Math.LOG2E},t.Repeat=function(t,e){return t-Math.floor(t/e)*e},t.Normalize=function(t,e,n){return(t-e)/(n-e)},t.Denormalize=function(t,e,n){return t*(n-e)+e},t.DeltaAngle=function(e,n){var o=t.Repeat(n-e,360);return o>180&&(o-=360),o},t.PingPong=function(e,n){var o=t.Repeat(e,2*n);return n-Math.abs(o-n)},t.SmoothStep=function(e,n,o){var r=t.Clamp(o);return n*(r=-2*r*r*r+3*r*r)+e*(1-r)},t.MoveTowards=function(e,n,o){return Math.abs(n-e)<=o?n:e+t.Sign(n-e)*o},t.MoveTowardsAngle=function(e,n,o){var r=t.DeltaAngle(e,n);return-o<r&&r<o?n:t.MoveTowards(e,e+r,o)},t.Lerp=function(t,e,n){return t+(e-t)*n},t.LerpAngle=function(e,n,o){var r=t.Repeat(n-e,360);return r>180&&(r-=360),e+r*t.Clamp(o)},t.InverseLerp=function(e,n,o){return e!==n?t.Clamp((o-e)/(n-e)):0},t.Hermite=function(t,e,n,o,r){var i=r*r,s=r*i;return t*(2*s-3*i+1)+n*(-2*s+3*i)+e*(s-2*i+r)+o*(s-i)},t.RandomRange=function(t,e){return t===e?t:Math.random()*(e-t)+t},t.RangeToPercent=function(t,e,n){return(t-e)/(n-e)},t.PercentToRange=function(t,e,n){return(n-e)*t+e},t.NormalizeRadians=function(e){return e-t.TwoPi*Math.floor((e+Math.PI)/t.TwoPi)},t.TwoPi=2*Math.PI,t}();e.Scalar=o},function(t,e,n){"use strict";var o=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var r=n(8),i=function(){function t(t,e,n){this.entity=t,this.componentName=e,this.component=n}return t=o([r.EventConstructor()],t)}();e.ComponentRemoved=i;var s=function(){function t(t,e,n){this.entity=t,this.componentName=e,this.classId=n}return t=o([r.EventConstructor()],t)}();e.ComponentAdded=s;var a=function(){function t(t,e){this.entity=t,this.parent=e}return t=o([r.EventConstructor()],t)}();e.ParentChanged=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=[];function i(t){if(!("__event_name__"in t)||"string"!=typeof t.__event_name__)throw new Error("The EventConstructor is not registered");return t.__event_name__}var s=function(){function t(){this.listeners={}}return t.prototype.addListener=function(t,e,n){if(!t||"function"!=typeof t)throw new Error("Invalid EventConstructor");var o=i(t),r=this.listeners[o];r||(r=this.listeners[o]=[]);for(var s=0;s<r.length;s++){if(r[s].listener===e)throw new Error("The provided listener is already registered")}return r.push({listener:e,fn:n}),this},t.prototype.removeListener=function(t,e){if(!e||"function"!=typeof e)throw new Error("Invalid EventConstructor");var n=i(e),o=this.listeners[n];if(!o)return!1;for(var r=0;r<o.length;r++){if(o[r].listener===t)return o.splice(r,1),!0}return!1},t.prototype.fireEvent=function(t){var e=i(t.constructor),n=this.listeners[e];if(n)for(var r=0;r<n.length;r++)try{var s=n[r];s.fn.call(s.listener,t)}catch(t){o.error(t)}return this},t}();e.EventManager=s,e.EventConstructor=function(){var t=o.newId("EV");if(-1!==r.indexOf(t))throw new Error("The event name "+t+" is already taken");return r.push(t),function(e){return e.__event_name__=t,e}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(10),s=n(11);e.MathTmp={Vector3:o.buildArray(6,r.Vector3.Zero),Matrix:o.buildArray(2,s.Matrix.Identity),Quaternion:o.buildArray(3,i.Quaternion.Zero),staticUp:r.Vector3.Up(),tmpMatrix:s.Matrix.Zero()}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(11),r=n(3),i=n(9),s=n(2),a=function(){function t(t,e,n,o){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===o&&(o=1),this.x=t,this.y=e,this.z=n,this.w=o}return t.FromRotationMatrix=function(e){var n=new t;return t.FromRotationMatrixToRef(e,n),n},t.FromRotationMatrixToRef=function(t,e){var n,o=t.m,r=o[0],i=o[4],s=o[8],a=o[1],p=o[5],u=o[9],l=o[2],c=o[6],h=o[10],f=r+p+h;f>0?(n=.5/Math.sqrt(f+1),e.w=.25/n,e.x=(c-u)*n,e.y=(s-l)*n,e.z=(a-i)*n):r>p&&r>h?(n=2*Math.sqrt(1+r-p-h),e.w=(c-u)/n,e.x=.25*n,e.y=(i+a)/n,e.z=(s+l)/n):p>h?(n=2*Math.sqrt(1+p-r-h),e.w=(s-l)/n,e.x=(i+a)/n,e.y=.25*n,e.z=(u+c)/n):(n=2*Math.sqrt(1+h-r-p),e.w=(a-i)/n,e.x=(s+l)/n,e.y=(u+c)/n,e.z=.25*n)},t.Dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},t.AreClose=function(e,n){return t.Dot(e,n)>=0},t.Zero=function(){return new t(0,0,0,0)},t.Inverse=function(e){return new t(-e.x,-e.y,-e.z,e.w)},t.IsIdentity=function(t){return t&&0===t.x&&0===t.y&&0===t.z&&1===t.w},t.RotationAxis=function(e,n){var o=n*s.DEG2RAD;return t.RotationAxisToRef(e,o,new t)},t.RotationAxisToRef=function(t,e,n){var o=e*s.DEG2RAD,r=Math.sin(o/2);return t.normalize(),n.w=Math.cos(o/2),n.x=t.x*r,n.y=t.y*r,n.z=t.z*r,n},t.FromArray=function(e,n){return void 0===n&&(n=0),new t(e[n],e[n+1],e[n+2],e[n+3])},t.FromEulerAnglesRef=function(e,n,o,r){return t.RotationYawPitchRollToRef(n*s.DEG2RAD,e*s.DEG2RAD,o*s.DEG2RAD,r)},t.RotationYawPitchRoll=function(e,n,o){var r=new t;return t.RotationYawPitchRollToRef(e,n,o,r),r},t.RotationYawPitchRollToRef=function(t,e,n,o){var r=.5*n,i=.5*e,s=.5*t,a=Math.cos(i),p=Math.cos(s),u=Math.cos(r),l=Math.sin(i),c=Math.sin(s),h=Math.sin(r);o.x=l*p*u+a*c*h,o.y=a*c*u-l*p*h,o.z=a*p*h+l*c*u,o.w=a*p*u-l*c*h},t.RotationAlphaBetaGamma=function(e,n,o){var r=new t;return t.RotationAlphaBetaGammaToRef(e,n,o,r),r},t.RotationAlphaBetaGammaToRef=function(t,e,n,o){var r=.5*(n+t),i=.5*(n-t),s=.5*e;o.x=Math.cos(i)*Math.sin(s),o.y=Math.sin(i)*Math.sin(s),o.z=Math.sin(r)*Math.cos(s),o.w=Math.cos(r)*Math.cos(s)},t.RotationQuaternionFromAxis=function(e,n,o){var r=new t(0,0,0,0);return t.RotationQuaternionFromAxisToRef(e,n,o,r),r},t.RotationQuaternionFromAxisToRef=function(e,n,r,s){var a=i.MathTmp.Matrix[0];o.Matrix.FromXYZAxesToRef(e.normalize(),n.normalize(),r.normalize(),a),t.FromRotationMatrixToRef(a,s)},t.Slerp=function(e,n,o){var r=t.Identity;return t.SlerpToRef(e,n,o,r),r},t.SlerpToRef=function(t,e,n,o){var r,i,s=t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w,a=!1;if(s<0&&(a=!0,s=-s),s>.999999)i=1-n,r=a?-n:n;else{var p=Math.acos(s),u=1/Math.sin(p);i=Math.sin((1-n)*p)*u,r=a?-Math.sin(n*p)*u:Math.sin(n*p)*u}o.x=i*t.x+r*e.x,o.y=i*t.y+r*e.y,o.z=i*t.z+r*e.z,o.w=i*t.w+r*e.w},t.Hermite=function(e,n,o,r,i){var s=i*i,a=i*s,p=2*a-3*s+1,u=-2*a+3*s,l=a-2*s+i,c=a-s;return new t(e.x*p+o.x*u+n.x*l+r.x*c,e.y*p+o.y*u+n.y*l+r.y*c,e.z*p+o.z*u+n.z*l+r.z*c,e.w*p+o.w*u+n.w*l+r.w*c)},Object.defineProperty(t,"Identity",{get:function(){return new t(0,0,0,1)},enumerable:!0,configurable:!0}),t.Angle=function(e,n){var o=t.Dot(e,n);return 2*Math.acos(Math.min(Math.abs(o),1))*s.RAD2DEG},t.Euler=function(e,n,o){return t.RotationYawPitchRoll(n*s.DEG2RAD,e*s.DEG2RAD,o*s.DEG2RAD)},t.LookRotation=function(e,n){void 0===n&&(n=i.MathTmp.staticUp);var o=r.Vector3.Normalize(e),s=r.Vector3.Normalize(r.Vector3.Cross(n,o)),a=r.Vector3.Cross(o,s),p=s.x,u=s.y,l=s.z,c=a.x,h=a.y,f=a.z,d=o.x,y=o.y,v=o.z,m=p+h+v,b=new t;if(m>0){var g=Math.sqrt(m+1);return b.w=.5*g,g=.5/g,b.x=(f-y)*g,b.y=(d-l)*g,b.z=(u-c)*g,b}if(p>=h&&p>=v){var _=Math.sqrt(1+p-h-v),C=.5/_;return b.x=.5*_,b.y=(u+c)*C,b.z=(l+d)*C,b.w=(f-y)*C,b}if(h>v){var x=Math.sqrt(1+h-p-v),w=.5/x;return b.x=(c+u)*w,b.y=.5*x,b.z=(y+f)*w,b.w=(d-l)*w,b}var O=Math.sqrt(1+v-p-h),T=.5/O;return b.x=(d+l)*T,b.y=(y+f)*T,b.z=.5*O,b.w=(u-c)*T,b},t.RotateTowards=function(e,n,o){var r=t.Angle(e,n);if(0===r)return n;var i=Math.min(1,o/r);return t.Slerp(e,n,i)},t.FromToRotation=function(e,n){var o=new t,i=e.normalize(),a=n.normalize(),p=r.Vector3.Dot(i,a);if(p>-1+s.Epsilon){var u=Math.sqrt(2*(1+p)),l=1/u,c=r.Vector3.Cross(i,a).scaleInPlace(l);o.set(c.x,c.y,c.z,.5*u)}else{if(p>1-s.Epsilon)return new t(0,0,0,1);var h=r.Vector3.Cross(r.Vector3.Right(),i);h.lengthSquared()<s.Epsilon&&(h=r.Vector3.Cross(r.Vector3.Forward(),i)),o.set(h.x,h.y,h.z,0)}return o.normalize()},Object.defineProperty(t.prototype,"normalized",{get:function(){return this.normalize()},enumerable:!0,configurable:!0}),t.prototype.setFromToRotation=function(e,n,r){void 0===r&&(r=i.MathTmp.staticUp),i.MathTmp.tmpMatrix=o.Matrix.Zero(),o.Matrix.LookAtLHToRef(e,n,r,i.MathTmp.tmpMatrix),i.MathTmp.tmpMatrix.invert(),t.FromRotationMatrixToRef(i.MathTmp.tmpMatrix,this)},Object.defineProperty(t.prototype,"eulerAngles",{get:function(){var t=new r.Vector3,e=new o.Matrix;this.toRotationMatrix(e);var n=o.Matrix.GetAsMatrix3x3(e);return t.y=s.RAD2DEG*Math.asin(Math.max(-1,Math.min(1,n[6]))),Math.abs(n[6])<.99999?(t.x=s.RAD2DEG*Math.atan2(-n[7],n[8]),t.z=s.RAD2DEG*Math.atan2(-n[3],n[0])):(t.x=s.RAD2DEG*Math.atan2(n[5],n[4]),t.z=0),t},set:function(t){this.setEuler(t.x,t.y,t.z)},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+", "+this.w+")"},Object.defineProperty(t.prototype,"length",{get:function(){return Math.sqrt(this.lengthSquared)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"lengthSquared",{get:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},enumerable:!0,configurable:!0}),t.prototype.getClassName=function(){return"Quaternion"},t.prototype.getHashCode=function(){var t=this.x||0;return t=397*(t=397*(t=397*t^(this.y||0))^(this.z||0))^(this.w||0)},t.prototype.asArray=function(){return[this.x,this.y,this.z,this.w]},t.prototype.equals=function(t){return t&&this.x===t.x&&this.y===t.y&&this.z===t.z&&this.w===t.w},t.prototype.clone=function(){return new t(this.x,this.y,this.z,this.w)},t.prototype.copyFrom=function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w,this},t.prototype.copyFromFloats=function(t,e,n,o){return this.x=t,this.y=e,this.z=n,this.w=o,this},t.prototype.set=function(t,e,n,o){return this.copyFromFloats(t,e,n,o)},t.prototype.setEuler=function(e,n,o){return t.RotationYawPitchRollToRef(n*s.DEG2RAD,e*s.DEG2RAD,o*s.DEG2RAD,this),this},t.prototype.add=function(e){return new t(this.x+e.x,this.y+e.y,this.z+e.z,this.w+e.w)},t.prototype.addInPlace=function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this},t.prototype.subtract=function(e){return new t(this.x-e.x,this.y-e.y,this.z-e.z,this.w-e.w)},t.prototype.scale=function(e){return new t(this.x*e,this.y*e,this.z*e,this.w*e)},t.prototype.scaleToRef=function(t,e){return e.x=this.x*t,e.y=this.y*t,e.z=this.z*t,e.w=this.w*t,this},t.prototype.scaleInPlace=function(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},t.prototype.scaleAndAddToRef=function(t,e){return e.x+=this.x*t,e.y+=this.y*t,e.z+=this.z*t,e.w+=this.w*t,this},t.prototype.multiply=function(e){var n=new t(0,0,0,1);return this.multiplyToRef(e,n),n},t.prototype.multiplyToRef=function(t,e){var n=this.x*t.w+this.y*t.z-this.z*t.y+this.w*t.x,o=-this.x*t.z+this.y*t.w+this.z*t.x+this.w*t.y,r=this.x*t.y-this.y*t.x+this.z*t.w+this.w*t.z,i=-this.x*t.x-this.y*t.y-this.z*t.z+this.w*t.w;return e.copyFromFloats(n,o,r,i),this},t.prototype.multiplyInPlace=function(t){return this.multiplyToRef(t,this),this},t.prototype.conjugateToRef=function(t){return t.copyFromFloats(-this.x,-this.y,-this.z,this.w),this},t.prototype.conjugateInPlace=function(){return this.x*=-1,this.y*=-1,this.z*=-1,this},t.prototype.conjugate=function(){return new t(-this.x,-this.y,-this.z,this.w)},t.prototype.normalize=function(){var t=1/this.length;return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},t.prototype.angleAxis=function(e,n){if(0===n.lengthSquared())return t.Identity;var o=t.Identity,r=e*s.DEG2RAD;r*=.5;var i=n.normalize();return i=n.scaleInPlace(Math.sin(r)),o.x=i.x,o.y=i.y,o.z=i.z,o.w=Math.cos(r),o.normalize()},t.prototype.toRotationMatrix=function(t){return o.Matrix.FromQuaternionToRef(this,t),this},t.prototype.fromRotationMatrix=function(e){return t.FromRotationMatrixToRef(e,this),this},t}();e.Quaternion=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(10),i=n(9),s=n(21),a=function(){function t(){this._isIdentity=!1,this._isIdentityDirty=!0,this._isIdentity3x2=!0,this._isIdentity3x2Dirty=!0,this._m=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this._updateIdentityStatus(!1)}return Object.defineProperty(t.prototype,"m",{get:function(){return this._m},enumerable:!0,configurable:!0}),Object.defineProperty(t,"IdentityReadOnly",{get:function(){return t._identityReadOnly},enumerable:!0,configurable:!0}),t.FromArray=function(e,n){void 0===n&&(n=0);var o=new t;return t.FromArrayToRef(e,n,o),o},t.FromArrayToRef=function(t,e,n){for(var o=0;o<16;o++)n._m[o]=t[o+e];n._markAsUpdated()},t.FromFloatArrayToRefScaled=function(t,e,n,o){for(var r=0;r<16;r++)o._m[r]=t[r+e]*n;o._markAsUpdated()},t.FromValuesToRef=function(t,e,n,o,r,i,s,a,p,u,l,c,h,f,d,y,v){var m=v._m;m[0]=t,m[1]=e,m[2]=n,m[3]=o,m[4]=r,m[5]=i,m[6]=s,m[7]=a,m[8]=p,m[9]=u,m[10]=l,m[11]=c,m[12]=h,m[13]=f,m[14]=d,m[15]=y,v._markAsUpdated()},t.FromValues=function(e,n,o,r,i,s,a,p,u,l,c,h,f,d,y,v){var m=new t,b=m._m;return b[0]=e,b[1]=n,b[2]=o,b[3]=r,b[4]=i,b[5]=s,b[6]=a,b[7]=p,b[8]=u,b[9]=l,b[10]=c,b[11]=h,b[12]=f,b[13]=d,b[14]=y,b[15]=v,m._markAsUpdated(),m},t.Compose=function(e,n,o){var r=new t;return t.ComposeToRef(e,n,o,r),r},t.ComposeToRef=function(e,n,o,r){t.ScalingToRef(e.x,e.y,e.z,i.MathTmp.Matrix[1]),n.toRotationMatrix(i.MathTmp.Matrix[0]),i.MathTmp.Matrix[1].multiplyToRef(i.MathTmp.Matrix[0],r),r.setTranslation(o)},t.Identity=function(){var e=t.FromValues(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return e._updateIdentityStatus(!0),e},t.IdentityToRef=function(e){t.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,e),e._updateIdentityStatus(!0)},t.Zero=function(){var e=t.FromValues(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return e._updateIdentityStatus(!1),e},t.RotationX=function(e){var n=new t;return t.RotationXToRef(e,n),n},t.Invert=function(e){var n=new t;return e.invertToRef(n),n},t.RotationXToRef=function(e,n){var o=Math.sin(e),r=Math.cos(e);t.FromValuesToRef(1,0,0,0,0,r,o,0,0,-o,r,0,0,0,0,1,n),n._updateIdentityStatus(1===r&&0===o)},t.RotationY=function(e){var n=new t;return t.RotationYToRef(e,n),n},t.RotationYToRef=function(e,n){var o=Math.sin(e),r=Math.cos(e);t.FromValuesToRef(r,0,-o,0,0,1,0,0,o,0,r,0,0,0,0,1,n),n._updateIdentityStatus(1===r&&0===o)},t.RotationZ=function(e){var n=new t;return t.RotationZToRef(e,n),n},t.RotationZToRef=function(e,n){var o=Math.sin(e),r=Math.cos(e);t.FromValuesToRef(r,o,0,0,-o,r,0,0,0,0,1,0,0,0,0,1,n),n._updateIdentityStatus(1===r&&0===o)},t.RotationAxis=function(e,n){var o=new t;return t.RotationAxisToRef(e,n,o),o},t.RotationAxisToRef=function(t,e,n){var o=Math.sin(-e),r=Math.cos(-e),i=1-r;t.normalize();var s=n._m;s[0]=t.x*t.x*i+r,s[1]=t.x*t.y*i-t.z*o,s[2]=t.x*t.z*i+t.y*o,s[3]=0,s[4]=t.y*t.x*i+t.z*o,s[5]=t.y*t.y*i+r,s[6]=t.y*t.z*i-t.x*o,s[7]=0,s[8]=t.z*t.x*i-t.y*o,s[9]=t.z*t.y*i+t.x*o,s[10]=t.z*t.z*i+r,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1,n._markAsUpdated()},t.RotationYawPitchRoll=function(e,n,o){var r=new t;return t.RotationYawPitchRollToRef(e,n,o,r),r},t.RotationYawPitchRollToRef=function(t,e,n,o){r.Quaternion.RotationYawPitchRollToRef(t,e,n,i.MathTmp.Quaternion[0]),i.MathTmp.Quaternion[0].toRotationMatrix(o)},t.Scaling=function(e,n,o){var r=new t;return t.ScalingToRef(e,n,o,r),r},t.ScalingToRef=function(e,n,o,r){t.FromValuesToRef(e,0,0,0,0,n,0,0,0,0,o,0,0,0,0,1,r),r._updateIdentityStatus(1===e&&1===n&&1===o)},t.Translation=function(e,n,o){var r=new t;return t.TranslationToRef(e,n,o,r),r},t.TranslationToRef=function(e,n,o,r){t.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e,n,o,1,r),r._updateIdentityStatus(0===e&&0===n&&0===o)},t.Lerp=function(e,n,o){var r=new t;return t.LerpToRef(e,n,o,r),r},t.LerpToRef=function(t,e,n,o){for(var r=0;r<16;r++)o._m[r]=t._m[r]*(1-n)+e._m[r]*n;o._markAsUpdated()},t.DecomposeLerp=function(e,n,o){var r=new t;return t.DecomposeLerpToRef(e,n,o,r),r},t.DecomposeLerpToRef=function(e,n,s,a){var p=i.MathTmp.Vector3[0],u=i.MathTmp.Quaternion[0],l=i.MathTmp.Vector3[1];e.decompose(p,u,l);var c=i.MathTmp.Vector3[2],h=i.MathTmp.Quaternion[1],f=i.MathTmp.Vector3[3];n.decompose(c,h,f);var d=i.MathTmp.Vector3[4];o.Vector3.LerpToRef(p,c,s,d);var y=i.MathTmp.Quaternion[2];r.Quaternion.SlerpToRef(u,h,s,y);var v=i.MathTmp.Vector3[5];o.Vector3.LerpToRef(l,f,s,v),t.ComposeToRef(d,y,v,a)},t.LookAtLH=function(e,n,o){var r=new t;return t.LookAtLHToRef(e,n,o,r),r},t.LookAtLHToRef=function(e,n,r,s){var a=i.MathTmp.Vector3[0],p=i.MathTmp.Vector3[1],u=i.MathTmp.Vector3[2];n.subtractToRef(e,u),u.normalize(),o.Vector3.CrossToRef(r,u,a);var l=a.lengthSquared();0===l?a.x=1:a.normalizeFromLength(Math.sqrt(l)),o.Vector3.CrossToRef(u,a,p),p.normalize();var c=-o.Vector3.Dot(a,e),h=-o.Vector3.Dot(p,e),f=-o.Vector3.Dot(u,e);t.FromValuesToRef(a.x,p.x,u.x,0,a.y,p.y,u.y,0,a.z,p.z,u.z,0,c,h,f,1,s)},t.LookAtRH=function(e,n,o){var r=new t;return t.LookAtRHToRef(e,n,o,r),r},t.LookAtRHToRef=function(e,n,r,s){var a=i.MathTmp.Vector3[0],p=i.MathTmp.Vector3[1],u=i.MathTmp.Vector3[2];e.subtractToRef(n,u),u.normalize(),o.Vector3.CrossToRef(r,u,a);var l=a.lengthSquared();0===l?a.x=1:a.normalizeFromLength(Math.sqrt(l)),o.Vector3.CrossToRef(u,a,p),p.normalize();var c=-o.Vector3.Dot(a,e),h=-o.Vector3.Dot(p,e),f=-o.Vector3.Dot(u,e);t.FromValuesToRef(a.x,p.x,u.x,0,a.y,p.y,u.y,0,a.z,p.z,u.z,0,c,h,f,1,s)},t.OrthoLH=function(e,n,o,r){var i=new t;return t.OrthoLHToRef(e,n,o,r,i),i},t.OrthoLHToRef=function(e,n,o,r,i){var s=2/e,a=2/n,p=2/(r-o),u=-(r+o)/(r-o);t.FromValuesToRef(s,0,0,0,0,a,0,0,0,0,p,0,0,0,u,1,i),i._updateIdentityStatus(1===s&&1===a&&1===p&&0===u)},t.OrthoOffCenterLH=function(e,n,o,r,i,s){var a=new t;return t.OrthoOffCenterLHToRef(e,n,o,r,i,s,a),a},t.OrthoOffCenterLHToRef=function(e,n,o,r,i,s,a){var p=2/(n-e),u=2/(r-o),l=2/(s-i),c=-(s+i)/(s-i),h=(e+n)/(e-n),f=(r+o)/(o-r);t.FromValuesToRef(p,0,0,0,0,u,0,0,0,0,l,0,h,f,c,1,a),a._markAsUpdated()},t.OrthoOffCenterRH=function(e,n,o,r,i,s){var a=new t;return t.OrthoOffCenterRHToRef(e,n,o,r,i,s,a),a},t.OrthoOffCenterRHToRef=function(e,n,o,r,i,s,a){t.OrthoOffCenterLHToRef(e,n,o,r,i,s,a),a._m[10]*=-1},t.PerspectiveLH=function(e,n,o,r){var i=new t,s=2*o/e,a=2*o/n,p=(r+o)/(r-o),u=-2*r*o/(r-o);return t.FromValuesToRef(s,0,0,0,0,a,0,0,0,0,p,1,0,0,u,0,i),i._updateIdentityStatus(!1),i},t.PerspectiveFovLH=function(e,n,o,r){var i=new t;return t.PerspectiveFovLHToRef(e,n,o,r,i),i},t.PerspectiveFovLHToRef=function(e,n,o,r,i,s){void 0===s&&(s=!0);var a=o,p=r,u=1/Math.tan(.5*e),l=s?u/n:u,c=s?u:u*n,h=(p+a)/(p-a),f=-2*p*a/(p-a);t.FromValuesToRef(l,0,0,0,0,c,0,0,0,0,h,1,0,0,f,0,i),i._updateIdentityStatus(!1)},t.PerspectiveFovRH=function(e,n,o,r){var i=new t;return t.PerspectiveFovRHToRef(e,n,o,r,i),i},t.PerspectiveFovRHToRef=function(e,n,o,r,i,s){void 0===s&&(s=!0);var a=o,p=r,u=1/Math.tan(.5*e),l=s?u/n:u,c=s?u:u*n,h=-(p+a)/(p-a),f=-2*p*a/(p-a);t.FromValuesToRef(l,0,0,0,0,c,0,0,0,0,h,-1,0,0,f,0,i),i._updateIdentityStatus(!1)},t.PerspectiveFovWebVRToRef=function(t,e,n,o,r){void 0===r&&(r=!1);var i=r?-1:1,s=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),p=Math.tan(t.leftDegrees*Math.PI/180),u=Math.tan(t.rightDegrees*Math.PI/180),l=2/(p+u),c=2/(s+a),h=o._m;h[0]=l,h[1]=h[2]=h[3]=h[4]=0,h[5]=c,h[6]=h[7]=0,h[8]=(p-u)*l*.5,h[9]=-(s-a)*c*.5,h[10]=-n/(e-n),h[11]=1*i,h[12]=h[13]=h[15]=0,h[14]=-2*n*e/(n-e),o._markAsUpdated()},t.GetAsMatrix2x2=function(t){return[t._m[0],t._m[1],t._m[4],t._m[5]]},t.GetAsMatrix3x3=function(t){return[t._m[0],t._m[1],t._m[2],t._m[4],t._m[5],t._m[6],t._m[8],t._m[9],t._m[10]]},t.Transpose=function(e){var n=new t;return t.TransposeToRef(e,n),n},t.TransposeToRef=function(t,e){var n=e._m,o=t._m;n[0]=o[0],n[1]=o[4],n[2]=o[8],n[3]=o[12],n[4]=o[1],n[5]=o[5],n[6]=o[9],n[7]=o[13],n[8]=o[2],n[9]=o[6],n[10]=o[10],n[11]=o[14],n[12]=o[3],n[13]=o[7],n[14]=o[11],n[15]=o[15],e._updateIdentityStatus(t._isIdentity,t._isIdentityDirty)},t.Reflection=function(e){var n=new t;return t.ReflectionToRef(e,n),n},t.ReflectionToRef=function(e,n){e.normalize();var o=e.normal.x,r=e.normal.y,i=e.normal.z,s=-2*o,a=-2*r,p=-2*i;t.FromValuesToRef(s*o+1,a*o,p*o,0,s*r,a*r+1,p*r,0,s*i,a*i,p*i+1,0,s*e.d,a*e.d,p*e.d,1,n)},t.FromXYZAxesToRef=function(e,n,o,r){t.FromValuesToRef(e.x,e.y,e.z,0,n.x,n.y,n.z,0,o.x,o.y,o.z,0,0,0,0,1,r)},t.FromQuaternionToRef=function(t,e){var n=t.x*t.x,o=t.y*t.y,r=t.z*t.z,i=t.x*t.y,s=t.z*t.w,a=t.z*t.x,p=t.y*t.w,u=t.y*t.z,l=t.x*t.w;e._m[0]=1-2*(o+r),e._m[1]=2*(i+s),e._m[2]=2*(a-p),e._m[3]=0,e._m[4]=2*(i-s),e._m[5]=1-2*(r+n),e._m[6]=2*(u+l),e._m[7]=0,e._m[8]=2*(a+p),e._m[9]=2*(u-l),e._m[10]=1-2*(o+n),e._m[11]=0,e._m[12]=0,e._m[13]=0,e._m[14]=0,e._m[15]=1,e._markAsUpdated()},t.prototype._markAsUpdated=function(){this.updateFlag=t._updateFlagSeed++,this._isIdentity=!1,this._isIdentity3x2=!1,this._isIdentityDirty=!0,this._isIdentity3x2Dirty=!0},t.prototype.isIdentity=function(){if(this._isIdentityDirty){this._isIdentityDirty=!1;var t=this._m;this._isIdentity=1===t[0]&&0===t[1]&&0===t[2]&&0===t[3]&&0===t[4]&&1===t[5]&&0===t[6]&&0===t[7]&&0===t[8]&&0===t[9]&&1===t[10]&&0===t[11]&&0===t[12]&&0===t[13]&&0===t[14]&&1===t[15]}return this._isIdentity},t.prototype.isIdentityAs3x2=function(){return this._isIdentity3x2Dirty&&(this._isIdentity3x2Dirty=!1,1!==this._m[0]||1!==this._m[5]||1!==this._m[15]||0!==this._m[1]||0!==this._m[2]||0!==this._m[3]||0!==this._m[4]||0!==this._m[6]||0!==this._m[7]||0!==this._m[8]||0!==this._m[9]||0!==this._m[10]||0!==this._m[11]||0!==this._m[12]||0!==this._m[13]||0!==this._m[14]?this._isIdentity3x2=!1:this._isIdentity3x2=!0),this._isIdentity3x2},t.prototype.determinant=function(){if(!0===this._isIdentity)return 1;var t=this._m,e=t[0],n=t[1],o=t[2],r=t[3],i=t[4],s=t[5],a=t[6],p=t[7],u=t[8],l=t[9],c=t[10],h=t[11],f=t[12],d=t[13],y=t[14],v=t[15],m=c*v-y*h,b=l*v-d*h,g=l*y-d*c,_=u*v-f*h,C=u*y-c*f,x=u*d-f*l;return e*+(s*m-a*b+p*g)+n*-(i*m-a*_+p*C)+o*+(i*b-s*_+p*x)+r*-(i*g-s*C+a*x)},t.prototype.toArray=function(){return this._m},t.prototype.asArray=function(){return this._m},t.prototype.invert=function(){return this.invertToRef(this),this},t.prototype.reset=function(){return t.FromValuesToRef(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,this),this._updateIdentityStatus(!1),this},t.prototype.add=function(e){var n=new t;return this.addToRef(e,n),n},t.prototype.addToRef=function(t,e){for(var n=0;n<16;n++)e._m[n]=this._m[n]+t._m[n];return e._markAsUpdated(),this},t.prototype.addToSelf=function(t){for(var e=0;e<16;e++)this._m[e]+=t._m[e];return this._markAsUpdated(),this},t.prototype.invertToRef=function(e){if(!0===this._isIdentity)return t.IdentityToRef(e),this;var n=this._m,o=n[0],r=n[1],i=n[2],s=n[3],a=n[4],p=n[5],u=n[6],l=n[7],c=n[8],h=n[9],f=n[10],d=n[11],y=n[12],v=n[13],m=n[14],b=n[15],g=f*b-m*d,_=h*b-v*d,C=h*m-v*f,x=c*b-y*d,w=c*m-f*y,O=c*v-y*h,T=+(p*g-u*_+l*C),R=-(a*g-u*x+l*w),A=+(a*_-p*x+l*O),E=-(a*C-p*w+u*O),P=o*T+r*R+i*A+s*E;if(0===P)return e.copyFrom(this),this;var S=1/P,z=u*b-m*l,I=p*b-v*l,M=p*m-v*u,F=a*b-y*l,D=a*m-y*u,L=a*v-y*p,U=u*d-f*l,N=p*d-h*l,V=p*f-h*u,H=a*d-c*l,j=a*f-c*u,k=a*h-c*p,B=-(r*g-i*_+s*C),G=+(o*g-i*x+s*w),q=-(o*_-r*x+s*O),W=+(o*C-r*w+i*O),Y=+(r*z-i*I+s*M),X=-(o*z-i*F+s*D),Z=+(o*I-r*F+s*L),Q=-(o*M-r*D+i*L),J=-(r*U-i*N+s*V),K=+(o*U-i*H+s*j),$=-(o*N-r*H+s*k),tt=+(o*V-r*j+i*k);return t.FromValuesToRef(T*S,B*S,Y*S,J*S,R*S,G*S,X*S,K*S,A*S,q*S,Z*S,$*S,E*S,W*S,Q*S,tt*S,e),this},t.prototype.addAtIndex=function(t,e){return this._m[t]+=e,this._markAsUpdated(),this},t.prototype.multiplyAtIndex=function(t,e){return this._m[t]*=e,this._markAsUpdated(),this},t.prototype.setTranslationFromFloats=function(t,e,n){return this._m[12]=t,this._m[13]=e,this._m[14]=n,this._markAsUpdated(),this},t.prototype.setTranslation=function(t){return this.setTranslationFromFloats(t.x,t.y,t.z)},t.prototype.getTranslation=function(){return new o.Vector3(this._m[12],this._m[13],this._m[14])},t.prototype.getTranslationToRef=function(t){return t.x=this._m[12],t.y=this._m[13],t.z=this._m[14],this},t.prototype.removeRotationAndScaling=function(){var e=this.m;return t.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e[12],e[13],e[14],e[15],this),this._updateIdentityStatus(0===e[12]&&0===e[13]&&0===e[14]&&1===e[15]),this},t.prototype.multiply=function(e){var n=new t;return this.multiplyToRef(e,n),n},t.prototype.copyFrom=function(t){t.copyToArray(this._m);var e=t;return this._updateIdentityStatus(e._isIdentity,e._isIdentityDirty,e._isIdentity3x2,e._isIdentity3x2Dirty),this},t.prototype.copyToArray=function(t,e){void 0===e&&(e=0);for(var n=0;n<16;n++)t[e+n]=this._m[n];return this},t.prototype.multiplyToRef=function(t,e){return this._isIdentity?(e.copyFrom(t),this):t._isIdentity?(e.copyFrom(this),this):(this.multiplyToArray(t,e._m,0),e._markAsUpdated(),this)},t.prototype.multiplyToArray=function(t,e,n){var o=this._m,r=t.m,i=o[0],s=o[1],a=o[2],p=o[3],u=o[4],l=o[5],c=o[6],h=o[7],f=o[8],d=o[9],y=o[10],v=o[11],m=o[12],b=o[13],g=o[14],_=o[15],C=r[0],x=r[1],w=r[2],O=r[3],T=r[4],R=r[5],A=r[6],E=r[7],P=r[8],S=r[9],z=r[10],I=r[11],M=r[12],F=r[13],D=r[14],L=r[15];return e[n]=i*C+s*T+a*P+p*M,e[n+1]=i*x+s*R+a*S+p*F,e[n+2]=i*w+s*A+a*z+p*D,e[n+3]=i*O+s*E+a*I+p*L,e[n+4]=u*C+l*T+c*P+h*M,e[n+5]=u*x+l*R+c*S+h*F,e[n+6]=u*w+l*A+c*z+h*D,e[n+7]=u*O+l*E+c*I+h*L,e[n+8]=f*C+d*T+y*P+v*M,e[n+9]=f*x+d*R+y*S+v*F,e[n+10]=f*w+d*A+y*z+v*D,e[n+11]=f*O+d*E+y*I+v*L,e[n+12]=m*C+b*T+g*P+_*M,e[n+13]=m*x+b*R+g*S+_*F,e[n+14]=m*w+b*A+g*z+_*D,e[n+15]=m*O+b*E+g*I+_*L,this},t.prototype.equals=function(t){var e=t;if(!e)return!1;if((this._isIdentity||e._isIdentity)&&!this._isIdentityDirty&&!e._isIdentityDirty)return this._isIdentity&&e._isIdentity;var n=this.m,o=e.m;return n[0]===o[0]&&n[1]===o[1]&&n[2]===o[2]&&n[3]===o[3]&&n[4]===o[4]&&n[5]===o[5]&&n[6]===o[6]&&n[7]===o[7]&&n[8]===o[8]&&n[9]===o[9]&&n[10]===o[10]&&n[11]===o[11]&&n[12]===o[12]&&n[13]===o[13]&&n[14]===o[14]&&n[15]===o[15]},t.prototype.clone=function(){var e=new t;return e.copyFrom(this),e},t.prototype.getClassName=function(){return"Matrix"},t.prototype.getHashCode=function(){for(var t=this._m[0]||0,e=1;e<16;e++)t=397*t^(this._m[e]||0);return t},t.prototype.decompose=function(e,n,o){if(this._isIdentity)return o&&o.setAll(0),e&&e.setAll(1),n&&n.copyFromFloats(0,0,0,1),!0;var s=this._m;o&&o.copyFromFloats(s[12],s[13],s[14]);var a=e||i.MathTmp.Vector3[0];if(a.x=Math.sqrt(s[0]*s[0]+s[1]*s[1]+s[2]*s[2]),a.y=Math.sqrt(s[4]*s[4]+s[5]*s[5]+s[6]*s[6]),a.z=Math.sqrt(s[8]*s[8]+s[9]*s[9]+s[10]*s[10]),this.determinant()<=0&&(a.y*=-1),0===a.x||0===a.y||0===a.z)return n&&n.copyFromFloats(0,0,0,1),!1;if(n){var p=1/a.x,u=1/a.y,l=1/a.z;t.FromValuesToRef(s[0]*p,s[1]*p,s[2]*p,0,s[4]*u,s[5]*u,s[6]*u,0,s[8]*l,s[9]*l,s[10]*l,0,0,0,0,1,i.MathTmp.Matrix[0]),r.Quaternion.FromRotationMatrixToRef(i.MathTmp.Matrix[0],n)}return!0},t.prototype.getRow=function(t){if(t<0||t>3)return null;var e=4*t;return new s.Vector4(this._m[e+0],this._m[e+1],this._m[e+2],this._m[e+3])},t.prototype.setRow=function(t,e){return this.setRowFromFloats(t,e.x,e.y,e.z,e.w)},t.prototype.transpose=function(){return t.Transpose(this)},t.prototype.transposeToRef=function(e){return t.TransposeToRef(this,e),this},t.prototype.setRowFromFloats=function(t,e,n,o,r){if(t<0||t>3)return this;var i=4*t;return this._m[i+0]=e,this._m[i+1]=n,this._m[i+2]=o,this._m[i+3]=r,this._markAsUpdated(),this},t.prototype.scale=function(e){var n=new t;return this.scaleToRef(e,n),n},t.prototype.scaleToRef=function(t,e){for(var n=0;n<16;n++)e._m[n]=this._m[n]*t;return e._markAsUpdated(),this},t.prototype.scaleAndAddToRef=function(t,e){for(var n=0;n<16;n++)e._m[n]+=this._m[n]*t;return e._markAsUpdated(),this},t.prototype.toNormalMatrix=function(e){var n=i.MathTmp.Matrix[0];this.invertToRef(n),n.transposeToRef(e);var o=e._m;t.FromValuesToRef(o[0],o[1],o[2],0,o[4],o[5],o[6],0,o[8],o[9],o[10],0,0,0,0,1,e)},t.prototype.getRotationMatrix=function(){var e=new t;return this.getRotationMatrixToRef(e),e},t.prototype.getRotationMatrixToRef=function(e){var n=i.MathTmp.Vector3[0];if(!this.decompose(n))return t.IdentityToRef(e),this;var o=this._m,r=1/n.x,s=1/n.y,a=1/n.z;return t.FromValuesToRef(o[0]*r,o[1]*r,o[2]*r,0,o[4]*s,o[5]*s,o[6]*s,0,o[8]*a,o[9]*a,o[10]*a,0,0,0,0,1,e),this},t.prototype.toggleModelMatrixHandInPlace=function(){var t=this._m;t[2]*=-1,t[6]*=-1,t[8]*=-1,t[9]*=-1,t[14]*=-1,this._markAsUpdated()},t.prototype.toggleProjectionMatrixHandInPlace=function(){var t=this._m;t[8]*=-1,t[9]*=-1,t[10]*=-1,t[11]*=-1,this._markAsUpdated()},t.prototype._updateIdentityStatus=function(e,n,o,r){void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===r&&(r=!0),this.updateFlag=t._updateFlagSeed++,this._isIdentity=e,this._isIdentity3x2=e||o,this._isIdentityDirty=!this._isIdentity&&n,this._isIdentity3x2Dirty=!this._isIdentity3x2&&r},t._updateFlagSeed=0,t._identityReadOnly=t.Identity(),t}();e.Matrix=a},function(t,e,n){"use strict";var o=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var r=n(8),i=function(){function t(t,e){this.uuid=t,this.payload=e}return t=o([r.EventConstructor()],t)}();e.UUIDEvent=i;var s=function(){function t(t){this.payload=t}return t=o([r.EventConstructor()],t)}();e.RaycastResponse=s;var a=function(){function t(t){this.payload=t}return t=o([r.EventConstructor()],t)}();e.PointerEvent=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(12),r=n(4),i=n(7),s=n(15),a=n(28),p=function(){function t(){}return t.prototype.activate=function(t){t.eventManager.addListener(o.RaycastResponse,this,(function(t){"HitFirst"===t.payload.queryType?a.PhysicsCast.instance.handleRaycastHitFirstResponse(t):"HitAll"===t.payload.queryType&&a.PhysicsCast.instance.handleRaycastHitAllResponse(t)})),"undefined"!=typeof dcl&&dcl.subscribe("raycastResponse")},t.prototype.deactivate=function(){"undefined"!=typeof dcl&&dcl.unsubscribe("raycastResponse")},t}();e.RaycastEventSystem=p,e.raycastEventSystem=new p;var u=function(){function t(){}return t.prototype.activate=function(t){t.eventManager.addListener(o.PointerEvent,this,(function(t){s.Input.instance.handlePointerEvent(t.payload)})),"undefined"!=typeof dcl&&(dcl.subscribe("pointerUp"),dcl.subscribe("pointerDown"),dcl.subscribe("pointerEvent"))},t.prototype.deactivate=function(){"undefined"!=typeof dcl&&(dcl.unsubscribe("pointerUp"),dcl.unsubscribe("pointerDown"),dcl.unsubscribe("pointerEvent"))},t}();e.PointerEventSystem=u,e.pointerEventSystem=new u;var l=function(){function t(){this.handlerMap={}}return t.prototype.activate=function(t){t.eventManager.addListener(o.UUIDEvent,this,this.handleEvent),t.eventManager.addListener(i.ComponentAdded,this,this.componentAdded),t.eventManager.addListener(i.ComponentRemoved,this,this.componentRemoved),"undefined"!=typeof dcl&&dcl.subscribe("uuidEvent")},t.prototype.deactivate=function(){"undefined"!=typeof dcl&&dcl.unsubscribe("uuidEvent")},t.prototype.onAddEntity=function(t){for(var e in t.components){var n=t.components[e];n instanceof r.OnUUIDEvent&&(this.handlerMap[n.uuid]=n)}},t.prototype.onRemoveEntity=function(t){for(var e in t.components){var n=t.components[e];n instanceof r.OnUUIDEvent&&delete this.handlerMap[n.uuid]}},t.prototype.componentAdded=function(t){if(t.entity.isAddedToEngine()){var e=t.entity.components[t.componentName];e instanceof r.OnUUIDEvent&&(this.handlerMap[e.uuid]=e)}},t.prototype.componentRemoved=function(t){t.entity.isAddedToEngine()&&t.component instanceof r.OnUUIDEvent&&delete this.handlerMap[t.component.uuid]},t.prototype.handleEvent=function(t){if(t.uuid in this.handlerMap){var e=this.handlerMap[t.uuid];e&&e.callback&&"call"in e.callback&&e.callback(t.payload)}},t}();e.UUIDEventSystem=l,e.uuidEventSystem=new l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(6),i=function(){function t(t,e){void 0===t&&(t=0),void 0===e&&(e=0),this.x=t,this.y=e}return t.Zero=function(){return new t(0,0)},t.One=function(){return new t(1,1)},t.Add=function(e,n){return new t(e.x,e.y).addInPlace(n)},t.FromArray=function(e,n){return void 0===n&&(n=0),new t(e[n],e[n+1])},t.FromArrayToRef=function(t,e,n){n.x=t[e],n.y=t[e+1]},t.CatmullRom=function(e,n,o,r,i){var s=i*i,a=i*s;return new t(.5*(2*n.x+(-e.x+o.x)*i+(2*e.x-5*n.x+4*o.x-r.x)*s+(-e.x+3*n.x-3*o.x+r.x)*a),.5*(2*n.y+(-e.y+o.y)*i+(2*e.y-5*n.y+4*o.y-r.y)*s+(-e.y+3*n.y-3*o.y+r.y)*a))},t.Clamp=function(e,n,o){var r=e.x;r=(r=r>o.x?o.x:r)<n.x?n.x:r;var i=e.y;return new t(r,i=(i=i>o.y?o.y:i)<n.y?n.y:i)},t.Hermite=function(e,n,o,r,i){var s=i*i,a=i*s,p=2*a-3*s+1,u=-2*a+3*s,l=a-2*s+i,c=a-s;return new t(e.x*p+o.x*u+n.x*l+r.x*c,e.y*p+o.y*u+n.y*l+r.y*c)},t.Lerp=function(e,n,o){return new t(e.x+(n.x-e.x)*o,e.y+(n.y-e.y)*o)},t.Dot=function(t,e){return t.x*e.x+t.y*e.y},t.Normalize=function(e){var n=new t(e.x,e.y);return n.normalize(),n},t.Minimize=function(e,n){return new t(e.x<n.x?e.x:n.x,e.y<n.y?e.y:n.y)},t.Maximize=function(e,n){return new t(e.x>n.x?e.x:n.x,e.y>n.y?e.y:n.y)},t.Transform=function(e,n){var o=t.Zero();return t.TransformToRef(e,n,o),o},t.TransformToRef=function(t,e,n){var o=e.m,r=t.x*o[0]+t.y*o[4]+o[12],i=t.x*o[1]+t.y*o[5]+o[13];n.x=r,n.y=i},t.PointInTriangle=function(t,e,n,o){var r=.5*(-n.y*o.x+e.y*(-n.x+o.x)+e.x*(n.y-o.y)+n.x*o.y),i=r<0?-1:1,s=(e.y*o.x-e.x*o.y+(o.y-e.y)*t.x+(e.x-o.x)*t.y)*i,a=(e.x*n.y-e.y*n.x+(e.y-n.y)*t.x+(n.x-e.x)*t.y)*i;return s>0&&a>0&&s+a<2*r*i},t.Distance=function(e,n){return Math.sqrt(t.DistanceSquared(e,n))},t.DistanceSquared=function(t,e){var n=t.x-e.x,o=t.y-e.y;return n*n+o*o},t.Center=function(e,n){var o=t.Add(e,n);return o.scaleInPlace(.5),o},t.DistanceOfPointFromSegment=function(e,n,o){var r=t.DistanceSquared(n,o);if(0===r)return t.Distance(e,n);var i=o.subtract(n),s=Math.max(0,Math.min(1,t.Dot(e.subtract(n),i)/r)),a=n.add(i.multiplyByFloats(s,s));return t.Distance(e,a)},t.prototype.toString=function(){return"{X: "+this.x+" Y:"+this.y+"}"},t.prototype.getClassName=function(){return"Vector2"},t.prototype.getHashCode=function(){var t=this.x||0;return t=397*t^(this.y||0)},t.prototype.toArray=function(t,e){return void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,this},t.prototype.asArray=function(){var t=new Array;return this.toArray(t,0),t},t.prototype.copyFrom=function(t){return this.x=t.x,this.y=t.y,this},t.prototype.copyFromFloats=function(t,e){return this.x=t,this.y=e,this},t.prototype.set=function(t,e){return this.copyFromFloats(t,e)},t.prototype.add=function(e){return new t(this.x+e.x,this.y+e.y)},t.prototype.addToRef=function(t,e){return e.x=this.x+t.x,e.y=this.y+t.y,this},t.prototype.addInPlace=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.addVector3=function(e){return new t(this.x+e.x,this.y+e.y)},t.prototype.subtract=function(e){return new t(this.x-e.x,this.y-e.y)},t.prototype.subtractToRef=function(t,e){return e.x=this.x-t.x,e.y=this.y-t.y,this},t.prototype.subtractInPlace=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.multiplyInPlace=function(t){return this.x*=t.x,this.y*=t.y,this},t.prototype.multiply=function(e){return new t(this.x*e.x,this.y*e.y)},t.prototype.multiplyToRef=function(t,e){return e.x=this.x*t.x,e.y=this.y*t.y,this},t.prototype.multiplyByFloats=function(e,n){return new t(this.x*e,this.y*n)},t.prototype.divide=function(e){return new t(this.x/e.x,this.y/e.y)},t.prototype.divideToRef=function(t,e){return e.x=this.x/t.x,e.y=this.y/t.y,this},t.prototype.divideInPlace=function(t){return this.divideToRef(t,this)},t.prototype.negate=function(){return new t(-this.x,-this.y)},t.prototype.scaleInPlace=function(t){return this.x*=t,this.y*=t,this},t.prototype.scale=function(e){var n=new t(0,0);return this.scaleToRef(e,n),n},t.prototype.scaleToRef=function(t,e){return e.x=this.x*t,e.y=this.y*t,this},t.prototype.scaleAndAddToRef=function(t,e){return e.x+=this.x*t,e.y+=this.y*t,this},t.prototype.equals=function(t){return t&&this.x===t.x&&this.y===t.y},t.prototype.equalsWithEpsilon=function(t,e){return void 0===e&&(e=o.Epsilon),t&&r.Scalar.WithinEpsilon(this.x,t.x,e)&&r.Scalar.WithinEpsilon(this.y,t.y,e)},t.prototype.floor=function(){return new t(Math.floor(this.x),Math.floor(this.y))},t.prototype.fract=function(){return new t(this.x-Math.floor(this.x),this.y-Math.floor(this.y))},t.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},t.prototype.lengthSquared=function(){return this.x*this.x+this.y*this.y},t.prototype.normalize=function(){var t=this.length();if(0===t)return this;var e=1/t;return this.x*=e,this.y*=e,this},t.prototype.clone=function(){return new t(this.x,this.y)},t}();e.Vector2=i},function(t,e,n){"use strict";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)},s=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var a,p=n(27),u=n(5),l=n(0);!function(t){t.POINTER="POINTER",t.PRIMARY="PRIMARY",t.SECONDARY="SECONDARY",t.ANY="ANY"}(a=e.ActionButton||(e.ActionButton={}));var c=function(t){if(this.callback=t,!t||!("apply"in t)||!("call"in t))throw new Error("Callback is not a function");y.ensureInstance()};e.PointerEventComponent=c;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e=s([l.Component("pointerDown")],e)}(c);e.GlobalPointerDown=h;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e=s([l.Component("pointerUp")],e)}(c);e.GlobalPointerUp=f;var d=function(t,e){this.fn=t,this.useRaycast=e},y=function(){function t(){var t,e;this.subscriptions=((t={})[a.POINTER]={BUTTON_DOWN:[],BUTTON_UP:[]},t[a.PRIMARY]={BUTTON_DOWN:[],BUTTON_UP:[]},t[a.SECONDARY]={BUTTON_DOWN:[],BUTTON_UP:[]},t[a.ANY]={BUTTON_DOWN:[],BUTTON_UP:[]},t),this.internalState=((e={})[a.POINTER]={BUTTON_DOWN:!1},e[a.PRIMARY]={BUTTON_DOWN:!1},e[a.SECONDARY]={BUTTON_DOWN:!1},e[a.ANY]={BUTTON_DOWN:!1},e)}return Object.defineProperty(t,"instance",{get:function(){return t.ensureInstance(),t._instance},enumerable:!0,configurable:!0}),t.ensureInstance=function(){t._instance||(t._instance=new t)},t.prototype.isButtonPressed=function(t){return this.internalState[t]},t.prototype.subscribe=function(t,e,n,o){var r=this;return this.subscriptions[e][t].push(new d(o,n)),function(){return r.unsubscribe(t,e,o)}},t.prototype.unsubscribe=function(t,e,n){var o=this.getSubscriptionId(t,e,n);return o>-1&&this.subscriptions[e][t].splice(o,1)},t.prototype.handlePointerEvent=function(t){var e=this.getPointerById(t.buttonId),n=i(i({},t),{button:e,direction:(new u.Vector3).copyFrom(t.direction),origin:(new u.Vector3).copyFrom(t.origin),hit:void 0}),o=t.hit?i(i({},t.hit),{hitPoint:(new u.Vector3).copyFrom(t.hit.hitPoint),normal:(new u.Vector3).copyFrom(t.hit.normal),worldNormal:(new u.Vector3).copyFrom(t.hit.worldNormal)}):void 0;if(t.type===p.InputEventType.DOWN){this.internalState[e].BUTTON_DOWN=!0;for(var r=0;r<this.subscriptions[e].BUTTON_DOWN.length;r++){(s=this.subscriptions[e].BUTTON_DOWN[r]).useRaycast?n.hit=o:n.hit=void 0,s.fn(n)}if(o&&o.entityId&&l.DisposableComponent.engine)(c=(a=l.DisposableComponent.engine.entities[o.entityId])&&a.getComponentOrNull(h))&&(n.hit=o,c.callback(n))}else{this.internalState[e].BUTTON_DOWN=!1;for(r=0;r<this.subscriptions[e].BUTTON_UP.length;r++){var s;(s=this.subscriptions[e].BUTTON_UP[r]).useRaycast?n.hit=o:n.hit=void 0,s.fn(n)}var a,c;if(o&&o.entityId&&l.DisposableComponent.engine)(c=(a=l.DisposableComponent.engine.entities[o.entityId])&&a.getComponentOrNull(f))&&(n.hit=o,c.callback(n))}},t.prototype.getSubscriptionId=function(t,e,n){for(var o=0;o<this.subscriptions[e][t].length;o++)if(this.subscriptions[e][t][o].fn===n)return o;return-1},t.prototype.getPointerById=function(t){return 0===t?a.POINTER:1===t?a.PRIMARY:a.SECONDARY},t}();e.Input=y},function(t,e,n){"use strict";var o=this&&this.__read||function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var o,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(o=i.next()).done;)s.push(o.value)}catch(t){r={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s},r=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,"__esModule",{value:!0});var i=n(7),s=n(0),a=n(8),p=n(31),u=n(1),l=function(){function t(t){this.eventManager=new a.EventManager,this.systems=[],this.entityLists={},this.addedSystems=[],this._entities={},this._disposableComponents={},this._componentGroups={},this.simpleSystems=[],this.eventManager.addListener(i.ComponentAdded,this,this.componentAddedHandler),this.eventManager.addListener(i.ComponentRemoved,this,this.componentRemovedHandler),this.rootEntity=t}return Object.defineProperty(t.prototype,"entities",{get:function(){return this._entities},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"disposableComponents",{get:function(){return this._disposableComponents},enumerable:!0,configurable:!0}),t.prototype.addEntity=function(t){var e=t.getParent();if(t.isAddedToEngine())return t;for(var n in t.eventManager=this.eventManager,t.engine=this,this._entities[t.uuid]=t,this.checkRequirementsAndAdd(t),e?e.isAddedToEngine()||e===this.rootEntity||u.log("Engine: warning, added an entity with a parent not present in the engine. Parent id: "+e.uuid):t.setParent(this.rootEntity),t.alive=!0,t.children){var o=t.children[n];o&&(o.isAddedToEngine()||this.addEntity(o))}return t},t.prototype.removeEntity=function(t){var e=t.uuid;if(t.isAddedToEngine()){for(var n in t.components){var o=this._componentGroups[n];if(o)for(var r in o)o[r].removeEntity(t);delete this.entityLists[n][e]}for(var i=0;i<this.simpleSystems.length;i++){var s=this.simpleSystems[i];s.onRemoveEntity&&s.onRemoveEntity(t)}for(var i in t.children){var a=t.children[i];a&&this.removeEntity(a)}return t.alive=!1,t.eventManager=null,delete this._entities[e],!0}for(var n in u.log("Engine: Trying to remove non existent entity from engine."),t.isAddedToEngine()?u.log("Engine: Entity id: "+e):u.log('Engine: Entity "'+t.uuid+'" has not been added to any engine yet.'),u.log("Engine: Entity's components:"),t.components)u.log(n);return!1},t.prototype.addSystem=function(t,e){if(void 0===e&&(e=0),-1!==this.addedSystems.indexOf(t))return u.log("Engine: Trying to add a system that is already added. Aborting"),t;if(this.systems.length>0)for(var n=0;n<this.systems.length;n++){var o=this.systems[n],r=n===this.systems.length-1;if(o.priority>e){this.addedSystems.push(t),this.systems.splice(n,0,{system:t,priority:e});break}if(r){this.addedSystems.push(t),this.systems.splice(n+1,0,{system:t,priority:e});break}}else this.addedSystems.push(t),this.systems.splice(1,0,{system:t,priority:e});return this.registerSystem(t),t},t.prototype.removeSystem=function(t){var e=this.addedSystems.indexOf(t);if(-1!==e){t.active=!1,t.deactivate&&t.deactivate(),this.addedSystems.splice(e,1);for(var n=0;n<this.systems.length;n++){this.systems[n].system===t&&this.systems.splice(n,1)}return!0}return!1},t.prototype.update=function(t){for(var e in this.systems){var n=this.systems[e].system;if(n.active&&n.update)try{n.update(t)}catch(t){u.error(t)}}return this},t.prototype.getEntitiesWithComponent=function(t){var e="string"==typeof t?t:s.getComponentName(t);return e in this.entityLists?this.entityLists[e]:this.entityLists[e]={}},t.prototype.registerComponent=function(t){var e=s.getComponentId(t),n=s.getComponentName(t),o=s.getComponentClassId(t);this._disposableComponents[e]=t,null!==o&&(this.eventManager.fireEvent(new s.DisposableComponentCreated(e,n,o)),this.eventManager.fireEvent(new s.DisposableComponentUpdated(e,t)))},t.prototype.disposeComponent=function(t){var e=s.getComponentId(t);return delete this._disposableComponents[e]&&(this.eventManager.fireEvent(new s.DisposableComponentRemoved(e)),t.onDispose&&t.onDispose(),!0)},t.prototype.updateComponent=function(t){this.eventManager.fireEvent(new s.DisposableComponentUpdated(s.getComponentId(t),t))},t.prototype.getComponentGroup=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=new(p.ComponentGroup.bind.apply(p.ComponentGroup,r([void 0],t)));n.active=!0;for(var o=n.requiresNames,i=0;i<o.length;i++){var s=o[i],a=this._componentGroups[s];a||(this._componentGroups[s]=a=[]),-1===a.indexOf(n)&&a.push(n)}for(var u in this._entities)this.checkRequirements(this._entities[u],n);return n},t.prototype.removeComponentGroup=function(t){if(t.active){t.active=!1;for(var e=t.requiresNames,n=0;n<e.length;n++){var o=e[n],r=this._componentGroups[o];if(r){var i=r.indexOf(t);-1!==i&&r.splice(i,1)}}return!0}return!1},t.prototype.registerSystem=function(t){t.active=!0,t.activate&&t.activate(this),this.simpleSystems.push(t)},t.prototype.checkRequirementsAndAdd=function(t){if(t.isAddedToEngine()){for(var e in t.components){e in this.entityLists||(this.entityLists[e]={}),this.entityLists[e][t.uuid]=t;var n=this._componentGroups[e];if(n)for(var o in n)this.checkRequirements(t,n[o])}for(var r=0;r<this.simpleSystems.length;r++){var i=this.simpleSystems[r];i.onAddEntity&&i.onAddEntity(t)}}},t.prototype.checkRequirements=function(t,e){e.meetsRequirements(t)?e.hasEntity(t)||e.addEntity(t):e.hasEntity(t)&&e.removeEntity(t)},t.prototype.componentAddedHandler=function(t){var e,n=t.entity,o=t.componentName;if(n.isAddedToEngine()){this.entityLists[o]?this.entityLists[o][n.uuid]=n:this.entityLists[o]=((e={})[n.uuid]=n,e);var r=this._componentGroups[o];if(r)for(var i in r)this.checkRequirements(n,r[i])}},t.prototype.componentRemovedHandler=function(t){var e=t.entity,n=t.componentName;if(e.isAddedToEngine()){delete this.entityLists[n][e.uuid];var o=this._componentGroups[n];if(o)for(var r in o)this.checkRequirements(e,o[r])}},t}();e.Engine=l},function(t,e,n){"use strict";var o;Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.PERCENT=0]="PERCENT",t[t.PIXELS=1]="PIXELS"}(o=e.UIValueType||(e.UIValueType={}));var r=function(){function t(t){if(this.type=o.PIXELS,"string"==typeof t){var e=t;e.indexOf("px")>-1?this.type=o.PIXELS:e.indexOf("%")>-1&&(this.type=o.PERCENT),this.value=parseFloat(e)}else this.value=t}return t.prototype.toString=function(){var t=this.value.toString();return this.type===o.PERCENT?t+="%":t+="px",t},t}();e.UIValue=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=n(7),i=n(1),s=function(){function t(t){this.name=t,this.children={},this.eventManager=null,this.alive=!1,this.uuid=i.newId("E"),this.components={},this.engine=null,this._parent=null}return t.prototype.addComponentOrReplace=function(t){if("function"==typeof t)throw new Error("You passed a function or class as a component, an instance of component is expected");if("object"!=typeof t)throw new Error("You passed a "+typeof t+", an instance of component is expected");var e=o.getComponentName(t);if(this.components[e]){if(this.components[e]===t)return t;this.removeComponent(this.components[e],!1)}return this.addComponent(t)},t.prototype.hasComponent=function(t){var e=typeof t;if("string"!==e&&"object"!==e&&"function"!==e)throw new Error("Entity#has(component): component is not a class, name or instance");if(null==t)return!1;var n="string"===e?t:o.getComponentName(t),r=this.components[n];return!!r&&("object"===e?r===t:"function"!==e||r instanceof t)},t.prototype.getComponent=function(t){var e=typeof t;if("string"!==e&&"function"!==e)throw new Error("Entity#get(component): component is not a class or name");var n="string"===e?t:o.getComponentName(t),r=this.components[n];if(!r)throw new Error('Can not get component "'+n+'" from entity "'+this.identifier+'"');if("function"===e){if(r instanceof t)return r;throw new Error('Can not get component "'+n+'" from entity "'+this.identifier+'" (by instance)')}return r},t.prototype.getComponentOrNull=function(t){var e=typeof t;if("string"!==e&&"function"!==e)throw new Error("Entity#getOrNull(component): component is not a class or name");var n="string"===e?t:o.getComponentName(t),r=this.components[n];return r?"function"===e?r instanceof t?r:null:r:null},t.prototype.getComponentOrCreate=function(t){if("function"!=typeof t)throw new Error("Entity#getOrCreate(component): component is not a class");var e=this.getComponentOrNull(t);return e||(e=new t,o.getComponentName(e),this.addComponentOrReplace(e)),e},t.prototype.addComponent=function(t){if("object"!=typeof t)throw new Error("Entity#add(component): You passed a function or class as a component, an instance of component is expected");var e=o.getComponentName(t),n=o.getComponentClassId(t);if(this.components[e])throw new Error('A component of type "'+e+'" is already present in entity "'+this.identifier+'"');this.components[e]=t,this.eventManager&&this.eventManager.fireEvent(new r.ComponentAdded(this,e,n));var i=t;return"function"==typeof i.addedToEntity&&i.addedToEntity(this),t},t.prototype.removeComponent=function(t,e){void 0===e&&(e=!0);var n=typeof t;if("string"!==n&&"function"!==n&&"object"!==n)throw new Error("Entity#remove(component): component is not a class, class or name");var s="string"===n?t:o.getComponentName(t),a=this.components[s];if(a){if("function"===n)return a instanceof t?(delete this.components[s],void(a&&(e&&this.eventManager&&this.eventManager.fireEvent(new r.ComponentRemoved(this,s,a)),"function"==typeof a.removedFromEntity&&a.removedFromEntity(this)))):void i.log('Entity Warning: Trying to remove wrong (by constructor) component "'+s+'" from entity "'+this.identifier+'"');delete this.components[s],a&&(e&&this.eventManager&&this.eventManager.fireEvent(new r.ComponentRemoved(this,s,a)),"function"==typeof a.removedFromEntity&&a.removedFromEntity(this))}else i.log('Entity Warning: Trying to remove inexisting component "'+s+'" from entity "'+this.identifier+'"')},t.prototype.isAddedToEngine=function(){return!(!this.engine||!(this.uuid in this.engine.entities)&&this.engine.rootEntity!==this)},t.prototype.setParent=function(t){var e=!t&&this.engine?this.engine.rootEntity:t,n=this.getParent();if(e===this)throw new Error('Failed to set parent for entity "'+this.identifier+"\": An entity can't set itself as a its own parent");if(e===n)return this;var o=this.getCircularAncestor(e);if(o)throw new Error('Failed to set parent for entity "'+this.identifier+'": Circular parent references are not allowed (See entity "'+o+'")');return n&&delete n.children[this.uuid],null!==e&&"0"!==e.uuid&&(!e.isAddedToEngine()&&this.isAddedToEngine()&&this.engine.removeEntity(this),e.isAddedToEngine()&&!this.isAddedToEngine()&&e.engine.addEntity(this)),this._parent=e||null,this.registerAsChild(),this.eventManager&&this.engine&&this.eventManager.fireEvent(new r.ParentChanged(this,e)),this},t.prototype.getParent=function(){return this._parent},Object.defineProperty(t.prototype,"identifier",{get:function(){return this.name||this.uuid},enumerable:!0,configurable:!0}),t.prototype.getCircularAncestor=function(t){for(var e=this.engine?this.engine.rootEntity:null,n=t;n&&n!==e;){var o=n.getParent();if(o===this)return n.uuid;n=o}return null},t.prototype.registerAsChild=function(){var t=this.getParent();this.uuid&&t&&(t.children[this.uuid]=this)},t}();e.Entity=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=Promise.resolve().then.bind(Promise.resolve());e.executeTask=function(t){var e=r(t);return e.isComplete=!1,e.then((function(t){e.isComplete=!0,e.result=t,e.didFail=!1})).catch((function(t){e.isComplete=!0,e.error=t,e.didFail=!0,o.error("executeTask: FAILED "+t.toString(),t)})),e}},function(t,e,n){"use strict";var o=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))((function(r,i){function s(t){try{p(o.next(t))}catch(t){i(t)}}function a(t){try{p(o.throw(t))}catch(t){i(t)}}function p(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,a)}p((o=o.apply(t,e||[])).next())}))},r=this&&this.__generator||function(t,e){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){s.label=i[1];break}if(6===i[0]&&s.label<r[1]){s.label=r[1],r=i;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(i);break}r[2]&&s.ops.pop(),s.trys.pop();continue}i=e.call(t,s)}catch(t){i=[6,t],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}},i=this&&this.__values||function(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],o=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0});var s=n(19),a=function(){function t(t,e,n,o){void 0===e&&(e=!1),this.initalize(t,e,n,o)}return t.prototype.initalize=function(t,e,n,o){return void 0===e&&(e=!1),this.mask=t,this.skipNextObservers=e,this.target=n,this.currentTarget=o,this},t}();e.ObserverEventState=a;var p=function(t,e,n){void 0===n&&(n=null),this.callback=t,this.mask=e,this.scope=n,this.unregisterOnNextCall=!1,this._willBeUnregistered=!1};e.Observer=p;var u=function(){function t(){this._observers=null,this._observables=null}return t.Watch=function(e,n,o,r){var s,a;void 0===o&&(o=-1),void 0===r&&(r=null);var p=new t;p._observers=new Array,p._observables=e;try{for(var u=i(e),l=u.next();!l.done;l=u.next()){var c=l.value.add(n,o,!1,r);c&&p._observers.push(c)}}catch(t){s={error:t}}finally{try{l&&!l.done&&(a=u.return)&&a.call(u)}finally{if(s)throw s.error}}return p},t.prototype.dispose=function(){if(this._observers&&this._observables)for(var t=0;t<this._observers.length;t++)this._observables[t].remove(this._observers[t]);this._observers=null,this._observables=null},t}();e.MultiObserver=u;var l=function(){function t(t){this._observers=new Array,this._onObserverAdded=null,this._eventState=new a(0),t&&(this._onObserverAdded=t)}return t.prototype.add=function(t,e,n,o,r){if(void 0===e&&(e=-1),void 0===n&&(n=!1),void 0===o&&(o=null),void 0===r&&(r=!1),!t)return null;var i=new p(t,e,o);return i.unregisterOnNextCall=r,n?this._observers.unshift(i):this._observers.push(i),this._onObserverAdded&&this._onObserverAdded(i),i},t.prototype.addOnce=function(t){return this.add(t,void 0,void 0,void 0,!0)},t.prototype.remove=function(t){return!!t&&(-1!==this._observers.indexOf(t)&&(this._deferUnregister(t),!0))},t.prototype.removeCallback=function(t,e){for(var n=0;n<this._observers.length;n++)if(this._observers[n].callback===t&&(!e||e===this._observers[n].scope))return this._deferUnregister(this._observers[n]),!0;return!1},t.prototype.notifyObservers=function(t,e,n,o){var r,s;if(void 0===e&&(e=-1),!this._observers.length)return!0;var a=this._eventState;a.mask=e,a.target=n,a.currentTarget=o,a.skipNextObservers=!1,a.lastReturnValue=t;try{for(var p=i(this._observers),u=p.next();!u.done;u=p.next()){var l=u.value;if(!l._willBeUnregistered&&(l.mask&e&&(l.scope?a.lastReturnValue=l.callback.apply(l.scope,[t,a]):a.lastReturnValue=l.callback(t,a),l.unregisterOnNextCall&&this._deferUnregister(l)),a.skipNextObservers))return!1}}catch(t){r={error:t}}finally{try{u&&!u.done&&(s=p.return)&&s.call(p)}finally{if(r)throw r.error}}return!0},t.prototype.notifyObserversWithPromise=function(t,e,n,o){var r=this;void 0===e&&(e=-1);var i=Promise.resolve(t);if(!this._observers.length)return i;var s=this._eventState;return s.mask=e,s.target=n,s.currentTarget=o,s.skipNextObservers=!1,this._observers.forEach((function(n){s.skipNextObservers||n._willBeUnregistered||n.mask&e&&(i=n.scope?i.then((function(e){return s.lastReturnValue=e,n.callback.apply(n.scope,[t,s])})):i.then((function(e){return s.lastReturnValue=e,n.callback(t,s)})),n.unregisterOnNextCall&&r._deferUnregister(n))})),i.then((function(){return t}))},t.prototype.notifyObserver=function(t,e,n){void 0===n&&(n=-1);var o=this._eventState;o.mask=n,o.skipNextObservers=!1,t.callback(e,o)},t.prototype.hasObservers=function(){return this._observers.length>0},t.prototype.clear=function(){this._observers=new Array,this._onObserverAdded=null},t.prototype.clone=function(){var e=new t;return e._observers=this._observers.slice(0),e},t.prototype.hasSpecificMask=function(t){var e,n;void 0===t&&(t=-1);try{for(var o=i(this._observers),r=o.next();!r.done;r=o.next()){var s=r.value;if(s.mask&t||s.mask===t)return!0}}catch(t){e={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}return!1},t.prototype._deferUnregister=function(t){var e=this;t.unregisterOnNextCall=!1,t._willBeUnregistered=!0,s.executeTask((function(){return o(e,void 0,void 0,(function(){return r(this,(function(e){return[2,this._remove(t)]}))}))}))},t.prototype._remove=function(t){if(!t)return!1;var e=this._observers.indexOf(t);return-1!==e&&(this._observers.splice(e,1),!0)},t}();e.Observable=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(6),i=n(3),s=function(){function t(t,e,n,o){this.x=t,this.y=e,this.z=n,this.w=o}return t.Add=function(e,n){return new t(e.x,e.y,e.z,e.w).addInPlace(n)},t.FromArray=function(e,n){return void 0===n&&(n=0),new t(e[n],e[n+1],e[n+2],e[n+3])},t.FromArrayToRef=function(t,e,n){n.x=t[e],n.y=t[e+1],n.z=t[e+2],n.w=t[e+3]},t.FromFloatArrayToRef=function(e,n,o){t.FromArrayToRef(e,n,o)},t.FromFloatsToRef=function(t,e,n,o,r){r.x=t,r.y=e,r.z=n,r.w=o},t.Zero=function(){return new t(0,0,0,0)},t.One=function(){return new t(1,1,1,1)},t.Normalize=function(e){var n=t.Zero();return t.NormalizeToRef(e,n),n},t.NormalizeToRef=function(t,e){e.copyFrom(t),e.normalize()},t.Minimize=function(e,n){var o=new t(e.x,e.y,e.z,e.w);return o.minimizeInPlace(n),o},t.Maximize=function(e,n){var o=new t(e.x,e.y,e.z,e.w);return o.maximizeInPlace(n),o},t.Distance=function(e,n){return Math.sqrt(t.DistanceSquared(e,n))},t.DistanceSquared=function(t,e){var n=t.x-e.x,o=t.y-e.y,r=t.z-e.z,i=t.w-e.w;return n*n+o*o+r*r+i*i},t.Center=function(e,n){var o=t.Add(e,n);return o.scaleInPlace(.5),o},t.TransformNormal=function(e,n){var o=t.Zero();return t.TransformNormalToRef(e,n,o),o},t.TransformNormalToRef=function(t,e,n){var o=e.m,r=t.x*o[0]+t.y*o[4]+t.z*o[8],i=t.x*o[1]+t.y*o[5]+t.z*o[9],s=t.x*o[2]+t.y*o[6]+t.z*o[10];n.x=r,n.y=i,n.z=s,n.w=t.w},t.TransformNormalFromFloatsToRef=function(t,e,n,o,r,i){var s=r.m;i.x=t*s[0]+e*s[4]+n*s[8],i.y=t*s[1]+e*s[5]+n*s[9],i.z=t*s[2]+e*s[6]+n*s[10],i.w=o},t.prototype.toString=function(){return"{X: "+this.x+" Y:"+this.y+" Z:"+this.z+" W:"+this.w+"}"},t.prototype.getClassName=function(){return"Vector4"},t.prototype.getHashCode=function(){var t=this.x||0;return t=397*(t=397*(t=397*t^(this.y||0))^(this.z||0))^(this.w||0)},t.prototype.asArray=function(){var t=new Array;return this.toArray(t,0),t},t.prototype.toArray=function(t,e){return void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,this},t.prototype.addInPlace=function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this},t.prototype.add=function(e){return new t(this.x+e.x,this.y+e.y,this.z+e.z,this.w+e.w)},t.prototype.addToRef=function(t,e){return e.x=this.x+t.x,e.y=this.y+t.y,e.z=this.z+t.z,e.w=this.w+t.w,this},t.prototype.subtractInPlace=function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this},t.prototype.subtract=function(e){return new t(this.x-e.x,this.y-e.y,this.z-e.z,this.w-e.w)},t.prototype.subtractToRef=function(t,e){return e.x=this.x-t.x,e.y=this.y-t.y,e.z=this.z-t.z,e.w=this.w-t.w,this},t.prototype.subtractFromFloats=function(e,n,o,r){return new t(this.x-e,this.y-n,this.z-o,this.w-r)},t.prototype.subtractFromFloatsToRef=function(t,e,n,o,r){return r.x=this.x-t,r.y=this.y-e,r.z=this.z-n,r.w=this.w-o,this},t.prototype.negate=function(){return new t(-this.x,-this.y,-this.z,-this.w)},t.prototype.scaleInPlace=function(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},t.prototype.scale=function(e){return new t(this.x*e,this.y*e,this.z*e,this.w*e)},t.prototype.scaleToRef=function(t,e){return e.x=this.x*t,e.y=this.y*t,e.z=this.z*t,e.w=this.w*t,this},t.prototype.scaleAndAddToRef=function(t,e){return e.x+=this.x*t,e.y+=this.y*t,e.z+=this.z*t,e.w+=this.w*t,this},t.prototype.equals=function(t){return t&&this.x===t.x&&this.y===t.y&&this.z===t.z&&this.w===t.w},t.prototype.equalsWithEpsilon=function(t,e){return void 0===e&&(e=o.Epsilon),t&&r.Scalar.WithinEpsilon(this.x,t.x,e)&&r.Scalar.WithinEpsilon(this.y,t.y,e)&&r.Scalar.WithinEpsilon(this.z,t.z,e)&&r.Scalar.WithinEpsilon(this.w,t.w,e)},t.prototype.equalsToFloats=function(t,e,n,o){return this.x===t&&this.y===e&&this.z===n&&this.w===o},t.prototype.multiplyInPlace=function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this},t.prototype.multiply=function(e){return new t(this.x*e.x,this.y*e.y,this.z*e.z,this.w*e.w)},t.prototype.multiplyToRef=function(t,e){return e.x=this.x*t.x,e.y=this.y*t.y,e.z=this.z*t.z,e.w=this.w*t.w,this},t.prototype.multiplyByFloats=function(e,n,o,r){return new t(this.x*e,this.y*n,this.z*o,this.w*r)},t.prototype.divide=function(e){return new t(this.x/e.x,this.y/e.y,this.z/e.z,this.w/e.w)},t.prototype.divideToRef=function(t,e){return e.x=this.x/t.x,e.y=this.y/t.y,e.z=this.z/t.z,e.w=this.w/t.w,this},t.prototype.divideInPlace=function(t){return this.divideToRef(t,this)},t.prototype.minimizeInPlace=function(t){return t.x<this.x&&(this.x=t.x),t.y<this.y&&(this.y=t.y),t.z<this.z&&(this.z=t.z),t.w<this.w&&(this.w=t.w),this},t.prototype.maximizeInPlace=function(t){return t.x>this.x&&(this.x=t.x),t.y>this.y&&(this.y=t.y),t.z>this.z&&(this.z=t.z),t.w>this.w&&(this.w=t.w),this},t.prototype.floor=function(){return new t(Math.floor(this.x),Math.floor(this.y),Math.floor(this.z),Math.floor(this.w))},t.prototype.fract=function(){return new t(this.x-Math.floor(this.x),this.y-Math.floor(this.y),this.z-Math.floor(this.z),this.w-Math.floor(this.w))},t.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},t.prototype.lengthSquared=function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},t.prototype.normalize=function(){var t=this.length();return 0===t?this:this.scaleInPlace(1/t)},t.prototype.toVector3=function(){return new i.Vector3(this.x,this.y,this.z)},t.prototype.clone=function(){return new t(this.x,this.y,this.z,this.w)},t.prototype.copyFrom=function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w,this},t.prototype.copyFromFloats=function(t,e,n,o){return this.x=t,this.y=e,this.z=n,this.w=o,this},t.prototype.set=function(t,e,n,o){return this.copyFromFloats(t,e,n,o)},t.prototype.setAll=function(t){return this.x=this.y=this.z=this.w=t,this},t}();e.Vector4=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t){this._radians=t,this._radians<0&&(this._radians+=2*Math.PI)}return t.BetweenTwoPoints=function(e,n){var o=n.subtract(e);return new t(Math.atan2(o.y,o.x))},t.FromRadians=function(e){return new t(e)},t.FromDegrees=function(e){return new t(e*Math.PI/180)},t.prototype.degrees=function(){return 180*this._radians/Math.PI},t.prototype.radians=function(){return this._radians},t}();e.Angle=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(22),r=n(14),i=n(2),s=function(t,e,n){this.startPoint=t,this.midPoint=e,this.endPoint=n;var s=Math.pow(e.x,2)+Math.pow(e.y,2),a=(Math.pow(t.x,2)+Math.pow(t.y,2)-s)/2,p=(s-Math.pow(n.x,2)-Math.pow(n.y,2))/2,u=(t.x-e.x)*(e.y-n.y)-(e.x-n.x)*(t.y-e.y);this.centerPoint=new r.Vector2((a*(e.y-n.y)-p*(t.y-e.y))/u,((t.x-e.x)*p-(e.x-n.x)*a)/u),this.radius=this.centerPoint.subtract(this.startPoint).length(),this.startAngle=o.Angle.BetweenTwoPoints(this.centerPoint,this.startPoint);var l=this.startAngle.degrees(),c=o.Angle.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),h=o.Angle.BetweenTwoPoints(this.centerPoint,this.endPoint).degrees();c-l>180&&(c-=360),c-l<-180&&(c+=360),h-c>180&&(h-=360),h-c<-180&&(h+=360),this.orientation=c-l<0?i.Orientation.CW:i.Orientation.CCW,this.angle=o.Angle.FromDegrees(this.orientation===i.Orientation.CW?l-h:h-l)};e.Arc2=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(6),r=n(2),i=function(){function t(t,e,n,o){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),void 0===o&&(o=1),this.r=t,this.g=e,this.b=n,this.a=o}return t.FromHexString=function(e){if("#"!==e.substring(0,1)||9!==e.length)return new t(0,0,0,0);var n=parseInt(e.substring(1,3),16),o=parseInt(e.substring(3,5),16),r=parseInt(e.substring(5,7),16),i=parseInt(e.substring(7,9),16);return t.FromInts(n,o,r,i)},t.Lerp=function(e,n,o){var r=new t(0,0,0,0);return t.LerpToRef(e,n,o,r),r},t.LerpToRef=function(t,e,n,o){o.r=t.r+(e.r-t.r)*n,o.g=t.g+(e.g-t.g)*n,o.b=t.b+(e.b-t.b)*n,o.a=t.a+(e.a-t.a)*n},t.Red=function(){return new t(1,0,0,1)},t.Green=function(){return new t(0,1,0,1)},t.Blue=function(){return new t(0,0,1,1)},t.Black=function(){return new t(0,0,0,1)},t.White=function(){return new t(1,1,1,1)},t.Purple=function(){return new t(.5,0,.5,1)},t.Magenta=function(){return new t(1,0,1,1)},t.Yellow=function(){return new t(1,1,0,1)},t.Gray=function(){return new t(.5,.5,.5,1)},t.Teal=function(){return new t(0,1,1,1)},t.Clear=function(){return new t(0,0,0,0)},t.FromColor3=function(e,n){return void 0===n&&(n=1),new t(e.r,e.g,e.b,n)},t.FromArray=function(e,n){return void 0===n&&(n=0),new t(e[n],e[n+1],e[n+2],e[n+3])},t.FromInts=function(e,n,o,r){return new t(e/255,n/255,o/255,r/255)},t.CheckColors4=function(t,e){if(t.length===3*e){for(var n=[],o=0;o<t.length;o+=3){var r=o/3*4;n[r]=t[o],n[r+1]=t[o+1],n[r+2]=t[o+2],n[r+3]=1}return n}return t},t.prototype.addInPlace=function(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this.a+=t.a,this},t.prototype.asArray=function(){var t=new Array;return this.toArray(t,0),t},t.prototype.toArray=function(t,e){return void 0===e&&(e=0),t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t[e+3]=this.a,this},t.prototype.add=function(e){return new t(this.r+e.r,this.g+e.g,this.b+e.b,this.a+e.a)},t.prototype.subtract=function(e){return new t(this.r-e.r,this.g-e.g,this.b-e.b,this.a-e.a)},t.prototype.subtractToRef=function(t,e){return e.r=this.r-t.r,e.g=this.g-t.g,e.b=this.b-t.b,e.a=this.a-t.a,this},t.prototype.scale=function(e){return new t(this.r*e,this.g*e,this.b*e,this.a*e)},t.prototype.scaleToRef=function(t,e){return e.r=this.r*t,e.g=this.g*t,e.b=this.b*t,e.a=this.a*t,this},t.prototype.scaleAndAddToRef=function(t,e){return e.r+=this.r*t,e.g+=this.g*t,e.b+=this.b*t,e.a+=this.a*t,this},t.prototype.clampToRef=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=1),n.r=o.Scalar.Clamp(this.r,t,e),n.g=o.Scalar.Clamp(this.g,t,e),n.b=o.Scalar.Clamp(this.b,t,e),n.a=o.Scalar.Clamp(this.a,t,e),this},t.prototype.multiply=function(e){return new t(this.r*e.r,this.g*e.g,this.b*e.b,this.a*e.a)},t.prototype.multiplyToRef=function(t,e){return e.r=this.r*t.r,e.g=this.g*t.g,e.b=this.b*t.b,e.a=this.a*t.a,e},t.prototype.toString=function(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+" A:"+this.a+"}"},t.prototype.getClassName=function(){return"Color4"},t.prototype.getHashCode=function(){var t=this.r||0;return t=397*(t=397*(t=397*t^(this.g||0))^(this.b||0))^(this.a||0)},t.prototype.clone=function(){return new t(this.r,this.g,this.b,this.a)},t.prototype.copyFrom=function(t){return this.r=t.r,this.g=t.g,this.b=t.b,this.a=t.a,this},t.prototype.copyFromFloats=function(t,e,n,o){return this.r=t,this.g=e,this.b=n,this.a=o,this},t.prototype.set=function(t,e,n,o){return this.copyFromFloats(t,e,n,o)},t.prototype.toHexString=function(){var t=255*this.r|0,e=255*this.g|0,n=255*this.b|0,r=255*this.a|0;return"#"+o.Scalar.ToHex(t)+o.Scalar.ToHex(e)+o.Scalar.ToHex(n)+o.Scalar.ToHex(r)},t.prototype.toLinearSpace=function(){var e=new t;return this.toLinearSpaceToRef(e),e},t.prototype.toLinearSpaceToRef=function(t){return t.r=Math.pow(this.r,r.ToLinearSpace),t.g=Math.pow(this.g,r.ToLinearSpace),t.b=Math.pow(this.b,r.ToLinearSpace),t.a=this.a,this},t.prototype.toGammaSpace=function(){var e=new t;return this.toGammaSpaceToRef(e),e},t.prototype.toGammaSpaceToRef=function(t){return t.r=Math.pow(this.r,r.ToGammaSpace),t.g=Math.pow(this.g,r.ToGammaSpace),t.b=Math.pow(this.b,r.ToGammaSpace),t.a=this.a,this},t}();e.Color4=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(11),i=n(9),s=function(){function t(t,e,n,r){this.normal=new o.Vector3(t,e,n),this.d=r}return t.FromArray=function(e){return new t(e[0],e[1],e[2],e[3])},t.FromPoints=function(e,n,o){var r=new t(0,0,0,0);return r.copyFromPoints(e,n,o),r},t.FromPositionAndNormal=function(e,n){var o=new t(0,0,0,0);return n.normalize(),o.normal=n,o.d=-(n.x*e.x+n.y*e.y+n.z*e.z),o},t.SignedDistanceToPlaneFromPositionAndNormal=function(t,e,n){var r=-(e.x*t.x+e.y*t.y+e.z*t.z);return o.Vector3.Dot(n,e)+r},t.prototype.asArray=function(){return[this.normal.x,this.normal.y,this.normal.z,this.d]},t.prototype.clone=function(){return new t(this.normal.x,this.normal.y,this.normal.z,this.d)},t.prototype.getClassName=function(){return"Plane"},t.prototype.getHashCode=function(){var t=this.normal.getHashCode();return t=397*t^(this.d||0)},t.prototype.normalize=function(){var t=Math.sqrt(this.normal.x*this.normal.x+this.normal.y*this.normal.y+this.normal.z*this.normal.z),e=0;return 0!==t&&(e=1/t),this.normal.x*=e,this.normal.y*=e,this.normal.z*=e,this.d*=e,this},t.prototype.transform=function(e){var n=i.MathTmp.Matrix[0];r.Matrix.TransposeToRef(e,n);var o=n.m,s=this.normal.x,a=this.normal.y,p=this.normal.z,u=this.d;return new t(s*o[0]+a*o[1]+p*o[2]+u*o[3],s*o[4]+a*o[5]+p*o[6]+u*o[7],s*o[8]+a*o[9]+p*o[10]+u*o[11],s*o[12]+a*o[13]+p*o[14]+u*o[15])},t.prototype.dotCoordinate=function(t){return this.normal.x*t.x+this.normal.y*t.y+this.normal.z*t.z+this.d},t.prototype.copyFromPoints=function(t,e,n){var o,r=e.x-t.x,i=e.y-t.y,s=e.z-t.z,a=n.x-t.x,p=n.y-t.y,u=n.z-t.z,l=i*u-s*p,c=s*a-r*u,h=r*p-i*a,f=Math.sqrt(l*l+c*c+h*h);return o=0!==f?1/f:0,this.normal.x=l*o,this.normal.y=c*o,this.normal.z=h*o,this.d=-(this.normal.x*t.x+this.normal.y*t.y+this.normal.z*t.z),this},t.prototype.isFrontFacingTo=function(t,e){return o.Vector3.Dot(this.normal,t)<=e},t.prototype.signedDistanceTo=function(t){return o.Vector3.Dot(t,this.normal)+this.d},t}();e.Plane=s},function(t,e,n){"use strict";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)},s=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var a=n(0),p=n(1),u={looping:!0,speed:1,weight:1},l=function(t){function e(e,n){void 0===n&&(n=u);var o=t.call(this)||this;return o.isAnimationClip=!0,o.looping=u.looping,o.weight=u.weight,o.playing=!1,o.shouldReset=!1,o.speed=u.speed,o.name=p.newId("AnimClip"),o.clip=e,o.setParams(i({},n)),o}return r(e,t),e.prototype.setParams=function(t){return this.looping=void 0!==t.looping?t.looping:this.looping,this.speed=t.speed||this.speed,this},e.prototype.toJSON=function(){var e=JSON.parse(JSON.stringify(t.prototype.toJSON.call(this)));return this.shouldReset&&(this.shouldReset=!1),e},e.prototype.play=function(){this.playing=!0},e.prototype.pause=function(){this.playing=!1},e.prototype.reset=function(){this.shouldReset=!0},e.prototype.stop=function(){this.reset(),this.pause()},s([a.ObservableComponent.readonly],e.prototype,"clip",void 0),s([a.ObservableComponent.field],e.prototype,"looping",void 0),s([a.ObservableComponent.field],e.prototype,"weight",void 0),s([a.ObservableComponent.field],e.prototype,"playing",void 0),s([a.ObservableComponent.field],e.prototype,"shouldReset",void 0),s([a.ObservableComponent.field],e.prototype,"speed",void 0),s([a.ObservableComponent.readonly],e.prototype,"name",void 0),e}(a.ObservableComponent);e.AnimationState=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.DOWN=0]="DOWN",t[t.UP=1]="UP"}(e.InputEventType||(e.InputEventType={})),e.AVATAR_OBSERVABLE="AVATAR_OBSERVABLE"},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o,r=n(5),i=n(1),s=n(29);!function(t){t.HitFirst="rqhf",t.HitAll="rqha"}(o||(o={}));var a=function(){function t(){this.queries={}}return Object.defineProperty(t,"instance",{get:function(){return t.ensureInstance(),t._instance},enumerable:!0,configurable:!0}),t.ensureInstance=function(){t._instance||(t._instance=new t)},t.prototype.getRayFromCamera=function(t){var e=s.Camera.instance.rotation,n=r.Matrix.Identity();e.toRotationMatrix(n);var o=r.Vector3.TransformCoordinates(r.Vector3.Forward(),n);return{origin:s.Camera.instance.position,direction:o,distance:t}},t.prototype.getRayFromPositions=function(t,e){var n=e.subtract(t),o=n.length();return{origin:t,direction:n.normalize(),distance:o}},t.prototype.hitFirst=function(t,e,n){var r="number"==typeof n?o.HitFirst+n:i.uuid();this.queries[r]=e,dcl&&dcl.query("raycast",{queryId:r,queryType:"HitFirst",ray:t})},t.prototype.hitAll=function(t,e,n){var r="number"==typeof n?o.HitAll+n:i.uuid();this.queries[r]=e,dcl&&dcl.query("raycast",{queryId:r,queryType:"HitAll",ray:t})},t.prototype.hitFirstAvatar=function(t,e){i.log("not implemented yet")},t.prototype.hitAllAvatars=function(t,e){i.log("not implemented yet")},t.prototype.handleRaycastHitFirstResponse=function(t){this.queries[t.payload.queryId](t.payload.payload),delete this.queries[t.payload.queryId]},t.prototype.handleRaycastHitAllResponse=function(t){this.queries[t.payload.queryId](t.payload.payload),delete this.queries[t.payload.queryId]},t}();e.PhysicsCast=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=function(){function t(){var t=this;this.position=new o.Vector3,this.rotation=new o.Quaternion,this.feetPosition=new o.Vector3,this.worldPosition=new o.Vector3,this.lastEventPosition={x:0,y:0,z:0},this.lastEventWorldPosition={x:0,y:0,z:0},this.lastEventRotation={x:0,y:0,z:0,w:1},this._playerHeight=1.6,"undefined"!=typeof dcl&&(dcl.subscribe("positionChanged"),dcl.subscribe("rotationChanged"),dcl.onEvent((function(e){switch(e.type){case"positionChanged":t.positionChanged(e.data);break;case"rotationChanged":t.rotationChanged(e.data)}}))),Object.defineProperty(this.position,"x",{get:function(){return t.lastEventPosition.x}}),Object.defineProperty(this.position,"y",{get:function(){return t.lastEventPosition.y}}),Object.defineProperty(this.position,"z",{get:function(){return t.lastEventPosition.z}}),Object.defineProperty(this.worldPosition,"x",{get:function(){return t.lastEventWorldPosition.x}}),Object.defineProperty(this.worldPosition,"y",{get:function(){return t.lastEventWorldPosition.y}}),Object.defineProperty(this.worldPosition,"z",{get:function(){return t.lastEventWorldPosition.z}}),Object.defineProperty(this.feetPosition,"x",{get:function(){return t.lastEventPosition.x}}),Object.defineProperty(this.feetPosition,"y",{get:function(){return t.lastEventPosition.y-t.playerHeight}}),Object.defineProperty(this.feetPosition,"z",{get:function(){return t.lastEventPosition.z}}),Object.defineProperty(this.rotation,"x",{get:function(){return t.lastEventRotation.x}}),Object.defineProperty(this.rotation,"y",{get:function(){return t.lastEventRotation.y}}),Object.defineProperty(this.rotation,"z",{get:function(){return t.lastEventRotation.z}}),Object.defineProperty(this.rotation,"w",{get:function(){return t.lastEventRotation.w}})}return Object.defineProperty(t,"instance",{get:function(){return t._instance||(t._instance=new t),t._instance},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"playerHeight",{get:function(){return this._playerHeight},enumerable:!0,configurable:!0}),t.prototype.positionChanged=function(t){this.lastEventPosition=t.position,this.lastEventWorldPosition=t.cameraPosition,this._playerHeight=t.playerHeight},t.prototype.rotationChanged=function(t){this.lastEventRotation=t.quaternion},t}();e.Camera=r},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(16)),o(n(0)),o(n(18)),o(n(7)),o(n(19)),o(n(1)),o(n(20)),o(n(17)),o(n(8));var r=n(32),i=n(16),s=new(n(18).Entity)("scene");s.uuid="0";var a=new i.Engine(s);e.engine=a,n(0).DisposableComponent.engine=a,"undefined"!=typeof dcl&&a.addSystem(new r.DecentralandSynchronizationSystem(dcl),1/0);var p=n(13);a.addSystem(p.uuidEventSystem),a.addSystem(p.pointerEventSystem),a.addSystem(p.raycastEventSystem),o(n(27)),o(n(4)),o(n(13)),o(n(12)),o(n(29)),o(n(5)),o(n(26)),o(n(15)),o(n(41)),o(n(42)),o(n(43)),o(n(44)),o(n(45)),o(n(46)),o(n(28))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=function(){function t(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(this.entities=[],this.active=!1,this._requiresNames=[],!t)throw new Error("ComponentGroup: Could not load the requires list");if(!(t instanceof Array))throw new Error("ComponentGroup: requires list is not an Array");Object.defineProperty(this,"requires",{get:function(){return t.slice()}}),Object.defineProperty(this,"requiresNames",{get:function(){return this._requiresNames.slice()}});for(var n=function(e){var n=t[e],i=null;if(!n)throw new Error("ComponentGroup: the required component at location "+e+" is invalid");try{i=o.getComponentName(n)}catch(t){throw new Error("ComponentGroup: the required component at location "+e+" is not registered as a @Component. Remember to provide the class of the component, not the name")}if(r._requiresNames.some((function(t){return t===i})))throw new Error("ComponentGroup: the required component list has a repeated name "+i);r._requiresNames.push(i)},r=this,i=0;i<t.length;i++)n(i)}return t.prototype.hasEntity=function(t){return!!t.isAddedToEngine()&&-1!==this.entities.indexOf(t)},t.prototype.addEntity=function(t){if(!t.isAddedToEngine())throw new TypeError("ComponentGroup: Cannot add a entity that is not added to the engine");-1===this.entities.indexOf(t)&&this.entities.push(t)},t.prototype.removeEntity=function(t){var e=this.entities.indexOf(t);-1!==e&&this.entities.splice(e,1)},t.prototype.componentRemoved=function(t,e){-1!==this._requiresNames.indexOf(e)&&this.removeEntity(t)},t.prototype.meetsRequirements=function(t){for(var e=0;e<this._requiresNames.length;e++){if(!(this._requiresNames[e]in t.components))return!1}return!0},t}();e.ComponentGroup=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=n(7),i=n(12),s=function(){function t(t){this.dcl=t,this.cachedComponents={}}return t.prototype.activate=function(t){var e=this;this.engine=t,t.eventManager.addListener(r.ComponentAdded,this,this.componentAdded),t.eventManager.addListener(r.ComponentRemoved,this,this.componentRemoved),t.eventManager.addListener(o.DisposableComponentCreated,this,this.disposableComponentCreated),t.eventManager.addListener(o.DisposableComponentRemoved,this,this.disposableComponentRemoved),t.eventManager.addListener(o.DisposableComponentUpdated,this,this.disposableComponentUpdated),t.eventManager.addListener(r.ParentChanged,this,this.parentChanged);var n=t.rootEntity.uuid;this.dcl.addEntity(n),this.dcl.onUpdate((function(n){t.update(n),e.presentEntities()})),this.dcl.onEvent((function(e){var n=e.data;switch(e.type){case"uuidEvent":t.eventManager.fireEvent(new i.UUIDEvent(n.uuid,n.payload));break;case"raycastResponse":("HitFirst"===n.queryType||"HitAll"===n.queryType)&&t.eventManager.fireEvent(new i.RaycastResponse(n));break;case"pointerEvent":t.eventManager.fireEvent(new i.PointerEvent(n.payload))}}))},t.prototype.onAddEntity=function(t){if(t&&t.isAddedToEngine()){var e=t.uuid,n=t.getParent();for(var r in this.dcl.addEntity(e),n&&this.dcl.setParent(e,n.uuid),this.cachedComponents[e]={},t.components){var i=t.components[r],s=o.getComponentClassId(i);if(null!==s)if(o.isDisposableComponent(i))this.dcl.attachEntityComponent(t.uuid,r,o.getComponentId(i));else{var a=JSON.stringify(i);this.dcl.updateEntityComponent(e,r,s,a),this.cachedComponents[e][r]=a}}}},t.prototype.onRemoveEntity=function(t){if(t.isAddedToEngine()){var e=t.uuid;this.dcl.removeEntity(e),delete this.cachedComponents[e]}},t.prototype.presentEntities=function(){for(var t in this.engine.entities){var e=this.engine.entities[t];for(var n in e.components){var r=e.components[n],i=o.getComponentClassId(r);if(null!==i&&!o.isDisposableComponent(r)){var s=this.getJsonIfDirty(e.uuid,n,r);s&&(this.dcl.updateEntityComponent(e.uuid,n,i,s),this.clearDirty(e.uuid,n,r,s))}}}for(var a in this.engine.disposableComponents){(r=this.engine.disposableComponents[a])instanceof o.ObservableComponent&&r.dirty&&(this.dcl.componentUpdated(a,JSON.stringify(r)),r.dirty=!1)}},t.prototype.componentAdded=function(t){if(t.entity.isAddedToEngine()){var e=t.entity.components[t.componentName];if(o.isDisposableComponent(e))this.dcl.attachEntityComponent(t.entity.uuid,t.componentName,o.getComponentId(e));else if(null!==t.classId){var n=JSON.stringify(e);this.dcl.updateEntityComponent(t.entity.uuid,t.componentName,t.classId,n),this.cachedComponents[t.entity.uuid][t.componentName]=n}}},t.prototype.componentRemoved=function(t){t.entity.isAddedToEngine()&&(this.dcl.removeEntityComponent(t.entity.uuid,t.componentName),delete this.cachedComponents[t.entity.uuid][t.componentName])},t.prototype.disposableComponentCreated=function(t){this.dcl.componentCreated(t.componentId,t.componentName,t.classId)},t.prototype.disposableComponentRemoved=function(t){this.dcl.componentDisposed(t.componentId)},t.prototype.disposableComponentUpdated=function(t){this.dcl.componentUpdated(t.componentId,JSON.stringify(t.component))},t.prototype.parentChanged=function(t){this.dcl.setParent(t.entity.uuid,t.parent?t.parent.uuid:"0")},t.prototype.getJsonIfDirty=function(t,e,n){var o=JSON.stringify(n);return o!==this.cachedComponents[t][e]&&o},t.prototype.clearDirty=function(t,e,n,o){this.cachedComponents[t][e]=o},t}();e.DecentralandSynchronizationSystem=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=function(){function t(){}return t.X=new o.Vector3(1,0,0),t.Y=new o.Vector3(0,1,0),t.Z=new o.Vector3(0,0,1),t}();e.Axis=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(){}return t.Interpolate=function(t,e,n,o,r){for(var i=1-3*o+3*e,s=3*o-6*e,a=3*e,p=t,u=0;u<5;u++){var l=p*p;p-=(i*(l*p)+s*l+a*p-t)*(1/(3*i*l+2*s*p+a)),p=Math.min(1,Math.max(0,p))}return 3*Math.pow(1-p,2)*p*n+3*(1-p)*Math.pow(p,2)*r+Math.pow(p,3)},t}();e.BezierCurve=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(24),i=n(6),s=function(){function t(t,e,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===n&&(n=0),this.r=t,this.g=e,this.b=n}return t.FromHexString=function(e){if("#"!==e.substring(0,1)||7!==e.length)return new t(0,0,0);var n=parseInt(e.substring(1,3),16),o=parseInt(e.substring(3,5),16),r=parseInt(e.substring(5,7),16);return t.FromInts(n,o,r)},t.FromArray=function(e,n){return void 0===n&&(n=0),new t(e[n],e[n+1],e[n+2])},t.FromInts=function(e,n,o){return new t(e/255,n/255,o/255)},t.Lerp=function(e,n,o){var r=new t(0,0,0);return t.LerpToRef(e,n,o,r),r},t.LerpToRef=function(t,e,n,o){o.r=t.r+(e.r-t.r)*n,o.g=t.g+(e.g-t.g)*n,o.b=t.b+(e.b-t.b)*n},t.Red=function(){return new t(1,0,0)},t.Green=function(){return new t(0,1,0)},t.Blue=function(){return new t(0,0,1)},t.Black=function(){return new t(0,0,0)},t.White=function(){return new t(1,1,1)},t.Purple=function(){return new t(.5,0,.5)},t.Magenta=function(){return new t(1,0,1)},t.Yellow=function(){return new t(1,1,0)},t.Gray=function(){return new t(.5,.5,.5)},t.Teal=function(){return new t(0,1,1)},t.Random=function(){return new t(Math.random(),Math.random(),Math.random())},t.prototype.toString=function(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+"}"},t.prototype.getClassName=function(){return"Color3"},t.prototype.getHashCode=function(){var t=this.r||0;return t=397*(t=397*t^(this.g||0))^(this.b||0)},t.prototype.toArray=function(t,e){return void 0===e&&(e=0),t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,this},t.prototype.toColor4=function(t){return void 0===t&&(t=1),new r.Color4(this.r,this.g,this.b,t)},t.prototype.asArray=function(){var t=new Array;return this.toArray(t,0),t},t.prototype.toLuminance=function(){return.3*this.r+.59*this.g+.11*this.b},t.prototype.multiply=function(e){return new t(this.r*e.r,this.g*e.g,this.b*e.b)},t.prototype.multiplyToRef=function(t,e){return e.r=this.r*t.r,e.g=this.g*t.g,e.b=this.b*t.b,this},t.prototype.equals=function(t){return t&&this.r===t.r&&this.g===t.g&&this.b===t.b},t.prototype.equalsFloats=function(t,e,n){return this.r===t&&this.g===e&&this.b===n},t.prototype.scale=function(e){return new t(this.r*e,this.g*e,this.b*e)},t.prototype.scaleToRef=function(t,e){return e.r=this.r*t,e.g=this.g*t,e.b=this.b*t,this},t.prototype.scaleAndAddToRef=function(t,e){return e.r+=this.r*t,e.g+=this.g*t,e.b+=this.b*t,this},t.prototype.clampToRef=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=1),n.r=i.Scalar.Clamp(this.r,t,e),n.g=i.Scalar.Clamp(this.g,t,e),n.b=i.Scalar.Clamp(this.b,t,e),this},t.prototype.add=function(e){return new t(this.r+e.r,this.g+e.g,this.b+e.b)},t.prototype.addToRef=function(t,e){return e.r=this.r+t.r,e.g=this.g+t.g,e.b=this.b+t.b,this},t.prototype.subtract=function(e){return new t(this.r-e.r,this.g-e.g,this.b-e.b)},t.prototype.subtractToRef=function(t,e){return e.r=this.r-t.r,e.g=this.g-t.g,e.b=this.b-t.b,this},t.prototype.clone=function(){return new t(this.r,this.g,this.b)},t.prototype.copyFrom=function(t){return this.r=t.r,this.g=t.g,this.b=t.b,this},t.prototype.copyFromFloats=function(t,e,n){return this.r=t,this.g=e,this.b=n,this},t.prototype.set=function(t,e,n){return this.copyFromFloats(t,e,n)},t.prototype.toHexString=function(){var t=255*this.r|0,e=255*this.g|0,n=255*this.b|0;return"#"+i.Scalar.ToHex(t)+i.Scalar.ToHex(e)+i.Scalar.ToHex(n)},t.prototype.toLinearSpace=function(){var e=new t;return this.toLinearSpaceToRef(e),e},t.prototype.toLinearSpaceToRef=function(t){return t.r=Math.pow(this.r,o.ToLinearSpace),t.g=Math.pow(this.g,o.ToLinearSpace),t.b=Math.pow(this.b,o.ToLinearSpace),this},t.prototype.toGammaSpace=function(){var e=new t;return this.toGammaSpaceToRef(e),e},t.prototype.toGammaSpaceToRef=function(t){return t.r=Math.pow(this.r,o.ToGammaSpace),t.g=Math.pow(this.g,o.ToGammaSpace),t.b=Math.pow(this.b,o.ToGammaSpace),this},t.prototype.toJSON=function(){return{r:this.r,g:this.g,b:this.b}},t}();e.Color3=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=function(){function t(t){this._length=0,this._points=t,this._length=this._computeLength(t)}return t.CreateQuadraticBezier=function(e,n,r,i){i=i>2?i:3;for(var s=new Array,a=function(t,e,n,o){return(1-t)*(1-t)*e+2*t*(1-t)*n+t*t*o},p=0;p<=i;p++)s.push(new o.Vector3(a(p/i,e.x,n.x,r.x),a(p/i,e.y,n.y,r.y),a(p/i,e.z,n.z,r.z)));return new t(s)},t.CreateCubicBezier=function(e,n,r,i,s){s=s>3?s:4;for(var a=new Array,p=function(t,e,n,o,r){return(1-t)*(1-t)*(1-t)*e+3*t*(1-t)*(1-t)*n+3*t*t*(1-t)*o+t*t*t*r},u=0;u<=s;u++)a.push(new o.Vector3(p(u/s,e.x,n.x,r.x,i.x),p(u/s,e.y,n.y,r.y,i.y),p(u/s,e.z,n.z,r.z,i.z)));return new t(a)},t.CreateHermiteSpline=function(e,n,r,i,s){for(var a=new Array,p=1/s,u=0;u<=s;u++)a.push(o.Vector3.Hermite(e,n,r,i,u*p));return new t(a)},t.CreateCatmullRomSpline=function(e,n,r){var i=new Array,s=1/n,a=0;if(r){for(var p=e.length,u=0;u<p;u++){a=0;for(var l=0;l<n;l++)i.push(o.Vector3.CatmullRom(e[u%p],e[(u+1)%p],e[(u+2)%p],e[(u+3)%p],a)),a+=s}i.push(i[0])}else{var c=new Array;c.push(e[0].clone()),Array.prototype.push.apply(c,e),c.push(e[e.length-1].clone());u=0;for(u=0;u<c.length-3;u++){a=0;for(l=0;l<n;l++)i.push(o.Vector3.CatmullRom(c[u],c[u+1],c[u+2],c[u+3],a)),a+=s}u--,i.push(o.Vector3.CatmullRom(c[u],c[u+1],c[u+2],c[u+3],a))}return new t(i)},t.prototype.getPoints=function(){return this._points},t.prototype.length=function(){return this._length},t.prototype.continue=function(e){for(var n=this._points[this._points.length-1],o=this._points.slice(),r=e.getPoints(),i=1;i<r.length;i++)o.push(r[i].subtract(r[0]).add(n));return new t(o)},t.prototype._computeLength=function(t){for(var e=0,n=1;n<t.length;n++)e+=t[n].subtract(t[n-1]).length();return e},t}();e.Curve3=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(25),r=function(){function t(){}return t.GetPlanes=function(e){for(var n=[],r=0;r<6;r++)n.push(new o.Plane(0,0,0,0));return t.GetPlanesToRef(e,n),n},t.GetNearPlaneToRef=function(t,e){var n=t.m;e.normal.x=n[3]+n[2],e.normal.y=n[7]+n[6],e.normal.z=n[11]+n[10],e.d=n[15]+n[14],e.normalize()},t.GetFarPlaneToRef=function(t,e){var n=t.m;e.normal.x=n[3]-n[2],e.normal.y=n[7]-n[6],e.normal.z=n[11]-n[10],e.d=n[15]-n[14],e.normalize()},t.GetLeftPlaneToRef=function(t,e){var n=t.m;e.normal.x=n[3]+n[0],e.normal.y=n[7]+n[4],e.normal.z=n[11]+n[8],e.d=n[15]+n[12],e.normalize()},t.GetRightPlaneToRef=function(t,e){var n=t.m;e.normal.x=n[3]-n[0],e.normal.y=n[7]-n[4],e.normal.z=n[11]-n[8],e.d=n[15]-n[12],e.normalize()},t.GetTopPlaneToRef=function(t,e){var n=t.m;e.normal.x=n[3]-n[1],e.normal.y=n[7]-n[5],e.normal.z=n[11]-n[9],e.d=n[15]-n[13],e.normalize()},t.GetBottomPlaneToRef=function(t,e){var n=t.m;e.normal.x=n[3]+n[1],e.normal.y=n[7]+n[5],e.normal.z=n[11]+n[9],e.d=n[15]+n[13],e.normalize()},t.GetPlanesToRef=function(e,n){t.GetNearPlaneToRef(e,n[0]),t.GetFarPlaneToRef(e,n[1]),t.GetLeftPlaneToRef(e,n[2]),t.GetRightPlaneToRef(e,n[3]),t.GetTopPlaneToRef(e,n[4]),t.GetBottomPlaneToRef(e,n[5])},t}();e.Frustum=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(14),r=n(23),i=n(2),s=function(){function t(t,e){this.closed=!1,this._points=new Array,this._length=0,this._points.push(new o.Vector2(t,e))}return t.StartingAt=function(e,n){return new t(e,n)},t.prototype.addLineTo=function(t,e){if(this.closed)return this;var n=new o.Vector2(t,e),r=this._points[this._points.length-1];return this._points.push(n),this._length+=n.subtract(r).length(),this},t.prototype.addArcTo=function(t,e,n,s,a){if(void 0===a&&(a=36),this.closed)return this;var p=this._points[this._points.length-1],u=new o.Vector2(t,e),l=new o.Vector2(n,s),c=new r.Arc2(p,u,l),h=c.angle.radians()/a;c.orientation===i.Orientation.CW&&(h*=-1);for(var f=c.startAngle.radians()+h,d=0;d<a;d++){var y=Math.cos(f)*c.radius+c.centerPoint.x,v=Math.sin(f)*c.radius+c.centerPoint.y;this.addLineTo(y,v),f+=h}return this},t.prototype.close=function(){return this.closed=!0,this},t.prototype.length=function(){var t=this._length;if(!this.closed){var e=this._points[this._points.length-1];t+=this._points[0].subtract(e).length()}return t},t.prototype.getPoints=function(){return this._points},t.prototype.getPointAtLengthPosition=function(t){if(t<0||t>1)return o.Vector2.Zero();for(var e=t*this.length(),n=0,r=0;r<this._points.length;r++){var i=(r+1)%this._points.length,s=this._points[r],a=this._points[i].subtract(s),p=a.length()+n;if(e>=n&&e<=p){var u=a.normalize(),l=e-n;return new o.Vector2(s.x+u.x*l,s.y+u.y*l)}n=p}return o.Vector2.Zero()},t}();e.Path2=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(2),i=n(6),s=function(){function t(t,e,n){void 0===e&&(e=null),this.path=t,this._curve=new Array,this._distances=new Array,this._tangents=new Array,this._normals=new Array,this._binormals=new Array;for(var o=0;o<t.length;o++)this._curve[o]=t[o].clone();this._raw=n||!1,this._compute(e)}return t.prototype.getCurve=function(){return this._curve},t.prototype.getTangents=function(){return this._tangents},t.prototype.getNormals=function(){return this._normals},t.prototype.getBinormals=function(){return this._binormals},t.prototype.getDistances=function(){return this._distances},t.prototype.update=function(t,e){void 0===e&&(e=null);for(var n=0;n<t.length;n++)this._curve[n].x=t[n].x,this._curve[n].y=t[n].y,this._curve[n].z=t[n].z;return this._compute(e),this},t.prototype._compute=function(t){var e=this._curve.length;this._tangents[0]=this._getFirstNonNullVector(0),this._raw||this._tangents[0].normalize(),this._tangents[e-1]=this._curve[e-1].subtract(this._curve[e-2]),this._raw||this._tangents[e-1].normalize();var n,r,i,s,a=this._tangents[0],p=this._normalVector(this._curve[0],a,t);this._normals[0]=p,this._raw||this._normals[0].normalize(),this._binormals[0]=o.Vector3.Cross(a,this._normals[0]),this._raw||this._binormals[0].normalize(),this._distances[0]=0;for(var u=1;u<e;u++)n=this._getLastNonNullVector(u),u<e-1&&(r=this._getFirstNonNullVector(u),this._tangents[u]=n.add(r),this._tangents[u].normalize()),this._distances[u]=this._distances[u-1]+n.length(),i=this._tangents[u],s=this._binormals[u-1],this._normals[u]=o.Vector3.Cross(s,i),this._raw||this._normals[u].normalize(),this._binormals[u]=o.Vector3.Cross(i,this._normals[u]),this._raw||this._binormals[u].normalize()},t.prototype._getFirstNonNullVector=function(t){for(var e=1,n=this._curve[t+e].subtract(this._curve[t]);0===n.length()&&t+e+1<this._curve.length;)e++,n=this._curve[t+e].subtract(this._curve[t]);return n},t.prototype._getLastNonNullVector=function(t){for(var e=1,n=this._curve[t].subtract(this._curve[t-e]);0===n.length()&&t>e+1;)e++,n=this._curve[t].subtract(this._curve[t-e]);return n},t.prototype._normalVector=function(t,e,n){var s,a=e.length();if(0===a&&(a=1),null==n){var p=void 0;p=i.Scalar.WithinEpsilon(Math.abs(e.y)/a,1,r.Epsilon)?i.Scalar.WithinEpsilon(Math.abs(e.x)/a,1,r.Epsilon)?i.Scalar.WithinEpsilon(Math.abs(e.z)/a,1,r.Epsilon)?o.Vector3.Zero():new o.Vector3(0,0,1):new o.Vector3(1,0,0):new o.Vector3(0,-1,0),s=o.Vector3.Cross(e,p)}else s=o.Vector3.Cross(e,n),o.Vector3.CrossToRef(s,e,s);return s.normalize(),s},t}();e.Path3D=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){this.width=t,this.height=e}return Object.defineProperty(t.prototype,"surface",{get:function(){return this.width*this.height},enumerable:!0,configurable:!0}),t.Zero=function(){return new t(0,0)},t.Lerp=function(e,n,o){return new t(e.width+(n.width-e.width)*o,e.height+(n.height-e.height)*o)},t.prototype.toString=function(){return"{W: "+this.width+", H: "+this.height+"}"},t.prototype.getClassName=function(){return"Size"},t.prototype.getHashCode=function(){var t=this.width||0;return t=397*t^(this.height||0)},t.prototype.copyFrom=function(t){this.width=t.width,this.height=t.height},t.prototype.copyFromFloats=function(t,e){return this.width=t,this.height=e,this},t.prototype.set=function(t,e){return this.copyFromFloats(t,e)},t.prototype.multiplyByFloats=function(e,n){return new t(this.width*e,this.height*n)},t.prototype.clone=function(){return new t(this.width,this.height)},t.prototype.equals=function(t){return!!t&&(this.width===t.width&&this.height===t.height)},t.prototype.add=function(e){return new t(this.width+e.width,this.height+e.height)},t.prototype.subtract=function(e){return new t(this.width-e.width,this.height-e.height)},t}();e.Size=o},function(t,e,n){"use strict";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var s=n(0),a=n(4),p=function(t){function e(e){var n=t.call(this)||this;return n.loop=!1,n.volume=1,n.url=e,n}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"url",void 0),i([s.ObservableComponent.field],e.prototype,"loop",void 0),i([s.ObservableComponent.field],e.prototype,"loadingCompleteEventId",void 0),i([s.ObservableComponent.field],e.prototype,"volume",void 0),e=i([s.DisposableComponent("engine.AudioClip",a.CLASS_ID.AUDIO_CLIP)],e)}(s.ObservableComponent);e.AudioClip=p;var u=function(t){function e(e){var n=t.call(this)||this;if(n.audioClip=e,n.loop=!1,n.volume=1,n.playing=!1,n.pitch=1,!(e instanceof p))throw new Error("Trying to create AudioSource(AudioClip) with an invalid AudioClip");return n.audioClipId=s.getComponentId(e),n}return r(e,t),e.prototype.playOnce=function(){return this.playing=!0,this.dirty=!0,this.data.nonce=Math.random(),this},i([s.ObservableComponent.readonly],e.prototype,"audioClipId",void 0),i([s.ObservableComponent.field],e.prototype,"loop",void 0),i([s.ObservableComponent.field],e.prototype,"volume",void 0),i([s.ObservableComponent.field],e.prototype,"playing",void 0),i([s.ObservableComponent.field],e.prototype,"pitch",void 0),e=i([s.Component("engine.AudioSource",a.CLASS_ID.AUDIO_SOURCE)],e)}(s.ObservableComponent);e.AudioSource=u;var l=function(t){function e(e){var n=t.call(this)||this;return n.playing=!1,n.volume=1,n.url=e,n.playing=!0,n}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"url",void 0),i([s.ObservableComponent.field],e.prototype,"playing",void 0),i([s.ObservableComponent.field],e.prototype,"volume",void 0),e=i([s.Component("engine.AudioStream",a.CLASS_ID.AUDIO_STREAM)],e)}(s.ObservableComponent);e.AudioStream=l},function(t,e,n){"use strict";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var s=n(0),a=n(4);!function(t){t.MOVE="MOVE",t.ROTATE="ROTATE",t.SCALE="SCALE",t.NONE="NONE"}(e.Gizmo||(e.Gizmo={}));var p=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="gizmoEvent",e}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.gizmoEvent",a.CLASS_ID.UUID_CALLBACK)],e)}(a.OnUUIDEvent);e.OnGizmoEvent=p;var u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.position=!0,e.rotation=!0,e.scale=!0,e.cycle=!0,e.localReference=!1,e}return r(e,t),i([s.ObservableComponent.field],e.prototype,"position",void 0),i([s.ObservableComponent.field],e.prototype,"rotation",void 0),i([s.ObservableComponent.field],e.prototype,"scale",void 0),i([s.ObservableComponent.field],e.prototype,"cycle",void 0),i([s.ObservableComponent.field],e.prototype,"selectedGizmo",void 0),i([s.ObservableComponent.field],e.prototype,"localReference",void 0),e=i([s.Component("engine.gizmos",a.CLASS_ID.GIZMOS)],e)}(s.ObservableComponent);e.Gizmos=u},function(t,e,n){"use strict";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var s=n(0),a=n(4),p=n(5),u=function(t){function e(e){var n=t.call(this)||this;return n.name=null,n.visible=!0,n.opacity=1,n.hAlign="center",n.vAlign="center",n.width="100px",n.height="50px",n.positionX="0px",n.positionY="0px",n.isPointerBlocker=!0,e&&(n._parent=e,n.data.parentComponent=s.getComponentId(e)),n}return r(e,t),Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"parentComponent",{get:function(){return this.data.parentComponent},enumerable:!0,configurable:!0}),i([s.ObservableComponent.field],e.prototype,"name",void 0),i([s.ObservableComponent.field],e.prototype,"visible",void 0),i([s.ObservableComponent.field],e.prototype,"opacity",void 0),i([s.ObservableComponent.field],e.prototype,"hAlign",void 0),i([s.ObservableComponent.field],e.prototype,"vAlign",void 0),i([s.ObservableComponent.uiValue],e.prototype,"width",void 0),i([s.ObservableComponent.uiValue],e.prototype,"height",void 0),i([s.ObservableComponent.uiValue],e.prototype,"positionX",void 0),i([s.ObservableComponent.uiValue],e.prototype,"positionY",void 0),i([s.ObservableComponent.field],e.prototype,"isPointerBlocker",void 0),e}(s.ObservableComponent);e.UIShape=u;var l=function(t){function e(){return t.call(this,null)||this}return r(e,t),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_FULLSCREEN_SHAPE)],e)}(u);e.UIFullScreen=l;var c=function(t){function e(){return t.call(this,null)||this}return r(e,t),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_WORLD_SPACE_SHAPE)],e)}(u);e.UIWorldSpace=c;var h=function(t){function e(){return t.call(this,null)||this}return r(e,t),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_SCREEN_SPACE_SHAPE)],e)}(u);e.UICanvas=h;var f,d=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.adaptWidth=!1,e.adaptHeight=!1,e.thickness=0,e.color=p.Color4.Clear(),e.alignmentUsesSize=!0,e}return r(e,t),i([s.ObservableComponent.field],e.prototype,"adaptWidth",void 0),i([s.ObservableComponent.field],e.prototype,"adaptHeight",void 0),i([s.ObservableComponent.field],e.prototype,"thickness",void 0),i([s.ObservableComponent.field],e.prototype,"color",void 0),i([s.ObservableComponent.field],e.prototype,"alignmentUsesSize",void 0),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_CONTAINER_RECT)],e)}(u);e.UIContainerRect=d,function(t){t[t.VERTICAL=0]="VERTICAL",t[t.HORIZONTAL=1]="HORIZONTAL"}(f=e.UIStackOrientation||(e.UIStackOrientation={}));var y=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.adaptWidth=!0,e.adaptHeight=!0,e.color=p.Color4.Clear(),e.stackOrientation=f.VERTICAL,e.spacing=0,e}return r(e,t),i([s.ObservableComponent.field],e.prototype,"adaptWidth",void 0),i([s.ObservableComponent.field],e.prototype,"adaptHeight",void 0),i([s.ObservableComponent.field],e.prototype,"color",void 0),i([s.ObservableComponent.field],e.prototype,"stackOrientation",void 0),i([s.ObservableComponent.field],e.prototype,"spacing",void 0),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_CONTAINER_STACK)],e)}(u);e.UIContainerStack=y;var v=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.fontSize=10,e.fontWeight="normal",e.thickness=0,e.cornerRadius=0,e.color=p.Color4.White(),e.background=p.Color4.White(),e.paddingTop=0,e.paddingRight=0,e.paddingBottom=0,e.paddingLeft=0,e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0,e.shadowColor=p.Color4.Black(),e.text="button",e}return r(e,t),i([s.ObservableComponent.field],e.prototype,"fontSize",void 0),i([s.ObservableComponent.field],e.prototype,"fontWeight",void 0),i([s.ObservableComponent.field],e.prototype,"thickness",void 0),i([s.ObservableComponent.field],e.prototype,"cornerRadius",void 0),i([s.ObservableComponent.field],e.prototype,"color",void 0),i([s.ObservableComponent.field],e.prototype,"background",void 0),i([s.ObservableComponent.field],e.prototype,"paddingTop",void 0),i([s.ObservableComponent.field],e.prototype,"paddingRight",void 0),i([s.ObservableComponent.field],e.prototype,"paddingBottom",void 0),i([s.ObservableComponent.field],e.prototype,"paddingLeft",void 0),i([s.ObservableComponent.field],e.prototype,"shadowBlur",void 0),i([s.ObservableComponent.field],e.prototype,"shadowOffsetX",void 0),i([s.ObservableComponent.field],e.prototype,"shadowOffsetY",void 0),i([s.ObservableComponent.field],e.prototype,"shadowColor",void 0),i([s.ObservableComponent.field],e.prototype,"text",void 0),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_BUTTON_SHAPE)],e)}(u);e.UIButton=v;var m=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.outlineWidth=0,e.outlineColor=p.Color4.White(),e.color=p.Color4.White(),e.fontSize=10,e.fontAutoSize=!1,e.fontWeight="normal",e.value="",e.lineSpacing=0,e.lineCount=0,e.adaptWidth=!1,e.adaptHeight=!1,e.textWrapping=!1,e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0,e.shadowColor=p.Color4.Black(),e.hTextAlign="left",e.vTextAlign="bottom",e.paddingTop=0,e.paddingRight=0,e.paddingBottom=0,e.paddingLeft=0,e}return r(e,t),i([s.ObservableComponent.field],e.prototype,"outlineWidth",void 0),i([s.ObservableComponent.field],e.prototype,"outlineColor",void 0),i([s.ObservableComponent.field],e.prototype,"color",void 0),i([s.ObservableComponent.field],e.prototype,"fontSize",void 0),i([s.ObservableComponent.field],e.prototype,"fontAutoSize",void 0),i([s.ObservableComponent.field],e.prototype,"fontWeight",void 0),i([s.ObservableComponent.component],e.prototype,"font",void 0),i([s.ObservableComponent.field],e.prototype,"value",void 0),i([s.ObservableComponent.field],e.prototype,"lineSpacing",void 0),i([s.ObservableComponent.field],e.prototype,"lineCount",void 0),i([s.ObservableComponent.field],e.prototype,"adaptWidth",void 0),i([s.ObservableComponent.field],e.prototype,"adaptHeight",void 0),i([s.ObservableComponent.field],e.prototype,"textWrapping",void 0),i([s.ObservableComponent.field],e.prototype,"shadowBlur",void 0),i([s.ObservableComponent.field],e.prototype,"shadowOffsetX",void 0),i([s.ObservableComponent.field],e.prototype,"shadowOffsetY",void 0),i([s.ObservableComponent.field],e.prototype,"shadowColor",void 0),i([s.ObservableComponent.field],e.prototype,"hTextAlign",void 0),i([s.ObservableComponent.field],e.prototype,"vTextAlign",void 0),i([s.ObservableComponent.field],e.prototype,"paddingTop",void 0),i([s.ObservableComponent.field],e.prototype,"paddingRight",void 0),i([s.ObservableComponent.field],e.prototype,"paddingBottom",void 0),i([s.ObservableComponent.field],e.prototype,"paddingLeft",void 0),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_TEXT_SHAPE)],e)}(u);e.UIText=m;var b=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.outlineWidth=0,e.outlineColor=p.Color4.Black(),e.color=p.Color4.Clear(),e.thickness=1,e.fontSize=10,e.fontWeight="normal",e.value="",e.placeholderColor=p.Color4.White(),e.placeholder="",e.margin=10,e.maxWidth=100,e.hTextAlign="left",e.vTextAlign="bottom",e.autoStretchWidth=!0,e.background=p.Color4.Black(),e.focusedBackground=p.Color4.Black(),e.textWrapping=!1,e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0,e.shadowColor=p.Color4.White(),e.paddingTop=0,e.paddingRight=0,e.paddingBottom=0,e.paddingLeft=0,e.onTextSubmit=null,e.onChanged=null,e.onFocus=null,e.onBlur=null,e}return r(e,t),i([s.ObservableComponent.field],e.prototype,"outlineWidth",void 0),i([s.ObservableComponent.field],e.prototype,"outlineColor",void 0),i([s.ObservableComponent.field],e.prototype,"color",void 0),i([s.ObservableComponent.field],e.prototype,"thickness",void 0),i([s.ObservableComponent.field],e.prototype,"fontSize",void 0),i([s.ObservableComponent.field],e.prototype,"fontWeight",void 0),i([s.ObservableComponent.component],e.prototype,"font",void 0),i([s.ObservableComponent.field],e.prototype,"value",void 0),i([s.ObservableComponent.field],e.prototype,"placeholderColor",void 0),i([s.ObservableComponent.field],e.prototype,"placeholder",void 0),i([s.ObservableComponent.field],e.prototype,"margin",void 0),i([s.ObservableComponent.field],e.prototype,"maxWidth",void 0),i([s.ObservableComponent.field],e.prototype,"hTextAlign",void 0),i([s.ObservableComponent.field],e.prototype,"vTextAlign",void 0),i([s.ObservableComponent.field],e.prototype,"autoStretchWidth",void 0),i([s.ObservableComponent.field],e.prototype,"background",void 0),i([s.ObservableComponent.field],e.prototype,"focusedBackground",void 0),i([s.ObservableComponent.field],e.prototype,"textWrapping",void 0),i([s.ObservableComponent.field],e.prototype,"shadowBlur",void 0),i([s.ObservableComponent.field],e.prototype,"shadowOffsetX",void 0),i([s.ObservableComponent.field],e.prototype,"shadowOffsetY",void 0),i([s.ObservableComponent.field],e.prototype,"shadowColor",void 0),i([s.ObservableComponent.field],e.prototype,"paddingTop",void 0),i([s.ObservableComponent.field],e.prototype,"paddingRight",void 0),i([s.ObservableComponent.field],e.prototype,"paddingBottom",void 0),i([s.ObservableComponent.field],e.prototype,"paddingLeft",void 0),i([a.OnUUIDEvent.uuidEvent],e.prototype,"onTextSubmit",void 0),i([a.OnUUIDEvent.uuidEvent],e.prototype,"onChanged",void 0),i([a.OnUUIDEvent.uuidEvent],e.prototype,"onFocus",void 0),i([a.OnUUIDEvent.uuidEvent],e.prototype,"onBlur",void 0),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_INPUT_TEXT_SHAPE)],e)}(u);e.UIInputText=b;var g=function(t){function e(e,n){var o=t.call(this,e)||this;return o.sourceLeft=0,o.sourceTop=0,o.sourceWidth=1,o.sourceHeight=1,o.paddingTop=0,o.paddingRight=0,o.paddingBottom=0,o.paddingLeft=0,o.sizeInPixels=!0,o.onClick=null,o.source=n,o}return r(e,t),i([s.ObservableComponent.field],e.prototype,"sourceLeft",void 0),i([s.ObservableComponent.field],e.prototype,"sourceTop",void 0),i([s.ObservableComponent.field],e.prototype,"sourceWidth",void 0),i([s.ObservableComponent.field],e.prototype,"sourceHeight",void 0),i([s.ObservableComponent.component],e.prototype,"source",void 0),i([s.ObservableComponent.field],e.prototype,"paddingTop",void 0),i([s.ObservableComponent.field],e.prototype,"paddingRight",void 0),i([s.ObservableComponent.field],e.prototype,"paddingBottom",void 0),i([s.ObservableComponent.field],e.prototype,"paddingLeft",void 0),i([s.ObservableComponent.field],e.prototype,"sizeInPixels",void 0),i([a.OnUUIDEvent.uuidEvent],e.prototype,"onClick",void 0),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_IMAGE_SHAPE)],e)}(u);e.UIImage=g;var _=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.valueX=0,e.valueY=0,e.borderColor=p.Color4.White(),e.backgroundColor=p.Color4.Clear(),e.isHorizontal=!1,e.isVertical=!1,e.paddingTop=0,e.paddingRight=0,e.paddingBottom=0,e.paddingLeft=0,e.onChanged=null,e}return r(e,t),i([s.ObservableComponent.field],e.prototype,"valueX",void 0),i([s.ObservableComponent.field],e.prototype,"valueY",void 0),i([s.ObservableComponent.field],e.prototype,"borderColor",void 0),i([s.ObservableComponent.field],e.prototype,"backgroundColor",void 0),i([s.ObservableComponent.field],e.prototype,"isHorizontal",void 0),i([s.ObservableComponent.field],e.prototype,"isVertical",void 0),i([s.ObservableComponent.field],e.prototype,"paddingTop",void 0),i([s.ObservableComponent.field],e.prototype,"paddingRight",void 0),i([s.ObservableComponent.field],e.prototype,"paddingBottom",void 0),i([s.ObservableComponent.field],e.prototype,"paddingLeft",void 0),i([a.OnUUIDEvent.uuidEvent],e.prototype,"onChanged",void 0),e=i([s.DisposableComponent("engine.shape",a.CLASS_ID.UI_SLIDER_SHAPE)],e)}(u);e.UIScrollRect=_},function(t,e,n){"use strict";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var s=n(0),a=n(4),p=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.useDummyModel=!1,e}var n;return r(e,t),n=e,e.Dummy=function(){var t=new n;return t.useDummyModel=!0,t},i([s.ObservableComponent.field],e.prototype,"id",void 0),i([s.ObservableComponent.field],e.prototype,"name",void 0),i([s.ObservableComponent.field],e.prototype,"expressionTriggerId",void 0),i([s.ObservableComponent.field],e.prototype,"expressionTriggerTimestamp",void 0),i([s.ObservableComponent.field],e.prototype,"bodyShape",void 0),i([s.ObservableComponent.field],e.prototype,"wearables",void 0),i([s.ObservableComponent.field],e.prototype,"skinColor",void 0),i([s.ObservableComponent.field],e.prototype,"hairColor",void 0),i([s.ObservableComponent.field],e.prototype,"eyeColor",void 0),i([s.ObservableComponent.field],e.prototype,"useDummyModel",void 0),e=n=i([s.Component("engine.avatarShape",a.CLASS_ID.AVATAR_SHAPE)],e)}(s.ObservableComponent);e.AvatarShape=p},function(t,e,n){"use strict";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__decorate||function(t,e,n,o){var r,i=arguments.length,s=i<3?e:null===o?o=Object.getOwnPropertyDescriptor(e,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,o);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s};Object.defineProperty(e,"__esModule",{value:!0});var s=n(0),a=n(13),p=n(4),u=function(t){function e(e){var n=t.call(this,e)||this;return n.type="onFocus",a.uuidEventSystem.handlerMap[n.uuid]=n,n}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.onFocus",p.CLASS_ID.UUID_CALLBACK)],e)}(p.OnUUIDEvent);e.OnFocus=u;var l=function(t){function e(e){var n=t.call(this,e)||this;return n.type="onTextSubmit",a.uuidEventSystem.handlerMap[n.uuid]=n,n}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.onTextSubmit",p.CLASS_ID.UUID_CALLBACK)],e)}(p.OnUUIDEvent);e.OnTextSubmit=l;var c=function(t){function e(e){var n=t.call(this,e)||this;return n.type="onBlur",a.uuidEventSystem.handlerMap[n.uuid]=n,n}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.onBlur",p.CLASS_ID.UUID_CALLBACK)],e)}(p.OnUUIDEvent);e.OnBlur=c;var h=function(t){function e(e){var n=t.call(this,e)||this;return n.type="onEnter",a.uuidEventSystem.handlerMap[n.uuid]=n,n}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.onEnter",p.CLASS_ID.UUID_CALLBACK)],e)}(p.OnUUIDEvent);e.OnEnter=h;var f=function(t){function e(e){var n=t.call(this,e)||this;return n.type="onChange",a.uuidEventSystem.handlerMap[n.uuid]=n,n}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.onChange",p.CLASS_ID.UUID_CALLBACK)],e)}(p.OnUUIDEvent);e.OnChanged=f;var d=function(t){function e(e,n){var o=t.call(this,e)||this;return o.type="onClick",a.uuidEventSystem.handlerMap[o.uuid]=o,n&&(o.showFeedback=!(!1===n.showFeedback),n.button&&(o.button=n.button),n.hoverText&&(o.hoverText=n.hoverText),n.distance&&(o.distance=n.distance)),o}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.onClick",p.CLASS_ID.UUID_CALLBACK)],e)}(p.OnPointerUUIDEvent);e.OnClick=d;var y=function(t){function e(e,n){var o=t.call(this,e)||this;return o.type="pointerDown",a.uuidEventSystem.handlerMap[o.uuid]=o,n&&(o.showFeedback=!(!1===n.showFeedback),n.button&&(o.button=n.button),n.hoverText&&(o.hoverText=n.hoverText),n.distance&&(o.distance=n.distance)),o}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.pointerDown",p.CLASS_ID.UUID_CALLBACK)],e)}(p.OnPointerUUIDEvent);e.OnPointerDown=y;var v=function(t){function e(e,n){var o=t.call(this,e)||this;return o.type="pointerUp",a.uuidEventSystem.handlerMap[o.uuid]=o,n&&(o.showFeedback=!(!1===n.showFeedback),n.button&&(o.button=n.button),n.hoverText&&(o.hoverText=n.hoverText),n.distance&&(o.distance=n.distance)),o}return r(e,t),i([s.ObservableComponent.readonly],e.prototype,"type",void 0),e=i([s.Component("engine.pointerUp",p.CLASS_ID.UUID_CALLBACK)],e)}(p.OnPointerUUIDEvent);e.OnPointerUp=v},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(20),r=n(1),i=null,s=null,a=null;function p(){return a||(a=new o.Observable),a}e.getMessageObserver=p;var u=function(){function t(){var t=this;this.messageQueue=[],this.connected=!1,this.flushing=!1,function(){if(!s){(s=dcl.loadModule("@decentraland/CommunicationsController")).then((function(t){i=t}));var t=p();dcl.subscribe("comms"),dcl.onEvent((function(e){"comms"===e.type&&t.notifyObservers(e.data)}))}return s}().then((function(e){t.connected=!0,t.flush()}))}return t.prototype.on=function(t,e){return p().add((function(n){try{var o=JSON.parse(n.message);o.message===t&&e(o.payload,n.sender)}catch(n){dcl.error("Error parsing comms message "+n.message,n)}}))},t.prototype.sendRaw=function(t){this.messageQueue.push(t),this.connected&&this.flush()},t.prototype.emit=function(t,e){var n=JSON.stringify({message:t,payload:e});this.sendRaw(n),p().notifyObservers({message:n,sender:"self"})},t.prototype.flush=function(){var t=this;if(0!==this.messageQueue.length&&this.connected&&i&&!this.flushing){var e=this.messageQueue.shift();this.flushing=!0,dcl.callRpc(i.rpcHandle,"send",[e]).then((function(e){t.flushing=!1,t.flush()}),(function(e){t.flushing=!1,r.error("Error flushing MessageBus",e)}))}},t}();e.MessageBus=u}]));;
  /*! dcl-amd */;
  var loader;(function(e){"use strict";var r=1;var d=2;var i=[];var f={baseUrl:""};var c={};function n(e){if(typeof e==="object"){for(var n in e){if(e.hasOwnProperty(n)){f[n]=e[n]}}}}e.config=n;function l(t,e,o){var n=arguments.length;if(n===1){o=t;e=["require","exports","module"];t=null}else if(n===2){if(f.toString.call(t)==="[object Array]"){o=e;e=t;t=null}else{o=e;e=["require","exports","module"]}}if(!t){i.push([e,o]);return}function r(){var e,n;if(c[t]){e=c[t].handlers;n=c[t].context}var r=c[t]=typeof o==="function"?o.apply(null,i.slice.call(arguments,0))||c[t]||{}:o;r.dclamd=d;r.context=n;for(var l=0,a=e?e.length:0;l<a;l++){e[l](r)}}u(e,r,t)}e.define=l;(function(e){e.amd={}})(l=e.define||(e.define={}));function u(r,l,a){var t=[];var o=0;var i=false;if(typeof r==="string"){if(c[r]&&c[r].dclamd===d){return c[r]}throw new Error(r+" has not been defined. Please include it as a dependency in "+a+"'s define()")}var f=r.length;var e=function(n){switch(r[n]){case"require":var e=function(e,n){return u(e,n,a)};e.toUrl=function(e){return p(e,a)};t[n]=e;o++;break;case"exports":t[n]=c[a]||(c[a]={});o++;break;case"module":t[n]={id:a,uri:p(a)};o++;break;case c[a]?c[a].context:"":t[n]=c[c[a].context];o++;break;default:s(r[n],function(e){t[n]=e;o++;if(o===f&&l){i=true;l.apply(null,t)}if(c[r[n]]){c[r[n]].dclamd=d}},a)}};for(var n=0;n<f;n++){e(n)}if(!i&&o===f&&l){l.apply(null,t)}}e.require=u;function t(e,n){return function(){return dcl.callRpc(e,n.name,i.slice.call(arguments,0))}}function s(e,a,n){e=n?p(e,n):e;if(c[e]){if(c[e].dclamd===r){a&&c[e].handlers.push(a)}else{a&&a(c[e])}return}else{c[e]={name:e,dclamd:r,handlers:[a],context:n}}if(e.indexOf("@")===0){if(typeof dcl!=="undefined"){dcl.loadModule(e).then(function(e){var n={};for(var r in e.methods){var l=e.methods[r];n[l.name]=t(e.rpcHandle,l)}a(n)})}}}if(typeof dcl!=="undefined"){dcl.onStart(function(){var e=[];for(var n in c){if(c[n]&&c[n].dclamd===r){e.push(c[n])}}if(e.length){throw new Error("These modules didn't load: "+e.map(function(e){return e.name}).join(", "))}})}function p(e,n){var r=false;switch(e){case"require":case"exports":case"module":return e}var l=(n||f.baseUrl).split("/");l.pop();var a=e.split("/");var t=a.length;while(--t){switch(e[0]){case"..":l.pop();case".":case"":a.shift();r=true}}return(l.length&&r?l.join("/")+"/":"")+a.join("/")}u.toUrl=p})(loader||(loader={}));global=typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof this!=="undefined"?this:null;if(!global)throw new Error("unknown global context");global.define=loader.define;global.dclamd=loader;;
  /*! code */;
  eval("var __assign = (this && this.__assign) || function () {\r\n    __assign = Object.assign || function(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n                t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\nvar __values = (this && this.__values) || function(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\n/// <reference path=\"./types.d.ts\" />\r\ndefine(\"node_modules/decentraland-builder-scripts/channel\", [\"require\", \"exports\"], function (require, exports) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    exports.createChannel = void 0;\r\n    var REQUEST_VALUE = '__request_value__';\r\n    var REPLY_VALUE = '__reply_value__';\r\n    var POLL_INTERVAL = 5000;\r\n    function createChannel(id, host, bus) {\r\n        var handlers = {};\r\n        var requests = {};\r\n        var responses = {};\r\n        bus.on(host.name, function (action) {\r\n            var handler = handlers[action.actionId];\r\n            if (handler) {\r\n                handler(action);\r\n            }\r\n            // clear all pending requests for this entity\r\n            requests = {};\r\n        });\r\n        bus.on(REQUEST_VALUE, function (message) {\r\n            if (message.sender !== id && message.entityName === host.name) {\r\n                var key = message.key;\r\n                var response = responses[key];\r\n                if (response) {\r\n                    var value = response();\r\n                    var reply = {\r\n                        entityName: host.name,\r\n                        key: key,\r\n                        sender: id,\r\n                        value: value\r\n                    };\r\n                    bus.emit(REPLY_VALUE, reply);\r\n                }\r\n                // clear pending request for this key\r\n                delete requests[key];\r\n            }\r\n        });\r\n        bus.on(REPLY_VALUE, function (message) {\r\n            if (message.sender !== id && message.entityName === host.name) {\r\n                var key = message.key, value = message.value;\r\n                var request = requests[key];\r\n                if (request) {\r\n                    request(value);\r\n                }\r\n                // clear pending request for this key\r\n                delete requests[key];\r\n            }\r\n        });\r\n        return {\r\n            id: id,\r\n            bus: bus,\r\n            createAction: function (actionId, values) {\r\n                var action = {\r\n                    entityName: host.name,\r\n                    actionId: actionId,\r\n                    values: values\r\n                };\r\n                return action;\r\n            },\r\n            sendActions: function (actions) {\r\n                var e_1, _a;\r\n                if (actions === void 0) { actions = []; }\r\n                try {\r\n                    for (var actions_1 = __values(actions), actions_1_1 = actions_1.next(); !actions_1_1.done; actions_1_1 = actions_1.next()) {\r\n                        var base = actions_1_1.value;\r\n                        var action = __assign(__assign({}, base), { sender: id });\r\n                        bus.emit(action.entityName, action);\r\n                    }\r\n                }\r\n                catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n                finally {\r\n                    try {\r\n                        if (actions_1_1 && !actions_1_1.done && (_a = actions_1.return)) _a.call(actions_1);\r\n                    }\r\n                    finally { if (e_1) throw e_1.error; }\r\n                }\r\n            },\r\n            handleAction: function (actionId, handler) {\r\n                handlers[actionId] = handler;\r\n            },\r\n            request: function (key, callback) {\r\n                requests[key] = callback;\r\n                var request = { entityName: host.name, key: key, sender: id };\r\n                var interval = setInterval(function () {\r\n                    if (key in requests) {\r\n                        bus.emit(REQUEST_VALUE, request);\r\n                    }\r\n                    else {\r\n                        clearInterval(interval);\r\n                    }\r\n                }, POLL_INTERVAL);\r\n            },\r\n            reply: function (key, callback) {\r\n                responses[key] = callback;\r\n            }\r\n        };\r\n    }\r\n    exports.createChannel = createChannel;\r\n});\r\n/// <reference path=\"./types.d.ts\" />\r\ndefine(\"node_modules/decentraland-builder-scripts/inventory\", [\"require\", \"exports\"], function (require, exports) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    exports.createInventory = void 0;\r\n    function createInventory(UICanvas, UIContainerStack, UIImage) {\r\n        var canvas = null;\r\n        var container = null;\r\n        var images = {};\r\n        function getContainer() {\r\n            if (!canvas) {\r\n                canvas = new UICanvas();\r\n            }\r\n            if (!container) {\r\n                container = new UIContainerStack(canvas);\r\n                container.isPointerBlocker = false;\r\n                container.vAlign = 'bottom';\r\n                container.hAlign = 'right';\r\n                container.stackOrientation = 0;\r\n                container.spacing = 0;\r\n                container.positionY = 75;\r\n                container.positionX = -25;\r\n            }\r\n            return container;\r\n        }\r\n        return {\r\n            add: function (id, texture) {\r\n                var image = images[id] || new UIImage(getContainer(), texture);\r\n                image.width = 128;\r\n                image.height = 128;\r\n                image.sourceTop = 0;\r\n                image.sourceLeft = 0;\r\n                image.sourceHeight = 256;\r\n                image.sourceWidth = 256;\r\n                image.isPointerBlocker = false;\r\n                image.visible = true;\r\n                images[id] = image;\r\n            },\r\n            remove: function (id) {\r\n                var image = images[id];\r\n                if (image) {\r\n                    image.visible = false;\r\n                    image.height = 0;\r\n                    image.width = 0;\r\n                }\r\n            },\r\n            has: function (id) {\r\n                return id in images && images[id].visible;\r\n            }\r\n        };\r\n    }\r\n    exports.createInventory = createInventory;\r\n});\r\ndefine(\"1ab788bf-107d-4b91-881e-48dfb1d46284/src/item\", [\"require\", \"exports\"], function (require, exports) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    var SignPost = /** @class */ (function () {\r\n        function SignPost() {\r\n        }\r\n        SignPost.prototype.init = function () { };\r\n        SignPost.prototype.spawn = function (host, props, channel) {\r\n            var sign = new Entity();\r\n            sign.setParent(host);\r\n            sign.addComponent(new GLTFShape('1ab788bf-107d-4b91-881e-48dfb1d46284/models/signpost/SignPost.glb'));\r\n            var signText = new Entity();\r\n            signText.setParent(host);\r\n            var text = new TextShape(props.text);\r\n            text.fontSize = props.fontSize;\r\n            text.color = Color3.White();\r\n            text.width = 20;\r\n            text.height = 10;\r\n            text.hTextAlign = 'center';\r\n            signText.addComponent(text);\r\n            signText.addComponent(new Transform({\r\n                position: new Vector3(-0.172, 1.6, -0.2),\r\n                rotation: Quaternion.Euler(5, 90, 0),\r\n                scale: new Vector3(0.05, 0.05, 0.05)\r\n            }));\r\n            channel.handleAction('changeText', function (action) {\r\n                text.value = action.values.newText;\r\n            });\r\n            channel.request('getText', function (signText) { return (text.value = signText); });\r\n            channel.reply('getText', function () { return text.value; });\r\n        };\r\n        return SignPost;\r\n    }());\r\n    exports.default = SignPost;\r\n});\r\ndefine(\"3f3fe65b-c648-44bc-8781-c2a40bc95bb4/src/item\", [\"require\", \"exports\"], function (require, exports) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    var SignPost = /** @class */ (function () {\r\n        function SignPost() {\r\n        }\r\n        SignPost.prototype.init = function () { };\r\n        SignPost.prototype.spawn = function (host, props, channel) {\r\n            var sign = new Entity();\r\n            sign.setParent(host);\r\n            sign.addComponent(new GLTFShape('3f3fe65b-c648-44bc-8781-c2a40bc95bb4/models/signpost/Signpost_Root.glb'));\r\n            var signText = new Entity();\r\n            signText.setParent(host);\r\n            var text = new TextShape(props.text);\r\n            text.fontSize = props.fontSize;\r\n            text.color = Color3.White();\r\n            text.width = 20;\r\n            text.height = 10;\r\n            text.hTextAlign = 'center';\r\n            signText.addComponent(text);\r\n            signText.addComponent(new Transform({\r\n                position: new Vector3(-0.1, 1.3, 0.3),\r\n                rotation: Quaternion.Euler(0, 180, 0),\r\n                scale: new Vector3(0.05, 0.05, 0.05)\r\n            }));\r\n            channel.handleAction('changeText', function (action) {\r\n                text.value = action.values.newText;\r\n            });\r\n            channel.request('getText', function (signText) { return (text.value = signText); });\r\n            channel.reply('getText', function () { return text.value; });\r\n        };\r\n        return SignPost;\r\n    }());\r\n    exports.default = SignPost;\r\n});\r\ndefine(\"1a7b94e0-ac62-4539-bb08-65f4fc4d66ac/src/item\", [\"require\", \"exports\"], function (require, exports) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    var SignPost = /** @class */ (function () {\r\n        function SignPost() {\r\n        }\r\n        SignPost.prototype.init = function () { };\r\n        SignPost.prototype.spawn = function (host, props, channel) {\r\n            var sign = new Entity();\r\n            sign.setParent(host);\r\n            sign.addComponent(new GLTFShape('1a7b94e0-ac62-4539-bb08-65f4fc4d66ac/models/signpost/SignPost_wood.glb'));\r\n            var signText = new Entity();\r\n            signText.setParent(host);\r\n            var text = new TextShape(props.text);\r\n            text.fontSize = props.fontSize;\r\n            text.color = Color3.White();\r\n            text.width = 20;\r\n            text.height = 10;\r\n            text.hTextAlign = 'center';\r\n            signText.addComponent(text);\r\n            signText.addComponent(new Transform({\r\n                position: new Vector3(0, 1, 0.33),\r\n                rotation: Quaternion.Euler(0, 180, 0),\r\n                scale: new Vector3(0.05, 0.05, 0.05)\r\n            }));\r\n            channel.handleAction('changeText', function (action) {\r\n                text.value = action.values.newText;\r\n            });\r\n            channel.request('getText', function (signText) { return (text.value = signText); });\r\n            channel.reply('getText', function () { return text.value; });\r\n        };\r\n        return SignPost;\r\n    }());\r\n    exports.default = SignPost;\r\n});\r\ndefine(\"1dc0345a-f5dd-43b6-bf14-30e7752101b4/src/item\", [\"require\", \"exports\"], function (require, exports) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    var SignPost = /** @class */ (function () {\r\n        function SignPost() {\r\n        }\r\n        SignPost.prototype.init = function () { };\r\n        SignPost.prototype.spawn = function (host, props, channel) {\r\n            var sign = new Entity();\r\n            sign.setParent(host);\r\n            sign.addComponent(new GLTFShape('1dc0345a-f5dd-43b6-bf14-30e7752101b4/models/signpost/Signpost_Golden.glb'));\r\n            var signText = new Entity();\r\n            signText.setParent(host);\r\n            var text = new TextShape(props.text);\r\n            text.fontSize = props.fontSize;\r\n            text.color = Color3.White();\r\n            text.width = 20;\r\n            text.height = 10;\r\n            text.hTextAlign = 'center';\r\n            signText.addComponent(text);\r\n            signText.addComponent(new Transform({\r\n                position: new Vector3(0, 2.08, 0.025),\r\n                rotation: Quaternion.Euler(0, 180, 0),\r\n                scale: new Vector3(0.05, 0.05, 0.05)\r\n            }));\r\n            channel.handleAction('changeText', function (action) {\r\n                text.value = action.values.newText;\r\n            });\r\n            channel.request('getText', function (signText) { return (text.value = signText); });\r\n            channel.reply('getText', function () { return text.value; });\r\n        };\r\n        return SignPost;\r\n    }());\r\n    exports.default = SignPost;\r\n});\r\ndefine(\"6f54ea17-43bc-4b1e-a8c1-c9b24ff6e038/src/item\", [\"require\", \"exports\"], function (require, exports) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    var SignPost = /** @class */ (function () {\r\n        function SignPost() {\r\n        }\r\n        SignPost.prototype.init = function () { };\r\n        SignPost.prototype.spawn = function (host, props, channel) {\r\n            var sign = new Entity();\r\n            sign.setParent(host);\r\n            sign.addComponent(new GLTFShape('6f54ea17-43bc-4b1e-a8c1-c9b24ff6e038/models/signpost/SignPost_Circle.glb'));\r\n            var signText = new Entity();\r\n            signText.setParent(host);\r\n            var text = new TextShape(props.text);\r\n            text.fontSize = props.fontSize;\r\n            text.color = Color3.Black();\r\n            text.outlineColor = Color3.Black();\r\n            text.outlineWidth = 0.3;\r\n            text.width = 20;\r\n            text.height = 10;\r\n            text.hTextAlign = 'center';\r\n            signText.addComponent(text);\r\n            signText.addComponent(new Transform({\r\n                position: new Vector3(0, 2.05, -0.03),\r\n                rotation: Quaternion.Euler(0, 0, 0),\r\n                scale: new Vector3(0.05, 0.05, 0.05)\r\n            }));\r\n            channel.handleAction('changeText', function (action) {\r\n                text.value = action.values.newText;\r\n            });\r\n            channel.request('getText', function (signText) { return (text.value = signText); });\r\n            channel.reply('getText', function () { return text.value; });\r\n        };\r\n        return SignPost;\r\n    }());\r\n    exports.default = SignPost;\r\n});\r\ndefine(\"src/builderContent\", [\"require\", \"exports\", \"node_modules/decentraland-builder-scripts/channel\", \"1ab788bf-107d-4b91-881e-48dfb1d46284/src/item\", \"3f3fe65b-c648-44bc-8781-c2a40bc95bb4/src/item\", \"1a7b94e0-ac62-4539-bb08-65f4fc4d66ac/src/item\", \"1dc0345a-f5dd-43b6-bf14-30e7752101b4/src/item\", \"6f54ea17-43bc-4b1e-a8c1-c9b24ff6e038/src/item\"], function (require, exports, channel_1, item_1, item_2, item_3, item_4, item_5) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    exports.buildBuilderScene = void 0;\r\n    function buildBuilderScene() {\r\n        var _scene = new Entity('_scene');\r\n        engine.addEntity(_scene);\r\n        var transform = new Transform({\r\n            position: new Vector3(0, 0, 0),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        _scene.addComponentOrReplace(transform);\r\n        var entity = new Entity('entity');\r\n        engine.addEntity(entity);\r\n        entity.setParent(_scene);\r\n        var gltfShape = new GLTFShape('models/FloorBaseGrass_01/FloorBaseGrass_01.glb');\r\n        gltfShape.withCollisions = true;\r\n        gltfShape.isPointerBlocker = true;\r\n        gltfShape.visible = true;\r\n        entity.addComponentOrReplace(gltfShape);\r\n        var transform2 = new Transform({\r\n            position: new Vector3(8, 0, 8),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        entity.addComponentOrReplace(transform2);\r\n        var narrowCrater = new Entity('narrowCrater');\r\n        engine.addEntity(narrowCrater);\r\n        narrowCrater.setParent(_scene);\r\n        var transform3 = new Transform({\r\n            position: new Vector3(10.355362892150879, 0, 8),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        narrowCrater.addComponentOrReplace(transform3);\r\n        var gltfShape2 = new GLTFShape('models/Crater_02/Crater_02.glb');\r\n        gltfShape2.withCollisions = true;\r\n        gltfShape2.isPointerBlocker = true;\r\n        gltfShape2.visible = true;\r\n        narrowCrater.addComponentOrReplace(gltfShape2);\r\n        var signpost = new Entity('signpost');\r\n        engine.addEntity(signpost);\r\n        signpost.setParent(_scene);\r\n        var transform4 = new Transform({\r\n            position: new Vector3(11, 0, 11),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        signpost.addComponentOrReplace(transform4);\r\n        var signpostRoot = new Entity('signpostRoot');\r\n        engine.addEntity(signpostRoot);\r\n        signpostRoot.setParent(_scene);\r\n        var transform5 = new Transform({\r\n            position: new Vector3(10.355362892150879, 0, 5),\r\n            rotation: new Quaternion(-6.65064594497863e-16, -0.4713967442512512, 5.6194867426029305e-8, 0.8819212913513184),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        signpostRoot.addComponentOrReplace(transform5);\r\n        var signpostWood = new Entity('signpostWood');\r\n        engine.addEntity(signpostWood);\r\n        signpostWood.setParent(_scene);\r\n        var transform6 = new Transform({\r\n            position: new Vector3(10.855362892150879, 0, 9.5),\r\n            rotation: new Quaternion(-1.5513695361373393e-15, -0.7997391223907471, 9.53363255007389e-8, 0.600347638130188),\r\n            scale: new Vector3(0.9999958276748657, 1, 0.9999958276748657),\r\n        });\r\n        signpostWood.addComponentOrReplace(transform6);\r\n        var signpostRoot2 = new Entity('signpostRoot2');\r\n        engine.addEntity(signpostRoot2);\r\n        signpostRoot2.setParent(_scene);\r\n        var transform7 = new Transform({\r\n            position: new Vector3(12.355362892150879, 0, 6),\r\n            rotation: new Quaternion(-1.10062582369541e-15, -0.6343932747840881, 7.562556447737734e-8, 0.7730104327201843),\r\n            scale: new Vector3(1.4099667072296143, 1.409968376159668, 1.4099667072296143),\r\n        });\r\n        signpostRoot2.addComponentOrReplace(transform7);\r\n        var ancientMediumStonePath = new Entity('ancientMediumStonePath');\r\n        engine.addEntity(ancientMediumStonePath);\r\n        ancientMediumStonePath.setParent(_scene);\r\n        var transform8 = new Transform({\r\n            position: new Vector3(7.01444149017334, 0, 9.5),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        ancientMediumStonePath.addComponentOrReplace(transform8);\r\n        var gltfShape3 = new GLTFShape('models/RockFloor_Module_2M/RockFloor_Module_2M.glb');\r\n        gltfShape3.withCollisions = true;\r\n        gltfShape3.isPointerBlocker = true;\r\n        gltfShape3.visible = true;\r\n        ancientMediumStonePath.addComponentOrReplace(gltfShape3);\r\n        var ancientMediumStonePath2 = new Entity('ancientMediumStonePath2');\r\n        engine.addEntity(ancientMediumStonePath2);\r\n        ancientMediumStonePath2.setParent(_scene);\r\n        ancientMediumStonePath2.addComponentOrReplace(gltfShape3);\r\n        var transform9 = new Transform({\r\n            position: new Vector3(5.01444149017334, 0, 9.5),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        ancientMediumStonePath2.addComponentOrReplace(transform9);\r\n        var ancientMediumStonePath3 = new Entity('ancientMediumStonePath3');\r\n        engine.addEntity(ancientMediumStonePath3);\r\n        ancientMediumStonePath3.setParent(_scene);\r\n        ancientMediumStonePath3.addComponentOrReplace(gltfShape3);\r\n        var transform10 = new Transform({\r\n            position: new Vector3(5.01444149017334, 0, 11.5),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        ancientMediumStonePath3.addComponentOrReplace(transform10);\r\n        var ancientMediumStonePath4 = new Entity('ancientMediumStonePath4');\r\n        engine.addEntity(ancientMediumStonePath4);\r\n        ancientMediumStonePath4.setParent(_scene);\r\n        ancientMediumStonePath4.addComponentOrReplace(gltfShape3);\r\n        var transform11 = new Transform({\r\n            position: new Vector3(5.01444149017334, 0, 13.5),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        ancientMediumStonePath4.addComponentOrReplace(transform11);\r\n        var ancientMediumStonePath5 = new Entity('ancientMediumStonePath5');\r\n        engine.addEntity(ancientMediumStonePath5);\r\n        ancientMediumStonePath5.setParent(_scene);\r\n        ancientMediumStonePath5.addComponentOrReplace(gltfShape3);\r\n        var transform12 = new Transform({\r\n            position: new Vector3(5.01444149017334, 0, 15.5),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        ancientMediumStonePath5.addComponentOrReplace(transform12);\r\n        var bush = new Entity('bush');\r\n        engine.addEntity(bush);\r\n        bush.setParent(_scene);\r\n        var transform13 = new Transform({\r\n            position: new Vector3(12.5, 0, 13.5),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        bush.addComponentOrReplace(transform13);\r\n        var gltfShape4 = new GLTFShape('models/Bush_02/Bush_02.glb');\r\n        gltfShape4.withCollisions = true;\r\n        gltfShape4.isPointerBlocker = true;\r\n        gltfShape4.visible = true;\r\n        bush.addComponentOrReplace(gltfShape4);\r\n        var evergreenShrub = new Entity('evergreenShrub');\r\n        engine.addEntity(evergreenShrub);\r\n        evergreenShrub.setParent(_scene);\r\n        var transform14 = new Transform({\r\n            position: new Vector3(4.5, 0, 1.5),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        evergreenShrub.addComponentOrReplace(transform14);\r\n        var gltfShape5 = new GLTFShape('models/Bush_03/Bush_03.glb');\r\n        gltfShape5.withCollisions = true;\r\n        gltfShape5.isPointerBlocker = true;\r\n        gltfShape5.visible = true;\r\n        evergreenShrub.addComponentOrReplace(gltfShape5);\r\n        var sunflowerHead = new Entity('sunflowerHead');\r\n        engine.addEntity(sunflowerHead);\r\n        sunflowerHead.setParent(_scene);\r\n        var transform15 = new Transform({\r\n            position: new Vector3(6.5, 0, 15),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        sunflowerHead.addComponentOrReplace(transform15);\r\n        var gltfShape6 = new GLTFShape('models/Flower_01/Flower_01.glb');\r\n        gltfShape6.withCollisions = true;\r\n        gltfShape6.isPointerBlocker = true;\r\n        gltfShape6.visible = true;\r\n        sunflowerHead.addComponentOrReplace(gltfShape6);\r\n        var greenPoplars = new Entity('greenPoplars');\r\n        engine.addEntity(greenPoplars);\r\n        greenPoplars.setParent(_scene);\r\n        var transform16 = new Transform({\r\n            position: new Vector3(13.5, 0, 2),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        greenPoplars.addComponentOrReplace(transform16);\r\n        var gltfShape7 = new GLTFShape('models/TreeFir_02/TreeFir_02.glb');\r\n        gltfShape7.withCollisions = true;\r\n        gltfShape7.isPointerBlocker = true;\r\n        gltfShape7.visible = true;\r\n        greenPoplars.addComponentOrReplace(gltfShape7);\r\n        var rusticMerchantFishStand = new Entity('rusticMerchantFishStand');\r\n        engine.addEntity(rusticMerchantFishStand);\r\n        rusticMerchantFishStand.setParent(_scene);\r\n        var transform17 = new Transform({\r\n            position: new Vector3(6.51444149017334, 0, 13),\r\n            rotation: new Quaternion(-1.5394153601527394e-15, -0.7071068286895752, 8.429369557916289e-8, 0.7071068286895752),\r\n            scale: new Vector3(1.0000107288360596, 1, 1.0000107288360596),\r\n        });\r\n        rusticMerchantFishStand.addComponentOrReplace(transform17);\r\n        var gltfShape8 = new GLTFShape('models/SellingGoods_02/SellingGoods_02.glb');\r\n        gltfShape8.withCollisions = true;\r\n        gltfShape8.isPointerBlocker = true;\r\n        gltfShape8.visible = true;\r\n        rusticMerchantFishStand.addComponentOrReplace(gltfShape8);\r\n        var rusticCoveredMerchantStand = new Entity('rusticCoveredMerchantStand');\r\n        engine.addEntity(rusticCoveredMerchantStand);\r\n        rusticCoveredMerchantStand.setParent(_scene);\r\n        var transform18 = new Transform({\r\n            position: new Vector3(6.51444149017334, 0, 11),\r\n            rotation: new Quaternion(-1.5394153601527394e-15, -0.7071068286895752, 8.429369557916289e-8, 0.7071068286895752),\r\n            scale: new Vector3(1.0000088214874268, 1, 1.0000088214874268),\r\n        });\r\n        rusticCoveredMerchantStand.addComponentOrReplace(transform18);\r\n        var gltfShape9 = new GLTFShape('models/SellingGoods_03/SellingGoods_03.glb');\r\n        gltfShape9.withCollisions = true;\r\n        gltfShape9.isPointerBlocker = true;\r\n        gltfShape9.visible = true;\r\n        rusticCoveredMerchantStand.addComponentOrReplace(gltfShape9);\r\n        var rusticMerchantFishStand2 = new Entity('rusticMerchantFishStand2');\r\n        engine.addEntity(rusticMerchantFishStand2);\r\n        rusticMerchantFishStand2.setParent(_scene);\r\n        var transform19 = new Transform({\r\n            position: new Vector3(2.2349023818969727, 0, 6),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        rusticMerchantFishStand2.addComponentOrReplace(transform19);\r\n        rusticMerchantFishStand2.addComponentOrReplace(gltfShape8);\r\n        var rusticCoveredMerchantStand2 = new Entity('rusticCoveredMerchantStand2');\r\n        engine.addEntity(rusticCoveredMerchantStand2);\r\n        rusticCoveredMerchantStand2.setParent(_scene);\r\n        var transform20 = new Transform({\r\n            position: new Vector3(5.234902381896973, 0, 6),\r\n            rotation: new Quaternion(0, 0, 0, 1),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        rusticCoveredMerchantStand2.addComponentOrReplace(transform20);\r\n        rusticCoveredMerchantStand2.addComponentOrReplace(gltfShape9);\r\n        var signpost2 = new Entity('signpost2');\r\n        engine.addEntity(signpost2);\r\n        signpost2.setParent(_scene);\r\n        var transform21 = new Transform({\r\n            position: new Vector3(6.01444149017334, 0, 15),\r\n            rotation: new Quaternion(-1.7015905116955343e-15, 0, -6.982296401520131e-16, 1),\r\n            scale: new Vector3(0.9999994039535522, 1, 0.9999994039535522),\r\n        });\r\n        signpost2.addComponentOrReplace(transform21);\r\n        var rusticMerchantStand = new Entity('rusticMerchantStand');\r\n        engine.addEntity(rusticMerchantStand);\r\n        rusticMerchantStand.setParent(_scene);\r\n        var transform22 = new Transform({\r\n            position: new Vector3(1.7751564979553223, 0, 9.83009147644043),\r\n            rotation: new Quaternion(1.1038385137852273e-15, 0.7071068286895752, -8.429368847373553e-8, 0.7071067690849304),\r\n            scale: new Vector3(1, 1, 1),\r\n        });\r\n        rusticMerchantStand.addComponentOrReplace(transform22);\r\n        var gltfShape10 = new GLTFShape('models/SellingGoods_01/SellingGoods_01.glb');\r\n        gltfShape10.withCollisions = true;\r\n        gltfShape10.isPointerBlocker = true;\r\n        gltfShape10.visible = true;\r\n        rusticMerchantStand.addComponentOrReplace(gltfShape10);\r\n        var rusticCoveredMerchantStand3 = new Entity('rusticCoveredMerchantStand3');\r\n        engine.addEntity(rusticCoveredMerchantStand3);\r\n        rusticCoveredMerchantStand3.setParent(_scene);\r\n        rusticCoveredMerchantStand3.addComponentOrReplace(gltfShape9);\r\n        var transform23 = new Transform({\r\n            position: new Vector3(2, 0, 12.5),\r\n            rotation: new Quaternion(-1.1023608648087421e-15, 0.7806753516197205, -9.306374693096586e-8, 0.6249369382858276),\r\n            scale: new Vector3(1.0000100135803223, 1, 1.0000100135803223),\r\n        });\r\n        rusticCoveredMerchantStand3.addComponentOrReplace(transform23);\r\n        var cafeStreetSign = new Entity('cafeStreetSign');\r\n        engine.addEntity(cafeStreetSign);\r\n        cafeStreetSign.setParent(_scene);\r\n        var transform24 = new Transform({\r\n            position: new Vector3(10, 0, 3.5),\r\n            rotation: new Quaternion(-1.050000167921502e-14, -0.3896034359931946, 4.644433104772361e-8, -0.9209827780723572),\r\n            scale: new Vector3(1.0000003576278687, 1, 1.0000003576278687),\r\n        });\r\n        cafeStreetSign.addComponentOrReplace(transform24);\r\n        var gltfShape11 = new GLTFShape('models/Sign_02/Sign_02.glb');\r\n        gltfShape11.withCollisions = true;\r\n        gltfShape11.isPointerBlocker = true;\r\n        gltfShape11.visible = true;\r\n        cafeStreetSign.addComponentOrReplace(gltfShape11);\r\n        var signpostGolden = new Entity('signpostGolden');\r\n        engine.addEntity(signpostGolden);\r\n        signpostGolden.setParent(_scene);\r\n        var transform25 = new Transform({\r\n            position: new Vector3(13, 0, 10.5),\r\n            rotation: new Quaternion(3.2226755494740985e-15, -0.8135725855827332, 9.698539571445508e-8, 0.5814635157585144),\r\n            scale: new Vector3(1.0000009536743164, 1, 1.0000009536743164),\r\n        });\r\n        signpostGolden.addComponentOrReplace(transform25);\r\n        var roundSignpost = new Entity('roundSignpost');\r\n        engine.addEntity(roundSignpost);\r\n        roundSignpost.setParent(_scene);\r\n        var transform26 = new Transform({\r\n            position: new Vector3(4, 0, 3.5),\r\n            rotation: new Quaternion(5.415829561889168e-15, 0.9999245405197144, -1.1920029407974653e-7, 0.012292832136154175),\r\n            scale: new Vector3(1.0000014305114746, 1, 1.0000014305114746),\r\n        });\r\n        roundSignpost.addComponentOrReplace(transform26);\r\n        var redBicycle = new Entity('redBicycle');\r\n        engine.addEntity(redBicycle);\r\n        redBicycle.setParent(_scene);\r\n        var transform27 = new Transform({\r\n            position: new Vector3(2.5, 0, 3.5),\r\n            rotation: new Quaternion(-0.47008490562438965, 3.1905565895098075e-16, 5.6038484075315864e-8, 0.8826212882995605),\r\n            scale: new Vector3(1, 1.0000017881393433, 1.0000017881393433),\r\n        });\r\n        redBicycle.addComponentOrReplace(transform27);\r\n        var gltfShape12 = new GLTFShape('models/Bicycle_01/Bicycle_01.glb');\r\n        gltfShape12.withCollisions = true;\r\n        gltfShape12.isPointerBlocker = true;\r\n        gltfShape12.visible = true;\r\n        redBicycle.addComponentOrReplace(gltfShape12);\r\n        var channelId = Math.random().toString(16).slice(2);\r\n        var channelBus = new MessageBus();\r\n        var script1 = new item_1.default();\r\n        var script2 = new item_2.default();\r\n        var script3 = new item_3.default();\r\n        var script4 = new item_4.default();\r\n        var script5 = new item_5.default();\r\n        script1.init();\r\n        script2.init();\r\n        script3.init();\r\n        script4.init();\r\n        script5.init();\r\n        script1.spawn(signpost, { text: 'The extraordinary crater\\n(NOT a tourist trap)', fontSize: 19 }, channel_1.createChannel(channelId, signpost, channelBus));\r\n        script2.spawn(signpostRoot, {\r\n            text: \"Isn't nature incredible?\\nJust look at that!\\nJust Wow!\",\r\n            fontSize: 20,\r\n        }, channel_1.createChannel(channelId, signpostRoot, channelBus));\r\n        script3.spawn(signpostWood, { text: 'Pictures of crater \\n50 USD\\n', fontSize: 20 }, channel_1.createChannel(channelId, signpostWood, channelBus));\r\n        script2.spawn(signpostRoot2, {\r\n            text: 'Take a selfie,\\nShare it with your friends,\\nyour family, pets\\nTell them all to come!',\r\n            fontSize: 20,\r\n        }, channel_1.createChannel(channelId, signpostRoot2, channelBus));\r\n        script1.spawn(signpost2, { text: 'The extraordinary crater\\n(NOT a tourist trap)', fontSize: 19 }, channel_1.createChannel(channelId, signpost2, channelBus));\r\n        script4.spawn(signpostGolden, { text: 'Guided tours of the crater\\nAsk in vistor center', fontSize: 20 }, channel_1.createChannel(channelId, signpostGolden, channelBus));\r\n        script5.spawn(roundSignpost, { text: 'Park your \\nbike here\\n15 USD', fontSize: 20 }, channel_1.createChannel(channelId, roundSignpost, channelBus));\r\n    }\r\n    exports.buildBuilderScene = buildBuilderScene;\r\n});\r\ndefine(\"src/serverHandler\", [\"require\", \"exports\", \"@decentraland/Identity\"], function (require, exports, Identity_1) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    exports.signGuestBook = exports.getGuestBook = exports.fireBaseServer = exports.setUserData = exports.userData = void 0;\r\n    function setUserData() {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var data;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0: return [4 /*yield*/, Identity_1.getUserData()];\r\n                    case 1:\r\n                        data = _a.sent();\r\n                        log(data.displayName);\r\n                        exports.userData = data;\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    }\r\n    exports.setUserData = setUserData;\r\n    // external servers being used by the project - Please change these to your own if working on something else!\r\n    exports.fireBaseServer = 'https://us-central1-dcl-guestbook.cloudfunctions.net/app/';\r\n    // get latest scoreboard data from server\r\n    function getGuestBook() {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var url, response, json, e_2;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        _a.trys.push([0, 3, , 4]);\r\n                        url = exports.fireBaseServer + 'get-signatures';\r\n                        return [4 /*yield*/, fetch(url)];\r\n                    case 1:\r\n                        response = _a.sent();\r\n                        return [4 /*yield*/, response.json()];\r\n                    case 2:\r\n                        json = _a.sent();\r\n                        log(json);\r\n                        return [2 /*return*/, json];\r\n                    case 3:\r\n                        e_2 = _a.sent();\r\n                        log('error fetching scores from server ', e_2);\r\n                        return [3 /*break*/, 4];\r\n                    case 4: return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    }\r\n    exports.getGuestBook = getGuestBook;\r\n    // change data in scoreboard\r\n    function signGuestBook() {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var url, body, _a, _b, _c, response, e_3;\r\n            return __generator(this, function (_d) {\r\n                switch (_d.label) {\r\n                    case 0:\r\n                        if (!!exports.userData) return [3 /*break*/, 2];\r\n                        return [4 /*yield*/, setUserData()];\r\n                    case 1:\r\n                        _d.sent();\r\n                        _d.label = 2;\r\n                    case 2:\r\n                        _d.trys.push([2, 6, , 7]);\r\n                        url = exports.fireBaseServer + 'add-signature';\r\n                        _b = (_a = JSON).stringify;\r\n                        _c = {};\r\n                        return [4 /*yield*/, exports.userData];\r\n                    case 3:\r\n                        _c.id = (_d.sent()).userId;\r\n                        return [4 /*yield*/, exports.userData];\r\n                    case 4:\r\n                        body = _b.apply(_a, [(_c.name = (_d.sent()).displayName,\r\n                                _c)]);\r\n                        log(body);\r\n                        return [4 /*yield*/, fetch(url, {\r\n                                method: 'POST',\r\n                                headers: { 'Content-Type': 'application/json' },\r\n                                body: body,\r\n                            })];\r\n                    case 5:\r\n                        response = _d.sent();\r\n                        return [2 /*return*/, response.json()];\r\n                    case 6:\r\n                        e_3 = _d.sent();\r\n                        log('error posting to server ', e_3);\r\n                        return [3 /*break*/, 7];\r\n                    case 7: return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    }\r\n    exports.signGuestBook = signGuestBook;\r\n});\r\ndefine(\"src/ui\", [\"require\", \"exports\", \"src/serverHandler\"], function (require, exports, serverHandler_1) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    exports.LastButton = exports.NextButton = exports.SignButton = exports.signaturesUI = exports.headerText = exports.background = exports.closeUI = exports.openUI = exports.screenSpaceUI = void 0;\r\n    exports.screenSpaceUI = new UICanvas();\r\n    exports.screenSpaceUI.visible = true;\r\n    var UIOpenTime;\r\n    var imageTexture = new Texture('images/UI_Guestbook.png');\r\n    var scaleMultiplier = 0.7;\r\n    var linesPerGuestBookPage = 12;\r\n    function openUI(event) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var guestBookPage, allSignatures, totalPages;\r\n            var _this = this;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        UIOpenTime = +Date.now();\r\n                        exports.background.visible = true;\r\n                        exports.background.isPointerBlocker = true;\r\n                        guestBookPage = 1;\r\n                        return [4 /*yield*/, serverHandler_1.getGuestBook()];\r\n                    case 1:\r\n                        allSignatures = _a.sent();\r\n                        totalPages = displaySignatures(allSignatures, guestBookPage);\r\n                        exports.SignButton.onClick = new OnClick(function () {\r\n                            serverHandler_1.signGuestBook();\r\n                            closeUI();\r\n                            log('signed guestbook');\r\n                        });\r\n                        log('On page ', guestBookPage, ' of ', totalPages);\r\n                        if (totalPages < 2) {\r\n                            exports.LastButton.visible = false;\r\n                            exports.NextButton.visible = false;\r\n                        }\r\n                        else {\r\n                            exports.LastButton.visible = false;\r\n                            exports.NextButton.visible = true;\r\n                        }\r\n                        exports.NextButton.onClick = new OnClick(function () { return __awaiter(_this, void 0, void 0, function () {\r\n                            return __generator(this, function (_a) {\r\n                                switch (_a.label) {\r\n                                    case 0:\r\n                                        guestBookPage += 1;\r\n                                        return [4 /*yield*/, serverHandler_1.getGuestBook()];\r\n                                    case 1:\r\n                                        allSignatures = _a.sent();\r\n                                        displaySignatures(allSignatures, guestBookPage);\r\n                                        exports.LastButton.visible = true;\r\n                                        if (guestBookPage >= totalPages) {\r\n                                            exports.NextButton.visible = false;\r\n                                        }\r\n                                        return [2 /*return*/];\r\n                                }\r\n                            });\r\n                        }); });\r\n                        exports.LastButton.onClick = new OnClick(function () { return __awaiter(_this, void 0, void 0, function () {\r\n                            return __generator(this, function (_a) {\r\n                                switch (_a.label) {\r\n                                    case 0:\r\n                                        guestBookPage -= 1;\r\n                                        if (guestBookPage < 1) {\r\n                                            guestBookPage = 1;\r\n                                        }\r\n                                        return [4 /*yield*/, serverHandler_1.getGuestBook()];\r\n                                    case 1:\r\n                                        allSignatures = _a.sent();\r\n                                        displaySignatures(allSignatures, guestBookPage);\r\n                                        exports.NextButton.visible = true;\r\n                                        if (guestBookPage == 1) {\r\n                                            exports.LastButton.visible = false;\r\n                                        }\r\n                                        return [2 /*return*/];\r\n                                }\r\n                            });\r\n                        }); });\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    }\r\n    exports.openUI = openUI;\r\n    function closeUI() {\r\n        exports.background.visible = false;\r\n        exports.background.isPointerBlocker = false;\r\n    }\r\n    exports.closeUI = closeUI;\r\n    exports.background = new UIImage(exports.screenSpaceUI, imageTexture);\r\n    exports.background.name = 'background';\r\n    exports.background.width = 1024 * scaleMultiplier;\r\n    exports.background.height = 921 * scaleMultiplier;\r\n    exports.background.hAlign = 'center';\r\n    exports.background.vAlign = 'center';\r\n    exports.background.sourceLeft = 0;\r\n    exports.background.sourceTop = 76;\r\n    exports.background.sourceWidth = 1024;\r\n    exports.background.sourceHeight = 921;\r\n    exports.background.visible = false;\r\n    exports.background.isPointerBlocker = false;\r\n    exports.headerText = new UIText(exports.background);\r\n    exports.headerText.value = 'I was also blown away by the crater!';\r\n    exports.headerText.name = 'header';\r\n    exports.headerText.width = '650px';\r\n    exports.headerText.height = '800px';\r\n    exports.headerText.hAlign = 'center';\r\n    exports.headerText.vAlign = 'center';\r\n    exports.headerText.positionY = 230;\r\n    exports.headerText.positionX = 0;\r\n    exports.headerText.fontSize = 25;\r\n    exports.headerText.vTextAlign = 'center';\r\n    exports.headerText.hTextAlign = 'center';\r\n    exports.headerText.color = Color4.Black();\r\n    exports.signaturesUI = new UIText(exports.background);\r\n    exports.signaturesUI.value = 'Fetching signatures';\r\n    exports.signaturesUI.name = 'signatures';\r\n    exports.signaturesUI.width = '650px';\r\n    exports.signaturesUI.height = '800px';\r\n    exports.signaturesUI.hAlign = 'center';\r\n    exports.signaturesUI.vAlign = 'center';\r\n    exports.signaturesUI.positionY = 0;\r\n    exports.signaturesUI.positionX = 0;\r\n    exports.signaturesUI.fontSize = 25;\r\n    exports.signaturesUI.vTextAlign = 'center';\r\n    exports.signaturesUI.hTextAlign = 'center';\r\n    exports.signaturesUI.color = Color4.FromHexString('#53508F88');\r\n    exports.SignButton = new UIImage(exports.background, imageTexture);\r\n    exports.SignButton.name = 'SignButton';\r\n    exports.SignButton.width = 460 * scaleMultiplier;\r\n    exports.SignButton.height = 75 * scaleMultiplier;\r\n    exports.SignButton.hAlign = 'center';\r\n    exports.SignButton.vAlign = 'center';\r\n    exports.SignButton.positionY = (-839 + 921 / 2) * scaleMultiplier;\r\n    exports.SignButton.positionX = 0;\r\n    exports.SignButton.sourceLeft = 76;\r\n    exports.SignButton.sourceTop = 0;\r\n    exports.SignButton.sourceWidth = 460;\r\n    exports.SignButton.sourceHeight = 75;\r\n    exports.NextButton = new UIImage(exports.background, imageTexture);\r\n    exports.NextButton.name = 'NextButton';\r\n    exports.NextButton.width = 76 * scaleMultiplier;\r\n    exports.NextButton.height = 76 * scaleMultiplier;\r\n    exports.NextButton.hAlign = 'center';\r\n    exports.NextButton.vAlign = 'center';\r\n    exports.NextButton.positionY = 0;\r\n    exports.NextButton.positionX = 300;\r\n    exports.NextButton.sourceLeft = 537;\r\n    exports.NextButton.sourceTop = 0;\r\n    exports.NextButton.sourceWidth = 75;\r\n    exports.NextButton.sourceHeight = 75;\r\n    exports.LastButton = new UIImage(exports.background, imageTexture);\r\n    exports.LastButton.name = 'LastButton';\r\n    exports.LastButton.width = 76 * scaleMultiplier;\r\n    exports.LastButton.height = 76 * scaleMultiplier;\r\n    exports.LastButton.hAlign = 'center';\r\n    exports.LastButton.vAlign = 'center';\r\n    exports.LastButton.positionY = 0;\r\n    exports.LastButton.positionX = -300;\r\n    exports.LastButton.sourceLeft = 0;\r\n    exports.LastButton.sourceTop = 0;\r\n    exports.LastButton.sourceWidth = 75;\r\n    exports.LastButton.sourceHeight = 75;\r\n    // arrange all signatures into pages\r\n    function displaySignatures(allSignatures, guestBookPage) {\r\n        var signaturePage = 0;\r\n        var signatureList = [''];\r\n        for (var i = 0; i < allSignatures.length; i++) {\r\n            signatureList[signaturePage] = signatureList[signaturePage].concat(allSignatures[i].name);\r\n            signatureList[signaturePage] = signatureList[signaturePage].concat(' - ');\r\n            var lines = signatureList[signaturePage].split('\\n');\r\n            if (lines[lines.length - 1].length > 25) {\r\n                signatureList[signaturePage] = signatureList[signaturePage].concat('\\n');\r\n            }\r\n            if (lines.length >= linesPerGuestBookPage) {\r\n                signaturePage += 1;\r\n                signatureList.push('');\r\n                //guestBookPage\r\n            }\r\n        }\r\n        exports.signaturesUI.value = signatureList[guestBookPage - 1];\r\n        log('signature to show from page ', guestBookPage, ' :', signatureList[guestBookPage - 1]);\r\n        return signatureList.length;\r\n    }\r\n    // Instance the input object\r\n    var input = Input.instance;\r\n    //button down event\r\n    input.subscribe('BUTTON_DOWN', ActionButton.POINTER, false, function (e) {\r\n        var currentTime = +Date.now();\r\n        var isOpen;\r\n        if (exports.background.visible) {\r\n            isOpen = true;\r\n        }\r\n        else {\r\n            isOpen = false;\r\n        }\r\n        if (isOpen && currentTime - UIOpenTime > 100) {\r\n            closeUI();\r\n        }\r\n    });\r\n});\r\ndefine(\"src/guestbook\", [\"require\", \"exports\", \"src/ui\"], function (require, exports, ui_1) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    exports.GuestBook = exports.fireBaseServer = void 0;\r\n    // external servers being used by the project - Please change these to your own if working on something else!\r\n    exports.fireBaseServer = 'https://us-central1-dcl-guestbook.cloudfunctions.net/app/';\r\n    // get player data\r\n    var GuestBook = /** @class */ (function (_super) {\r\n        __extends(GuestBook, _super);\r\n        function GuestBook(transform, eventName\r\n        //,sound: AudioClip\r\n        ) {\r\n            var _this = _super.call(this) || this;\r\n            engine.addEntity(_this);\r\n            _this.addComponent(new GLTFShape('models/guestbook/guestbook.glb'));\r\n            _this.addComponent(new Transform(transform));\r\n            _this.eventName = eventName;\r\n            _this.addComponent(new OnPointerDown(function () {\r\n                ui_1.openUI(eventName);\r\n                log('OPENED GUESTBOOK');\r\n            }, { hoverText: 'Open' }));\r\n            var guestBookBase = new Entity();\r\n            guestBookBase.addComponent(new Transform());\r\n            guestBookBase.addComponent(new GLTFShape('models/guestbook/guestbook_base.glb'));\r\n            guestBookBase.setParent(_this);\r\n            return _this;\r\n        }\r\n        return GuestBook;\r\n    }(Entity));\r\n    exports.GuestBook = GuestBook;\r\n});\r\ndefine(\"src/game\", [\"require\", \"exports\", \"src/builderContent\", \"src/guestbook\"], function (require, exports, builderContent_1, guestbook_1) {\r\n    \"use strict\";\r\n    Object.defineProperty(exports, \"__esModule\", { value: true });\r\n    builderContent_1.buildBuilderScene();\r\n    var guestBook = new guestbook_1.GuestBook({\r\n        position: new Vector3(8, 0, 10),\r\n        rotation: Quaternion.Euler(0, 300, 0),\r\n    }, 'test');\r\n});\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9kZWNlbnRyYWxhbmQtYnVpbGRlci1zY3JpcHRzL2NoYW5uZWwudHMiLCIuLi9ub2RlX21vZHVsZXMvZGVjZW50cmFsYW5kLWJ1aWxkZXItc2NyaXB0cy9pbnZlbnRvcnkudHMiLCIuLi8xYWI3ODhiZi0xMDdkLTRiOTEtODgxZS00OGRmYjFkNDYyODQvc3JjL2l0ZW0udHMiLCIuLi8zZjNmZTY1Yi1jNjQ4LTQ0YmMtODc4MS1jMmE0MGJjOTViYjQvc3JjL2l0ZW0udHMiLCIuLi8xYTdiOTRlMC1hYzYyLTQ1MzktYmIwOC02NWY0ZmM0ZDY2YWMvc3JjL2l0ZW0udHMiLCIuLi8xZGMwMzQ1YS1mNWRkLTQzYjYtYmYxNC0zMGU3NzUyMTAxYjQvc3JjL2l0ZW0udHMiLCIuLi82ZjU0ZWExNy00M2JjLTRiMWUtYThjMS1jOWIyNGZmNmUwMzgvc3JjL2l0ZW0udHMiLCIuLi9zcmMvYnVpbGRlckNvbnRlbnQudHMiLCIuLi9zcmMvc2VydmVySGFuZGxlci50cyIsIi4uL3NyYy91aS50cyIsIi4uL3NyYy9ndWVzdGJvb2sudHMiLCIuLi9zcmMvZ2FtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFDQUFxQzs7Ozs7SUFlckMsSUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUE7SUFDekMsSUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUE7SUFDckMsSUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFBO0lBSzFCLFNBQWdCLGFBQWEsQ0FBQyxFQUFVLEVBQUUsSUFBUyxFQUFFLEdBQVE7UUFDM0QsSUFBTSxRQUFRLEdBQTBDLEVBQUUsQ0FBQTtRQUMxRCxJQUFJLFFBQVEsR0FBeUMsRUFBRSxDQUFBO1FBQ3ZELElBQU0sU0FBUyxHQUE4QixFQUFFLENB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QUksU0FBUyxHQUFHLElBQUkscUJBQVMsQ0FDM0I7UUFDRSxRQUFRLEVBQUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDL0IsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDdEMsRUFDRCxNQUFNLENBQ1AsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGVzLmQudHNcIiAvPlxuXG50eXBlIFJlcXVlc3RNZXNzYWdlID0ge1xuICBlbnRpdHlOYW1lOiBzdHJpbmdcbiAga2V5OiBzdHJpbmdcbiAgc2VuZGVyOiBzdHJpbmdcbn1cblxudHlwZSBSZXBseU1lc3NhZ2UgPSB7XG4gIGVudGl0eU5hbWU6IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICBzZW5kZXI6IHN0cmluZ1xuICB2YWx1ZTogc3RyaW5nXG59XG5cbmNvbnN0IFJFUVVFU1RfVkFMVUUgPSAnX19yZXF1ZXN0X3ZhbHVlX18nXG5jb25zdCBSRVBMWV9WQUxVRSA9ICdfX3JlcGx5X3ZhbHVlX18nXG5jb25zdCBQT0xMX0lOVEVSVkFMID0gNTAwMFxuXG5kZWNsYXJlIHZhciBzZXRJbnRlcnZhbDogYW55XG5kZWNsYXJlIHZhciBjbGVhckludGVydmFsOiBhbnlcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoYW5uZWwoaWQ6IHN0cmluZywgaG9zdDogYW55LCBidXM6IEJ1cyk6IElDaGFubmVsIHtcbiAgY29uc3QgaGFuZGxlcnM6IFJlY29yZDxzdHJpbmcsICh2YWx1ZXM6IGFueSkgPT4gdm9pZD4gPSB7fVxuICBsZXQgcmVxdWVzdHM6IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiB2b2lkPiA9IHt9XG4gIGNvbnN0IHJlc3BvbnNlczogUmVjb3JkPHN0cmluZywgKCkgPT4gYW55PiA9IHt9XG5cbiAgYnVzLm9uKGhvc3QubmFtZSwgKGFjdGlvbjogQWN0aW9uPGFueT4pID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlcnNbYWN0aW9uLmFjdGlvbklkXVxuICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICBoYW5kbGVyKGFjdGlvbilcbiAgICB9XG4gICAgLy8gY2xlYXIgYWxsIHBlbmRpbmcgcmVxdWVzdHMgZm9yIHRoaXMgZW50aXR5XG4gICAgcmVxdWVzdHMgPSB7fVxuICB9KVxuXG4gIGJ1cy5vbihSRVFVRVNUX1ZBTFVFLCAobWVzc2FnZTogUmVxdWVzdE1lc3NhZ2UpID0+IHtcbiAgICBpZiAobWVzc2FnZS5zZW5kZXIgIT09IGlkICYmIG1lc3NhZ2UuZW50aXR5TmFtZSA9PT0gaG9zdC5uYW1lKSB7XG4gICAgICBjb25zdCB7IGtleSB9ID0gbWVzc2FnZVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXNwb25zZXNba2V5XVxuICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmVzcG9uc2UoKVxuICAgICAgICBjb25zdCByZXBseTogUmVwbHlNZXNzYWdlID0ge1xuICAgICAgICAgIGVudGl0eU5hbWU6IGhvc3QubmFtZSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgc2VuZGVyOiBpZCxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9XG4gICAgICAgIGJ1cy5lbWl0KFJFUExZX1ZBTFVFLCByZXBseSlcbiAgICAgIH1cbiAgICAgIC8vIGNsZWFyIHBlbmRpbmcgcmVxdWVzdCBmb3IgdGhpcyBrZXlcbiAgICAgIGRlbGV0ZSByZXF1ZXN0c1trZXldXG4gICAgfVxuICB9KVxuXG4gIGJ1cy5vbihSRVBMWV9WQUxVRSwgKG1lc3NhZ2U6IFJlcGx5TWVzc2FnZSkgPT4ge1xuICAgIGlmIChtZXNzYWdlLnNlbmRlciAhPT0gaWQgJiYgbWVzc2FnZS5lbnRpdHlOYW1lID09PSBob3N0Lm5hbWUpIHtcbiAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gbWVzc2FnZVxuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVlc3RzW2tleV1cbiAgICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICAgIHJlcXVlc3QodmFsdWUpXG4gICAgICB9XG4gICAgICAvLyBjbGVhciBwZW5kaW5nIHJlcXVlc3QgZm9yIHRoaXMga2V5XG4gICAgICBkZWxldGUgcmVxdWVzdHNba2V5XVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIGJ1cyxcbiAgICBjcmVhdGVBY3Rpb248VCBleHRlbmRzIHt9PihhY3Rpb25JZDogc3RyaW5nLCB2YWx1ZXM6IFQpIHtcbiAgICAgIGNvbnN0IGFjdGlvbjogQmFzZUFjdGlvbjxUPiA9IHtcbiAgICAgICAgZW50aXR5TmFtZTogaG9zdC5uYW1lLFxuICAgICAgICBhY3Rpb25JZCxcbiAgICAgICAgdmFsdWVzXG4gICAgICB9XG4gICAgICByZXR1cm4gYWN0aW9uXG4gICAgfSxcbiAgICBzZW5kQWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25zID0gW10pIHtcbiAgICAgIGZvciAoY29uc3QgYmFzZSBvZiBhY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbjogQWN0aW9uPGFueT4gPSB7IC4uLmJhc2UsIHNlbmRlcjogaWQgfVxuICAgICAgICBidXMuZW1pdChhY3Rpb24uZW50aXR5TmFtZSwgYWN0aW9uKVxuICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQWN0aW9uPFQ+KGFjdGlvbklkOiBzdHJpbmcsIGhhbmRsZXI6ICh2YWx1ZXM6IFQpID0+IHZvaWQpIHtcbiAgICAgIGhhbmRsZXJzW2FjdGlvbklkXSA9IGhhbmRsZXJcbiAgICB9LFxuICAgIHJlcXVlc3Q8VD4oa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpIHtcbiAgICAgIHJlcXVlc3RzW2tleV0gPSBjYWxsYmFja1xuICAgICAgY29uc3QgcmVxdWVzdDogUmVxdWVzdE1lc3NhZ2UgPSB7IGVudGl0eU5hbWU6IGhvc3QubmFtZSwga2V5LCBzZW5kZXI6IGlkIH1cbiAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIHJlcXVlc3RzKSB7XG4gICAgICAgICAgYnVzLmVtaXQoUkVRVUVTVF9WQUxVRSwgcmVxdWVzdClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKVxuICAgICAgICB9XG4gICAgICB9LCBQT0xMX0lOVEVSVkFMKVxuICAgIH0sXG4gICAgcmVwbHk8VD4oa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiBUKSB7XG4gICAgICByZXNwb25zZXNba2V5XSA9IGNhbGxiYWNrXG4gICAgfVxuICB9XG59XG4iLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBlcy5kLnRzXCIgLz5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludmVudG9yeShcbiAgVUlDYW52YXM6IGFueSxcbiAgVUlDb250YWluZXJTdGFjazogYW55LFxuICBVSUltYWdlOiBhbnlcbik6IElJbnZlbnRvcnkge1xuICBsZXQgY2FudmFzOiBhbnkgPSBudWxsXG4gIGxldCBjb250YWluZXI6IGFueSA9IG51bGxcbiAgbGV0IGltYWdlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG5cbiAgZnVuY3Rpb24gZ2V0Q29udGFpbmVyKCkge1xuICAgIGlmICghY2FudmFzKSB7XG4gICAgICBjYW52YXMgPSBuZXcgVUlDYW52YXMoKVxuICAgIH1cbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gbmV3IFVJQ29udGFpbmVyU3RhY2soY2FudmFzKVxuICAgICAgY29udGFpbmVyLmlzUG9pbnRlckJsb2NrZXIgPSBmYWxzZVxuICAgICAgY29udGFpbmVyLnZBbGlnbiA9ICdib3R0b20nXG4gICAgICBjb250YWluZXIuaEFsaWduID0gJ3JpZ2h0J1xuICAgICAgY29udGFpbmVyLnN0YWNrT3JpZW50YXRpb24gPSAwXG4gICAgICBjb250YWluZXIuc3BhY2luZyA9IDBcbiAgICAgIGNvbnRhaW5lci5wb3NpdGlvblkgPSA3NVxuICAgICAgY29udGFpbmVyLnBvc2l0aW9uWCA9IC0yNVxuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFkZChpZDogc3RyaW5nLCB0ZXh0dXJlOiBhbnkpIHtcbiAgICAgIGNvbnN0IGltYWdlID0gaW1hZ2VzW2lkXSB8fCBuZXcgVUlJbWFnZShnZXRDb250YWluZXIoKSwgdGV4dHVyZSlcbiAgICAgIGltYWdlLndpZHRoID0gMTI4XG4gICAgICBpbWFnZS5oZWlnaHQgPSAxMjhcbiAgICAgIGltYWdlLnNvdXJjZVRvcCA9IDBcbiAgICAgIGltYWdlLnNvdXJjZUxlZnQgPSAwXG4gICAgICBpbWFnZS5zb3VyY2VIZWlnaHQgPSAyNTZcbiAgICAgIGltYWdlLnNvdXJjZVdpZHRoID0gMjU2XG4gICAgICBpbWFnZS5pc1BvaW50ZXJCbG9ja2VyID0gZmFsc2VcbiAgICAgIGltYWdlLnZpc2libGUgPSB0cnVlXG4gICAgICBpbWFnZXNbaWRdID0gaW1hZ2VcbiAgICB9LFxuXG4gICAgcmVtb3ZlKGlkOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGltYWdlID0gaW1hZ2VzW2lkXVxuICAgICAgaWYgKGltYWdlKSB7XG4gICAgICAgIGltYWdlLnZpc2libGUgPSBmYWxzZVxuICAgICAgICBpbWFnZS5oZWlnaHQgPSAwXG4gICAgICAgIGltYWdlLndpZHRoID0gMFxuICAgICAgfVxuICAgIH0sXG5cbiAgICBoYXMoaWQ6IHN0cmluZykge1xuICAgICAgcmV0dXJuIGlkIGluIGltYWdlcyAmJiBpbWFnZXNbaWRdLnZpc2libGVcbiAgICB9XG4gIH1cbn1cbiIsImV4cG9ydCB0eXBlIFByb3BzID0ge1xuICB0ZXh0Pzogc3RyaW5nXG4gIGZvbnRTaXplPzogbnVtYmVyXG59XG5cbnR5cGUgQ2hhbmdlVGV4dFR5cGUgPSB7IG5ld1RleHQ6IHN0cmluZyB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNpZ25Qb3N0IGltcGxlbWVudHMgSVNjcmlwdDxQcm9wcz4ge1xuICBpbml0KCkgeyB9XG5cbiAgc3Bhd24oaG9zdDogRW50aXR5LCBwcm9wczogUHJvcHMsIGNoYW5uZWw6IElDaGFubmVsKSB7XG4gICAgY29uc3Qgc2lnbiA9IG5ldyBFbnRpdHkoKVxuICAgIHNpZ24uc2V0UGFyZW50KGhvc3QpXG5cbiAgICBzaWduLmFkZENvbXBvbmVudChuZXcgR0xURlNoYXBlKCcxYWI3ODhiZi0xMDdkLTRiOTEtODgxZS00OGRmYjFkNDYyODQvbW9kZWxzL3NpZ25wb3N0L1NpZ25Qb3N0LmdsYicpKVxuXG4gICAgbGV0IHNpZ25UZXh0ID0gbmV3IEVudGl0eSgpXG4gICAgc2lnblRleHQuc2V0UGFyZW50KGhvc3QpXG4gICAgbGV0IHRleHQgPSBuZXcgVGV4dFNoYXBlKHByb3BzLnRleHQpXG4gICAgdGV4dC5mb250U2l6ZSA9IHByb3BzLmZvbnRTaXplXG4gICAgdGV4dC5jb2xvciA9IENvbG9yMy5XaGl0ZSgpXG5cbiAgICB0ZXh0LndpZHRoID0gMjBcbiAgICB0ZXh0LmhlaWdodCA9IDEwXG4gICAgdGV4dC5oVGV4dEFsaWduID0gJ2NlbnRlcidcblxuICAgIHNpZ25UZXh0LmFkZENvbXBvbmVudCh0ZXh0KVxuXG4gICAgc2lnblRleHQuYWRkQ29tcG9uZW50KFxuICAgICAgbmV3IFRyYW5zZm9ybSh7XG4gICAgICAgIHBvc2l0aW9uOiBuZXcgVmVjdG9yMygtMC4xNzIsIDEuNiwgLTAuMiksXG4gICAgICAgIHJvdGF0aW9uOiBRdWF0ZXJuaW9uLkV1bGVyKDUsIDkwLCAwKSxcbiAgICAgICAgc2NhbGU6IG5ldyBWZWN0b3IzKDAuMDUsIDAuMDUsIDAuMDUpXG4gICAgICB9KVxuICAgIClcblxuICAgIGNoYW5uZWwuaGFuZGxlQWN0aW9uPENoYW5nZVRleHRUeXBlPignY2hhbmdlVGV4dCcsIGFjdGlvbiA9PiB7XG4gICAgICB0ZXh0LnZhbHVlID0gYWN0aW9uLnZhbHVlcy5uZXdUZXh0XG4gICAgfSlcblxuICAgIGNoYW5uZWwucmVxdWVzdDxzdHJpbmc+KCdnZXRUZXh0Jywgc2lnblRleHQgPT4gKHRleHQudmFsdWUgPSBzaWduVGV4dCkpXG4gICAgY2hhbm5lbC5yZXBseTxzdHJpbmc+KCdnZXRUZXh0JywgKCkgPT4gdGV4dC52YWx1ZSlcbiAgfVxufVxuIiwiZXhwb3J0IHR5cGUgUHJvcHMgPSB7XG4gIHRleHQ/OiBzdHJpbmdcbiAgZm9udFNpemU/OiBudW1iZXJcbn1cblxudHlwZSBDaGFuZ2VUZXh0VHlwZSA9IHsgbmV3VGV4dDogc3RyaW5nIH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2lnblBvc3QgaW1wbGVtZW50cyBJU2NyaXB0PFByb3BzPiB7XG4gIGluaXQoKSB7fVxuXG4gIHNwYXduKGhvc3Q6IEVudGl0eSwgcHJvcHM6IFByb3BzLCBjaGFubmVsOiBJQ2hhbm5lbCkge1xuICAgIGNvbnN0IHNpZ24gPSBuZXcgRW50aXR5KClcbiAgICBzaWduLnNldFBhcmVudChob3N0KVxuXG4gICAgc2lnbi5hZGRDb21wb25lbnQobmV3IEdMVEZTaGFwZSgnM2YzZmU2NWItYzY0OC00NGJjLTg3ODEtYzJhNDBiYzk1YmI0L21vZGVscy9zaWducG9zdC9TaWducG9zdF9Sb290LmdsYicpKVxuXG4gICAgbGV0IHNpZ25UZXh0ID0gbmV3IEVudGl0eSgpXG4gICAgc2lnblRleHQuc2V0UGFyZW50KGhvc3QpXG4gICAgbGV0IHRleHQgPSBuZXcgVGV4dFNoYXBlKHByb3BzLnRleHQpXG4gICAgdGV4dC5mb250U2l6ZSA9IHByb3BzLmZvbnRTaXplXG4gICAgdGV4dC5jb2xvciA9IENvbG9yMy5XaGl0ZSgpXG5cbiAgICB0ZXh0LndpZHRoID0gMjBcbiAgICB0ZXh0LmhlaWdodCA9IDEwXG4gICAgdGV4dC5oVGV4dEFsaWduID0gJ2NlbnRlcidcblxuICAgIHNpZ25UZXh0LmFkZENvbXBvbmVudCh0ZXh0KVxuXG4gICAgc2lnblRleHQuYWRkQ29tcG9uZW50KFxuICAgICAgbmV3IFRyYW5zZm9ybSh7XG4gICAgICAgIHBvc2l0aW9uOiBuZXcgVmVjdG9yMygtMC4xLCAxLjMsIDAuMyksXG4gICAgICAgIHJvdGF0aW9uOiBRdWF0ZXJuaW9uLkV1bGVyKDAsIDE4MCwgMCksXG4gICAgICAgIHNjYWxlOiBuZXcgVmVjdG9yMygwLjA1LCAwLjA1LCAwLjA1KVxuICAgICAgfSlcbiAgICApXG5cbiAgICBjaGFubmVsLmhhbmRsZUFjdGlvbjxDaGFuZ2VUZXh0VHlwZT4oJ2NoYW5nZVRleHQnLCBhY3Rpb24gPT4ge1xuICAgICAgdGV4dC52YWx1ZSA9IGFjdGlvbi52YWx1ZXMubmV3VGV4dFxuICAgIH0pXG5cbiAgICBjaGFubmVsLnJlcXVlc3Q8c3RyaW5nPignZ2V0VGV4dCcsIHNpZ25UZXh0ID0+ICh0ZXh0LnZhbHVlID0gc2lnblRleHQpKVxuICAgIGNoYW5uZWwucmVwbHk8c3RyaW5nPignZ2V0VGV4dCcsICgpID0+IHRleHQudmFsdWUpXG4gIH1cbn1cbiIsImV4cG9ydCB0eXBlIFByb3BzID0ge1xuICB0ZXh0Pzogc3RyaW5nXG4gIGZvbnRTaXplPzogbnVtYmVyXG59XG5cbnR5cGUgQ2hhbmdlVGV4dFR5cGUgPSB7IG5ld1RleHQ6IHN0cmluZyB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNpZ25Qb3N0IGltcGxlbWVudHMgSVNjcmlwdDxQcm9wcz4ge1xuICBpbml0KCkgeyB9XG5cbiAgc3Bhd24oaG9zdDogRW50aXR5LCBwcm9wczogUHJvcHMsIGNoYW5uZWw6IElDaGFubmVsKSB7XG4gICAgY29uc3Qgc2lnbiA9IG5ldyBFbnRpdHkoKVxuICAgIHNpZ24uc2V0UGFyZW50KGhvc3QpXG5cbiAgICBzaWduLmFkZENvbXBvbmVudChuZXcgR0xURlNoYXBlKCcxYTdiOTRlMC1hYzYyLTQ1MzktYmIwOC02NWY0ZmM0ZDY2YWMvbW9kZWxzL3NpZ25wb3N0L1NpZ25Qb3N0X3dvb2QuZ2xiJykpXG5cbiAgICBsZXQgc2lnblRleHQgPSBuZXcgRW50aXR5KClcbiAgICBzaWduVGV4dC5zZXRQYXJlbnQoaG9zdClcbiAgICBsZXQgdGV4dCA9IG5ldyBUZXh0U2hhcGUocHJvcHMudGV4dClcbiAgICB0ZXh0LmZvbnRTaXplID0gcHJvcHMuZm9udFNpemVcbiAgICB0ZXh0LmNvbG9yID0gQ29sb3IzLldoaXRlKClcblxuICAgIHRleHQud2lkdGggPSAyMFxuICAgIHRleHQuaGVpZ2h0ID0gMTBcbiAgICB0ZXh0LmhUZXh0QWxpZ24gPSAnY2VudGVyJ1xuXG4gICAgc2lnblRleHQuYWRkQ29tcG9uZW50KHRleHQpXG5cbiAgICBzaWduVGV4dC5hZGRDb21wb25lbnQoXG4gICAgICBuZXcgVHJhbnNmb3JtKHtcbiAgICAgICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDAsIDEsIDAuMzMpLFxuICAgICAgICByb3RhdGlvbjogUXVhdGVybmlvbi5FdWxlcigwLCAxODAsIDApLFxuICAgICAgICBzY2FsZTogbmV3IFZlY3RvcjMoMC4wNSwgMC4wNSwgMC4wNSlcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgY2hhbm5lbC5oYW5kbGVBY3Rpb248Q2hhbmdlVGV4dFR5cGU+KCdjaGFuZ2VUZXh0JywgYWN0aW9uID0+IHtcbiAgICAgIHRleHQudmFsdWUgPSBhY3Rpb24udmFsdWVzLm5ld1RleHRcbiAgICB9KVxuXG4gICAgY2hhbm5lbC5yZXF1ZXN0PHN0cmluZz4oJ2dldFRleHQnLCBzaWduVGV4dCA9PiAodGV4dC52YWx1ZSA9IHNpZ25UZXh0KSlcbiAgICBjaGFubmVsLnJlcGx5PHN0cmluZz4oJ2dldFRleHQnLCAoKSA9PiB0ZXh0LnZhbHVlKVxuICB9XG59XG4iLCJleHBvcnQgdHlwZSBQcm9wcyA9IHtcbiAgdGV4dD86IHN0cmluZ1xuICBmb250U2l6ZT86IG51bWJlclxufVxuXG50eXBlIENoYW5nZVRleHRUeXBlID0geyBuZXdUZXh0OiBzdHJpbmcgfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaWduUG9zdCBpbXBsZW1lbnRzIElTY3JpcHQ8UHJvcHM+IHtcbiAgaW5pdCgpIHt9XG5cbiAgc3Bhd24oaG9zdDogRW50aXR5LCBwcm9wczogUHJvcHMsIGNoYW5uZWw6IElDaGFubmVsKSB7XG4gICAgY29uc3Qgc2lnbiA9IG5ldyBFbnRpdHkoKVxuICAgIHNpZ24uc2V0UGFyZW50KGhvc3QpXG5cbiAgICBzaWduLmFkZENvbXBvbmVudChuZXcgR0xURlNoYXBlKCcxZGMwMzQ1YS1mNWRkLTQzYjYtYmYxNC0zMGU3NzUyMTAxYjQvbW9kZWxzL3NpZ25wb3N0L1NpZ25wb3N0X0dvbGRlbi5nbGInKSlcblxuICAgIGxldCBzaWduVGV4dCA9IG5ldyBFbnRpdHkoKVxuICAgIHNpZ25UZXh0LnNldFBhcmVudChob3N0KVxuICAgIGxldCB0ZXh0ID0gbmV3IFRleHRTaGFwZShwcm9wcy50ZXh0KVxuICAgIHRleHQuZm9udFNpemUgPSBwcm9wcy5mb250U2l6ZVxuICAgIHRleHQuY29sb3IgPSBDb2xvcjMuV2hpdGUoKVxuXG4gICAgdGV4dC53aWR0aCA9IDIwXG4gICAgdGV4dC5oZWlnaHQgPSAxMFxuICAgIHRleHQuaFRleHRBbGlnbiA9ICdjZW50ZXInXG5cbiAgICBzaWduVGV4dC5hZGRDb21wb25lbnQodGV4dClcblxuICAgIHNpZ25UZXh0LmFkZENvbXBvbmVudChcbiAgICAgIG5ldyBUcmFuc2Zvcm0oe1xuICAgICAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoMCwgMi4wOCwgMC4wMjUpLFxuICAgICAgICByb3RhdGlvbjogUXVhdGVybmlvbi5FdWxlcigwLCAxODAsIDApLFxuICAgICAgICBzY2FsZTogbmV3IFZlY3RvcjMoMC4wNSwgMC4wNSwgMC4wNSlcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgY2hhbm5lbC5oYW5kbGVBY3Rpb248Q2hhbmdlVGV4dFR5cGU+KCdjaGFuZ2VUZXh0JywgYWN0aW9uID0+IHtcbiAgICAgIHRleHQudmFsdWUgPSBhY3Rpb24udmFsdWVzLm5ld1RleHRcbiAgICB9KVxuXG4gICAgY2hhbm5lbC5yZXF1ZXN0PHN0cmluZz4oJ2dldFRleHQnLCBzaWduVGV4dCA9PiAodGV4dC52YWx1ZSA9IHNpZ25UZXh0KSlcbiAgICBjaGFubmVsLnJlcGx5PHN0cmluZz4oJ2dldFRleHQnLCAoKSA9PiB0ZXh0LnZhbHVlKVxuICB9XG59XG4iLCJleHBvcnQgdHlwZSBQcm9wcyA9IHtcbiAgdGV4dD86IHN0cmluZ1xuICBmb250U2l6ZT86IG51bWJlclxufVxuXG50eXBlIENoYW5nZVRleHRUeXBlID0geyBuZXdUZXh0OiBzdHJpbmcgfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaWduUG9zdCBpbXBsZW1lbnRzIElTY3JpcHQ8UHJvcHM+IHtcbiAgaW5pdCgpIHsgfVxuXG4gIHNwYXduKGhvc3Q6IEVudGl0eSwgcHJvcHM6IFByb3BzLCBjaGFubmVsOiBJQ2hhbm5lbCkge1xuICAgIGNvbnN0IHNpZ24gPSBuZXcgRW50aXR5KClcbiAgICBzaWduLnNldFBhcmVudChob3N0KVxuXG4gICAgc2lnbi5hZGRDb21wb25lbnQobmV3IEdMVEZTaGFwZSgnNmY1NGVhMTctNDNiYy00YjFlLWE4YzEtYzliMjRmZjZlMDM4L21vZGVscy9zaWducG9zdC9TaWduUG9zdF9DaXJjbGUuZ2xiJykpXG5cbiAgICBsZXQgc2lnblRleHQgPSBuZXcgRW50aXR5KClcbiAgICBzaWduVGV4dC5zZXRQYXJlbnQoaG9zdClcbiAgICBsZXQgdGV4dCA9IG5ldyBUZXh0U2hhcGUocHJvcHMudGV4dClcbiAgICB0ZXh0LmZvbnRTaXplID0gcHJvcHMuZm9udFNpemVcbiAgICB0ZXh0LmNvbG9yID0gQ29sb3IzLkJsYWNrKClcblxuICAgIHRleHQub3V0bGluZUNvbG9yID0gQ29sb3IzLkJsYWNrKClcbiAgICB0ZXh0Lm91dGxpbmVXaWR0aCA9IDAuM1xuXG4gICAgdGV4dC53aWR0aCA9IDIwXG4gICAgdGV4dC5oZWlnaHQgPSAxMFxuICAgIHRleHQuaFRleHRBbGlnbiA9ICdjZW50ZXInXG5cbiAgICBzaWduVGV4dC5hZGRDb21wb25lbnQodGV4dClcblxuICAgIHNpZ25UZXh0LmFkZENvbXBvbmVudChcbiAgICAgIG5ldyBUcmFuc2Zvcm0oe1xuICAgICAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoMCwgMi4wNSwgLTAuMDMpLFxuICAgICAgICByb3RhdGlvbjogUXVhdGVybmlvbi5FdWxlcigwLCAwLCAwKSxcbiAgICAgICAgc2NhbGU6IG5ldyBWZWN0b3IzKDAuMDUsIDAuMDUsIDAuMDUpXG4gICAgICB9KVxuICAgIClcblxuICAgIGNoYW5uZWwuaGFuZGxlQWN0aW9uPENoYW5nZVRleHRUeXBlPignY2hhbmdlVGV4dCcsIGFjdGlvbiA9PiB7XG4gICAgICB0ZXh0LnZhbHVlID0gYWN0aW9uLnZhbHVlcy5uZXdUZXh0XG4gICAgfSlcblxuICAgIGNoYW5uZWwucmVxdWVzdDxzdHJpbmc+KCdnZXRUZXh0Jywgc2lnblRleHQgPT4gKHRleHQudmFsdWUgPSBzaWduVGV4dCkpXG4gICAgY2hhbm5lbC5yZXBseTxzdHJpbmc+KCdnZXRUZXh0JywgKCkgPT4gdGV4dC52YWx1ZSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgY3JlYXRlQ2hhbm5lbCB9IGZyb20gJy4uL25vZGVfbW9kdWxlcy9kZWNlbnRyYWxhbmQtYnVpbGRlci1zY3JpcHRzL2NoYW5uZWwnXG5pbXBvcnQgeyBjcmVhdGVJbnZlbnRvcnkgfSBmcm9tICcuLi9ub2RlX21vZHVsZXMvZGVjZW50cmFsYW5kLWJ1aWxkZXItc2NyaXB0cy9pbnZlbnRvcnknXG5pbXBvcnQgU2NyaXB0MSBmcm9tICcuLi8xYWI3ODhiZi0xMDdkLTRiOTEtODgxZS00OGRmYjFkNDYyODQvc3JjL2l0ZW0nXG5pbXBvcnQgU2NyaXB0MiBmcm9tICcuLi8zZjNmZTY1Yi1jNjQ4LTQ0YmMtODc4MS1jMmE0MGJjOTViYjQvc3JjL2l0ZW0nXG5pbXBvcnQgU2NyaXB0MyBmcm9tICcuLi8xYTdiOTRlMC1hYzYyLTQ1MzktYmIwOC02NWY0ZmM0ZDY2YWMvc3JjL2l0ZW0nXG5pbXBvcnQgU2NyaXB0NCBmcm9tICcuLi8xZGMwMzQ1YS1mNWRkLTQzYjYtYmYxNC0zMGU3NzUyMTAxYjQvc3JjL2l0ZW0nXG5pbXBvcnQgU2NyaXB0NSBmcm9tICcuLi82ZjU0ZWExNy00M2JjLTRiMWUtYThjMS1jOWIyNGZmNmUwMzgvc3JjL2l0ZW0nXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEJ1aWxkZXJTY2VuZSgpIHtcbiAgY29uc3QgX3NjZW5lID0gbmV3IEVudGl0eSgnX3NjZW5lJylcbiAgZW5naW5lLmFkZEVudGl0eShfc2NlbmUpXG4gIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm0oe1xuICAgIHBvc2l0aW9uOiBuZXcgVmVjdG9yMygwLCAwLCAwKSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oMCwgMCwgMCwgMSksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBfc2NlbmUuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybSlcblxuICBjb25zdCBlbnRpdHkgPSBuZXcgRW50aXR5KCdlbnRpdHknKVxuICBlbmdpbmUuYWRkRW50aXR5KGVudGl0eSlcbiAgZW50aXR5LnNldFBhcmVudChfc2NlbmUpXG4gIGNvbnN0IGdsdGZTaGFwZSA9IG5ldyBHTFRGU2hhcGUoXG4gICAgJ21vZGVscy9GbG9vckJhc2VHcmFzc18wMS9GbG9vckJhc2VHcmFzc18wMS5nbGInXG4gIClcbiAgZ2x0ZlNoYXBlLndpdGhDb2xsaXNpb25zID0gdHJ1ZVxuICBnbHRmU2hhcGUuaXNQb2ludGVyQmxvY2tlciA9IHRydWVcbiAgZ2x0ZlNoYXBlLnZpc2libGUgPSB0cnVlXG4gIGVudGl0eS5hZGRDb21wb25lbnRPclJlcGxhY2UoZ2x0ZlNoYXBlKVxuICBjb25zdCB0cmFuc2Zvcm0yID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDgsIDAsIDgpLFxuICAgIHJvdGF0aW9uOiBuZXcgUXVhdGVybmlvbigwLCAwLCAwLCAxKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoMSwgMSwgMSksXG4gIH0pXG4gIGVudGl0eS5hZGRDb21wb25lbnRPclJlcGxhY2UodHJhbnNmb3JtMilcblxuICBjb25zdCBuYXJyb3dDcmF0ZXIgPSBuZXcgRW50aXR5KCduYXJyb3dDcmF0ZXInKVxuICBlbmdpbmUuYWRkRW50aXR5KG5hcnJvd0NyYXRlcilcbiAgbmFycm93Q3JhdGVyLnNldFBhcmVudChfc2NlbmUpXG4gIGNvbnN0IHRyYW5zZm9ybTMgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoMTAuMzU1MzYyODkyMTUwODc5LCAwLCA4KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oMCwgMCwgMCwgMSksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBuYXJyb3dDcmF0ZXIuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTMpXG4gIGNvbnN0IGdsdGZTaGFwZTIgPSBuZXcgR0xURlNoYXBlKCdtb2RlbHMvQ3JhdGVyXzAyL0NyYXRlcl8wMi5nbGInKVxuICBnbHRmU2hhcGUyLndpdGhDb2xsaXNpb25zID0gdHJ1ZVxuICBnbHRmU2hhcGUyLmlzUG9pbnRlckJsb2NrZXIgPSB0cnVlXG4gIGdsdGZTaGFwZTIudmlzaWJsZSA9IHRydWVcbiAgbmFycm93Q3JhdGVyLmFkZENvbXBvbmVudE9yUmVwbGFjZShnbHRmU2hhcGUyKVxuXG4gIGNvbnN0IHNpZ25wb3N0ID0gbmV3IEVudGl0eSgnc2lnbnBvc3QnKVxuICBlbmdpbmUuYWRkRW50aXR5KHNpZ25wb3N0KVxuICBzaWducG9zdC5zZXRQYXJlbnQoX3NjZW5lKVxuICBjb25zdCB0cmFuc2Zvcm00ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDExLCAwLCAxMSksXG4gICAgcm90YXRpb246IG5ldyBRdWF0ZXJuaW9uKDAsIDAsIDAsIDEpLFxuICAgIHNjYWxlOiBuZXcgVmVjdG9yMygxLCAxLCAxKSxcbiAgfSlcbiAgc2lnbnBvc3QuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTQpXG5cbiAgY29uc3Qgc2lnbnBvc3RSb290ID0gbmV3IEVudGl0eSgnc2lnbnBvc3RSb290JylcbiAgZW5naW5lLmFkZEVudGl0eShzaWducG9zdFJvb3QpXG4gIHNpZ25wb3N0Um9vdC5zZXRQYXJlbnQoX3NjZW5lKVxuICBjb25zdCB0cmFuc2Zvcm01ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDEwLjM1NTM2Mjg5MjE1MDg3OSwgMCwgNSksXG4gICAgcm90YXRpb246IG5ldyBRdWF0ZXJuaW9uKFxuICAgICAgLTYuNjUwNjQ1OTQ0OTc4NjNlLTE2LFxuICAgICAgLTAuNDcxMzk2NzQ0MjUxMjUxMixcbiAgICAgIDUuNjE5NDg2NzQyNjAyOTMwNWUtOCxcbiAgICAgIDAuODgxOTIxMjkxMzUxMzE4NFxuICAgICksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBzaWducG9zdFJvb3QuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTUpXG5cbiAgY29uc3Qgc2lnbnBvc3RXb29kID0gbmV3IEVudGl0eSgnc2lnbnBvc3RXb29kJylcbiAgZW5naW5lLmFkZEVudGl0eShzaWducG9zdFdvb2QpXG4gIHNpZ25wb3N0V29vZC5zZXRQYXJlbnQoX3NjZW5lKVxuICBjb25zdCB0cmFuc2Zvcm02ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDEwLjg1NTM2Mjg5MjE1MDg3OSwgMCwgOS41KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oXG4gICAgICAtMS41NTEzNjk1MzYxMzczMzkzZS0xNSxcbiAgICAgIC0wLjc5OTczOTEyMjM5MDc0NzEsXG4gICAgICA5LjUzMzYzMjU1MDA3Mzg5ZS04LFxuICAgICAgMC42MDAzNDc2MzgxMzAxODhcbiAgICApLFxuICAgIHNjYWxlOiBuZXcgVmVjdG9yMygwLjk5OTk5NTgyNzY3NDg2NTcsIDEsIDAuOTk5OTk1ODI3Njc0ODY1NyksXG4gIH0pXG4gIHNpZ25wb3N0V29vZC5hZGRDb21wb25lbnRPclJlcGxhY2UodHJhbnNmb3JtNilcblxuICBjb25zdCBzaWducG9zdFJvb3QyID0gbmV3IEVudGl0eSgnc2lnbnBvc3RSb290MicpXG4gIGVuZ2luZS5hZGRFbnRpdHkoc2lnbnBvc3RSb290MilcbiAgc2lnbnBvc3RSb290Mi5zZXRQYXJlbnQoX3NjZW5lKVxuICBjb25zdCB0cmFuc2Zvcm03ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDEyLjM1NTM2Mjg5MjE1MDg3OSwgMCwgNiksXG4gICAgcm90YXRpb246IG5ldyBRdWF0ZXJuaW9uKFxuICAgICAgLTEuMTAwNjI1ODIzNjk1NDFlLTE1LFxuICAgICAgLTAuNjM0MzkzMjc0Nzg0MDg4MSxcbiAgICAgIDcuNTYyNTU2NDQ3NzM3NzM0ZS04LFxuICAgICAgMC43NzMwMTA0MzI3MjAxODQzXG4gICAgKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoXG4gICAgICAxLjQwOTk2NjcwNzIyOTYxNDMsXG4gICAgICAxLjQwOTk2ODM3NjE1OTY2OCxcbiAgICAgIDEuNDA5OTY2NzA3MjI5NjE0M1xuICAgICksXG4gIH0pXG4gIHNpZ25wb3N0Um9vdDIuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTcpXG5cbiAgY29uc3QgYW5jaWVudE1lZGl1bVN0b25lUGF0aCA9IG5ldyBFbnRpdHkoJ2FuY2llbnRNZWRpdW1TdG9uZVBhdGgnKVxuICBlbmdpbmUuYWRkRW50aXR5KGFuY2llbnRNZWRpdW1TdG9uZVBhdGgpXG4gIGFuY2llbnRNZWRpdW1TdG9uZVBhdGguc2V0UGFyZW50KF9zY2VuZSlcbiAgY29uc3QgdHJhbnNmb3JtOCA9IG5ldyBUcmFuc2Zvcm0oe1xuICAgIHBvc2l0aW9uOiBuZXcgVmVjdG9yMyg3LjAxNDQ0MTQ5MDE3MzM0LCAwLCA5LjUpLFxuICAgIHJvdGF0aW9uOiBuZXcgUXVhdGVybmlvbigwLCAwLCAwLCAxKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoMSwgMSwgMSksXG4gIH0pXG4gIGFuY2llbnRNZWRpdW1TdG9uZVBhdGguYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTgpXG4gIGNvbnN0IGdsdGZTaGFwZTMgPSBuZXcgR0xURlNoYXBlKFxuICAgICdtb2RlbHMvUm9ja0Zsb29yX01vZHVsZV8yTS9Sb2NrRmxvb3JfTW9kdWxlXzJNLmdsYidcbiAgKVxuICBnbHRmU2hhcGUzLndpdGhDb2xsaXNpb25zID0gdHJ1ZVxuICBnbHRmU2hhcGUzLmlzUG9pbnRlckJsb2NrZXIgPSB0cnVlXG4gIGdsdGZTaGFwZTMudmlzaWJsZSA9IHRydWVcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aC5hZGRDb21wb25lbnRPclJlcGxhY2UoZ2x0ZlNoYXBlMylcblxuICBjb25zdCBhbmNpZW50TWVkaXVtU3RvbmVQYXRoMiA9IG5ldyBFbnRpdHkoJ2FuY2llbnRNZWRpdW1TdG9uZVBhdGgyJylcbiAgZW5naW5lLmFkZEVudGl0eShhbmNpZW50TWVkaXVtU3RvbmVQYXRoMilcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aDIuc2V0UGFyZW50KF9zY2VuZSlcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aDIuYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTMpXG4gIGNvbnN0IHRyYW5zZm9ybTkgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoNS4wMTQ0NDE0OTAxNzMzNCwgMCwgOS41KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oMCwgMCwgMCwgMSksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBhbmNpZW50TWVkaXVtU3RvbmVQYXRoMi5hZGRDb21wb25lbnRPclJlcGxhY2UodHJhbnNmb3JtOSlcblxuICBjb25zdCBhbmNpZW50TWVkaXVtU3RvbmVQYXRoMyA9IG5ldyBFbnRpdHkoJ2FuY2llbnRNZWRpdW1TdG9uZVBhdGgzJylcbiAgZW5naW5lLmFkZEVudGl0eShhbmNpZW50TWVkaXVtU3RvbmVQYXRoMylcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aDMuc2V0UGFyZW50KF9zY2VuZSlcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aDMuYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTMpXG4gIGNvbnN0IHRyYW5zZm9ybTEwID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDUuMDE0NDQxNDkwMTczMzQsIDAsIDExLjUpLFxuICAgIHJvdGF0aW9uOiBuZXcgUXVhdGVybmlvbigwLCAwLCAwLCAxKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoMSwgMSwgMSksXG4gIH0pXG4gIGFuY2llbnRNZWRpdW1TdG9uZVBhdGgzLmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0xMClcblxuICBjb25zdCBhbmNpZW50TWVkaXVtU3RvbmVQYXRoNCA9IG5ldyBFbnRpdHkoJ2FuY2llbnRNZWRpdW1TdG9uZVBhdGg0JylcbiAgZW5naW5lLmFkZEVudGl0eShhbmNpZW50TWVkaXVtU3RvbmVQYXRoNClcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aDQuc2V0UGFyZW50KF9zY2VuZSlcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aDQuYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTMpXG4gIGNvbnN0IHRyYW5zZm9ybTExID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDUuMDE0NDQxNDkwMTczMzQsIDAsIDEzLjUpLFxuICAgIHJvdGF0aW9uOiBuZXcgUXVhdGVybmlvbigwLCAwLCAwLCAxKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoMSwgMSwgMSksXG4gIH0pXG4gIGFuY2llbnRNZWRpdW1TdG9uZVBhdGg0LmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0xMSlcblxuICBjb25zdCBhbmNpZW50TWVkaXVtU3RvbmVQYXRoNSA9IG5ldyBFbnRpdHkoJ2FuY2llbnRNZWRpdW1TdG9uZVBhdGg1JylcbiAgZW5naW5lLmFkZEVudGl0eShhbmNpZW50TWVkaXVtU3RvbmVQYXRoNSlcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aDUuc2V0UGFyZW50KF9zY2VuZSlcbiAgYW5jaWVudE1lZGl1bVN0b25lUGF0aDUuYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTMpXG4gIGNvbnN0IHRyYW5zZm9ybTEyID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDUuMDE0NDQxNDkwMTczMzQsIDAsIDE1LjUpLFxuICAgIHJvdGF0aW9uOiBuZXcgUXVhdGVybmlvbigwLCAwLCAwLCAxKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoMSwgMSwgMSksXG4gIH0pXG4gIGFuY2llbnRNZWRpdW1TdG9uZVBhdGg1LmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0xMilcblxuICBjb25zdCBidXNoID0gbmV3IEVudGl0eSgnYnVzaCcpXG4gIGVuZ2luZS5hZGRFbnRpdHkoYnVzaClcbiAgYnVzaC5zZXRQYXJlbnQoX3NjZW5lKVxuICBjb25zdCB0cmFuc2Zvcm0xMyA9IG5ldyBUcmFuc2Zvcm0oe1xuICAgIHBvc2l0aW9uOiBuZXcgVmVjdG9yMygxMi41LCAwLCAxMy41KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oMCwgMCwgMCwgMSksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBidXNoLmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0xMylcbiAgY29uc3QgZ2x0ZlNoYXBlNCA9IG5ldyBHTFRGU2hhcGUoJ21vZGVscy9CdXNoXzAyL0J1c2hfMDIuZ2xiJylcbiAgZ2x0ZlNoYXBlNC53aXRoQ29sbGlzaW9ucyA9IHRydWVcbiAgZ2x0ZlNoYXBlNC5pc1BvaW50ZXJCbG9ja2VyID0gdHJ1ZVxuICBnbHRmU2hhcGU0LnZpc2libGUgPSB0cnVlXG4gIGJ1c2guYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTQpXG5cbiAgY29uc3QgZXZlcmdyZWVuU2hydWIgPSBuZXcgRW50aXR5KCdldmVyZ3JlZW5TaHJ1YicpXG4gIGVuZ2luZS5hZGRFbnRpdHkoZXZlcmdyZWVuU2hydWIpXG4gIGV2ZXJncmVlblNocnViLnNldFBhcmVudChfc2NlbmUpXG4gIGNvbnN0IHRyYW5zZm9ybTE0ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDQuNSwgMCwgMS41KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oMCwgMCwgMCwgMSksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBldmVyZ3JlZW5TaHJ1Yi5hZGRDb21wb25lbnRPclJlcGxhY2UodHJhbnNmb3JtMTQpXG4gIGNvbnN0IGdsdGZTaGFwZTUgPSBuZXcgR0xURlNoYXBlKCdtb2RlbHMvQnVzaF8wMy9CdXNoXzAzLmdsYicpXG4gIGdsdGZTaGFwZTUud2l0aENvbGxpc2lvbnMgPSB0cnVlXG4gIGdsdGZTaGFwZTUuaXNQb2ludGVyQmxvY2tlciA9IHRydWVcbiAgZ2x0ZlNoYXBlNS52aXNpYmxlID0gdHJ1ZVxuICBldmVyZ3JlZW5TaHJ1Yi5hZGRDb21wb25lbnRPclJlcGxhY2UoZ2x0ZlNoYXBlNSlcblxuICBjb25zdCBzdW5mbG93ZXJIZWFkID0gbmV3IEVudGl0eSgnc3VuZmxvd2VySGVhZCcpXG4gIGVuZ2luZS5hZGRFbnRpdHkoc3VuZmxvd2VySGVhZClcbiAgc3VuZmxvd2VySGVhZC5zZXRQYXJlbnQoX3NjZW5lKVxuICBjb25zdCB0cmFuc2Zvcm0xNSA9IG5ldyBUcmFuc2Zvcm0oe1xuICAgIHBvc2l0aW9uOiBuZXcgVmVjdG9yMyg2LjUsIDAsIDE1KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oMCwgMCwgMCwgMSksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBzdW5mbG93ZXJIZWFkLmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0xNSlcbiAgY29uc3QgZ2x0ZlNoYXBlNiA9IG5ldyBHTFRGU2hhcGUoJ21vZGVscy9GbG93ZXJfMDEvRmxvd2VyXzAxLmdsYicpXG4gIGdsdGZTaGFwZTYud2l0aENvbGxpc2lvbnMgPSB0cnVlXG4gIGdsdGZTaGFwZTYuaXNQb2ludGVyQmxvY2tlciA9IHRydWVcbiAgZ2x0ZlNoYXBlNi52aXNpYmxlID0gdHJ1ZVxuICBzdW5mbG93ZXJIZWFkLmFkZENvbXBvbmVudE9yUmVwbGFjZShnbHRmU2hhcGU2KVxuXG4gIGNvbnN0IGdyZWVuUG9wbGFycyA9IG5ldyBFbnRpdHkoJ2dyZWVuUG9wbGFycycpXG4gIGVuZ2luZS5hZGRFbnRpdHkoZ3JlZW5Qb3BsYXJzKVxuICBncmVlblBvcGxhcnMuc2V0UGFyZW50KF9zY2VuZSlcbiAgY29uc3QgdHJhbnNmb3JtMTYgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoMTMuNSwgMCwgMiksXG4gICAgcm90YXRpb246IG5ldyBRdWF0ZXJuaW9uKDAsIDAsIDAsIDEpLFxuICAgIHNjYWxlOiBuZXcgVmVjdG9yMygxLCAxLCAxKSxcbiAgfSlcbiAgZ3JlZW5Qb3BsYXJzLmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0xNilcbiAgY29uc3QgZ2x0ZlNoYXBlNyA9IG5ldyBHTFRGU2hhcGUoJ21vZGVscy9UcmVlRmlyXzAyL1RyZWVGaXJfMDIuZ2xiJylcbiAgZ2x0ZlNoYXBlNy53aXRoQ29sbGlzaW9ucyA9IHRydWVcbiAgZ2x0ZlNoYXBlNy5pc1BvaW50ZXJCbG9ja2VyID0gdHJ1ZVxuICBnbHRmU2hhcGU3LnZpc2libGUgPSB0cnVlXG4gIGdyZWVuUG9wbGFycy5hZGRDb21wb25lbnRPclJlcGxhY2UoZ2x0ZlNoYXBlNylcblxuICBjb25zdCBydXN0aWNNZXJjaGFudEZpc2hTdGFuZCA9IG5ldyBFbnRpdHkoJ3J1c3RpY01lcmNoYW50RmlzaFN0YW5kJylcbiAgZW5naW5lLmFkZEVudGl0eShydXN0aWNNZXJjaGFudEZpc2hTdGFuZClcbiAgcnVzdGljTWVyY2hhbnRGaXNoU3RhbmQuc2V0UGFyZW50KF9zY2VuZSlcbiAgY29uc3QgdHJhbnNmb3JtMTcgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoNi41MTQ0NDE0OTAxNzMzNCwgMCwgMTMpLFxuICAgIHJvdGF0aW9uOiBuZXcgUXVhdGVybmlvbihcbiAgICAgIC0xLjUzOTQxNTM2MDE1MjczOTRlLTE1LFxuICAgICAgLTAuNzA3MTA2ODI4Njg5NTc1MixcbiAgICAgIDguNDI5MzY5NTU3OTE2Mjg5ZS04LFxuICAgICAgMC43MDcxMDY4Mjg2ODk1NzUyXG4gICAgKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoMS4wMDAwMTA3Mjg4MzYwNTk2LCAxLCAxLjAwMDAxMDcyODgzNjA1OTYpLFxuICB9KVxuICBydXN0aWNNZXJjaGFudEZpc2hTdGFuZC5hZGRDb21wb25lbnRPclJlcGxhY2UodHJhbnNmb3JtMTcpXG4gIGNvbnN0IGdsdGZTaGFwZTggPSBuZXcgR0xURlNoYXBlKCdtb2RlbHMvU2VsbGluZ0dvb2RzXzAyL1NlbGxpbmdHb29kc18wMi5nbGInKVxuICBnbHRmU2hhcGU4LndpdGhDb2xsaXNpb25zID0gdHJ1ZVxuICBnbHRmU2hhcGU4LmlzUG9pbnRlckJsb2NrZXIgPSB0cnVlXG4gIGdsdGZTaGFwZTgudmlzaWJsZSA9IHRydWVcbiAgcnVzdGljTWVyY2hhbnRGaXNoU3RhbmQuYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTgpXG5cbiAgY29uc3QgcnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQgPSBuZXcgRW50aXR5KCdydXN0aWNDb3ZlcmVkTWVyY2hhbnRTdGFuZCcpXG4gIGVuZ2luZS5hZGRFbnRpdHkocnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQpXG4gIHJ1c3RpY0NvdmVyZWRNZXJjaGFudFN0YW5kLnNldFBhcmVudChfc2NlbmUpXG4gIGNvbnN0IHRyYW5zZm9ybTE4ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDYuNTE0NDQxNDkwMTczMzQsIDAsIDExKSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oXG4gICAgICAtMS41Mzk0MTUzNjAxNTI3Mzk0ZS0xNSxcbiAgICAgIC0wLjcwNzEwNjgyODY4OTU3NTIsXG4gICAgICA4LjQyOTM2OTU1NzkxNjI4OWUtOCxcbiAgICAgIDAuNzA3MTA2ODI4Njg5NTc1MlxuICAgICksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEuMDAwMDA4ODIxNDg3NDI2OCwgMSwgMS4wMDAwMDg4MjE0ODc0MjY4KSxcbiAgfSlcbiAgcnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTE4KVxuICBjb25zdCBnbHRmU2hhcGU5ID0gbmV3IEdMVEZTaGFwZSgnbW9kZWxzL1NlbGxpbmdHb29kc18wMy9TZWxsaW5nR29vZHNfMDMuZ2xiJylcbiAgZ2x0ZlNoYXBlOS53aXRoQ29sbGlzaW9ucyA9IHRydWVcbiAgZ2x0ZlNoYXBlOS5pc1BvaW50ZXJCbG9ja2VyID0gdHJ1ZVxuICBnbHRmU2hhcGU5LnZpc2libGUgPSB0cnVlXG4gIHJ1c3RpY0NvdmVyZWRNZXJjaGFudFN0YW5kLmFkZENvbXBvbmVudE9yUmVwbGFjZShnbHRmU2hhcGU5KVxuXG4gIGNvbnN0IHJ1c3RpY01lcmNoYW50RmlzaFN0YW5kMiA9IG5ldyBFbnRpdHkoJ3J1c3RpY01lcmNoYW50RmlzaFN0YW5kMicpXG4gIGVuZ2luZS5hZGRFbnRpdHkocnVzdGljTWVyY2hhbnRGaXNoU3RhbmQyKVxuICBydXN0aWNNZXJjaGFudEZpc2hTdGFuZDIuc2V0UGFyZW50KF9zY2VuZSlcbiAgY29uc3QgdHJhbnNmb3JtMTkgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoMi4yMzQ5MDIzODE4OTY5NzI3LCAwLCA2KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oMCwgMCwgMCwgMSksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBydXN0aWNNZXJjaGFudEZpc2hTdGFuZDIuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTE5KVxuICBydXN0aWNNZXJjaGFudEZpc2hTdGFuZDIuYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTgpXG5cbiAgY29uc3QgcnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQyID0gbmV3IEVudGl0eSgncnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQyJylcbiAgZW5naW5lLmFkZEVudGl0eShydXN0aWNDb3ZlcmVkTWVyY2hhbnRTdGFuZDIpXG4gIHJ1c3RpY0NvdmVyZWRNZXJjaGFudFN0YW5kMi5zZXRQYXJlbnQoX3NjZW5lKVxuICBjb25zdCB0cmFuc2Zvcm0yMCA9IG5ldyBUcmFuc2Zvcm0oe1xuICAgIHBvc2l0aW9uOiBuZXcgVmVjdG9yMyg1LjIzNDkwMjM4MTg5Njk3MywgMCwgNiksXG4gICAgcm90YXRpb246IG5ldyBRdWF0ZXJuaW9uKDAsIDAsIDAsIDEpLFxuICAgIHNjYWxlOiBuZXcgVmVjdG9yMygxLCAxLCAxKSxcbiAgfSlcbiAgcnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQyLmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0yMClcbiAgcnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQyLmFkZENvbXBvbmVudE9yUmVwbGFjZShnbHRmU2hhcGU5KVxuXG4gIGNvbnN0IHNpZ25wb3N0MiA9IG5ldyBFbnRpdHkoJ3NpZ25wb3N0MicpXG4gIGVuZ2luZS5hZGRFbnRpdHkoc2lnbnBvc3QyKVxuICBzaWducG9zdDIuc2V0UGFyZW50KF9zY2VuZSlcbiAgY29uc3QgdHJhbnNmb3JtMjEgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoNi4wMTQ0NDE0OTAxNzMzNCwgMCwgMTUpLFxuICAgIHJvdGF0aW9uOiBuZXcgUXVhdGVybmlvbihcbiAgICAgIC0xLjcwMTU5MDUxMTY5NTUzNDNlLTE1LFxuICAgICAgMCxcbiAgICAgIC02Ljk4MjI5NjQwMTUyMDEzMWUtMTYsXG4gICAgICAxXG4gICAgKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoMC45OTk5OTk0MDM5NTM1NTIyLCAxLCAwLjk5OTk5OTQwMzk1MzU1MjIpLFxuICB9KVxuICBzaWducG9zdDIuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTIxKVxuXG4gIGNvbnN0IHJ1c3RpY01lcmNoYW50U3RhbmQgPSBuZXcgRW50aXR5KCdydXN0aWNNZXJjaGFudFN0YW5kJylcbiAgZW5naW5lLmFkZEVudGl0eShydXN0aWNNZXJjaGFudFN0YW5kKVxuICBydXN0aWNNZXJjaGFudFN0YW5kLnNldFBhcmVudChfc2NlbmUpXG4gIGNvbnN0IHRyYW5zZm9ybTIyID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDEuNzc1MTU2NDk3OTU1MzIyMywgMCwgOS44MzAwOTE0NzY0NDA0MyksXG4gICAgcm90YXRpb246IG5ldyBRdWF0ZXJuaW9uKFxuICAgICAgMS4xMDM4Mzg1MTM3ODUyMjczZS0xNSxcbiAgICAgIDAuNzA3MTA2ODI4Njg5NTc1MixcbiAgICAgIC04LjQyOTM2ODg0NzM3MzU1M2UtOCxcbiAgICAgIDAuNzA3MTA2NzY5MDg0OTMwNFxuICAgICksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpLFxuICB9KVxuICBydXN0aWNNZXJjaGFudFN0YW5kLmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0yMilcbiAgY29uc3QgZ2x0ZlNoYXBlMTAgPSBuZXcgR0xURlNoYXBlKFxuICAgICdtb2RlbHMvU2VsbGluZ0dvb2RzXzAxL1NlbGxpbmdHb29kc18wMS5nbGInXG4gIClcbiAgZ2x0ZlNoYXBlMTAud2l0aENvbGxpc2lvbnMgPSB0cnVlXG4gIGdsdGZTaGFwZTEwLmlzUG9pbnRlckJsb2NrZXIgPSB0cnVlXG4gIGdsdGZTaGFwZTEwLnZpc2libGUgPSB0cnVlXG4gIHJ1c3RpY01lcmNoYW50U3RhbmQuYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTEwKVxuXG4gIGNvbnN0IHJ1c3RpY0NvdmVyZWRNZXJjaGFudFN0YW5kMyA9IG5ldyBFbnRpdHkoJ3J1c3RpY0NvdmVyZWRNZXJjaGFudFN0YW5kMycpXG4gIGVuZ2luZS5hZGRFbnRpdHkocnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQzKVxuICBydXN0aWNDb3ZlcmVkTWVyY2hhbnRTdGFuZDMuc2V0UGFyZW50KF9zY2VuZSlcbiAgcnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQzLmFkZENvbXBvbmVudE9yUmVwbGFjZShnbHRmU2hhcGU5KVxuICBjb25zdCB0cmFuc2Zvcm0yMyA9IG5ldyBUcmFuc2Zvcm0oe1xuICAgIHBvc2l0aW9uOiBuZXcgVmVjdG9yMygyLCAwLCAxMi41KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oXG4gICAgICAtMS4xMDIzNjA4NjQ4MDg3NDIxZS0xNSxcbiAgICAgIDAuNzgwNjc1MzUxNjE5NzIwNSxcbiAgICAgIC05LjMwNjM3NDY5MzA5NjU4NmUtOCxcbiAgICAgIDAuNjI0OTM2OTM4Mjg1ODI3NlxuICAgICksXG4gICAgc2NhbGU6IG5ldyBWZWN0b3IzKDEuMDAwMDEwMDEzNTgwMzIyMywgMSwgMS4wMDAwMTAwMTM1ODAzMjIzKSxcbiAgfSlcbiAgcnVzdGljQ292ZXJlZE1lcmNoYW50U3RhbmQzLmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0yMylcblxuICBjb25zdCBjYWZlU3RyZWV0U2lnbiA9IG5ldyBFbnRpdHkoJ2NhZmVTdHJlZXRTaWduJylcbiAgZW5naW5lLmFkZEVudGl0eShjYWZlU3RyZWV0U2lnbilcbiAgY2FmZVN0cmVldFNpZ24uc2V0UGFyZW50KF9zY2VuZSlcbiAgY29uc3QgdHJhbnNmb3JtMjQgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoMTAsIDAsIDMuNSksXG4gICAgcm90YXRpb246IG5ldyBRdWF0ZXJuaW9uKFxuICAgICAgLTEuMDUwMDAwMTY3OTIxNTAyZS0xNCxcbiAgICAgIC0wLjM4OTYwMzQzNTk5MzE5NDYsXG4gICAgICA0LjY0NDQzMzEwNDc3MjM2MWUtOCxcbiAgICAgIC0wLjkyMDk4Mjc3ODA3MjM1NzJcbiAgICApLFxuICAgIHNjYWxlOiBuZXcgVmVjdG9yMygxLjAwMDAwMDM1NzYyNzg2ODcsIDEsIDEuMDAwMDAwMzU3NjI3ODY4NyksXG4gIH0pXG4gIGNhZmVTdHJlZXRTaWduLmFkZENvbXBvbmVudE9yUmVwbGFjZSh0cmFuc2Zvcm0yNClcbiAgY29uc3QgZ2x0ZlNoYXBlMTEgPSBuZXcgR0xURlNoYXBlKCdtb2RlbHMvU2lnbl8wMi9TaWduXzAyLmdsYicpXG4gIGdsdGZTaGFwZTExLndpdGhDb2xsaXNpb25zID0gdHJ1ZVxuICBnbHRmU2hhcGUxMS5pc1BvaW50ZXJCbG9ja2VyID0gdHJ1ZVxuICBnbHRmU2hhcGUxMS52aXNpYmxlID0gdHJ1ZVxuICBjYWZlU3RyZWV0U2lnbi5hZGRDb21wb25lbnRPclJlcGxhY2UoZ2x0ZlNoYXBlMTEpXG5cbiAgY29uc3Qgc2lnbnBvc3RHb2xkZW4gPSBuZXcgRW50aXR5KCdzaWducG9zdEdvbGRlbicpXG4gIGVuZ2luZS5hZGRFbnRpdHkoc2lnbnBvc3RHb2xkZW4pXG4gIHNpZ25wb3N0R29sZGVuLnNldFBhcmVudChfc2NlbmUpXG4gIGNvbnN0IHRyYW5zZm9ybTI1ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDEzLCAwLCAxMC41KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oXG4gICAgICAzLjIyMjY3NTU0OTQ3NDA5ODVlLTE1LFxuICAgICAgLTAuODEzNTcyNTg1NTgyNzMzMixcbiAgICAgIDkuNjk4NTM5NTcxNDQ1NTA4ZS04LFxuICAgICAgMC41ODE0NjM1MTU3NTg1MTQ0XG4gICAgKSxcbiAgICBzY2FsZTogbmV3IFZlY3RvcjMoMS4wMDAwMDA5NTM2NzQzMTY0LCAxLCAxLjAwMDAwMDk1MzY3NDMxNjQpLFxuICB9KVxuICBzaWducG9zdEdvbGRlbi5hZGRDb21wb25lbnRPclJlcGxhY2UodHJhbnNmb3JtMjUpXG5cbiAgY29uc3Qgcm91bmRTaWducG9zdCA9IG5ldyBFbnRpdHkoJ3JvdW5kU2lnbnBvc3QnKVxuICBlbmdpbmUuYWRkRW50aXR5KHJvdW5kU2lnbnBvc3QpXG4gIHJvdW5kU2lnbnBvc3Quc2V0UGFyZW50KF9zY2VuZSlcbiAgY29uc3QgdHJhbnNmb3JtMjYgPSBuZXcgVHJhbnNmb3JtKHtcbiAgICBwb3NpdGlvbjogbmV3IFZlY3RvcjMoNCwgMCwgMy41KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oXG4gICAgICA1LjQxNTgyOTU2MTg4OTE2OGUtMTUsXG4gICAgICAwLjk5OTkyNDU0MDUxOTcxNDQsXG4gICAgICAtMS4xOTIwMDI5NDA3OTc0NjUzZS03LFxuICAgICAgMC4wMTIyOTI4MzIxMzYxNTQxNzVcbiAgICApLFxuICAgIHNjYWxlOiBuZXcgVmVjdG9yMygxLjAwMDAwMTQzMDUxMTQ3NDYsIDEsIDEuMDAwMDAxNDMwNTExNDc0NiksXG4gIH0pXG4gIHJvdW5kU2lnbnBvc3QuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTI2KVxuXG4gIGNvbnN0IHJlZEJpY3ljbGUgPSBuZXcgRW50aXR5KCdyZWRCaWN5Y2xlJylcbiAgZW5naW5lLmFkZEVudGl0eShyZWRCaWN5Y2xlKVxuICByZWRCaWN5Y2xlLnNldFBhcmVudChfc2NlbmUpXG4gIGNvbnN0IHRyYW5zZm9ybTI3ID0gbmV3IFRyYW5zZm9ybSh7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDIuNSwgMCwgMy41KSxcbiAgICByb3RhdGlvbjogbmV3IFF1YXRlcm5pb24oXG4gICAgICAtMC40NzAwODQ5MDU2MjQzODk2NSxcbiAgICAgIDMuMTkwNTU2NTg5NTA5ODA3NWUtMTYsXG4gICAgICA1LjYwMzg0ODQwNzUzMTU4NjRlLTgsXG4gICAgICAwLjg4MjYyMTI4ODI5OTU2MDVcbiAgICApLFxuICAgIHNjYWxlOiBuZXcgVmVjdG9yMygxLCAxLjAwMDAwMTc4ODEzOTM0MzMsIDEuMDAwMDAxNzg4MTM5MzQzMyksXG4gIH0pXG4gIHJlZEJpY3ljbGUuYWRkQ29tcG9uZW50T3JSZXBsYWNlKHRyYW5zZm9ybTI3KVxuICBjb25zdCBnbHRmU2hhcGUxMiA9IG5ldyBHTFRGU2hhcGUoJ21vZGVscy9CaWN5Y2xlXzAxL0JpY3ljbGVfMDEuZ2xiJylcbiAgZ2x0ZlNoYXBlMTIud2l0aENvbGxpc2lvbnMgPSB0cnVlXG4gIGdsdGZTaGFwZTEyLmlzUG9pbnRlckJsb2NrZXIgPSB0cnVlXG4gIGdsdGZTaGFwZTEyLnZpc2libGUgPSB0cnVlXG4gIHJlZEJpY3ljbGUuYWRkQ29tcG9uZW50T3JSZXBsYWNlKGdsdGZTaGFwZTEyKVxuXG4gIGNvbnN0IGNoYW5uZWxJZCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnNsaWNlKDIpXG4gIGNvbnN0IGNoYW5uZWxCdXMgPSBuZXcgTWVzc2FnZUJ1cygpXG5cbiAgY29uc3Qgc2NyaXB0MSA9IG5ldyBTY3JpcHQxKClcbiAgY29uc3Qgc2NyaXB0MiA9IG5ldyBTY3JpcHQyKClcbiAgY29uc3Qgc2NyaXB0MyA9IG5ldyBTY3JpcHQzKClcbiAgY29uc3Qgc2NyaXB0NCA9IG5ldyBTY3JpcHQ0KClcbiAgY29uc3Qgc2NyaXB0NSA9IG5ldyBTY3JpcHQ1KClcbiAgc2NyaXB0MS5pbml0KClcbiAgc2NyaXB0Mi5pbml0KClcbiAgc2NyaXB0My5pbml0KClcbiAgc2NyaXB0NC5pbml0KClcbiAgc2NyaXB0NS5pbml0KClcbiAgc2NyaXB0MS5zcGF3bihcbiAgICBzaWducG9zdCxcbiAgICB7IHRleHQ6ICdUaGUgZXh0cmFvcmRpbmFyeSBjcmF0ZXJcXG4oTk9UIGEgdG91cmlzdCB0cmFwKScsIGZvbnRTaXplOiAxOSB9LFxuICAgIGNyZWF0ZUNoYW5uZWwoY2hhbm5lbElkLCBzaWducG9zdCwgY2hhbm5lbEJ1cylcbiAgKVxuICBzY3JpcHQyLnNwYXduKFxuICAgIHNpZ25wb3N0Um9vdCxcbiAgICB7XG4gICAgICB0ZXh0OiBcIklzbid0IG5hdHVyZSBpbmNyZWRpYmxlP1xcbkp1c3QgbG9vayBhdCB0aGF0IVxcbkp1c3QgV293IVwiLFxuICAgICAgZm9udFNpemU6IDIwLFxuICAgIH0sXG4gICAgY3JlYXRlQ2hhbm5lbChjaGFubmVsSWQsIHNpZ25wb3N0Um9vdCwgY2hhbm5lbEJ1cylcbiAgKVxuICBzY3JpcHQzLnNwYXduKFxuICAgIHNpZ25wb3N0V29vZCxcbiAgICB7IHRleHQ6ICdQaWN0dXJlcyBvZiBjcmF0ZXIgXFxuNTAgVVNEXFxuJywgZm9udFNpemU6IDIwIH0sXG4gICAgY3JlYXRlQ2hhbm5lbChjaGFubmVsSWQsIHNpZ25wb3N0V29vZCwgY2hhbm5lbEJ1cylcbiAgKVxuICBzY3JpcHQyLnNwYXduKFxuICAgIHNpZ25wb3N0Um9vdDIsXG4gICAge1xuICAgICAgdGV4dDpcbiAgICAgICAgJ1Rha2UgYSBzZWxmaWUsXFxuU2hhcmUgaXQgd2l0aCB5b3VyIGZyaWVuZHMsXFxueW91ciBmYW1pbHksIHBldHNcXG5UZWxsIHRoZW0gYWxsIHRvIGNvbWUhJyxcbiAgICAgIGZvbnRTaXplOiAyMCxcbiAgICB9LFxuICAgIGNyZWF0ZUNoYW5uZWwoY2hhbm5lbElkLCBzaWducG9zdFJvb3QyLCBjaGFubmVsQnVzKVxuICApXG4gIHNjcmlwdDEuc3Bhd24oXG4gICAgc2lnbnBvc3QyLFxuICAgIHsgdGV4dDogJ1RoZSBleHRyYW9yZGluYXJ5IGNyYXRlclxcbihOT1QgYSB0b3VyaXN0IHRyYXApJywgZm9udFNpemU6IDE5IH0sXG4gICAgY3JlYXRlQ2hhbm5lbChjaGFubmVsSWQsIHNpZ25wb3N0MiwgY2hhbm5lbEJ1cylcbiAgKVxuICBzY3JpcHQ0LnNwYXduKFxuICAgIHNpZ25wb3N0R29sZGVuLFxuICAgIHsgdGV4dDogJ0d1aWRlZCB0b3VycyBvZiB0aGUgY3JhdGVyXFxuQXNrIGluIHZpc3RvciBjZW50ZXInLCBmb250U2l6ZTogMjAgfSxcbiAgICBjcmVhdGVDaGFubmVsKGNoYW5uZWxJZCwgc2lnbnBvc3RHb2xkZW4sIGNoYW5uZWxCdXMpXG4gIClcbiAgc2NyaXB0NS5zcGF3bihcbiAgICByb3VuZFNpZ25wb3N0LFxuICAgIHsgdGV4dDogJ1BhcmsgeW91ciBcXG5iaWtlIGhlcmVcXG4xNSBVU0QnLCBmb250U2l6ZTogMjAgfSxcbiAgICBjcmVhdGVDaGFubmVsKGNoYW5uZWxJZCwgcm91bmRTaWducG9zdCwgY2hhbm5lbEJ1cylcbiAgKVxufVxuIiwiaW1wb3J0IHsgZ2V0VXNlckRhdGEsIFVzZXJEYXRhIH0gZnJvbSAnQGRlY2VudHJhbGFuZC9JZGVudGl0eSdcblxuLy8gZ2V0IHBsYXllciBkYXRhXG5leHBvcnQgbGV0IHVzZXJEYXRhOiBVc2VyRGF0YVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0VXNlckRhdGEoKSB7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRVc2VyRGF0YSgpXG4gIGxvZyhkYXRhLmRpc3BsYXlOYW1lKVxuICB1c2VyRGF0YSA9IGRhdGFcbn1cblxuLy8gZXh0ZXJuYWwgc2VydmVycyBiZWluZyB1c2VkIGJ5IHRoZSBwcm9qZWN0IC0gUGxlYXNlIGNoYW5nZSB0aGVzZSB0byB5b3VyIG93biBpZiB3b3JraW5nIG9uIHNvbWV0aGluZyBlbHNlIVxuZXhwb3J0IGxldCBmaXJlQmFzZVNlcnZlciA9XG4gICdodHRwczovL3VzLWNlbnRyYWwxLWRjbC1ndWVzdGJvb2suY2xvdWRmdW5jdGlvbnMubmV0L2FwcC8nXG5cbi8vIGdldCBsYXRlc3Qgc2NvcmVib2FyZCBkYXRhIGZyb20gc2VydmVyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0R3Vlc3RCb29rKCkge1xuICB0cnkge1xuICAgIGxldCB1cmwgPSBmaXJlQmFzZVNlcnZlciArICdnZXQtc2lnbmF0dXJlcydcbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpXG4gICAgbGV0IGpzb24gPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBsb2coanNvbilcbiAgICByZXR1cm4ganNvblxuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nKCdlcnJvciBmZXRjaGluZyBzY29yZXMgZnJvbSBzZXJ2ZXIgJywgZSlcbiAgfVxufVxuXG4vLyBjaGFuZ2UgZGF0YSBpbiBzY29yZWJvYXJkXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2lnbkd1ZXN0Qm9vaygpIHtcbiAgaWYgKCF1c2VyRGF0YSkge1xuICAgIGF3YWl0IHNldFVzZXJEYXRhKClcbiAgfVxuICB0cnkge1xuICAgIGxldCB1cmwgPSBmaXJlQmFzZVNlcnZlciArICdhZGQtc2lnbmF0dXJlJ1xuICAgIGxldCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgaWQ6IChhd2FpdCB1c2VyRGF0YSkudXNlcklkLFxuICAgICAgbmFtZTogKGF3YWl0IHVzZXJEYXRhKS5kaXNwbGF5TmFtZSxcbiAgICB9KVxuICAgIGxvZyhib2R5KVxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgfSlcbiAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2coJ2Vycm9yIHBvc3RpbmcgdG8gc2VydmVyICcsIGUpXG4gIH1cbn1cbiIsImltcG9ydCB7IHNpZ25HdWVzdEJvb2ssIGdldEd1ZXN0Qm9vayB9IGZyb20gJy4vc2VydmVySGFuZGxlcidcblxuZXhwb3J0IGNvbnN0IHNjcmVlblNwYWNlVUkgPSBuZXcgVUlDYW52YXMoKVxuc2NyZWVuU3BhY2VVSS52aXNpYmxlID0gdHJ1ZVxuXG5sZXQgVUlPcGVuVGltZVxuXG5jb25zdCBpbWFnZVRleHR1cmUgPSBuZXcgVGV4dHVyZSgnaW1hZ2VzL1VJX0d1ZXN0Ym9vay5wbmcnKVxuY29uc3Qgc2NhbGVNdWx0aXBsaWVyID0gMC43XG5cbnZhciBsaW5lc1Blckd1ZXN0Qm9va1BhZ2UgPSAxMlxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlblVJKGV2ZW50OiBzdHJpbmcpIHtcbiAgVUlPcGVuVGltZSA9ICtEYXRlLm5vdygpXG4gIGJhY2tncm91bmQudmlzaWJsZSA9IHRydWVcbiAgYmFja2dyb3VuZC5pc1BvaW50ZXJCbG9ja2VyID0gdHJ1ZVxuICBsZXQgZ3Vlc3RCb29rUGFnZSA9IDFcblxuICBsZXQgYWxsU2lnbmF0dXJlcyA9IGF3YWl0IGdldEd1ZXN0Qm9vaygpXG4gIGxldCB0b3RhbFBhZ2VzID0gZGlzcGxheVNpZ25hdHVyZXMoYWxsU2lnbmF0dXJlcywgZ3Vlc3RCb29rUGFnZSlcblxuICBTaWduQnV0dG9uLm9uQ2xpY2sgPSBuZXcgT25DbGljaygoKSA9PiB7XG4gICAgc2lnbkd1ZXN0Qm9vaygpXG4gICAgY2xvc2VVSSgpXG4gICAgbG9nKCdzaWduZWQgZ3Vlc3Rib29rJylcbiAgfSlcblxuICBsb2coJ09uIHBhZ2UgJywgZ3Vlc3RCb29rUGFnZSwgJyBvZiAnLCB0b3RhbFBhZ2VzKVxuXG4gIGlmICh0b3RhbFBhZ2VzIDwgMikge1xuICAgIExhc3RCdXR0b24udmlzaWJsZSA9IGZhbHNlXG4gICAgTmV4dEJ1dHRvbi52aXNpYmxlID0gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICBMYXN0QnV0dG9uLnZpc2libGUgPSBmYWxzZVxuICAgIE5leHRCdXR0b24udmlzaWJsZSA9IHRydWVcbiAgfVxuXG4gIE5leHRCdXR0b24ub25DbGljayA9IG5ldyBPbkNsaWNrKGFzeW5jICgpID0+IHtcbiAgICBndWVzdEJvb2tQYWdlICs9IDFcblxuICAgIGFsbFNpZ25hdHVyZXMgPSBhd2FpdCBnZXRHdWVzdEJvb2soKVxuICAgIGRpc3BsYXlTaWduYXR1cmVzKGFsbFNpZ25hdHVyZXMsIGd1ZXN0Qm9va1BhZ2UpXG4gICAgTGFzdEJ1dHRvbi52aXNpYmxlID0gdHJ1ZVxuICAgIGlmIChndWVzdEJvb2tQYWdlID49IHRvdGFsUGFnZXMpIHtcbiAgICAgIE5leHRCdXR0b24udmlzaWJsZSA9IGZhbHNlXG4gICAgfVxuICB9KVxuXG4gIExhc3RCdXR0b24ub25DbGljayA9IG5ldyBPbkNsaWNrKGFzeW5jICgpID0+IHtcbiAgICBndWVzdEJvb2tQYWdlIC09IDFcbiAgICBpZiAoZ3Vlc3RCb29rUGFnZSA8IDEpIHtcbiAgICAgIGd1ZXN0Qm9va1BhZ2UgPSAxXG4gICAgfVxuICAgIGFsbFNpZ25hdHVyZXMgPSBhd2FpdCBnZXRHdWVzdEJvb2soKVxuICAgIGRpc3BsYXlTaWduYXR1cmVzKGFsbFNpZ25hdHVyZXMsIGd1ZXN0Qm9va1BhZ2UpXG4gICAgTmV4dEJ1dHRvbi52aXNpYmxlID0gdHJ1ZVxuICAgIGlmIChndWVzdEJvb2tQYWdlID09IDEpIHtcbiAgICAgIExhc3RCdXR0b24udmlzaWJsZSA9IGZhbHNlXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VVSSgpIHtcbiAgYmFja2dyb3VuZC52aXNpYmxlID0gZmFsc2VcbiAgYmFja2dyb3VuZC5pc1BvaW50ZXJCbG9ja2VyID0gZmFsc2Vcbn1cblxuZXhwb3J0IGNvbnN0IGJhY2tncm91bmQgPSBuZXcgVUlJbWFnZShzY3JlZW5TcGFjZVVJLCBpbWFnZVRleHR1cmUpXG5iYWNrZ3JvdW5kLm5hbWUgPSAnYmFja2dyb3VuZCdcbmJhY2tncm91bmQud2lkdGggPSAxMDI0ICogc2NhbGVNdWx0aXBsaWVyXG5iYWNrZ3JvdW5kLmhlaWdodCA9IDkyMSAqIHNjYWxlTXVsdGlwbGllclxuYmFja2dyb3VuZC5oQWxpZ24gPSAnY2VudGVyJ1xuYmFja2dyb3VuZC52QWxpZ24gPSAnY2VudGVyJ1xuYmFja2dyb3VuZC5zb3VyY2VMZWZ0ID0gMFxuYmFja2dyb3VuZC5zb3VyY2VUb3AgPSA3NlxuYmFja2dyb3VuZC5zb3VyY2VXaWR0aCA9IDEwMjRcbmJhY2tncm91bmQuc291cmNlSGVpZ2h0ID0gOTIxXG5iYWNrZ3JvdW5kLnZpc2libGUgPSBmYWxzZVxuYmFja2dyb3VuZC5pc1BvaW50ZXJCbG9ja2VyID0gZmFsc2VcblxuZXhwb3J0IGNvbnN0IGhlYWRlclRleHQgPSBuZXcgVUlUZXh0KGJhY2tncm91bmQpXG5oZWFkZXJUZXh0LnZhbHVlID0gJ0kgd2FzIGFsc28gYmxvd24gYXdheSBieSB0aGUgY3JhdGVyISdcbmhlYWRlclRleHQubmFtZSA9ICdoZWFkZXInXG5oZWFkZXJUZXh0LndpZHRoID0gJzY1MHB4J1xuaGVhZGVyVGV4dC5oZWlnaHQgPSAnODAwcHgnXG5oZWFkZXJUZXh0LmhBbGlnbiA9ICdjZW50ZXInXG5oZWFkZXJUZXh0LnZBbGlnbiA9ICdjZW50ZXInXG5oZWFkZXJUZXh0LnBvc2l0aW9uWSA9IDIzMFxuaGVhZGVyVGV4dC5wb3NpdGlvblggPSAwXG5oZWFkZXJUZXh0LmZvbnRTaXplID0gMjVcbmhlYWRlclRleHQudlRleHRBbGlnbiA9ICdjZW50ZXInXG5oZWFkZXJUZXh0LmhUZXh0QWxpZ24gPSAnY2VudGVyJ1xuaGVhZGVyVGV4dC5jb2xvciA9IENvbG9yNC5CbGFjaygpXG5cbmV4cG9ydCBjb25zdCBzaWduYXR1cmVzVUkgPSBuZXcgVUlUZXh0KGJhY2tncm91bmQpXG5zaWduYXR1cmVzVUkudmFsdWUgPSAnRmV0Y2hpbmcgc2lnbmF0dXJlcydcbnNpZ25hdHVyZXNVSS5uYW1lID0gJ3NpZ25hdHVyZXMnXG5zaWduYXR1cmVzVUkud2lkdGggPSAnNjUwcHgnXG5zaWduYXR1cmVzVUkuaGVpZ2h0ID0gJzgwMHB4J1xuc2lnbmF0dXJlc1VJLmhBbGlnbiA9ICdjZW50ZXInXG5zaWduYXR1cmVzVUkudkFsaWduID0gJ2NlbnRlcidcbnNpZ25hdHVyZXNVSS5wb3NpdGlvblkgPSAwXG5zaWduYXR1cmVzVUkucG9zaXRpb25YID0gMFxuc2lnbmF0dXJlc1VJLmZvbnRTaXplID0gMjVcbnNpZ25hdHVyZXNVSS52VGV4dEFsaWduID0gJ2NlbnRlcidcbnNpZ25hdHVyZXNVSS5oVGV4dEFsaWduID0gJ2NlbnRlcidcbnNpZ25hdHVyZXNVSS5jb2xvciA9IENvbG9yNC5Gcm9tSGV4U3RyaW5nKCcjNTM1MDhGODgnKVxuXG5leHBvcnQgY29uc3QgU2lnbkJ1dHRvbiA9IG5ldyBVSUltYWdlKGJhY2tncm91bmQsIGltYWdlVGV4dHVyZSlcblNpZ25CdXR0b24ubmFtZSA9ICdTaWduQnV0dG9uJ1xuU2lnbkJ1dHRvbi53aWR0aCA9IDQ2MCAqIHNjYWxlTXVsdGlwbGllclxuU2lnbkJ1dHRvbi5oZWlnaHQgPSA3NSAqIHNjYWxlTXVsdGlwbGllclxuU2lnbkJ1dHRvbi5oQWxpZ24gPSAnY2VudGVyJ1xuU2lnbkJ1dHRvbi52QWxpZ24gPSAnY2VudGVyJ1xuU2lnbkJ1dHRvbi5wb3NpdGlvblkgPSAoLTgzOSArIDkyMSAvIDIpICogc2NhbGVNdWx0aXBsaWVyXG5TaWduQnV0dG9uLnBvc2l0aW9uWCA9IDBcblNpZ25CdXR0b24uc291cmNlTGVmdCA9IDc2XG5TaWduQnV0dG9uLnNvdXJjZVRvcCA9IDBcblNpZ25CdXR0b24uc291cmNlV2lkdGggPSA0NjBcblNpZ25CdXR0b24uc291cmNlSGVpZ2h0ID0gNzVcblxuZXhwb3J0IGNvbnN0IE5leHRCdXR0b24gPSBuZXcgVUlJbWFnZShiYWNrZ3JvdW5kLCBpbWFnZVRleHR1cmUpXG5OZXh0QnV0dG9uLm5hbWUgPSAnTmV4dEJ1dHRvbidcbk5leHRCdXR0b24ud2lkdGggPSA3NiAqIHNjYWxlTXVsdGlwbGllclxuTmV4dEJ1dHRvbi5oZWlnaHQgPSA3NiAqIHNjYWxlTXVsdGlwbGllclxuTmV4dEJ1dHRvbi5oQWxpZ24gPSAnY2VudGVyJ1xuTmV4dEJ1dHRvbi52QWxpZ24gPSAnY2VudGVyJ1xuTmV4dEJ1dHRvbi5wb3NpdGlvblkgPSAwXG5OZXh0QnV0dG9uLnBvc2l0aW9uWCA9IDMwMFxuTmV4dEJ1dHRvbi5zb3VyY2VMZWZ0ID0gNTM3XG5OZXh0QnV0dG9uLnNvdXJjZVRvcCA9IDBcbk5leHRCdXR0b24uc291cmNlV2lkdGggPSA3NVxuTmV4dEJ1dHRvbi5zb3VyY2VIZWlnaHQgPSA3NVxuXG5leHBvcnQgY29uc3QgTGFzdEJ1dHRvbiA9IG5ldyBVSUltYWdlKGJhY2tncm91bmQsIGltYWdlVGV4dHVyZSlcbkxhc3RCdXR0b24ubmFtZSA9ICdMYXN0QnV0dG9uJ1xuTGFzdEJ1dHRvbi53aWR0aCA9IDc2ICogc2NhbGVNdWx0aXBsaWVyXG5MYXN0QnV0dG9uLmhlaWdodCA9IDc2ICogc2NhbGVNdWx0aXBsaWVyXG5MYXN0QnV0dG9uLmhBbGlnbiA9ICdjZW50ZXInXG5MYXN0QnV0dG9uLnZBbGlnbiA9ICdjZW50ZXInXG5MYXN0QnV0dG9uLnBvc2l0aW9uWSA9IDBcbkxhc3RCdXR0b24ucG9zaXRpb25YID0gLTMwMFxuTGFzdEJ1dHRvbi5zb3VyY2VMZWZ0ID0gMFxuTGFzdEJ1dHRvbi5zb3VyY2VUb3AgPSAwXG5MYXN0QnV0dG9uLnNvdXJjZVdpZHRoID0gNzVcbkxhc3RCdXR0b24uc291cmNlSGVpZ2h0ID0gNzVcblxuLy8gYXJyYW5nZSBhbGwgc2lnbmF0dXJlcyBpbnRvIHBhZ2VzXG5mdW5jdGlvbiBkaXNwbGF5U2lnbmF0dXJlcyhhbGxTaWduYXR1cmVzOiBhbnlbXSwgZ3Vlc3RCb29rUGFnZTogbnVtYmVyKSB7XG4gIGxldCBzaWduYXR1cmVQYWdlID0gMFxuICBsZXQgc2lnbmF0dXJlTGlzdCA9IFsnJ11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxTaWduYXR1cmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgc2lnbmF0dXJlTGlzdFtzaWduYXR1cmVQYWdlXSA9IHNpZ25hdHVyZUxpc3Rbc2lnbmF0dXJlUGFnZV0uY29uY2F0KFxuICAgICAgYWxsU2lnbmF0dXJlc1tpXS5uYW1lXG4gICAgKVxuICAgIHNpZ25hdHVyZUxpc3Rbc2lnbmF0dXJlUGFnZV0gPSBzaWduYXR1cmVMaXN0W3NpZ25hdHVyZVBhZ2VdLmNvbmNhdCgnIC0gJylcbiAgICBsZXQgbGluZXMgPSBzaWduYXR1cmVMaXN0W3NpZ25hdHVyZVBhZ2VdLnNwbGl0KCdcXG4nKVxuICAgIGlmIChsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggPiAyNSkge1xuICAgICAgc2lnbmF0dXJlTGlzdFtzaWduYXR1cmVQYWdlXSA9IHNpZ25hdHVyZUxpc3Rbc2lnbmF0dXJlUGFnZV0uY29uY2F0KCdcXG4nKVxuICAgIH1cblxuICAgIGlmIChsaW5lcy5sZW5ndGggPj0gbGluZXNQZXJHdWVzdEJvb2tQYWdlKSB7XG4gICAgICBzaWduYXR1cmVQYWdlICs9IDFcbiAgICAgIHNpZ25hdHVyZUxpc3QucHVzaCgnJylcbiAgICAgIC8vZ3Vlc3RCb29rUGFnZVxuICAgIH1cbiAgfVxuICBzaWduYXR1cmVzVUkudmFsdWUgPSBzaWduYXR1cmVMaXN0W2d1ZXN0Qm9va1BhZ2UgLSAxXVxuICBsb2coXG4gICAgJ3NpZ25hdHVyZSB0byBzaG93IGZyb20gcGFnZSAnLFxuICAgIGd1ZXN0Qm9va1BhZ2UsXG4gICAgJyA6JyxcbiAgICBzaWduYXR1cmVMaXN0W2d1ZXN0Qm9va1BhZ2UgLSAxXVxuICApXG5cbiAgcmV0dXJuIHNpZ25hdHVyZUxpc3QubGVuZ3RoXG59XG5cbi8vIEluc3RhbmNlIHRoZSBpbnB1dCBvYmplY3RcbmNvbnN0IGlucHV0ID0gSW5wdXQuaW5zdGFuY2VcblxuLy9idXR0b24gZG93biBldmVudFxuaW5wdXQuc3Vic2NyaWJlKCdCVVRUT05fRE9XTicsIEFjdGlvbkJ1dHRvbi5QT0lOVEVSLCBmYWxzZSwgKGUpID0+IHtcbiAgY29uc3QgY3VycmVudFRpbWUgPSArRGF0ZS5ub3coKVxuICBsZXQgaXNPcGVuOiBib29sZWFuXG4gIGlmIChiYWNrZ3JvdW5kLnZpc2libGUpIHtcbiAgICBpc09wZW4gPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgaXNPcGVuID0gZmFsc2VcbiAgfVxuXG4gIGlmIChpc09wZW4gJiYgY3VycmVudFRpbWUgLSBVSU9wZW5UaW1lID4gMTAwKSB7XG4gICAgY2xvc2VVSSgpXG4gIH1cbn0pXG4iLCJpbXBvcnQgeyBvcGVuVUkgfSBmcm9tICcuL3VpJ1xuXG4vLyBleHRlcm5hbCBzZXJ2ZXJzIGJlaW5nIHVzZWQgYnkgdGhlIHByb2plY3QgLSBQbGVhc2UgY2hhbmdlIHRoZXNlIHRvIHlvdXIgb3duIGlmIHdvcmtpbmcgb24gc29tZXRoaW5nIGVsc2UhXG5leHBvcnQgbGV0IGZpcmVCYXNlU2VydmVyID1cbiAgJ2h0dHBzOi8vdXMtY2VudHJhbDEtZGNsLWd1ZXN0Ym9vay5jbG91ZGZ1bmN0aW9ucy5uZXQvYXBwLydcblxuLy8gZ2V0IHBsYXllciBkYXRhXG5cbmV4cG9ydCBjbGFzcyBHdWVzdEJvb2sgZXh0ZW5kcyBFbnRpdHkge1xuICBldmVudE5hbWU6IHN0cmluZ1xuICBjb25zdHJ1Y3RvcihcbiAgICB0cmFuc2Zvcm06IFRyYW5mb3JtQ29uc3RydWN0b3JBcmdzLFxuICAgIGV2ZW50TmFtZTogc3RyaW5nXG5cbiAgICAvLyxzb3VuZDogQXVkaW9DbGlwXG4gICkge1xuICAgIHN1cGVyKClcbiAgICBlbmdpbmUuYWRkRW50aXR5KHRoaXMpXG5cbiAgICB0aGlzLmFkZENvbXBvbmVudChuZXcgR0xURlNoYXBlKCdtb2RlbHMvZ3Vlc3Rib29rL2d1ZXN0Ym9vay5nbGInKSlcbiAgICB0aGlzLmFkZENvbXBvbmVudChuZXcgVHJhbnNmb3JtKHRyYW5zZm9ybSkpXG5cbiAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZVxuXG4gICAgdGhpcy5hZGRDb21wb25lbnQoXG4gICAgICBuZXcgT25Qb2ludGVyRG93bihcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIG9wZW5VSShldmVudE5hbWUpXG4gICAgICAgICAgbG9nKCdPUEVORUQgR1VFU1RCT09LJylcbiAgICAgICAgfSxcbiAgICAgICAgeyBob3ZlclRleHQ6ICdPcGVuJyB9XG4gICAgICApXG4gICAgKVxuXG4gICAgbGV0IGd1ZXN0Qm9va0Jhc2UgPSBuZXcgRW50aXR5KClcbiAgICBndWVzdEJvb2tCYXNlLmFkZENvbXBvbmVudChuZXcgVHJhbnNmb3JtKCkpXG4gICAgZ3Vlc3RCb29rQmFzZS5hZGRDb21wb25lbnQoXG4gICAgICBuZXcgR0xURlNoYXBlKCdtb2RlbHMvZ3Vlc3Rib29rL2d1ZXN0Ym9va19iYXNlLmdsYicpXG4gICAgKVxuICAgIGd1ZXN0Qm9va0Jhc2Uuc2V0UGFyZW50KHRoaXMpXG4gIH1cbn1cbiIsImltcG9ydCB7IGJ1aWxkQnVpbGRlclNjZW5lIH0gZnJvbSAnLi9idWlsZGVyQ29udGVudCdcbmltcG9ydCB7IEd1ZXN0Qm9vayB9IGZyb20gJy4vZ3Vlc3Rib29rJ1xuXG5idWlsZEJ1aWxkZXJTY2VuZSgpXG5cbmxldCBndWVzdEJvb2sgPSBuZXcgR3Vlc3RCb29rKFxuICB7XG4gICAgcG9zaXRpb246IG5ldyBWZWN0b3IzKDgsIDAsIDEwKSxcbiAgICByb3RhdGlvbjogUXVhdGVybmlvbi5FdWxlcigwLCAzMDAsIDApLFxuICB9LFxuICAndGVzdCdcbilcbiJdfQ==");