diff --git a/build/build.js b/build/build.js index fec9566c..63c1bdb0 100644 --- a/build/build.js +++ b/build/build.js @@ -1,4 +1,4 @@ -!function(e){var t=this.webpackHotUpdate;this.webpackHotUpdate=function(e,a){!function(e,t){if(!A[e]||!w[e])return;for(var a in w[e]=!1,t)Object.prototype.hasOwnProperty.call(t,a)&&(p[a]=t[a]);0==--y&&0===g&&T()}(e,a),t&&t(e,a)};var a,n=!0,r="e16857bdd73fadc8c7c1",s={},o=[],i=[];function c(e){var t=k[e];if(!t)return M;var n=function(n){return t.hot.active?(k[n]?-1===k[n].parents.indexOf(e)&&k[n].parents.push(e):(o=[e],a=n),-1===t.children.indexOf(n)&&t.children.push(n)):(console.warn("[HMR] unexpected require("+n+") from disposed module "+e),o=[]),M(n)},r=function(e){return{configurable:!0,enumerable:!0,get:function(){return M[e]},set:function(t){M[e]=t}}};for(var s in M)Object.prototype.hasOwnProperty.call(M,s)&&"e"!==s&&"t"!==s&&Object.defineProperty(n,s,r(s));return n.e=function(e){return"ready"===u&&h("prepare"),g++,M.e(e).then(t,(function(e){throw t(),e}));function t(){g--,"prepare"===u&&(v[e]||x(e),0===g&&0===y&&T())}},n.t=function(e,t){return 1&t&&(e=n(e)),M.t(e,-2&t)},n}function d(t){var n={_acceptedDependencies:{},_declinedDependencies:{},_selfAccepted:!1,_selfDeclined:!1,_selfInvalidated:!1,_disposeHandlers:[],_main:a!==t,active:!0,accept:function(e,t){if(void 0===e)n._selfAccepted=!0;else if("function"==typeof e)n._selfAccepted=e;else if("object"==typeof e)for(var a=0;a=0&&n._disposeHandlers.splice(t,1)},invalidate:function(){switch(this._selfInvalidated=!0,u){case"idle":(p={})[t]=e[t],h("ready");break;case"ready":N(t);break;case"prepare":case"check":case"dispose":case"apply":(b=b||[]).push(t)}},check:E,apply:R,status:function(e){if(!e)return u;l.push(e)},addStatusHandler:function(e){l.push(e)},removeStatusHandler:function(e){var t=l.indexOf(e);t>=0&&l.splice(t,1)},data:s[t]};return a=void 0,n}var l=[],u="idle";function h(e){u=e;for(var t=0;t0;){var r=n.pop(),s=r.id,o=r.chain;if((l=k[s])&&(!l.hot._selfAccepted||l.hot._selfInvalidated)){if(l.hot._selfDeclined)return{type:"self-declined",chain:o,moduleId:s};if(l.hot._main)return{type:"unaccepted",chain:o,moduleId:s};for(var i=0;i ")),T.type){case"self-declined":n.onDeclined&&n.onDeclined(T),n.ignoreDeclined||(R=new Error("Aborted because of self decline: "+T.moduleId+L));break;case"declined":n.onDeclined&&n.onDeclined(T),n.ignoreDeclined||(R=new Error("Aborted because of declined dependency: "+T.moduleId+" in "+T.parentId+L));break;case"unaccepted":n.onUnaccepted&&n.onUnaccepted(T),n.ignoreUnaccepted||(R=new Error("Aborted because "+u+" is not accepted"+L));break;case"accepted":n.onAccepted&&n.onAccepted(T),N=!0;break;case"disposed":n.onDisposed&&n.onDisposed(T),P=!0;break;default:throw new Error("Unexception type "+T.type)}if(R)return h("abort"),Promise.reject(R);if(N)for(u in w[u]=p[u],y(v,T.outdatedModules),T.outdatedDependencies)Object.prototype.hasOwnProperty.call(T.outdatedDependencies,u)&&(g[u]||(g[u]=[]),y(g[u],T.outdatedDependencies[u]));P&&(y(v,[T.moduleId]),w[u]=E)}var j,C=[];for(c=0;c0;)if(u=O.pop(),l=k[u]){var U={},F=l.hot._disposeHandlers;for(d=0;d=0&&Z.parents.splice(j,1))}}for(u in g)if(Object.prototype.hasOwnProperty.call(g,u)&&(l=k[u]))for(D=g[u],d=0;d=0&&l.children.splice(j,1);h("apply"),void 0!==f&&(r=f,f=void 0);for(u in p=void 0,w)Object.prototype.hasOwnProperty.call(w,u)&&(e[u]=w[u]);var H=null;for(u in g)if(Object.prototype.hasOwnProperty.call(g,u)&&(l=k[u])){D=g[u];var B=[];for(c=0;c1)for(var a=1;a=0&&n._disposeHandlers.splice(t,1)},invalidate:function(){switch(this._selfInvalidated=!0,u){case"idle":(p={})[t]=e[t],h("ready");break;case"ready":N(t);break;case"prepare":case"check":case"dispose":case"apply":(b=b||[]).push(t)}},check:E,apply:R,status:function(e){if(!e)return u;l.push(e)},addStatusHandler:function(e){l.push(e)},removeStatusHandler:function(e){var t=l.indexOf(e);t>=0&&l.splice(t,1)},data:s[t]};return a=void 0,n}var l=[],u="idle";function h(e){u=e;for(var t=0;t0;){var r=n.pop(),s=r.id,o=r.chain;if((l=k[s])&&(!l.hot._selfAccepted||l.hot._selfInvalidated)){if(l.hot._selfDeclined)return{type:"self-declined",chain:o,moduleId:s};if(l.hot._main)return{type:"unaccepted",chain:o,moduleId:s};for(var i=0;i ")),T.type){case"self-declined":n.onDeclined&&n.onDeclined(T),n.ignoreDeclined||(R=new Error("Aborted because of self decline: "+T.moduleId+L));break;case"declined":n.onDeclined&&n.onDeclined(T),n.ignoreDeclined||(R=new Error("Aborted because of declined dependency: "+T.moduleId+" in "+T.parentId+L));break;case"unaccepted":n.onUnaccepted&&n.onUnaccepted(T),n.ignoreUnaccepted||(R=new Error("Aborted because "+u+" is not accepted"+L));break;case"accepted":n.onAccepted&&n.onAccepted(T),N=!0;break;case"disposed":n.onDisposed&&n.onDisposed(T),P=!0;break;default:throw new Error("Unexception type "+T.type)}if(R)return h("abort"),Promise.reject(R);if(N)for(u in w[u]=p[u],y(v,T.outdatedModules),T.outdatedDependencies)Object.prototype.hasOwnProperty.call(T.outdatedDependencies,u)&&(g[u]||(g[u]=[]),y(g[u],T.outdatedDependencies[u]));P&&(y(v,[T.moduleId]),w[u]=E)}var j,C=[];for(c=0;c0;)if(u=O.pop(),l=k[u]){var U={},F=l.hot._disposeHandlers;for(d=0;d=0&&Z.parents.splice(j,1))}}for(u in g)if(Object.prototype.hasOwnProperty.call(g,u)&&(l=k[u]))for(D=g[u],d=0;d=0&&l.children.splice(j,1);h("apply"),void 0!==f&&(r=f,f=void 0);for(u in p=void 0,w)Object.prototype.hasOwnProperty.call(w,u)&&(e[u]=w[u]);var H=null;for(u in g)if(Object.prototype.hasOwnProperty.call(g,u)&&(l=k[u])){D=g[u];var B=[];for(c=0;c1)for(var a=1;a=0;i--)(r=e[i])&&(o=(s<3?r(o):s>3?r(t,a,o):r(t,a))||o);return s>3&&o&&Object.defineProperty(t,a,o),o}function c(e,t){return function(a,n){t(a,n,e)}}function d(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function l(e,t,a,n){return new(a||(a=Promise))((function(r,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function i(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){e.done?r(e.value):new a((function(t){t(e.value)})).then(o,i)}c((n=n.apply(e,t||[])).next())}))}function u(e,t){var a,n,r,s,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return s={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function i(s){return function(i){return function(s){if(a)throw new TypeError("Generator is already executing.");for(;o;)try{if(a=1,n&&(r=2&s[0]?n.return:s[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,s[1])).done)return r;switch(n=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(r=o.trys,(r=r.length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}}}function p(e,t){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var n,r,s=a.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)o.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}return o}function f(){for(var e=[],t=0;t1||i(e,t)}))})}function i(e,t){try{(a=r[e](t)).value instanceof y?Promise.resolve(a.value.v).then(c,d):l(s[0][2],a)}catch(e){l(s[0][3],e)}var a}function c(e){i("next",e)}function d(e){i("throw",e)}function l(e,t){e(t),s.shift(),s.length&&i(s[0][0],s[0][1])}}function v(e){var t,a;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,r){t[n]=e[n]?function(t){return(a=!a)?{value:y(e[n](t)),done:"return"===n}:r?r(t):t}:r}}function w(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,a=e[Symbol.asyncIterator];return a?a.call(e):(e=m(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(a){t[a]=e[a]&&function(t){return new Promise((function(n,r){(function(e,t,a,n){Promise.resolve(n).then((function(t){e({value:t,done:a})}),t)})(n,r,(t=e[a](t)).done,t.value)}))}}}function A(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function S(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}},,,,function(e,t,a){"use strict";a.r(t),a.d(t,"BEAT_ANTICIPATION_TIME",(function(){return s})),a.d(t,"BEAT_PRELOAD_TIME",(function(){return o})),a.d(t,"PUNCH_OFFSET",(function(){return i})),a.d(t,"SWORD_OFFSET",(function(){return c}));a(6);let n=AFRAME.utils.getUrlParameter("skip")||0;n=parseInt(n,10);const r=AFRAME.utils.getUrlParameter("debugmines"),s=1.1,o=1.1,i=.5,c=1.5,d=AFRAME.utils.device.isMobile(),l=d?2e3:3500,u=d?7500:1e4;function h(e,t){return e._time-t._time}if(AFRAME.registerComponent("beat-generator",{dependencies:["stage-colors"],schema:{challengeId:{type:"string"},gameMode:{type:"string"},difficulty:{type:"string"},beatmapCharacteristic:{type:"string"},has3DOFVR:{default:!1},hasSongLoadError:{default:!1},isPlaying:{default:!1},isZipFetching:{default:!1},menuSelectedChallengeId:{type:"string"},songDuration:{type:"number"},speed:{type:"number"}},orientationsHumanized:["up","down","left","right","upleft","upright","downleft","downright"],horizontalPositions:[-.75,-.25,.25,.75],horizontalPositionsHumanized:{0:"left",1:"middleleft",2:"middleright",3:"right"},positionHumanized:{topLeft:{layer:2,index:0},topCenterLeft:{layer:2,index:1},topCenterRight:{layer:2,index:2},topRight:{layer:2,index:3},middleLeft:{layer:1,index:0},middleCenterLeft:{layer:1,index:1},middleCenterRight:{layer:1,index:2},middleRight:{layer:1,index:3},bottomLeft:{layer:0,index:0},bottomCenterLeft:{layer:0,index:1},bottomCenterRight:{layer:0,index:2},bottomRight:{layer:0,index:3}},verticalPositionsHumanized:{0:"bottom",1:"middle",2:"top"},init:function(){this.audioAnalyserEl=document.getElementById("audioanalyser"),this.beatContainer=document.getElementById("beatContainer"),this.beats=null,this.beatData=null,this.beatDataProcessed=!1,this.preloadTime=0,this.songTime=void 0,this.bpm=void 0,this.curve=null,this.curveEl=document.getElementById("curve"),this.curveFollowRigEl=document.getElementById("curveFollowRig"),this.tube=document.getElementById("tube"),this.index={events:0,notes:0,obstacles:0},this.wallContainer=document.getElementById("wallContainer"),this.leftStageLasers=document.getElementById("leftStageLasers"),this.rightStageLasers=document.getElementById("rightStageLasers"),this.stageColors=this.el.components["stage-colors"],this.el.addEventListener("cleargame",this.onClearGame.bind(this)),this.el.addEventListener("gamemenurestart",this.onRestart.bind(this)),this.el.addEventListener("ziploaderend",e=>{this.beats=e.detail.beats,this.data.challengeId&&!this.data.hasSongLoadError&&(this.beatData=this.beats[this.data.beatmapCharacteristic+"-"+this.data.difficulty],this.processBeats())})},play:function(){this.playerHeight=document.querySelector("[player-height]").components["player-height"]},update:function(e){const t=this.data;e.challengeId!==t.challengeId&&t.challengeId&&(this.index.events=0,this.index.notes=0,this.index.obstacles=0,this.data.isZipFetching||!this.beats||this.data.hasSongLoadError||(this.beatData=this.beats[this.data.beatmapCharacteristic+"-"+this.data.difficulty],this.processBeats()),this.curveEl.components.supercurve.generateCurve(t.speed*t.songDuration),this.curve=this.curveEl.components.supercurve.curve)},processBeats:function(){if(this.data.hasSongLoadError)return;this.beatData.version&&"3"===this.beatData.version.charAt(0)&&(this.beatData=function(e){const t={_version:"3.2.2",_beatsPerMinute:e._beatsPerMinute,_events:[],_notes:[],_obstacles:[]};t._notes=e.colorNotes.map(e=>({_time:e.b,_lineIndex:e.x,_lineLayer:e.y,_type:e.c,_cutDirection:e.d}));for(const a of e.bombNotes)t._notes.push({_time:a.b,_lineIndex:a.x,_lineLayer:a.y,_type:3});return t._notes.sort((e,t)=>e._time-t._time),t._obstacles=e.obstacles.map(e=>({_time:e.b,_lineIndex:e.x,_lineLayer:e.y,_type:e._type,_duration:e.d,_width:e.w,_height:e.h})),t}(this.beatData)),this.songTime=0,this.preloadTime=0,this.beatData._events.sort(h),this.beatData._obstacles.sort(h),this.beatData._notes.sort(h),this.bpm=this.beatData._beatsPerMinute,this.beatData._obstacles.length>256&&(this.beatData._obstacles=[]);const e=this.beatData._events;if(e.length&&e[0]._time<0)for(let t=0;e[t]._time<0;t++)this.generateEvent(e[t]);this.beatDataProcessed=!0,console.log("[beat-generator] Finished processing beat data.")},tick:function(e,t){if(!this.data.isPlaying||!this.data.challengeId||!this.beatData)return;let a;const r=this.el.components.song;if(void 0===this.preloadTime){if(!r.isAudioPlaying)return;a=1e3*r.getCurrentTime()+n}else a=this.preloadTime;this.beatData._beatsPerMinute;const s=6e4/this.beatData._beatsPerMinute,i=this.beatData._notes;for(let e=this.index.notes;ei[e]._time*s&&(this.generateBeat(i[e]),this.index.notes++);if("ride"!==this.data.gameMode){const e=this.beatData._obstacles;for(let t=this.index.obstacles;t=e[t]._time*s&&(this.generateWall(e[t]),this.index.obstacles++)}const c=this.beatData._events;for(let e=this.index.events;e=c[e]._time*s&&(this.generateEvent(c[e]),this.index.events++);void 0!==this.preloadTime&&(this.preloadTime>=1e3*o?(this.el.sceneEl.emit("beatloaderpreloadfinish",null,!1),this.preloadTime=void 0):this.preloadTime+=t)},generateBeat:function(e,t){const a=this.data;let n;r&&(e._type=3);let s=8===e._cutDirection?"dot":"arrow";if(0===e._type?n="red":1===e._type?n="blue":(s="mine",n=void 0),a.has3DOFVR&&"viewer"!==a.gameMode&&"ride"!==a.gameMode&&"red"===n)return;(AFRAME.utils.getUrlParameter("dot")||"punch"===a.gameMode)&&(s="dot");const o=this.requestBeat(s,n);o&&(o.components.beat||o.components.plume?this.setupBeat(o,e):setTimeout(()=>{this.setupBeat(o,e)}))},setupBeat:function(e,t){const a=this.data,n=this.orientationsHumanized[t._cutDirection],r=this.horizontalPositionsHumanized[t._lineIndex]||"left",o=this.verticalPositionsHumanized[t._lineLayer]||"middle",d=(("classic"===this.data.gameMode?c:i)/a.speed+s)/a.songDuration,l=1e3*a.songDuration,u=6e4/this.beatData._beatsPerMinute,h=t._time*u/l+d,m=this.el.systems["render-order"].order.beats+1-h;"ride"===a.gameMode?(e.components.plume.onGenerate(h,r,o,this.playerHeight.beatOffset),e.setAttribute("render-order",m)):(e.components.beat.onGenerate(h,r,o,n,this.playerHeight.beatOffset),e.components.beat.blockEl.object3D.renderOrder=m),e.play()},generateWall:function(e){this.data;const t=this.el.sceneEl.components.pool__wall.requestEntity();t&&(t.components.wall?this.setupWall(t,e):setTimeout(()=>{this.setupWall(t,e)}))},setupWall:function(e,t){const a=this.data;if(a.has3DOFVR&&"viewer"!==a.gameMode)return;const n=t._duration/this.bpm*60,r=this.horizontalPositionsHumanized[t._lineIndex]||"none",o=1===t._type,i=n*a.speed,c=t._width/2,d=s/a.songDuration,l=1e3*a.songDuration,u=6e4/this.beatData._beatsPerMinute,h=t._time*u/l+d,m=i/this.curveEl.components.supercurve.length;e.components.wall.onGenerate(h,r,c,i,o,h+m),e.play(),e.object3D.renderOrder=this.el.systems["render-order"].order.beats+1-(h+m)},generateEvent:function(e){switch(e._type){case 0:this.stageColors.setColor("bg",e._value),this.stageColors.setColorInstant("moon",e._value);break;case 1:this.stageColors.setColorInstant("stars",e._value);break;case 2:this.stageColors.setColor("curveeven",e._value);break;case 3:this.stageColors.setColor("curveodd",e._value);break;case 4:this.stageColors.setColor("floor",e._value);break;case 8:case 9:this.tube.emit("pulse",null,!1);break;case 12:this.stageColors.setColor("leftglow",e._value);break;case 13:this.stageColors.setColor("rightglow",e._value)}},requestBeat:function(e,t){let a="pool__beat-"+e;"ride"===this.data.gameMode&&(a="pool__plume-"+e),"mine"!==e&&t&&(a+="-"+t);const n=this.el.sceneEl.components[a];if(n)return n.requestEntity();console.warn("Pool "+a+" unavailable")},onClearGame:function(){this.preloadTime=0,this.index.events=0,this.index.notes=0,this.index.obstacles=0;for(let e=0;e{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0?1:+e}),"name"in Function.prototype==!1&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),a=1;a>8&255]+e[t>>16&255]+e[t>>24&255]+"-"+e[255&a]+e[a>>8&255]+"-"+e[a>>16&15|64]+e[a>>24&255]+"-"+e[63&n|128]+e[n>>8&255]+"-"+e[n>>16&255]+e[n>>24&255]+e[255&r]+e[r>>8&255]+e[r>>16&255]+e[r>>24&255]}}(),clamp:function(e,t,a){return Math.max(t,Math.min(a,e))},euclideanModulo:function(e,t){return(e%t+t)%t},mapLinear:function(e,t,a,n,r){return n+(e-t)*(r-n)/(a-t)},lerp:function(e,t,a){return(1-a)*e+a*t},smoothstep:function(e,t,a){return e<=t?0:e>=a?1:(e=(e-t)/(a-t))*e*(3-2*e)},smootherstep:function(e,t,a){return e<=t?0:e>=a?1:(e=(e-t)/(a-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:function(e){return e*m.DEG2RAD},radToDeg:function(e){return e*m.RAD2DEG},isPowerOfTwo:function(e){return 0==(e&e-1)&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}};function p(e,t){this.x=e||0,this.y=t||0}function f(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function b(e,t,a,n){this._x=e||0,this._y=t||0,this._z=a||0,this._w=void 0!==n?n:1}function y(e,t,a){this.x=e||0,this.y=t||0,this.z=a||0}function g(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}Object.defineProperties(p.prototype,{width:{get:function(){return this.x},set:function(e){this.x=e}},height:{get:function(){return this.y},set:function(e){this.y=e}}}),Object.assign(p.prototype,{isVector2:!0,set:function(e,t){return this.x=e,this.y=t,this},setScalar:function(e){return this.x=e,this.y=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){return this.multiplyScalar(1/e)},applyMatrix3:function(e){var t=this.x,a=this.y,n=e.elements;return this.x=n[0]*t+n[3]*a+n[6],this.y=n[1]*t+n[4]*a+n[7],this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this},clampScalar:(r=new p,s=new p,function(e,t){return r.set(e,e),s.set(t,t),this.clamp(r,s)}),clampLength:function(e,t){var a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(t,a)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var e=Math.atan2(this.y,this.x);return e<0&&(e+=2*Math.PI),e},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,a=this.y-e.y;return t*t+a*a},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,a){return this.subVectors(t,e).multiplyScalar(a).add(e)},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromBufferAttribute:function(e,t,a){return void 0!==a&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this},rotateAround:function(e,t){var a=Math.cos(t),n=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*a-s*n+e.x,this.y=r*n+s*a+e.y,this}}),Object.assign(f.prototype,{isMatrix4:!0,set:function(e,t,a,n,r,s,o,i,c,d,l,u,h,m,p,f){var b=this.elements;return b[0]=e,b[4]=t,b[8]=a,b[12]=n,b[1]=r,b[5]=s,b[9]=o,b[13]=i,b[2]=c,b[6]=d,b[10]=l,b[14]=u,b[3]=h,b[7]=m,b[11]=p,b[15]=f,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new f).fromArray(this.elements)},copy:function(e){var t=this.elements,a=e.elements;return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],this},copyPosition:function(e){var t=this.elements,a=e.elements;return t[12]=a[12],t[13]=a[13],t[14]=a[14],this},extractBasis:function(e,t,a){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),a.setFromMatrixColumn(this,2),this},makeBasis:function(e,t,a){return this.set(e.x,t.x,a.x,0,e.y,t.y,a.y,0,e.z,t.z,a.z,0,0,0,0,1),this},extractRotation:(u=new y,function(e){var t=this.elements,a=e.elements,n=1/u.setFromMatrixColumn(e,0).length(),r=1/u.setFromMatrixColumn(e,1).length(),s=1/u.setFromMatrixColumn(e,2).length();return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[4]=a[4]*r,t[5]=a[5]*r,t[6]=a[6]*r,t[8]=a[8]*s,t[9]=a[9]*s,t[10]=a[10]*s,this}),makeRotationFromEuler:function(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,a=e.x,n=e.y,r=e.z,s=Math.cos(a),o=Math.sin(a),i=Math.cos(n),c=Math.sin(n),d=Math.cos(r),l=Math.sin(r);if("XYZ"===e.order){var u=s*d,h=s*l,m=o*d,p=o*l;t[0]=i*d,t[4]=-i*l,t[8]=c,t[1]=h+m*c,t[5]=u-p*c,t[9]=-o*i,t[2]=p-u*c,t[6]=m+h*c,t[10]=s*i}else if("YXZ"===e.order){var f=i*d,b=i*l,y=c*d,g=c*l;t[0]=f+g*o,t[4]=y*o-b,t[8]=s*c,t[1]=s*l,t[5]=s*d,t[9]=-o,t[2]=b*o-y,t[6]=g+f*o,t[10]=s*i}else if("ZXY"===e.order){f=i*d,b=i*l,y=c*d,g=c*l;t[0]=f-g*o,t[4]=-s*l,t[8]=y+b*o,t[1]=b+y*o,t[5]=s*d,t[9]=g-f*o,t[2]=-s*c,t[6]=o,t[10]=s*i}else if("ZYX"===e.order){u=s*d,h=s*l,m=o*d,p=o*l;t[0]=i*d,t[4]=m*c-h,t[8]=u*c+p,t[1]=i*l,t[5]=p*c+u,t[9]=h*c-m,t[2]=-c,t[6]=o*i,t[10]=s*i}else if("YZX"===e.order){var v=s*i,w=s*c,A=o*i,S=o*c;t[0]=i*d,t[4]=S-v*l,t[8]=A*l+w,t[1]=l,t[5]=s*d,t[9]=-o*d,t[2]=-c*d,t[6]=w*l+A,t[10]=v-S*l}else if("XZY"===e.order){v=s*i,w=s*c,A=o*i,S=o*c;t[0]=i*d,t[4]=-l,t[8]=c*d,t[1]=v*l+S,t[5]=s*d,t[9]=w*l-A,t[2]=A*l-w,t[6]=o*d,t[10]=S*l+v}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromQuaternion:function(e){var t=this.elements,a=e._x,n=e._y,r=e._z,s=e._w,o=a+a,i=n+n,c=r+r,d=a*o,l=a*i,u=a*c,h=n*i,m=n*c,p=r*c,f=s*o,b=s*i,y=s*c;return t[0]=1-(h+p),t[4]=l-y,t[8]=u+b,t[1]=l+y,t[5]=1-(d+p),t[9]=m-f,t[2]=u-b,t[6]=m+f,t[10]=1-(d+h),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},lookAt:(c=new y,d=new y,l=new y,function(e,t,a){var n=this.elements;return l.subVectors(e,t),0===l.lengthSq()&&(l.z=1),l.normalize(),c.crossVectors(a,l),0===c.lengthSq()&&(1===Math.abs(a.z)?l.x+=1e-4:l.z+=1e-4,l.normalize(),c.crossVectors(a,l)),c.normalize(),d.crossVectors(l,c),n[0]=c.x,n[4]=d.x,n[8]=l.x,n[1]=c.y,n[5]=d.y,n[9]=l.y,n[2]=c.z,n[6]=d.z,n[10]=l.z,this}),multiply:function(e,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},premultiply:function(e){return this.multiplyMatrices(e,this)},multiplyMatrices:function(e,t){var a=e.elements,n=t.elements,r=this.elements,s=a[0],o=a[4],i=a[8],c=a[12],d=a[1],l=a[5],u=a[9],h=a[13],m=a[2],p=a[6],f=a[10],b=a[14],y=a[3],g=a[7],v=a[11],w=a[15],A=n[0],S=n[4],E=n[8],x=n[12],T=n[1],R=n[5],_=n[9],N=n[13],k=n[2],M=n[6],P=n[10],L=n[14],j=n[3],C=n[7],I=n[11],D=n[15];return r[0]=s*A+o*T+i*k+c*j,r[4]=s*S+o*R+i*M+c*C,r[8]=s*E+o*_+i*P+c*I,r[12]=s*x+o*N+i*L+c*D,r[1]=d*A+l*T+u*k+h*j,r[5]=d*S+l*R+u*M+h*C,r[9]=d*E+l*_+u*P+h*I,r[13]=d*x+l*N+u*L+h*D,r[2]=m*A+p*T+f*k+b*j,r[6]=m*S+p*R+f*M+b*C,r[10]=m*E+p*_+f*P+b*I,r[14]=m*x+p*N+f*L+b*D,r[3]=y*A+g*T+v*k+w*j,r[7]=y*S+g*R+v*M+w*C,r[11]=y*E+g*_+v*P+w*I,r[15]=y*x+g*N+v*L+w*D,this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},applyToBufferAttribute:function(){var e=new y;return function(t){for(var a=0,n=t.count;a=0?1:-1,g=1-b*b;if(g>Number.EPSILON){var v=Math.sqrt(g),w=Math.atan2(v,b*y);f=Math.sin(f*w)/v,o=Math.sin(o*w)/v}var A=o*y;if(i=i*f+u*A,c=c*f+h*A,d=d*f+m*A,l=l*f+p*A,f===1-o){var S=1/Math.sqrt(i*i+c*c+d*d+l*l);i*=S,c*=S,d*=S,l*=S}}e[t]=i,e[t+1]=c,e[t+2]=d,e[t+3]=l}}),Object.defineProperties(b.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this.onChangeCallback()}},w:{get:function(){return this._w},set:function(e){this._w=e,this.onChangeCallback()}}}),Object.assign(b.prototype,{set:function(e,t,a,n){return this._x=e,this._y=t,this._z=a,this._w=n,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this.onChangeCallback(),this},setFromEuler:function(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var a=e._x,n=e._y,r=e._z,s=e.order,o=Math.cos,i=Math.sin,c=o(a/2),d=o(n/2),l=o(r/2),u=i(a/2),h=i(n/2),m=i(r/2);return"XYZ"===s?(this._x=u*d*l+c*h*m,this._y=c*h*l-u*d*m,this._z=c*d*m+u*h*l,this._w=c*d*l-u*h*m):"YXZ"===s?(this._x=u*d*l+c*h*m,this._y=c*h*l-u*d*m,this._z=c*d*m-u*h*l,this._w=c*d*l+u*h*m):"ZXY"===s?(this._x=u*d*l-c*h*m,this._y=c*h*l+u*d*m,this._z=c*d*m+u*h*l,this._w=c*d*l-u*h*m):"ZYX"===s?(this._x=u*d*l-c*h*m,this._y=c*h*l+u*d*m,this._z=c*d*m-u*h*l,this._w=c*d*l+u*h*m):"YZX"===s?(this._x=u*d*l+c*h*m,this._y=c*h*l+u*d*m,this._z=c*d*m-u*h*l,this._w=c*d*l-u*h*m):"XZY"===s&&(this._x=u*d*l-c*h*m,this._y=c*h*l-u*d*m,this._z=c*d*m+u*h*l,this._w=c*d*l+u*h*m),!1!==t&&this.onChangeCallback(),this},setFromAxisAngle:function(e,t){var a=t/2,n=Math.sin(a);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(a),this.onChangeCallback(),this},setFromRotationMatrix:function(e){var t,a=e.elements,n=a[0],r=a[4],s=a[8],o=a[1],i=a[5],c=a[9],d=a[2],l=a[6],u=a[10],h=n+i+u;return h>0?(t=.5/Math.sqrt(h+1),this._w=.25/t,this._x=(l-c)*t,this._y=(s-d)*t,this._z=(o-r)*t):n>i&&n>u?(t=2*Math.sqrt(1+n-i-u),this._w=(l-c)/t,this._x=.25*t,this._y=(r+o)/t,this._z=(s+d)/t):i>u?(t=2*Math.sqrt(1+i-n-u),this._w=(s-d)/t,this._x=(r+o)/t,this._y=.25*t,this._z=(c+l)/t):(t=2*Math.sqrt(1+u-n-i),this._w=(o-r)/t,this._x=(s+d)/t,this._y=(c+l)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:function(){var e,t=new y;return function(a,n){return void 0===t&&(t=new y),(e=a.dot(n)+1)<1e-6?(e=0,Math.abs(a.x)>Math.abs(a.z)?t.set(-a.y,a.x,0):t.set(0,-a.z,a.y)):t.crossVectors(a,n),this._x=t.x,this._y=t.y,this._z=t.z,this._w=e,this.normalize()}}(),inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this.onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},premultiply:function(e){return this.multiplyQuaternions(e,this)},multiplyQuaternions:function(e,t){var a=e._x,n=e._y,r=e._z,s=e._w,o=t._x,i=t._y,c=t._z,d=t._w;return this._x=a*d+s*o+n*c-r*i,this._y=n*d+s*i+r*o-a*c,this._z=r*d+s*c+a*i-n*o,this._w=s*d-a*o-n*i-r*c,this.onChangeCallback(),this},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var a=this._x,n=this._y,r=this._z,s=this._w,o=s*e._w+a*e._x+n*e._y+r*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=s,this._x=a,this._y=n,this._z=r,this;var i=Math.sqrt(1-o*o);if(Math.abs(i)<.001)return this._w=.5*(s+this._w),this._x=.5*(a+this._x),this._y=.5*(n+this._y),this._z=.5*(r+this._z),this;var c=Math.atan2(i,o),d=Math.sin((1-t)*c)/i,l=Math.sin(t*c)/i;return this._w=s*d+this._w*l,this._x=a*d+this._x*l,this._y=n*d+this._y*l,this._z=r*d+this._z*l,this.onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){}}),Object.assign(y.prototype,{isVector3:!0,set:function(e,t,a){return this.x=e,this.y=t,this.z=a,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:(h=new b,function(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(h.setFromEuler(e))}),applyAxisAngle:function(){var e=new b;return function(t,a){return this.applyQuaternion(e.setFromAxisAngle(t,a))}}(),applyMatrix3:function(e){var t=this.x,a=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*a+r[6]*n,this.y=r[1]*t+r[4]*a+r[7]*n,this.z=r[2]*t+r[5]*a+r[8]*n,this},applyMatrix4:function(e){var t=this.x,a=this.y,n=this.z,r=e.elements,s=1/(r[3]*t+r[7]*a+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*a+r[8]*n+r[12])*s,this.y=(r[1]*t+r[5]*a+r[9]*n+r[13])*s,this.z=(r[2]*t+r[6]*a+r[10]*n+r[14])*s,this},applyQuaternion:function(e){var t=this.x,a=this.y,n=this.z,r=e.x,s=e.y,o=e.z,i=e.w,c=i*t+s*n-o*a,d=i*a+o*t-r*n,l=i*n+r*a-s*t,u=-r*t-s*a-o*n;return this.x=c*i+u*-r+d*-o-l*-s,this.y=d*i+u*-s+l*-r-c*-o,this.z=l*i+u*-o+c*-s-d*-r,this},project:function(){var e=new f;return function(t){return e.multiplyMatrices(t.projectionMatrix,e.getInverse(t.matrixWorld)),this.applyMatrix4(e)}}(),unproject:function(){var e=new f;return function(t){return e.multiplyMatrices(t.matrixWorld,e.getInverse(t.projectionMatrix)),this.applyMatrix4(e)}}(),transformDirection:function(e){var t=this.x,a=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*a+r[8]*n,this.y=r[1]*t+r[5]*a+r[9]*n,this.z=r[2]*t+r[6]*a+r[10]*n,this.normalize()},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){return this.multiplyScalar(1/e)},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this},clampScalar:function(){var e=new y,t=new y;return function(a,n){return e.set(a,a,a),t.set(n,n,n),this.clamp(e,t)}}(),clampLength:function(e,t){var a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(t,a)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,a){return this.subVectors(t,e).multiplyScalar(a).add(e)},cross:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)},crossVectors:function(e,t){var a=e.x,n=e.y,r=e.z,s=t.x,o=t.y,i=t.z;return this.x=n*i-r*o,this.y=r*s-a*i,this.z=a*o-n*s,this},projectOnVector:function(e){var t=e.dot(this)/e.lengthSq();return this.copy(e).multiplyScalar(t)},projectOnPlane:function(){var e=new y;return function(t){return e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e=new y;return function(t){return this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(e){var t=this.dot(e)/Math.sqrt(this.lengthSq()*e.lengthSq());return Math.acos(m.clamp(t,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,a=this.y-e.y,n=this.z-e.z;return t*t+a*a+n*n},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)},setFromSpherical:function(e){var t=Math.sin(e.phi)*e.radius;return this.x=t*Math.sin(e.theta),this.y=Math.cos(e.phi)*e.radius,this.z=t*Math.cos(e.theta),this},setFromCylindrical:function(e){return this.x=e.radius*Math.sin(e.theta),this.y=e.y,this.z=e.radius*Math.cos(e.theta),this},setFromMatrixPosition:function(e){var t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this},setFromMatrixScale:function(e){var t=this.setFromMatrixColumn(e,0).length(),a=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=a,this.z=n,this},setFromMatrixColumn:function(e,t){return this.fromArray(e.elements,4*t)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromBufferAttribute:function(e,t,a){return void 0!==a&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}}),Object.assign(g.prototype,{isMatrix3:!0,set:function(e,t,a,n,r,s,o,i,c){var d=this.elements;return d[0]=e,d[1]=n,d[2]=o,d[3]=t,d[4]=r,d[5]=i,d[6]=a,d[7]=s,d[8]=c,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(e){var t=this.elements,a=e.elements;return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],this},setFromMatrix4:function(e){var t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this},applyToBufferAttribute:function(){var e=new y;return function(t){for(var a=0,n=t.count;a2048||t.height>2048?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}(n)}),a.image=n.uuid}return t||(e.textures[this.uuid]=a),a},dispose:function(){this.dispatchEvent({type:"dispose"})},transformUv:function(e){if(300===this.mapping){if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}this.flipY&&(e.y=1-e.y)}}}),Object.defineProperty(w.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(A.prototype,{isVector4:!0,set:function(e,t,a,n){return this.x=e,this.y=t,this.z=a,this.w=n,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this.w=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,a=this.y,n=this.z,r=this.w,s=e.elements;return this.x=s[0]*t+s[4]*a+s[8]*n+s[12]*r,this.y=s[1]*t+s[5]*a+s[9]*n+s[13]*r,this.z=s[2]*t+s[6]*a+s[10]*n+s[14]*r,this.w=s[3]*t+s[7]*a+s[11]*n+s[15]*r,this},divideScalar:function(e){return this.multiplyScalar(1/e)},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,a,n,r,s=e.elements,o=s[0],i=s[4],c=s[8],d=s[1],l=s[5],u=s[9],h=s[2],m=s[6],p=s[10];if(Math.abs(i-d)<.01&&Math.abs(c-h)<.01&&Math.abs(u-m)<.01){if(Math.abs(i+d)<.1&&Math.abs(c+h)<.1&&Math.abs(u+m)<.1&&Math.abs(o+l+p-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;var f=(o+1)/2,b=(l+1)/2,y=(p+1)/2,g=(i+d)/4,v=(c+h)/4,w=(u+m)/4;return f>b&&f>y?f<.01?(a=0,n=.707106781,r=.707106781):(n=g/(a=Math.sqrt(f)),r=v/a):b>y?b<.01?(a=.707106781,n=0,r=.707106781):(a=g/(n=Math.sqrt(b)),r=w/n):y<.01?(a=.707106781,n=.707106781,r=0):(a=v/(r=Math.sqrt(y)),n=w/r),this.set(a,n,r,t),this}var A=Math.sqrt((m-u)*(m-u)+(c-h)*(c-h)+(d-i)*(d-i));return Math.abs(A)<.001&&(A=1),this.x=(m-u)/A,this.y=(c-h)/A,this.z=(d-i)/A,this.w=Math.acos((o+l+p-1)/2),this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this},clampScalar:function(){var e,t;return function(a,n){return void 0===e&&(e=new A,t=new A),e.set(a,a,a,a),t.set(n,n,n,n),this.clamp(e,t)}}(),clampLength:function(e,t){var a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(t,a)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this},lerpVectors:function(e,t,a){return this.subVectors(t,e).multiplyScalar(a).add(e)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},fromBufferAttribute:function(e,t,a){return void 0!==a&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}}),S.prototype=Object.assign(Object.create(n.prototype),{constructor:S,isWebGLRenderTarget:!0,setSize:function(e,t){this.width===e&&this.height===t||(this.width=e,this.height=t,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.width=e.width,this.height=e.height,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.depthTexture=e.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),E.prototype=Object.create(S.prototype),E.prototype.constructor=E,E.prototype.isWebGLRenderTargetCube=!0,x.prototype=Object.create(w.prototype),x.prototype.constructor=x,x.prototype.isDataTexture=!0,T.prototype=Object.create(w.prototype),T.prototype.constructor=T,T.prototype.isCubeTexture=!0,Object.defineProperty(T.prototype,"images",{get:function(){return this.image},set:function(e){this.image=e}});var R=new w,_=new T;function N(){this.seq=[],this.map={}}var k=[],M=[],P=new Float32Array(16),L=new Float32Array(9);function j(e,t,a){var n=e[0];if(n<=0||n>0)return e;var r=t*a,s=k[r];if(void 0===s&&(s=new Float32Array(r),k[r]=s),0!==t){n.toArray(s,0);for(var o=1,i=0;o!==t;++o)i+=a,e[o].toArray(s,i)}return s}function C(e,t){var a=M[t];void 0===a&&(a=new Int32Array(t),M[t]=a);for(var n=0;n!==t;++n)a[n]=e.allocTextureUnit();return a}function I(e,t){e.uniform1f(this.addr,t)}function D(e,t){e.uniform1i(this.addr,t)}function O(e,t){void 0===t.x?e.uniform2fv(this.addr,t):e.uniform2f(this.addr,t.x,t.y)}function U(e,t){void 0!==t.x?e.uniform3f(this.addr,t.x,t.y,t.z):void 0!==t.r?e.uniform3f(this.addr,t.r,t.g,t.b):e.uniform3fv(this.addr,t)}function F(e,t){void 0===t.x?e.uniform4fv(this.addr,t):e.uniform4f(this.addr,t.x,t.y,t.z,t.w)}function Z(e,t){e.uniformMatrix2fv(this.addr,!1,t.elements||t)}function H(e,t){void 0===t.elements?e.uniformMatrix3fv(this.addr,!1,t):(L.set(t.elements),e.uniformMatrix3fv(this.addr,!1,L))}function B(e,t){void 0===t.elements?e.uniformMatrix4fv(this.addr,!1,t):(P.set(t.elements),e.uniformMatrix4fv(this.addr,!1,P))}function z(e,t,a){var n=a.allocTextureUnit();e.uniform1i(this.addr,n),a.setTexture2D(t||R,n)}function q(e,t,a){var n=a.allocTextureUnit();e.uniform1i(this.addr,n),a.setTextureCube(t||_,n)}function V(e,t){e.uniform2iv(this.addr,t)}function G(e,t){e.uniform3iv(this.addr,t)}function W(e,t){e.uniform4iv(this.addr,t)}function J(e,t){e.uniform1fv(this.addr,t)}function Y(e,t){e.uniform1iv(this.addr,t)}function K(e,t){e.uniform2fv(this.addr,j(t,this.size,2))}function X(e,t){e.uniform3fv(this.addr,j(t,this.size,3))}function Q(e,t){e.uniform4fv(this.addr,j(t,this.size,4))}function $(e,t){e.uniformMatrix2fv(this.addr,!1,j(t,this.size,4))}function ee(e,t){e.uniformMatrix3fv(this.addr,!1,j(t,this.size,9))}function te(e,t){e.uniformMatrix4fv(this.addr,!1,j(t,this.size,16))}function ae(e,t,a){var n=t.length,r=C(a,n);e.uniform1iv(this.addr,r);for(var s=0;s!==n;++s)a.setTexture2D(t[s]||R,r[s])}function ne(e,t,a){var n=t.length,r=C(a,n);e.uniform1iv(this.addr,r);for(var s=0;s!==n;++s)a.setTextureCube(t[s]||_,r[s])}function re(e,t,a){this.id=e,this.addr=a,this.setValue=function(e){switch(e){case 5126:return I;case 35664:return O;case 35665:return U;case 35666:return F;case 35674:return Z;case 35675:return H;case 35676:return B;case 35678:case 36198:return z;case 35680:return q;case 5124:case 35670:return D;case 35667:case 35671:return V;case 35668:case 35672:return G;case 35669:case 35673:return W}}(t.type)}function se(e,t,a){this.id=e,this.addr=a,this.size=t.size,this.setValue=function(e){switch(e){case 5126:return J;case 35664:return K;case 35665:return X;case 35666:return Q;case 35674:return $;case 35675:return ee;case 35676:return te;case 35678:return ae;case 35680:return ne;case 5124:case 35670:return Y;case 35667:case 35671:return V;case 35668:case 35672:return G;case 35669:case 35673:return W}}(t.type)}function oe(e){this.id=e,N.call(this)}oe.prototype.setValue=function(e,t){for(var a=this.seq,n=0,r=a.length;n!==r;++n){var s=a[n];s.setValue(e,t[s.id])}};var ie=/([\w\d_]+)(\])?(\[|\.)?/g;function ce(e,t){e.seq.push(t),e.map[t.id]=t}function de(e,t,a){var n=e.name,r=n.length;for(ie.lastIndex=0;;){var s=ie.exec(n),o=ie.lastIndex,i=s[1],c="]"===s[2],d=s[3];if(c&&(i|=0),void 0===d||"["===d&&o+2===r){ce(a,void 0===d?new re(i,e,t):new se(i,e,t));break}var l=a.map[i];void 0===l&&ce(a,l=new oe(i)),a=l}}function le(e,t,a){N.call(this),this.renderer=a;for(var n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS),r=0;r>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,a){return this.r=e,this.g=t,this.b=a,this},setHSL:function(){function e(e,t,a){return a<0&&(a+=1),a>1&&(a-=1),a<1/6?e+6*(t-e)*a:a<.5?t:a<2/3?e+6*(t-e)*(2/3-a):e}return function(t,a,n){if(t=m.euclideanModulo(t,1),a=m.clamp(a,0,1),n=m.clamp(n,0,1),0===a)this.r=this.g=this.b=n;else{var r=n<=.5?n*(1+a):n+a-n*a,s=2*n-r;this.r=e(s,r,t+1/3),this.g=e(s,r,t),this.b=e(s,r,t-1/3)}return this}}(),setStyle:function(e){function t(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}var a;if(a=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(e)){var n,r=a[1],s=a[2];switch(r){case"rgb":case"rgba":if(n=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(n[1],10))/255,this.g=Math.min(255,parseInt(n[2],10))/255,this.b=Math.min(255,parseInt(n[3],10))/255,t(n[5]),this;if(n=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(n[1],10))/100,this.g=Math.min(100,parseInt(n[2],10))/100,this.b=Math.min(100,parseInt(n[3],10))/100,t(n[5]),this;break;case"hsl":case"hsla":if(n=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(s)){var o=parseFloat(n[1])/360,i=parseInt(n[2],10)/100,c=parseInt(n[3],10)/100;return t(n[5]),this.setHSL(o,i,c)}}}else if(a=/^\#([A-Fa-f0-9]+)$/.exec(e)){var d,l=(d=a[1]).length;if(3===l)return this.r=parseInt(d.charAt(0)+d.charAt(0),16)/255,this.g=parseInt(d.charAt(1)+d.charAt(1),16)/255,this.b=parseInt(d.charAt(2)+d.charAt(2),16)/255,this;if(6===l)return this.r=parseInt(d.charAt(0)+d.charAt(1),16)/255,this.g=parseInt(d.charAt(2)+d.charAt(3),16)/255,this.b=parseInt(d.charAt(4)+d.charAt(5),16)/255,this}e&&e.length>0&&(void 0!==(d=ue[e])?this.setHex(d):console.warn("THREE.Color: Unknown color "+e));return this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var a=t>0?1/t:1;return this.r=Math.pow(e.r,a),this.g=Math.pow(e.g,a),this.b=Math.pow(e.b,a),this},convertGammaToLinear:function(){var e=this.r,t=this.g,a=this.b;return this.r=e*e,this.g=t*t,this.b=a*a,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){var t,a,n=e||{h:0,s:0,l:0},r=this.r,s=this.g,o=this.b,i=Math.max(r,s,o),c=Math.min(r,s,o),d=(c+i)/2;if(c===i)t=0,a=0;else{var l=i-c;switch(a=d<=.5?l/(i+c):l/(2-i-c),i){case r:t=(s-o)/l+(s 0.0 ) {\r\n\r\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\r\n\r\n\t\t// based upon Frostbite 3 Moving to Physically-based Rendering\r\n\t\t// page 32, equation 26: E[window1]\r\n\t\t// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\n\t\t// this is intended to be used on spot and point lights who are represented as luminous intensity\r\n\t\t// but who must be converted to luminous irradiance for surface lighting calculation\r\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\r\n\t\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\r\n\t\treturn distanceFalloff * maxDistanceCutoffFactor;\r\n\r\n#else\r\n\r\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\r\n\r\n#endif\r\n\r\n\t}\r\n\r\n\treturn 1.0;\r\n\r\n}\r\n\r\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\r\n\r\n\treturn RECIPROCAL_PI * diffuseColor;\r\n\r\n} // validated\r\n\r\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\r\n\r\n\t// Original approximation by Christophe Schlick \'94\r\n\t// float fresnel = pow( 1.0 - dotLH, 5.0 );\r\n\r\n\t// Optimized variant (presented by Epic at SIGGRAPH \'13)\r\n\t// https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf\r\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\r\n\r\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\r\n\r\n} // validated\r\n\r\n// Microfacet Models for Refraction through Rough Surfaces - equation (34)\r\n// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html\r\n// alpha is "roughness squared" in Disney’s reparameterization\r\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\r\n\r\n\t// geometry term (normalized) = G(l)⋅G(v) / 4(n⋅l)(n⋅v)\r\n\t// also see #12151\r\n\r\n\tfloat a2 = pow2( alpha );\r\n\r\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\r\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\r\n\r\n\treturn 1.0 / ( gl * gv );\r\n\r\n} // validated\r\n\r\n// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2\r\n// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\r\n\r\n\tfloat a2 = pow2( alpha );\r\n\r\n\t// dotNL and dotNV are explicitly swapped. This is not a mistake.\r\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\r\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\r\n\r\n\treturn 0.5 / max( gv + gl, EPSILON );\r\n\r\n}\r\n\r\n// Microfacet Models for Refraction through Rough Surfaces - equation (33)\r\n// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html\r\n// alpha is "roughness squared" in Disney’s reparameterization\r\nfloat D_GGX( const in float alpha, const in float dotNH ) {\r\n\r\n\tfloat a2 = pow2( alpha );\r\n\r\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; // avoid alpha = 0 with dotNH = 1\r\n\r\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\r\n\r\n}\r\n\r\n// GGX Distribution, Schlick Fresnel, GGX-Smith Visibility\r\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\r\n\r\n\tfloat alpha = pow2( roughness ); // UE4\'s roughness\r\n\r\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\r\n\r\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\r\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\r\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\r\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\r\n\r\n\tvec3 F = F_Schlick( specularColor, dotLH );\r\n\r\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\r\n\r\n\tfloat D = D_GGX( alpha, dotNH );\r\n\r\n\treturn F * ( G * D );\r\n\r\n} // validated\r\n\r\n// Rect Area Light\r\n\r\n// Real-Time Polygonal-Light Shading with Linearly Transformed Cosines\r\n// by Eric Heitz, Jonathan Dupuy, Stephen Hill and David Neubelt\r\n// code: https://github.com/selfshadow/ltc_code/\r\n\r\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\r\n\r\n\tconst float LUT_SIZE = 64.0;\r\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\r\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\r\n\r\n\tfloat dotNV = saturate( dot( N, V ) );\r\n\r\n\t// texture parameterized by sqrt( GGX alpha ) and sqrt( 1 - cos( theta ) )\r\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\r\n\r\n\tuv = uv * LUT_SCALE + LUT_BIAS;\r\n\r\n\treturn uv;\r\n\r\n}\r\n\r\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\r\n\r\n\t// Real-Time Area Lighting: a Journey from Research to Production (p.102)\r\n\t// An approximation of the form factor of a horizon-clipped rectangle.\r\n\r\n\tfloat l = length( f );\r\n\r\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\r\n\r\n}\r\n\r\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\r\n\r\n\tfloat x = dot( v1, v2 );\r\n\r\n\tfloat y = abs( x );\r\n\r\n\t// rational polynomial approximation to theta / sin( theta ) / 2PI\r\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\r\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\r\n\tfloat v = a / b;\r\n\r\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\r\n\r\n\treturn cross( v1, v2 ) * theta_sintheta;\r\n\r\n}\r\n\r\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\r\n\r\n\t// bail if point is on back side of plane of light\r\n\t// assumes ccw winding order of light vertices\r\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\r\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\r\n\tvec3 lightNormal = cross( v1, v2 );\r\n\r\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\r\n\r\n\t// construct orthonormal basis around N\r\n\tvec3 T1, T2;\r\n\tT1 = normalize( V - N * dot( V, N ) );\r\n\tT2 = - cross( N, T1 ); // negated from paper; possibly due to a different handedness of world coordinate system\r\n\r\n\t// compute transform\r\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\r\n\r\n\t// transform rect\r\n\tvec3 coords[ 4 ];\r\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\r\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\r\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\r\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\r\n\r\n\t// project rect onto sphere\r\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\r\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\r\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\r\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\r\n\r\n\t// calculate vector form factor\r\n\tvec3 vectorFormFactor = vec3( 0.0 );\r\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\r\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\r\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\r\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\r\n\r\n\t// adjust for horizon clipping\r\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\r\n\r\n\r\n\r\n\treturn vec3( result );\r\n\r\n}\r\n\r\n// End Rect Area Light\r\n\r\n// ref: https://www.unrealengine.com/blog/physically-based-shading-on-mobile - environmentBRDF for GGX on mobile\r\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\r\n\r\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\r\n\r\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\r\n\r\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\r\n\r\n\tvec4 r = roughness * c0 + c1;\r\n\r\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\r\n\r\n\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\r\n\r\n\treturn specularColor * AB.x + AB.y;\r\n\r\n} // validated\r\n\r\n\r\nfloat G_BlinnPhong_Implicit( ) {\r\n\r\n\t// geometry term is (n dot l)(n dot v) / 4(n dot l)(n dot v)\r\n\treturn 0.25;\r\n\r\n}\r\n\r\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\r\n\r\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\r\n\r\n}\r\n\r\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\r\n\r\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\r\n\r\n\t//float dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\r\n\t//float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\r\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\r\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\r\n\r\n\tvec3 F = F_Schlick( specularColor, dotLH );\r\n\r\n\tfloat G = G_BlinnPhong_Implicit( );\r\n\r\n\tfloat D = D_BlinnPhong( shininess, dotNH );\r\n\r\n\treturn F * ( G * D );\r\n\r\n} // validated\r\n\r\n// source: http://simonstechblog.blogspot.ca/2011/12/microfacet-brdf.html\r\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\r\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\r\n}\r\n\r\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\r\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\r\n}\r\n',bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\r\n\r\n\tuniform sampler2D bumpMap;\r\n\tuniform float bumpScale;\r\n\r\n\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\r\n\t// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\r\n\r\n\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\r\n\r\n\tvec2 dHdxy_fwd() {\r\n\r\n\t\tvec2 dSTdx = dFdx( vUv );\r\n\t\tvec2 dSTdy = dFdy( vUv );\r\n\r\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\r\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\r\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\r\n\r\n\t\treturn vec2( dBx, dBy );\r\n\r\n\t}\r\n\r\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\r\n\r\n\t\t// Workaround for Adreno 3XX dFd*( vec3 ) bug. See #9988\r\n\r\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\r\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\r\n\t\tvec3 vN = surf_norm;\t\t// normalized\r\n\r\n\t\tvec3 R1 = cross( vSigmaY, vN );\r\n\t\tvec3 R2 = cross( vN, vSigmaX );\r\n\r\n\t\tfloat fDet = dot( vSigmaX, R1 );\r\n\r\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\r\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\r\n\r\n\t}\r\n\r\n#endif\r\n",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\r\n\r\n\tvec4 plane;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\r\n\r\n\t\tplane = clippingPlanes[ i ];\r\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\r\n\r\n\t}\r\n\r\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\r\n\r\n\t\tbool clipped = true;\r\n\r\n\t\t#pragma unroll_loop\r\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\r\n\r\n\t\t\tplane = clippingPlanes[ i ];\r\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\r\n\r\n\t\t}\r\n\r\n\t\tif ( clipped ) discard;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\r\n\r\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\r\n\t\tvarying vec3 vViewPosition;\r\n\t#endif\r\n\r\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\r\n\r\n#endif\r\n",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\r\n\tvarying vec3 vViewPosition;\r\n#endif\r\n",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\r\n\tvViewPosition = - mvPosition.xyz;\r\n#endif\r\n\r\n",color_fragment:"#ifdef USE_COLOR\r\n\r\n\tdiffuseColor.rgb *= vColor;\r\n\r\n#endif",color_pars_fragment:"#ifdef USE_COLOR\r\n\r\n\tvarying vec3 vColor;\r\n\r\n#endif\r\n",color_pars_vertex:"#ifdef USE_COLOR\r\n\r\n\tvarying vec3 vColor;\r\n\r\n#endif",color_vertex:"#ifdef USE_COLOR\r\n\r\n\tvColor.xyz = color.xyz;\r\n\r\n#endif",common:"#define PI 3.14159265359\r\n#define PI2 6.28318530718\r\n#define PI_HALF 1.5707963267949\r\n#define RECIPROCAL_PI 0.31830988618\r\n#define RECIPROCAL_PI2 0.15915494\r\n#define LOG2 1.442695\r\n#define EPSILON 1e-6\r\n\r\n#define saturate(a) clamp( a, 0.0, 1.0 )\r\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\r\n\r\nfloat pow2( const in float x ) { return x*x; }\r\nfloat pow3( const in float x ) { return x*x*x; }\r\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\r\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\r\n// expects values in the range of [0,1]x[0,1], returns values in the [0,1] range.\r\n// do not collapse into a single function per: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\r\nhighp float rand( const in vec2 uv ) {\r\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\r\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\r\n\treturn fract(sin(sn) * c);\r\n}\r\n\r\nstruct IncidentLight {\r\n\tvec3 color;\r\n\tvec3 direction;\r\n\tbool visible;\r\n};\r\n\r\nstruct ReflectedLight {\r\n\tvec3 directDiffuse;\r\n\tvec3 directSpecular;\r\n\tvec3 indirectDiffuse;\r\n\tvec3 indirectSpecular;\r\n};\r\n\r\nstruct GeometricContext {\r\n\tvec3 position;\r\n\tvec3 normal;\r\n\tvec3 viewDir;\r\n};\r\n\r\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\r\n\r\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\r\n\r\n}\r\n\r\n// http://en.wikibooks.org/wiki/GLSL_Programming/Applying_Matrix_Transformations\r\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\r\n\r\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\r\n\r\n}\r\n\r\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\r\n\r\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\r\n\r\n\treturn - distance * planeNormal + point;\r\n\r\n}\r\n\r\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\r\n\r\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\r\n\r\n}\r\n\r\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\r\n\r\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\r\n\r\n}\r\n\r\nmat3 transposeMat3( const in mat3 m ) {\r\n\r\n\tmat3 tmp;\r\n\r\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\r\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\r\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\r\n\r\n\treturn tmp;\r\n\r\n}\r\n\r\n// https://en.wikipedia.org/wiki/Relative_luminance\r\nfloat linearToRelativeLuminance( const in vec3 color ) {\r\n\r\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\r\n\r\n\treturn dot( weights, color.rgb );\r\n\r\n}\r\n",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\r\n\r\n#define cubeUV_textureSize (1024.0)\r\n\r\nint getFaceFromDirection(vec3 direction) {\r\n\tvec3 absDirection = abs(direction);\r\n\tint face = -1;\r\n\tif( absDirection.x > absDirection.z ) {\r\n\t\tif(absDirection.x > absDirection.y )\r\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\r\n\t\telse\r\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\r\n\t}\r\n\telse {\r\n\t\tif(absDirection.z > absDirection.y )\r\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\r\n\t\telse\r\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\r\n\t}\r\n\treturn face;\r\n}\r\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\r\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\r\n\r\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\r\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\r\n\tfloat dxRoughness = dFdx(roughness);\r\n\tfloat dyRoughness = dFdy(roughness);\r\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\r\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\r\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\r\n\t// Clamp the value to the max mip level counts. hard coded to 6 mips\r\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\r\n\tfloat mipLevel = 0.5 * log2(d);\r\n\treturn vec2(floor(mipLevel), fract(mipLevel));\r\n}\r\n\r\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\r\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\r\n\r\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\r\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\r\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\r\n\r\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\r\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\r\n\t// float powScale = exp2(roughnessLevel + mipLevel);\r\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\r\n\t// float scale = 1.0 / exp2(roughnessLevel + 2.0 + mipLevel);\r\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\r\n\t// float mipOffset = 0.75*(1.0 - 1.0/exp2(mipLevel))/exp2(roughnessLevel);\r\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\r\n\r\n\tbool bRes = mipLevel == 0.0;\r\n\tscale = bRes && (scale < a) ? a : scale;\r\n\r\n\tvec3 r;\r\n\tvec2 offset;\r\n\tint face = getFaceFromDirection(direction);\r\n\r\n\tfloat rcpPowScale = 1.0 / powScale;\r\n\r\n\tif( face == 0) {\r\n\t\tr = vec3(direction.x, -direction.z, direction.y);\r\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\r\n\t}\r\n\telse if( face == 1) {\r\n\t\tr = vec3(direction.y, direction.x, direction.z);\r\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\r\n\t}\r\n\telse if( face == 2) {\r\n\t\tr = vec3(direction.z, direction.x, direction.y);\r\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\r\n\t}\r\n\telse if( face == 3) {\r\n\t\tr = vec3(direction.x, direction.z, direction.y);\r\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\r\n\t}\r\n\telse if( face == 4) {\r\n\t\tr = vec3(direction.y, direction.x, -direction.z);\r\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\r\n\t}\r\n\telse {\r\n\t\tr = vec3(direction.z, -direction.x, direction.y);\r\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\r\n\t}\r\n\tr = normalize(r);\r\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\r\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\r\n\tvec2 base = offset + vec2( texelOffset );\r\n\treturn base + s * ( scale - 2.0 * texelOffset );\r\n}\r\n\r\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\r\n\r\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\r\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\r\n\tfloat r1 = floor(roughnessVal);\r\n\tfloat r2 = r1 + 1.0;\r\n\tfloat t = fract(roughnessVal);\r\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\r\n\tfloat s = mipInfo.y;\r\n\tfloat level0 = mipInfo.x;\r\n\tfloat level1 = level0 + 1.0;\r\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\r\n\r\n\t// round to nearest mipmap if we are not interpolating.\r\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\r\n\r\n\t// Tri linear interpolation.\r\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\r\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\r\n\r\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\r\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\r\n\r\n\tvec4 result = mix(color10, color20, t);\r\n\r\n\treturn vec4(result.rgb, 1.0);\r\n}\r\n\r\n#endif\r\n",defaultnormal_vertex:"vec3 transformedNormal = normalMatrix * objectNormal;\r\n\r\n#ifdef FLIP_SIDED\r\n\r\n\ttransformedNormal = - transformedNormal;\r\n\r\n#endif\r\n",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\r\n\r\n\tuniform sampler2D displacementMap;\r\n\tuniform float displacementScale;\r\n\tuniform float displacementBias;\r\n\r\n#endif\r\n",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\r\n\r\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\r\n\r\n#endif\r\n",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\r\n\r\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\r\n\r\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\r\n\r\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\r\n\r\n#endif\r\n",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\r\n\r\n\tuniform sampler2D emissiveMap;\r\n\r\n#endif\r\n",encodings_fragment:" gl_FragColor = linearToOutputTexel( gl_FragColor );\r\n",encodings_pars_fragment:"// For a discussion of what this is, please read this: http://lousodrome.net/blog/light/2013/05/26/gamma-correct-and-hdr-rendering-in-a-32-bits-buffer/\r\n\r\nvec4 LinearToLinear( in vec4 value ) {\r\n\treturn value;\r\n}\r\n\r\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\r\n\treturn vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\r\n}\r\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\r\n\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\r\n}\r\n\r\nvec4 sRGBToLinear( in vec4 value ) {\r\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\r\n}\r\nvec4 LinearTosRGB( in vec4 value ) {\r\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );\r\n}\r\n\r\nvec4 RGBEToLinear( in vec4 value ) {\r\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\r\n}\r\nvec4 LinearToRGBE( in vec4 value ) {\r\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\r\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\r\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\r\n// return vec4( value.brg, ( 3.0 + 128.0 ) / 256.0 );\r\n}\r\n\r\n// reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html\r\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\r\n\treturn vec4( value.xyz * value.w * maxRange, 1.0 );\r\n}\r\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\r\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\r\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\r\n\tM = ceil( M * 255.0 ) / 255.0;\r\n\treturn vec4( value.rgb / ( M * maxRange ), M );\r\n}\r\n\r\n// reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html\r\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\r\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\r\n}\r\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\r\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\r\n\tfloat D = max( maxRange / maxRGB, 1.0 );\r\n\tD = min( floor( D ) / 255.0, 1.0 );\r\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\r\n}\r\n\r\n// LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html\r\n\r\n// M matrix, for encoding\r\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\r\nvec4 LinearToLogLuv( in vec4 value ) {\r\n\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\r\n\tXp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\r\n\tvec4 vResult;\r\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\r\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\r\n\tvResult.w = fract(Le);\r\n\tvResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\r\n\treturn vResult;\r\n}\r\n\r\n// Inverse M matrix, for decoding\r\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\r\nvec4 LogLuvToLinear( in vec4 value ) {\r\n\tfloat Le = value.z * 255.0 + value.w;\r\n\tvec3 Xp_Y_XYZp;\r\n\tXp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\r\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\r\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\r\n\tvec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\r\n\treturn vec4( max(vRGB, 0.0), 1.0 );\r\n}\r\n",envmap_fragment:"#ifdef USE_ENVMAP\r\n\r\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\r\n\r\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\r\n\r\n\t\t// Transforming Normal Vectors with the Inverse Transformation\r\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\r\n\r\n\t\t#ifdef ENVMAP_MODE_REFLECTION\r\n\r\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\r\n\r\n\t\t#else\r\n\r\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\r\n\r\n\t\t#endif\r\n\r\n\t#else\r\n\r\n\t\tvec3 reflectVec = vReflect;\r\n\r\n\t#endif\r\n\r\n\t#ifdef ENVMAP_TYPE_CUBE\r\n\r\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\r\n\r\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\r\n\r\n\t\tvec2 sampleUV;\r\n\r\n\t\treflectVec = normalize( reflectVec );\r\n\r\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\r\n\r\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\r\n\r\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\r\n\r\n\t#elif defined( ENVMAP_TYPE_SPHERE )\r\n\r\n\t\treflectVec = normalize( reflectVec );\r\n\r\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\r\n\r\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\r\n\r\n\t#else\r\n\r\n\t\tvec4 envColor = vec4( 0.0 );\r\n\r\n\t#endif\r\n\r\n\tenvColor = envMapTexelToLinear( envColor );\r\n\r\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\r\n\r\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\r\n\r\n\t#elif defined( ENVMAP_BLENDING_MIX )\r\n\r\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\r\n\r\n\t#elif defined( ENVMAP_BLENDING_ADD )\r\n\r\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",envmap_pars_fragment:"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\r\n\tuniform float reflectivity;\r\n\tuniform float envMapIntensity;\r\n#endif\r\n\r\n#ifdef USE_ENVMAP\r\n\r\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\r\n\t\tvarying vec3 vWorldPosition;\r\n\t#endif\r\n\r\n\t#ifdef ENVMAP_TYPE_CUBE\r\n\t\tuniform samplerCube envMap;\r\n\t#else\r\n\t\tuniform sampler2D envMap;\r\n\t#endif\r\n\tuniform float flipEnvMap;\r\n\r\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\r\n\t\tuniform float refractionRatio;\r\n\t#else\r\n\t\tvarying vec3 vReflect;\r\n\t#endif\r\n\r\n#endif\r\n",envmap_pars_vertex:"#ifdef USE_ENVMAP\r\n\r\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\r\n\t\tvarying vec3 vWorldPosition;\r\n\r\n\t#else\r\n\r\n\t\tvarying vec3 vReflect;\r\n\t\tuniform float refractionRatio;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",envmap_vertex:"#ifdef USE_ENVMAP\r\n\r\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\r\n\r\n\t\tvWorldPosition = worldPosition.xyz;\r\n\r\n\t#else\r\n\r\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\r\n\r\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\r\n\r\n\t\t#ifdef ENVMAP_MODE_REFLECTION\r\n\r\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\r\n\r\n\t\t#else\r\n\r\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\r\n\r\n\t\t#endif\r\n\r\n\t#endif\r\n\r\n#endif\r\n",fog_vertex:"\r\n#ifdef USE_FOG\r\nfogDepth = -mvPosition.z;\r\n#endif",fog_pars_vertex:"#ifdef USE_FOG\r\n\r\n varying float fogDepth;\r\n\r\n#endif\r\n",fog_fragment:"#ifdef USE_FOG\r\n\r\n\t#ifdef FOG_EXP2\r\n\r\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\r\n\r\n\t#else\r\n\r\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\r\n\r\n#endif\r\n",fog_pars_fragment:"#ifdef USE_FOG\r\n\r\n\tuniform vec3 fogColor;\r\n\tvarying float fogDepth;\r\n\r\n\t#ifdef FOG_EXP2\r\n\r\n\t\tuniform float fogDensity;\r\n\r\n\t#else\r\n\r\n\t\tuniform float fogNear;\r\n\t\tuniform float fogFar;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",gradientmap_pars_fragment:"#ifdef TOON\r\n\r\n\tuniform sampler2D gradientMap;\r\n\r\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\r\n\r\n\t\t// dotNL will be from -1.0 to 1.0\r\n\t\tfloat dotNL = dot( normal, lightDirection );\r\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\r\n\r\n\t\t#ifdef USE_GRADIENTMAP\r\n\r\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\r\n\r\n\t\t#else\r\n\r\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\r\n\r\n\t\t#endif\r\n\r\n\r\n\t}\r\n\r\n#endif\r\n",lightmap_fragment:"#ifdef USE_LIGHTMAP\r\n\r\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity; // factor of PI should not be present; included here to prevent breakage\r\n\r\n#endif\r\n",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\r\n\r\n\tuniform sampler2D lightMap;\r\n\tuniform float lightMapIntensity;\r\n\r\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\r\n\r\nGeometricContext geometry;\r\ngeometry.position = mvPosition.xyz;\r\ngeometry.normal = normalize( transformedNormal );\r\ngeometry.viewDir = normalize( -mvPosition.xyz );\r\n\r\nGeometricContext backGeometry;\r\nbackGeometry.position = geometry.position;\r\nbackGeometry.normal = -geometry.normal;\r\nbackGeometry.viewDir = geometry.viewDir;\r\n\r\nvLightFront = vec3( 0.0 );\r\n\r\n#ifdef DOUBLE_SIDED\r\n\tvLightBack = vec3( 0.0 );\r\n#endif\r\n\r\nIncidentLight directLight;\r\nfloat dotNL;\r\nvec3 directLightColor_Diffuse;\r\n\r\n#if NUM_POINT_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\r\n\r\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\r\n\r\n\t\tdotNL = dot( geometry.normal, directLight.direction );\r\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\r\n\r\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#ifdef DOUBLE_SIDED\r\n\r\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#endif\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if NUM_SPOT_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\r\n\r\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\r\n\r\n\t\tdotNL = dot( geometry.normal, directLight.direction );\r\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\r\n\r\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#ifdef DOUBLE_SIDED\r\n\r\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#endif\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n\r\n#if NUM_DIR_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\r\n\r\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\r\n\r\n\t\tdotNL = dot( geometry.normal, directLight.direction );\r\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\r\n\r\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#ifdef DOUBLE_SIDED\r\n\r\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#endif\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if NUM_HEMI_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\r\n\r\n\t\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\r\n\r\n\t\t#ifdef DOUBLE_SIDED\r\n\r\n\t\t\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\r\n\r\n\t\t#endif\r\n\r\n\t}\r\n\r\n#endif\r\n",lights_pars:"uniform vec3 ambientLightColor;\r\n\r\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\r\n\r\n\tvec3 irradiance = ambientLightColor;\r\n\r\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\tirradiance *= PI;\r\n\r\n\t#endif\r\n\r\n\treturn irradiance;\r\n\r\n}\r\n\r\n#if NUM_DIR_LIGHTS > 0\r\n\r\n\tstruct DirectionalLight {\r\n\t\tvec3 direction;\r\n\t\tvec3 color;\r\n\r\n\t\tint shadow;\r\n\t\tfloat shadowBias;\r\n\t\tfloat shadowRadius;\r\n\t\tvec2 shadowMapSize;\r\n\t};\r\n\r\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\r\n\r\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\r\n\r\n\t\tdirectLight.color = directionalLight.color;\r\n\t\tdirectLight.direction = directionalLight.direction;\r\n\t\tdirectLight.visible = true;\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n#if NUM_POINT_LIGHTS > 0\r\n\r\n\tstruct PointLight {\r\n\t\tvec3 position;\r\n\t\tvec3 color;\r\n\t\tfloat distance;\r\n\t\tfloat decay;\r\n\r\n\t\tint shadow;\r\n\t\tfloat shadowBias;\r\n\t\tfloat shadowRadius;\r\n\t\tvec2 shadowMapSize;\r\n\t\tfloat shadowCameraNear;\r\n\t\tfloat shadowCameraFar;\r\n\t};\r\n\r\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\r\n\r\n\t// directLight is an out parameter as having it as a return value caused compiler errors on some devices\r\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\r\n\r\n\t\tvec3 lVector = pointLight.position - geometry.position;\r\n\t\tdirectLight.direction = normalize( lVector );\r\n\r\n\t\tfloat lightDistance = length( lVector );\r\n\r\n\t\tdirectLight.color = pointLight.color;\r\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\r\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n#if NUM_SPOT_LIGHTS > 0\r\n\r\n\tstruct SpotLight {\r\n\t\tvec3 position;\r\n\t\tvec3 direction;\r\n\t\tvec3 color;\r\n\t\tfloat distance;\r\n\t\tfloat decay;\r\n\t\tfloat coneCos;\r\n\t\tfloat penumbraCos;\r\n\r\n\t\tint shadow;\r\n\t\tfloat shadowBias;\r\n\t\tfloat shadowRadius;\r\n\t\tvec2 shadowMapSize;\r\n\t};\r\n\r\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\r\n\r\n\t// directLight is an out parameter as having it as a return value caused compiler errors on some devices\r\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\r\n\r\n\t\tvec3 lVector = spotLight.position - geometry.position;\r\n\t\tdirectLight.direction = normalize( lVector );\r\n\r\n\t\tfloat lightDistance = length( lVector );\r\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\r\n\r\n\t\tif ( angleCos > spotLight.coneCos ) {\r\n\r\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\r\n\r\n\t\t\tdirectLight.color = spotLight.color;\r\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\r\n\t\t\tdirectLight.visible = true;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdirectLight.color = vec3( 0.0 );\r\n\t\t\tdirectLight.visible = false;\r\n\r\n\t\t}\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n#if NUM_RECT_AREA_LIGHTS > 0\r\n\r\n\tstruct RectAreaLight {\r\n\t\tvec3 color;\r\n\t\tvec3 position;\r\n\t\tvec3 halfWidth;\r\n\t\tvec3 halfHeight;\r\n\t};\r\n\r\n\t// Pre-computed values of LinearTransformedCosine approximation of BRDF\r\n\t// BRDF approximation Texture is 64x64\r\n\tuniform sampler2D ltc_1; // RGBA Float\r\n\tuniform sampler2D ltc_2; // RGBA Float\r\n\r\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\r\n\r\n#endif\r\n\r\n\r\n#if NUM_HEMI_LIGHTS > 0\r\n\r\n\tstruct HemisphereLight {\r\n\t\tvec3 direction;\r\n\t\tvec3 skyColor;\r\n\t\tvec3 groundColor;\r\n\t};\r\n\r\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\r\n\r\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\r\n\r\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\r\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\r\n\r\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\r\n\r\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\t\tirradiance *= PI;\r\n\r\n\t\t#endif\r\n\r\n\t\treturn irradiance;\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n#if defined( USE_ENVMAP ) && defined( PHYSICAL )\r\n\r\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\r\n\r\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\r\n\r\n\t\t#ifdef ENVMAP_TYPE_CUBE\r\n\r\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\r\n\r\n\t\t\t// TODO: replace with properly filtered cubemaps and access the irradiance LOD level, be it the last LOD level\r\n\t\t\t// of a specular cubemap, or just the default level of a specially created irradiance cubemap.\r\n\r\n\t\t\t#ifdef TEXTURE_LOD_EXT\r\n\r\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\r\n\r\n\t\t\t#else\r\n\r\n\t\t\t\t// force the bias high to get the last LOD level as it is the most blurred.\r\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\r\n\r\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\r\n\r\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\r\n\t\t\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\r\n\r\n\t\t#else\r\n\r\n\t\t\tvec4 envMapColor = vec4( 0.0 );\r\n\r\n\t\t#endif\r\n\r\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\r\n\r\n\t}\r\n\r\n\t// taken from here: http://casual-effects.blogspot.ca/2011/08/plausible-environment-lighting-in-two.html\r\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\r\n\r\n\t\t//float envMapWidth = pow( 2.0, maxMIPLevelScalar );\r\n\t\t//float desiredMIPLevel = log2( envMapWidth * sqrt( 3.0 ) ) - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\r\n\r\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\r\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\r\n\r\n\t\t// clamp to allowable LOD ranges.\r\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\r\n\r\n\t}\r\n\r\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\r\n\r\n\t\t#ifdef ENVMAP_MODE_REFLECTION\r\n\r\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\r\n\r\n\t\t#else\r\n\r\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\r\n\r\n\t\t#endif\r\n\r\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\r\n\r\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\r\n\r\n\t\t#ifdef ENVMAP_TYPE_CUBE\r\n\r\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\r\n\r\n\t\t\t#ifdef TEXTURE_LOD_EXT\r\n\r\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\r\n\r\n\t\t\t#else\r\n\r\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\r\n\r\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\r\n\r\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\r\n\t\t\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent));\r\n\r\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\r\n\r\n\t\t\tvec2 sampleUV;\r\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\r\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\r\n\r\n\t\t\t#ifdef TEXTURE_LOD_EXT\r\n\r\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\r\n\r\n\t\t\t#else\r\n\r\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\r\n\r\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\r\n\r\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\r\n\r\n\t\t\t#ifdef TEXTURE_LOD_EXT\r\n\r\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\r\n\r\n\t\t\t#else\r\n\r\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\r\n\r\n\t\t#endif\r\n\r\n\t\treturn envMapColor.rgb * envMapIntensity;\r\n\r\n\t}\r\n\r\n#endif\r\n",lights_phong_fragment:"BlinnPhongMaterial material;\r\nmaterial.diffuseColor = diffuseColor.rgb;\r\nmaterial.specularColor = specular;\r\nmaterial.specularShininess = shininess;\r\nmaterial.specularStrength = specularStrength;\r\n",lights_phong_pars_fragment:"varying vec3 vViewPosition;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n\r\nstruct BlinnPhongMaterial {\r\n\r\n\tvec3\tdiffuseColor;\r\n\tvec3\tspecularColor;\r\n\tfloat\tspecularShininess;\r\n\tfloat\tspecularStrength;\r\n\r\n};\r\n\r\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\t#ifdef TOON\r\n\r\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\r\n\r\n\t#else\r\n\r\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\r\n\t\tvec3 irradiance = dotNL * directLight.color;\r\n\r\n\t#endif\r\n\r\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\tirradiance *= PI; // punctual light\r\n\r\n\t#endif\r\n\r\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\r\n\r\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\r\n\r\n}\r\n\r\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\r\n\r\n}\r\n\r\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\r\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\r\n\r\n#define Material_LightProbeLOD( material )\t(0)\r\n",lights_physical_fragment:"PhysicalMaterial material;\r\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\r\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\r\n#ifdef STANDARD\r\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\r\n#else\r\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\r\n\tmaterial.clearCoat = saturate( clearCoat ); // Burley clearcoat model\r\n\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\r\n#endif\r\n",lights_physical_pars_fragment:"struct PhysicalMaterial {\r\n\r\n\tvec3\tdiffuseColor;\r\n\tfloat\tspecularRoughness;\r\n\tvec3\tspecularColor;\r\n\r\n\t#ifndef STANDARD\r\n\t\tfloat clearCoat;\r\n\t\tfloat clearCoatRoughness;\r\n\t#endif\r\n\r\n};\r\n\r\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\r\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\r\n\r\n// Clear coat directional hemishperical reflectance (this approximation should be improved)\r\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\r\n\r\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\r\n\r\n}\r\n\r\n#if NUM_RECT_AREA_LIGHTS > 0\r\n\r\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\t\tvec3 normal = geometry.normal;\r\n\t\tvec3 viewDir = geometry.viewDir;\r\n\t\tvec3 position = geometry.position;\r\n\t\tvec3 lightPos = rectAreaLight.position;\r\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\r\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\r\n\t\tvec3 lightColor = rectAreaLight.color;\r\n\t\tfloat roughness = material.specularRoughness;\r\n\r\n\t\tvec3 rectCoords[ 4 ];\r\n\t\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight; // counterclockwise\r\n\t\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\r\n\t\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\r\n\t\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\r\n\r\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\r\n\r\n\t\tvec4 t1 = texture2D( ltc_1, uv );\r\n\t\tvec4 t2 = texture2D( ltc_2, uv );\r\n\r\n\t\tmat3 mInv = mat3(\r\n\t\t\tvec3( t1.x, 0, t1.y ),\r\n\t\t\tvec3( 0, 1, 0 ),\r\n\t\t\tvec3( t1.z, 0, t1.w )\r\n\t\t);\r\n\r\n\t\t// LTC Fresnel Approximation by Stephen Hill\r\n\t\t// http://blog.selfshadow.com/publications/s2016-advances/s2016_ltc_fresnel.pdf\r\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\r\n\r\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\r\n\r\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\r\n\r\n\tvec3 irradiance = dotNL * directLight.color;\r\n\r\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\tirradiance *= PI; // punctual light\r\n\r\n\t#endif\r\n\r\n\t#ifndef STANDARD\r\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\r\n\t#else\r\n\t\tfloat clearCoatDHR = 0.0;\r\n\t#endif\r\n\r\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\r\n\r\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\r\n\r\n\t#ifndef STANDARD\r\n\r\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\r\n\r\n\t#endif\r\n\r\n}\r\n\r\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\r\n\r\n}\r\n\r\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\t#ifndef STANDARD\r\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\r\n\t\tfloat dotNL = dotNV;\r\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\r\n\t#else\r\n\t\tfloat clearCoatDHR = 0.0;\r\n\t#endif\r\n\r\n\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\r\n\r\n\t#ifndef STANDARD\r\n\r\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\r\n\r\n\t#endif\r\n\r\n}\r\n\r\n#define RE_Direct\t\t\t\tRE_Direct_Physical\r\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\r\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\r\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\r\n\r\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\r\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\r\n\r\n// ref: https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\r\n\r\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\r\n\r\n}\r\n",lights_template:"\r\n\r\nGeometricContext geometry;\r\n\r\ngeometry.position = - vViewPosition;\r\ngeometry.normal = normal;\r\ngeometry.viewDir = normalize( vViewPosition );\r\n\r\nIncidentLight directLight;\r\n\r\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\r\n\r\n\tPointLight pointLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\r\n\r\n\t\tpointLight = pointLights[ i ];\r\n\r\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\r\n\r\n\t\t#ifdef USE_SHADOWMAP\r\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\r\n\t\t#endif\r\n\r\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\r\n\r\n\tSpotLight spotLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\r\n\r\n\t\tspotLight = spotLights[ i ];\r\n\r\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\r\n\r\n\t\t#ifdef USE_SHADOWMAP\r\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\r\n\t\t#endif\r\n\r\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\r\n\r\n\tDirectionalLight directionalLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\r\n\r\n\t\tdirectionalLight = directionalLights[ i ];\r\n\r\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\r\n\r\n\t\t#ifdef USE_SHADOWMAP\r\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\r\n\t\t#endif\r\n\r\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\r\n\r\n\tRectAreaLight rectAreaLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\r\n\r\n\t\trectAreaLight = rectAreaLights[ i ];\r\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if defined( RE_IndirectDiffuse )\r\n\r\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\r\n\r\n\t#ifdef USE_LIGHTMAP\r\n\r\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\r\n\r\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\t\tlightMapIrradiance *= PI; // factor of PI should not be present; included here to prevent breakage\r\n\r\n\t\t#endif\r\n\r\n\t\tirradiance += lightMapIrradiance;\r\n\r\n\t#endif\r\n\r\n\t#if ( NUM_HEMI_LIGHTS > 0 )\r\n\r\n\t\t#pragma unroll_loop\r\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\r\n\r\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\r\n\r\n\t\t}\r\n\r\n\t#endif\r\n\r\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\r\n\r\n\t\t// TODO, replace 8 with the real maxMIPLevel\r\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, 8 );\r\n\r\n\t#endif\r\n\r\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\r\n\r\n#endif\r\n\r\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\r\n\r\n\t// TODO, replace 8 with the real maxMIPLevel\r\n\tvec3 radiance = getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), 8 );\r\n\r\n\t#ifndef STANDARD\r\n\t\tvec3 clearCoatRadiance = getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), 8 );\r\n\t#else\r\n\t\tvec3 clearCoatRadiance = vec3( 0.0 );\r\n\t#endif\r\n\r\n\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\r\n\r\n#endif\r\n",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\r\n\r\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\r\n\r\n#endif",logdepthbuf_pars_fragment:"#ifdef USE_LOGDEPTHBUF\r\n\r\n\tuniform float logDepthBufFC;\r\n\r\n\t#ifdef USE_LOGDEPTHBUF_EXT\r\n\r\n\t\tvarying float vFragDepth;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\r\n\r\n\t#ifdef USE_LOGDEPTHBUF_EXT\r\n\r\n\t\tvarying float vFragDepth;\r\n\r\n\t#endif\r\n\r\n\tuniform float logDepthBufFC;\r\n\r\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\r\n\r\n\t#ifdef USE_LOGDEPTHBUF_EXT\r\n\r\n\t\tvFragDepth = 1.0 + gl_Position.w;\r\n\r\n\t#else\r\n\r\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\r\n\r\n\t\tgl_Position.z *= gl_Position.w;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",map_fragment:"#ifdef USE_MAP\r\n\r\n\tvec4 texelColor = texture2D( map, vUv );\r\n\r\n\ttexelColor = mapTexelToLinear( texelColor );\r\n\tdiffuseColor *= texelColor;\r\n\r\n#endif\r\n",map_pars_fragment:"#ifdef USE_MAP\r\n\r\n\tuniform sampler2D map;\r\n\r\n#endif\r\n",map_particle_fragment:"#ifdef USE_MAP\r\n\r\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\r\n\tvec4 mapTexel = texture2D( map, uv );\r\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\r\n\r\n#endif\r\n",map_particle_pars_fragment:"#ifdef USE_MAP\r\n\r\n\tuniform mat3 uvTransform;\r\n\tuniform sampler2D map;\r\n\r\n#endif\r\n",metalnessmap_fragment:"float metalnessFactor = metalness;\r\n\r\n#ifdef USE_METALNESSMAP\r\n\r\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\r\n\r\n\t// reads channel B, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\r\n\tmetalnessFactor *= texelMetalness.b;\r\n\r\n#endif\r\n",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\r\n\r\n\tuniform sampler2D metalnessMap;\r\n\r\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\r\n\r\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\r\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\r\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\r\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\r\n\r\n#endif\r\n",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\r\n\r\n\t#ifndef USE_MORPHNORMALS\r\n\r\n\tuniform float morphTargetInfluences[ 8 ];\r\n\r\n\t#else\r\n\r\n\tuniform float morphTargetInfluences[ 4 ];\r\n\r\n\t#endif\r\n\r\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\r\n\r\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\r\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\r\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\r\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\r\n\r\n\t#ifndef USE_MORPHNORMALS\r\n\r\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\r\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\r\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\r\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\r\n\r\n\t#endif\r\n\r\n#endif\r\n",normal_fragment:"#ifdef FLAT_SHADED\r\n\r\n\t// Workaround for Adreno/Nexus5 not able able to do dFdx( vViewPosition ) ...\r\n\r\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\r\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\r\n\tvec3 normal = normalize( cross( fdx, fdy ) );\r\n\r\n#else\r\n\r\n\tvec3 normal = normalize( vNormal );\r\n\r\n\t#ifdef DOUBLE_SIDED\r\n\r\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\r\n\r\n\t#endif\r\n\r\n#endif\r\n\r\n#ifdef USE_NORMALMAP\r\n\r\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\r\n\r\n#elif defined( USE_BUMPMAP )\r\n\r\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\r\n\r\n#endif\r\n",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\r\n\r\n\tuniform sampler2D normalMap;\r\n\tuniform vec2 normalScale;\r\n\r\n\t// Per-Pixel Tangent Space Normal Mapping\r\n\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\r\n\r\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\r\n\r\n\t\t// Workaround for Adreno 3XX dFd*( vec3 ) bug. See #9988\r\n\r\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\r\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\r\n\t\tvec2 st0 = dFdx( vUv.st );\r\n\t\tvec2 st1 = dFdy( vUv.st );\r\n\r\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\r\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\r\n\t\tvec3 N = normalize( surf_norm );\r\n\r\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\r\n\t\tmapN.xy = normalScale * mapN.xy;\r\n\t\tmat3 tsn = mat3( S, T, N );\r\n\t\treturn normalize( tsn * mapN );\r\n\r\n\t}\r\n\r\n#endif\r\n",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\r\n\treturn normalize( normal ) * 0.5 + 0.5;\r\n}\r\n\r\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\r\n\treturn 2.0 * rgb.xyz - 1.0;\r\n}\r\n\r\nconst float PackUpscale = 256. / 255.; // fraction -> 0..1 (including 1)\r\nconst float UnpackDownscale = 255. / 256.; // 0..1 -> fraction (excluding 1)\r\n\r\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\r\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\r\n\r\nconst float ShiftRight8 = 1. / 256.;\r\n\r\nvec4 packDepthToRGBA( const in float v ) {\r\n\tvec4 r = vec4( fract( v * PackFactors ), v );\r\n\tr.yzw -= r.xyz * ShiftRight8; // tidy overflow\r\n\treturn r * PackUpscale;\r\n}\r\n\r\nfloat unpackRGBAToDepth( const in vec4 v ) {\r\n\treturn dot( v, UnpackFactors );\r\n}\r\n\r\n// NOTE: viewZ/eyeZ is < 0 when in front of the camera per OpenGL conventions\r\n\r\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\r\n\treturn ( viewZ + near ) / ( near - far );\r\n}\r\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\r\n\treturn linearClipZ * ( near - far ) - near;\r\n}\r\n\r\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\r\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\r\n}\r\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\r\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\r\n}\r\n",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\r\n\r\n\t// Get get normal blending with premultipled, use with CustomBlending, OneFactor, OneMinusSrcAlphaFactor, AddEquation.\r\n\tgl_FragColor.rgb *= gl_FragColor.a;\r\n\r\n#endif\r\n",project_vertex:"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\r\n\r\ngl_Position = projectionMatrix * mvPosition;\r\n",dithering_fragment:"#if defined( DITHERING )\r\n\r\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\r\n\r\n#endif\r\n",dithering_pars_fragment:"#if defined( DITHERING )\r\n\r\n\t// based on https://www.shadertoy.com/view/MslGR8\r\n\tvec3 dithering( vec3 color ) {\r\n\t\t//Calculate grid position\r\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\r\n\r\n\t\t//Shift the individual colors differently, thus making it even harder to see the dithering pattern\r\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\r\n\r\n\t\t//modify shift acording to grid position.\r\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\r\n\r\n\t\t//shift the color by dither_shift\r\n\t\treturn color + dither_shift_RGB;\r\n\t}\r\n\r\n#endif\r\n",roughnessmap_fragment:"float roughnessFactor = roughness;\r\n\r\n#ifdef USE_ROUGHNESSMAP\r\n\r\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\r\n\r\n\t// reads channel G, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\r\n\troughnessFactor *= texelRoughness.g;\r\n\r\n#endif\r\n",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\r\n\r\n\tuniform sampler2D roughnessMap;\r\n\r\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\r\n\r\n\t#if NUM_DIR_LIGHTS > 0\r\n\r\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\r\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\t#if NUM_SPOT_LIGHTS > 0\r\n\r\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\r\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\t#if NUM_POINT_LIGHTS > 0\r\n\r\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\r\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\r\n\r\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\r\n\r\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\r\n\r\n\t}\r\n\r\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\r\n\r\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\r\n\r\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\r\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\r\n\r\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\r\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\r\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\r\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\r\n\r\n\t\tvec2 f = fract( uv * size + 0.5 );\r\n\r\n\t\tfloat a = mix( lb, lt, f.y );\r\n\t\tfloat b = mix( rb, rt, f.y );\r\n\t\tfloat c = mix( a, b, f.x );\r\n\r\n\t\treturn c;\r\n\r\n\t}\r\n\r\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\r\n\r\n\t\tfloat shadow = 1.0;\r\n\r\n\t\tshadowCoord.xyz /= shadowCoord.w;\r\n\t\tshadowCoord.z += shadowBias;\r\n\r\n\t\t// if ( something && something ) breaks ATI OpenGL shader compiler\r\n\t\t// if ( all( something, something ) ) using this instead\r\n\r\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\r\n\t\tbool inFrustum = all( inFrustumVec );\r\n\r\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\r\n\r\n\t\tbool frustumTest = all( frustumTestVec );\r\n\r\n\t\tif ( frustumTest ) {\r\n\r\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\r\n\r\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\r\n\r\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\r\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\r\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\r\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\r\n\r\n\t\t\tshadow = (\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\r\n\t\t\t) * ( 1.0 / 9.0 );\r\n\r\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\r\n\r\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\r\n\r\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\r\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\r\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\r\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\r\n\r\n\t\t\tshadow = (\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\r\n\t\t\t) * ( 1.0 / 9.0 );\r\n\r\n\t\t#else // no percentage-closer filtering:\r\n\r\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\r\n\r\n\t\t#endif\r\n\r\n\t\t}\r\n\r\n\t\treturn shadow;\r\n\r\n\t}\r\n\r\n\t// cubeToUV() maps a 3D direction vector suitable for cube texture mapping to a 2D\r\n\t// vector suitable for 2D texture mapping. This code uses the following layout for the\r\n\t// 2D texture:\r\n\t//\r\n\t// xzXZ\r\n\t// y Y\r\n\t//\r\n\t// Y - Positive y direction\r\n\t// y - Negative y direction\r\n\t// X - Positive x direction\r\n\t// x - Negative x direction\r\n\t// Z - Positive z direction\r\n\t// z - Negative z direction\r\n\t//\r\n\t// Source and test bed:\r\n\t// https://gist.github.com/tschw/da10c43c467ce8afd0c4\r\n\r\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\r\n\r\n\t\t// Number of texels to avoid at the edge of each square\r\n\r\n\t\tvec3 absV = abs( v );\r\n\r\n\t\t// Intersect unit cube\r\n\r\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\r\n\t\tabsV *= scaleToCube;\r\n\r\n\t\t// Apply scale to avoid seams\r\n\r\n\t\t// two texels less per square (one texel will do for NEAREST)\r\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\r\n\r\n\t\t// Unwrap\r\n\r\n\t\t// space: -1 ... 1 range for each square\r\n\t\t//\r\n\t\t// #X##\t\tdim := ( 4 , 2 )\r\n\t\t// # #\t\tcenter := ( 1 , 1 )\r\n\r\n\t\tvec2 planar = v.xy;\r\n\r\n\t\tfloat almostATexel = 1.5 * texelSizeY;\r\n\t\tfloat almostOne = 1.0 - almostATexel;\r\n\r\n\t\tif ( absV.z >= almostOne ) {\r\n\r\n\t\t\tif ( v.z > 0.0 )\r\n\t\t\t\tplanar.x = 4.0 - v.x;\r\n\r\n\t\t} else if ( absV.x >= almostOne ) {\r\n\r\n\t\t\tfloat signX = sign( v.x );\r\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\r\n\r\n\t\t} else if ( absV.y >= almostOne ) {\r\n\r\n\t\t\tfloat signY = sign( v.y );\r\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\r\n\t\t\tplanar.y = v.z * signY - 2.0;\r\n\r\n\t\t}\r\n\r\n\t\t// Transform to UV space\r\n\r\n\t\t// scale := 0.5 / dim\r\n\t\t// translate := ( center + 0.5 ) / dim\r\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\r\n\r\n\t}\r\n\r\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\r\n\r\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\r\n\r\n\t\t// for point lights, the uniform @vShadowCoord is re-purposed to hold\r\n\t\t// the vector from the light to the world-space position of the fragment.\r\n\t\tvec3 lightToPosition = shadowCoord.xyz;\r\n\r\n\t\t// dp = normalized distance from light to fragment position\r\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); // need to clamp?\r\n\t\tdp += shadowBias;\r\n\r\n\t\t// bd3D = base direction 3D\r\n\t\tvec3 bd3D = normalize( lightToPosition );\r\n\r\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\r\n\r\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\r\n\r\n\t\t\treturn (\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\r\n\t\t\t) * ( 1.0 / 9.0 );\r\n\r\n\t\t#else // no percentage-closer filtering\r\n\r\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\r\n\r\n\t\t#endif\r\n\r\n\t}\r\n\r\n#endif\r\n",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\r\n\r\n\t#if NUM_DIR_LIGHTS > 0\r\n\r\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\r\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\t#if NUM_SPOT_LIGHTS > 0\r\n\r\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\r\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\t#if NUM_POINT_LIGHTS > 0\r\n\r\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\r\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\r\n\r\n#endif\r\n",shadowmap_vertex:"#ifdef USE_SHADOWMAP\r\n\r\n\t#if NUM_DIR_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\r\n\r\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\t#if NUM_SPOT_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\r\n\r\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\t#if NUM_POINT_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\r\n\r\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\r\n\r\n#endif\r\n",shadowmask_pars_fragment:"float getShadowMask() {\r\n\r\n\tfloat shadow = 1.0;\r\n\r\n\t#ifdef USE_SHADOWMAP\r\n\r\n\t#if NUM_DIR_LIGHTS > 0\r\n\r\n\tDirectionalLight directionalLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\r\n\r\n\t\tdirectionalLight = directionalLights[ i ];\r\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\t#if NUM_SPOT_LIGHTS > 0\r\n\r\n\tSpotLight spotLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\r\n\r\n\t\tspotLight = spotLights[ i ];\r\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\t#if NUM_POINT_LIGHTS > 0\r\n\r\n\tPointLight pointLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\r\n\r\n\t\tpointLight = pointLights[ i ];\r\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\r\n\r\n\t#endif\r\n\r\n\treturn shadow;\r\n\r\n}\r\n",skinbase_vertex:"#ifdef USE_SKINNING\r\n\r\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\r\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\r\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\r\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\r\n\r\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\r\n\r\n\tuniform mat4 bindMatrix;\r\n\tuniform mat4 bindMatrixInverse;\r\n\r\n\t#ifdef BONE_TEXTURE\r\n\r\n\t\tuniform sampler2D boneTexture;\r\n\t\tuniform int boneTextureSize;\r\n\r\n\t\tmat4 getBoneMatrix( const in float i ) {\r\n\r\n\t\t\tfloat j = i * 4.0;\r\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\r\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\r\n\r\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\r\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\r\n\r\n\t\t\ty = dy * ( y + 0.5 );\r\n\r\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\r\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\r\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\r\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\r\n\r\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\r\n\r\n\t\t\treturn bone;\r\n\r\n\t\t}\r\n\r\n\t#else\r\n\r\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\r\n\r\n\t\tmat4 getBoneMatrix( const in float i ) {\r\n\r\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\r\n\t\t\treturn bone;\r\n\r\n\t\t}\r\n\r\n\t#endif\r\n\r\n#endif\r\n",skinning_vertex:"#ifdef USE_SKINNING\r\n\r\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\r\n\r\n\tvec4 skinned = vec4( 0.0 );\r\n\tskinned += boneMatX * skinVertex * skinWeight.x;\r\n\tskinned += boneMatY * skinVertex * skinWeight.y;\r\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\r\n\tskinned += boneMatW * skinVertex * skinWeight.w;\r\n\r\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\r\n\r\n#endif\r\n",skinnormal_vertex:"#ifdef USE_SKINNING\r\n\r\n\tmat4 skinMatrix = mat4( 0.0 );\r\n\tskinMatrix += skinWeight.x * boneMatX;\r\n\tskinMatrix += skinWeight.y * boneMatY;\r\n\tskinMatrix += skinWeight.z * boneMatZ;\r\n\tskinMatrix += skinWeight.w * boneMatW;\r\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\r\n\r\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\r\n\r\n#endif\r\n",specularmap_fragment:"float specularStrength;\r\n\r\n#ifdef USE_SPECULARMAP\r\n\r\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\r\n\tspecularStrength = texelSpecular.r;\r\n\r\n#else\r\n\r\n\tspecularStrength = 1.0;\r\n\r\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\r\n\r\n\tuniform sampler2D specularMap;\r\n\r\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\r\n\r\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\r\n\r\n#endif\r\n",tonemapping_pars_fragment:"#ifndef saturate\r\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\r\n#endif\r\n\r\nuniform float toneMappingExposure;\r\nuniform float toneMappingWhitePoint;\r\n\r\n// exposure only\r\nvec3 LinearToneMapping( vec3 color ) {\r\n\r\n\treturn toneMappingExposure * color;\r\n\r\n}\r\n\r\n// source: https://www.cs.utah.edu/~reinhard/cdrom/\r\nvec3 ReinhardToneMapping( vec3 color ) {\r\n\r\n\tcolor *= toneMappingExposure;\r\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\r\n\r\n}\r\n\r\n// source: http://filmicgames.com/archives/75\r\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\r\nvec3 Uncharted2ToneMapping( vec3 color ) {\r\n\r\n\t// John Hable's filmic operator from Uncharted 2 video game\r\n\tcolor *= toneMappingExposure;\r\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\r\n\r\n}\r\n\r\n// source: http://filmicgames.com/archives/75\r\nvec3 OptimizedCineonToneMapping( vec3 color ) {\r\n\r\n\t// optimized filmic operator by Jim Hejl and Richard Burgess-Dawson\r\n\tcolor *= toneMappingExposure;\r\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\r\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\r\n\r\n}\r\n",uv_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\r\n\r\n\tvarying vec2 vUv;\r\n\r\n#endif",uv_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\r\n\r\n\tvarying vec2 vUv;\r\n\tuniform mat3 uvTransform;\r\n\r\n#endif\r\n",uv_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\r\n\r\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\r\n\r\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\r\n\r\n\tvarying vec2 vUv2;\r\n\r\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\r\n\r\n\tattribute vec2 uv2;\r\n\tvarying vec2 vUv2;\r\n\r\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\r\n\r\n\tvUv2 = uv2;\r\n\r\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\r\n\r\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\r\n\r\n#endif\r\n",cube_frag:"uniform samplerCube tCube;\r\nuniform float tFlip;\r\nuniform float opacity;\r\n\r\nvarying vec3 vWorldPosition;\r\n\r\nvoid main() {\r\n\r\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\r\n\tgl_FragColor.a *= opacity;\r\n\r\n}\r\n",cube_vert:"varying vec3 vWorldPosition;\r\n\r\n#include \r\n\r\nvoid main() {\r\n\r\n\tvWorldPosition = transformDirection( position, modelMatrix );\r\n\r\n\t#include \r\n\t#include \r\n\r\n\tgl_Position.z = gl_Position.w; // set z to camera.far\r\n\r\n}\r\n",depth_frag:"#if DEPTH_PACKING == 3200\r\n\r\n\tuniform float opacity;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( 1.0 );\r\n\r\n\t#if DEPTH_PACKING == 3200\r\n\r\n\t\tdiffuseColor.a = opacity;\r\n\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\r\n\t#if DEPTH_PACKING == 3200\r\n\r\n\t\tgl_FragColor = vec4( vec3( gl_FragCoord.z ), opacity );\r\n\r\n\t#elif DEPTH_PACKING == 3201\r\n\r\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\r\n\r\n\t#endif\r\n\r\n}\r\n",depth_vert:"#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\t#include \r\n\r\n\t#ifdef USE_DISPLACEMENTMAP\r\n\r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",distanceRGBA_frag:"#define DISTANCE\r\n\r\nuniform vec3 referencePosition;\r\nuniform float nearDistance;\r\nuniform float farDistance;\r\nvarying vec3 vWorldPosition;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main () {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( 1.0 );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tfloat dist = length( vWorldPosition - referencePosition );\r\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\r\n\tdist = saturate( dist ); // clamp to [ 0, 1 ]\r\n\r\n\tgl_FragColor = packDepthToRGBA( dist );\r\n\r\n}\r\n",distanceRGBA_vert:"#define DISTANCE\r\n\r\nvarying vec3 vWorldPosition;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\t#include \r\n\r\n\t#ifdef USE_DISPLACEMENTMAP\r\n\r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tvWorldPosition = worldPosition.xyz;\r\n\r\n}\r\n",equirect_frag:"uniform sampler2D tEquirect;\r\n\r\nvarying vec3 vWorldPosition;\r\n\r\n#include \r\n\r\nvoid main() {\r\n\r\n\tvec3 direction = normalize( vWorldPosition );\r\n\r\n\tvec2 sampleUV;\r\n\r\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\r\n\r\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\r\n\r\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\r\n\r\n}\r\n",equirect_vert:"varying vec3 vWorldPosition;\r\n\r\n#include \r\n\r\nvoid main() {\r\n\r\n\tvWorldPosition = transformDirection( position, modelMatrix );\r\n\r\n\t#include \r\n\t#include \r\n\r\n}\r\n",linedashed_frag:"uniform vec3 diffuse;\r\nuniform float opacity;\r\n\r\nuniform float dashSize;\r\nuniform float totalSize;\r\n\r\nvarying float vLineDistance;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\r\n\r\n\t\tdiscard;\r\n\r\n\t}\r\n\r\n\tvec3 outgoingLight = vec3( 0.0 );\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\r\n\t#include \r\n\t#include \r\n\r\n\toutgoingLight = diffuseColor.rgb; // simple shader\r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",linedashed_vert:"uniform float scale;\r\nattribute float lineDistance;\r\n\r\nvarying float vLineDistance;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvLineDistance = scale * lineDistance;\r\n\r\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\r\n\tgl_Position = projectionMatrix * mvPosition;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshbasic_frag:"uniform vec3 diffuse;\r\nuniform float opacity;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\r\n\r\n\t// accumulation (baked indirect lighting only)\r\n\t#ifdef USE_LIGHTMAP\r\n\r\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\r\n\r\n\t#else\r\n\r\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\r\n\r\n\t#endif\r\n\r\n\t// modulation\r\n\t#include \r\n\r\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\r\n\r\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\r\n\r\n\t#include \r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshbasic_vert:"#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#ifdef USE_ENVMAP\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshlambert_frag:"uniform vec3 diffuse;\r\nuniform vec3 emissive;\r\nuniform float opacity;\r\n\r\nvarying vec3 vLightFront;\r\n\r\n#ifdef DOUBLE_SIDED\r\n\r\n\tvarying vec3 vLightBack;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\r\n\tvec3 totalEmissiveRadiance = emissive;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t// accumulation\r\n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\r\n\r\n\t#include \r\n\r\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\r\n\r\n\t#ifdef DOUBLE_SIDED\r\n\r\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\r\n\r\n\t#else\r\n\r\n\t\treflectedLight.directDiffuse = vLightFront;\r\n\r\n\t#endif\r\n\r\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\r\n\r\n\t// modulation\r\n\t#include \r\n\r\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\r\n\r\n\t#include \r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshlambert_vert:"#define LAMBERT\r\n\r\nvarying vec3 vLightFront;\r\n\r\n#ifdef DOUBLE_SIDED\r\n\r\n\tvarying vec3 vLightBack;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshphong_frag:"#define PHONG\r\n\r\nuniform vec3 diffuse;\r\nuniform vec3 emissive;\r\nuniform vec3 specular;\r\nuniform float shininess;\r\nuniform float opacity;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\r\n\tvec3 totalEmissiveRadiance = emissive;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t// accumulation\r\n\t#include \r\n\t#include \r\n\r\n\t// modulation\r\n\t#include \r\n\r\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\r\n\r\n\t#include \r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshphong_vert:"#define PHONG\r\n\r\nvarying vec3 vViewPosition;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\r\n\r\n\tvNormal = normalize( transformedNormal );\r\n\r\n#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tvViewPosition = - mvPosition.xyz;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshphysical_frag:"#define PHYSICAL\r\n\r\nuniform vec3 diffuse;\r\nuniform vec3 emissive;\r\nuniform float roughness;\r\nuniform float metalness;\r\nuniform float opacity;\r\n\r\n#ifndef STANDARD\r\n\tuniform float clearCoat;\r\n\tuniform float clearCoatRoughness;\r\n#endif\r\n\r\nvarying vec3 vViewPosition;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\r\n\tvec3 totalEmissiveRadiance = emissive;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t// accumulation\r\n\t#include \r\n\t#include \r\n\r\n\t// modulation\r\n\t#include \r\n\r\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshphysical_vert:"#define PHYSICAL\r\n\r\nvarying vec3 vViewPosition;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\r\n\r\n\tvNormal = normalize( transformedNormal );\r\n\r\n#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tvViewPosition = - mvPosition.xyz;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",normal_frag:"#define NORMAL\r\n\r\nuniform float opacity;\r\n\r\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\n\tvarying vec3 vViewPosition;\r\n\r\n#endif\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\r\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\r\n\r\n}\r\n",normal_vert:"#define NORMAL\r\n\r\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\n\tvarying vec3 vViewPosition;\r\n\r\n#endif\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\r\n\r\n\tvNormal = normalize( transformedNormal );\r\n\r\n#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\n\tvViewPosition = - mvPosition.xyz;\r\n\r\n#endif\r\n\r\n}\r\n",points_frag:"uniform vec3 diffuse;\r\nuniform float opacity;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec3 outgoingLight = vec3( 0.0 );\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\toutgoingLight = diffuseColor.rgb;\r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",points_vert:"uniform float size;\r\nuniform float scale;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#ifdef USE_SIZEATTENUATION\r\n\t\tgl_PointSize = size * ( scale / - mvPosition.z );\r\n\t#else\r\n\t\tgl_PointSize = size;\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",shadow_frag:"uniform vec3 color;\r\nuniform float opacity;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\r\n\r\n\t#include \r\n\r\n}\r\n",shadow_vert:"#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n"},be={basic:{uniforms:pe.merge([me.common,me.specularmap,me.envmap,me.aomap,me.lightmap,me.fog]),vertexShader:fe.meshbasic_vert,fragmentShader:fe.meshbasic_frag},lambert:{uniforms:pe.merge([me.common,me.specularmap,me.envmap,me.aomap,me.lightmap,me.emissivemap,me.fog,me.lights,{emissive:{value:new he(0)}}]),vertexShader:fe.meshlambert_vert,fragmentShader:fe.meshlambert_frag},phong:{uniforms:pe.merge([me.common,me.specularmap,me.envmap,me.aomap,me.lightmap,me.emissivemap,me.bumpmap,me.normalmap,me.displacementmap,me.gradientmap,me.fog,me.lights,{emissive:{value:new he(0)},specular:{value:new he(1118481)},shininess:{value:30}}]),vertexShader:fe.meshphong_vert,fragmentShader:fe.meshphong_frag},standard:{uniforms:pe.merge([me.common,me.envmap,me.aomap,me.lightmap,me.emissivemap,me.bumpmap,me.normalmap,me.displacementmap,me.roughnessmap,me.metalnessmap,me.fog,me.lights,{emissive:{value:new he(0)},roughness:{value:.5},metalness:{value:.5},envMapIntensity:{value:1}}]),vertexShader:fe.meshphysical_vert,fragmentShader:fe.meshphysical_frag},points:{uniforms:pe.merge([me.points,me.fog]),vertexShader:fe.points_vert,fragmentShader:fe.points_frag},dashed:{uniforms:pe.merge([me.common,me.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:fe.linedashed_vert,fragmentShader:fe.linedashed_frag},depth:{uniforms:pe.merge([me.common,me.displacementmap]),vertexShader:fe.depth_vert,fragmentShader:fe.depth_frag},normal:{uniforms:pe.merge([me.common,me.bumpmap,me.normalmap,me.displacementmap,{opacity:{value:1}}]),vertexShader:fe.normal_vert,fragmentShader:fe.normal_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:fe.cube_vert,fragmentShader:fe.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:fe.equirect_vert,fragmentShader:fe.equirect_frag},distanceRGBA:{uniforms:pe.merge([me.common,me.displacementmap,{referencePosition:{value:new y},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:fe.distanceRGBA_vert,fragmentShader:fe.distanceRGBA_frag},shadow:{uniforms:pe.merge([me.lights,me.fog,{color:{value:new he(0)},opacity:{value:1}}]),vertexShader:fe.shadow_vert,fragmentShader:fe.shadow_frag}};function ye(e,t,a,n,r,s,o,i,c){w.call(this,e,t,a,n,r,s,o,i,c),this.needsUpdate=!0}function ge(e,t,a,n,r){var s,o,i,c,d,l,u=new y,h=new b,m=new y;function p(){var e=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),a=new Uint16Array([0,1,2,0,2,3]);s=t.createBuffer(),o=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,s),t.bufferData(t.ARRAY_BUFFER,e,t.STATIC_DRAW),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,o),t.bufferData(t.ELEMENT_ARRAY_BUFFER,a,t.STATIC_DRAW),i=function(){var e=t.createProgram(),a=t.createShader(t.VERTEX_SHADER),n=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(a,["precision "+r.precision+" float;","#define SHADER_NAME SpriteMaterial","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform float rotation;","uniform vec2 center;","uniform vec2 scale;","uniform vec2 uvOffset;","uniform vec2 uvScale;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","varying float fogDepth;","void main() {","\tvUV = uvOffset + uv * uvScale;","\tvec2 alignedPosition = ( position - center ) * scale;","\tvec2 rotatedPosition;","\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;","\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;","\tvec4 mvPosition;","\tmvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );","\tmvPosition.xy += rotatedPosition;","\tgl_Position = projectionMatrix * mvPosition;","\tfogDepth = - mvPosition.z;","}"].join("\n")),t.shaderSource(n,["precision "+r.precision+" float;","#define SHADER_NAME SpriteMaterial","uniform vec3 color;","uniform sampler2D map;","uniform float opacity;","uniform int fogType;","uniform vec3 fogColor;","uniform float fogDensity;","uniform float fogNear;","uniform float fogFar;","uniform float alphaTest;","varying vec2 vUV;","varying float fogDepth;","void main() {","\tvec4 texture = texture2D( map, vUV );","\tgl_FragColor = vec4( color * texture.xyz, texture.a * opacity );","\tif ( gl_FragColor.a < alphaTest ) discard;","\tif ( fogType > 0 ) {","\t\tfloat fogFactor = 0.0;","\t\tif ( fogType == 1 ) {","\t\t\tfogFactor = smoothstep( fogNear, fogFar, fogDepth );","\t\t} else {","\t\t\tconst float LOG2 = 1.442695;","\t\t\tfogFactor = exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 );","\t\t\tfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","\t\t}","\t\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );","\t}","}"].join("\n")),t.compileShader(a),t.compileShader(n),t.attachShader(e,a),t.attachShader(e,n),t.linkProgram(e),e}(),c={position:t.getAttribLocation(i,"position"),uv:t.getAttribLocation(i,"uv")},d={uvOffset:t.getUniformLocation(i,"uvOffset"),uvScale:t.getUniformLocation(i,"uvScale"),rotation:t.getUniformLocation(i,"rotation"),center:t.getUniformLocation(i,"center"),scale:t.getUniformLocation(i,"scale"),color:t.getUniformLocation(i,"color"),map:t.getUniformLocation(i,"map"),opacity:t.getUniformLocation(i,"opacity"),modelViewMatrix:t.getUniformLocation(i,"modelViewMatrix"),projectionMatrix:t.getUniformLocation(i,"projectionMatrix"),fogType:t.getUniformLocation(i,"fogType"),fogDensity:t.getUniformLocation(i,"fogDensity"),fogNear:t.getUniformLocation(i,"fogNear"),fogFar:t.getUniformLocation(i,"fogFar"),fogColor:t.getUniformLocation(i,"fogColor"),fogDepth:t.getUniformLocation(i,"fogDepth"),alphaTest:t.getUniformLocation(i,"alphaTest")};var n=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");n.width=8,n.height=8;var u=n.getContext("2d");u.fillStyle="white",u.fillRect(0,0,8,8),l=new ye(n)}function f(e,t){return e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:t.id-e.id}this.render=function(r,b,y){if(0!==r.length){void 0===i&&p(),a.useProgram(i),a.initAttributes(),a.enableAttribute(c.position),a.enableAttribute(c.uv),a.disableUnusedAttributes(),a.disable(t.CULL_FACE),a.enable(t.BLEND),t.bindBuffer(t.ARRAY_BUFFER,s),t.vertexAttribPointer(c.position,2,t.FLOAT,!1,16,0),t.vertexAttribPointer(c.uv,2,t.FLOAT,!1,16,8),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,o),t.uniformMatrix4fv(d.projectionMatrix,!1,y.projectionMatrix.elements),a.activeTexture(t.TEXTURE0),t.uniform1i(d.map,0);var g=0,v=0,w=b.fog;w?(t.uniform3f(d.fogColor,w.color.r,w.color.g,w.color.b),w.isFog?(t.uniform1f(d.fogNear,w.near),t.uniform1f(d.fogFar,w.far),t.uniform1i(d.fogType,1),g=1,v=1):w.isFogExp2&&(t.uniform1f(d.fogDensity,w.density),t.uniform1i(d.fogType,2),g=2,v=2)):(t.uniform1i(d.fogType,0),g=0,v=0);for(var A=0,S=r.length;A0:i&&i.isGeometry&&(f=i.morphTargets&&i.morphTargets.length>0)),t.isSkinnedMesh&&!1===a.skinning&&console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",t);var b=0;f&&(b|=1),t.isSkinnedMesh&&a.skinning&&(b|=2),c=m[b]}if(e.localClippingEnabled&&!0===a.clipShadows&&0!==a.clippingPlanes.length){var y=c.uuid,g=a.uuid,v=u[y];void 0===v&&(v={},u[y]=v);var w=v[g];void 0===w&&(w=c.clone(),v[g]=w),c=w}return c.visible=a.visible,c.wireframe=a.wireframe,c.side=null!=a.shadowSide?a.shadowSide:h[a.side],c.clipShadows=a.clipShadows,c.clippingPlanes=a.clippingPlanes,c.clipIntersection=a.clipIntersection,c.wireframeLinewidth=a.wireframeLinewidth,c.linewidth=a.linewidth,n&&c.isMeshDistanceMaterial&&(c.referencePosition.copy(r),c.nearDistance=s,c.farDistance=o),c}function N(a,r,s,o){if(!1!==a.visible){if(a.layers.test(r.layers)&&(a.isMesh||a.isLine||a.isPoints)&&a.castShadow&&(!a.frustumCulled||n.intersectsObject(a))){a.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,a.matrixWorld);var i=t.update(a),d=a.material;if(Array.isArray(d))for(var l=i.groups,u=0,h=l.length;u0&&(a.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(a.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(a.wireframe=this.wireframe),this.wireframeLinewidth>1&&(a.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(a.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(a.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(a.morphTargets=!0),!0===this.skinning&&(a.skinning=!0),!1===this.visible&&(a.visible=!1),"{}"!==JSON.stringify(this.userData)&&(a.userData=this.userData),t){var r=n(e.textures),s=n(e.images);r.length>0&&(a.textures=r),s.length>0&&(a.images=s)}return a},clone:function(){return(new this.constructor).copy(this)},copy:function(e){this.name=e.name,this.fog=e.fog,this.lights=e.lights,this.blending=e.blending,this.side=e.side,this.flatShading=e.flatShading,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.premultipliedAlpha=e.premultipliedAlpha,this.overdraw=e.overdraw,this.visible=e.visible,this.userData=JSON.parse(JSON.stringify(e.userData)),this.clipShadows=e.clipShadows,this.clipIntersection=e.clipIntersection;var t=e.clippingPlanes,a=null;if(null!==t){var n=t.length;a=new Array(n);for(var r=0;r!==n;++r)a[r]=t[r].clone()}return this.clippingPlanes=a,this.shadowSide=e.shadowSide,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Ne.prototype=Object.create(_e.prototype),Ne.prototype.constructor=Ne,Ne.prototype.isMeshDepthMaterial=!0,Ne.prototype.copy=function(e){return _e.prototype.copy.call(this,e),this.depthPacking=e.depthPacking,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this},ke.prototype=Object.create(_e.prototype),ke.prototype.constructor=ke,ke.prototype.isMeshDistanceMaterial=!0,ke.prototype.copy=function(e){return _e.prototype.copy.call(this,e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this},Object.assign(Me.prototype,{isBox3:!0,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromArray:function(e){for(var t=1/0,a=1/0,n=1/0,r=-1/0,s=-1/0,o=-1/0,i=0,c=e.length;ir&&(r=d),l>s&&(s=l),u>o&&(o=u)}return this.min.set(t,a,n),this.max.set(r,s,o),this},setFromBufferAttribute:function(e){for(var t=1/0,a=1/0,n=1/0,r=-1/0,s=-1/0,o=-1/0,i=0,c=e.count;ir&&(r=d),l>s&&(s=l),u>o&&(o=u)}return this.min.set(t,a,n),this.max.set(r,s,o),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,a=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return(t||new y).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},intersectsSphere:(we=new y,function(e){return this.clampPoint(e.center,we),we.distanceToSquared(e.center)<=e.radius*e.radius}),intersectsPlane:function(e){var t,a;return e.normal.x>0?(t=e.normal.x*this.min.x,a=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,a=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,a+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,a+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,a+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,a+=e.normal.z*this.min.z),t<=e.constant&&a>=e.constant},intersectsTriangle:function(){var e=new y,t=new y,a=new y,n=new y,r=new y,s=new y,o=new y,i=new y,c=new y,d=new y;function l(n){var r,s;for(r=0,s=n.length-3;r<=s;r+=3){o.fromArray(n,r);var i=c.x*Math.abs(o.x)+c.y*Math.abs(o.y)+c.z*Math.abs(o.z),d=e.dot(o),l=t.dot(o),u=a.dot(o);if(Math.max(-Math.max(d,l,u),Math.min(d,l,u))>i)return!1}return!0}return function(o){if(this.isEmpty())return!1;this.getCenter(i),c.subVectors(this.max,i),e.subVectors(o.a,i),t.subVectors(o.b,i),a.subVectors(o.c,i),n.subVectors(t,e),r.subVectors(a,t),s.subVectors(e,a);var u=[0,-n.z,n.y,0,-r.z,r.y,0,-s.z,s.y,n.z,0,-n.x,r.z,0,-r.x,s.z,0,-s.x,-n.y,n.x,0,-r.y,r.x,0,-s.y,s.x,0];return!!l(u)&&(!!l(u=[1,0,0,0,1,0,0,0,1])&&(d.crossVectors(n,r),l(u=[d.x,d.y,d.z])))}}(),clampPoint:function(e,t){return(t||new y).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new y;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),getBoundingSphere:function(){var e=new y;return function(t){var a=t||new Pe;return this.getCenter(a.center),a.radius=.5*this.getSize(e).length(),a}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:(ve=[new y,new y,new y,new y,new y,new y,new y,new y],function(e){return this.isEmpty()||(ve[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ve[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ve[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ve[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ve[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ve[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ve[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ve[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ve)),this}),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}),Object.assign(Pe.prototype,{set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:(Ae=new Me,function(e,t){var a=this.center;void 0!==t?a.copy(t):Ae.setFromPoints(e).getCenter(a);for(var n=0,r=0,s=e.length;rthis.radius*this.radius&&(n.sub(this.center).normalize(),n.multiplyScalar(this.radius).add(this.center)),n},getBoundingBox:function(e){var t=e||new Me;return t.set(this.center,this.center),t.expandByScalar(this.radius),t},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius}}),Object.assign(Le.prototype,{set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,a,n){return this.normal.set(e,t,a),this.constant=n,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(){var e=new y,t=new y;return function(a,n,r){var s=e.subVectors(r,n).cross(t.subVectors(a,n)).normalize();return this.setFromNormalAndCoplanarPoint(s,a),this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return(t||new y).copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)},intersectLine:function(){var e=new y;return function(t,a){var n=a||new y,r=t.delta(e),s=this.normal.dot(r);if(0===s)return 0===this.distanceToPoint(t.start)?n.copy(t.start):void 0;var o=-(t.start.dot(this.normal)+this.constant)/s;return o<0||o>1?void 0:n.copy(r).multiplyScalar(o).add(t.start)}}(),intersectsLine:function(e){var t=this.distanceToPoint(e.start),a=this.distanceToPoint(e.end);return t<0&&a>0||a<0&&t>0},intersectsBox:function(e){return e.intersectsPlane(this)},intersectsSphere:function(e){return e.intersectsPlane(this)},coplanarPoint:function(e){return(e||new y).copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var e=new y,t=new g;return function(a,n){var r=n||t.getNormalMatrix(a),s=this.coplanarPoint(e).applyMatrix4(a),o=this.normal.applyMatrix3(r).normalize();return this.constant=-s.dot(o),this}}(),translate:function(e){return this.constant-=e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant===this.constant}}),Object.assign(je.prototype,{set:function(e,t,a,n,r,s){var o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(a),o[3].copy(n),o[4].copy(r),o[5].copy(s),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){for(var t=this.planes,a=0;a<6;a++)t[a].copy(e.planes[a]);return this},setFromMatrix:function(e){var t=this.planes,a=e.elements,n=a[0],r=a[1],s=a[2],o=a[3],i=a[4],c=a[5],d=a[6],l=a[7],u=a[8],h=a[9],m=a[10],p=a[11],f=a[12],b=a[13],y=a[14],g=a[15];return t[0].setComponents(o-n,l-i,p-u,g-f).normalize(),t[1].setComponents(o+n,l+i,p+u,g+f).normalize(),t[2].setComponents(o+r,l+c,p+h,g+b).normalize(),t[3].setComponents(o-r,l-c,p-h,g-b).normalize(),t[4].setComponents(o-s,l-d,p-m,g-y).normalize(),t[5].setComponents(o+s,l+d,p+m,g+y).normalize(),this},intersectsObject:(xe=new Pe,function(e){var t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),xe.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(xe)}),intersectsSprite:function(){var e=new Pe;return function(t){return e.center.set(0,0,0),e.radius=.7071067811865476,e.applyMatrix4(t.matrixWorld),this.intersectsSphere(e)}}(),intersectsSphere:function(e){for(var t=this.planes,a=e.center,n=-e.radius,r=0;r<6;r++){if(t[r].distanceToPoint(a)0?e.min.x:e.max.x,Ee.x=n.normal.x>0?e.max.x:e.min.x,Se.y=n.normal.y>0?e.min.y:e.max.y,Ee.y=n.normal.y>0?e.max.y:e.min.y,Se.z=n.normal.z>0?e.min.z:e.max.z,Ee.z=n.normal.z>0?e.max.z:e.min.z;var r=n.distanceToPoint(Se),s=n.distanceToPoint(Ee);if(r<0&&s<0)return!1}return!0}),containsPoint:function(e){for(var t=this.planes,a=0;a<6;a++)if(t[a].distanceToPoint(e)<0)return!1;return!0}}),De.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],De.DefaultOrder="XYZ",Object.defineProperties(De.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this.onChangeCallback()}},order:{get:function(){return this._order},set:function(e){this._order=e,this.onChangeCallback()}}}),Object.assign(De.prototype,{isEuler:!0,set:function(e,t,a,n){return this._x=e,this._y=t,this._z=a,this._order=n||this._order,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this.onChangeCallback(),this},setFromRotationMatrix:function(e,t,a){var n=m.clamp,r=e.elements,s=r[0],o=r[4],i=r[8],c=r[1],d=r[5],l=r[9],u=r[2],h=r[6],p=r[10];return"XYZ"===(t=t||this._order)?(this._y=Math.asin(n(i,-1,1)),Math.abs(i)<.99999?(this._x=Math.atan2(-l,p),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(h,d),this._z=0)):"YXZ"===t?(this._x=Math.asin(-n(l,-1,1)),Math.abs(l)<.99999?(this._y=Math.atan2(i,p),this._z=Math.atan2(c,d)):(this._y=Math.atan2(-u,s),this._z=0)):"ZXY"===t?(this._x=Math.asin(n(h,-1,1)),Math.abs(h)<.99999?(this._y=Math.atan2(-u,p),this._z=Math.atan2(-o,d)):(this._y=0,this._z=Math.atan2(c,s))):"ZYX"===t?(this._y=Math.asin(-n(u,-1,1)),Math.abs(u)<.99999?(this._x=Math.atan2(h,p),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,d))):"YZX"===t?(this._z=Math.asin(n(c,-1,1)),Math.abs(c)<.99999?(this._x=Math.atan2(-l,d),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(i,p))):"XZY"===t?(this._z=Math.asin(-n(o,-1,1)),Math.abs(o)<.99999?(this._x=Math.atan2(h,d),this._y=Math.atan2(i,s)):(this._x=Math.atan2(-l,p),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+t),this._order=t,!1!==a&&this.onChangeCallback(),this},setFromQuaternion:function(){var e=new f;return function(t,a,n){return e.makeRotationFromQuaternion(t),this.setFromRotationMatrix(e,a,n)}}(),setFromVector3:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)},reorder:(Te=new b,function(e){return Te.setFromEuler(this),this.setFromQuaternion(Te,e)}),equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order},fromArray:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e},toVector3:function(e){return e?e.set(this._x,this._y,this._z):new y(this._x,this._y,this._z)},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){}}),Object.assign(Oe.prototype,{set:function(e){this.mask=1<1){for(var t=0;t1){for(var t=0;t0){n.children=[];for(i=0;i0&&(a.geometries=u),h.length>0&&(a.materials=h),m.length>0&&(a.textures=m),p.length>0&&(a.images=p),o.length>0&&(a.shapes=o)}return a.object=n,a;function f(e){var t=[];for(var a in e){var n=e[a];delete n.metadata,t.push(n)}return t}},clone:function(e){return(new this.constructor).copy(this,e)},copy:function(e,t){if(void 0===t&&(t=!0),this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(var a=0;at&&(t=e[a]);return t}Ye.prototype=Object.assign(Object.create(n.prototype),{constructor:Ye,isGeometry:!0,applyMatrix:function(e){for(var t=(new g).getNormalMatrix(e),a=0,n=this.vertices.length;a0)for(h=0;h0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var e,t,a;for(this.computeFaceNormals(),e=0,t=this.faces.length;e0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var e,t,a,n,r;for(a=0,n=this.faces.length;a=0;a--){var p=h[a];for(this.faces.splice(p,1),o=0,i=this.faceVertexUvs.length;o0,b=m.vertexNormals.length>0,y=1!==m.color.r||1!==m.color.g||1!==m.color.b,g=m.vertexColors.length>0,v=0;if(v=E(v,0,0),v=E(v,1,!0),v=E(v,2,!1),v=E(v,3,p),v=E(v,4,f),v=E(v,5,b),v=E(v,6,y),v=E(v,7,g),o.push(v),o.push(m.a,m.b,m.c),o.push(m.materialIndex),p){var w=this.faceVertexUvs[0][r];o.push(R(w[0]),R(w[1]),R(w[2]))}if(f&&o.push(x(m.normal)),b){var A=m.vertexNormals;o.push(x(A[0]),x(A[1]),x(A[2]))}if(y&&o.push(T(m.color)),g){var S=m.vertexColors;o.push(T(S[0]),T(S[1]),T(S[2]))}}function E(e,t,a){return a?e|1<0&&(e.data.colors=d),u.length>0&&(e.data.uvs=[u]),e.data.faces=o,e},clone:function(){return(new Ye).copy(this)},copy:function(e){var t,a,n,r,s,o;this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;var i=e.vertices;for(t=0,a=i.length;t0,o=r[1]&&r[1].length>0,i=e.morphTargets,c=i.length;if(c>0){t=[];for(var d=0;d0){l=[];for(d=0;d0?1:-1,d.push(M.x,M.y,M.z),l.push(v/f),l.push(1-w/b),N+=1}}for(w=0;w1&&a.sort(Nt),n.length>1&&n.sort(kt)}}}function Pt(){var e={};return{get:function(t,a){var n=t.id+","+a.id,r=e[n];return void 0===r&&(r=new Mt,e[n]=r),r},dispose:function(){e={}}}}function Lt(e,t){return Math.abs(t[1])-Math.abs(e[1])}function jt(e){var t={},a=new Float32Array(8);return{update:function(n,r,s,o){var i=n.morphTargetInfluences,c=i.length,d=t[r.id];if(void 0===d){d=[];for(var l=0;l65535?nt:tt)(o,1),t.update(n,e.ELEMENT_ARRAY_BUFFER),r[a.id]=n,n}}}function Ot(e,t){var a={};return{update:function(n){var r=t.frame,s=n.geometry,o=e.get(n,s);return a[o.id]!==r&&(s.isGeometry&&o.updateFromObject(n),e.update(o),a[o.id]=r),o},dispose:function(){a={}}}}function Ut(e,t,a){var n=e.createShader(t);return e.shaderSource(n,a),e.compileShader(n),!1===e.getShaderParameter(n,e.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile."),""!==e.getShaderInfoLog(n)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",t===e.VERTEX_SHADER?"vertex":"fragment",e.getShaderInfoLog(n),function(e){for(var t=e.split("\n"),a=0;a65535?nt:tt)(e,1):this.index=e},addAttribute:function(e,t){return t&&t.isBufferAttribute||t&&t.isInterleavedBufferAttribute?"index"===e?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),void this.setIndex(t)):(this.attributes[e]=t,this):(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),void this.addAttribute(e,new Ke(arguments[1],arguments[2])))},getAttribute:function(e){return this.attributes[e]},removeAttribute:function(e){return delete this.attributes[e],this},addGroup:function(e,t,a){this.groups.push({start:e,count:t,materialIndex:void 0!==a?a:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(e,t){this.drawRange.start=e,this.drawRange.count=t},applyMatrix:function(e){var t=this.attributes.position;void 0!==t&&(e.applyToBufferAttribute(t),t.needsUpdate=!0);var a=this.attributes.normal;void 0!==a&&((new g).getNormalMatrix(e).applyToBufferAttribute(a),a.needsUpdate=!0);return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(){var e=new f;return function(t){return e.makeRotationX(t),this.applyMatrix(e),this}}(),rotateY:function(){var e=new f;return function(t){return e.makeRotationY(t),this.applyMatrix(e),this}}(),rotateZ:function(){var e=new f;return function(t){return e.makeRotationZ(t),this.applyMatrix(e),this}}(),translate:function(){var e=new f;return function(t,a,n){return e.makeTranslation(t,a,n),this.applyMatrix(e),this}}(),scale:function(){var e=new f;return function(t,a,n){return e.makeScale(t,a,n),this.applyMatrix(e),this}}(),lookAt:function(){var e=new ze;return function(t){e.lookAt(t),e.updateMatrix(),this.applyMatrix(e.matrix)}}(),center:function(){this.computeBoundingBox();var e=this.boundingBox.getCenter().negate();return this.translate(e.x,e.y,e.z),e},setFromObject:function(e){var t=e.geometry;if(e.isPoints||e.isLine){var a=new rt(3*t.vertices.length,3),n=new rt(3*t.colors.length,3);if(this.addAttribute("position",a.copyVector3sArray(t.vertices)),this.addAttribute("color",n.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){var r=new rt(t.lineDistances.length,1);this.addAttribute("lineDistance",r.copyArray(t.lineDistances))}null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone())}else e.isMesh&&t&&t.isGeometry&&this.fromGeometry(t);return this},setFromPoints:function(e){for(var t=[],a=0,n=e.length;a0){var a=new Float32Array(3*e.normals.length);this.addAttribute("normal",new Ke(a,3).copyVector3sArray(e.normals))}if(e.colors.length>0){var n=new Float32Array(3*e.colors.length);this.addAttribute("color",new Ke(n,3).copyColorsArray(e.colors))}if(e.uvs.length>0){var r=new Float32Array(2*e.uvs.length);this.addAttribute("uv",new Ke(r,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){var s=new Float32Array(2*e.uvs2.length);this.addAttribute("uv2",new Ke(s,2).copyVector2sArray(e.uvs2))}if(e.indices.length>0){var o=new(it(e.indices)>65535?Uint32Array:Uint16Array)(3*e.indices.length);this.setIndex(new Ke(o,1).copyIndicesArray(e.indices))}for(var i in this.groups=e.groups,e.morphTargets){for(var c=[],d=e.morphTargets[i],l=0,u=d.length;l0){var p=new rt(4*e.skinIndices.length,4);this.addAttribute("skinIndex",p.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){var f=new rt(4*e.skinWeights.length,4);this.addAttribute("skinWeight",f.copyVector4sArray(e.skinWeights))}return null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Me);var e=this.attributes.position;void 0!==e?this.boundingBox.setFromBufferAttribute(e):this.boundingBox.makeEmpty(),(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)},computeBoundingSphere:function(){var e=new Me,t=new y;return function(){null===this.boundingSphere&&(this.boundingSphere=new Pe);var a=this.attributes.position;if(a){var n=this.boundingSphere.center;e.setFromBufferAttribute(a),e.getCenter(n);for(var r=0,s=0,o=a.count;s0&&(e.data.groups=JSON.parse(JSON.stringify(i)));var c=this.boundingSphere;return null!==c&&(e.data.boundingSphere={center:c.center.toArray(),radius:c.radius}),e},clone:function(){return(new bt).copy(this)},copy:function(e){var t,a,n;this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;var r=e.index;null!==r&&this.setIndex(r.clone());var s=e.attributes;for(t in s){var o=s[t];this.addAttribute(t,o.clone())}var i=e.morphAttributes;for(t in i){var c=[],d=i[t];for(a=0,n=d.length;a0)if(s=d*l-u,i=c*m,(r=d*u-l)>=0)if(s>=-i)if(s<=i){var p=1/m;o=(r*=p)*(r+d*(s*=p)+2*l)+s*(d*r+s+2*u)+h}else s=c,o=-(r=Math.max(0,-(d*s+l)))*r+s*(s+2*u)+h;else s=-c,o=-(r=Math.max(0,-(d*s+l)))*r+s*(s+2*u)+h;else s<=-i?o=-(r=Math.max(0,-(-d*c+l)))*r+(s=r>0?-c:Math.min(Math.max(-c,-u),c))*(s+2*u)+h:s<=i?(r=0,o=(s=Math.min(Math.max(-c,-u),c))*(s+2*u)+h):o=-(r=Math.max(0,-(d*c+l)))*r+(s=r>0?c:Math.min(Math.max(-c,-u),c))*(s+2*u)+h;else s=d>0?-c:c,o=-(r=Math.max(0,-(d*s+l)))*r+s*(s+2*u)+h;return a&&a.copy(this.direction).multiplyScalar(r).add(this.origin),n&&n.copy(lt).multiplyScalar(s).add(dt),o}),intersectSphere:function(){var e=new y;return function(t,a){e.subVectors(t.center,this.origin);var n=e.dot(this.direction),r=e.dot(e)-n*n,s=t.radius*t.radius;if(r>s)return null;var o=Math.sqrt(s-r),i=n-o,c=n+o;return i<0&&c<0?null:i<0?this.at(c,a):this.at(i,a)}}(),intersectsSphere:function(e){return this.distanceToPoint(e.center)<=e.radius},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;var a=-(this.origin.dot(e.normal)+e.constant)/t;return a>=0?a:null},intersectPlane:function(e,t){var a=this.distanceToPlane(e);return null===a?null:this.at(a,t)},intersectsPlane:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0},intersectBox:function(e,t){var a,n,r,s,o,i,c=1/this.direction.x,d=1/this.direction.y,l=1/this.direction.z,u=this.origin;return c>=0?(a=(e.min.x-u.x)*c,n=(e.max.x-u.x)*c):(a=(e.max.x-u.x)*c,n=(e.min.x-u.x)*c),d>=0?(r=(e.min.y-u.y)*d,s=(e.max.y-u.y)*d):(r=(e.max.y-u.y)*d,s=(e.min.y-u.y)*d),a>s||r>n?null:((r>a||a!=a)&&(a=r),(s=0?(o=(e.min.z-u.z)*l,i=(e.max.z-u.z)*l):(o=(e.max.z-u.z)*l,i=(e.min.z-u.z)*l),a>i||o>n?null:((o>a||a!=a)&&(a=o),(i=0?a:n,t)))},intersectsBox:(ct=new y,function(e){return null!==this.intersectBox(e,ct)}),intersectTriangle:function(){var e=new y,t=new y,a=new y,n=new y;return function(r,s,o,i,c){t.subVectors(s,r),a.subVectors(o,r),n.crossVectors(t,a);var d,l=this.direction.dot(n);if(l>0){if(i)return null;d=1}else{if(!(l<0))return null;d=-1,l=-l}e.subVectors(this.origin,r);var u=d*this.direction.dot(a.crossVectors(e,a));if(u<0)return null;var h=d*this.direction.dot(t.cross(e));if(h<0)return null;if(u+h>l)return null;var m=-d*e.dot(n);return m<0?null:this.at(m/l,c)}}(),applyMatrix4:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}}),Object.assign(xt.prototype,{set:function(e,t){return this.start.copy(e),this.end.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},getCenter:function(e){return(e||new y).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){return(e||new y).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){var a=t||new y;return this.delta(a).multiplyScalar(e).add(this.start)},closestPointToPointParameter:(ht=new y,mt=new y,function(e,t){ht.subVectors(e,this.start),mt.subVectors(this.end,this.start);var a=mt.dot(mt),n=mt.dot(ht)/a;return t&&(n=m.clamp(n,0,1)),n}),closestPointToPoint:function(e,t,a){var n=this.closestPointToPointParameter(e,t),r=a||new y;return this.delta(r).multiplyScalar(n).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)}}),Object.assign(Tt,{normal:(pt=new y,function(e,t,a,n){var r=n||new y;r.subVectors(a,t),pt.subVectors(e,t),r.cross(pt);var s=r.lengthSq();return s>0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}),barycoordFromPoint:function(){var e=new y,t=new y,a=new y;return function(n,r,s,o,i){e.subVectors(o,r),t.subVectors(s,r),a.subVectors(n,r);var c=e.dot(e),d=e.dot(t),l=e.dot(a),u=t.dot(t),h=t.dot(a),m=c*u-d*d,p=i||new y;if(0===m)return p.set(-2,-1,-1);var f=1/m,b=(u*l-d*h)*f,g=(c*h-d*l)*f;return p.set(1-b-g,g,b)}}(),containsPoint:function(){var e=new y;return function(t,a,n,r){var s=Tt.barycoordFromPoint(t,a,n,r,e);return s.x>=0&&s.y>=0&&s.x+s.y<=1}}()}),Object.assign(Tt.prototype,{set:function(e,t,a){return this.a.copy(e),this.b.copy(t),this.c.copy(a),this},setFromPointsAndIndices:function(e,t,a,n){return this.a.copy(e[t]),this.b.copy(e[a]),this.c.copy(e[n]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},area:function(){var e=new y,t=new y;return function(){return e.subVectors(this.c,this.b),t.subVectors(this.a,this.b),.5*e.cross(t).length()}}(),midpoint:function(e){return(e||new y).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(e){return Tt.normal(this.a,this.b,this.c,e)},plane:function(e){return(e||new Le).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(e,t){return Tt.barycoordFromPoint(e,this.a,this.b,this.c,t)},containsPoint:function(e){return Tt.containsPoint(e,this.a,this.b,this.c)},intersectsBox:function(e){return e.intersectsTriangle(this)},closestPointToPoint:function(){var e=new Le,t=[new xt,new xt,new xt],a=new y,n=new y;return function(r,s){var o=s||new y,i=1/0;if(e.setFromCoplanarPoints(this.a,this.b,this.c),e.projectPoint(r,a),!0===this.containsPoint(a))o.copy(a);else{t[0].set(this.a,this.b),t[1].set(this.b,this.c),t[2].set(this.c,this.a);for(var c=0;c0){var o=r[s[0]];if(void 0!==o)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},e=0,t=o.length;e0)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},e=0,t=i.length;ea.far?null:{distance:c,point:b.clone(),object:e}}function w(e,t,a,o,i,c,h,p){n.fromBufferAttribute(o,c),r.fromBufferAttribute(o,h),s.fromBufferAttribute(o,p);var f=v(e,e.material,t,a,n,r,s,m);return f&&(i&&(d.fromBufferAttribute(i,c),l.fromBufferAttribute(i,h),u.fromBufferAttribute(i,p),f.uv=g(m,n,r,s,d,l,u)),f.face=new Ge(c,h,p,Tt.normal(n,r,s)),f.faceIndex=c),f}return function(h,p){var f,b=this.geometry,y=this.material,A=this.matrixWorld;if(void 0!==y&&(null===b.boundingSphere&&b.computeBoundingSphere(),a.copy(b.boundingSphere),a.applyMatrix4(A),!1!==h.ray.intersectsSphere(a)&&(e.getInverse(A),t.copy(h.ray).applyMatrix4(e),null===b.boundingBox||!1!==t.intersectsBox(b.boundingBox))))if(b.isBufferGeometry){var S,E,x,T,R,_=b.index,N=b.attributes.position,k=b.attributes.uv;if(null!==_)for(T=0,R=_.count;T0&&(j=O);for(var U=0,F=D.length;U/gm,(function(e,t){var a=fe[t];if(void 0===a)throw new Error("Can not resolve #include <"+t+">");return Gt(a)}))}function Wt(e){return e.replace(/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,(function(e,t,a,n){for(var r="",s=parseInt(t);s0?e.gammaFactor:1,w=function(e,t,a){return[(e=e||{}).derivatives||t.envMapCubeUV||t.bumpMap||t.normalMap||t.flatShading?"#extension GL_OES_standard_derivatives : enable":"",(e.fragDepth||t.logarithmicDepthBuffer)&&a.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",e.drawBuffers&&a.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(e.shaderTextureLOD||t.envMap)&&a.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":""].filter(zt).join("\n")}(n.extensions,s,t),A=function(e){var t=[];for(var a in e){var n=e[a];!1!==n&&t.push("#define "+a+" "+n)}return t.join("\n")}(i),S=o.createProgram();n.isRawShaderMaterial?((p=[A].filter(zt).join("\n")).length>0&&(p+="\n"),(f=[w,A].filter(zt).join("\n")).length>0&&(f+="\n")):(p=["precision "+s.precision+" float;","precision "+s.precision+" int;","#define SHADER_NAME "+r.name,A,s.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+v,"#define MAX_BONES "+s.maxBones,s.useFog&&s.fog?"#define USE_FOG":"",s.useFog&&s.fogExp?"#define FOG_EXP2":"",s.map?"#define USE_MAP":"",s.envMap?"#define USE_ENVMAP":"",s.envMap?"#define "+h:"",s.lightMap?"#define USE_LIGHTMAP":"",s.aoMap?"#define USE_AOMAP":"",s.emissiveMap?"#define USE_EMISSIVEMAP":"",s.bumpMap?"#define USE_BUMPMAP":"",s.normalMap?"#define USE_NORMALMAP":"",s.displacementMap&&s.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",s.specularMap?"#define USE_SPECULARMAP":"",s.roughnessMap?"#define USE_ROUGHNESSMAP":"",s.metalnessMap?"#define USE_METALNESSMAP":"",s.alphaMap?"#define USE_ALPHAMAP":"",s.vertexColors?"#define USE_COLOR":"",s.flatShading?"#define FLAT_SHADED":"",s.skinning?"#define USE_SKINNING":"",s.useVertexTexture?"#define BONE_TEXTURE":"",s.morphTargets?"#define USE_MORPHTARGETS":"",s.morphNormals&&!1===s.flatShading?"#define USE_MORPHNORMALS":"",s.doubleSided?"#define DOUBLE_SIDED":"",s.flipSided?"#define FLIP_SIDED":"",s.shadowMapEnabled?"#define USE_SHADOWMAP":"",s.shadowMapEnabled?"#define "+l:"",s.sizeAttenuation?"#define USE_SIZEATTENUATION":"",s.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",s.logarithmicDepthBuffer&&t.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(zt).join("\n"),f=[w,"precision "+s.precision+" float;","precision "+s.precision+" int;","#define SHADER_NAME "+r.name,A,s.alphaTest?"#define ALPHATEST "+s.alphaTest:"","#define GAMMA_FACTOR "+v,s.useFog&&s.fog?"#define USE_FOG":"",s.useFog&&s.fogExp?"#define FOG_EXP2":"",s.map?"#define USE_MAP":"",s.envMap?"#define USE_ENVMAP":"",s.envMap?"#define "+u:"",s.envMap?"#define "+h:"",s.envMap?"#define "+m:"",s.lightMap?"#define USE_LIGHTMAP":"",s.aoMap?"#define USE_AOMAP":"",s.emissiveMap?"#define USE_EMISSIVEMAP":"",s.bumpMap?"#define USE_BUMPMAP":"",s.normalMap?"#define USE_NORMALMAP":"",s.specularMap?"#define USE_SPECULARMAP":"",s.roughnessMap?"#define USE_ROUGHNESSMAP":"",s.metalnessMap?"#define USE_METALNESSMAP":"",s.alphaMap?"#define USE_ALPHAMAP":"",s.vertexColors?"#define USE_COLOR":"",s.gradientMap?"#define USE_GRADIENTMAP":"",s.flatShading?"#define FLAT_SHADED":"",s.doubleSided?"#define DOUBLE_SIDED":"",s.flipSided?"#define FLIP_SIDED":"",s.shadowMapEnabled?"#define USE_SHADOWMAP":"",s.shadowMapEnabled?"#define "+l:"",s.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",s.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",s.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",s.logarithmicDepthBuffer&&t.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"",s.envMap&&t.get("EXT_shader_texture_lod")?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",0!==s.toneMapping?"#define TONE_MAPPING":"",0!==s.toneMapping?fe.tonemapping_pars_fragment:"",0!==s.toneMapping?Bt("toneMapping",s.toneMapping):"",s.dithering?"#define DITHERING":"",s.outputEncoding||s.mapEncoding||s.envMapEncoding||s.emissiveMapEncoding?fe.encodings_pars_fragment:"",s.mapEncoding?Ht("mapTexelToLinear",s.mapEncoding):"",s.envMapEncoding?Ht("envMapTexelToLinear",s.envMapEncoding):"",s.emissiveMapEncoding?Ht("emissiveMapTexelToLinear",s.emissiveMapEncoding):"",s.outputEncoding?(b="linearToOutputTexel",y=s.outputEncoding,g=Zt(y),"vec4 "+b+"( vec4 value ) { return LinearTo"+g[0]+g[1]+"; }"):"",s.depthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(zt).join("\n")),c=Vt(c=qt(c=Gt(c),s),s),d=Vt(d=qt(d=Gt(d),s),s);var E=p+(c=Wt(c)),x=f+(d=Wt(d)),T=Ut(o,o.VERTEX_SHADER,E),R=Ut(o,o.FRAGMENT_SHADER,x);o.attachShader(S,T),o.attachShader(S,R),void 0!==n.index0AttributeName?o.bindAttribLocation(S,0,n.index0AttributeName):!0===s.morphTargets&&o.bindAttribLocation(S,0,"position"),o.linkProgram(S);var _,N,k=o.getProgramInfoLog(S).trim(),M=o.getShaderInfoLog(T).trim(),P=o.getShaderInfoLog(R).trim(),L=!0,j=!0;return!1===o.getProgramParameter(S,o.LINK_STATUS)?(L=!1,console.error("THREE.WebGLProgram: shader error: ",o.getError(),"gl.VALIDATE_STATUS",o.getProgramParameter(S,o.VALIDATE_STATUS),"gl.getProgramInfoLog",k,M,P)):""!==k?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",k):""!==M&&""!==P||(j=!1),j&&(this.diagnostics={runnable:L,material:n,programLog:k,vertexShader:{log:M,prefix:p},fragmentShader:{log:P,prefix:f}}),o.deleteShader(T),o.deleteShader(R),this.getUniforms=function(){return void 0===_&&(_=new le(o,S,e)),_},this.getAttributes=function(){return void 0===N&&(N=function(e,t){for(var a={},n=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES),r=0;r0,maxBones:h,useVertexTexture:a.floatVertexTextures,morphTargets:t.morphTargets,morphNormals:t.morphNormals,maxMorphTargets:e.maxMorphTargets,maxMorphNormals:e.maxMorphNormals,numDirLights:n.directional.length,numPointLights:n.point.length,numSpotLights:n.spot.length,numRectAreaLights:n.rectArea.length,numHemiLights:n.hemi.length,numClippingPlanes:c,numClipIntersection:d,dithering:t.dithering,shadowMapEnabled:e.shadowMap.enabled&&l.receiveShadow&&s.length>0,shadowMapType:e.shadowMap.type,toneMapping:e.toneMapping,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:t.premultipliedAlpha,alphaTest:t.alphaTest,doubleSided:2===t.side,flipSided:1===t.side,depthPacking:void 0!==t.depthPacking&&t.depthPacking}},this.getProgramCode=function(t,a){var n=[];if(a.shaderID?n.push(a.shaderID):(n.push(t.fragmentShader),n.push(t.vertexShader)),void 0!==t.defines)for(var r in t.defines)n.push(r),n.push(t.defines[r]);for(var o=0;ot||e.height>t){var a=t/Math.max(e.width,e.height),n=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");return n.width=Math.floor(e.width*a),n.height=Math.floor(e.height*a),n.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,n.width,n.height),console.warn("THREE.WebGLRenderer: image is too big ("+e.width+"x"+e.height+"). Resized to "+n.width+"x"+n.height,e),n}return e}function h(e){return m.isPowerOfTwo(e.width)&&m.isPowerOfTwo(e.height)}function p(e,t){return e.generateMipmaps&&t&&1003!==e.minFilter&&1006!==e.minFilter}function f(t){return 1003===t||1004===t||1005===t?e.NEAREST:e.LINEAR}function b(t){var a=t.target;a.removeEventListener("dispose",b),function(t){var a=n.get(t);if(t.image&&a.__image__webglTextureCube)e.deleteTexture(a.__image__webglTextureCube);else{if(void 0===a.__webglInit)return;e.deleteTexture(a.__webglTexture)}n.remove(t)}(a),a.isVideoTexture&&delete l[a.id],o.textures--}function y(t){var a=t.target;a.removeEventListener("dispose",y),function(t){var a=n.get(t),r=n.get(t.texture);if(!t)return;void 0!==r.__webglTexture&&e.deleteTexture(r.__webglTexture);t.depthTexture&&t.depthTexture.dispose();if(t.isWebGLRenderTargetCube)for(var s=0;s<6;s++)e.deleteFramebuffer(a.__webglFramebuffer[s]),a.__webglDepthbuffer&&e.deleteRenderbuffer(a.__webglDepthbuffer[s]);else e.deleteFramebuffer(a.__webglFramebuffer),a.__webglDepthbuffer&&e.deleteRenderbuffer(a.__webglDepthbuffer);n.remove(t.texture),n.remove(t)}(a),o.textures--}function g(t,f){var y=n.get(t);if(t.isVideoTexture&&function(e){var t=e.id,a=i.frame;l[t]!==a&&(l[t]=a,e.update())}(t),t.version>0&&y.__version!==t.version){var g=t.image;if(void 0===g)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",t);else{if(!1!==g.complete)return void function(t,n,i){void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",b),t.__webglTexture=e.createTexture(),o.textures++);a.activeTexture(e.TEXTURE0+i),a.bindTexture(e.TEXTURE_2D,t.__webglTexture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,n.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,n.unpackAlignment);var l=u(n.image,r.maxTextureSize);(function(e){return 1001!==e.wrapS||1001!==e.wrapT||1003!==e.minFilter&&1006!==e.minFilter})(n)&&!1===h(l)&&(l=function(e){return e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof ImageBitmap?(void 0===c&&(c=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),c.width=m.floorPowerOfTwo(e.width),c.height=m.floorPowerOfTwo(e.height),c.getContext("2d").drawImage(e,0,0,c.width,c.height),console.warn("THREE.WebGLRenderer: image is not power of two ("+e.width+"x"+e.height+"). Resized to "+c.width+"x"+c.height,e),c):e}(l));var f=h(l),y=s.convert(n.format),g=s.convert(n.type);v(e.TEXTURE_2D,n,f);var w,A=n.mipmaps;if(n.isDepthTexture){var S=e.DEPTH_COMPONENT;if(1015===n.type){if(!d)throw new Error("Float Depth Texture only supported in WebGL2.0");S=e.DEPTH_COMPONENT32F}else d&&(S=e.DEPTH_COMPONENT16);1026===n.format&&S===e.DEPTH_COMPONENT&&1012!==n.type&&1014!==n.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),n.type=1012,g=s.convert(n.type)),1027===n.format&&(S=e.DEPTH_STENCIL,1020!==n.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),n.type=1020,g=s.convert(n.type))),a.texImage2D(e.TEXTURE_2D,0,S,l.width,l.height,0,y,g,null)}else if(n.isDataTexture)if(A.length>0&&f){for(var E=0,x=A.length;E-1?a.compressedTexImage2D(e.TEXTURE_2D,E,y,w.width,w.height,0,w.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):a.texImage2D(e.TEXTURE_2D,E,y,w.width,w.height,0,y,g,w.data);else if(A.length>0&&f){for(E=0,x=A.length;E1||n.get(o).__currentAnisotropy)&&(e.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,r.getMaxAnisotropy())),n.get(o).__currentAnisotropy=o.anisotropy)}}function w(t,r,o,i){var c=s.convert(r.texture.format),d=s.convert(r.texture.type);a.texImage2D(i,0,c,r.width,r.height,0,c,d,null),e.bindFramebuffer(e.FRAMEBUFFER,t),e.framebufferTexture2D(e.FRAMEBUFFER,o,i,n.get(r.texture).__webglTexture,0),e.bindFramebuffer(e.FRAMEBUFFER,null)}function A(t,a){e.bindRenderbuffer(e.RENDERBUFFER,t),a.depthBuffer&&!a.stencilBuffer?(e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,a.width,a.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t)):a.depthBuffer&&a.stencilBuffer?(e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,a.width,a.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,t)):e.renderbufferStorage(e.RENDERBUFFER,e.RGBA4,a.width,a.height),e.bindRenderbuffer(e.RENDERBUFFER,null)}function S(t){var a=n.get(t),r=!0===t.isWebGLRenderTargetCube;if(t.depthTexture){if(r)throw new Error("target.depthTexture not supported in Cube render targets");!function(t,a){if(a&&a.isWebGLRenderTargetCube)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(e.FRAMEBUFFER,t),!a.depthTexture||!a.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");n.get(a.depthTexture).__webglTexture&&a.depthTexture.image.width===a.width&&a.depthTexture.image.height===a.height||(a.depthTexture.image.width=a.width,a.depthTexture.image.height=a.height,a.depthTexture.needsUpdate=!0),g(a.depthTexture,0);var r=n.get(a.depthTexture).__webglTexture;if(1026===a.depthTexture.format)e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.TEXTURE_2D,r,0);else{if(1027!==a.depthTexture.format)throw new Error("Unknown depthTexture format");e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.TEXTURE_2D,r,0)}}(a.__webglFramebuffer,t)}else if(r){a.__webglDepthbuffer=[];for(var s=0;s<6;s++)e.bindFramebuffer(e.FRAMEBUFFER,a.__webglFramebuffer[s]),a.__webglDepthbuffer[s]=e.createRenderbuffer(),A(a.__webglDepthbuffer[s],t)}else e.bindFramebuffer(e.FRAMEBUFFER,a.__webglFramebuffer),a.__webglDepthbuffer=e.createRenderbuffer(),A(a.__webglDepthbuffer,t);e.bindFramebuffer(e.FRAMEBUFFER,null)}this.setTexture2D=g,this.setTextureCube=function(t,i){var c=n.get(t);if(6===t.image.length)if(t.version>0&&c.__version!==t.version){c.__image__webglTextureCube||(t.addEventListener("dispose",b),c.__image__webglTextureCube=e.createTexture(),o.textures++),a.activeTexture(e.TEXTURE0+i),a.bindTexture(e.TEXTURE_CUBE_MAP,c.__image__webglTextureCube),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t.flipY);for(var d=t&&t.isCompressedTexture,l=t.image[0]&&t.image[0].isDataTexture,m=[],f=0;f<6;f++)m[f]=d||l?l?t.image[f].image:t.image[f]:u(t.image[f],r.maxCubemapSize);var y=h(m[0]),g=s.convert(t.format),w=s.convert(t.type);v(e.TEXTURE_CUBE_MAP,t,y);for(f=0;f<6;f++)if(d)for(var A,S=m[f].mipmaps,E=0,x=S.length;E-1?a.compressedTexImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,E,g,A.width,A.height,0,A.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):a.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,E,g,A.width,A.height,0,g,w,A.data);else l?a.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,g,m[f].width,m[f].height,0,g,w,m[f].data):a.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,g,g,w,m[f]);p(t,y)&&e.generateMipmap(e.TEXTURE_CUBE_MAP),c.__version=t.version,t.onUpdate&&t.onUpdate(t)}else a.activeTexture(e.TEXTURE0+i),a.bindTexture(e.TEXTURE_CUBE_MAP,c.__image__webglTextureCube)},this.setTextureCubeDynamic=function(t,r){a.activeTexture(e.TEXTURE0+r),a.bindTexture(e.TEXTURE_CUBE_MAP,n.get(t).__webglTexture)},this.setupRenderTarget=function(t){var r=n.get(t),s=n.get(t.texture);t.addEventListener("dispose",y),s.__webglTexture=e.createTexture(),o.textures++;var i=!0===t.isWebGLRenderTargetCube,c=h(t);if(i){r.__webglFramebuffer=[];for(var d=0;d<6;d++)r.__webglFramebuffer[d]=e.createFramebuffer()}else r.__webglFramebuffer=e.createFramebuffer();if(i){a.bindTexture(e.TEXTURE_CUBE_MAP,s.__webglTexture),v(e.TEXTURE_CUBE_MAP,t.texture,c);for(d=0;d<6;d++)w(r.__webglFramebuffer[d],t,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+d);p(t.texture,c)&&e.generateMipmap(e.TEXTURE_CUBE_MAP),a.bindTexture(e.TEXTURE_CUBE_MAP,null)}else a.bindTexture(e.TEXTURE_2D,s.__webglTexture),v(e.TEXTURE_2D,t.texture,c),w(r.__webglFramebuffer,t,e.COLOR_ATTACHMENT0,e.TEXTURE_2D),p(t.texture,c)&&e.generateMipmap(e.TEXTURE_2D),a.bindTexture(e.TEXTURE_2D,null);t.depthBuffer&&S(t)},this.updateRenderTargetMipmap=function(t){var r=t.texture;if(p(r,h(t))){var s=t.isWebGLRenderTargetCube?e.TEXTURE_CUBE_MAP:e.TEXTURE_2D,o=n.get(r).__webglTexture;a.bindTexture(s,o),e.generateMipmap(s),a.bindTexture(s,null)}}}function Xt(){var e={};return{get:function(t){var a=t.uuid,n=e[a];return void 0===n&&(n={},e[a]=n),n},remove:function(t){delete e[t.uuid]},update:function(t,a,n){var r=t.uuid;e[r][a]=n},dispose:function(){e={}}}}function Qt(e,t,a){var n=new function(){var t=!1,a=new A,n=null,r=new A(0,0,0,0);return{setMask:function(a){n===a||t||(e.colorMask(a,a,a,a),n=a)},setLocked:function(e){t=e},setClear:function(t,n,s,o,i){!0===i&&(t*=o,n*=o,s*=o),a.set(t,n,s,o),!1===r.equals(a)&&(e.clearColor(t,n,s,o),r.copy(a))},reset:function(){t=!1,n=null,r.set(-1,0,0,0)}}},r=new function(){var t=!1,a=null,n=null,r=null;return{setTest:function(t){t?O(e.DEPTH_TEST):U(e.DEPTH_TEST)},setMask:function(n){a===n||t||(e.depthMask(n),a=n)},setFunc:function(t){if(n!==t){if(t)switch(t){case 0:e.depthFunc(e.NEVER);break;case 1:e.depthFunc(e.ALWAYS);break;case 2:e.depthFunc(e.LESS);break;case 3:e.depthFunc(e.LEQUAL);break;case 4:e.depthFunc(e.EQUAL);break;case 5:e.depthFunc(e.GEQUAL);break;case 6:e.depthFunc(e.GREATER);break;case 7:e.depthFunc(e.NOTEQUAL);break;default:e.depthFunc(e.LEQUAL)}else e.depthFunc(e.LEQUAL);n=t}},setLocked:function(e){t=e},setClear:function(t){r!==t&&(e.clearDepth(t),r=t)},reset:function(){t=!1,a=null,n=null,r=null}}},s=new function(){var t=!1,a=null,n=null,r=null,s=null,o=null,i=null,c=null,d=null;return{setTest:function(t){t?O(e.STENCIL_TEST):U(e.STENCIL_TEST)},setMask:function(n){a===n||t||(e.stencilMask(n),a=n)},setFunc:function(t,a,o){n===t&&r===a&&s===o||(e.stencilFunc(t,a,o),n=t,r=a,s=o)},setOp:function(t,a,n){o===t&&i===a&&c===n||(e.stencilOp(t,a,n),o=t,i=a,c=n)},setLocked:function(e){t=e},setClear:function(t){d!==t&&(e.clearStencil(t),d=t)},reset:function(){t=!1,a=null,n=null,r=null,s=null,o=null,i=null,c=null,d=null}}},o=e.getParameter(e.MAX_VERTEX_ATTRIBS),i=new Uint8Array(o),c=new Uint8Array(o),d=new Uint8Array(o),l={},u=null,h=null,m=null,p=null,f=null,b=null,y=null,g=null,v=null,w=!1,S=null,E=null,x=null,T=null,R=null,_=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS),N=!1,k=0,M=e.getParameter(e.VERSION);-1!==M.indexOf("WebGL")?(k=parseFloat(/^WebGL\ ([0-9])/.exec(M)[1]),N=k>=1):-1!==M.indexOf("OpenGL ES")&&(k=parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(M)[1]),N=k>=2);var P=null,L={},j=new A,C=new A;function I(t,a,n){var r=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(var o=0;o0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}var s=void 0!==a.precision?a.precision:"highp",o=r(s);o!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",o,"instead."),s=o);var i=!0===a.logarithmicDepthBuffer,c=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),d=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),l=e.getParameter(e.MAX_TEXTURE_SIZE),u=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),h=e.getParameter(e.MAX_VERTEX_ATTRIBS),m=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),p=e.getParameter(e.MAX_VARYING_VECTORS),f=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),b=d>0,y=!!t.get("OES_texture_float");return{getMaxAnisotropy:function(){if(void 0!==n)return n;var a=t.get("EXT_texture_filter_anisotropic");return n=null!==a?e.getParameter(a.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:r,precision:s,logarithmicDepthBuffer:i,maxTextures:c,maxVertexTextures:d,maxTextureSize:l,maxCubemapSize:u,maxAttributes:h,maxVertexUniforms:m,maxVaryings:p,maxFragmentUniforms:f,vertexTextures:b,floatFragmentTextures:y,floatVertexTextures:b&&y}}function ea(e,t,a,n){qe.call(this),this.type="PerspectiveCamera",this.fov=void 0!==e?e:50,this.zoom=1,this.near=void 0!==a?a:.1,this.far=void 0!==n?n:2e3,this.focus=10,this.aspect=void 0!==t?t:1,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}function ta(e){ea.call(this),this.cameras=e||[]}function aa(e){var t=this,a=null,n=null,r=null,s=new f,o=new f;"undefined"!=typeof window&&"VRFrameData"in window&&(n=new window.VRFrameData);var i=new f,c=new b,d=new y,l=new ea;l.bounds=new A(0,0,.5,1),l.layers.enable(1);var u=new ea;u.bounds=new A(.5,0,.5,1),u.layers.enable(2);var h,m,p=new ta([l,u]);function g(){if(null!==a&&a.isPresenting){var n=a.getEyeParameters("left"),r=n.renderWidth,s=n.renderHeight;m=e.getPixelRatio(),h=e.getSize(),e.setDrawingBufferSize(2*r,s,1)}else t.enabled&&e.setDrawingBufferSize(h.width,h.height,m)}p.layers.enable(1),p.layers.enable(2),"undefined"!=typeof window&&window.addEventListener("vrdisplaypresentchange",g,!1),this.enabled=!1,this.userHeight=1.6,this.getDevice=function(){return a},this.setDevice=function(e){void 0!==e&&(a=e)},this.setPoseTarget=function(e){void 0!==e&&(r=e)},this.getCamera=function(e){if(null===a)return e;a.depthNear=e.near,a.depthFar=e.far,a.getFrameData(n);var h=a.stageParameters;h?s.fromArray(h.sittingToStandingTransform):s.makeTranslation(0,t.userHeight,0);var m=n.pose,f=null!==r?r:e;if(f.matrix.copy(s),f.matrix.decompose(f.position,f.quaternion,f.scale),null!==m.orientation&&(c.fromArray(m.orientation),f.quaternion.multiply(c)),null!==m.position&&(c.setFromRotationMatrix(s),d.fromArray(m.position),d.applyQuaternion(c),f.position.add(d)),f.updateMatrixWorld(),!1===a.isPresenting)return e;l.near=e.near,u.near=e.near,l.far=e.far,u.far=e.far,p.matrixWorld.copy(e.matrixWorld),p.matrixWorldInverse.copy(e.matrixWorldInverse),l.matrixWorldInverse.fromArray(n.leftViewMatrix),u.matrixWorldInverse.fromArray(n.rightViewMatrix),o.getInverse(s),l.matrixWorldInverse.multiply(o),u.matrixWorldInverse.multiply(o);var b=f.parent;null!==b&&(i.getInverse(b.matrixWorld),l.matrixWorldInverse.multiply(i),u.matrixWorldInverse.multiply(i)),l.matrixWorld.getInverse(l.matrixWorldInverse),u.matrixWorld.getInverse(u.matrixWorldInverse),l.projectionMatrix.fromArray(n.leftProjectionMatrix),u.projectionMatrix.fromArray(n.rightProjectionMatrix),p.projectionMatrix.copy(l.projectionMatrix);var y=a.getLayers();if(y.length){var g=y[0];null!==g.leftBounds&&4===g.leftBounds.length&&l.bounds.fromArray(g.leftBounds),null!==g.rightBounds&&4===g.rightBounds.length&&u.bounds.fromArray(g.rightBounds)}return p},this.getStandingMatrix=function(){return s},this.submitFrame=function(){a&&a.isPresenting&&a.submitFrame()},this.dispose=function(){"undefined"!=typeof window&&window.removeEventListener("vrdisplaypresentchange",g)}}function na(e){var t={};return{get:function(a){if(void 0!==t[a])return t[a];var n;switch(a){case"WEBGL_depth_texture":n=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case"WEBGL_compressed_texture_etc1":n=e.getExtension("WEBGL_compressed_texture_etc1");break;default:n=e.getExtension(a)}return null===n&&console.warn("THREE.WebGLRenderer: "+a+" extension not supported."),t[a]=n,n}}}function ra(){var e=this,t=null,a=0,n=!1,r=!1,s=new Le,o=new g,i={value:null,needsUpdate:!1};function c(){i.value!==t&&(i.value=t,i.needsUpdate=a>0),e.numPlanes=a,e.numIntersection=0}function d(t,a,n,r){var c=null!==t?t.length:0,d=null;if(0!==c){if(d=i.value,!0!==r||null===d){var l=n+4*c,u=a.matrixWorldInverse;o.getNormalMatrix(u),(null===d||d.length=0){var d=r[i];if(void 0!==d){var l=d.normalized,u=d.itemSize,m=S.get(d);if(void 0===m)continue;var f=m.buffer,b=m.type,y=m.bytesPerElement;if(d.isInterleavedBufferAttribute){var v=d.data,w=v.stride,A=d.offset;v&&v.isInstancedInterleavedBuffer?(g.enableAttributeAndDivisor(c,v.meshPerAttribute),void 0===a.maxInstancedCount&&(a.maxInstancedCount=v.meshPerAttribute*v.count)):g.enableAttribute(c),h.bindBuffer(h.ARRAY_BUFFER,f),h.vertexAttribPointer(c,u,b,l,w*y,(n*w+A)*y)}else d.isInstancedBufferAttribute?(g.enableAttributeAndDivisor(c,d.meshPerAttribute),void 0===a.maxInstancedCount&&(a.maxInstancedCount=d.meshPerAttribute*d.count)):g.enableAttribute(c),h.bindBuffer(h.ARRAY_BUFFER,f),h.vertexAttribPointer(c,u,b,l,0,n*u*y)}else if(void 0!==o){var E=o[i];if(void 0!==E)switch(E.length){case 2:h.vertexAttrib2fv(c,E);break;case 3:h.vertexAttrib3fv(c,E);break;case 4:h.vertexAttrib4fv(c,E);break;default:h.vertexAttrib1fv(c,E)}}}}g.disableUnusedAttributes()}(n,i,a),null!==u&&h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,l.buffer));var y=1/0;null!==u?y=u.count:void 0!==m&&(y=m.count);var v=a.drawRange.start*f,w=a.drawRange.count*f,A=null!==s?s.start*f:0,x=null!==s?s.count*f:1/0,T=Math.max(v,A),R=Math.min(y,v+w,A+x)-1,_=Math.max(0,R-T+1);if(0!==_){if(r.isMesh)if(!0===n.wireframe)g.setLineWidth(n.wireframeLinewidth*ie()),b.setMode(h.LINES);else switch(r.drawMode){case 0:b.setMode(h.TRIANGLES);break;case 1:b.setMode(h.TRIANGLE_STRIP);break;case 2:b.setMode(h.TRIANGLE_FAN)}else if(r.isLine){var N=n.linewidth;void 0===N&&(N=1),g.setLineWidth(N*ie()),r.isLineSegments?b.setMode(h.LINES):r.isLineLoop?b.setMode(h.LINE_LOOP):b.setMode(h.LINE_STRIP)}else r.isPoints&&b.setMode(h.POINTS);a&&a.isInstancedBufferGeometry?a.maxInstancedCount>0&&b.renderInstances(a,T,_):b.render(T,_)}},this.compile=function(e,t){(u=N.get(e,t)).init(),e.traverse((function(e){e.isLight&&(u.pushLight(e),e.castShadow&&u.pushShadow(e))})),u.setupLights(t),e.traverse((function(t){if(t.material)if(Array.isArray(t.material))for(var a=0;a=0&&e.numSupportedMorphTargets++}if(e.morphNormals){e.numSupportedMorphNormals=0;for(m=0;m=0&&e.numSupportedMorphNormals++}var p=n.shader.uniforms;(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(n.numClippingPlanes=ee.numPlanes,n.numIntersection=ee.numIntersection,p.clippingPlanes=ee.uniform),n.fog=t,n.lightsHash=r.state.hash,e.lights&&(p.ambientLightColor.value=r.state.ambient,p.directionalLights.value=r.state.directional,p.spotLights.value=r.state.spot,p.rectAreaLights.value=r.state.rectArea,p.pointLights.value=r.state.point,p.hemisphereLights.value=r.state.hemi,p.directionalShadowMap.value=r.state.directionalShadowMap,p.directionalShadowMatrix.value=r.state.directionalShadowMatrix,p.spotShadowMap.value=r.state.spotShadowMap,p.spotShadowMatrix.value=r.state.spotShadowMatrix,p.pointShadowMap.value=r.state.pointShadowMap,p.pointShadowMatrix.value=r.state.pointShadowMatrix);var f=n.program.getUniforms(),b=le.seqWithValue(f.seq,p);n.uniformsList=b}function Me(e,t,a,n){G=0;var r=v.get(a),s=u.state.lights;if(te&&(ae||e!==H)){var o=e===H&&a.id===F;ee.setState(a.clippingPlanes,a.clipIntersection,a.clipShadows,e,r,o)}!1===a.needsUpdate&&(void 0===r.program||a.fog&&r.fog!==t||a.lights&&r.lightsHash!==s.state.hash?a.needsUpdate=!0:void 0===r.numClippingPlanes||r.numClippingPlanes===ee.numPlanes&&r.numIntersection===ee.numIntersection||(a.needsUpdate=!0)),a.needsUpdate&&(ke(a,t,n),a.needsUpdate=!1);var i,c,d=!1,l=!1,p=!1,f=r.program,y=f.getUniforms(),w=r.shader.uniforms;if(g.useProgram(f.program)&&(d=!0,l=!0,p=!0),a.id!==F&&(F=a.id,l=!0),d||e!==H){if(y.setValue(h,"projectionMatrix",e.projectionMatrix),b.logarithmicDepthBuffer&&y.setValue(h,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),H!==(B||e)&&(H=B||e,l=!0,p=!0),a.isShaderMaterial||a.isMeshPhongMaterial||a.isMeshStandardMaterial||a.envMap){var A=y.map.cameraPosition;void 0!==A&&A.setValue(h,re.setFromMatrixPosition(e.matrixWorld))}(a.isMeshPhongMaterial||a.isMeshLambertMaterial||a.isMeshBasicMaterial||a.isMeshStandardMaterial||a.isShaderMaterial||a.skinning)&&y.setValue(h,"viewMatrix",e.matrixWorldInverse)}if(a.skinning){y.setOptional(h,n,"bindMatrix"),y.setOptional(h,n,"bindMatrixInverse");var S=n.skeleton;if(S){var E=S.bones;if(b.floatVertexTextures){if(void 0===S.boneTexture){var T=Math.sqrt(4*E.length);T=m.ceilPowerOfTwo(T),T=Math.max(T,4);var R=new Float32Array(T*T*4);R.set(S.boneMatrices);var _=new x(R,T,T,1023,1015);_.needsUpdate=!0,S.boneMatrices=R,S.boneTexture=_,S.boneTextureSize=T}y.setValue(h,"boneTexture",S.boneTexture),y.setValue(h,"boneTextureSize",S.boneTextureSize)}else y.setOptional(h,S,"boneMatrices")}}return l&&(y.setValue(h,"toneMappingExposure",I.toneMappingExposure),y.setValue(h,"toneMappingWhitePoint",I.toneMappingWhitePoint),a.lights&&(c=p,(i=w).ambientLightColor.needsUpdate=c,i.directionalLights.needsUpdate=c,i.pointLights.needsUpdate=c,i.spotLights.needsUpdate=c,i.rectAreaLights.needsUpdate=c,i.hemisphereLights.needsUpdate=c),t&&a.fog&&function(e,t){e.fogColor.value=t.color,t.isFog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t.isFogExp2&&(e.fogDensity.value=t.density)}(w,t),a.isMeshBasicMaterial?Pe(w,a):a.isMeshLambertMaterial?(Pe(w,a),function(e,t){t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap)}(w,a)):a.isMeshPhongMaterial?(Pe(w,a),a.isMeshToonMaterial?function(e,t){Le(e,t),t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(w,a):Le(w,a)):a.isMeshStandardMaterial?(Pe(w,a),a.isMeshPhysicalMaterial?function(e,t){e.clearCoat.value=t.clearCoat,e.clearCoatRoughness.value=t.clearCoatRoughness,De(e,t)}(w,a):De(w,a)):a.isMeshDepthMaterial?(Pe(w,a),function(e,t){t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(w,a)):a.isMeshDistanceMaterial?(Pe(w,a),function(e,t){t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias);e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(w,a)):a.isMeshNormalMaterial?(Pe(w,a),function(e,t){t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale);t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale));t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(w,a)):a.isLineBasicMaterial?(function(e,t){e.diffuse.value=t.color,e.opacity.value=t.opacity}(w,a),a.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(w,a)):a.isPointsMaterial?function(e,t){if(e.diffuse.value=t.color,e.opacity.value=t.opacity,e.size.value=t.size*Y,e.scale.value=.5*J,e.map.value=t.map,null!==t.map){if(!0===t.map.matrixAutoUpdate){var a=t.map.offset,n=t.map.repeat,r=t.map.rotation,s=t.map.center;t.map.matrix.setUvTransform(a.x,a.y,n.x,n.y,r,s.x,s.y)}e.uvTransform.value.copy(t.map.matrix)}}(w,a):a.isShadowMaterial&&(w.color.value=a.color,w.opacity.value=a.opacity),void 0!==w.ltc_1&&(w.ltc_1.value=me.LTC_1),void 0!==w.ltc_2&&(w.ltc_2.value=me.LTC_2),le.upload(h,r.uniformsList,w,I)),a.isShaderMaterial&&!0===a.uniformsNeedUpdate&&(le.upload(h,r.uniformsList,w,I),a.uniformsNeedUpdate=!1),y.setValue(h,"modelViewMatrix",n.modelViewMatrix),y.setValue(h,"normalMatrix",n.normalMatrix),y.setValue(h,"modelMatrix",n.matrixWorld),f}function Pe(e,t){var a;if(e.opacity.value=t.opacity,t.color&&(e.diffuse.value=t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.specularMap&&(e.specularMap.value=t.specularMap),t.envMap&&(e.envMap.value=t.envMap,e.flipEnvMap.value=t.envMap&&t.envMap.isCubeTexture?-1:1,e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity),t.map?a=t.map:t.specularMap?a=t.specularMap:t.displacementMap?a=t.displacementMap:t.normalMap?a=t.normalMap:t.bumpMap?a=t.bumpMap:t.roughnessMap?a=t.roughnessMap:t.metalnessMap?a=t.metalnessMap:t.alphaMap?a=t.alphaMap:t.emissiveMap&&(a=t.emissiveMap),void 0!==a){if(a.isWebGLRenderTarget&&(a=a.texture),!0===a.matrixAutoUpdate){var n=a.offset,r=a.repeat,s=a.rotation,o=a.center;a.matrix.setUvTransform(n.x,n.y,r.x,r.y,s,o.x,o.y)}e.uvTransform.value.copy(a.matrix)}}function Le(e,t){e.specular.value=t.specular,e.shininess.value=Math.max(t.shininess,1e-4),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale)),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}function De(e,t){e.roughness.value=t.roughness,e.metalness.value=t.metalness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap),t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale)),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)}this.animate=function(e){null!==(Ee=e)?Se||(Te(),Se=!0):xe()},this.render=function(e,t,a,n){if(t&&t.isCamera){if(!D){Z="",F=-1,H=null,!0===e.autoUpdate&&e.updateMatrixWorld(),null===t.parent&&t.updateMatrixWorld(),ue.enabled&&(t=ue.getCamera(t)),(u=N.get(e,t)).init(),e.onBeforeRender(I,e,t,a),ne.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),$.setFromMatrix(ne),ae=this.localClippingEnabled,te=ee.init(this.clippingPlanes,ae,t),(l=_.get(e,t)).init(),function e(t,a,n){if(!1===t.visible)return;if(t.layers.test(a.layers))if(t.isLight)u.pushLight(t),t.castShadow&&u.pushShadow(t);else if(t.isSprite)t.frustumCulled&&!$.intersectsSprite(t)||u.pushSprite(t);else if(t.isImmediateRenderObject)n&&re.setFromMatrixPosition(t.matrixWorld).applyMatrix4(ne),l.push(t,null,t.material,re.z,null);else if((t.isMesh||t.isLine||t.isPoints)&&(t.isSkinnedMesh&&t.skeleton.update(),!t.frustumCulled||$.intersectsObject(t))){n&&re.setFromMatrixPosition(t.matrixWorld).applyMatrix4(ne);var r=T.update(t),s=t.material;if(Array.isArray(s))for(var o=r.groups,i=0,c=o.length;i=b.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+e+" texture units while this GPU supports only "+b.maxTextures),G+=1,e},this.setTexture2D=(Ae=!1,function(e,t){e&&e.isWebGLRenderTarget&&(Ae||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),Ae=!0),e=e.texture),w.setTexture2D(e,t)}),this.setTexture=function(){var e=!1;return function(t,a){e||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),e=!0),w.setTexture2D(t,a)}}(),this.setTextureCube=function(){var e=!1;return function(t,a){t&&t.isWebGLRenderTargetCube&&(e||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),e=!0),t=t.texture),t&&t.isCubeTexture||Array.isArray(t.image)&&6===t.image.length?w.setTextureCube(t,a):w.setTextureCubeDynamic(t,a)}}(),this.getRenderTarget=function(){return O},this.setRenderTarget=function(e){O=e,e&&void 0===v.get(e).__webglFramebuffer&&w.setupRenderTarget(e);var t=null,a=!1;if(e){var n=v.get(e).__webglFramebuffer;e.isWebGLRenderTargetCube?(t=n[e.activeCubeFace],a=!0):t=n,z.copy(e.viewport),q.copy(e.scissor),V=e.scissorTest}else z.copy(K).multiplyScalar(Y),q.copy(X).multiplyScalar(Y),V=Q;if(U!==t&&(h.bindFramebuffer(h.FRAMEBUFFER,t),U=t),g.viewport(z),g.scissor(q),g.setScissorTest(V),a){var r=v.get(e.texture);h.framebufferTexture2D(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_CUBE_MAP_POSITIVE_X+e.activeCubeFace,r.__webglTexture,e.activeMipMapLevel)}},this.readRenderTargetPixels=function(e,t,a,n,r,s){if(e&&e.isWebGLRenderTarget){var o=v.get(e).__webglFramebuffer;if(o){var i=!1;o!==U&&(h.bindFramebuffer(h.FRAMEBUFFER,o),i=!0);try{var c=e.texture,d=c.format,l=c.type;if(1023!==d&&C.convert(d)!==h.getParameter(h.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!(1009===l||C.convert(l)===h.getParameter(h.IMPLEMENTATION_COLOR_READ_TYPE)||1015===l&&(p.get("OES_texture_float")||p.get("WEBGL_color_buffer_float"))||1016===l&&p.get("EXT_color_buffer_half_float")))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");h.checkFramebufferStatus(h.FRAMEBUFFER)===h.FRAMEBUFFER_COMPLETE?t>=0&&t<=e.width-n&&a>=0&&a<=e.height-r&&h.readPixels(t,a,n,r,C.convert(d),C.convert(l),s):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{i&&h.bindFramebuffer(h.FRAMEBUFFER,U)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")},this.copyFramebufferToTexture=function(e,t,a){var n=t.image.width,r=t.image.height,s=C.convert(t.format);this.setTexture2D(t,0),h.copyTexImage2D(h.TEXTURE_2D,a||0,s,e.x,e.y,n,r,0)}}function wa(e,t){this.name="",this.color=new he(e),this.density=void 0!==t?t:25e-5}function Aa(e,t,a){this.name="",this.color=new he(e),this.near=void 0!==t?t:1,this.far=void 0!==a?a:1e3}function Sa(){ze.call(this),this.type="Scene",this.background=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0}function Ea(e){_e.call(this),this.type="SpriteMaterial",this.color=new he(16777215),this.map=null,this.rotation=0,this.fog=!1,this.lights=!1,this.setValues(e)}function xa(e){ze.call(this),this.type="Sprite",this.material=void 0!==e?e:new Ea,this.center=new p(.5,.5)}function Ta(){ze.call(this),this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function Ra(e,t){if(e=e||[],this.bones=e.slice(0),this.boneMatrices=new Float32Array(16*this.bones.length),void 0===t)this.calculateInverses();else if(this.bones.length===t.length)this.boneInverses=t.slice(0);else{console.warn("THREE.Skeleton boneInverses is the wrong length."),this.boneInverses=[];for(var a=0,n=this.bones.length;a=0?(h=e(g-d,b,h),m.subVectors(u,h)):(h=e(g+d,b,h),m.subVectors(h,u)),b-d>=0?(h=e(g,b-d,h),p.subVectors(u,h)):(h=e(g,b+d,h),p.subVectors(h,u)),l.crossVectors(m,p).normalize(),i.push(l.x,l.y,l.z),c.push(g,b)}}for(n=0;n.9&&o<.1&&(t<.2&&(s[e+0]+=1),a<.2&&(s[e+2]+=1),n<.2&&(s[e+4]+=1))}}()}(),this.addAttribute("position",new rt(r,3)),this.addAttribute("normal",new rt(r.slice(),3)),this.addAttribute("uv",new rt(s,2)),0===n?this.computeVertexNormals():this.normalizeNormals()}function qa(e,t){Ye.call(this),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Va(e,t)),this.mergeVertices()}function Va(e,t){za.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type="TetrahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ga(e,t){Ye.call(this),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Wa(e,t)),this.mergeVertices()}function Wa(e,t){za.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ja(e,t){Ye.call(this),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Ya(e,t)),this.mergeVertices()}function Ya(e,t){var a=(1+Math.sqrt(5))/2,n=[-1,a,0,1,a,0,-1,-a,0,1,-a,0,0,-1,a,0,1,a,0,-1,-a,0,1,-a,a,0,-1,a,0,1,-a,0,-1,-a,0,1];za.call(this,n,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type="IcosahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ka(e,t){Ye.call(this),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Xa(e,t)),this.mergeVertices()}function Xa(e,t){var a=(1+Math.sqrt(5))/2,n=1/a,r=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-n,-a,0,-n,a,0,n,-a,0,n,a,-n,-a,0,-n,a,0,n,-a,0,n,a,0,-a,0,-n,a,0,-n,-a,0,n,a,0,n];za.call(this,r,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Qa(e,t,a,n,r,s){Ye.call(this),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:a,radialSegments:n,closed:r},void 0!==s&&console.warn("THREE.TubeGeometry: taper has been removed.");var o=new $a(e,t,a,n,r);this.tangents=o.tangents,this.normals=o.normals,this.binormals=o.binormals,this.fromBufferGeometry(o),this.mergeVertices()}function $a(e,t,a,n,r){bt.call(this),this.type="TubeBufferGeometry",this.parameters={path:e,tubularSegments:t,radius:a,radialSegments:n,closed:r},t=t||64,a=a||1,n=n||8,r=r||!1;var s=e.computeFrenetFrames(t,r);this.tangents=s.tangents,this.normals=s.normals,this.binormals=s.binormals;var o,i,c=new y,d=new y,l=new p,u=new y,h=[],m=[],f=[],b=[];function g(r){u=e.getPointAt(r/t,u);var o=s.normals[r],l=s.binormals[r];for(i=0;i<=n;i++){var p=i/n*Math.PI*2,f=Math.sin(p),b=-Math.cos(p);d.x=b*o.x+f*l.x,d.y=b*o.y+f*l.y,d.z=b*o.z+f*l.z,d.normalize(),m.push(d.x,d.y,d.z),c.x=u.x+a*d.x,c.y=u.y+a*d.y,c.z=u.z+a*d.z,h.push(c.x,c.y,c.z)}}!function(){for(o=0;oa)){var n=e.ray.origin.distanceTo(ia);ne.far||t.push({distance:n,point:ia.clone(),face:null,object:this})}}),clone:function(){return new this.constructor(this.material).copy(this)},copy:function(e){return ze.prototype.copy.call(this,e),void 0!==e.center&&this.center.copy(e.center),this}}),Ta.prototype=Object.assign(Object.create(ze.prototype),{constructor:Ta,copy:function(e){ze.prototype.copy.call(this,e,!1);for(var t=e.levels,a=0,n=t.length;a1){e.setFromMatrixPosition(a.matrixWorld),t.setFromMatrixPosition(this.matrixWorld);var r=e.distanceTo(t);n[0].object.visible=!0;for(var s=1,o=n.length;s=n[s].distance;s++)n[s-1].object.visible=!1,n[s].object.visible=!0;for(;so))h.applyMatrix4(this.matrixWorld),(x=n.ray.origin.distanceTo(h))n.far||r.push({distance:x,point:u.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}else for(g=0,v=f.length/3-1;go))h.applyMatrix4(this.matrixWorld),(x=n.ray.origin.distanceTo(h))n.far||r.push({distance:x,point:u.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}}else if(i.isGeometry){var S=i.vertices,E=S.length;for(g=0;go))h.applyMatrix4(this.matrixWorld),(x=n.ray.origin.distanceTo(h))n.far||r.push({distance:x,point:u.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),Pa.prototype=Object.assign(Object.create(Ma.prototype),{constructor:Pa,isLineSegments:!0,computeLineDistances:function(){var e=new y,t=new y;return function(){var a=this.geometry;if(a.isBufferGeometry)if(null===a.index){for(var n=a.attributes.position,r=[],s=0,o=n.count;sn.far)return;r.push({distance:d,distanceToRay:Math.sqrt(o),point:c.clone(),index:a,face:null,object:s})}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),Ia.prototype=Object.assign(Object.create(ze.prototype),{constructor:Ia,isGroup:!0}),Da.prototype=Object.assign(Object.create(w.prototype),{constructor:Da,isVideoTexture:!0,update:function(){var e=this.image;e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),Oa.prototype=Object.create(w.prototype),Oa.prototype.constructor=Oa,Oa.prototype.isCompressedTexture=!0,Ua.prototype=Object.create(w.prototype),Ua.prototype.constructor=Ua,Ua.prototype.isDepthTexture=!0,Fa.prototype=Object.create(bt.prototype),Fa.prototype.constructor=Fa,Za.prototype=Object.create(Ye.prototype),Za.prototype.constructor=Za,Ha.prototype=Object.create(bt.prototype),Ha.prototype.constructor=Ha,Ba.prototype=Object.create(Ye.prototype),Ba.prototype.constructor=Ba,za.prototype=Object.create(bt.prototype),za.prototype.constructor=za,qa.prototype=Object.create(Ye.prototype),qa.prototype.constructor=qa,Va.prototype=Object.create(za.prototype),Va.prototype.constructor=Va,Ga.prototype=Object.create(Ye.prototype),Ga.prototype.constructor=Ga,Wa.prototype=Object.create(za.prototype),Wa.prototype.constructor=Wa,Ja.prototype=Object.create(Ye.prototype),Ja.prototype.constructor=Ja,Ya.prototype=Object.create(za.prototype),Ya.prototype.constructor=Ya,Ka.prototype=Object.create(Ye.prototype),Ka.prototype.constructor=Ka,Xa.prototype=Object.create(za.prototype),Xa.prototype.constructor=Xa,Qa.prototype=Object.create(Ye.prototype),Qa.prototype.constructor=Qa,$a.prototype=Object.create(bt.prototype),$a.prototype.constructor=$a,en.prototype=Object.create(Ye.prototype),en.prototype.constructor=en,tn.prototype=Object.create(bt.prototype),tn.prototype.constructor=tn,an.prototype=Object.create(Ye.prototype),an.prototype.constructor=an,nn.prototype=Object.create(bt.prototype),nn.prototype.constructor=nn;var rn=function(e,t,a){a=a||2;var n,r,s,o,i,c,d,l=t&&t.length,u=l?t[0]*a:e.length,h=sn(e,0,u,a,!0),m=[];if(!h)return m;if(l&&(h=function(e,t,a,n){var r,s,o,i,c,d=[];for(r=0,s=t.length;r80*a){n=s=e[0],r=o=e[1];for(var p=a;ps&&(s=i),c>o&&(o=c);d=0!==(d=Math.max(s-n,o-r))?1/d:0}return cn(h,m,a,n,r,d),m};function sn(e,t,a,n,r){var s,o;if(r===function(e,t,a,n){for(var r=0,s=t,o=a-n;s0)for(s=t;s=t;s-=n)o=xn(s,e[s],e[s+1],o);return o&&wn(o,o.next)&&(Tn(o),o=o.next),o}function on(e,t){if(!e)return e;t||(t=e);var a,n=e;do{if(a=!1,n.steiner||!wn(n,n.next)&&0!==vn(n.prev,n,n.next))n=n.next;else{if(Tn(n),(n=t=n.prev)===n.next)break;a=!0}}while(a||n!==t);return t}function cn(e,t,a,n,r,s,o){if(e){!o&&s&&function(e,t,a,n){var r=e;do{null===r.z&&(r.z=fn(r.x,r.y,t,a,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,a,n,r,s,o,i,c,d=1;do{for(a=e,e=null,s=null,o=0;a;){for(o++,n=a,i=0,t=0;t0||c>0&&n;)0!==i&&(0===c||!n||a.z<=n.z)?(r=a,a=a.nextZ,i--):(r=n,n=n.nextZ,c--),s?s.nextZ=r:e=r,r.prevZ=s,s=r;a=n}s.nextZ=null,d*=2}while(o>1)}(r)}(e,n,r,s);for(var i,c,d=e;e.prev!==e.next;)if(i=e.prev,c=e.next,s?ln(e,n,r,s):dn(e))t.push(i.i/a),t.push(e.i/a),t.push(c.i/a),Tn(e),e=c.next,d=c.next;else if((e=c)===d){o?1===o?cn(e=un(e,t,a),t,a,n,r,s,2):2===o&&hn(e,t,a,n,r,s):cn(on(e),t,a,n,r,s,1);break}}}function dn(e){var t=e.prev,a=e,n=e.next;if(vn(t,a,n)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(yn(t.x,t.y,a.x,a.y,n.x,n.y,r.x,r.y)&&vn(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function ln(e,t,a,n){var r=e.prev,s=e,o=e.next;if(vn(r,s,o)>=0)return!1;for(var i=r.xs.x?r.x>o.x?r.x:o.x:s.x>o.x?s.x:o.x,l=r.y>s.y?r.y>o.y?r.y:o.y:s.y>o.y?s.y:o.y,u=fn(i,c,t,a,n),h=fn(d,l,t,a,n),m=e.nextZ;m&&m.z<=h;){if(m!==e.prev&&m!==e.next&&yn(r.x,r.y,s.x,s.y,o.x,o.y,m.x,m.y)&&vn(m.prev,m,m.next)>=0)return!1;m=m.nextZ}for(m=e.prevZ;m&&m.z>=u;){if(m!==e.prev&&m!==e.next&&yn(r.x,r.y,s.x,s.y,o.x,o.y,m.x,m.y)&&vn(m.prev,m,m.next)>=0)return!1;m=m.prevZ}return!0}function un(e,t,a){var n=e;do{var r=n.prev,s=n.next.next;!wn(r,s)&&An(r,n,n.next,s)&&Sn(r,s)&&Sn(s,r)&&(t.push(r.i/a),t.push(n.i/a),t.push(s.i/a),Tn(n),Tn(n.next),n=e=s),n=n.next}while(n!==e);return n}function hn(e,t,a,n,r,s){var o=e;do{for(var i=o.next.next;i!==o.prev;){if(o.i!==i.i&&gn(o,i)){var c=En(o,i);return o=on(o,o.next),c=on(c,c.next),cn(o,t,a,n,r,s),void cn(c,t,a,n,r,s)}i=i.next}o=o.next}while(o!==e)}function mn(e,t){return e.x-t.x}function pn(e,t){if(t=function(e,t){var a,n=t,r=e.x,s=e.y,o=-1/0;do{if(s<=n.y&&s>=n.next.y&&n.next.y!==n.y){var i=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(i<=r&&i>o){if(o=i,i===r){if(s===n.y)return n;if(s===n.next.y)return n.next}a=n.x=n.x&&n.x>=l&&r!==n.x&&yn(sa.x)&&Sn(n,e)&&(a=n,h=c),n=n.next;return a}(e,t)){var a=En(t,e);on(a,a.next)}}function fn(e,t,a,n,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-a)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-n)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function bn(e){var t=e,a=e;do{t.x=0&&(e-o)*(n-i)-(a-o)*(t-i)>=0&&(a-o)*(s-i)-(r-o)*(n-i)>=0}function gn(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var a=e;do{if(a.i!==e.i&&a.next.i!==e.i&&a.i!==t.i&&a.next.i!==t.i&&An(a,a.next,e,t))return!0;a=a.next}while(a!==e);return!1}(e,t)&&Sn(e,t)&&Sn(t,e)&&function(e,t){var a=e,n=!1,r=(e.x+t.x)/2,s=(e.y+t.y)/2;do{a.y>s!=a.next.y>s&&a.next.y!==a.y&&r<(a.next.x-a.x)*(s-a.y)/(a.next.y-a.y)+a.x&&(n=!n),a=a.next}while(a!==e);return n}(e,t)}function vn(e,t,a){return(t.y-e.y)*(a.x-t.x)-(t.x-e.x)*(a.y-t.y)}function wn(e,t){return e.x===t.x&&e.y===t.y}function An(e,t,a,n){return!!(wn(e,t)&&wn(a,n)||wn(e,n)&&wn(a,t))||vn(e,t,a)>0!=vn(e,t,n)>0&&vn(a,n,e)>0!=vn(a,n,t)>0}function Sn(e,t){return vn(e.prev,e,e.next)<0?vn(e,t,e.next)>=0&&vn(e,e.prev,t)>=0:vn(e,t,e.prev)<0||vn(e,e.next,t)<0}function En(e,t){var a=new Rn(e.i,e.x,e.y),n=new Rn(t.i,t.x,t.y),r=e.next,s=t.prev;return e.next=t,t.prev=e,a.next=r,r.prev=a,n.next=a,a.prev=n,s.next=n,n.prev=s,n}function xn(e,t,a,n){var r=new Rn(e,t,a);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Tn(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Rn(e,t,a){this.i=e,this.x=t,this.y=a,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}var _n={area:function(e){for(var t=e.length,a=0,n=t-1,r=0;r2&&e[t-1].equals(e[0])&&e.pop()}function kn(e,t){for(var a=0;a0)&&p.push(S,E,T),(c!==a-1||d0&&v(!0),t>0&&v(!1)),this.setIndex(d),this.addAttribute("position",new rt(l,3)),this.addAttribute("normal",new rt(u,3)),this.addAttribute("uv",new rt(h,2))}function Gn(e,t,a,n,r,s,o){qn.call(this,0,e,t,a,n,r,s,o),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:a,heightSegments:n,openEnded:r,thetaStart:s,thetaLength:o}}function Wn(e,t,a,n,r,s,o){Vn.call(this,0,e,t,a,n,r,s,o),this.type="ConeBufferGeometry",this.parameters={radius:e,height:t,radialSegments:a,heightSegments:n,openEnded:r,thetaStart:s,thetaLength:o}}function Jn(e,t,a,n){Ye.call(this),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:a,thetaLength:n},this.fromBufferGeometry(new Yn(e,t,a,n)),this.mergeVertices()}function Yn(e,t,a,n){bt.call(this),this.type="CircleBufferGeometry",this.parameters={radius:e,segments:t,thetaStart:a,thetaLength:n},e=e||1,t=void 0!==t?Math.max(3,t):8,a=void 0!==a?a:0,n=void 0!==n?n:2*Math.PI;var r,s,o=[],i=[],c=[],d=[],l=new y,u=new p;for(i.push(0,0,0),c.push(0,0,1),d.push(.5,.5),s=0,r=3;s<=t;s++,r+=3){var h=a+s/t*n;l.x=e*Math.cos(h),l.y=e*Math.sin(h),i.push(l.x,l.y,l.z),c.push(0,0,1),u.x=(i[r]/e+1)/2,u.y=(i[r+1]/e+1)/2,d.push(u.x,u.y)}for(r=1;r<=t;r++)o.push(r,r+1,0);this.setIndex(o),this.addAttribute("position",new rt(i,3)),this.addAttribute("normal",new rt(c,3)),this.addAttribute("uv",new rt(d,2))}Mn.prototype=Object.create(Ye.prototype),Mn.prototype.constructor=Mn,Pn.prototype=Object.create(bt.prototype),Pn.prototype.constructor=Pn,Pn.prototype.getArrays=function(){var e=this.getAttribute("position"),t=e?Array.prototype.slice.call(e.array):[],a=this.getAttribute("uv"),n=a?Array.prototype.slice.call(a.array):[],r=this.index;return{position:t,uv:n,index:r?Array.prototype.slice.call(r.array):[]}},Pn.prototype.addShapeList=function(e,t){var a=e.length;t.arrays=this.getArrays();for(var n=0;nNumber.EPSILON){var h=Math.sqrt(l),m=Math.sqrt(c*c+d*d),f=t.x-i/h,b=t.y+o/h,y=((a.x-d/m-f)*d-(a.y+c/m-b)*c)/(o*d-i*c),g=(n=f+o*y-e.x)*n+(r=b+i*y-e.y)*r;if(g<=2)return new p(n,r);s=Math.sqrt(g/2)}else{var v=!1;o>Number.EPSILON?c>Number.EPSILON&&(v=!0):o<-Number.EPSILON?c<-Number.EPSILON&&(v=!0):Math.sign(i)===Math.sign(d)&&(v=!0),v?(n=-i,r=o,s=Math.sqrt(l)):(n=o,r=i,s=Math.sqrt(l/2))}return new p(n/s,r/s)}for(var z=[],q=0,V=L.length,G=V-1,W=q+1;q=0;C--){for(D=C/w,O=g*Math.cos(D*Math.PI/2),I=v*Math.sin(D*Math.PI/2),q=0,V=L.length;q=0;){a=q,(n=q-1)<0&&(n=e.length-1);var r=0,s=E+2*w;for(r=0;r0||0===e.search(/^data\:image\/jpeg/);r.format=n?1022:1023,r.needsUpdate=!0,void 0!==t&&t(r)}),a,n),r},setCrossOrigin:function(e){return this.crossOrigin=e,this},setPath:function(e){return this.path=e,this}}),Object.assign(br.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(e,t){var a=this.getUtoTmapping(e);return this.getPoint(a,t)},getPoints:function(e){void 0===e&&(e=5);for(var t=[],a=0;a<=e;a++)t.push(this.getPoint(a/e));return t},getSpacedPoints:function(e){void 0===e&&(e=5);for(var t=[],a=0;a<=e;a++)t.push(this.getPointAt(a/e));return t},getLength:function(){var e=this.getLengths();return e[e.length-1]},getLengths:function(e){if(void 0===e&&(e=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,a,n=[],r=this.getPoint(0),s=0;for(n.push(0),a=1;a<=e;a++)s+=(t=this.getPoint(a/e)).distanceTo(r),n.push(s),r=t;return this.cacheArcLengths=n,n},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(e,t){var a,n=this.getLengths(),r=0,s=n.length;a=t||e*n[s-1];for(var o,i=0,c=s-1;i<=c;)if((o=n[r=Math.floor(i+(c-i)/2)]-a)<0)i=r+1;else{if(!(o>0)){c=r;break}c=r-1}if(n[r=c]===a)return r/(s-1);var d=n[r];return(r+(a-d)/(n[r+1]-d))/(s-1)},getTangent:function(e){var t=e-1e-4,a=e+1e-4;t<0&&(t=0),a>1&&(a=1);var n=this.getPoint(t);return this.getPoint(a).clone().sub(n).normalize()},getTangentAt:function(e){var t=this.getUtoTmapping(e);return this.getTangent(t)},computeFrenetFrames:function(e,t){var a,n,r,s=new y,o=[],i=[],c=[],d=new y,l=new f;for(a=0;a<=e;a++)n=a/e,o[a]=this.getTangentAt(n),o[a].normalize();i[0]=new y,c[0]=new y;var u=Number.MAX_VALUE,h=Math.abs(o[0].x),p=Math.abs(o[0].y),b=Math.abs(o[0].z);for(h<=u&&(u=h,s.set(1,0,0)),p<=u&&(u=p,s.set(0,1,0)),b<=u&&s.set(0,0,1),d.crossVectors(o[0],s).normalize(),i[0].crossVectors(o[0],d),c[0].crossVectors(o[0],i[0]),a=1;a<=e;a++)i[a]=i[a-1].clone(),c[a]=c[a-1].clone(),d.crossVectors(o[a-1],o[a]),d.length()>Number.EPSILON&&(d.normalize(),r=Math.acos(m.clamp(o[a-1].dot(o[a]),-1,1)),i[a].applyMatrix4(l.makeRotationAxis(d,r))),c[a].crossVectors(o[a],i[a]);if(!0===t)for(r=Math.acos(m.clamp(i[0].dot(i[e]),-1,1)),r/=e,o[0].dot(d.crossVectors(i[0],i[e]))>0&&(r=-r),a=1;a<=e;a++)i[a].applyMatrix4(l.makeRotationAxis(o[a],r*a)),c[a].crossVectors(o[a],i[a]);return{tangents:o,normals:i,binormals:c}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){var e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),yr.prototype=Object.create(br.prototype),yr.prototype.constructor=yr,yr.prototype.isEllipseCurve=!0,yr.prototype.getPoint=function(e,t){for(var a=t||new p,n=2*Math.PI,r=this.aEndAngle-this.aStartAngle,s=Math.abs(r)n;)r-=n;r0?0:(Math.floor(Math.abs(l)/i.length)+1)*i.length:0===u&&l===c-1&&(l=c-2,u=1),this.closed||l>0?a=i[(l-1)%c]:(wr.subVectors(i[0],i[1]).add(i[0]),a=wr),n=i[l%c],r=i[(l+1)%c],this.closed||l+2n.length-2?n.length-1:s+1],l=n[s>n.length-3?n.length-1:s+2];return a.set(Tr(o,i.x,c.x,d.x,l.x),Tr(o,i.y,c.y,d.y,l.y)),a},Cr.prototype.copy=function(e){br.prototype.copy.call(this,e),this.points=[];for(var t=0,a=e.points.length;t=t){var r=a[n]-t,s=this.curves[n],o=s.getLength(),i=0===o?0:1-r/o;return s.getPointAt(i)}n++}return null},getLength:function(){var e=this.getCurveLengths();return e[e.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var e=[],t=0,a=0,n=this.curves.length;a1&&!a[a.length-1].equals(a[0])&&a.push(a[0]),a},copy:function(e){br.prototype.copy.call(this,e),this.curves=[];for(var t=0,a=e.curves.length;t0){var d=c.getPoint(0);d.equals(this.currentPoint)||this.lineTo(d.x,d.y)}this.curves.push(c);var l=c.getPoint(1);this.currentPoint.copy(l)},copy:function(e){return Dr.prototype.copy.call(this,e),this.currentPoint.copy(e.currentPoint),this},toJSON:function(){var e=Dr.prototype.toJSON.call(this);return e.currentPoint=this.currentPoint.toArray(),e},fromJSON:function(e){return Dr.prototype.fromJSON.call(this,e),this.currentPoint.fromArray(e.currentPoint),this}}),Ur.prototype=Object.assign(Object.create(Or.prototype),{constructor:Ur,getPointsHoles:function(e){for(var t=[],a=0,n=this.holes.length;a=r)break e;var i=t[1];e=(r=t[--a-1]))break t}s=a,a=0}for(;a>>1;e=0;i--)(r=e[i])&&(o=(s<3?r(o):s>3?r(t,a,o):r(t,a))||o);return s>3&&o&&Object.defineProperty(t,a,o),o}function c(e,t){return function(a,n){t(a,n,e)}}function d(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function l(e,t,a,n){return new(a||(a=Promise))((function(r,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function i(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){e.done?r(e.value):new a((function(t){t(e.value)})).then(o,i)}c((n=n.apply(e,t||[])).next())}))}function u(e,t){var a,n,r,s,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return s={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function i(s){return function(i){return function(s){if(a)throw new TypeError("Generator is already executing.");for(;o;)try{if(a=1,n&&(r=2&s[0]?n.return:s[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,s[1])).done)return r;switch(n=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(r=o.trys,(r=r.length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}}}function p(e,t){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var n,r,s=a.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)o.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}return o}function f(){for(var e=[],t=0;t1||i(e,t)}))})}function i(e,t){try{(a=r[e](t)).value instanceof y?Promise.resolve(a.value.v).then(c,d):l(s[0][2],a)}catch(e){l(s[0][3],e)}var a}function c(e){i("next",e)}function d(e){i("throw",e)}function l(e,t){e(t),s.shift(),s.length&&i(s[0][0],s[0][1])}}function v(e){var t,a;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,r){t[n]=e[n]?function(t){return(a=!a)?{value:y(e[n](t)),done:"return"===n}:r?r(t):t}:r}}function w(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,a=e[Symbol.asyncIterator];return a?a.call(e):(e=m(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(a){t[a]=e[a]&&function(t){return new Promise((function(n,r){(function(e,t,a,n){Promise.resolve(n).then((function(t){e({value:t,done:a})}),t)})(n,r,(t=e[a](t)).done,t.value)}))}}}function A(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function S(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}},,,,function(e,t,a){"use strict";a.r(t),a.d(t,"BEAT_ANTICIPATION_TIME",(function(){return s})),a.d(t,"BEAT_PRELOAD_TIME",(function(){return o})),a.d(t,"PUNCH_OFFSET",(function(){return i})),a.d(t,"SWORD_OFFSET",(function(){return c}));a(6);let n=AFRAME.utils.getUrlParameter("skip")||0;n=parseInt(n,10);const r=AFRAME.utils.getUrlParameter("debugmines"),s=1.1,o=1.1,i=.5,c=1.5,d=AFRAME.utils.device.isMobile(),l=d?2e3:3500,u=d?7500:1e4;function h(e,t){return e._time-t._time}if(AFRAME.registerComponent("beat-generator",{dependencies:["stage-colors"],schema:{challengeId:{type:"string"},gameMode:{type:"string"},difficulty:{type:"string"},beatmapCharacteristic:{type:"string"},has3DOFVR:{default:!1},hasSongLoadError:{default:!1},isPlaying:{default:!1},isZipFetching:{default:!1},menuSelectedChallengeId:{type:"string"},songDuration:{type:"number"},speed:{type:"number"}},orientationsHumanized:["up","down","left","right","upleft","upright","downleft","downright"],horizontalPositions:[-.75,-.25,.25,.75],horizontalPositionsHumanized:{0:"left",1:"middleleft",2:"middleright",3:"right"},positionHumanized:{topLeft:{layer:2,index:0},topCenterLeft:{layer:2,index:1},topCenterRight:{layer:2,index:2},topRight:{layer:2,index:3},middleLeft:{layer:1,index:0},middleCenterLeft:{layer:1,index:1},middleCenterRight:{layer:1,index:2},middleRight:{layer:1,index:3},bottomLeft:{layer:0,index:0},bottomCenterLeft:{layer:0,index:1},bottomCenterRight:{layer:0,index:2},bottomRight:{layer:0,index:3}},verticalPositionsHumanized:{0:"bottom",1:"middle",2:"top"},init:function(){this.audioAnalyserEl=document.getElementById("audioanalyser"),this.beatContainer=document.getElementById("beatContainer"),this.beats=null,this.beatData=null,this.beatDataProcessed=!1,this.preloadTime=0,this.songTime=void 0,this.bpm=void 0,this.curve=null,this.curveEl=document.getElementById("curve"),this.curveFollowRigEl=document.getElementById("curveFollowRig"),this.tube=document.getElementById("tube"),this.index={events:0,notes:0,obstacles:0},this.wallContainer=document.getElementById("wallContainer"),this.leftStageLasers=document.getElementById("leftStageLasers"),this.rightStageLasers=document.getElementById("rightStageLasers"),this.stageColors=this.el.components["stage-colors"],this.el.addEventListener("cleargame",this.onClearGame.bind(this)),this.el.addEventListener("gamemenurestart",this.onRestart.bind(this)),this.el.addEventListener("ziploaderend",e=>{this.beats=e.detail.beats,this.data.challengeId&&!this.data.hasSongLoadError&&(this.beatData=this.beats[this.data.beatmapCharacteristic+"-"+this.data.difficulty],this.processBeats())})},play:function(){this.playerHeight=document.querySelector("[player-height]").components["player-height"]},update:function(e){const t=this.data;e.challengeId!==t.challengeId&&t.challengeId&&(this.index.events=0,this.index.notes=0,this.index.obstacles=0,this.data.isZipFetching||!this.beats||this.data.hasSongLoadError||(this.beatData=this.beats[this.data.beatmapCharacteristic+"-"+this.data.difficulty],this.processBeats()),this.curveEl.components.supercurve.generateCurve(t.speed*t.songDuration),this.curve=this.curveEl.components.supercurve.curve)},processBeats:function(){if(this.data.hasSongLoadError)return;this.beatData.version&&"3"===this.beatData.version.charAt(0)&&(this.beatData=function(e){const t={_version:"3.2.2",_beatsPerMinute:e._beatsPerMinute,_events:[],_notes:[],_obstacles:[]};t._notes=e.colorNotes.map(e=>({_time:e.b,_lineIndex:e.x,_lineLayer:e.y,_type:e.c,_cutDirection:e.d}));for(const a of e.bombNotes)t._notes.push({_time:a.b,_lineIndex:a.x,_lineLayer:a.y,_type:3});return t._notes.sort((e,t)=>e._time-t._time),t._obstacles=e.obstacles.map(e=>({_time:e.b,_lineIndex:e.x,_lineLayer:e.y,_type:e._type,_duration:e.d,_width:e.w,_height:e.h})),t}(this.beatData)),this.songTime=0,this.preloadTime=0,this.beatData._events.sort(h),this.beatData._obstacles.sort(h),this.beatData._notes.sort(h),this.bpm=this.beatData._beatsPerMinute,this.beatData._obstacles.length>256&&(this.beatData._obstacles=[]);const e=this.beatData._events;if(e.length&&e[0]._time<0)for(let t=0;e[t]._time<0;t++)this.generateEvent(e[t]);this.beatDataProcessed=!0,console.log("[beat-generator] Finished processing beat data.")},tick:function(e,t){if(!this.data.isPlaying||!this.data.challengeId||!this.beatData)return;let a;const r=this.el.components.song;if(void 0===this.preloadTime){if(!r.isAudioPlaying)return;a=1e3*r.getCurrentTime()+n}else a=this.preloadTime;this.beatData._beatsPerMinute;const s=6e4/this.beatData._beatsPerMinute,i=this.beatData._notes;for(let e=this.index.notes;ei[e]._time*s&&(this.generateBeat(i[e]),this.index.notes++);if("ride"!==this.data.gameMode){const e=this.beatData._obstacles;for(let t=this.index.obstacles;t=e[t]._time*s&&(this.generateWall(e[t]),this.index.obstacles++)}const c=this.beatData._events;for(let e=this.index.events;e=c[e]._time*s&&(this.generateEvent(c[e]),this.index.events++);void 0!==this.preloadTime&&(this.preloadTime>=1e3*o?(this.el.sceneEl.emit("beatloaderpreloadfinish",null,!1),this.preloadTime=void 0):this.preloadTime+=t)},generateBeat:function(e,t){const a=this.data;let n;r&&(e._type=3);let s=8===e._cutDirection?"dot":"arrow";if(0===e._type?n="red":1===e._type?n="blue":(s="mine",n=void 0),a.has3DOFVR&&"viewer"!==a.gameMode&&"ride"!==a.gameMode&&"red"===n)return;(AFRAME.utils.getUrlParameter("dot")||"punch"===a.gameMode)&&(s="dot");const o=this.requestBeat(s,n);o&&(o.components.beat||o.components.plume?this.setupBeat(o,e):setTimeout(()=>{this.setupBeat(o,e)}))},setupBeat:function(e,t){const a=this.data,n=this.orientationsHumanized[t._cutDirection],r=this.horizontalPositionsHumanized[t._lineIndex]||"left",o=this.verticalPositionsHumanized[t._lineLayer]||"middle",d=(("classic"===this.data.gameMode?c:i)/a.speed+s)/a.songDuration,l=1e3*a.songDuration,u=6e4/this.beatData._beatsPerMinute,h=t._time*u/l+d,m=this.el.systems["render-order"].order.beats+1-h;"ride"===a.gameMode?(e.components.plume.onGenerate(h,r,o,this.playerHeight.beatOffset),e.setAttribute("render-order",m)):(e.components.beat.onGenerate(h,r,o,n,this.playerHeight.beatOffset),e.components.beat.blockEl.object3D.renderOrder=m),e.play()},generateWall:function(e){this.data;const t=this.el.sceneEl.components.pool__wall.requestEntity();t&&(t.components.wall?this.setupWall(t,e):setTimeout(()=>{this.setupWall(t,e)}))},setupWall:function(e,t){const a=this.data;if(a.has3DOFVR&&"viewer"!==a.gameMode)return;const n=t._duration/this.bpm*60,r=this.horizontalPositionsHumanized[t._lineIndex]||"none",o=1===t._type,i=n*a.speed,c=t._width/2,d=s/a.songDuration,l=1e3*a.songDuration,u=6e4/this.beatData._beatsPerMinute,h=t._time*u/l+d,m=i/this.curveEl.components.supercurve.length;e.components.wall.onGenerate(h,r,c,i,o,h+m),e.play(),e.object3D.renderOrder=this.el.systems["render-order"].order.beats+1-(h+m)},generateEvent:function(e){switch(e._type){case 0:this.stageColors.setColor("bg",e._value),this.stageColors.setColorInstant("moon",e._value);break;case 1:this.stageColors.setColorInstant("stars",e._value);break;case 2:this.stageColors.setColor("curveeven",e._value);break;case 3:this.stageColors.setColor("curveodd",e._value);break;case 4:this.stageColors.setColor("floor",e._value);break;case 8:case 9:this.tube.emit("pulse",null,!1);break;case 12:this.stageColors.setColor("leftglow",e._value);break;case 13:this.stageColors.setColor("rightglow",e._value)}},requestBeat:function(e,t){let a="pool__beat-"+e;"ride"===this.data.gameMode&&(a="pool__plume-"+e),"mine"!==e&&t&&(a+="-"+t);const n=this.el.sceneEl.components[a];if(n)return n.requestEntity();console.warn("Pool "+a+" unavailable")},onClearGame:function(){this.preloadTime=0,this.index.events=0,this.index.notes=0,this.index.obstacles=0;for(let e=0;e{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0?1:+e}),"name"in Function.prototype==!1&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),a=1;a>8&255]+e[t>>16&255]+e[t>>24&255]+"-"+e[255&a]+e[a>>8&255]+"-"+e[a>>16&15|64]+e[a>>24&255]+"-"+e[63&n|128]+e[n>>8&255]+"-"+e[n>>16&255]+e[n>>24&255]+e[255&r]+e[r>>8&255]+e[r>>16&255]+e[r>>24&255]}}(),clamp:function(e,t,a){return Math.max(t,Math.min(a,e))},euclideanModulo:function(e,t){return(e%t+t)%t},mapLinear:function(e,t,a,n,r){return n+(e-t)*(r-n)/(a-t)},lerp:function(e,t,a){return(1-a)*e+a*t},smoothstep:function(e,t,a){return e<=t?0:e>=a?1:(e=(e-t)/(a-t))*e*(3-2*e)},smootherstep:function(e,t,a){return e<=t?0:e>=a?1:(e=(e-t)/(a-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:function(e){return e*m.DEG2RAD},radToDeg:function(e){return e*m.RAD2DEG},isPowerOfTwo:function(e){return 0==(e&e-1)&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}};function p(e,t){this.x=e||0,this.y=t||0}function f(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function b(e,t,a,n){this._x=e||0,this._y=t||0,this._z=a||0,this._w=void 0!==n?n:1}function y(e,t,a){this.x=e||0,this.y=t||0,this.z=a||0}function g(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}Object.defineProperties(p.prototype,{width:{get:function(){return this.x},set:function(e){this.x=e}},height:{get:function(){return this.y},set:function(e){this.y=e}}}),Object.assign(p.prototype,{isVector2:!0,set:function(e,t){return this.x=e,this.y=t,this},setScalar:function(e){return this.x=e,this.y=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){return this.multiplyScalar(1/e)},applyMatrix3:function(e){var t=this.x,a=this.y,n=e.elements;return this.x=n[0]*t+n[3]*a+n[6],this.y=n[1]*t+n[4]*a+n[7],this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this},clampScalar:(r=new p,s=new p,function(e,t){return r.set(e,e),s.set(t,t),this.clamp(r,s)}),clampLength:function(e,t){var a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(t,a)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var e=Math.atan2(this.y,this.x);return e<0&&(e+=2*Math.PI),e},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,a=this.y-e.y;return t*t+a*a},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,a){return this.subVectors(t,e).multiplyScalar(a).add(e)},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromBufferAttribute:function(e,t,a){return void 0!==a&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this},rotateAround:function(e,t){var a=Math.cos(t),n=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*a-s*n+e.x,this.y=r*n+s*a+e.y,this}}),Object.assign(f.prototype,{isMatrix4:!0,set:function(e,t,a,n,r,s,o,i,c,d,l,u,h,m,p,f){var b=this.elements;return b[0]=e,b[4]=t,b[8]=a,b[12]=n,b[1]=r,b[5]=s,b[9]=o,b[13]=i,b[2]=c,b[6]=d,b[10]=l,b[14]=u,b[3]=h,b[7]=m,b[11]=p,b[15]=f,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new f).fromArray(this.elements)},copy:function(e){var t=this.elements,a=e.elements;return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],this},copyPosition:function(e){var t=this.elements,a=e.elements;return t[12]=a[12],t[13]=a[13],t[14]=a[14],this},extractBasis:function(e,t,a){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),a.setFromMatrixColumn(this,2),this},makeBasis:function(e,t,a){return this.set(e.x,t.x,a.x,0,e.y,t.y,a.y,0,e.z,t.z,a.z,0,0,0,0,1),this},extractRotation:(u=new y,function(e){var t=this.elements,a=e.elements,n=1/u.setFromMatrixColumn(e,0).length(),r=1/u.setFromMatrixColumn(e,1).length(),s=1/u.setFromMatrixColumn(e,2).length();return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[4]=a[4]*r,t[5]=a[5]*r,t[6]=a[6]*r,t[8]=a[8]*s,t[9]=a[9]*s,t[10]=a[10]*s,this}),makeRotationFromEuler:function(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,a=e.x,n=e.y,r=e.z,s=Math.cos(a),o=Math.sin(a),i=Math.cos(n),c=Math.sin(n),d=Math.cos(r),l=Math.sin(r);if("XYZ"===e.order){var u=s*d,h=s*l,m=o*d,p=o*l;t[0]=i*d,t[4]=-i*l,t[8]=c,t[1]=h+m*c,t[5]=u-p*c,t[9]=-o*i,t[2]=p-u*c,t[6]=m+h*c,t[10]=s*i}else if("YXZ"===e.order){var f=i*d,b=i*l,y=c*d,g=c*l;t[0]=f+g*o,t[4]=y*o-b,t[8]=s*c,t[1]=s*l,t[5]=s*d,t[9]=-o,t[2]=b*o-y,t[6]=g+f*o,t[10]=s*i}else if("ZXY"===e.order){f=i*d,b=i*l,y=c*d,g=c*l;t[0]=f-g*o,t[4]=-s*l,t[8]=y+b*o,t[1]=b+y*o,t[5]=s*d,t[9]=g-f*o,t[2]=-s*c,t[6]=o,t[10]=s*i}else if("ZYX"===e.order){u=s*d,h=s*l,m=o*d,p=o*l;t[0]=i*d,t[4]=m*c-h,t[8]=u*c+p,t[1]=i*l,t[5]=p*c+u,t[9]=h*c-m,t[2]=-c,t[6]=o*i,t[10]=s*i}else if("YZX"===e.order){var v=s*i,w=s*c,A=o*i,S=o*c;t[0]=i*d,t[4]=S-v*l,t[8]=A*l+w,t[1]=l,t[5]=s*d,t[9]=-o*d,t[2]=-c*d,t[6]=w*l+A,t[10]=v-S*l}else if("XZY"===e.order){v=s*i,w=s*c,A=o*i,S=o*c;t[0]=i*d,t[4]=-l,t[8]=c*d,t[1]=v*l+S,t[5]=s*d,t[9]=w*l-A,t[2]=A*l-w,t[6]=o*d,t[10]=S*l+v}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromQuaternion:function(e){var t=this.elements,a=e._x,n=e._y,r=e._z,s=e._w,o=a+a,i=n+n,c=r+r,d=a*o,l=a*i,u=a*c,h=n*i,m=n*c,p=r*c,f=s*o,b=s*i,y=s*c;return t[0]=1-(h+p),t[4]=l-y,t[8]=u+b,t[1]=l+y,t[5]=1-(d+p),t[9]=m-f,t[2]=u-b,t[6]=m+f,t[10]=1-(d+h),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},lookAt:(c=new y,d=new y,l=new y,function(e,t,a){var n=this.elements;return l.subVectors(e,t),0===l.lengthSq()&&(l.z=1),l.normalize(),c.crossVectors(a,l),0===c.lengthSq()&&(1===Math.abs(a.z)?l.x+=1e-4:l.z+=1e-4,l.normalize(),c.crossVectors(a,l)),c.normalize(),d.crossVectors(l,c),n[0]=c.x,n[4]=d.x,n[8]=l.x,n[1]=c.y,n[5]=d.y,n[9]=l.y,n[2]=c.z,n[6]=d.z,n[10]=l.z,this}),multiply:function(e,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},premultiply:function(e){return this.multiplyMatrices(e,this)},multiplyMatrices:function(e,t){var a=e.elements,n=t.elements,r=this.elements,s=a[0],o=a[4],i=a[8],c=a[12],d=a[1],l=a[5],u=a[9],h=a[13],m=a[2],p=a[6],f=a[10],b=a[14],y=a[3],g=a[7],v=a[11],w=a[15],A=n[0],S=n[4],E=n[8],x=n[12],T=n[1],R=n[5],_=n[9],N=n[13],k=n[2],M=n[6],P=n[10],L=n[14],j=n[3],C=n[7],I=n[11],D=n[15];return r[0]=s*A+o*T+i*k+c*j,r[4]=s*S+o*R+i*M+c*C,r[8]=s*E+o*_+i*P+c*I,r[12]=s*x+o*N+i*L+c*D,r[1]=d*A+l*T+u*k+h*j,r[5]=d*S+l*R+u*M+h*C,r[9]=d*E+l*_+u*P+h*I,r[13]=d*x+l*N+u*L+h*D,r[2]=m*A+p*T+f*k+b*j,r[6]=m*S+p*R+f*M+b*C,r[10]=m*E+p*_+f*P+b*I,r[14]=m*x+p*N+f*L+b*D,r[3]=y*A+g*T+v*k+w*j,r[7]=y*S+g*R+v*M+w*C,r[11]=y*E+g*_+v*P+w*I,r[15]=y*x+g*N+v*L+w*D,this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},applyToBufferAttribute:function(){var e=new y;return function(t){for(var a=0,n=t.count;a=0?1:-1,g=1-b*b;if(g>Number.EPSILON){var v=Math.sqrt(g),w=Math.atan2(v,b*y);f=Math.sin(f*w)/v,o=Math.sin(o*w)/v}var A=o*y;if(i=i*f+u*A,c=c*f+h*A,d=d*f+m*A,l=l*f+p*A,f===1-o){var S=1/Math.sqrt(i*i+c*c+d*d+l*l);i*=S,c*=S,d*=S,l*=S}}e[t]=i,e[t+1]=c,e[t+2]=d,e[t+3]=l}}),Object.defineProperties(b.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this.onChangeCallback()}},w:{get:function(){return this._w},set:function(e){this._w=e,this.onChangeCallback()}}}),Object.assign(b.prototype,{set:function(e,t,a,n){return this._x=e,this._y=t,this._z=a,this._w=n,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this.onChangeCallback(),this},setFromEuler:function(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var a=e._x,n=e._y,r=e._z,s=e.order,o=Math.cos,i=Math.sin,c=o(a/2),d=o(n/2),l=o(r/2),u=i(a/2),h=i(n/2),m=i(r/2);return"XYZ"===s?(this._x=u*d*l+c*h*m,this._y=c*h*l-u*d*m,this._z=c*d*m+u*h*l,this._w=c*d*l-u*h*m):"YXZ"===s?(this._x=u*d*l+c*h*m,this._y=c*h*l-u*d*m,this._z=c*d*m-u*h*l,this._w=c*d*l+u*h*m):"ZXY"===s?(this._x=u*d*l-c*h*m,this._y=c*h*l+u*d*m,this._z=c*d*m+u*h*l,this._w=c*d*l-u*h*m):"ZYX"===s?(this._x=u*d*l-c*h*m,this._y=c*h*l+u*d*m,this._z=c*d*m-u*h*l,this._w=c*d*l+u*h*m):"YZX"===s?(this._x=u*d*l+c*h*m,this._y=c*h*l+u*d*m,this._z=c*d*m-u*h*l,this._w=c*d*l-u*h*m):"XZY"===s&&(this._x=u*d*l-c*h*m,this._y=c*h*l-u*d*m,this._z=c*d*m+u*h*l,this._w=c*d*l+u*h*m),!1!==t&&this.onChangeCallback(),this},setFromAxisAngle:function(e,t){var a=t/2,n=Math.sin(a);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(a),this.onChangeCallback(),this},setFromRotationMatrix:function(e){var t,a=e.elements,n=a[0],r=a[4],s=a[8],o=a[1],i=a[5],c=a[9],d=a[2],l=a[6],u=a[10],h=n+i+u;return h>0?(t=.5/Math.sqrt(h+1),this._w=.25/t,this._x=(l-c)*t,this._y=(s-d)*t,this._z=(o-r)*t):n>i&&n>u?(t=2*Math.sqrt(1+n-i-u),this._w=(l-c)/t,this._x=.25*t,this._y=(r+o)/t,this._z=(s+d)/t):i>u?(t=2*Math.sqrt(1+i-n-u),this._w=(s-d)/t,this._x=(r+o)/t,this._y=.25*t,this._z=(c+l)/t):(t=2*Math.sqrt(1+u-n-i),this._w=(o-r)/t,this._x=(s+d)/t,this._y=(c+l)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:function(){var e,t=new y;return function(a,n){return void 0===t&&(t=new y),(e=a.dot(n)+1)<1e-6?(e=0,Math.abs(a.x)>Math.abs(a.z)?t.set(-a.y,a.x,0):t.set(0,-a.z,a.y)):t.crossVectors(a,n),this._x=t.x,this._y=t.y,this._z=t.z,this._w=e,this.normalize()}}(),inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this.onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},premultiply:function(e){return this.multiplyQuaternions(e,this)},multiplyQuaternions:function(e,t){var a=e._x,n=e._y,r=e._z,s=e._w,o=t._x,i=t._y,c=t._z,d=t._w;return this._x=a*d+s*o+n*c-r*i,this._y=n*d+s*i+r*o-a*c,this._z=r*d+s*c+a*i-n*o,this._w=s*d-a*o-n*i-r*c,this.onChangeCallback(),this},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var a=this._x,n=this._y,r=this._z,s=this._w,o=s*e._w+a*e._x+n*e._y+r*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=s,this._x=a,this._y=n,this._z=r,this;var i=Math.sqrt(1-o*o);if(Math.abs(i)<.001)return this._w=.5*(s+this._w),this._x=.5*(a+this._x),this._y=.5*(n+this._y),this._z=.5*(r+this._z),this;var c=Math.atan2(i,o),d=Math.sin((1-t)*c)/i,l=Math.sin(t*c)/i;return this._w=s*d+this._w*l,this._x=a*d+this._x*l,this._y=n*d+this._y*l,this._z=r*d+this._z*l,this.onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){}}),Object.assign(y.prototype,{isVector3:!0,set:function(e,t,a){return this.x=e,this.y=t,this.z=a,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:(h=new b,function(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(h.setFromEuler(e))}),applyAxisAngle:function(){var e=new b;return function(t,a){return this.applyQuaternion(e.setFromAxisAngle(t,a))}}(),applyMatrix3:function(e){var t=this.x,a=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*a+r[6]*n,this.y=r[1]*t+r[4]*a+r[7]*n,this.z=r[2]*t+r[5]*a+r[8]*n,this},applyMatrix4:function(e){var t=this.x,a=this.y,n=this.z,r=e.elements,s=1/(r[3]*t+r[7]*a+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*a+r[8]*n+r[12])*s,this.y=(r[1]*t+r[5]*a+r[9]*n+r[13])*s,this.z=(r[2]*t+r[6]*a+r[10]*n+r[14])*s,this},applyQuaternion:function(e){var t=this.x,a=this.y,n=this.z,r=e.x,s=e.y,o=e.z,i=e.w,c=i*t+s*n-o*a,d=i*a+o*t-r*n,l=i*n+r*a-s*t,u=-r*t-s*a-o*n;return this.x=c*i+u*-r+d*-o-l*-s,this.y=d*i+u*-s+l*-r-c*-o,this.z=l*i+u*-o+c*-s-d*-r,this},project:function(){var e=new f;return function(t){return e.multiplyMatrices(t.projectionMatrix,e.getInverse(t.matrixWorld)),this.applyMatrix4(e)}}(),unproject:function(){var e=new f;return function(t){return e.multiplyMatrices(t.matrixWorld,e.getInverse(t.projectionMatrix)),this.applyMatrix4(e)}}(),transformDirection:function(e){var t=this.x,a=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*a+r[8]*n,this.y=r[1]*t+r[5]*a+r[9]*n,this.z=r[2]*t+r[6]*a+r[10]*n,this.normalize()},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){return this.multiplyScalar(1/e)},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this},clampScalar:function(){var e=new y,t=new y;return function(a,n){return e.set(a,a,a),t.set(n,n,n),this.clamp(e,t)}}(),clampLength:function(e,t){var a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(t,a)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,a){return this.subVectors(t,e).multiplyScalar(a).add(e)},cross:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)},crossVectors:function(e,t){var a=e.x,n=e.y,r=e.z,s=t.x,o=t.y,i=t.z;return this.x=n*i-r*o,this.y=r*s-a*i,this.z=a*o-n*s,this},projectOnVector:function(e){var t=e.dot(this)/e.lengthSq();return this.copy(e).multiplyScalar(t)},projectOnPlane:function(){var e=new y;return function(t){return e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e=new y;return function(t){return this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(e){var t=this.dot(e)/Math.sqrt(this.lengthSq()*e.lengthSq());return Math.acos(m.clamp(t,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,a=this.y-e.y,n=this.z-e.z;return t*t+a*a+n*n},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)},setFromSpherical:function(e){var t=Math.sin(e.phi)*e.radius;return this.x=t*Math.sin(e.theta),this.y=Math.cos(e.phi)*e.radius,this.z=t*Math.cos(e.theta),this},setFromCylindrical:function(e){return this.x=e.radius*Math.sin(e.theta),this.y=e.y,this.z=e.radius*Math.cos(e.theta),this},setFromMatrixPosition:function(e){var t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this},setFromMatrixScale:function(e){var t=this.setFromMatrixColumn(e,0).length(),a=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=a,this.z=n,this},setFromMatrixColumn:function(e,t){return this.fromArray(e.elements,4*t)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromBufferAttribute:function(e,t,a){return void 0!==a&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}}),Object.assign(g.prototype,{isMatrix3:!0,set:function(e,t,a,n,r,s,o,i,c){var d=this.elements;return d[0]=e,d[1]=n,d[2]=o,d[3]=t,d[4]=r,d[5]=i,d[6]=a,d[7]=s,d[8]=c,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(e){var t=this.elements,a=e.elements;return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],this},setFromMatrix4:function(e){var t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this},applyToBufferAttribute:function(){var e=new y;return function(t){for(var a=0,n=t.count;a2048||t.height>2048?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}(n)}),a.image=n.uuid}return t||(e.textures[this.uuid]=a),a},dispose:function(){this.dispatchEvent({type:"dispose"})},transformUv:function(e){if(300===this.mapping){if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}this.flipY&&(e.y=1-e.y)}}}),Object.defineProperty(w.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(A.prototype,{isVector4:!0,set:function(e,t,a,n){return this.x=e,this.y=t,this.z=a,this.w=n,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this.w=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,a=this.y,n=this.z,r=this.w,s=e.elements;return this.x=s[0]*t+s[4]*a+s[8]*n+s[12]*r,this.y=s[1]*t+s[5]*a+s[9]*n+s[13]*r,this.z=s[2]*t+s[6]*a+s[10]*n+s[14]*r,this.w=s[3]*t+s[7]*a+s[11]*n+s[15]*r,this},divideScalar:function(e){return this.multiplyScalar(1/e)},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,a,n,r,s=e.elements,o=s[0],i=s[4],c=s[8],d=s[1],l=s[5],u=s[9],h=s[2],m=s[6],p=s[10];if(Math.abs(i-d)<.01&&Math.abs(c-h)<.01&&Math.abs(u-m)<.01){if(Math.abs(i+d)<.1&&Math.abs(c+h)<.1&&Math.abs(u+m)<.1&&Math.abs(o+l+p-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;var f=(o+1)/2,b=(l+1)/2,y=(p+1)/2,g=(i+d)/4,v=(c+h)/4,w=(u+m)/4;return f>b&&f>y?f<.01?(a=0,n=.707106781,r=.707106781):(n=g/(a=Math.sqrt(f)),r=v/a):b>y?b<.01?(a=.707106781,n=0,r=.707106781):(a=g/(n=Math.sqrt(b)),r=w/n):y<.01?(a=.707106781,n=.707106781,r=0):(a=v/(r=Math.sqrt(y)),n=w/r),this.set(a,n,r,t),this}var A=Math.sqrt((m-u)*(m-u)+(c-h)*(c-h)+(d-i)*(d-i));return Math.abs(A)<.001&&(A=1),this.x=(m-u)/A,this.y=(c-h)/A,this.z=(d-i)/A,this.w=Math.acos((o+l+p-1)/2),this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this},clampScalar:function(){var e,t;return function(a,n){return void 0===e&&(e=new A,t=new A),e.set(a,a,a,a),t.set(n,n,n,n),this.clamp(e,t)}}(),clampLength:function(e,t){var a=this.length();return this.divideScalar(a||1).multiplyScalar(Math.max(e,Math.min(t,a)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this},lerpVectors:function(e,t,a){return this.subVectors(t,e).multiplyScalar(a).add(e)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},fromBufferAttribute:function(e,t,a){return void 0!==a&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}}),S.prototype=Object.assign(Object.create(n.prototype),{constructor:S,isWebGLRenderTarget:!0,setSize:function(e,t){this.width===e&&this.height===t||(this.width=e,this.height=t,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.width=e.width,this.height=e.height,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.depthTexture=e.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),E.prototype=Object.create(S.prototype),E.prototype.constructor=E,E.prototype.isWebGLRenderTargetCube=!0,x.prototype=Object.create(w.prototype),x.prototype.constructor=x,x.prototype.isDataTexture=!0,T.prototype=Object.create(w.prototype),T.prototype.constructor=T,T.prototype.isCubeTexture=!0,Object.defineProperty(T.prototype,"images",{get:function(){return this.image},set:function(e){this.image=e}});var R=new w,_=new T;function N(){this.seq=[],this.map={}}var k=[],M=[],P=new Float32Array(16),L=new Float32Array(9);function j(e,t,a){var n=e[0];if(n<=0||n>0)return e;var r=t*a,s=k[r];if(void 0===s&&(s=new Float32Array(r),k[r]=s),0!==t){n.toArray(s,0);for(var o=1,i=0;o!==t;++o)i+=a,e[o].toArray(s,i)}return s}function C(e,t){var a=M[t];void 0===a&&(a=new Int32Array(t),M[t]=a);for(var n=0;n!==t;++n)a[n]=e.allocTextureUnit();return a}function I(e,t){e.uniform1f(this.addr,t)}function D(e,t){e.uniform1i(this.addr,t)}function O(e,t){void 0===t.x?e.uniform2fv(this.addr,t):e.uniform2f(this.addr,t.x,t.y)}function U(e,t){void 0!==t.x?e.uniform3f(this.addr,t.x,t.y,t.z):void 0!==t.r?e.uniform3f(this.addr,t.r,t.g,t.b):e.uniform3fv(this.addr,t)}function F(e,t){void 0===t.x?e.uniform4fv(this.addr,t):e.uniform4f(this.addr,t.x,t.y,t.z,t.w)}function Z(e,t){e.uniformMatrix2fv(this.addr,!1,t.elements||t)}function H(e,t){void 0===t.elements?e.uniformMatrix3fv(this.addr,!1,t):(L.set(t.elements),e.uniformMatrix3fv(this.addr,!1,L))}function B(e,t){void 0===t.elements?e.uniformMatrix4fv(this.addr,!1,t):(P.set(t.elements),e.uniformMatrix4fv(this.addr,!1,P))}function z(e,t,a){var n=a.allocTextureUnit();e.uniform1i(this.addr,n),a.setTexture2D(t||R,n)}function q(e,t,a){var n=a.allocTextureUnit();e.uniform1i(this.addr,n),a.setTextureCube(t||_,n)}function V(e,t){e.uniform2iv(this.addr,t)}function G(e,t){e.uniform3iv(this.addr,t)}function W(e,t){e.uniform4iv(this.addr,t)}function J(e,t){e.uniform1fv(this.addr,t)}function Y(e,t){e.uniform1iv(this.addr,t)}function K(e,t){e.uniform2fv(this.addr,j(t,this.size,2))}function X(e,t){e.uniform3fv(this.addr,j(t,this.size,3))}function Q(e,t){e.uniform4fv(this.addr,j(t,this.size,4))}function $(e,t){e.uniformMatrix2fv(this.addr,!1,j(t,this.size,4))}function ee(e,t){e.uniformMatrix3fv(this.addr,!1,j(t,this.size,9))}function te(e,t){e.uniformMatrix4fv(this.addr,!1,j(t,this.size,16))}function ae(e,t,a){var n=t.length,r=C(a,n);e.uniform1iv(this.addr,r);for(var s=0;s!==n;++s)a.setTexture2D(t[s]||R,r[s])}function ne(e,t,a){var n=t.length,r=C(a,n);e.uniform1iv(this.addr,r);for(var s=0;s!==n;++s)a.setTextureCube(t[s]||_,r[s])}function re(e,t,a){this.id=e,this.addr=a,this.setValue=function(e){switch(e){case 5126:return I;case 35664:return O;case 35665:return U;case 35666:return F;case 35674:return Z;case 35675:return H;case 35676:return B;case 35678:case 36198:return z;case 35680:return q;case 5124:case 35670:return D;case 35667:case 35671:return V;case 35668:case 35672:return G;case 35669:case 35673:return W}}(t.type)}function se(e,t,a){this.id=e,this.addr=a,this.size=t.size,this.setValue=function(e){switch(e){case 5126:return J;case 35664:return K;case 35665:return X;case 35666:return Q;case 35674:return $;case 35675:return ee;case 35676:return te;case 35678:return ae;case 35680:return ne;case 5124:case 35670:return Y;case 35667:case 35671:return V;case 35668:case 35672:return G;case 35669:case 35673:return W}}(t.type)}function oe(e){this.id=e,N.call(this)}oe.prototype.setValue=function(e,t){for(var a=this.seq,n=0,r=a.length;n!==r;++n){var s=a[n];s.setValue(e,t[s.id])}};var ie=/([\w\d_]+)(\])?(\[|\.)?/g;function ce(e,t){e.seq.push(t),e.map[t.id]=t}function de(e,t,a){var n=e.name,r=n.length;for(ie.lastIndex=0;;){var s=ie.exec(n),o=ie.lastIndex,i=s[1],c="]"===s[2],d=s[3];if(c&&(i|=0),void 0===d||"["===d&&o+2===r){ce(a,void 0===d?new re(i,e,t):new se(i,e,t));break}var l=a.map[i];void 0===l&&ce(a,l=new oe(i)),a=l}}function le(e,t,a){N.call(this),this.renderer=a;for(var n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS),r=0;r>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,a){return this.r=e,this.g=t,this.b=a,this},setHSL:function(){function e(e,t,a){return a<0&&(a+=1),a>1&&(a-=1),a<1/6?e+6*(t-e)*a:a<.5?t:a<2/3?e+6*(t-e)*(2/3-a):e}return function(t,a,n){if(t=m.euclideanModulo(t,1),a=m.clamp(a,0,1),n=m.clamp(n,0,1),0===a)this.r=this.g=this.b=n;else{var r=n<=.5?n*(1+a):n+a-n*a,s=2*n-r;this.r=e(s,r,t+1/3),this.g=e(s,r,t),this.b=e(s,r,t-1/3)}return this}}(),setStyle:function(e){function t(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}var a;if(a=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(e)){var n,r=a[1],s=a[2];switch(r){case"rgb":case"rgba":if(n=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(n[1],10))/255,this.g=Math.min(255,parseInt(n[2],10))/255,this.b=Math.min(255,parseInt(n[3],10))/255,t(n[5]),this;if(n=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(n[1],10))/100,this.g=Math.min(100,parseInt(n[2],10))/100,this.b=Math.min(100,parseInt(n[3],10))/100,t(n[5]),this;break;case"hsl":case"hsla":if(n=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(s)){var o=parseFloat(n[1])/360,i=parseInt(n[2],10)/100,c=parseInt(n[3],10)/100;return t(n[5]),this.setHSL(o,i,c)}}}else if(a=/^\#([A-Fa-f0-9]+)$/.exec(e)){var d,l=(d=a[1]).length;if(3===l)return this.r=parseInt(d.charAt(0)+d.charAt(0),16)/255,this.g=parseInt(d.charAt(1)+d.charAt(1),16)/255,this.b=parseInt(d.charAt(2)+d.charAt(2),16)/255,this;if(6===l)return this.r=parseInt(d.charAt(0)+d.charAt(1),16)/255,this.g=parseInt(d.charAt(2)+d.charAt(3),16)/255,this.b=parseInt(d.charAt(4)+d.charAt(5),16)/255,this}e&&e.length>0&&(void 0!==(d=ue[e])?this.setHex(d):console.warn("THREE.Color: Unknown color "+e));return this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var a=t>0?1/t:1;return this.r=Math.pow(e.r,a),this.g=Math.pow(e.g,a),this.b=Math.pow(e.b,a),this},convertGammaToLinear:function(){var e=this.r,t=this.g,a=this.b;return this.r=e*e,this.g=t*t,this.b=a*a,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){var t,a,n=e||{h:0,s:0,l:0},r=this.r,s=this.g,o=this.b,i=Math.max(r,s,o),c=Math.min(r,s,o),d=(c+i)/2;if(c===i)t=0,a=0;else{var l=i-c;switch(a=d<=.5?l/(i+c):l/(2-i-c),i){case r:t=(s-o)/l+(s 0.0 ) {\r\n\r\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\r\n\r\n\t\t// based upon Frostbite 3 Moving to Physically-based Rendering\r\n\t\t// page 32, equation 26: E[window1]\r\n\t\t// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\n\t\t// this is intended to be used on spot and point lights who are represented as luminous intensity\r\n\t\t// but who must be converted to luminous irradiance for surface lighting calculation\r\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\r\n\t\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\r\n\t\treturn distanceFalloff * maxDistanceCutoffFactor;\r\n\r\n#else\r\n\r\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\r\n\r\n#endif\r\n\r\n\t}\r\n\r\n\treturn 1.0;\r\n\r\n}\r\n\r\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\r\n\r\n\treturn RECIPROCAL_PI * diffuseColor;\r\n\r\n} // validated\r\n\r\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\r\n\r\n\t// Original approximation by Christophe Schlick \'94\r\n\t// float fresnel = pow( 1.0 - dotLH, 5.0 );\r\n\r\n\t// Optimized variant (presented by Epic at SIGGRAPH \'13)\r\n\t// https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf\r\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\r\n\r\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\r\n\r\n} // validated\r\n\r\n// Microfacet Models for Refraction through Rough Surfaces - equation (34)\r\n// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html\r\n// alpha is "roughness squared" in Disney’s reparameterization\r\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\r\n\r\n\t// geometry term (normalized) = G(l)⋅G(v) / 4(n⋅l)(n⋅v)\r\n\t// also see #12151\r\n\r\n\tfloat a2 = pow2( alpha );\r\n\r\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\r\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\r\n\r\n\treturn 1.0 / ( gl * gv );\r\n\r\n} // validated\r\n\r\n// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2\r\n// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\r\n\r\n\tfloat a2 = pow2( alpha );\r\n\r\n\t// dotNL and dotNV are explicitly swapped. This is not a mistake.\r\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\r\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\r\n\r\n\treturn 0.5 / max( gv + gl, EPSILON );\r\n\r\n}\r\n\r\n// Microfacet Models for Refraction through Rough Surfaces - equation (33)\r\n// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html\r\n// alpha is "roughness squared" in Disney’s reparameterization\r\nfloat D_GGX( const in float alpha, const in float dotNH ) {\r\n\r\n\tfloat a2 = pow2( alpha );\r\n\r\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; // avoid alpha = 0 with dotNH = 1\r\n\r\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\r\n\r\n}\r\n\r\n// GGX Distribution, Schlick Fresnel, GGX-Smith Visibility\r\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\r\n\r\n\tfloat alpha = pow2( roughness ); // UE4\'s roughness\r\n\r\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\r\n\r\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\r\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\r\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\r\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\r\n\r\n\tvec3 F = F_Schlick( specularColor, dotLH );\r\n\r\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\r\n\r\n\tfloat D = D_GGX( alpha, dotNH );\r\n\r\n\treturn F * ( G * D );\r\n\r\n} // validated\r\n\r\n// Rect Area Light\r\n\r\n// Real-Time Polygonal-Light Shading with Linearly Transformed Cosines\r\n// by Eric Heitz, Jonathan Dupuy, Stephen Hill and David Neubelt\r\n// code: https://github.com/selfshadow/ltc_code/\r\n\r\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\r\n\r\n\tconst float LUT_SIZE = 64.0;\r\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\r\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\r\n\r\n\tfloat dotNV = saturate( dot( N, V ) );\r\n\r\n\t// texture parameterized by sqrt( GGX alpha ) and sqrt( 1 - cos( theta ) )\r\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\r\n\r\n\tuv = uv * LUT_SCALE + LUT_BIAS;\r\n\r\n\treturn uv;\r\n\r\n}\r\n\r\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\r\n\r\n\t// Real-Time Area Lighting: a Journey from Research to Production (p.102)\r\n\t// An approximation of the form factor of a horizon-clipped rectangle.\r\n\r\n\tfloat l = length( f );\r\n\r\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\r\n\r\n}\r\n\r\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\r\n\r\n\tfloat x = dot( v1, v2 );\r\n\r\n\tfloat y = abs( x );\r\n\r\n\t// rational polynomial approximation to theta / sin( theta ) / 2PI\r\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\r\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\r\n\tfloat v = a / b;\r\n\r\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\r\n\r\n\treturn cross( v1, v2 ) * theta_sintheta;\r\n\r\n}\r\n\r\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\r\n\r\n\t// bail if point is on back side of plane of light\r\n\t// assumes ccw winding order of light vertices\r\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\r\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\r\n\tvec3 lightNormal = cross( v1, v2 );\r\n\r\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\r\n\r\n\t// construct orthonormal basis around N\r\n\tvec3 T1, T2;\r\n\tT1 = normalize( V - N * dot( V, N ) );\r\n\tT2 = - cross( N, T1 ); // negated from paper; possibly due to a different handedness of world coordinate system\r\n\r\n\t// compute transform\r\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\r\n\r\n\t// transform rect\r\n\tvec3 coords[ 4 ];\r\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\r\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\r\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\r\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\r\n\r\n\t// project rect onto sphere\r\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\r\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\r\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\r\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\r\n\r\n\t// calculate vector form factor\r\n\tvec3 vectorFormFactor = vec3( 0.0 );\r\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\r\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\r\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\r\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\r\n\r\n\t// adjust for horizon clipping\r\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\r\n\r\n\r\n\r\n\treturn vec3( result );\r\n\r\n}\r\n\r\n// End Rect Area Light\r\n\r\n// ref: https://www.unrealengine.com/blog/physically-based-shading-on-mobile - environmentBRDF for GGX on mobile\r\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\r\n\r\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\r\n\r\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\r\n\r\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\r\n\r\n\tvec4 r = roughness * c0 + c1;\r\n\r\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\r\n\r\n\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\r\n\r\n\treturn specularColor * AB.x + AB.y;\r\n\r\n} // validated\r\n\r\n\r\nfloat G_BlinnPhong_Implicit( ) {\r\n\r\n\t// geometry term is (n dot l)(n dot v) / 4(n dot l)(n dot v)\r\n\treturn 0.25;\r\n\r\n}\r\n\r\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\r\n\r\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\r\n\r\n}\r\n\r\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\r\n\r\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\r\n\r\n\t//float dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\r\n\t//float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\r\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\r\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\r\n\r\n\tvec3 F = F_Schlick( specularColor, dotLH );\r\n\r\n\tfloat G = G_BlinnPhong_Implicit( );\r\n\r\n\tfloat D = D_BlinnPhong( shininess, dotNH );\r\n\r\n\treturn F * ( G * D );\r\n\r\n} // validated\r\n\r\n// source: http://simonstechblog.blogspot.ca/2011/12/microfacet-brdf.html\r\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\r\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\r\n}\r\n\r\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\r\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\r\n}\r\n',bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\r\n\r\n\tuniform sampler2D bumpMap;\r\n\tuniform float bumpScale;\r\n\r\n\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\r\n\t// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\r\n\r\n\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\r\n\r\n\tvec2 dHdxy_fwd() {\r\n\r\n\t\tvec2 dSTdx = dFdx( vUv );\r\n\t\tvec2 dSTdy = dFdy( vUv );\r\n\r\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\r\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\r\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\r\n\r\n\t\treturn vec2( dBx, dBy );\r\n\r\n\t}\r\n\r\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\r\n\r\n\t\t// Workaround for Adreno 3XX dFd*( vec3 ) bug. See #9988\r\n\r\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\r\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\r\n\t\tvec3 vN = surf_norm;\t\t// normalized\r\n\r\n\t\tvec3 R1 = cross( vSigmaY, vN );\r\n\t\tvec3 R2 = cross( vN, vSigmaX );\r\n\r\n\t\tfloat fDet = dot( vSigmaX, R1 );\r\n\r\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\r\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\r\n\r\n\t}\r\n\r\n#endif\r\n",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\r\n\r\n\tvec4 plane;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\r\n\r\n\t\tplane = clippingPlanes[ i ];\r\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\r\n\r\n\t}\r\n\r\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\r\n\r\n\t\tbool clipped = true;\r\n\r\n\t\t#pragma unroll_loop\r\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\r\n\r\n\t\t\tplane = clippingPlanes[ i ];\r\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\r\n\r\n\t\t}\r\n\r\n\t\tif ( clipped ) discard;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\r\n\r\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\r\n\t\tvarying vec3 vViewPosition;\r\n\t#endif\r\n\r\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\r\n\r\n#endif\r\n",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\r\n\tvarying vec3 vViewPosition;\r\n#endif\r\n",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\r\n\tvViewPosition = - mvPosition.xyz;\r\n#endif\r\n\r\n",color_fragment:"#ifdef USE_COLOR\r\n\r\n\tdiffuseColor.rgb *= vColor;\r\n\r\n#endif",color_pars_fragment:"#ifdef USE_COLOR\r\n\r\n\tvarying vec3 vColor;\r\n\r\n#endif\r\n",color_pars_vertex:"#ifdef USE_COLOR\r\n\r\n\tvarying vec3 vColor;\r\n\r\n#endif",color_vertex:"#ifdef USE_COLOR\r\n\r\n\tvColor.xyz = color.xyz;\r\n\r\n#endif",common:"#define PI 3.14159265359\r\n#define PI2 6.28318530718\r\n#define PI_HALF 1.5707963267949\r\n#define RECIPROCAL_PI 0.31830988618\r\n#define RECIPROCAL_PI2 0.15915494\r\n#define LOG2 1.442695\r\n#define EPSILON 1e-6\r\n\r\n#define saturate(a) clamp( a, 0.0, 1.0 )\r\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\r\n\r\nfloat pow2( const in float x ) { return x*x; }\r\nfloat pow3( const in float x ) { return x*x*x; }\r\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\r\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\r\n// expects values in the range of [0,1]x[0,1], returns values in the [0,1] range.\r\n// do not collapse into a single function per: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\r\nhighp float rand( const in vec2 uv ) {\r\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\r\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\r\n\treturn fract(sin(sn) * c);\r\n}\r\n\r\nstruct IncidentLight {\r\n\tvec3 color;\r\n\tvec3 direction;\r\n\tbool visible;\r\n};\r\n\r\nstruct ReflectedLight {\r\n\tvec3 directDiffuse;\r\n\tvec3 directSpecular;\r\n\tvec3 indirectDiffuse;\r\n\tvec3 indirectSpecular;\r\n};\r\n\r\nstruct GeometricContext {\r\n\tvec3 position;\r\n\tvec3 normal;\r\n\tvec3 viewDir;\r\n};\r\n\r\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\r\n\r\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\r\n\r\n}\r\n\r\n// http://en.wikibooks.org/wiki/GLSL_Programming/Applying_Matrix_Transformations\r\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\r\n\r\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\r\n\r\n}\r\n\r\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\r\n\r\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\r\n\r\n\treturn - distance * planeNormal + point;\r\n\r\n}\r\n\r\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\r\n\r\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\r\n\r\n}\r\n\r\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\r\n\r\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\r\n\r\n}\r\n\r\nmat3 transposeMat3( const in mat3 m ) {\r\n\r\n\tmat3 tmp;\r\n\r\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\r\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\r\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\r\n\r\n\treturn tmp;\r\n\r\n}\r\n\r\n// https://en.wikipedia.org/wiki/Relative_luminance\r\nfloat linearToRelativeLuminance( const in vec3 color ) {\r\n\r\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\r\n\r\n\treturn dot( weights, color.rgb );\r\n\r\n}\r\n",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\r\n\r\n#define cubeUV_textureSize (1024.0)\r\n\r\nint getFaceFromDirection(vec3 direction) {\r\n\tvec3 absDirection = abs(direction);\r\n\tint face = -1;\r\n\tif( absDirection.x > absDirection.z ) {\r\n\t\tif(absDirection.x > absDirection.y )\r\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\r\n\t\telse\r\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\r\n\t}\r\n\telse {\r\n\t\tif(absDirection.z > absDirection.y )\r\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\r\n\t\telse\r\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\r\n\t}\r\n\treturn face;\r\n}\r\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\r\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\r\n\r\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\r\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\r\n\tfloat dxRoughness = dFdx(roughness);\r\n\tfloat dyRoughness = dFdy(roughness);\r\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\r\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\r\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\r\n\t// Clamp the value to the max mip level counts. hard coded to 6 mips\r\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\r\n\tfloat mipLevel = 0.5 * log2(d);\r\n\treturn vec2(floor(mipLevel), fract(mipLevel));\r\n}\r\n\r\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\r\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\r\n\r\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\r\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\r\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\r\n\r\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\r\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\r\n\t// float powScale = exp2(roughnessLevel + mipLevel);\r\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\r\n\t// float scale = 1.0 / exp2(roughnessLevel + 2.0 + mipLevel);\r\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\r\n\t// float mipOffset = 0.75*(1.0 - 1.0/exp2(mipLevel))/exp2(roughnessLevel);\r\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\r\n\r\n\tbool bRes = mipLevel == 0.0;\r\n\tscale = bRes && (scale < a) ? a : scale;\r\n\r\n\tvec3 r;\r\n\tvec2 offset;\r\n\tint face = getFaceFromDirection(direction);\r\n\r\n\tfloat rcpPowScale = 1.0 / powScale;\r\n\r\n\tif( face == 0) {\r\n\t\tr = vec3(direction.x, -direction.z, direction.y);\r\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\r\n\t}\r\n\telse if( face == 1) {\r\n\t\tr = vec3(direction.y, direction.x, direction.z);\r\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\r\n\t}\r\n\telse if( face == 2) {\r\n\t\tr = vec3(direction.z, direction.x, direction.y);\r\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\r\n\t}\r\n\telse if( face == 3) {\r\n\t\tr = vec3(direction.x, direction.z, direction.y);\r\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\r\n\t}\r\n\telse if( face == 4) {\r\n\t\tr = vec3(direction.y, direction.x, -direction.z);\r\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\r\n\t}\r\n\telse {\r\n\t\tr = vec3(direction.z, -direction.x, direction.y);\r\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\r\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\r\n\t}\r\n\tr = normalize(r);\r\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\r\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\r\n\tvec2 base = offset + vec2( texelOffset );\r\n\treturn base + s * ( scale - 2.0 * texelOffset );\r\n}\r\n\r\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\r\n\r\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\r\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\r\n\tfloat r1 = floor(roughnessVal);\r\n\tfloat r2 = r1 + 1.0;\r\n\tfloat t = fract(roughnessVal);\r\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\r\n\tfloat s = mipInfo.y;\r\n\tfloat level0 = mipInfo.x;\r\n\tfloat level1 = level0 + 1.0;\r\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\r\n\r\n\t// round to nearest mipmap if we are not interpolating.\r\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\r\n\r\n\t// Tri linear interpolation.\r\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\r\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\r\n\r\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\r\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\r\n\r\n\tvec4 result = mix(color10, color20, t);\r\n\r\n\treturn vec4(result.rgb, 1.0);\r\n}\r\n\r\n#endif\r\n",defaultnormal_vertex:"vec3 transformedNormal = normalMatrix * objectNormal;\r\n\r\n#ifdef FLIP_SIDED\r\n\r\n\ttransformedNormal = - transformedNormal;\r\n\r\n#endif\r\n",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\r\n\r\n\tuniform sampler2D displacementMap;\r\n\tuniform float displacementScale;\r\n\tuniform float displacementBias;\r\n\r\n#endif\r\n",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\r\n\r\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\r\n\r\n#endif\r\n",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\r\n\r\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\r\n\r\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\r\n\r\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\r\n\r\n#endif\r\n",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\r\n\r\n\tuniform sampler2D emissiveMap;\r\n\r\n#endif\r\n",encodings_fragment:" gl_FragColor = linearToOutputTexel( gl_FragColor );\r\n",encodings_pars_fragment:"// For a discussion of what this is, please read this: http://lousodrome.net/blog/light/2013/05/26/gamma-correct-and-hdr-rendering-in-a-32-bits-buffer/\r\n\r\nvec4 LinearToLinear( in vec4 value ) {\r\n\treturn value;\r\n}\r\n\r\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\r\n\treturn vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\r\n}\r\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\r\n\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\r\n}\r\n\r\nvec4 sRGBToLinear( in vec4 value ) {\r\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\r\n}\r\nvec4 LinearTosRGB( in vec4 value ) {\r\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );\r\n}\r\n\r\nvec4 RGBEToLinear( in vec4 value ) {\r\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\r\n}\r\nvec4 LinearToRGBE( in vec4 value ) {\r\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\r\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\r\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\r\n// return vec4( value.brg, ( 3.0 + 128.0 ) / 256.0 );\r\n}\r\n\r\n// reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html\r\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\r\n\treturn vec4( value.xyz * value.w * maxRange, 1.0 );\r\n}\r\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\r\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\r\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\r\n\tM = ceil( M * 255.0 ) / 255.0;\r\n\treturn vec4( value.rgb / ( M * maxRange ), M );\r\n}\r\n\r\n// reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html\r\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\r\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\r\n}\r\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\r\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\r\n\tfloat D = max( maxRange / maxRGB, 1.0 );\r\n\tD = min( floor( D ) / 255.0, 1.0 );\r\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\r\n}\r\n\r\n// LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html\r\n\r\n// M matrix, for encoding\r\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\r\nvec4 LinearToLogLuv( in vec4 value ) {\r\n\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\r\n\tXp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\r\n\tvec4 vResult;\r\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\r\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\r\n\tvResult.w = fract(Le);\r\n\tvResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\r\n\treturn vResult;\r\n}\r\n\r\n// Inverse M matrix, for decoding\r\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\r\nvec4 LogLuvToLinear( in vec4 value ) {\r\n\tfloat Le = value.z * 255.0 + value.w;\r\n\tvec3 Xp_Y_XYZp;\r\n\tXp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\r\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\r\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\r\n\tvec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\r\n\treturn vec4( max(vRGB, 0.0), 1.0 );\r\n}\r\n",envmap_fragment:"#ifdef USE_ENVMAP\r\n\r\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\r\n\r\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\r\n\r\n\t\t// Transforming Normal Vectors with the Inverse Transformation\r\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\r\n\r\n\t\t#ifdef ENVMAP_MODE_REFLECTION\r\n\r\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\r\n\r\n\t\t#else\r\n\r\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\r\n\r\n\t\t#endif\r\n\r\n\t#else\r\n\r\n\t\tvec3 reflectVec = vReflect;\r\n\r\n\t#endif\r\n\r\n\t#ifdef ENVMAP_TYPE_CUBE\r\n\r\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\r\n\r\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\r\n\r\n\t\tvec2 sampleUV;\r\n\r\n\t\treflectVec = normalize( reflectVec );\r\n\r\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\r\n\r\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\r\n\r\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\r\n\r\n\t#elif defined( ENVMAP_TYPE_SPHERE )\r\n\r\n\t\treflectVec = normalize( reflectVec );\r\n\r\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\r\n\r\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\r\n\r\n\t#else\r\n\r\n\t\tvec4 envColor = vec4( 0.0 );\r\n\r\n\t#endif\r\n\r\n\tenvColor = envMapTexelToLinear( envColor );\r\n\r\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\r\n\r\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\r\n\r\n\t#elif defined( ENVMAP_BLENDING_MIX )\r\n\r\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\r\n\r\n\t#elif defined( ENVMAP_BLENDING_ADD )\r\n\r\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",envmap_pars_fragment:"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\r\n\tuniform float reflectivity;\r\n\tuniform float envMapIntensity;\r\n#endif\r\n\r\n#ifdef USE_ENVMAP\r\n\r\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\r\n\t\tvarying vec3 vWorldPosition;\r\n\t#endif\r\n\r\n\t#ifdef ENVMAP_TYPE_CUBE\r\n\t\tuniform samplerCube envMap;\r\n\t#else\r\n\t\tuniform sampler2D envMap;\r\n\t#endif\r\n\tuniform float flipEnvMap;\r\n\r\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\r\n\t\tuniform float refractionRatio;\r\n\t#else\r\n\t\tvarying vec3 vReflect;\r\n\t#endif\r\n\r\n#endif\r\n",envmap_pars_vertex:"#ifdef USE_ENVMAP\r\n\r\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\r\n\t\tvarying vec3 vWorldPosition;\r\n\r\n\t#else\r\n\r\n\t\tvarying vec3 vReflect;\r\n\t\tuniform float refractionRatio;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",envmap_vertex:"#ifdef USE_ENVMAP\r\n\r\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\r\n\r\n\t\tvWorldPosition = worldPosition.xyz;\r\n\r\n\t#else\r\n\r\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\r\n\r\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\r\n\r\n\t\t#ifdef ENVMAP_MODE_REFLECTION\r\n\r\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\r\n\r\n\t\t#else\r\n\r\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\r\n\r\n\t\t#endif\r\n\r\n\t#endif\r\n\r\n#endif\r\n",fog_vertex:"\r\n#ifdef USE_FOG\r\nfogDepth = -mvPosition.z;\r\n#endif",fog_pars_vertex:"#ifdef USE_FOG\r\n\r\n varying float fogDepth;\r\n\r\n#endif\r\n",fog_fragment:"#ifdef USE_FOG\r\n\r\n\t#ifdef FOG_EXP2\r\n\r\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\r\n\r\n\t#else\r\n\r\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\r\n\r\n#endif\r\n",fog_pars_fragment:"#ifdef USE_FOG\r\n\r\n\tuniform vec3 fogColor;\r\n\tvarying float fogDepth;\r\n\r\n\t#ifdef FOG_EXP2\r\n\r\n\t\tuniform float fogDensity;\r\n\r\n\t#else\r\n\r\n\t\tuniform float fogNear;\r\n\t\tuniform float fogFar;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",gradientmap_pars_fragment:"#ifdef TOON\r\n\r\n\tuniform sampler2D gradientMap;\r\n\r\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\r\n\r\n\t\t// dotNL will be from -1.0 to 1.0\r\n\t\tfloat dotNL = dot( normal, lightDirection );\r\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\r\n\r\n\t\t#ifdef USE_GRADIENTMAP\r\n\r\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\r\n\r\n\t\t#else\r\n\r\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\r\n\r\n\t\t#endif\r\n\r\n\r\n\t}\r\n\r\n#endif\r\n",lightmap_fragment:"#ifdef USE_LIGHTMAP\r\n\r\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity; // factor of PI should not be present; included here to prevent breakage\r\n\r\n#endif\r\n",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\r\n\r\n\tuniform sampler2D lightMap;\r\n\tuniform float lightMapIntensity;\r\n\r\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\r\n\r\nGeometricContext geometry;\r\ngeometry.position = mvPosition.xyz;\r\ngeometry.normal = normalize( transformedNormal );\r\ngeometry.viewDir = normalize( -mvPosition.xyz );\r\n\r\nGeometricContext backGeometry;\r\nbackGeometry.position = geometry.position;\r\nbackGeometry.normal = -geometry.normal;\r\nbackGeometry.viewDir = geometry.viewDir;\r\n\r\nvLightFront = vec3( 0.0 );\r\n\r\n#ifdef DOUBLE_SIDED\r\n\tvLightBack = vec3( 0.0 );\r\n#endif\r\n\r\nIncidentLight directLight;\r\nfloat dotNL;\r\nvec3 directLightColor_Diffuse;\r\n\r\n#if NUM_POINT_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\r\n\r\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\r\n\r\n\t\tdotNL = dot( geometry.normal, directLight.direction );\r\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\r\n\r\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#ifdef DOUBLE_SIDED\r\n\r\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#endif\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if NUM_SPOT_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\r\n\r\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\r\n\r\n\t\tdotNL = dot( geometry.normal, directLight.direction );\r\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\r\n\r\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#ifdef DOUBLE_SIDED\r\n\r\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#endif\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n\r\n#if NUM_DIR_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\r\n\r\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\r\n\r\n\t\tdotNL = dot( geometry.normal, directLight.direction );\r\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\r\n\r\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#ifdef DOUBLE_SIDED\r\n\r\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\r\n\r\n\t\t#endif\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if NUM_HEMI_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\r\n\r\n\t\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\r\n\r\n\t\t#ifdef DOUBLE_SIDED\r\n\r\n\t\t\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\r\n\r\n\t\t#endif\r\n\r\n\t}\r\n\r\n#endif\r\n",lights_pars:"uniform vec3 ambientLightColor;\r\n\r\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\r\n\r\n\tvec3 irradiance = ambientLightColor;\r\n\r\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\tirradiance *= PI;\r\n\r\n\t#endif\r\n\r\n\treturn irradiance;\r\n\r\n}\r\n\r\n#if NUM_DIR_LIGHTS > 0\r\n\r\n\tstruct DirectionalLight {\r\n\t\tvec3 direction;\r\n\t\tvec3 color;\r\n\r\n\t\tint shadow;\r\n\t\tfloat shadowBias;\r\n\t\tfloat shadowRadius;\r\n\t\tvec2 shadowMapSize;\r\n\t};\r\n\r\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\r\n\r\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\r\n\r\n\t\tdirectLight.color = directionalLight.color;\r\n\t\tdirectLight.direction = directionalLight.direction;\r\n\t\tdirectLight.visible = true;\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n#if NUM_POINT_LIGHTS > 0\r\n\r\n\tstruct PointLight {\r\n\t\tvec3 position;\r\n\t\tvec3 color;\r\n\t\tfloat distance;\r\n\t\tfloat decay;\r\n\r\n\t\tint shadow;\r\n\t\tfloat shadowBias;\r\n\t\tfloat shadowRadius;\r\n\t\tvec2 shadowMapSize;\r\n\t\tfloat shadowCameraNear;\r\n\t\tfloat shadowCameraFar;\r\n\t};\r\n\r\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\r\n\r\n\t// directLight is an out parameter as having it as a return value caused compiler errors on some devices\r\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\r\n\r\n\t\tvec3 lVector = pointLight.position - geometry.position;\r\n\t\tdirectLight.direction = normalize( lVector );\r\n\r\n\t\tfloat lightDistance = length( lVector );\r\n\r\n\t\tdirectLight.color = pointLight.color;\r\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\r\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n#if NUM_SPOT_LIGHTS > 0\r\n\r\n\tstruct SpotLight {\r\n\t\tvec3 position;\r\n\t\tvec3 direction;\r\n\t\tvec3 color;\r\n\t\tfloat distance;\r\n\t\tfloat decay;\r\n\t\tfloat coneCos;\r\n\t\tfloat penumbraCos;\r\n\r\n\t\tint shadow;\r\n\t\tfloat shadowBias;\r\n\t\tfloat shadowRadius;\r\n\t\tvec2 shadowMapSize;\r\n\t};\r\n\r\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\r\n\r\n\t// directLight is an out parameter as having it as a return value caused compiler errors on some devices\r\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\r\n\r\n\t\tvec3 lVector = spotLight.position - geometry.position;\r\n\t\tdirectLight.direction = normalize( lVector );\r\n\r\n\t\tfloat lightDistance = length( lVector );\r\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\r\n\r\n\t\tif ( angleCos > spotLight.coneCos ) {\r\n\r\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\r\n\r\n\t\t\tdirectLight.color = spotLight.color;\r\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\r\n\t\t\tdirectLight.visible = true;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdirectLight.color = vec3( 0.0 );\r\n\t\t\tdirectLight.visible = false;\r\n\r\n\t\t}\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n#if NUM_RECT_AREA_LIGHTS > 0\r\n\r\n\tstruct RectAreaLight {\r\n\t\tvec3 color;\r\n\t\tvec3 position;\r\n\t\tvec3 halfWidth;\r\n\t\tvec3 halfHeight;\r\n\t};\r\n\r\n\t// Pre-computed values of LinearTransformedCosine approximation of BRDF\r\n\t// BRDF approximation Texture is 64x64\r\n\tuniform sampler2D ltc_1; // RGBA Float\r\n\tuniform sampler2D ltc_2; // RGBA Float\r\n\r\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\r\n\r\n#endif\r\n\r\n\r\n#if NUM_HEMI_LIGHTS > 0\r\n\r\n\tstruct HemisphereLight {\r\n\t\tvec3 direction;\r\n\t\tvec3 skyColor;\r\n\t\tvec3 groundColor;\r\n\t};\r\n\r\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\r\n\r\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\r\n\r\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\r\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\r\n\r\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\r\n\r\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\t\tirradiance *= PI;\r\n\r\n\t\t#endif\r\n\r\n\t\treturn irradiance;\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n\r\n#if defined( USE_ENVMAP ) && defined( PHYSICAL )\r\n\r\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\r\n\r\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\r\n\r\n\t\t#ifdef ENVMAP_TYPE_CUBE\r\n\r\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\r\n\r\n\t\t\t// TODO: replace with properly filtered cubemaps and access the irradiance LOD level, be it the last LOD level\r\n\t\t\t// of a specular cubemap, or just the default level of a specially created irradiance cubemap.\r\n\r\n\t\t\t#ifdef TEXTURE_LOD_EXT\r\n\r\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\r\n\r\n\t\t\t#else\r\n\r\n\t\t\t\t// force the bias high to get the last LOD level as it is the most blurred.\r\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\r\n\r\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\r\n\r\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\r\n\t\t\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\r\n\r\n\t\t#else\r\n\r\n\t\t\tvec4 envMapColor = vec4( 0.0 );\r\n\r\n\t\t#endif\r\n\r\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\r\n\r\n\t}\r\n\r\n\t// taken from here: http://casual-effects.blogspot.ca/2011/08/plausible-environment-lighting-in-two.html\r\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\r\n\r\n\t\t//float envMapWidth = pow( 2.0, maxMIPLevelScalar );\r\n\t\t//float desiredMIPLevel = log2( envMapWidth * sqrt( 3.0 ) ) - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\r\n\r\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\r\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\r\n\r\n\t\t// clamp to allowable LOD ranges.\r\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\r\n\r\n\t}\r\n\r\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\r\n\r\n\t\t#ifdef ENVMAP_MODE_REFLECTION\r\n\r\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\r\n\r\n\t\t#else\r\n\r\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\r\n\r\n\t\t#endif\r\n\r\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\r\n\r\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\r\n\r\n\t\t#ifdef ENVMAP_TYPE_CUBE\r\n\r\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\r\n\r\n\t\t\t#ifdef TEXTURE_LOD_EXT\r\n\r\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\r\n\r\n\t\t\t#else\r\n\r\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\r\n\r\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\r\n\r\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\r\n\t\t\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent));\r\n\r\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\r\n\r\n\t\t\tvec2 sampleUV;\r\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\r\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\r\n\r\n\t\t\t#ifdef TEXTURE_LOD_EXT\r\n\r\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\r\n\r\n\t\t\t#else\r\n\r\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\r\n\r\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\r\n\r\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\r\n\r\n\t\t\t#ifdef TEXTURE_LOD_EXT\r\n\r\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\r\n\r\n\t\t\t#else\r\n\r\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\r\n\r\n\t\t#endif\r\n\r\n\t\treturn envMapColor.rgb * envMapIntensity;\r\n\r\n\t}\r\n\r\n#endif\r\n",lights_phong_fragment:"BlinnPhongMaterial material;\r\nmaterial.diffuseColor = diffuseColor.rgb;\r\nmaterial.specularColor = specular;\r\nmaterial.specularShininess = shininess;\r\nmaterial.specularStrength = specularStrength;\r\n",lights_phong_pars_fragment:"varying vec3 vViewPosition;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n\r\nstruct BlinnPhongMaterial {\r\n\r\n\tvec3\tdiffuseColor;\r\n\tvec3\tspecularColor;\r\n\tfloat\tspecularShininess;\r\n\tfloat\tspecularStrength;\r\n\r\n};\r\n\r\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\t#ifdef TOON\r\n\r\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\r\n\r\n\t#else\r\n\r\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\r\n\t\tvec3 irradiance = dotNL * directLight.color;\r\n\r\n\t#endif\r\n\r\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\tirradiance *= PI; // punctual light\r\n\r\n\t#endif\r\n\r\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\r\n\r\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\r\n\r\n}\r\n\r\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\r\n\r\n}\r\n\r\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\r\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\r\n\r\n#define Material_LightProbeLOD( material )\t(0)\r\n",lights_physical_fragment:"PhysicalMaterial material;\r\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\r\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\r\n#ifdef STANDARD\r\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\r\n#else\r\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\r\n\tmaterial.clearCoat = saturate( clearCoat ); // Burley clearcoat model\r\n\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\r\n#endif\r\n",lights_physical_pars_fragment:"struct PhysicalMaterial {\r\n\r\n\tvec3\tdiffuseColor;\r\n\tfloat\tspecularRoughness;\r\n\tvec3\tspecularColor;\r\n\r\n\t#ifndef STANDARD\r\n\t\tfloat clearCoat;\r\n\t\tfloat clearCoatRoughness;\r\n\t#endif\r\n\r\n};\r\n\r\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\r\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\r\n\r\n// Clear coat directional hemishperical reflectance (this approximation should be improved)\r\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\r\n\r\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\r\n\r\n}\r\n\r\n#if NUM_RECT_AREA_LIGHTS > 0\r\n\r\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\t\tvec3 normal = geometry.normal;\r\n\t\tvec3 viewDir = geometry.viewDir;\r\n\t\tvec3 position = geometry.position;\r\n\t\tvec3 lightPos = rectAreaLight.position;\r\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\r\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\r\n\t\tvec3 lightColor = rectAreaLight.color;\r\n\t\tfloat roughness = material.specularRoughness;\r\n\r\n\t\tvec3 rectCoords[ 4 ];\r\n\t\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight; // counterclockwise\r\n\t\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\r\n\t\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\r\n\t\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\r\n\r\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\r\n\r\n\t\tvec4 t1 = texture2D( ltc_1, uv );\r\n\t\tvec4 t2 = texture2D( ltc_2, uv );\r\n\r\n\t\tmat3 mInv = mat3(\r\n\t\t\tvec3( t1.x, 0, t1.y ),\r\n\t\t\tvec3( 0, 1, 0 ),\r\n\t\t\tvec3( t1.z, 0, t1.w )\r\n\t\t);\r\n\r\n\t\t// LTC Fresnel Approximation by Stephen Hill\r\n\t\t// http://blog.selfshadow.com/publications/s2016-advances/s2016_ltc_fresnel.pdf\r\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\r\n\r\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\r\n\r\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\r\n\r\n\tvec3 irradiance = dotNL * directLight.color;\r\n\r\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\tirradiance *= PI; // punctual light\r\n\r\n\t#endif\r\n\r\n\t#ifndef STANDARD\r\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\r\n\t#else\r\n\t\tfloat clearCoatDHR = 0.0;\r\n\t#endif\r\n\r\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\r\n\r\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\r\n\r\n\t#ifndef STANDARD\r\n\r\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\r\n\r\n\t#endif\r\n\r\n}\r\n\r\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\r\n\r\n}\r\n\r\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\r\n\r\n\t#ifndef STANDARD\r\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\r\n\t\tfloat dotNL = dotNV;\r\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\r\n\t#else\r\n\t\tfloat clearCoatDHR = 0.0;\r\n\t#endif\r\n\r\n\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\r\n\r\n\t#ifndef STANDARD\r\n\r\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\r\n\r\n\t#endif\r\n\r\n}\r\n\r\n#define RE_Direct\t\t\t\tRE_Direct_Physical\r\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\r\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\r\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\r\n\r\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\r\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\r\n\r\n// ref: https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\r\n\r\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\r\n\r\n}\r\n",lights_template:"\r\n\r\nGeometricContext geometry;\r\n\r\ngeometry.position = - vViewPosition;\r\ngeometry.normal = normal;\r\ngeometry.viewDir = normalize( vViewPosition );\r\n\r\nIncidentLight directLight;\r\n\r\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\r\n\r\n\tPointLight pointLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\r\n\r\n\t\tpointLight = pointLights[ i ];\r\n\r\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\r\n\r\n\t\t#ifdef USE_SHADOWMAP\r\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\r\n\t\t#endif\r\n\r\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\r\n\r\n\tSpotLight spotLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\r\n\r\n\t\tspotLight = spotLights[ i ];\r\n\r\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\r\n\r\n\t\t#ifdef USE_SHADOWMAP\r\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\r\n\t\t#endif\r\n\r\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\r\n\r\n\tDirectionalLight directionalLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\r\n\r\n\t\tdirectionalLight = directionalLights[ i ];\r\n\r\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\r\n\r\n\t\t#ifdef USE_SHADOWMAP\r\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\r\n\t\t#endif\r\n\r\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\r\n\r\n\tRectAreaLight rectAreaLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\r\n\r\n\t\trectAreaLight = rectAreaLights[ i ];\r\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#if defined( RE_IndirectDiffuse )\r\n\r\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\r\n\r\n\t#ifdef USE_LIGHTMAP\r\n\r\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\r\n\r\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\r\n\r\n\t\t\tlightMapIrradiance *= PI; // factor of PI should not be present; included here to prevent breakage\r\n\r\n\t\t#endif\r\n\r\n\t\tirradiance += lightMapIrradiance;\r\n\r\n\t#endif\r\n\r\n\t#if ( NUM_HEMI_LIGHTS > 0 )\r\n\r\n\t\t#pragma unroll_loop\r\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\r\n\r\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\r\n\r\n\t\t}\r\n\r\n\t#endif\r\n\r\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\r\n\r\n\t\t// TODO, replace 8 with the real maxMIPLevel\r\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, 8 );\r\n\r\n\t#endif\r\n\r\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\r\n\r\n#endif\r\n\r\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\r\n\r\n\t// TODO, replace 8 with the real maxMIPLevel\r\n\tvec3 radiance = getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), 8 );\r\n\r\n\t#ifndef STANDARD\r\n\t\tvec3 clearCoatRadiance = getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), 8 );\r\n\t#else\r\n\t\tvec3 clearCoatRadiance = vec3( 0.0 );\r\n\t#endif\r\n\r\n\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\r\n\r\n#endif\r\n",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\r\n\r\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\r\n\r\n#endif",logdepthbuf_pars_fragment:"#ifdef USE_LOGDEPTHBUF\r\n\r\n\tuniform float logDepthBufFC;\r\n\r\n\t#ifdef USE_LOGDEPTHBUF_EXT\r\n\r\n\t\tvarying float vFragDepth;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\r\n\r\n\t#ifdef USE_LOGDEPTHBUF_EXT\r\n\r\n\t\tvarying float vFragDepth;\r\n\r\n\t#endif\r\n\r\n\tuniform float logDepthBufFC;\r\n\r\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\r\n\r\n\t#ifdef USE_LOGDEPTHBUF_EXT\r\n\r\n\t\tvFragDepth = 1.0 + gl_Position.w;\r\n\r\n\t#else\r\n\r\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\r\n\r\n\t\tgl_Position.z *= gl_Position.w;\r\n\r\n\t#endif\r\n\r\n#endif\r\n",map_fragment:"#ifdef USE_MAP\r\n\r\n\tvec4 texelColor = texture2D( map, vUv );\r\n\r\n\ttexelColor = mapTexelToLinear( texelColor );\r\n\tdiffuseColor *= texelColor;\r\n\r\n#endif\r\n",map_pars_fragment:"#ifdef USE_MAP\r\n\r\n\tuniform sampler2D map;\r\n\r\n#endif\r\n",map_particle_fragment:"#ifdef USE_MAP\r\n\r\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\r\n\tvec4 mapTexel = texture2D( map, uv );\r\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\r\n\r\n#endif\r\n",map_particle_pars_fragment:"#ifdef USE_MAP\r\n\r\n\tuniform mat3 uvTransform;\r\n\tuniform sampler2D map;\r\n\r\n#endif\r\n",metalnessmap_fragment:"float metalnessFactor = metalness;\r\n\r\n#ifdef USE_METALNESSMAP\r\n\r\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\r\n\r\n\t// reads channel B, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\r\n\tmetalnessFactor *= texelMetalness.b;\r\n\r\n#endif\r\n",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\r\n\r\n\tuniform sampler2D metalnessMap;\r\n\r\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\r\n\r\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\r\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\r\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\r\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\r\n\r\n#endif\r\n",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\r\n\r\n\t#ifndef USE_MORPHNORMALS\r\n\r\n\tuniform float morphTargetInfluences[ 8 ];\r\n\r\n\t#else\r\n\r\n\tuniform float morphTargetInfluences[ 4 ];\r\n\r\n\t#endif\r\n\r\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\r\n\r\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\r\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\r\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\r\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\r\n\r\n\t#ifndef USE_MORPHNORMALS\r\n\r\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\r\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\r\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\r\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\r\n\r\n\t#endif\r\n\r\n#endif\r\n",normal_fragment:"#ifdef FLAT_SHADED\r\n\r\n\t// Workaround for Adreno/Nexus5 not able able to do dFdx( vViewPosition ) ...\r\n\r\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\r\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\r\n\tvec3 normal = normalize( cross( fdx, fdy ) );\r\n\r\n#else\r\n\r\n\tvec3 normal = normalize( vNormal );\r\n\r\n\t#ifdef DOUBLE_SIDED\r\n\r\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\r\n\r\n\t#endif\r\n\r\n#endif\r\n\r\n#ifdef USE_NORMALMAP\r\n\r\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\r\n\r\n#elif defined( USE_BUMPMAP )\r\n\r\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\r\n\r\n#endif\r\n",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\r\n\r\n\tuniform sampler2D normalMap;\r\n\tuniform vec2 normalScale;\r\n\r\n\t// Per-Pixel Tangent Space Normal Mapping\r\n\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\r\n\r\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\r\n\r\n\t\t// Workaround for Adreno 3XX dFd*( vec3 ) bug. See #9988\r\n\r\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\r\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\r\n\t\tvec2 st0 = dFdx( vUv.st );\r\n\t\tvec2 st1 = dFdy( vUv.st );\r\n\r\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\r\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\r\n\t\tvec3 N = normalize( surf_norm );\r\n\r\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\r\n\t\tmapN.xy = normalScale * mapN.xy;\r\n\t\tmat3 tsn = mat3( S, T, N );\r\n\t\treturn normalize( tsn * mapN );\r\n\r\n\t}\r\n\r\n#endif\r\n",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\r\n\treturn normalize( normal ) * 0.5 + 0.5;\r\n}\r\n\r\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\r\n\treturn 2.0 * rgb.xyz - 1.0;\r\n}\r\n\r\nconst float PackUpscale = 256. / 255.; // fraction -> 0..1 (including 1)\r\nconst float UnpackDownscale = 255. / 256.; // 0..1 -> fraction (excluding 1)\r\n\r\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\r\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\r\n\r\nconst float ShiftRight8 = 1. / 256.;\r\n\r\nvec4 packDepthToRGBA( const in float v ) {\r\n\tvec4 r = vec4( fract( v * PackFactors ), v );\r\n\tr.yzw -= r.xyz * ShiftRight8; // tidy overflow\r\n\treturn r * PackUpscale;\r\n}\r\n\r\nfloat unpackRGBAToDepth( const in vec4 v ) {\r\n\treturn dot( v, UnpackFactors );\r\n}\r\n\r\n// NOTE: viewZ/eyeZ is < 0 when in front of the camera per OpenGL conventions\r\n\r\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\r\n\treturn ( viewZ + near ) / ( near - far );\r\n}\r\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\r\n\treturn linearClipZ * ( near - far ) - near;\r\n}\r\n\r\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\r\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\r\n}\r\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\r\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\r\n}\r\n",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\r\n\r\n\t// Get get normal blending with premultipled, use with CustomBlending, OneFactor, OneMinusSrcAlphaFactor, AddEquation.\r\n\tgl_FragColor.rgb *= gl_FragColor.a;\r\n\r\n#endif\r\n",project_vertex:"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\r\n\r\ngl_Position = projectionMatrix * mvPosition;\r\n",dithering_fragment:"#if defined( DITHERING )\r\n\r\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\r\n\r\n#endif\r\n",dithering_pars_fragment:"#if defined( DITHERING )\r\n\r\n\t// based on https://www.shadertoy.com/view/MslGR8\r\n\tvec3 dithering( vec3 color ) {\r\n\t\t//Calculate grid position\r\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\r\n\r\n\t\t//Shift the individual colors differently, thus making it even harder to see the dithering pattern\r\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\r\n\r\n\t\t//modify shift acording to grid position.\r\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\r\n\r\n\t\t//shift the color by dither_shift\r\n\t\treturn color + dither_shift_RGB;\r\n\t}\r\n\r\n#endif\r\n",roughnessmap_fragment:"float roughnessFactor = roughness;\r\n\r\n#ifdef USE_ROUGHNESSMAP\r\n\r\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\r\n\r\n\t// reads channel G, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\r\n\troughnessFactor *= texelRoughness.g;\r\n\r\n#endif\r\n",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\r\n\r\n\tuniform sampler2D roughnessMap;\r\n\r\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\r\n\r\n\t#if NUM_DIR_LIGHTS > 0\r\n\r\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\r\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\t#if NUM_SPOT_LIGHTS > 0\r\n\r\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\r\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\t#if NUM_POINT_LIGHTS > 0\r\n\r\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\r\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\r\n\r\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\r\n\r\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\r\n\r\n\t}\r\n\r\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\r\n\r\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\r\n\r\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\r\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\r\n\r\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\r\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\r\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\r\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\r\n\r\n\t\tvec2 f = fract( uv * size + 0.5 );\r\n\r\n\t\tfloat a = mix( lb, lt, f.y );\r\n\t\tfloat b = mix( rb, rt, f.y );\r\n\t\tfloat c = mix( a, b, f.x );\r\n\r\n\t\treturn c;\r\n\r\n\t}\r\n\r\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\r\n\r\n\t\tfloat shadow = 1.0;\r\n\r\n\t\tshadowCoord.xyz /= shadowCoord.w;\r\n\t\tshadowCoord.z += shadowBias;\r\n\r\n\t\t// if ( something && something ) breaks ATI OpenGL shader compiler\r\n\t\t// if ( all( something, something ) ) using this instead\r\n\r\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\r\n\t\tbool inFrustum = all( inFrustumVec );\r\n\r\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\r\n\r\n\t\tbool frustumTest = all( frustumTestVec );\r\n\r\n\t\tif ( frustumTest ) {\r\n\r\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\r\n\r\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\r\n\r\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\r\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\r\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\r\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\r\n\r\n\t\t\tshadow = (\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\r\n\t\t\t) * ( 1.0 / 9.0 );\r\n\r\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\r\n\r\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\r\n\r\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\r\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\r\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\r\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\r\n\r\n\t\t\tshadow = (\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\r\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\r\n\t\t\t) * ( 1.0 / 9.0 );\r\n\r\n\t\t#else // no percentage-closer filtering:\r\n\r\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\r\n\r\n\t\t#endif\r\n\r\n\t\t}\r\n\r\n\t\treturn shadow;\r\n\r\n\t}\r\n\r\n\t// cubeToUV() maps a 3D direction vector suitable for cube texture mapping to a 2D\r\n\t// vector suitable for 2D texture mapping. This code uses the following layout for the\r\n\t// 2D texture:\r\n\t//\r\n\t// xzXZ\r\n\t// y Y\r\n\t//\r\n\t// Y - Positive y direction\r\n\t// y - Negative y direction\r\n\t// X - Positive x direction\r\n\t// x - Negative x direction\r\n\t// Z - Positive z direction\r\n\t// z - Negative z direction\r\n\t//\r\n\t// Source and test bed:\r\n\t// https://gist.github.com/tschw/da10c43c467ce8afd0c4\r\n\r\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\r\n\r\n\t\t// Number of texels to avoid at the edge of each square\r\n\r\n\t\tvec3 absV = abs( v );\r\n\r\n\t\t// Intersect unit cube\r\n\r\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\r\n\t\tabsV *= scaleToCube;\r\n\r\n\t\t// Apply scale to avoid seams\r\n\r\n\t\t// two texels less per square (one texel will do for NEAREST)\r\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\r\n\r\n\t\t// Unwrap\r\n\r\n\t\t// space: -1 ... 1 range for each square\r\n\t\t//\r\n\t\t// #X##\t\tdim := ( 4 , 2 )\r\n\t\t// # #\t\tcenter := ( 1 , 1 )\r\n\r\n\t\tvec2 planar = v.xy;\r\n\r\n\t\tfloat almostATexel = 1.5 * texelSizeY;\r\n\t\tfloat almostOne = 1.0 - almostATexel;\r\n\r\n\t\tif ( absV.z >= almostOne ) {\r\n\r\n\t\t\tif ( v.z > 0.0 )\r\n\t\t\t\tplanar.x = 4.0 - v.x;\r\n\r\n\t\t} else if ( absV.x >= almostOne ) {\r\n\r\n\t\t\tfloat signX = sign( v.x );\r\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\r\n\r\n\t\t} else if ( absV.y >= almostOne ) {\r\n\r\n\t\t\tfloat signY = sign( v.y );\r\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\r\n\t\t\tplanar.y = v.z * signY - 2.0;\r\n\r\n\t\t}\r\n\r\n\t\t// Transform to UV space\r\n\r\n\t\t// scale := 0.5 / dim\r\n\t\t// translate := ( center + 0.5 ) / dim\r\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\r\n\r\n\t}\r\n\r\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\r\n\r\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\r\n\r\n\t\t// for point lights, the uniform @vShadowCoord is re-purposed to hold\r\n\t\t// the vector from the light to the world-space position of the fragment.\r\n\t\tvec3 lightToPosition = shadowCoord.xyz;\r\n\r\n\t\t// dp = normalized distance from light to fragment position\r\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); // need to clamp?\r\n\t\tdp += shadowBias;\r\n\r\n\t\t// bd3D = base direction 3D\r\n\t\tvec3 bd3D = normalize( lightToPosition );\r\n\r\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\r\n\r\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\r\n\r\n\t\t\treturn (\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\r\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\r\n\t\t\t) * ( 1.0 / 9.0 );\r\n\r\n\t\t#else // no percentage-closer filtering\r\n\r\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\r\n\r\n\t\t#endif\r\n\r\n\t}\r\n\r\n#endif\r\n",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\r\n\r\n\t#if NUM_DIR_LIGHTS > 0\r\n\r\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\r\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\t#if NUM_SPOT_LIGHTS > 0\r\n\r\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\r\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\t#if NUM_POINT_LIGHTS > 0\r\n\r\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\r\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\r\n\r\n\t#endif\r\n\r\n\r\n\r\n#endif\r\n",shadowmap_vertex:"#ifdef USE_SHADOWMAP\r\n\r\n\t#if NUM_DIR_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\r\n\r\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\t#if NUM_SPOT_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\r\n\r\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\t#if NUM_POINT_LIGHTS > 0\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\r\n\r\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\r\n\r\n#endif\r\n",shadowmask_pars_fragment:"float getShadowMask() {\r\n\r\n\tfloat shadow = 1.0;\r\n\r\n\t#ifdef USE_SHADOWMAP\r\n\r\n\t#if NUM_DIR_LIGHTS > 0\r\n\r\n\tDirectionalLight directionalLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\r\n\r\n\t\tdirectionalLight = directionalLights[ i ];\r\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\t#if NUM_SPOT_LIGHTS > 0\r\n\r\n\tSpotLight spotLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\r\n\r\n\t\tspotLight = spotLights[ i ];\r\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\t#if NUM_POINT_LIGHTS > 0\r\n\r\n\tPointLight pointLight;\r\n\r\n\t#pragma unroll_loop\r\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\r\n\r\n\t\tpointLight = pointLights[ i ];\r\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\r\n\r\n\t}\r\n\r\n\t#endif\r\n\r\n\r\n\r\n\t#endif\r\n\r\n\treturn shadow;\r\n\r\n}\r\n",skinbase_vertex:"#ifdef USE_SKINNING\r\n\r\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\r\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\r\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\r\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\r\n\r\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\r\n\r\n\tuniform mat4 bindMatrix;\r\n\tuniform mat4 bindMatrixInverse;\r\n\r\n\t#ifdef BONE_TEXTURE\r\n\r\n\t\tuniform sampler2D boneTexture;\r\n\t\tuniform int boneTextureSize;\r\n\r\n\t\tmat4 getBoneMatrix( const in float i ) {\r\n\r\n\t\t\tfloat j = i * 4.0;\r\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\r\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\r\n\r\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\r\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\r\n\r\n\t\t\ty = dy * ( y + 0.5 );\r\n\r\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\r\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\r\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\r\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\r\n\r\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\r\n\r\n\t\t\treturn bone;\r\n\r\n\t\t}\r\n\r\n\t#else\r\n\r\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\r\n\r\n\t\tmat4 getBoneMatrix( const in float i ) {\r\n\r\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\r\n\t\t\treturn bone;\r\n\r\n\t\t}\r\n\r\n\t#endif\r\n\r\n#endif\r\n",skinning_vertex:"#ifdef USE_SKINNING\r\n\r\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\r\n\r\n\tvec4 skinned = vec4( 0.0 );\r\n\tskinned += boneMatX * skinVertex * skinWeight.x;\r\n\tskinned += boneMatY * skinVertex * skinWeight.y;\r\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\r\n\tskinned += boneMatW * skinVertex * skinWeight.w;\r\n\r\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\r\n\r\n#endif\r\n",skinnormal_vertex:"#ifdef USE_SKINNING\r\n\r\n\tmat4 skinMatrix = mat4( 0.0 );\r\n\tskinMatrix += skinWeight.x * boneMatX;\r\n\tskinMatrix += skinWeight.y * boneMatY;\r\n\tskinMatrix += skinWeight.z * boneMatZ;\r\n\tskinMatrix += skinWeight.w * boneMatW;\r\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\r\n\r\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\r\n\r\n#endif\r\n",specularmap_fragment:"float specularStrength;\r\n\r\n#ifdef USE_SPECULARMAP\r\n\r\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\r\n\tspecularStrength = texelSpecular.r;\r\n\r\n#else\r\n\r\n\tspecularStrength = 1.0;\r\n\r\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\r\n\r\n\tuniform sampler2D specularMap;\r\n\r\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\r\n\r\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\r\n\r\n#endif\r\n",tonemapping_pars_fragment:"#ifndef saturate\r\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\r\n#endif\r\n\r\nuniform float toneMappingExposure;\r\nuniform float toneMappingWhitePoint;\r\n\r\n// exposure only\r\nvec3 LinearToneMapping( vec3 color ) {\r\n\r\n\treturn toneMappingExposure * color;\r\n\r\n}\r\n\r\n// source: https://www.cs.utah.edu/~reinhard/cdrom/\r\nvec3 ReinhardToneMapping( vec3 color ) {\r\n\r\n\tcolor *= toneMappingExposure;\r\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\r\n\r\n}\r\n\r\n// source: http://filmicgames.com/archives/75\r\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\r\nvec3 Uncharted2ToneMapping( vec3 color ) {\r\n\r\n\t// John Hable's filmic operator from Uncharted 2 video game\r\n\tcolor *= toneMappingExposure;\r\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\r\n\r\n}\r\n\r\n// source: http://filmicgames.com/archives/75\r\nvec3 OptimizedCineonToneMapping( vec3 color ) {\r\n\r\n\t// optimized filmic operator by Jim Hejl and Richard Burgess-Dawson\r\n\tcolor *= toneMappingExposure;\r\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\r\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\r\n\r\n}\r\n",uv_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\r\n\r\n\tvarying vec2 vUv;\r\n\r\n#endif",uv_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\r\n\r\n\tvarying vec2 vUv;\r\n\tuniform mat3 uvTransform;\r\n\r\n#endif\r\n",uv_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\r\n\r\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\r\n\r\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\r\n\r\n\tvarying vec2 vUv2;\r\n\r\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\r\n\r\n\tattribute vec2 uv2;\r\n\tvarying vec2 vUv2;\r\n\r\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\r\n\r\n\tvUv2 = uv2;\r\n\r\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\r\n\r\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\r\n\r\n#endif\r\n",cube_frag:"uniform samplerCube tCube;\r\nuniform float tFlip;\r\nuniform float opacity;\r\n\r\nvarying vec3 vWorldPosition;\r\n\r\nvoid main() {\r\n\r\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\r\n\tgl_FragColor.a *= opacity;\r\n\r\n}\r\n",cube_vert:"varying vec3 vWorldPosition;\r\n\r\n#include \r\n\r\nvoid main() {\r\n\r\n\tvWorldPosition = transformDirection( position, modelMatrix );\r\n\r\n\t#include \r\n\t#include \r\n\r\n\tgl_Position.z = gl_Position.w; // set z to camera.far\r\n\r\n}\r\n",depth_frag:"#if DEPTH_PACKING == 3200\r\n\r\n\tuniform float opacity;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( 1.0 );\r\n\r\n\t#if DEPTH_PACKING == 3200\r\n\r\n\t\tdiffuseColor.a = opacity;\r\n\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\r\n\t#if DEPTH_PACKING == 3200\r\n\r\n\t\tgl_FragColor = vec4( vec3( gl_FragCoord.z ), opacity );\r\n\r\n\t#elif DEPTH_PACKING == 3201\r\n\r\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\r\n\r\n\t#endif\r\n\r\n}\r\n",depth_vert:"#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\t#include \r\n\r\n\t#ifdef USE_DISPLACEMENTMAP\r\n\r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",distanceRGBA_frag:"#define DISTANCE\r\n\r\nuniform vec3 referencePosition;\r\nuniform float nearDistance;\r\nuniform float farDistance;\r\nvarying vec3 vWorldPosition;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main () {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( 1.0 );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tfloat dist = length( vWorldPosition - referencePosition );\r\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\r\n\tdist = saturate( dist ); // clamp to [ 0, 1 ]\r\n\r\n\tgl_FragColor = packDepthToRGBA( dist );\r\n\r\n}\r\n",distanceRGBA_vert:"#define DISTANCE\r\n\r\nvarying vec3 vWorldPosition;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\t#include \r\n\r\n\t#ifdef USE_DISPLACEMENTMAP\r\n\r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tvWorldPosition = worldPosition.xyz;\r\n\r\n}\r\n",equirect_frag:"uniform sampler2D tEquirect;\r\n\r\nvarying vec3 vWorldPosition;\r\n\r\n#include \r\n\r\nvoid main() {\r\n\r\n\tvec3 direction = normalize( vWorldPosition );\r\n\r\n\tvec2 sampleUV;\r\n\r\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\r\n\r\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\r\n\r\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\r\n\r\n}\r\n",equirect_vert:"varying vec3 vWorldPosition;\r\n\r\n#include \r\n\r\nvoid main() {\r\n\r\n\tvWorldPosition = transformDirection( position, modelMatrix );\r\n\r\n\t#include \r\n\t#include \r\n\r\n}\r\n",linedashed_frag:"uniform vec3 diffuse;\r\nuniform float opacity;\r\n\r\nuniform float dashSize;\r\nuniform float totalSize;\r\n\r\nvarying float vLineDistance;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\r\n\r\n\t\tdiscard;\r\n\r\n\t}\r\n\r\n\tvec3 outgoingLight = vec3( 0.0 );\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\r\n\t#include \r\n\t#include \r\n\r\n\toutgoingLight = diffuseColor.rgb; // simple shader\r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",linedashed_vert:"uniform float scale;\r\nattribute float lineDistance;\r\n\r\nvarying float vLineDistance;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvLineDistance = scale * lineDistance;\r\n\r\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\r\n\tgl_Position = projectionMatrix * mvPosition;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshbasic_frag:"uniform vec3 diffuse;\r\nuniform float opacity;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\r\n\r\n\t// accumulation (baked indirect lighting only)\r\n\t#ifdef USE_LIGHTMAP\r\n\r\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\r\n\r\n\t#else\r\n\r\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\r\n\r\n\t#endif\r\n\r\n\t// modulation\r\n\t#include \r\n\r\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\r\n\r\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\r\n\r\n\t#include \r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshbasic_vert:"#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#ifdef USE_ENVMAP\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshlambert_frag:"uniform vec3 diffuse;\r\nuniform vec3 emissive;\r\nuniform float opacity;\r\n\r\nvarying vec3 vLightFront;\r\n\r\n#ifdef DOUBLE_SIDED\r\n\r\n\tvarying vec3 vLightBack;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\r\n\tvec3 totalEmissiveRadiance = emissive;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t// accumulation\r\n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\r\n\r\n\t#include \r\n\r\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\r\n\r\n\t#ifdef DOUBLE_SIDED\r\n\r\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\r\n\r\n\t#else\r\n\r\n\t\treflectedLight.directDiffuse = vLightFront;\r\n\r\n\t#endif\r\n\r\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\r\n\r\n\t// modulation\r\n\t#include \r\n\r\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\r\n\r\n\t#include \r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshlambert_vert:"#define LAMBERT\r\n\r\nvarying vec3 vLightFront;\r\n\r\n#ifdef DOUBLE_SIDED\r\n\r\n\tvarying vec3 vLightBack;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshphong_frag:"#define PHONG\r\n\r\nuniform vec3 diffuse;\r\nuniform vec3 emissive;\r\nuniform vec3 specular;\r\nuniform float shininess;\r\nuniform float opacity;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\r\n\tvec3 totalEmissiveRadiance = emissive;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t// accumulation\r\n\t#include \r\n\t#include \r\n\r\n\t// modulation\r\n\t#include \r\n\r\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\r\n\r\n\t#include \r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshphong_vert:"#define PHONG\r\n\r\nvarying vec3 vViewPosition;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\r\n\r\n\tvNormal = normalize( transformedNormal );\r\n\r\n#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tvViewPosition = - mvPosition.xyz;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshphysical_frag:"#define PHYSICAL\r\n\r\nuniform vec3 diffuse;\r\nuniform vec3 emissive;\r\nuniform float roughness;\r\nuniform float metalness;\r\nuniform float opacity;\r\n\r\n#ifndef STANDARD\r\n\tuniform float clearCoat;\r\n\tuniform float clearCoatRoughness;\r\n#endif\r\n\r\nvarying vec3 vViewPosition;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\r\n\tvec3 totalEmissiveRadiance = emissive;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t// accumulation\r\n\t#include \r\n\t#include \r\n\r\n\t// modulation\r\n\t#include \r\n\r\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",meshphysical_vert:"#define PHYSICAL\r\n\r\nvarying vec3 vViewPosition;\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\r\n\r\n\tvNormal = normalize( transformedNormal );\r\n\r\n#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\tvViewPosition = - mvPosition.xyz;\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",normal_frag:"#define NORMAL\r\n\r\nuniform float opacity;\r\n\r\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\n\tvarying vec3 vViewPosition;\r\n\r\n#endif\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\r\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\r\n\r\n}\r\n",normal_vert:"#define NORMAL\r\n\r\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\n\tvarying vec3 vViewPosition;\r\n\r\n#endif\r\n\r\n#ifndef FLAT_SHADED\r\n\r\n\tvarying vec3 vNormal;\r\n\r\n#endif\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\r\n\r\n\tvNormal = normalize( transformedNormal );\r\n\r\n#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\n\tvViewPosition = - mvPosition.xyz;\r\n\r\n#endif\r\n\r\n}\r\n",points_frag:"uniform vec3 diffuse;\r\nuniform float opacity;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\r\n\tvec3 outgoingLight = vec3( 0.0 );\r\n\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\toutgoingLight = diffuseColor.rgb;\r\n\r\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",points_vert:"uniform float size;\r\nuniform float scale;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n\t#ifdef USE_SIZEATTENUATION\r\n\t\tgl_PointSize = size * ( scale / - mvPosition.z );\r\n\t#else\r\n\t\tgl_PointSize = size;\r\n\t#endif\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n",shadow_frag:"uniform vec3 color;\r\nuniform float opacity;\r\n\r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\r\n\r\n\t#include \r\n\r\n}\r\n",shadow_vert:"#include \r\n#include \r\n\r\nvoid main() {\r\n\r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\t#include \r\n\r\n}\r\n"},be={basic:{uniforms:pe.merge([me.common,me.specularmap,me.envmap,me.aomap,me.lightmap,me.fog]),vertexShader:fe.meshbasic_vert,fragmentShader:fe.meshbasic_frag},lambert:{uniforms:pe.merge([me.common,me.specularmap,me.envmap,me.aomap,me.lightmap,me.emissivemap,me.fog,me.lights,{emissive:{value:new he(0)}}]),vertexShader:fe.meshlambert_vert,fragmentShader:fe.meshlambert_frag},phong:{uniforms:pe.merge([me.common,me.specularmap,me.envmap,me.aomap,me.lightmap,me.emissivemap,me.bumpmap,me.normalmap,me.displacementmap,me.gradientmap,me.fog,me.lights,{emissive:{value:new he(0)},specular:{value:new he(1118481)},shininess:{value:30}}]),vertexShader:fe.meshphong_vert,fragmentShader:fe.meshphong_frag},standard:{uniforms:pe.merge([me.common,me.envmap,me.aomap,me.lightmap,me.emissivemap,me.bumpmap,me.normalmap,me.displacementmap,me.roughnessmap,me.metalnessmap,me.fog,me.lights,{emissive:{value:new he(0)},roughness:{value:.5},metalness:{value:.5},envMapIntensity:{value:1}}]),vertexShader:fe.meshphysical_vert,fragmentShader:fe.meshphysical_frag},points:{uniforms:pe.merge([me.points,me.fog]),vertexShader:fe.points_vert,fragmentShader:fe.points_frag},dashed:{uniforms:pe.merge([me.common,me.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:fe.linedashed_vert,fragmentShader:fe.linedashed_frag},depth:{uniforms:pe.merge([me.common,me.displacementmap]),vertexShader:fe.depth_vert,fragmentShader:fe.depth_frag},normal:{uniforms:pe.merge([me.common,me.bumpmap,me.normalmap,me.displacementmap,{opacity:{value:1}}]),vertexShader:fe.normal_vert,fragmentShader:fe.normal_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:fe.cube_vert,fragmentShader:fe.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:fe.equirect_vert,fragmentShader:fe.equirect_frag},distanceRGBA:{uniforms:pe.merge([me.common,me.displacementmap,{referencePosition:{value:new y},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:fe.distanceRGBA_vert,fragmentShader:fe.distanceRGBA_frag},shadow:{uniforms:pe.merge([me.lights,me.fog,{color:{value:new he(0)},opacity:{value:1}}]),vertexShader:fe.shadow_vert,fragmentShader:fe.shadow_frag}};function ye(e,t,a,n,r,s,o,i,c){w.call(this,e,t,a,n,r,s,o,i,c),this.needsUpdate=!0}function ge(e,t,a,n,r){var s,o,i,c,d,l,u=new y,h=new b,m=new y;function p(){var e=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),a=new Uint16Array([0,1,2,0,2,3]);s=t.createBuffer(),o=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,s),t.bufferData(t.ARRAY_BUFFER,e,t.STATIC_DRAW),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,o),t.bufferData(t.ELEMENT_ARRAY_BUFFER,a,t.STATIC_DRAW),i=function(){var e=t.createProgram(),a=t.createShader(t.VERTEX_SHADER),n=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(a,["precision "+r.precision+" float;","#define SHADER_NAME SpriteMaterial","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform float rotation;","uniform vec2 center;","uniform vec2 scale;","uniform vec2 uvOffset;","uniform vec2 uvScale;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","varying float fogDepth;","void main() {","\tvUV = uvOffset + uv * uvScale;","\tvec2 alignedPosition = ( position - center ) * scale;","\tvec2 rotatedPosition;","\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;","\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;","\tvec4 mvPosition;","\tmvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );","\tmvPosition.xy += rotatedPosition;","\tgl_Position = projectionMatrix * mvPosition;","\tfogDepth = - mvPosition.z;","}"].join("\n")),t.shaderSource(n,["precision "+r.precision+" float;","#define SHADER_NAME SpriteMaterial","uniform vec3 color;","uniform sampler2D map;","uniform float opacity;","uniform int fogType;","uniform vec3 fogColor;","uniform float fogDensity;","uniform float fogNear;","uniform float fogFar;","uniform float alphaTest;","varying vec2 vUV;","varying float fogDepth;","void main() {","\tvec4 texture = texture2D( map, vUV );","\tgl_FragColor = vec4( color * texture.xyz, texture.a * opacity );","\tif ( gl_FragColor.a < alphaTest ) discard;","\tif ( fogType > 0 ) {","\t\tfloat fogFactor = 0.0;","\t\tif ( fogType == 1 ) {","\t\t\tfogFactor = smoothstep( fogNear, fogFar, fogDepth );","\t\t} else {","\t\t\tconst float LOG2 = 1.442695;","\t\t\tfogFactor = exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 );","\t\t\tfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","\t\t}","\t\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );","\t}","}"].join("\n")),t.compileShader(a),t.compileShader(n),t.attachShader(e,a),t.attachShader(e,n),t.linkProgram(e),e}(),c={position:t.getAttribLocation(i,"position"),uv:t.getAttribLocation(i,"uv")},d={uvOffset:t.getUniformLocation(i,"uvOffset"),uvScale:t.getUniformLocation(i,"uvScale"),rotation:t.getUniformLocation(i,"rotation"),center:t.getUniformLocation(i,"center"),scale:t.getUniformLocation(i,"scale"),color:t.getUniformLocation(i,"color"),map:t.getUniformLocation(i,"map"),opacity:t.getUniformLocation(i,"opacity"),modelViewMatrix:t.getUniformLocation(i,"modelViewMatrix"),projectionMatrix:t.getUniformLocation(i,"projectionMatrix"),fogType:t.getUniformLocation(i,"fogType"),fogDensity:t.getUniformLocation(i,"fogDensity"),fogNear:t.getUniformLocation(i,"fogNear"),fogFar:t.getUniformLocation(i,"fogFar"),fogColor:t.getUniformLocation(i,"fogColor"),fogDepth:t.getUniformLocation(i,"fogDepth"),alphaTest:t.getUniformLocation(i,"alphaTest")};var n=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");n.width=8,n.height=8;var u=n.getContext("2d");u.fillStyle="white",u.fillRect(0,0,8,8),l=new ye(n)}function f(e,t){return e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:t.id-e.id}this.render=function(r,b,y){if(0!==r.length){void 0===i&&p(),a.useProgram(i),a.initAttributes(),a.enableAttribute(c.position),a.enableAttribute(c.uv),a.disableUnusedAttributes(),a.disable(t.CULL_FACE),a.enable(t.BLEND),t.bindBuffer(t.ARRAY_BUFFER,s),t.vertexAttribPointer(c.position,2,t.FLOAT,!1,16,0),t.vertexAttribPointer(c.uv,2,t.FLOAT,!1,16,8),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,o),t.uniformMatrix4fv(d.projectionMatrix,!1,y.projectionMatrix.elements),a.activeTexture(t.TEXTURE0),t.uniform1i(d.map,0);var g=0,v=0,w=b.fog;w?(t.uniform3f(d.fogColor,w.color.r,w.color.g,w.color.b),w.isFog?(t.uniform1f(d.fogNear,w.near),t.uniform1f(d.fogFar,w.far),t.uniform1i(d.fogType,1),g=1,v=1):w.isFogExp2&&(t.uniform1f(d.fogDensity,w.density),t.uniform1i(d.fogType,2),g=2,v=2)):(t.uniform1i(d.fogType,0),g=0,v=0);for(var A=0,S=r.length;A0:i&&i.isGeometry&&(f=i.morphTargets&&i.morphTargets.length>0)),t.isSkinnedMesh&&!1===a.skinning&&console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",t);var b=0;f&&(b|=1),t.isSkinnedMesh&&a.skinning&&(b|=2),c=m[b]}if(e.localClippingEnabled&&!0===a.clipShadows&&0!==a.clippingPlanes.length){var y=c.uuid,g=a.uuid,v=u[y];void 0===v&&(v={},u[y]=v);var w=v[g];void 0===w&&(w=c.clone(),v[g]=w),c=w}return c.visible=a.visible,c.wireframe=a.wireframe,c.side=null!=a.shadowSide?a.shadowSide:h[a.side],c.clipShadows=a.clipShadows,c.clippingPlanes=a.clippingPlanes,c.clipIntersection=a.clipIntersection,c.wireframeLinewidth=a.wireframeLinewidth,c.linewidth=a.linewidth,n&&c.isMeshDistanceMaterial&&(c.referencePosition.copy(r),c.nearDistance=s,c.farDistance=o),c}function N(a,r,s,o){if(!1!==a.visible){if(a.layers.test(r.layers)&&(a.isMesh||a.isLine||a.isPoints)&&a.castShadow&&(!a.frustumCulled||n.intersectsObject(a))){a.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,a.matrixWorld);var i=t.update(a),d=a.material;if(Array.isArray(d))for(var l=i.groups,u=0,h=l.length;u0&&(a.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(a.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(a.wireframe=this.wireframe),this.wireframeLinewidth>1&&(a.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(a.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(a.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(a.morphTargets=!0),!0===this.skinning&&(a.skinning=!0),!1===this.visible&&(a.visible=!1),"{}"!==JSON.stringify(this.userData)&&(a.userData=this.userData),t){var r=n(e.textures),s=n(e.images);r.length>0&&(a.textures=r),s.length>0&&(a.images=s)}return a},clone:function(){return(new this.constructor).copy(this)},copy:function(e){this.name=e.name,this.fog=e.fog,this.lights=e.lights,this.blending=e.blending,this.side=e.side,this.flatShading=e.flatShading,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.premultipliedAlpha=e.premultipliedAlpha,this.overdraw=e.overdraw,this.visible=e.visible,this.userData=JSON.parse(JSON.stringify(e.userData)),this.clipShadows=e.clipShadows,this.clipIntersection=e.clipIntersection;var t=e.clippingPlanes,a=null;if(null!==t){var n=t.length;a=new Array(n);for(var r=0;r!==n;++r)a[r]=t[r].clone()}return this.clippingPlanes=a,this.shadowSide=e.shadowSide,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Ne.prototype=Object.create(_e.prototype),Ne.prototype.constructor=Ne,Ne.prototype.isMeshDepthMaterial=!0,Ne.prototype.copy=function(e){return _e.prototype.copy.call(this,e),this.depthPacking=e.depthPacking,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this},ke.prototype=Object.create(_e.prototype),ke.prototype.constructor=ke,ke.prototype.isMeshDistanceMaterial=!0,ke.prototype.copy=function(e){return _e.prototype.copy.call(this,e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this},Object.assign(Me.prototype,{isBox3:!0,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromArray:function(e){for(var t=1/0,a=1/0,n=1/0,r=-1/0,s=-1/0,o=-1/0,i=0,c=e.length;ir&&(r=d),l>s&&(s=l),u>o&&(o=u)}return this.min.set(t,a,n),this.max.set(r,s,o),this},setFromBufferAttribute:function(e){for(var t=1/0,a=1/0,n=1/0,r=-1/0,s=-1/0,o=-1/0,i=0,c=e.count;ir&&(r=d),l>s&&(s=l),u>o&&(o=u)}return this.min.set(t,a,n),this.max.set(r,s,o),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,a=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return(t||new y).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},intersectsSphere:(we=new y,function(e){return this.clampPoint(e.center,we),we.distanceToSquared(e.center)<=e.radius*e.radius}),intersectsPlane:function(e){var t,a;return e.normal.x>0?(t=e.normal.x*this.min.x,a=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,a=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,a+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,a+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,a+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,a+=e.normal.z*this.min.z),t<=e.constant&&a>=e.constant},intersectsTriangle:function(){var e=new y,t=new y,a=new y,n=new y,r=new y,s=new y,o=new y,i=new y,c=new y,d=new y;function l(n){var r,s;for(r=0,s=n.length-3;r<=s;r+=3){o.fromArray(n,r);var i=c.x*Math.abs(o.x)+c.y*Math.abs(o.y)+c.z*Math.abs(o.z),d=e.dot(o),l=t.dot(o),u=a.dot(o);if(Math.max(-Math.max(d,l,u),Math.min(d,l,u))>i)return!1}return!0}return function(o){if(this.isEmpty())return!1;this.getCenter(i),c.subVectors(this.max,i),e.subVectors(o.a,i),t.subVectors(o.b,i),a.subVectors(o.c,i),n.subVectors(t,e),r.subVectors(a,t),s.subVectors(e,a);var u=[0,-n.z,n.y,0,-r.z,r.y,0,-s.z,s.y,n.z,0,-n.x,r.z,0,-r.x,s.z,0,-s.x,-n.y,n.x,0,-r.y,r.x,0,-s.y,s.x,0];return!!l(u)&&(!!l(u=[1,0,0,0,1,0,0,0,1])&&(d.crossVectors(n,r),l(u=[d.x,d.y,d.z])))}}(),clampPoint:function(e,t){return(t||new y).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new y;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),getBoundingSphere:function(){var e=new y;return function(t){var a=t||new Pe;return this.getCenter(a.center),a.radius=.5*this.getSize(e).length(),a}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:(ve=[new y,new y,new y,new y,new y,new y,new y,new y],function(e){return this.isEmpty()||(ve[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ve[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ve[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ve[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ve[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ve[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ve[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ve[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ve)),this}),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}),Object.assign(Pe.prototype,{set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:(Ae=new Me,function(e,t){var a=this.center;void 0!==t?a.copy(t):Ae.setFromPoints(e).getCenter(a);for(var n=0,r=0,s=e.length;rthis.radius*this.radius&&(n.sub(this.center).normalize(),n.multiplyScalar(this.radius).add(this.center)),n},getBoundingBox:function(e){var t=e||new Me;return t.set(this.center,this.center),t.expandByScalar(this.radius),t},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius}}),Object.assign(Le.prototype,{set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,a,n){return this.normal.set(e,t,a),this.constant=n,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(){var e=new y,t=new y;return function(a,n,r){var s=e.subVectors(r,n).cross(t.subVectors(a,n)).normalize();return this.setFromNormalAndCoplanarPoint(s,a),this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return(t||new y).copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)},intersectLine:function(){var e=new y;return function(t,a){var n=a||new y,r=t.delta(e),s=this.normal.dot(r);if(0===s)return 0===this.distanceToPoint(t.start)?n.copy(t.start):void 0;var o=-(t.start.dot(this.normal)+this.constant)/s;return o<0||o>1?void 0:n.copy(r).multiplyScalar(o).add(t.start)}}(),intersectsLine:function(e){var t=this.distanceToPoint(e.start),a=this.distanceToPoint(e.end);return t<0&&a>0||a<0&&t>0},intersectsBox:function(e){return e.intersectsPlane(this)},intersectsSphere:function(e){return e.intersectsPlane(this)},coplanarPoint:function(e){return(e||new y).copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var e=new y,t=new g;return function(a,n){var r=n||t.getNormalMatrix(a),s=this.coplanarPoint(e).applyMatrix4(a),o=this.normal.applyMatrix3(r).normalize();return this.constant=-s.dot(o),this}}(),translate:function(e){return this.constant-=e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant===this.constant}}),Object.assign(je.prototype,{set:function(e,t,a,n,r,s){var o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(a),o[3].copy(n),o[4].copy(r),o[5].copy(s),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){for(var t=this.planes,a=0;a<6;a++)t[a].copy(e.planes[a]);return this},setFromMatrix:function(e){var t=this.planes,a=e.elements,n=a[0],r=a[1],s=a[2],o=a[3],i=a[4],c=a[5],d=a[6],l=a[7],u=a[8],h=a[9],m=a[10],p=a[11],f=a[12],b=a[13],y=a[14],g=a[15];return t[0].setComponents(o-n,l-i,p-u,g-f).normalize(),t[1].setComponents(o+n,l+i,p+u,g+f).normalize(),t[2].setComponents(o+r,l+c,p+h,g+b).normalize(),t[3].setComponents(o-r,l-c,p-h,g-b).normalize(),t[4].setComponents(o-s,l-d,p-m,g-y).normalize(),t[5].setComponents(o+s,l+d,p+m,g+y).normalize(),this},intersectsObject:(xe=new Pe,function(e){var t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),xe.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(xe)}),intersectsSprite:function(){var e=new Pe;return function(t){return e.center.set(0,0,0),e.radius=.7071067811865476,e.applyMatrix4(t.matrixWorld),this.intersectsSphere(e)}}(),intersectsSphere:function(e){for(var t=this.planes,a=e.center,n=-e.radius,r=0;r<6;r++){if(t[r].distanceToPoint(a)0?e.min.x:e.max.x,Ee.x=n.normal.x>0?e.max.x:e.min.x,Se.y=n.normal.y>0?e.min.y:e.max.y,Ee.y=n.normal.y>0?e.max.y:e.min.y,Se.z=n.normal.z>0?e.min.z:e.max.z,Ee.z=n.normal.z>0?e.max.z:e.min.z;var r=n.distanceToPoint(Se),s=n.distanceToPoint(Ee);if(r<0&&s<0)return!1}return!0}),containsPoint:function(e){for(var t=this.planes,a=0;a<6;a++)if(t[a].distanceToPoint(e)<0)return!1;return!0}}),De.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],De.DefaultOrder="XYZ",Object.defineProperties(De.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this.onChangeCallback()}},order:{get:function(){return this._order},set:function(e){this._order=e,this.onChangeCallback()}}}),Object.assign(De.prototype,{isEuler:!0,set:function(e,t,a,n){return this._x=e,this._y=t,this._z=a,this._order=n||this._order,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this.onChangeCallback(),this},setFromRotationMatrix:function(e,t,a){var n=m.clamp,r=e.elements,s=r[0],o=r[4],i=r[8],c=r[1],d=r[5],l=r[9],u=r[2],h=r[6],p=r[10];return"XYZ"===(t=t||this._order)?(this._y=Math.asin(n(i,-1,1)),Math.abs(i)<.99999?(this._x=Math.atan2(-l,p),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(h,d),this._z=0)):"YXZ"===t?(this._x=Math.asin(-n(l,-1,1)),Math.abs(l)<.99999?(this._y=Math.atan2(i,p),this._z=Math.atan2(c,d)):(this._y=Math.atan2(-u,s),this._z=0)):"ZXY"===t?(this._x=Math.asin(n(h,-1,1)),Math.abs(h)<.99999?(this._y=Math.atan2(-u,p),this._z=Math.atan2(-o,d)):(this._y=0,this._z=Math.atan2(c,s))):"ZYX"===t?(this._y=Math.asin(-n(u,-1,1)),Math.abs(u)<.99999?(this._x=Math.atan2(h,p),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,d))):"YZX"===t?(this._z=Math.asin(n(c,-1,1)),Math.abs(c)<.99999?(this._x=Math.atan2(-l,d),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(i,p))):"XZY"===t?(this._z=Math.asin(-n(o,-1,1)),Math.abs(o)<.99999?(this._x=Math.atan2(h,d),this._y=Math.atan2(i,s)):(this._x=Math.atan2(-l,p),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+t),this._order=t,!1!==a&&this.onChangeCallback(),this},setFromQuaternion:function(){var e=new f;return function(t,a,n){return e.makeRotationFromQuaternion(t),this.setFromRotationMatrix(e,a,n)}}(),setFromVector3:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)},reorder:(Te=new b,function(e){return Te.setFromEuler(this),this.setFromQuaternion(Te,e)}),equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order},fromArray:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e},toVector3:function(e){return e?e.set(this._x,this._y,this._z):new y(this._x,this._y,this._z)},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){}}),Object.assign(Oe.prototype,{set:function(e){this.mask=1<1){for(var t=0;t1){for(var t=0;t0){n.children=[];for(i=0;i0&&(a.geometries=u),h.length>0&&(a.materials=h),m.length>0&&(a.textures=m),p.length>0&&(a.images=p),o.length>0&&(a.shapes=o)}return a.object=n,a;function f(e){var t=[];for(var a in e){var n=e[a];delete n.metadata,t.push(n)}return t}},clone:function(e){return(new this.constructor).copy(this,e)},copy:function(e,t){if(void 0===t&&(t=!0),this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(var a=0;at&&(t=e[a]);return t}Ye.prototype=Object.assign(Object.create(n.prototype),{constructor:Ye,isGeometry:!0,applyMatrix:function(e){for(var t=(new g).getNormalMatrix(e),a=0,n=this.vertices.length;a0)for(h=0;h0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var e,t,a;for(this.computeFaceNormals(),e=0,t=this.faces.length;e0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var e,t,a,n,r;for(a=0,n=this.faces.length;a=0;a--){var p=h[a];for(this.faces.splice(p,1),o=0,i=this.faceVertexUvs.length;o0,b=m.vertexNormals.length>0,y=1!==m.color.r||1!==m.color.g||1!==m.color.b,g=m.vertexColors.length>0,v=0;if(v=E(v,0,0),v=E(v,1,!0),v=E(v,2,!1),v=E(v,3,p),v=E(v,4,f),v=E(v,5,b),v=E(v,6,y),v=E(v,7,g),o.push(v),o.push(m.a,m.b,m.c),o.push(m.materialIndex),p){var w=this.faceVertexUvs[0][r];o.push(R(w[0]),R(w[1]),R(w[2]))}if(f&&o.push(x(m.normal)),b){var A=m.vertexNormals;o.push(x(A[0]),x(A[1]),x(A[2]))}if(y&&o.push(T(m.color)),g){var S=m.vertexColors;o.push(T(S[0]),T(S[1]),T(S[2]))}}function E(e,t,a){return a?e|1<0&&(e.data.colors=d),u.length>0&&(e.data.uvs=[u]),e.data.faces=o,e},clone:function(){return(new Ye).copy(this)},copy:function(e){var t,a,n,r,s,o;this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;var i=e.vertices;for(t=0,a=i.length;t0,o=r[1]&&r[1].length>0,i=e.morphTargets,c=i.length;if(c>0){t=[];for(var d=0;d0){l=[];for(d=0;d0?1:-1,d.push(M.x,M.y,M.z),l.push(v/f),l.push(1-w/b),N+=1}}for(w=0;w1&&a.sort(Nt),n.length>1&&n.sort(kt)}}}function Pt(){var e={};return{get:function(t,a){var n=t.id+","+a.id,r=e[n];return void 0===r&&(r=new Mt,e[n]=r),r},dispose:function(){e={}}}}function Lt(e,t){return Math.abs(t[1])-Math.abs(e[1])}function jt(e){var t={},a=new Float32Array(8);return{update:function(n,r,s,o){var i=n.morphTargetInfluences,c=i.length,d=t[r.id];if(void 0===d){d=[];for(var l=0;l65535?nt:tt)(o,1),t.update(n,e.ELEMENT_ARRAY_BUFFER),r[a.id]=n,n}}}function Ot(e,t){var a={};return{update:function(n){var r=t.frame,s=n.geometry,o=e.get(n,s);return a[o.id]!==r&&(s.isGeometry&&o.updateFromObject(n),e.update(o),a[o.id]=r),o},dispose:function(){a={}}}}function Ut(e,t,a){var n=e.createShader(t);return e.shaderSource(n,a),e.compileShader(n),!1===e.getShaderParameter(n,e.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile."),""!==e.getShaderInfoLog(n)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",t===e.VERTEX_SHADER?"vertex":"fragment",e.getShaderInfoLog(n),function(e){for(var t=e.split("\n"),a=0;a65535?nt:tt)(e,1):this.index=e},addAttribute:function(e,t){return t&&t.isBufferAttribute||t&&t.isInterleavedBufferAttribute?"index"===e?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),void this.setIndex(t)):(this.attributes[e]=t,this):(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),void this.addAttribute(e,new Ke(arguments[1],arguments[2])))},getAttribute:function(e){return this.attributes[e]},removeAttribute:function(e){return delete this.attributes[e],this},addGroup:function(e,t,a){this.groups.push({start:e,count:t,materialIndex:void 0!==a?a:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(e,t){this.drawRange.start=e,this.drawRange.count=t},applyMatrix:function(e){var t=this.attributes.position;void 0!==t&&(e.applyToBufferAttribute(t),t.needsUpdate=!0);var a=this.attributes.normal;void 0!==a&&((new g).getNormalMatrix(e).applyToBufferAttribute(a),a.needsUpdate=!0);return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(){var e=new f;return function(t){return e.makeRotationX(t),this.applyMatrix(e),this}}(),rotateY:function(){var e=new f;return function(t){return e.makeRotationY(t),this.applyMatrix(e),this}}(),rotateZ:function(){var e=new f;return function(t){return e.makeRotationZ(t),this.applyMatrix(e),this}}(),translate:function(){var e=new f;return function(t,a,n){return e.makeTranslation(t,a,n),this.applyMatrix(e),this}}(),scale:function(){var e=new f;return function(t,a,n){return e.makeScale(t,a,n),this.applyMatrix(e),this}}(),lookAt:function(){var e=new ze;return function(t){e.lookAt(t),e.updateMatrix(),this.applyMatrix(e.matrix)}}(),center:function(){this.computeBoundingBox();var e=this.boundingBox.getCenter().negate();return this.translate(e.x,e.y,e.z),e},setFromObject:function(e){var t=e.geometry;if(e.isPoints||e.isLine){var a=new rt(3*t.vertices.length,3),n=new rt(3*t.colors.length,3);if(this.addAttribute("position",a.copyVector3sArray(t.vertices)),this.addAttribute("color",n.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){var r=new rt(t.lineDistances.length,1);this.addAttribute("lineDistance",r.copyArray(t.lineDistances))}null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone())}else e.isMesh&&t&&t.isGeometry&&this.fromGeometry(t);return this},setFromPoints:function(e){for(var t=[],a=0,n=e.length;a0){var a=new Float32Array(3*e.normals.length);this.addAttribute("normal",new Ke(a,3).copyVector3sArray(e.normals))}if(e.colors.length>0){var n=new Float32Array(3*e.colors.length);this.addAttribute("color",new Ke(n,3).copyColorsArray(e.colors))}if(e.uvs.length>0){var r=new Float32Array(2*e.uvs.length);this.addAttribute("uv",new Ke(r,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){var s=new Float32Array(2*e.uvs2.length);this.addAttribute("uv2",new Ke(s,2).copyVector2sArray(e.uvs2))}if(e.indices.length>0){var o=new(it(e.indices)>65535?Uint32Array:Uint16Array)(3*e.indices.length);this.setIndex(new Ke(o,1).copyIndicesArray(e.indices))}for(var i in this.groups=e.groups,e.morphTargets){for(var c=[],d=e.morphTargets[i],l=0,u=d.length;l0){var p=new rt(4*e.skinIndices.length,4);this.addAttribute("skinIndex",p.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){var f=new rt(4*e.skinWeights.length,4);this.addAttribute("skinWeight",f.copyVector4sArray(e.skinWeights))}return null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Me);var e=this.attributes.position;void 0!==e?this.boundingBox.setFromBufferAttribute(e):this.boundingBox.makeEmpty(),(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)},computeBoundingSphere:function(){var e=new Me,t=new y;return function(){null===this.boundingSphere&&(this.boundingSphere=new Pe);var a=this.attributes.position;if(a){var n=this.boundingSphere.center;e.setFromBufferAttribute(a),e.getCenter(n);for(var r=0,s=0,o=a.count;s0&&(e.data.groups=JSON.parse(JSON.stringify(i)));var c=this.boundingSphere;return null!==c&&(e.data.boundingSphere={center:c.center.toArray(),radius:c.radius}),e},clone:function(){return(new bt).copy(this)},copy:function(e){var t,a,n;this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;var r=e.index;null!==r&&this.setIndex(r.clone());var s=e.attributes;for(t in s){var o=s[t];this.addAttribute(t,o.clone())}var i=e.morphAttributes;for(t in i){var c=[],d=i[t];for(a=0,n=d.length;a0)if(s=d*l-u,i=c*m,(r=d*u-l)>=0)if(s>=-i)if(s<=i){var p=1/m;o=(r*=p)*(r+d*(s*=p)+2*l)+s*(d*r+s+2*u)+h}else s=c,o=-(r=Math.max(0,-(d*s+l)))*r+s*(s+2*u)+h;else s=-c,o=-(r=Math.max(0,-(d*s+l)))*r+s*(s+2*u)+h;else s<=-i?o=-(r=Math.max(0,-(-d*c+l)))*r+(s=r>0?-c:Math.min(Math.max(-c,-u),c))*(s+2*u)+h:s<=i?(r=0,o=(s=Math.min(Math.max(-c,-u),c))*(s+2*u)+h):o=-(r=Math.max(0,-(d*c+l)))*r+(s=r>0?c:Math.min(Math.max(-c,-u),c))*(s+2*u)+h;else s=d>0?-c:c,o=-(r=Math.max(0,-(d*s+l)))*r+s*(s+2*u)+h;return a&&a.copy(this.direction).multiplyScalar(r).add(this.origin),n&&n.copy(lt).multiplyScalar(s).add(dt),o}),intersectSphere:function(){var e=new y;return function(t,a){e.subVectors(t.center,this.origin);var n=e.dot(this.direction),r=e.dot(e)-n*n,s=t.radius*t.radius;if(r>s)return null;var o=Math.sqrt(s-r),i=n-o,c=n+o;return i<0&&c<0?null:i<0?this.at(c,a):this.at(i,a)}}(),intersectsSphere:function(e){return this.distanceToPoint(e.center)<=e.radius},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;var a=-(this.origin.dot(e.normal)+e.constant)/t;return a>=0?a:null},intersectPlane:function(e,t){var a=this.distanceToPlane(e);return null===a?null:this.at(a,t)},intersectsPlane:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0},intersectBox:function(e,t){var a,n,r,s,o,i,c=1/this.direction.x,d=1/this.direction.y,l=1/this.direction.z,u=this.origin;return c>=0?(a=(e.min.x-u.x)*c,n=(e.max.x-u.x)*c):(a=(e.max.x-u.x)*c,n=(e.min.x-u.x)*c),d>=0?(r=(e.min.y-u.y)*d,s=(e.max.y-u.y)*d):(r=(e.max.y-u.y)*d,s=(e.min.y-u.y)*d),a>s||r>n?null:((r>a||a!=a)&&(a=r),(s=0?(o=(e.min.z-u.z)*l,i=(e.max.z-u.z)*l):(o=(e.max.z-u.z)*l,i=(e.min.z-u.z)*l),a>i||o>n?null:((o>a||a!=a)&&(a=o),(i=0?a:n,t)))},intersectsBox:(ct=new y,function(e){return null!==this.intersectBox(e,ct)}),intersectTriangle:function(){var e=new y,t=new y,a=new y,n=new y;return function(r,s,o,i,c){t.subVectors(s,r),a.subVectors(o,r),n.crossVectors(t,a);var d,l=this.direction.dot(n);if(l>0){if(i)return null;d=1}else{if(!(l<0))return null;d=-1,l=-l}e.subVectors(this.origin,r);var u=d*this.direction.dot(a.crossVectors(e,a));if(u<0)return null;var h=d*this.direction.dot(t.cross(e));if(h<0)return null;if(u+h>l)return null;var m=-d*e.dot(n);return m<0?null:this.at(m/l,c)}}(),applyMatrix4:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}}),Object.assign(xt.prototype,{set:function(e,t){return this.start.copy(e),this.end.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},getCenter:function(e){return(e||new y).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){return(e||new y).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){var a=t||new y;return this.delta(a).multiplyScalar(e).add(this.start)},closestPointToPointParameter:(ht=new y,mt=new y,function(e,t){ht.subVectors(e,this.start),mt.subVectors(this.end,this.start);var a=mt.dot(mt),n=mt.dot(ht)/a;return t&&(n=m.clamp(n,0,1)),n}),closestPointToPoint:function(e,t,a){var n=this.closestPointToPointParameter(e,t),r=a||new y;return this.delta(r).multiplyScalar(n).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)}}),Object.assign(Tt,{normal:(pt=new y,function(e,t,a,n){var r=n||new y;r.subVectors(a,t),pt.subVectors(e,t),r.cross(pt);var s=r.lengthSq();return s>0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}),barycoordFromPoint:function(){var e=new y,t=new y,a=new y;return function(n,r,s,o,i){e.subVectors(o,r),t.subVectors(s,r),a.subVectors(n,r);var c=e.dot(e),d=e.dot(t),l=e.dot(a),u=t.dot(t),h=t.dot(a),m=c*u-d*d,p=i||new y;if(0===m)return p.set(-2,-1,-1);var f=1/m,b=(u*l-d*h)*f,g=(c*h-d*l)*f;return p.set(1-b-g,g,b)}}(),containsPoint:function(){var e=new y;return function(t,a,n,r){var s=Tt.barycoordFromPoint(t,a,n,r,e);return s.x>=0&&s.y>=0&&s.x+s.y<=1}}()}),Object.assign(Tt.prototype,{set:function(e,t,a){return this.a.copy(e),this.b.copy(t),this.c.copy(a),this},setFromPointsAndIndices:function(e,t,a,n){return this.a.copy(e[t]),this.b.copy(e[a]),this.c.copy(e[n]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},area:function(){var e=new y,t=new y;return function(){return e.subVectors(this.c,this.b),t.subVectors(this.a,this.b),.5*e.cross(t).length()}}(),midpoint:function(e){return(e||new y).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(e){return Tt.normal(this.a,this.b,this.c,e)},plane:function(e){return(e||new Le).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(e,t){return Tt.barycoordFromPoint(e,this.a,this.b,this.c,t)},containsPoint:function(e){return Tt.containsPoint(e,this.a,this.b,this.c)},intersectsBox:function(e){return e.intersectsTriangle(this)},closestPointToPoint:function(){var e=new Le,t=[new xt,new xt,new xt],a=new y,n=new y;return function(r,s){var o=s||new y,i=1/0;if(e.setFromCoplanarPoints(this.a,this.b,this.c),e.projectPoint(r,a),!0===this.containsPoint(a))o.copy(a);else{t[0].set(this.a,this.b),t[1].set(this.b,this.c),t[2].set(this.c,this.a);for(var c=0;c0){var o=r[s[0]];if(void 0!==o)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},e=0,t=o.length;e0)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},e=0,t=i.length;ea.far?null:{distance:c,point:b.clone(),object:e}}function w(e,t,a,o,i,c,h,p){n.fromBufferAttribute(o,c),r.fromBufferAttribute(o,h),s.fromBufferAttribute(o,p);var f=v(e,e.material,t,a,n,r,s,m);return f&&(i&&(d.fromBufferAttribute(i,c),l.fromBufferAttribute(i,h),u.fromBufferAttribute(i,p),f.uv=g(m,n,r,s,d,l,u)),f.face=new Ge(c,h,p,Tt.normal(n,r,s)),f.faceIndex=c),f}return function(h,p){var f,b=this.geometry,y=this.material,A=this.matrixWorld;if(void 0!==y&&(null===b.boundingSphere&&b.computeBoundingSphere(),a.copy(b.boundingSphere),a.applyMatrix4(A),!1!==h.ray.intersectsSphere(a)&&(e.getInverse(A),t.copy(h.ray).applyMatrix4(e),null===b.boundingBox||!1!==t.intersectsBox(b.boundingBox))))if(b.isBufferGeometry){var S,E,x,T,R,_=b.index,N=b.attributes.position,k=b.attributes.uv;if(null!==_)for(T=0,R=_.count;T0&&(j=O);for(var U=0,F=D.length;U/gm,(function(e,t){var a=fe[t];if(void 0===a)throw new Error("Can not resolve #include <"+t+">");return Gt(a)}))}function Wt(e){return e.replace(/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,(function(e,t,a,n){for(var r="",s=parseInt(t);s0?e.gammaFactor:1,w=function(e,t,a){return[(e=e||{}).derivatives||t.envMapCubeUV||t.bumpMap||t.normalMap||t.flatShading?"#extension GL_OES_standard_derivatives : enable":"",(e.fragDepth||t.logarithmicDepthBuffer)&&a.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",e.drawBuffers&&a.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(e.shaderTextureLOD||t.envMap)&&a.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":""].filter(zt).join("\n")}(n.extensions,s,t),A=function(e){var t=[];for(var a in e){var n=e[a];!1!==n&&t.push("#define "+a+" "+n)}return t.join("\n")}(i),S=o.createProgram();n.isRawShaderMaterial?((p=[A].filter(zt).join("\n")).length>0&&(p+="\n"),(f=[w,A].filter(zt).join("\n")).length>0&&(f+="\n")):(p=["precision "+s.precision+" float;","precision "+s.precision+" int;","#define SHADER_NAME "+r.name,A,s.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+v,"#define MAX_BONES "+s.maxBones,s.useFog&&s.fog?"#define USE_FOG":"",s.useFog&&s.fogExp?"#define FOG_EXP2":"",s.map?"#define USE_MAP":"",s.envMap?"#define USE_ENVMAP":"",s.envMap?"#define "+h:"",s.lightMap?"#define USE_LIGHTMAP":"",s.aoMap?"#define USE_AOMAP":"",s.emissiveMap?"#define USE_EMISSIVEMAP":"",s.bumpMap?"#define USE_BUMPMAP":"",s.normalMap?"#define USE_NORMALMAP":"",s.displacementMap&&s.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",s.specularMap?"#define USE_SPECULARMAP":"",s.roughnessMap?"#define USE_ROUGHNESSMAP":"",s.metalnessMap?"#define USE_METALNESSMAP":"",s.alphaMap?"#define USE_ALPHAMAP":"",s.vertexColors?"#define USE_COLOR":"",s.flatShading?"#define FLAT_SHADED":"",s.skinning?"#define USE_SKINNING":"",s.useVertexTexture?"#define BONE_TEXTURE":"",s.morphTargets?"#define USE_MORPHTARGETS":"",s.morphNormals&&!1===s.flatShading?"#define USE_MORPHNORMALS":"",s.doubleSided?"#define DOUBLE_SIDED":"",s.flipSided?"#define FLIP_SIDED":"",s.shadowMapEnabled?"#define USE_SHADOWMAP":"",s.shadowMapEnabled?"#define "+l:"",s.sizeAttenuation?"#define USE_SIZEATTENUATION":"",s.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",s.logarithmicDepthBuffer&&t.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(zt).join("\n"),f=[w,"precision "+s.precision+" float;","precision "+s.precision+" int;","#define SHADER_NAME "+r.name,A,s.alphaTest?"#define ALPHATEST "+s.alphaTest:"","#define GAMMA_FACTOR "+v,s.useFog&&s.fog?"#define USE_FOG":"",s.useFog&&s.fogExp?"#define FOG_EXP2":"",s.map?"#define USE_MAP":"",s.envMap?"#define USE_ENVMAP":"",s.envMap?"#define "+u:"",s.envMap?"#define "+h:"",s.envMap?"#define "+m:"",s.lightMap?"#define USE_LIGHTMAP":"",s.aoMap?"#define USE_AOMAP":"",s.emissiveMap?"#define USE_EMISSIVEMAP":"",s.bumpMap?"#define USE_BUMPMAP":"",s.normalMap?"#define USE_NORMALMAP":"",s.specularMap?"#define USE_SPECULARMAP":"",s.roughnessMap?"#define USE_ROUGHNESSMAP":"",s.metalnessMap?"#define USE_METALNESSMAP":"",s.alphaMap?"#define USE_ALPHAMAP":"",s.vertexColors?"#define USE_COLOR":"",s.gradientMap?"#define USE_GRADIENTMAP":"",s.flatShading?"#define FLAT_SHADED":"",s.doubleSided?"#define DOUBLE_SIDED":"",s.flipSided?"#define FLIP_SIDED":"",s.shadowMapEnabled?"#define USE_SHADOWMAP":"",s.shadowMapEnabled?"#define "+l:"",s.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",s.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",s.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",s.logarithmicDepthBuffer&&t.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"",s.envMap&&t.get("EXT_shader_texture_lod")?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",0!==s.toneMapping?"#define TONE_MAPPING":"",0!==s.toneMapping?fe.tonemapping_pars_fragment:"",0!==s.toneMapping?Bt("toneMapping",s.toneMapping):"",s.dithering?"#define DITHERING":"",s.outputEncoding||s.mapEncoding||s.envMapEncoding||s.emissiveMapEncoding?fe.encodings_pars_fragment:"",s.mapEncoding?Ht("mapTexelToLinear",s.mapEncoding):"",s.envMapEncoding?Ht("envMapTexelToLinear",s.envMapEncoding):"",s.emissiveMapEncoding?Ht("emissiveMapTexelToLinear",s.emissiveMapEncoding):"",s.outputEncoding?(b="linearToOutputTexel",y=s.outputEncoding,g=Zt(y),"vec4 "+b+"( vec4 value ) { return LinearTo"+g[0]+g[1]+"; }"):"",s.depthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(zt).join("\n")),c=Vt(c=qt(c=Gt(c),s),s),d=Vt(d=qt(d=Gt(d),s),s);var E=p+(c=Wt(c)),x=f+(d=Wt(d)),T=Ut(o,o.VERTEX_SHADER,E),R=Ut(o,o.FRAGMENT_SHADER,x);o.attachShader(S,T),o.attachShader(S,R),void 0!==n.index0AttributeName?o.bindAttribLocation(S,0,n.index0AttributeName):!0===s.morphTargets&&o.bindAttribLocation(S,0,"position"),o.linkProgram(S);var _,N,k=o.getProgramInfoLog(S).trim(),M=o.getShaderInfoLog(T).trim(),P=o.getShaderInfoLog(R).trim(),L=!0,j=!0;return!1===o.getProgramParameter(S,o.LINK_STATUS)?(L=!1,console.error("THREE.WebGLProgram: shader error: ",o.getError(),"gl.VALIDATE_STATUS",o.getProgramParameter(S,o.VALIDATE_STATUS),"gl.getProgramInfoLog",k,M,P)):""!==k?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",k):""!==M&&""!==P||(j=!1),j&&(this.diagnostics={runnable:L,material:n,programLog:k,vertexShader:{log:M,prefix:p},fragmentShader:{log:P,prefix:f}}),o.deleteShader(T),o.deleteShader(R),this.getUniforms=function(){return void 0===_&&(_=new le(o,S,e)),_},this.getAttributes=function(){return void 0===N&&(N=function(e,t){for(var a={},n=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES),r=0;r0,maxBones:h,useVertexTexture:a.floatVertexTextures,morphTargets:t.morphTargets,morphNormals:t.morphNormals,maxMorphTargets:e.maxMorphTargets,maxMorphNormals:e.maxMorphNormals,numDirLights:n.directional.length,numPointLights:n.point.length,numSpotLights:n.spot.length,numRectAreaLights:n.rectArea.length,numHemiLights:n.hemi.length,numClippingPlanes:c,numClipIntersection:d,dithering:t.dithering,shadowMapEnabled:e.shadowMap.enabled&&l.receiveShadow&&s.length>0,shadowMapType:e.shadowMap.type,toneMapping:e.toneMapping,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:t.premultipliedAlpha,alphaTest:t.alphaTest,doubleSided:2===t.side,flipSided:1===t.side,depthPacking:void 0!==t.depthPacking&&t.depthPacking}},this.getProgramCode=function(t,a){var n=[];if(a.shaderID?n.push(a.shaderID):(n.push(t.fragmentShader),n.push(t.vertexShader)),void 0!==t.defines)for(var r in t.defines)n.push(r),n.push(t.defines[r]);for(var o=0;ot||e.height>t){var a=t/Math.max(e.width,e.height),n=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");return n.width=Math.floor(e.width*a),n.height=Math.floor(e.height*a),n.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,n.width,n.height),console.warn("THREE.WebGLRenderer: image is too big ("+e.width+"x"+e.height+"). Resized to "+n.width+"x"+n.height,e),n}return e}function h(e){return m.isPowerOfTwo(e.width)&&m.isPowerOfTwo(e.height)}function p(e,t){return e.generateMipmaps&&t&&1003!==e.minFilter&&1006!==e.minFilter}function f(t){return 1003===t||1004===t||1005===t?e.NEAREST:e.LINEAR}function b(t){var a=t.target;a.removeEventListener("dispose",b),function(t){var a=n.get(t);if(t.image&&a.__image__webglTextureCube)e.deleteTexture(a.__image__webglTextureCube);else{if(void 0===a.__webglInit)return;e.deleteTexture(a.__webglTexture)}n.remove(t)}(a),a.isVideoTexture&&delete l[a.id],o.textures--}function y(t){var a=t.target;a.removeEventListener("dispose",y),function(t){var a=n.get(t),r=n.get(t.texture);if(!t)return;void 0!==r.__webglTexture&&e.deleteTexture(r.__webglTexture);t.depthTexture&&t.depthTexture.dispose();if(t.isWebGLRenderTargetCube)for(var s=0;s<6;s++)e.deleteFramebuffer(a.__webglFramebuffer[s]),a.__webglDepthbuffer&&e.deleteRenderbuffer(a.__webglDepthbuffer[s]);else e.deleteFramebuffer(a.__webglFramebuffer),a.__webglDepthbuffer&&e.deleteRenderbuffer(a.__webglDepthbuffer);n.remove(t.texture),n.remove(t)}(a),o.textures--}function g(t,f){var y=n.get(t);if(t.isVideoTexture&&function(e){var t=e.id,a=i.frame;l[t]!==a&&(l[t]=a,e.update())}(t),t.version>0&&y.__version!==t.version){var g=t.image;if(void 0===g)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",t);else{if(!1!==g.complete)return void function(t,n,i){void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",b),t.__webglTexture=e.createTexture(),o.textures++);a.activeTexture(e.TEXTURE0+i),a.bindTexture(e.TEXTURE_2D,t.__webglTexture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,n.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,n.unpackAlignment);var l=u(n.image,r.maxTextureSize);(function(e){return 1001!==e.wrapS||1001!==e.wrapT||1003!==e.minFilter&&1006!==e.minFilter})(n)&&!1===h(l)&&(l=function(e){return e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof ImageBitmap?(void 0===c&&(c=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),c.width=m.floorPowerOfTwo(e.width),c.height=m.floorPowerOfTwo(e.height),c.getContext("2d").drawImage(e,0,0,c.width,c.height),console.warn("THREE.WebGLRenderer: image is not power of two ("+e.width+"x"+e.height+"). Resized to "+c.width+"x"+c.height,e),c):e}(l));var f=h(l),y=s.convert(n.format),g=s.convert(n.type);v(e.TEXTURE_2D,n,f);var w,A=n.mipmaps;if(n.isDepthTexture){var S=e.DEPTH_COMPONENT;if(1015===n.type){if(!d)throw new Error("Float Depth Texture only supported in WebGL2.0");S=e.DEPTH_COMPONENT32F}else d&&(S=e.DEPTH_COMPONENT16);1026===n.format&&S===e.DEPTH_COMPONENT&&1012!==n.type&&1014!==n.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),n.type=1012,g=s.convert(n.type)),1027===n.format&&(S=e.DEPTH_STENCIL,1020!==n.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),n.type=1020,g=s.convert(n.type))),a.texImage2D(e.TEXTURE_2D,0,S,l.width,l.height,0,y,g,null)}else if(n.isDataTexture)if(A.length>0&&f){for(var E=0,x=A.length;E-1?a.compressedTexImage2D(e.TEXTURE_2D,E,y,w.width,w.height,0,w.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):a.texImage2D(e.TEXTURE_2D,E,y,w.width,w.height,0,y,g,w.data);else if(A.length>0&&f){for(E=0,x=A.length;E1||n.get(o).__currentAnisotropy)&&(e.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,r.getMaxAnisotropy())),n.get(o).__currentAnisotropy=o.anisotropy)}}function w(t,r,o,i){var c=s.convert(r.texture.format),d=s.convert(r.texture.type);a.texImage2D(i,0,c,r.width,r.height,0,c,d,null),e.bindFramebuffer(e.FRAMEBUFFER,t),e.framebufferTexture2D(e.FRAMEBUFFER,o,i,n.get(r.texture).__webglTexture,0),e.bindFramebuffer(e.FRAMEBUFFER,null)}function A(t,a){e.bindRenderbuffer(e.RENDERBUFFER,t),a.depthBuffer&&!a.stencilBuffer?(e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,a.width,a.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t)):a.depthBuffer&&a.stencilBuffer?(e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,a.width,a.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,t)):e.renderbufferStorage(e.RENDERBUFFER,e.RGBA4,a.width,a.height),e.bindRenderbuffer(e.RENDERBUFFER,null)}function S(t){var a=n.get(t),r=!0===t.isWebGLRenderTargetCube;if(t.depthTexture){if(r)throw new Error("target.depthTexture not supported in Cube render targets");!function(t,a){if(a&&a.isWebGLRenderTargetCube)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(e.FRAMEBUFFER,t),!a.depthTexture||!a.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");n.get(a.depthTexture).__webglTexture&&a.depthTexture.image.width===a.width&&a.depthTexture.image.height===a.height||(a.depthTexture.image.width=a.width,a.depthTexture.image.height=a.height,a.depthTexture.needsUpdate=!0),g(a.depthTexture,0);var r=n.get(a.depthTexture).__webglTexture;if(1026===a.depthTexture.format)e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.TEXTURE_2D,r,0);else{if(1027!==a.depthTexture.format)throw new Error("Unknown depthTexture format");e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.TEXTURE_2D,r,0)}}(a.__webglFramebuffer,t)}else if(r){a.__webglDepthbuffer=[];for(var s=0;s<6;s++)e.bindFramebuffer(e.FRAMEBUFFER,a.__webglFramebuffer[s]),a.__webglDepthbuffer[s]=e.createRenderbuffer(),A(a.__webglDepthbuffer[s],t)}else e.bindFramebuffer(e.FRAMEBUFFER,a.__webglFramebuffer),a.__webglDepthbuffer=e.createRenderbuffer(),A(a.__webglDepthbuffer,t);e.bindFramebuffer(e.FRAMEBUFFER,null)}this.setTexture2D=g,this.setTextureCube=function(t,i){var c=n.get(t);if(6===t.image.length)if(t.version>0&&c.__version!==t.version){c.__image__webglTextureCube||(t.addEventListener("dispose",b),c.__image__webglTextureCube=e.createTexture(),o.textures++),a.activeTexture(e.TEXTURE0+i),a.bindTexture(e.TEXTURE_CUBE_MAP,c.__image__webglTextureCube),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t.flipY);for(var d=t&&t.isCompressedTexture,l=t.image[0]&&t.image[0].isDataTexture,m=[],f=0;f<6;f++)m[f]=d||l?l?t.image[f].image:t.image[f]:u(t.image[f],r.maxCubemapSize);var y=h(m[0]),g=s.convert(t.format),w=s.convert(t.type);v(e.TEXTURE_CUBE_MAP,t,y);for(f=0;f<6;f++)if(d)for(var A,S=m[f].mipmaps,E=0,x=S.length;E-1?a.compressedTexImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,E,g,A.width,A.height,0,A.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):a.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,E,g,A.width,A.height,0,g,w,A.data);else l?a.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,g,m[f].width,m[f].height,0,g,w,m[f].data):a.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,g,g,w,m[f]);p(t,y)&&e.generateMipmap(e.TEXTURE_CUBE_MAP),c.__version=t.version,t.onUpdate&&t.onUpdate(t)}else a.activeTexture(e.TEXTURE0+i),a.bindTexture(e.TEXTURE_CUBE_MAP,c.__image__webglTextureCube)},this.setTextureCubeDynamic=function(t,r){a.activeTexture(e.TEXTURE0+r),a.bindTexture(e.TEXTURE_CUBE_MAP,n.get(t).__webglTexture)},this.setupRenderTarget=function(t){var r=n.get(t),s=n.get(t.texture);t.addEventListener("dispose",y),s.__webglTexture=e.createTexture(),o.textures++;var i=!0===t.isWebGLRenderTargetCube,c=h(t);if(i){r.__webglFramebuffer=[];for(var d=0;d<6;d++)r.__webglFramebuffer[d]=e.createFramebuffer()}else r.__webglFramebuffer=e.createFramebuffer();if(i){a.bindTexture(e.TEXTURE_CUBE_MAP,s.__webglTexture),v(e.TEXTURE_CUBE_MAP,t.texture,c);for(d=0;d<6;d++)w(r.__webglFramebuffer[d],t,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+d);p(t.texture,c)&&e.generateMipmap(e.TEXTURE_CUBE_MAP),a.bindTexture(e.TEXTURE_CUBE_MAP,null)}else a.bindTexture(e.TEXTURE_2D,s.__webglTexture),v(e.TEXTURE_2D,t.texture,c),w(r.__webglFramebuffer,t,e.COLOR_ATTACHMENT0,e.TEXTURE_2D),p(t.texture,c)&&e.generateMipmap(e.TEXTURE_2D),a.bindTexture(e.TEXTURE_2D,null);t.depthBuffer&&S(t)},this.updateRenderTargetMipmap=function(t){var r=t.texture;if(p(r,h(t))){var s=t.isWebGLRenderTargetCube?e.TEXTURE_CUBE_MAP:e.TEXTURE_2D,o=n.get(r).__webglTexture;a.bindTexture(s,o),e.generateMipmap(s),a.bindTexture(s,null)}}}function Xt(){var e={};return{get:function(t){var a=t.uuid,n=e[a];return void 0===n&&(n={},e[a]=n),n},remove:function(t){delete e[t.uuid]},update:function(t,a,n){var r=t.uuid;e[r][a]=n},dispose:function(){e={}}}}function Qt(e,t,a){var n=new function(){var t=!1,a=new A,n=null,r=new A(0,0,0,0);return{setMask:function(a){n===a||t||(e.colorMask(a,a,a,a),n=a)},setLocked:function(e){t=e},setClear:function(t,n,s,o,i){!0===i&&(t*=o,n*=o,s*=o),a.set(t,n,s,o),!1===r.equals(a)&&(e.clearColor(t,n,s,o),r.copy(a))},reset:function(){t=!1,n=null,r.set(-1,0,0,0)}}},r=new function(){var t=!1,a=null,n=null,r=null;return{setTest:function(t){t?O(e.DEPTH_TEST):U(e.DEPTH_TEST)},setMask:function(n){a===n||t||(e.depthMask(n),a=n)},setFunc:function(t){if(n!==t){if(t)switch(t){case 0:e.depthFunc(e.NEVER);break;case 1:e.depthFunc(e.ALWAYS);break;case 2:e.depthFunc(e.LESS);break;case 3:e.depthFunc(e.LEQUAL);break;case 4:e.depthFunc(e.EQUAL);break;case 5:e.depthFunc(e.GEQUAL);break;case 6:e.depthFunc(e.GREATER);break;case 7:e.depthFunc(e.NOTEQUAL);break;default:e.depthFunc(e.LEQUAL)}else e.depthFunc(e.LEQUAL);n=t}},setLocked:function(e){t=e},setClear:function(t){r!==t&&(e.clearDepth(t),r=t)},reset:function(){t=!1,a=null,n=null,r=null}}},s=new function(){var t=!1,a=null,n=null,r=null,s=null,o=null,i=null,c=null,d=null;return{setTest:function(t){t?O(e.STENCIL_TEST):U(e.STENCIL_TEST)},setMask:function(n){a===n||t||(e.stencilMask(n),a=n)},setFunc:function(t,a,o){n===t&&r===a&&s===o||(e.stencilFunc(t,a,o),n=t,r=a,s=o)},setOp:function(t,a,n){o===t&&i===a&&c===n||(e.stencilOp(t,a,n),o=t,i=a,c=n)},setLocked:function(e){t=e},setClear:function(t){d!==t&&(e.clearStencil(t),d=t)},reset:function(){t=!1,a=null,n=null,r=null,s=null,o=null,i=null,c=null,d=null}}},o=e.getParameter(e.MAX_VERTEX_ATTRIBS),i=new Uint8Array(o),c=new Uint8Array(o),d=new Uint8Array(o),l={},u=null,h=null,m=null,p=null,f=null,b=null,y=null,g=null,v=null,w=!1,S=null,E=null,x=null,T=null,R=null,_=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS),N=!1,k=0,M=e.getParameter(e.VERSION);-1!==M.indexOf("WebGL")?(k=parseFloat(/^WebGL\ ([0-9])/.exec(M)[1]),N=k>=1):-1!==M.indexOf("OpenGL ES")&&(k=parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(M)[1]),N=k>=2);var P=null,L={},j=new A,C=new A;function I(t,a,n){var r=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(var o=0;o0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}var s=void 0!==a.precision?a.precision:"highp",o=r(s);o!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",o,"instead."),s=o);var i=!0===a.logarithmicDepthBuffer,c=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),d=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),l=e.getParameter(e.MAX_TEXTURE_SIZE),u=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),h=e.getParameter(e.MAX_VERTEX_ATTRIBS),m=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),p=e.getParameter(e.MAX_VARYING_VECTORS),f=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),b=d>0,y=!!t.get("OES_texture_float");return{getMaxAnisotropy:function(){if(void 0!==n)return n;var a=t.get("EXT_texture_filter_anisotropic");return n=null!==a?e.getParameter(a.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:r,precision:s,logarithmicDepthBuffer:i,maxTextures:c,maxVertexTextures:d,maxTextureSize:l,maxCubemapSize:u,maxAttributes:h,maxVertexUniforms:m,maxVaryings:p,maxFragmentUniforms:f,vertexTextures:b,floatFragmentTextures:y,floatVertexTextures:b&&y}}function ea(e,t,a,n){qe.call(this),this.type="PerspectiveCamera",this.fov=void 0!==e?e:50,this.zoom=1,this.near=void 0!==a?a:.1,this.far=void 0!==n?n:2e3,this.focus=10,this.aspect=void 0!==t?t:1,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}function ta(e){ea.call(this),this.cameras=e||[]}function aa(e){var t=this,a=null,n=null,r=null,s=new f,o=new f;"undefined"!=typeof window&&"VRFrameData"in window&&(n=new window.VRFrameData);var i=new f,c=new b,d=new y,l=new ea;l.bounds=new A(0,0,.5,1),l.layers.enable(1);var u=new ea;u.bounds=new A(.5,0,.5,1),u.layers.enable(2);var h,m,p=new ta([l,u]);function g(){if(null!==a&&a.isPresenting){var n=a.getEyeParameters("left"),r=n.renderWidth,s=n.renderHeight;m=e.getPixelRatio(),h=e.getSize(),e.setDrawingBufferSize(2*r,s,1)}else t.enabled&&e.setDrawingBufferSize(h.width,h.height,m)}p.layers.enable(1),p.layers.enable(2),"undefined"!=typeof window&&window.addEventListener("vrdisplaypresentchange",g,!1),this.enabled=!1,this.userHeight=1.6,this.getDevice=function(){return a},this.setDevice=function(e){void 0!==e&&(a=e)},this.setPoseTarget=function(e){void 0!==e&&(r=e)},this.getCamera=function(e){if(null===a)return e;a.depthNear=e.near,a.depthFar=e.far,a.getFrameData(n);var h=a.stageParameters;h?s.fromArray(h.sittingToStandingTransform):s.makeTranslation(0,t.userHeight,0);var m=n.pose,f=null!==r?r:e;if(f.matrix.copy(s),f.matrix.decompose(f.position,f.quaternion,f.scale),null!==m.orientation&&(c.fromArray(m.orientation),f.quaternion.multiply(c)),null!==m.position&&(c.setFromRotationMatrix(s),d.fromArray(m.position),d.applyQuaternion(c),f.position.add(d)),f.updateMatrixWorld(),!1===a.isPresenting)return e;l.near=e.near,u.near=e.near,l.far=e.far,u.far=e.far,p.matrixWorld.copy(e.matrixWorld),p.matrixWorldInverse.copy(e.matrixWorldInverse),l.matrixWorldInverse.fromArray(n.leftViewMatrix),u.matrixWorldInverse.fromArray(n.rightViewMatrix),o.getInverse(s),l.matrixWorldInverse.multiply(o),u.matrixWorldInverse.multiply(o);var b=f.parent;null!==b&&(i.getInverse(b.matrixWorld),l.matrixWorldInverse.multiply(i),u.matrixWorldInverse.multiply(i)),l.matrixWorld.getInverse(l.matrixWorldInverse),u.matrixWorld.getInverse(u.matrixWorldInverse),l.projectionMatrix.fromArray(n.leftProjectionMatrix),u.projectionMatrix.fromArray(n.rightProjectionMatrix),p.projectionMatrix.copy(l.projectionMatrix);var y=a.getLayers();if(y.length){var g=y[0];null!==g.leftBounds&&4===g.leftBounds.length&&l.bounds.fromArray(g.leftBounds),null!==g.rightBounds&&4===g.rightBounds.length&&u.bounds.fromArray(g.rightBounds)}return p},this.getStandingMatrix=function(){return s},this.submitFrame=function(){a&&a.isPresenting&&a.submitFrame()},this.dispose=function(){"undefined"!=typeof window&&window.removeEventListener("vrdisplaypresentchange",g)}}function na(e){var t={};return{get:function(a){if(void 0!==t[a])return t[a];var n;switch(a){case"WEBGL_depth_texture":n=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case"WEBGL_compressed_texture_etc1":n=e.getExtension("WEBGL_compressed_texture_etc1");break;default:n=e.getExtension(a)}return null===n&&console.warn("THREE.WebGLRenderer: "+a+" extension not supported."),t[a]=n,n}}}function ra(){var e=this,t=null,a=0,n=!1,r=!1,s=new Le,o=new g,i={value:null,needsUpdate:!1};function c(){i.value!==t&&(i.value=t,i.needsUpdate=a>0),e.numPlanes=a,e.numIntersection=0}function d(t,a,n,r){var c=null!==t?t.length:0,d=null;if(0!==c){if(d=i.value,!0!==r||null===d){var l=n+4*c,u=a.matrixWorldInverse;o.getNormalMatrix(u),(null===d||d.length=0){var d=r[i];if(void 0!==d){var l=d.normalized,u=d.itemSize,m=S.get(d);if(void 0===m)continue;var f=m.buffer,b=m.type,y=m.bytesPerElement;if(d.isInterleavedBufferAttribute){var v=d.data,w=v.stride,A=d.offset;v&&v.isInstancedInterleavedBuffer?(g.enableAttributeAndDivisor(c,v.meshPerAttribute),void 0===a.maxInstancedCount&&(a.maxInstancedCount=v.meshPerAttribute*v.count)):g.enableAttribute(c),h.bindBuffer(h.ARRAY_BUFFER,f),h.vertexAttribPointer(c,u,b,l,w*y,(n*w+A)*y)}else d.isInstancedBufferAttribute?(g.enableAttributeAndDivisor(c,d.meshPerAttribute),void 0===a.maxInstancedCount&&(a.maxInstancedCount=d.meshPerAttribute*d.count)):g.enableAttribute(c),h.bindBuffer(h.ARRAY_BUFFER,f),h.vertexAttribPointer(c,u,b,l,0,n*u*y)}else if(void 0!==o){var E=o[i];if(void 0!==E)switch(E.length){case 2:h.vertexAttrib2fv(c,E);break;case 3:h.vertexAttrib3fv(c,E);break;case 4:h.vertexAttrib4fv(c,E);break;default:h.vertexAttrib1fv(c,E)}}}}g.disableUnusedAttributes()}(n,i,a),null!==u&&h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,l.buffer));var y=1/0;null!==u?y=u.count:void 0!==m&&(y=m.count);var v=a.drawRange.start*f,w=a.drawRange.count*f,A=null!==s?s.start*f:0,x=null!==s?s.count*f:1/0,T=Math.max(v,A),R=Math.min(y,v+w,A+x)-1,_=Math.max(0,R-T+1);if(0!==_){if(r.isMesh)if(!0===n.wireframe)g.setLineWidth(n.wireframeLinewidth*ie()),b.setMode(h.LINES);else switch(r.drawMode){case 0:b.setMode(h.TRIANGLES);break;case 1:b.setMode(h.TRIANGLE_STRIP);break;case 2:b.setMode(h.TRIANGLE_FAN)}else if(r.isLine){var N=n.linewidth;void 0===N&&(N=1),g.setLineWidth(N*ie()),r.isLineSegments?b.setMode(h.LINES):r.isLineLoop?b.setMode(h.LINE_LOOP):b.setMode(h.LINE_STRIP)}else r.isPoints&&b.setMode(h.POINTS);a&&a.isInstancedBufferGeometry?a.maxInstancedCount>0&&b.renderInstances(a,T,_):b.render(T,_)}},this.compile=function(e,t){(u=N.get(e,t)).init(),e.traverse((function(e){e.isLight&&(u.pushLight(e),e.castShadow&&u.pushShadow(e))})),u.setupLights(t),e.traverse((function(t){if(t.material)if(Array.isArray(t.material))for(var a=0;a=0&&e.numSupportedMorphTargets++}if(e.morphNormals){e.numSupportedMorphNormals=0;for(m=0;m=0&&e.numSupportedMorphNormals++}var p=n.shader.uniforms;(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(n.numClippingPlanes=ee.numPlanes,n.numIntersection=ee.numIntersection,p.clippingPlanes=ee.uniform),n.fog=t,n.lightsHash=r.state.hash,e.lights&&(p.ambientLightColor.value=r.state.ambient,p.directionalLights.value=r.state.directional,p.spotLights.value=r.state.spot,p.rectAreaLights.value=r.state.rectArea,p.pointLights.value=r.state.point,p.hemisphereLights.value=r.state.hemi,p.directionalShadowMap.value=r.state.directionalShadowMap,p.directionalShadowMatrix.value=r.state.directionalShadowMatrix,p.spotShadowMap.value=r.state.spotShadowMap,p.spotShadowMatrix.value=r.state.spotShadowMatrix,p.pointShadowMap.value=r.state.pointShadowMap,p.pointShadowMatrix.value=r.state.pointShadowMatrix);var f=n.program.getUniforms(),b=le.seqWithValue(f.seq,p);n.uniformsList=b}function Me(e,t,a,n){G=0;var r=v.get(a),s=u.state.lights;if(te&&(ae||e!==H)){var o=e===H&&a.id===F;ee.setState(a.clippingPlanes,a.clipIntersection,a.clipShadows,e,r,o)}!1===a.needsUpdate&&(void 0===r.program||a.fog&&r.fog!==t||a.lights&&r.lightsHash!==s.state.hash?a.needsUpdate=!0:void 0===r.numClippingPlanes||r.numClippingPlanes===ee.numPlanes&&r.numIntersection===ee.numIntersection||(a.needsUpdate=!0)),a.needsUpdate&&(ke(a,t,n),a.needsUpdate=!1);var i,c,d=!1,l=!1,p=!1,f=r.program,y=f.getUniforms(),w=r.shader.uniforms;if(g.useProgram(f.program)&&(d=!0,l=!0,p=!0),a.id!==F&&(F=a.id,l=!0),d||e!==H){if(y.setValue(h,"projectionMatrix",e.projectionMatrix),b.logarithmicDepthBuffer&&y.setValue(h,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),H!==(B||e)&&(H=B||e,l=!0,p=!0),a.isShaderMaterial||a.isMeshPhongMaterial||a.isMeshStandardMaterial||a.envMap){var A=y.map.cameraPosition;void 0!==A&&A.setValue(h,re.setFromMatrixPosition(e.matrixWorld))}(a.isMeshPhongMaterial||a.isMeshLambertMaterial||a.isMeshBasicMaterial||a.isMeshStandardMaterial||a.isShaderMaterial||a.skinning)&&y.setValue(h,"viewMatrix",e.matrixWorldInverse)}if(a.skinning){y.setOptional(h,n,"bindMatrix"),y.setOptional(h,n,"bindMatrixInverse");var S=n.skeleton;if(S){var E=S.bones;if(b.floatVertexTextures){if(void 0===S.boneTexture){var T=Math.sqrt(4*E.length);T=m.ceilPowerOfTwo(T),T=Math.max(T,4);var R=new Float32Array(T*T*4);R.set(S.boneMatrices);var _=new x(R,T,T,1023,1015);_.needsUpdate=!0,S.boneMatrices=R,S.boneTexture=_,S.boneTextureSize=T}y.setValue(h,"boneTexture",S.boneTexture),y.setValue(h,"boneTextureSize",S.boneTextureSize)}else y.setOptional(h,S,"boneMatrices")}}return l&&(y.setValue(h,"toneMappingExposure",I.toneMappingExposure),y.setValue(h,"toneMappingWhitePoint",I.toneMappingWhitePoint),a.lights&&(c=p,(i=w).ambientLightColor.needsUpdate=c,i.directionalLights.needsUpdate=c,i.pointLights.needsUpdate=c,i.spotLights.needsUpdate=c,i.rectAreaLights.needsUpdate=c,i.hemisphereLights.needsUpdate=c),t&&a.fog&&function(e,t){e.fogColor.value=t.color,t.isFog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t.isFogExp2&&(e.fogDensity.value=t.density)}(w,t),a.isMeshBasicMaterial?Pe(w,a):a.isMeshLambertMaterial?(Pe(w,a),function(e,t){t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap)}(w,a)):a.isMeshPhongMaterial?(Pe(w,a),a.isMeshToonMaterial?function(e,t){Le(e,t),t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(w,a):Le(w,a)):a.isMeshStandardMaterial?(Pe(w,a),a.isMeshPhysicalMaterial?function(e,t){e.clearCoat.value=t.clearCoat,e.clearCoatRoughness.value=t.clearCoatRoughness,De(e,t)}(w,a):De(w,a)):a.isMeshDepthMaterial?(Pe(w,a),function(e,t){t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(w,a)):a.isMeshDistanceMaterial?(Pe(w,a),function(e,t){t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias);e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(w,a)):a.isMeshNormalMaterial?(Pe(w,a),function(e,t){t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale);t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale));t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(w,a)):a.isLineBasicMaterial?(function(e,t){e.diffuse.value=t.color,e.opacity.value=t.opacity}(w,a),a.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(w,a)):a.isPointsMaterial?function(e,t){if(e.diffuse.value=t.color,e.opacity.value=t.opacity,e.size.value=t.size*Y,e.scale.value=.5*J,e.map.value=t.map,null!==t.map){if(!0===t.map.matrixAutoUpdate){var a=t.map.offset,n=t.map.repeat,r=t.map.rotation,s=t.map.center;t.map.matrix.setUvTransform(a.x,a.y,n.x,n.y,r,s.x,s.y)}e.uvTransform.value.copy(t.map.matrix)}}(w,a):a.isShadowMaterial&&(w.color.value=a.color,w.opacity.value=a.opacity),void 0!==w.ltc_1&&(w.ltc_1.value=me.LTC_1),void 0!==w.ltc_2&&(w.ltc_2.value=me.LTC_2),le.upload(h,r.uniformsList,w,I)),a.isShaderMaterial&&!0===a.uniformsNeedUpdate&&(le.upload(h,r.uniformsList,w,I),a.uniformsNeedUpdate=!1),y.setValue(h,"modelViewMatrix",n.modelViewMatrix),y.setValue(h,"normalMatrix",n.normalMatrix),y.setValue(h,"modelMatrix",n.matrixWorld),f}function Pe(e,t){var a;if(e.opacity.value=t.opacity,t.color&&(e.diffuse.value=t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.specularMap&&(e.specularMap.value=t.specularMap),t.envMap&&(e.envMap.value=t.envMap,e.flipEnvMap.value=t.envMap&&t.envMap.isCubeTexture?-1:1,e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity),t.map?a=t.map:t.specularMap?a=t.specularMap:t.displacementMap?a=t.displacementMap:t.normalMap?a=t.normalMap:t.bumpMap?a=t.bumpMap:t.roughnessMap?a=t.roughnessMap:t.metalnessMap?a=t.metalnessMap:t.alphaMap?a=t.alphaMap:t.emissiveMap&&(a=t.emissiveMap),void 0!==a){if(a.isWebGLRenderTarget&&(a=a.texture),!0===a.matrixAutoUpdate){var n=a.offset,r=a.repeat,s=a.rotation,o=a.center;a.matrix.setUvTransform(n.x,n.y,r.x,r.y,s,o.x,o.y)}e.uvTransform.value.copy(a.matrix)}}function Le(e,t){e.specular.value=t.specular,e.shininess.value=Math.max(t.shininess,1e-4),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale)),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}function De(e,t){e.roughness.value=t.roughness,e.metalness.value=t.metalness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap),t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale)),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)}this.animate=function(e){null!==(Ee=e)?Se||(Te(),Se=!0):xe()},this.render=function(e,t,a,n){if(t&&t.isCamera){if(!D){Z="",F=-1,H=null,!0===e.autoUpdate&&e.updateMatrixWorld(),null===t.parent&&t.updateMatrixWorld(),ue.enabled&&(t=ue.getCamera(t)),(u=N.get(e,t)).init(),e.onBeforeRender(I,e,t,a),ne.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),$.setFromMatrix(ne),ae=this.localClippingEnabled,te=ee.init(this.clippingPlanes,ae,t),(l=_.get(e,t)).init(),function e(t,a,n){if(!1===t.visible)return;if(t.layers.test(a.layers))if(t.isLight)u.pushLight(t),t.castShadow&&u.pushShadow(t);else if(t.isSprite)t.frustumCulled&&!$.intersectsSprite(t)||u.pushSprite(t);else if(t.isImmediateRenderObject)n&&re.setFromMatrixPosition(t.matrixWorld).applyMatrix4(ne),l.push(t,null,t.material,re.z,null);else if((t.isMesh||t.isLine||t.isPoints)&&(t.isSkinnedMesh&&t.skeleton.update(),!t.frustumCulled||$.intersectsObject(t))){n&&re.setFromMatrixPosition(t.matrixWorld).applyMatrix4(ne);var r=T.update(t),s=t.material;if(Array.isArray(s))for(var o=r.groups,i=0,c=o.length;i=b.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+e+" texture units while this GPU supports only "+b.maxTextures),G+=1,e},this.setTexture2D=(Ae=!1,function(e,t){e&&e.isWebGLRenderTarget&&(Ae||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),Ae=!0),e=e.texture),w.setTexture2D(e,t)}),this.setTexture=function(){var e=!1;return function(t,a){e||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),e=!0),w.setTexture2D(t,a)}}(),this.setTextureCube=function(){var e=!1;return function(t,a){t&&t.isWebGLRenderTargetCube&&(e||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),e=!0),t=t.texture),t&&t.isCubeTexture||Array.isArray(t.image)&&6===t.image.length?w.setTextureCube(t,a):w.setTextureCubeDynamic(t,a)}}(),this.getRenderTarget=function(){return O},this.setRenderTarget=function(e){O=e,e&&void 0===v.get(e).__webglFramebuffer&&w.setupRenderTarget(e);var t=null,a=!1;if(e){var n=v.get(e).__webglFramebuffer;e.isWebGLRenderTargetCube?(t=n[e.activeCubeFace],a=!0):t=n,z.copy(e.viewport),q.copy(e.scissor),V=e.scissorTest}else z.copy(K).multiplyScalar(Y),q.copy(X).multiplyScalar(Y),V=Q;if(U!==t&&(h.bindFramebuffer(h.FRAMEBUFFER,t),U=t),g.viewport(z),g.scissor(q),g.setScissorTest(V),a){var r=v.get(e.texture);h.framebufferTexture2D(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_CUBE_MAP_POSITIVE_X+e.activeCubeFace,r.__webglTexture,e.activeMipMapLevel)}},this.readRenderTargetPixels=function(e,t,a,n,r,s){if(e&&e.isWebGLRenderTarget){var o=v.get(e).__webglFramebuffer;if(o){var i=!1;o!==U&&(h.bindFramebuffer(h.FRAMEBUFFER,o),i=!0);try{var c=e.texture,d=c.format,l=c.type;if(1023!==d&&C.convert(d)!==h.getParameter(h.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!(1009===l||C.convert(l)===h.getParameter(h.IMPLEMENTATION_COLOR_READ_TYPE)||1015===l&&(p.get("OES_texture_float")||p.get("WEBGL_color_buffer_float"))||1016===l&&p.get("EXT_color_buffer_half_float")))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");h.checkFramebufferStatus(h.FRAMEBUFFER)===h.FRAMEBUFFER_COMPLETE?t>=0&&t<=e.width-n&&a>=0&&a<=e.height-r&&h.readPixels(t,a,n,r,C.convert(d),C.convert(l),s):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{i&&h.bindFramebuffer(h.FRAMEBUFFER,U)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")},this.copyFramebufferToTexture=function(e,t,a){var n=t.image.width,r=t.image.height,s=C.convert(t.format);this.setTexture2D(t,0),h.copyTexImage2D(h.TEXTURE_2D,a||0,s,e.x,e.y,n,r,0)}}function wa(e,t){this.name="",this.color=new he(e),this.density=void 0!==t?t:25e-5}function Aa(e,t,a){this.name="",this.color=new he(e),this.near=void 0!==t?t:1,this.far=void 0!==a?a:1e3}function Sa(){ze.call(this),this.type="Scene",this.background=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0}function Ea(e){_e.call(this),this.type="SpriteMaterial",this.color=new he(16777215),this.map=null,this.rotation=0,this.fog=!1,this.lights=!1,this.setValues(e)}function xa(e){ze.call(this),this.type="Sprite",this.material=void 0!==e?e:new Ea,this.center=new p(.5,.5)}function Ta(){ze.call(this),this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function Ra(e,t){if(e=e||[],this.bones=e.slice(0),this.boneMatrices=new Float32Array(16*this.bones.length),void 0===t)this.calculateInverses();else if(this.bones.length===t.length)this.boneInverses=t.slice(0);else{console.warn("THREE.Skeleton boneInverses is the wrong length."),this.boneInverses=[];for(var a=0,n=this.bones.length;a=0?(h=e(g-d,b,h),m.subVectors(u,h)):(h=e(g+d,b,h),m.subVectors(h,u)),b-d>=0?(h=e(g,b-d,h),p.subVectors(u,h)):(h=e(g,b+d,h),p.subVectors(h,u)),l.crossVectors(m,p).normalize(),i.push(l.x,l.y,l.z),c.push(g,b)}}for(n=0;n.9&&o<.1&&(t<.2&&(s[e+0]+=1),a<.2&&(s[e+2]+=1),n<.2&&(s[e+4]+=1))}}()}(),this.addAttribute("position",new rt(r,3)),this.addAttribute("normal",new rt(r.slice(),3)),this.addAttribute("uv",new rt(s,2)),0===n?this.computeVertexNormals():this.normalizeNormals()}function qa(e,t){Ye.call(this),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Va(e,t)),this.mergeVertices()}function Va(e,t){za.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type="TetrahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ga(e,t){Ye.call(this),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Wa(e,t)),this.mergeVertices()}function Wa(e,t){za.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ja(e,t){Ye.call(this),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Ya(e,t)),this.mergeVertices()}function Ya(e,t){var a=(1+Math.sqrt(5))/2,n=[-1,a,0,1,a,0,-1,-a,0,1,-a,0,0,-1,a,0,1,a,0,-1,-a,0,1,-a,a,0,-1,a,0,1,-a,0,-1,-a,0,1];za.call(this,n,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type="IcosahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ka(e,t){Ye.call(this),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Xa(e,t)),this.mergeVertices()}function Xa(e,t){var a=(1+Math.sqrt(5))/2,n=1/a,r=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-n,-a,0,-n,a,0,n,-a,0,n,a,-n,-a,0,-n,a,0,n,-a,0,n,a,0,-a,0,-n,a,0,-n,-a,0,n,a,0,n];za.call(this,r,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Qa(e,t,a,n,r,s){Ye.call(this),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:a,radialSegments:n,closed:r},void 0!==s&&console.warn("THREE.TubeGeometry: taper has been removed.");var o=new $a(e,t,a,n,r);this.tangents=o.tangents,this.normals=o.normals,this.binormals=o.binormals,this.fromBufferGeometry(o),this.mergeVertices()}function $a(e,t,a,n,r){bt.call(this),this.type="TubeBufferGeometry",this.parameters={path:e,tubularSegments:t,radius:a,radialSegments:n,closed:r},t=t||64,a=a||1,n=n||8,r=r||!1;var s=e.computeFrenetFrames(t,r);this.tangents=s.tangents,this.normals=s.normals,this.binormals=s.binormals;var o,i,c=new y,d=new y,l=new p,u=new y,h=[],m=[],f=[],b=[];function g(r){u=e.getPointAt(r/t,u);var o=s.normals[r],l=s.binormals[r];for(i=0;i<=n;i++){var p=i/n*Math.PI*2,f=Math.sin(p),b=-Math.cos(p);d.x=b*o.x+f*l.x,d.y=b*o.y+f*l.y,d.z=b*o.z+f*l.z,d.normalize(),m.push(d.x,d.y,d.z),c.x=u.x+a*d.x,c.y=u.y+a*d.y,c.z=u.z+a*d.z,h.push(c.x,c.y,c.z)}}!function(){for(o=0;oa)){var n=e.ray.origin.distanceTo(ia);ne.far||t.push({distance:n,point:ia.clone(),face:null,object:this})}}),clone:function(){return new this.constructor(this.material).copy(this)},copy:function(e){return ze.prototype.copy.call(this,e),void 0!==e.center&&this.center.copy(e.center),this}}),Ta.prototype=Object.assign(Object.create(ze.prototype),{constructor:Ta,copy:function(e){ze.prototype.copy.call(this,e,!1);for(var t=e.levels,a=0,n=t.length;a1){e.setFromMatrixPosition(a.matrixWorld),t.setFromMatrixPosition(this.matrixWorld);var r=e.distanceTo(t);n[0].object.visible=!0;for(var s=1,o=n.length;s=n[s].distance;s++)n[s-1].object.visible=!1,n[s].object.visible=!0;for(;so))h.applyMatrix4(this.matrixWorld),(x=n.ray.origin.distanceTo(h))n.far||r.push({distance:x,point:u.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}else for(g=0,v=f.length/3-1;go))h.applyMatrix4(this.matrixWorld),(x=n.ray.origin.distanceTo(h))n.far||r.push({distance:x,point:u.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}}else if(i.isGeometry){var S=i.vertices,E=S.length;for(g=0;go))h.applyMatrix4(this.matrixWorld),(x=n.ray.origin.distanceTo(h))n.far||r.push({distance:x,point:u.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),Pa.prototype=Object.assign(Object.create(Ma.prototype),{constructor:Pa,isLineSegments:!0,computeLineDistances:function(){var e=new y,t=new y;return function(){var a=this.geometry;if(a.isBufferGeometry)if(null===a.index){for(var n=a.attributes.position,r=[],s=0,o=n.count;sn.far)return;r.push({distance:d,distanceToRay:Math.sqrt(o),point:c.clone(),index:a,face:null,object:s})}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),Ia.prototype=Object.assign(Object.create(ze.prototype),{constructor:Ia,isGroup:!0}),Da.prototype=Object.assign(Object.create(w.prototype),{constructor:Da,isVideoTexture:!0,update:function(){var e=this.image;e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),Oa.prototype=Object.create(w.prototype),Oa.prototype.constructor=Oa,Oa.prototype.isCompressedTexture=!0,Ua.prototype=Object.create(w.prototype),Ua.prototype.constructor=Ua,Ua.prototype.isDepthTexture=!0,Fa.prototype=Object.create(bt.prototype),Fa.prototype.constructor=Fa,Za.prototype=Object.create(Ye.prototype),Za.prototype.constructor=Za,Ha.prototype=Object.create(bt.prototype),Ha.prototype.constructor=Ha,Ba.prototype=Object.create(Ye.prototype),Ba.prototype.constructor=Ba,za.prototype=Object.create(bt.prototype),za.prototype.constructor=za,qa.prototype=Object.create(Ye.prototype),qa.prototype.constructor=qa,Va.prototype=Object.create(za.prototype),Va.prototype.constructor=Va,Ga.prototype=Object.create(Ye.prototype),Ga.prototype.constructor=Ga,Wa.prototype=Object.create(za.prototype),Wa.prototype.constructor=Wa,Ja.prototype=Object.create(Ye.prototype),Ja.prototype.constructor=Ja,Ya.prototype=Object.create(za.prototype),Ya.prototype.constructor=Ya,Ka.prototype=Object.create(Ye.prototype),Ka.prototype.constructor=Ka,Xa.prototype=Object.create(za.prototype),Xa.prototype.constructor=Xa,Qa.prototype=Object.create(Ye.prototype),Qa.prototype.constructor=Qa,$a.prototype=Object.create(bt.prototype),$a.prototype.constructor=$a,en.prototype=Object.create(Ye.prototype),en.prototype.constructor=en,tn.prototype=Object.create(bt.prototype),tn.prototype.constructor=tn,an.prototype=Object.create(Ye.prototype),an.prototype.constructor=an,nn.prototype=Object.create(bt.prototype),nn.prototype.constructor=nn;var rn=function(e,t,a){a=a||2;var n,r,s,o,i,c,d,l=t&&t.length,u=l?t[0]*a:e.length,h=sn(e,0,u,a,!0),m=[];if(!h)return m;if(l&&(h=function(e,t,a,n){var r,s,o,i,c,d=[];for(r=0,s=t.length;r80*a){n=s=e[0],r=o=e[1];for(var p=a;ps&&(s=i),c>o&&(o=c);d=0!==(d=Math.max(s-n,o-r))?1/d:0}return cn(h,m,a,n,r,d),m};function sn(e,t,a,n,r){var s,o;if(r===function(e,t,a,n){for(var r=0,s=t,o=a-n;s0)for(s=t;s=t;s-=n)o=xn(s,e[s],e[s+1],o);return o&&wn(o,o.next)&&(Tn(o),o=o.next),o}function on(e,t){if(!e)return e;t||(t=e);var a,n=e;do{if(a=!1,n.steiner||!wn(n,n.next)&&0!==vn(n.prev,n,n.next))n=n.next;else{if(Tn(n),(n=t=n.prev)===n.next)break;a=!0}}while(a||n!==t);return t}function cn(e,t,a,n,r,s,o){if(e){!o&&s&&function(e,t,a,n){var r=e;do{null===r.z&&(r.z=fn(r.x,r.y,t,a,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,a,n,r,s,o,i,c,d=1;do{for(a=e,e=null,s=null,o=0;a;){for(o++,n=a,i=0,t=0;t0||c>0&&n;)0!==i&&(0===c||!n||a.z<=n.z)?(r=a,a=a.nextZ,i--):(r=n,n=n.nextZ,c--),s?s.nextZ=r:e=r,r.prevZ=s,s=r;a=n}s.nextZ=null,d*=2}while(o>1)}(r)}(e,n,r,s);for(var i,c,d=e;e.prev!==e.next;)if(i=e.prev,c=e.next,s?ln(e,n,r,s):dn(e))t.push(i.i/a),t.push(e.i/a),t.push(c.i/a),Tn(e),e=c.next,d=c.next;else if((e=c)===d){o?1===o?cn(e=un(e,t,a),t,a,n,r,s,2):2===o&&hn(e,t,a,n,r,s):cn(on(e),t,a,n,r,s,1);break}}}function dn(e){var t=e.prev,a=e,n=e.next;if(vn(t,a,n)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(yn(t.x,t.y,a.x,a.y,n.x,n.y,r.x,r.y)&&vn(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function ln(e,t,a,n){var r=e.prev,s=e,o=e.next;if(vn(r,s,o)>=0)return!1;for(var i=r.xs.x?r.x>o.x?r.x:o.x:s.x>o.x?s.x:o.x,l=r.y>s.y?r.y>o.y?r.y:o.y:s.y>o.y?s.y:o.y,u=fn(i,c,t,a,n),h=fn(d,l,t,a,n),m=e.nextZ;m&&m.z<=h;){if(m!==e.prev&&m!==e.next&&yn(r.x,r.y,s.x,s.y,o.x,o.y,m.x,m.y)&&vn(m.prev,m,m.next)>=0)return!1;m=m.nextZ}for(m=e.prevZ;m&&m.z>=u;){if(m!==e.prev&&m!==e.next&&yn(r.x,r.y,s.x,s.y,o.x,o.y,m.x,m.y)&&vn(m.prev,m,m.next)>=0)return!1;m=m.prevZ}return!0}function un(e,t,a){var n=e;do{var r=n.prev,s=n.next.next;!wn(r,s)&&An(r,n,n.next,s)&&Sn(r,s)&&Sn(s,r)&&(t.push(r.i/a),t.push(n.i/a),t.push(s.i/a),Tn(n),Tn(n.next),n=e=s),n=n.next}while(n!==e);return n}function hn(e,t,a,n,r,s){var o=e;do{for(var i=o.next.next;i!==o.prev;){if(o.i!==i.i&&gn(o,i)){var c=En(o,i);return o=on(o,o.next),c=on(c,c.next),cn(o,t,a,n,r,s),void cn(c,t,a,n,r,s)}i=i.next}o=o.next}while(o!==e)}function mn(e,t){return e.x-t.x}function pn(e,t){if(t=function(e,t){var a,n=t,r=e.x,s=e.y,o=-1/0;do{if(s<=n.y&&s>=n.next.y&&n.next.y!==n.y){var i=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(i<=r&&i>o){if(o=i,i===r){if(s===n.y)return n;if(s===n.next.y)return n.next}a=n.x=n.x&&n.x>=l&&r!==n.x&&yn(sa.x)&&Sn(n,e)&&(a=n,h=c),n=n.next;return a}(e,t)){var a=En(t,e);on(a,a.next)}}function fn(e,t,a,n,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-a)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-n)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function bn(e){var t=e,a=e;do{t.x=0&&(e-o)*(n-i)-(a-o)*(t-i)>=0&&(a-o)*(s-i)-(r-o)*(n-i)>=0}function gn(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var a=e;do{if(a.i!==e.i&&a.next.i!==e.i&&a.i!==t.i&&a.next.i!==t.i&&An(a,a.next,e,t))return!0;a=a.next}while(a!==e);return!1}(e,t)&&Sn(e,t)&&Sn(t,e)&&function(e,t){var a=e,n=!1,r=(e.x+t.x)/2,s=(e.y+t.y)/2;do{a.y>s!=a.next.y>s&&a.next.y!==a.y&&r<(a.next.x-a.x)*(s-a.y)/(a.next.y-a.y)+a.x&&(n=!n),a=a.next}while(a!==e);return n}(e,t)}function vn(e,t,a){return(t.y-e.y)*(a.x-t.x)-(t.x-e.x)*(a.y-t.y)}function wn(e,t){return e.x===t.x&&e.y===t.y}function An(e,t,a,n){return!!(wn(e,t)&&wn(a,n)||wn(e,n)&&wn(a,t))||vn(e,t,a)>0!=vn(e,t,n)>0&&vn(a,n,e)>0!=vn(a,n,t)>0}function Sn(e,t){return vn(e.prev,e,e.next)<0?vn(e,t,e.next)>=0&&vn(e,e.prev,t)>=0:vn(e,t,e.prev)<0||vn(e,e.next,t)<0}function En(e,t){var a=new Rn(e.i,e.x,e.y),n=new Rn(t.i,t.x,t.y),r=e.next,s=t.prev;return e.next=t,t.prev=e,a.next=r,r.prev=a,n.next=a,a.prev=n,s.next=n,n.prev=s,n}function xn(e,t,a,n){var r=new Rn(e,t,a);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Tn(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Rn(e,t,a){this.i=e,this.x=t,this.y=a,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}var _n={area:function(e){for(var t=e.length,a=0,n=t-1,r=0;r2&&e[t-1].equals(e[0])&&e.pop()}function kn(e,t){for(var a=0;a0)&&p.push(S,E,T),(c!==a-1||d0&&v(!0),t>0&&v(!1)),this.setIndex(d),this.addAttribute("position",new rt(l,3)),this.addAttribute("normal",new rt(u,3)),this.addAttribute("uv",new rt(h,2))}function Gn(e,t,a,n,r,s,o){qn.call(this,0,e,t,a,n,r,s,o),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:a,heightSegments:n,openEnded:r,thetaStart:s,thetaLength:o}}function Wn(e,t,a,n,r,s,o){Vn.call(this,0,e,t,a,n,r,s,o),this.type="ConeBufferGeometry",this.parameters={radius:e,height:t,radialSegments:a,heightSegments:n,openEnded:r,thetaStart:s,thetaLength:o}}function Jn(e,t,a,n){Ye.call(this),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:a,thetaLength:n},this.fromBufferGeometry(new Yn(e,t,a,n)),this.mergeVertices()}function Yn(e,t,a,n){bt.call(this),this.type="CircleBufferGeometry",this.parameters={radius:e,segments:t,thetaStart:a,thetaLength:n},e=e||1,t=void 0!==t?Math.max(3,t):8,a=void 0!==a?a:0,n=void 0!==n?n:2*Math.PI;var r,s,o=[],i=[],c=[],d=[],l=new y,u=new p;for(i.push(0,0,0),c.push(0,0,1),d.push(.5,.5),s=0,r=3;s<=t;s++,r+=3){var h=a+s/t*n;l.x=e*Math.cos(h),l.y=e*Math.sin(h),i.push(l.x,l.y,l.z),c.push(0,0,1),u.x=(i[r]/e+1)/2,u.y=(i[r+1]/e+1)/2,d.push(u.x,u.y)}for(r=1;r<=t;r++)o.push(r,r+1,0);this.setIndex(o),this.addAttribute("position",new rt(i,3)),this.addAttribute("normal",new rt(c,3)),this.addAttribute("uv",new rt(d,2))}Mn.prototype=Object.create(Ye.prototype),Mn.prototype.constructor=Mn,Pn.prototype=Object.create(bt.prototype),Pn.prototype.constructor=Pn,Pn.prototype.getArrays=function(){var e=this.getAttribute("position"),t=e?Array.prototype.slice.call(e.array):[],a=this.getAttribute("uv"),n=a?Array.prototype.slice.call(a.array):[],r=this.index;return{position:t,uv:n,index:r?Array.prototype.slice.call(r.array):[]}},Pn.prototype.addShapeList=function(e,t){var a=e.length;t.arrays=this.getArrays();for(var n=0;nNumber.EPSILON){var h=Math.sqrt(l),m=Math.sqrt(c*c+d*d),f=t.x-i/h,b=t.y+o/h,y=((a.x-d/m-f)*d-(a.y+c/m-b)*c)/(o*d-i*c),g=(n=f+o*y-e.x)*n+(r=b+i*y-e.y)*r;if(g<=2)return new p(n,r);s=Math.sqrt(g/2)}else{var v=!1;o>Number.EPSILON?c>Number.EPSILON&&(v=!0):o<-Number.EPSILON?c<-Number.EPSILON&&(v=!0):Math.sign(i)===Math.sign(d)&&(v=!0),v?(n=-i,r=o,s=Math.sqrt(l)):(n=o,r=i,s=Math.sqrt(l/2))}return new p(n/s,r/s)}for(var z=[],q=0,V=L.length,G=V-1,W=q+1;q=0;C--){for(D=C/w,O=g*Math.cos(D*Math.PI/2),I=v*Math.sin(D*Math.PI/2),q=0,V=L.length;q=0;){a=q,(n=q-1)<0&&(n=e.length-1);var r=0,s=E+2*w;for(r=0;r0||0===e.search(/^data\:image\/jpeg/);r.format=n?1022:1023,r.needsUpdate=!0,void 0!==t&&t(r)}),a,n),r},setCrossOrigin:function(e){return this.crossOrigin=e,this},setPath:function(e){return this.path=e,this}}),Object.assign(br.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(e,t){var a=this.getUtoTmapping(e);return this.getPoint(a,t)},getPoints:function(e){void 0===e&&(e=5);for(var t=[],a=0;a<=e;a++)t.push(this.getPoint(a/e));return t},getSpacedPoints:function(e){void 0===e&&(e=5);for(var t=[],a=0;a<=e;a++)t.push(this.getPointAt(a/e));return t},getLength:function(){var e=this.getLengths();return e[e.length-1]},getLengths:function(e){if(void 0===e&&(e=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,a,n=[],r=this.getPoint(0),s=0;for(n.push(0),a=1;a<=e;a++)s+=(t=this.getPoint(a/e)).distanceTo(r),n.push(s),r=t;return this.cacheArcLengths=n,n},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(e,t){var a,n=this.getLengths(),r=0,s=n.length;a=t||e*n[s-1];for(var o,i=0,c=s-1;i<=c;)if((o=n[r=Math.floor(i+(c-i)/2)]-a)<0)i=r+1;else{if(!(o>0)){c=r;break}c=r-1}if(n[r=c]===a)return r/(s-1);var d=n[r];return(r+(a-d)/(n[r+1]-d))/(s-1)},getTangent:function(e){var t=e-1e-4,a=e+1e-4;t<0&&(t=0),a>1&&(a=1);var n=this.getPoint(t);return this.getPoint(a).clone().sub(n).normalize()},getTangentAt:function(e){var t=this.getUtoTmapping(e);return this.getTangent(t)},computeFrenetFrames:function(e,t){var a,n,r,s=new y,o=[],i=[],c=[],d=new y,l=new f;for(a=0;a<=e;a++)n=a/e,o[a]=this.getTangentAt(n),o[a].normalize();i[0]=new y,c[0]=new y;var u=Number.MAX_VALUE,h=Math.abs(o[0].x),p=Math.abs(o[0].y),b=Math.abs(o[0].z);for(h<=u&&(u=h,s.set(1,0,0)),p<=u&&(u=p,s.set(0,1,0)),b<=u&&s.set(0,0,1),d.crossVectors(o[0],s).normalize(),i[0].crossVectors(o[0],d),c[0].crossVectors(o[0],i[0]),a=1;a<=e;a++)i[a]=i[a-1].clone(),c[a]=c[a-1].clone(),d.crossVectors(o[a-1],o[a]),d.length()>Number.EPSILON&&(d.normalize(),r=Math.acos(m.clamp(o[a-1].dot(o[a]),-1,1)),i[a].applyMatrix4(l.makeRotationAxis(d,r))),c[a].crossVectors(o[a],i[a]);if(!0===t)for(r=Math.acos(m.clamp(i[0].dot(i[e]),-1,1)),r/=e,o[0].dot(d.crossVectors(i[0],i[e]))>0&&(r=-r),a=1;a<=e;a++)i[a].applyMatrix4(l.makeRotationAxis(o[a],r*a)),c[a].crossVectors(o[a],i[a]);return{tangents:o,normals:i,binormals:c}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){var e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),yr.prototype=Object.create(br.prototype),yr.prototype.constructor=yr,yr.prototype.isEllipseCurve=!0,yr.prototype.getPoint=function(e,t){for(var a=t||new p,n=2*Math.PI,r=this.aEndAngle-this.aStartAngle,s=Math.abs(r)n;)r-=n;r0?0:(Math.floor(Math.abs(l)/i.length)+1)*i.length:0===u&&l===c-1&&(l=c-2,u=1),this.closed||l>0?a=i[(l-1)%c]:(wr.subVectors(i[0],i[1]).add(i[0]),a=wr),n=i[l%c],r=i[(l+1)%c],this.closed||l+2n.length-2?n.length-1:s+1],l=n[s>n.length-3?n.length-1:s+2];return a.set(Tr(o,i.x,c.x,d.x,l.x),Tr(o,i.y,c.y,d.y,l.y)),a},Cr.prototype.copy=function(e){br.prototype.copy.call(this,e),this.points=[];for(var t=0,a=e.points.length;t=t){var r=a[n]-t,s=this.curves[n],o=s.getLength(),i=0===o?0:1-r/o;return s.getPointAt(i)}n++}return null},getLength:function(){var e=this.getCurveLengths();return e[e.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var e=[],t=0,a=0,n=this.curves.length;a1&&!a[a.length-1].equals(a[0])&&a.push(a[0]),a},copy:function(e){br.prototype.copy.call(this,e),this.curves=[];for(var t=0,a=e.curves.length;t0){var d=c.getPoint(0);d.equals(this.currentPoint)||this.lineTo(d.x,d.y)}this.curves.push(c);var l=c.getPoint(1);this.currentPoint.copy(l)},copy:function(e){return Dr.prototype.copy.call(this,e),this.currentPoint.copy(e.currentPoint),this},toJSON:function(){var e=Dr.prototype.toJSON.call(this);return e.currentPoint=this.currentPoint.toArray(),e},fromJSON:function(e){return Dr.prototype.fromJSON.call(this,e),this.currentPoint.fromArray(e.currentPoint),this}}),Ur.prototype=Object.assign(Object.create(Or.prototype),{constructor:Ur,getPointsHoles:function(e){for(var t=[],a=0,n=this.holes.length;a=r)break e;var i=t[1];e=(r=t[--a-1]))break t}s=a,a=0}for(;a>>1;et;)--s;if(++s,0!==r||s!==n){r>=s&&(r=(s=Math.max(s,1))-1);var o=this.getValueSize();this.times=ss.arraySlice(a,r,s),this.values=ss.arraySlice(this.values,r*o,s*o)}return this},validate:function(){var e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);var a=this.times,n=this.values,r=a.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);for(var s=null,o=0;o!==r;o++){var i=a[o];if("number"==typeof i&&isNaN(i)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,i),e=!1;break}if(null!==s&&s>i){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,i,s),e=!1;break}s=i}if(void 0!==n&&ss.isTypedArray(n)){o=0;for(var c=n.length;o!==c;++o){var d=n[o];if(isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,d),e=!1;break}}}return e},optimize:function(){for(var e=this.times,t=this.values,a=this.getValueSize(),n=2302===this.getInterpolation(),r=1,s=e.length-1,o=1;o0){e[r]=e[s];for(p=s*a,f=r*a,h=0;h!==a;++h)t[f+h]=t[p+h];++r}return r!==e.length&&(this.times=ss.arraySlice(e,0,r),this.values=ss.arraySlice(t,0,r*a)),this}}),is.prototype=Object.assign(Object.create(os.prototype),{constructor:is,ValueTypeName:"vector"}),Object.assign(cs,{parse:function(e){for(var t=[],a=e.tracks,n=1/(e.fps||1),r=0,s=a.length;r!==s;++r)t.push(os.parse(a[r]).scale(n));return new cs(e.name,e.duration,t)},toJSON:function(e){for(var t=[],a=e.tracks,n={name:e.name,duration:e.duration,tracks:t},r=0,s=a.length;r!==s;++r)t.push(os.toJSON(a[r]));return n},CreateFromMorphTargetSequence:function(e,t,a,n){for(var r=t.length,s=[],o=0;o1){var d=n[u=c[1]];d||(n[u]=d=[]),d.push(i)}}var l=[];for(var u in n)l.push(cs.CreateFromMorphTargetSequence(u,n[u],t,a));return l},parseAnimation:function(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var a=function(e,t,a,n,r){if(0!==a.length){var s=[],o=[];ss.flattenJSON(a,s,o,n),0!==s.length&&r.push(new e(t,s,o))}},n=[],r=e.name||"default",s=e.length||-1,o=e.fps||30,i=e.hierarchy||[],c=0;c1?e.skinWeights[n+1]:0,i=a>2?e.skinWeights[n+2]:0,c=a>3?e.skinWeights[n+3]:0;t.skinWeights.push(new A(s,o,i,c))}if(e.skinIndices)for(n=0,r=e.skinIndices.length;n1?e.skinIndices[n+1]:0,u=a>2?e.skinIndices[n+2]:0,h=a>3?e.skinIndices[n+3]:0;t.skinIndices.push(new A(d,l,u,h))}t.bones=e.bones,t.bones&&t.bones.length>0&&(t.skinWeights.length!==t.skinIndices.length||t.skinIndices.length!==t.vertices.length)&&console.warn("When skinning, number of vertices ("+t.vertices.length+"), skinIndices ("+t.skinIndices.length+"), and skinWeights ("+t.skinWeights.length+") should match.")}(e,a),function(e,t){var a=e.scale;if(void 0!==e.morphTargets)for(var n=0,r=e.morphTargets.length;n0){console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.');var l=t.faces,u=e.morphColors[0].colors;for(n=0,r=l.length;n0&&(t.animations=a)}(e,a),a.computeFaceNormals(),a.computeBoundingSphere(),void 0===e.materials||0===e.materials.length?{geometry:a}:{geometry:a,materials:bs.prototype.initMaterials(e.materials,t,this.crossOrigin)}}}),Object.assign(function(e){this.manager=void 0!==e?e:dr,this.texturePath=""}.prototype,{load:function(e,t,a,n){""===this.texturePath&&(this.texturePath=e.substring(0,e.lastIndexOf("/")+1));var r=this;new ur(r.manager).load(e,(function(a){var s=null;try{s=JSON.parse(a)}catch(t){return void 0!==n&&n(t),void console.error("THREE:ObjectLoader: Can't parse "+e+".",t.message)}var o=s.metadata;void 0!==o&&void 0!==o.type&&"geometry"!==o.type.toLowerCase()?r.parse(s,t):console.error("THREE.ObjectLoader: Can't load "+e+". Use THREE.JSONLoader instead.")}),a,n)},setTexturePath:function(e){this.texturePath=e},setCrossOrigin:function(e){this.crossOrigin=e},parse:function(e,t){var a=this.parseShape(e.shapes),n=this.parseGeometries(e.geometries,a),r=this.parseImages(e.images,(function(){void 0!==t&&t(i)})),s=this.parseTextures(e.textures,r),o=this.parseMaterials(e.materials,s),i=this.parseObject(e.object,n,o);return e.animations&&(i.animations=this.parseAnimations(e.animations)),void 0!==e.images&&0!==e.images.length||void 0!==t&&t(i),i},parseShape:function(e){var t={};if(void 0!==e)for(var a=0,n=e.length;a0){var s=new mr(new cr(t));s.setCrossOrigin(this.crossOrigin);for(var o=0,i=e.length;o0?new Na(o,i):new Rt(o,i);break;case"LOD":n=new Ta;break;case"Line":n=new Ma(r(e.geometry),s(e.material),e.mode);break;case"LineLoop":n=new La(r(e.geometry),s(e.material));break;case"LineSegments":n=new Pa(r(e.geometry),s(e.material));break;case"PointCloud":case"Points":n=new Ca(r(e.geometry),s(e.material));break;case"Sprite":n=new xa(s(e.material));break;case"Group":n=new Ia;break;default:n=new ze}if(n.uuid=e.uuid,void 0!==e.name&&(n.name=e.name),void 0!==e.matrix?(n.matrix.fromArray(e.matrix),n.matrix.decompose(n.position,n.quaternion,n.scale)):(void 0!==e.position&&n.position.fromArray(e.position),void 0!==e.rotation&&n.rotation.fromArray(e.rotation),void 0!==e.quaternion&&n.quaternion.fromArray(e.quaternion),void 0!==e.scale&&n.scale.fromArray(e.scale)),void 0!==e.castShadow&&(n.castShadow=e.castShadow),void 0!==e.receiveShadow&&(n.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(n.shadow.bias=e.shadow.bias),void 0!==e.shadow.radius&&(n.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&n.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(n.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(n.visible=e.visible),void 0!==e.userData&&(n.userData=e.userData),void 0!==e.children)for(var c=e.children,d=0;dNumber.EPSILON){if(d<0&&(o=t[s],c=-c,i=t[r],d=-d),e.yi.y)continue;if(e.y===o.y){if(e.x===o.x)return!0}else{var l=d*(e.x-o.x)-c*(e.y-o.y);if(0===l)return!0;if(l<0)continue;n=!n}}else{if(e.y!==o.y)continue;if(i.x<=e.x&&e.x<=o.x||o.x<=e.x&&e.x<=i.x)return!0}}return n}var r=_n.isClockWise,s=this.subPaths;if(0===s.length)return[];if(!0===t)return a(s);var o,i,c,d=[];if(1===s.length)return i=s[0],(c=new Ur).curves=i.curves,d.push(c),d;var l=!r(s[0].getPoints());l=e?!l:l;var u,h,m=[],p=[],f=[],b=0;p[b]=void 0,f[b]=[];for(var y=0,g=s.length;y1){for(var v=!1,w=[],A=0,S=p.length;A0&&(v||(f=m))}y=0;for(var N=p.length;y0){this.source.connect(this.filters[0]);for(var e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(var e=1,t=this.filters.length;e=.5)for(var s=0;s!==r;++s)e[t+s]=e[a+s]},_slerp:function(e,t,a,n){b.slerpFlat(e,t,e,t,e,a,n)},_lerp:function(e,t,a,n,r){for(var s=1-n,o=0;o!==r;++o){var i=t+o;e[i]=e[i]*s+e[a+o]*n}}});var Vs,Gs,Ws,Js,Ys,Ks,Xs,Qs,$s,eo,to,ao;function no(e,t,a){var n=a||ro.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,n)}function ro(e,t,a){this.path=t,this.parsedPath=a||ro.parseTrackName(t),this.node=ro.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e}function so(e,t,a){this._mixer=e,this._clip=t,this._localRoot=a||null;for(var n=t.tracks,r=n.length,s=new Array(r),o={endingStart:2400,endingEnd:2400},i=0;i!==r;++i){var c=n[i].createInterpolant(null);s[i]=c,c.settings=o}this._interpolantSettings=o,this._interpolants=s,this._propertyBindings=new Array(r),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}function oo(e){this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}function io(e){"string"==typeof e&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}function co(){bt.call(this),this.type="InstancedBufferGeometry",this.maxInstancedCount=void 0}function lo(e,t,a,n){this.uuid=m.generateUUID(),this.data=e,this.itemSize=t,this.offset=a,this.normalized=!0===n}function uo(e,t){this.uuid=m.generateUUID(),this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.dynamic=!1,this.updateRange={offset:0,count:-1},this.onUploadCallback=function(){},this.version=0}function ho(e,t,a){uo.call(this,e,t),this.meshPerAttribute=a||1}function mo(e,t,a){Ke.call(this,e,t),this.meshPerAttribute=a||1}function po(e,t){return e.distance-t.distance}function fo(e,t,a,n){if(!1!==e.visible&&(e.raycast(t,a),!0===n))for(var r=e.children,s=0,o=r.length;s=t){var l=t++,u=e[l];a[u.uuid]=d,e[d]=u,a[c]=l,e[l]=i;for(var h=0,m=r;h!==m;++h){var p=n[h],f=p[l],b=p[d];p[d]=f,p[l]=b}}}this.nCachedObjects_=t},uncache:function(){for(var e=this._objects,t=e.length,a=this.nCachedObjects_,n=this._indicesByUUID,r=this._bindings,s=r.length,o=0,i=arguments.length;o!==i;++o){var c=arguments[o],d=c.uuid,l=n[d];if(void 0!==l)if(delete n[d],l0)for(var c=this._interpolants,d=this._propertyBindings,l=0,u=c.length;l!==u;++l)c[l].evaluate(o),d[l].accumulate(n,i)}else this._updateWeight(e)},_updateWeight:function(e){var t=0;if(this.enabled){t=this.weight;var a=this._weightInterpolant;if(null!==a){var n=a.evaluate(e)[0];t*=n,e>a.parameterPositions[1]&&(this.stopFading(),0===n&&(this.enabled=!1))}}return this._effectiveWeight=t,t},_updateTimeScale:function(e){var t=0;if(!this.paused){t=this.timeScale;var a=this._timeScaleInterpolant;if(null!==a)t*=a.evaluate(e)[0],e>a.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t)}return this._effectiveTimeScale=t,t},_updateTime:function(e){var t=this.time+e;if(0===e)return t;var a=this._clip.duration,n=this.loop,r=this._loopCount;if(2200===n){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(t>=a)t=a;else{if(!(t<0))break e;t=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{var s=2202===n;if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),t>=a||t<0){var o=Math.floor(t/a);t-=a*o,r+=Math.abs(o);var i=this.repetitions-r;if(i<0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,t=e>0?a:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(0===i){var c=e<0;this._setEndings(c,!c,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}if(s&&1==(1&r))return this.time=t,a-t}return this.time=t,t},_setEndings:function(e,t,a){var n=this._interpolantSettings;a?(n.endingStart=2401,n.endingEnd=2401):(n.endingStart=e?this.zeroSlopeAtStart?2401:2400:2402,n.endingEnd=t?this.zeroSlopeAtEnd?2401:2400:2402)},_scheduleFading:function(e,t,a){var n=this._mixer,r=n.time,s=this._weightInterpolant;null===s&&(s=n._lendControlInterpolant(),this._weightInterpolant=s);var o=s.parameterPositions,i=s.sampleValues;return o[0]=r,i[0]=t,o[1]=r+e,i[1]=a,this}}),oo.prototype=Object.assign(Object.create(n.prototype),{constructor:oo,_bindAction:function(e,t){var a=e._localRoot||this._root,n=e._clip.tracks,r=n.length,s=e._propertyBindings,o=e._interpolants,i=a.uuid,c=this._bindingsByRootAndName,d=c[i];void 0===d&&(d={},c[i]=d);for(var l=0;l!==r;++l){var u=n[l],h=u.name,m=d[h];if(void 0!==m)s[l]=m;else{if(void 0!==(m=s[l])){null===m._cacheIndex&&(++m.referenceCount,this._addInactiveBinding(m,i,h));continue}var p=t&&t._propertyBindings[l].binding.parsedPath;++(m=new qs(ro.create(a,h,p),u.ValueTypeName,u.getValueSize())).referenceCount,this._addInactiveBinding(m,i,h),s[l]=m}o[l].resultBuffer=m.buffer}},_activateAction:function(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){var t=(e._localRoot||this._root).uuid,a=e._clip.uuid,n=this._actionsByClip[a];this._bindAction(e,n&&n.knownActions[0]),this._addInactiveAction(e,a,t)}for(var r=e._propertyBindings,s=0,o=r.length;s!==o;++s){var i=r[s];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(e)}},_deactivateAction:function(e){if(this._isActiveAction(e)){for(var t=e._propertyBindings,a=0,n=t.length;a!==n;++a){var r=t[a];0==--r.useCount&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}},_isActiveAction:function(e){var t=e._cacheIndex;return null!==t&&tthis.max.x||e.ythis.max.y)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y},getParameter:function(e,t){return(t||new p).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)},clampPoint:function(e,t){return(t||new p).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new p;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}),yo.prototype=Object.create(ze.prototype),yo.prototype.constructor=yo,yo.prototype.isImmediateRenderObject=!0,go.prototype=Object.create(Pa.prototype),go.prototype.constructor=go,go.prototype.update=function(){var e=new y,t=new y,a=new g;return function(){var n=["a","b","c"];this.object.updateMatrixWorld(!0),a.getNormalMatrix(this.object.matrixWorld);var r=this.object.matrixWorld,s=this.geometry.attributes.position,o=this.object.geometry;if(o&&o.isGeometry)for(var i=o.vertices,c=o.faces,d=0,l=0,u=c.length;l.99999?this.quaternion.set(0,0,0,1):e.y<-.99999?this.quaternion.set(1,0,0,0):(ao.set(e.z,0,-e.x).normalize(),to=Math.acos(e.y),this.quaternion.setFromAxisAngle(ao,to))}),Lo.prototype.setLength=function(e,t,a){void 0===t&&(t=.2*e),void 0===a&&(a=.2*t),this.line.scale.set(1,Math.max(0,e-t),1),this.line.updateMatrix(),this.cone.scale.set(a,t,a),this.cone.position.y=e,this.cone.updateMatrix()},Lo.prototype.setColor=function(e){this.line.material.color.copy(e),this.cone.material.color.copy(e)},jo.prototype=Object.create(Pa.prototype),jo.prototype.constructor=jo;function Co(e){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),xr.call(this,e),this.type="catmullrom"}br.create=function(e,t){return console.log("THREE.Curve.create() has been deprecated"),e.prototype=Object.create(br.prototype),e.prototype.constructor=e,e.prototype.getPoint=t,e},Object.assign(Dr.prototype,{createPointsGeometry:function(e){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");var t=this.getPoints(e);return this.createGeometry(t)},createSpacedPointsGeometry:function(e){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");var t=this.getSpacedPoints(e);return this.createGeometry(t)},createGeometry:function(e){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var t=new Ye,a=0,n=e.length;athis.maxSliceAdvancementPoint.x&&this.maxSliceAdvancementPoint.copy(this.lastIntersection)}IsHit(e){return null==this.lastBladeData&&(this.lastBladeData=new Fo,this.lastBladeData.handle.copy(this.blade.bladeWorldPositions[3]),this.lastBladeData.tip.copy(this.blade.bladeWorldPositions[2]),this.lastBladeData.time=e-1e3/90,this.beat.el.object3D.worldToLocal(this.lastBladeData.handle),this.beat.el.object3D.worldToLocal(this.lastBladeData.tip)),this.currentBladeData.tip.copy(this.blade.bladeWorldPositions[0]),this.currentBladeData.handle.copy(this.blade.bladeWorldPositions[1]),this.currentBladeData.time=e,this.beat.el.object3D.worldToLocal(this.currentBladeData.tip),this.beat.el.object3D.worldToLocal(this.currentBladeData.handle),this.artificialBladeData.time=(this.currentBladeData.time+this.lastBladeData.time)/2,this.artificialBladeData.tip.lerpVectors(this.lastBladeData.tip,this.currentBladeData.tip,.5),this.artificialBladeData.handle.lerpVectors(this.lastBladeData.handle,this.currentBladeData.handle,.5),this.processBladePosition(this.artificialBladeData),this.isHitDetected()||this.processBladePosition(this.currentBladeData),this.lastBladeData=this.currentBladeData,this.isHitDetected()}isHitDetected(){return this.state==Uo}processBladePosition(e){switch(this.state){case Io:this.handleStateNotReaching(e);break;case Do:this.handleStateReaching(e);break;case Oo:this.handleStateInsideBox(e);break;case Uo:this.handleStateHit(e)}this.lastTime=e.time}handleStateNotReaching(e){const t=e.time;this.CheckBladeInside(e)?(this.isGood||(this.badHit("Bad target hit!"),this.setState(Uo)),this.goodHitIfDot()?this.setState(Uo):(this.entryPoint.copy(this.intersection),this.entryTime=this.lastTime&&(t+this.lastTime)/2||t,this.setState(Oo))):this.reaching&&this.setState(Do)}handleStateReaching(e){const t=e.time;if(this.CheckBladeInside(e)){if(this.isGood){if(this.goodHitIfDot())return this.setState(Uo),!0;if(this.lastIntersection.xthis.bbox.min.x){const e=(this.bbox.min.x-this.lastIntersection.x)/(this.intersection.x-this.lastIntersection.x),a=this.lastIntersection.y+e*(this.intersection.y-this.lastIntersection.y);if(a>this.bbox.min.y&&a-this.hitPlane.constant||a.z<-this.hitPlane.constant||(this.reaching=!0,this.lastIntersection.copy(this.intersection),this.bladeLine.set(t,a),this.hitPlane.intersectLine(this.bladeLine,this.intersection)&&this.bbox.containsPoint(this.intersection)&&(this.bladeInside=!0,this.SetFurthestSlicePoint())),this.bladeInside}validateSlice(){const e=this.exitPoint.clone().sub(this.entryPoint),t=e.length()/(this.exitTime-this.entryTime)*1e3,a=e.x/(this.beat.bbox.max.x-this.beat.bbox.min.x);if(a<.3)return void this.badHit("Bad slice ratio!");const n=Bo(zo(a,.3,1),.3,1,50,100);e.normalize();const r=e.dot(new p(1,0));if(r<.625)return void this.badHit("Bad angle!");const s=this.bbox.max.y-this.bbox.min.y,o=(this.bbox.max.x,this.bbox.min.x,function(e,t,a){const n=Math.abs((a.x-t.x)*(t.y-e.y)-(a.y-t.y)*(t.x-e.x)),r=Math.sqrt(Math.pow(a.x-t.x,2)+Math.pow(a.y-t.y,2));return n/r}(this.bboxcenter,this.entryPoint,this.exitPoint)/s);let i=.05*s,c=.5*s;const d=Bo(zo(o,i,c),i,c,50,0),l=Bo(zo(t,5,25),5,25,0,50),u=50*r,h=n+l+u+d;return this.hitData={good:!0,score:qo(h),percent:qo(h/250*100),sliceRatioScore:qo(n),accuracyScore:qo(d),speedScore:qo(l),angleScore:qo(u),sliceRatio:qo(a),distFromCenter:qo(o),slashSpeed:qo(t),angleDot:qo(r)},this.beat.el.sceneEl.emit("setHitsDebug",this.hitData),this.hitData}badHit(e){this.hitData={good:!1,reason:e},this.beat.el.sceneEl.emit("setHitsDebug",this.hitData)}goodHitIfDot(){return!(!this.isGood||!this.beat.isDot())&&(this.hitData={good:!0,score:250,percent:100},this.beat.el.sceneEl.emit("setHitsDebug",this.hitData),!0)}reset(){this.reaching=[!1,!1],this.bladeInside=!1,this.HitDetected=!1}}class Ho{constructor(e,t,a){this.punch=e,this.beat=t,this.isGood=a}IsHit(e){if(this.HitDetected)return!0;if(this.punch.checkCollision(this.beat)){this.HitDetected=!0,this.HitIsGood=!0;const e=60,t=1.5,a=this.punch.el.components.punch.speed,n=a/t*40;let r;r=a<=t?e+Math.min(n,40):e+Bo(zo(a,1.5,6),1.5,6,40,70);const s=r/(e+70);this.score={score:r,percent:s}}return this.HitDetected}}function Bo(e,t,a,n,r){return n+(r-n)*(e-t)/(a-t)}function zo(e,t,a){return Math.min(Math.max(e,t),a)}function qo(e){return Math.round(1e3*e)/1e3}},function(e,t){e.exports="varying vec2 uvs;\nvoid main() {\n uvs.xy = uv.xy;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"},function(e,t,a){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var n=a(11),r={NODE_CLIENT:!1,NODE_ADMIN:!1,SDK_VERSION:"${JSCORE_VERSION}"},s=function(e,t){if(!e)throw o(t)},o=function(e){return new Error("Firebase Database ("+r.SDK_VERSION+") INTERNAL ASSERT FAILED: "+e)},i=function(e){for(var t=[],a=0,n=0;n>6|192,t[a++]=63&r|128):55296==(64512&r)&&n+1>18|240,t[a++]=r>>12&63|128,t[a++]=r>>6&63|128,t[a++]=63&r|128):(t[a++]=r>>12|224,t[a++]=r>>6&63|128,t[a++]=63&r|128)}return t},c={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray:function(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();for(var a=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,n=[],r=0;r>2,u=(3&s)<<4|i>>4,h=(15&i)<<2|d>>6,m=63&d;c||(m=64,o||(h=64)),n.push(a[l],a[u],a[h],a[m])}return n.join("")},encodeString:function(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(i(e),t)},decodeString:function(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){for(var t=[],a=0,n=0;a191&&r<224){var s=e[a++];t[n++]=String.fromCharCode((31&r)<<6|63&s)}else if(r>239&&r<365){var o=((7&r)<<18|(63&(s=e[a++]))<<12|(63&(i=e[a++]))<<6|63&e[a++])-65536;t[n++]=String.fromCharCode(55296+(o>>10)),t[n++]=String.fromCharCode(56320+(1023&o))}else{s=e[a++];var i=e[a++];t[n++]=String.fromCharCode((15&r)<<12|(63&s)<<6|63&i)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray:function(e,t){this.init_();for(var a=t?this.charToByteMapWebSafe_:this.charToByteMap_,n=[],r=0;r>4;if(n.push(d),64!==i){var l=o<<4&240|i>>2;if(n.push(l),64!==c){var u=i<<6&192|c;n.push(u)}}}return n},init_:function(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(var e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}},d=function(e){try{return c.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null}; +Object.assign(ro.prototype,{_getValue_unbound:ro.prototype.getValue,_setValue_unbound:ro.prototype.setValue}),Object.assign(function(){this.uuid=m.generateUUID(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;var e={};this._indicesByUUID=e;for(var t=0,a=arguments.length;t!==a;++t)e[arguments[t].uuid]=t;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};var n=this;this.stats={objects:{get total(){return n._objects.length},get inUse(){return this.total-n.nCachedObjects_}},get bindingsPerObject(){return n._bindings.length}}}.prototype,{isAnimationObjectGroup:!0,add:function(){for(var e=this._objects,t=e.length,a=this.nCachedObjects_,n=this._indicesByUUID,r=this._paths,s=this._parsedPaths,o=this._bindings,i=o.length,c=void 0,d=0,l=arguments.length;d!==l;++d){var u=arguments[d],h=u.uuid,m=n[h];if(void 0===m){m=t++,n[h]=m,e.push(u);for(var p=0,f=i;p!==f;++p)o[p].push(new ro(u,r[p],s[p]))}else if(m=t){var l=t++,u=e[l];a[u.uuid]=d,e[d]=u,a[c]=l,e[l]=i;for(var h=0,m=r;h!==m;++h){var p=n[h],f=p[l],b=p[d];p[d]=f,p[l]=b}}}this.nCachedObjects_=t},uncache:function(){for(var e=this._objects,t=e.length,a=this.nCachedObjects_,n=this._indicesByUUID,r=this._bindings,s=r.length,o=0,i=arguments.length;o!==i;++o){var c=arguments[o],d=c.uuid,l=n[d];if(void 0!==l)if(delete n[d],l0)for(var c=this._interpolants,d=this._propertyBindings,l=0,u=c.length;l!==u;++l)c[l].evaluate(o),d[l].accumulate(n,i)}else this._updateWeight(e)},_updateWeight:function(e){var t=0;if(this.enabled){t=this.weight;var a=this._weightInterpolant;if(null!==a){var n=a.evaluate(e)[0];t*=n,e>a.parameterPositions[1]&&(this.stopFading(),0===n&&(this.enabled=!1))}}return this._effectiveWeight=t,t},_updateTimeScale:function(e){var t=0;if(!this.paused){t=this.timeScale;var a=this._timeScaleInterpolant;if(null!==a)t*=a.evaluate(e)[0],e>a.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t)}return this._effectiveTimeScale=t,t},_updateTime:function(e){var t=this.time+e;if(0===e)return t;var a=this._clip.duration,n=this.loop,r=this._loopCount;if(2200===n){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(t>=a)t=a;else{if(!(t<0))break e;t=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{var s=2202===n;if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),t>=a||t<0){var o=Math.floor(t/a);t-=a*o,r+=Math.abs(o);var i=this.repetitions-r;if(i<0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,t=e>0?a:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(0===i){var c=e<0;this._setEndings(c,!c,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}if(s&&1==(1&r))return this.time=t,a-t}return this.time=t,t},_setEndings:function(e,t,a){var n=this._interpolantSettings;a?(n.endingStart=2401,n.endingEnd=2401):(n.endingStart=e?this.zeroSlopeAtStart?2401:2400:2402,n.endingEnd=t?this.zeroSlopeAtEnd?2401:2400:2402)},_scheduleFading:function(e,t,a){var n=this._mixer,r=n.time,s=this._weightInterpolant;null===s&&(s=n._lendControlInterpolant(),this._weightInterpolant=s);var o=s.parameterPositions,i=s.sampleValues;return o[0]=r,i[0]=t,o[1]=r+e,i[1]=a,this}}),oo.prototype=Object.assign(Object.create(n.prototype),{constructor:oo,_bindAction:function(e,t){var a=e._localRoot||this._root,n=e._clip.tracks,r=n.length,s=e._propertyBindings,o=e._interpolants,i=a.uuid,c=this._bindingsByRootAndName,d=c[i];void 0===d&&(d={},c[i]=d);for(var l=0;l!==r;++l){var u=n[l],h=u.name,m=d[h];if(void 0!==m)s[l]=m;else{if(void 0!==(m=s[l])){null===m._cacheIndex&&(++m.referenceCount,this._addInactiveBinding(m,i,h));continue}var p=t&&t._propertyBindings[l].binding.parsedPath;++(m=new qs(ro.create(a,h,p),u.ValueTypeName,u.getValueSize())).referenceCount,this._addInactiveBinding(m,i,h),s[l]=m}o[l].resultBuffer=m.buffer}},_activateAction:function(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){var t=(e._localRoot||this._root).uuid,a=e._clip.uuid,n=this._actionsByClip[a];this._bindAction(e,n&&n.knownActions[0]),this._addInactiveAction(e,a,t)}for(var r=e._propertyBindings,s=0,o=r.length;s!==o;++s){var i=r[s];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(e)}},_deactivateAction:function(e){if(this._isActiveAction(e)){for(var t=e._propertyBindings,a=0,n=t.length;a!==n;++a){var r=t[a];0==--r.useCount&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}},_isActiveAction:function(e){var t=e._cacheIndex;return null!==t&&tthis.max.x||e.ythis.max.y)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y},getParameter:function(e,t){return(t||new p).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)},clampPoint:function(e,t){return(t||new p).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new p;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}),yo.prototype=Object.create(ze.prototype),yo.prototype.constructor=yo,yo.prototype.isImmediateRenderObject=!0,go.prototype=Object.create(Pa.prototype),go.prototype.constructor=go,go.prototype.update=function(){var e=new y,t=new y,a=new g;return function(){var n=["a","b","c"];this.object.updateMatrixWorld(!0),a.getNormalMatrix(this.object.matrixWorld);var r=this.object.matrixWorld,s=this.geometry.attributes.position,o=this.object.geometry;if(o&&o.isGeometry)for(var i=o.vertices,c=o.faces,d=0,l=0,u=c.length;l.99999?this.quaternion.set(0,0,0,1):e.y<-.99999?this.quaternion.set(1,0,0,0):(ao.set(e.z,0,-e.x).normalize(),to=Math.acos(e.y),this.quaternion.setFromAxisAngle(ao,to))}),Lo.prototype.setLength=function(e,t,a){void 0===t&&(t=.2*e),void 0===a&&(a=.2*t),this.line.scale.set(1,Math.max(0,e-t),1),this.line.updateMatrix(),this.cone.scale.set(a,t,a),this.cone.position.y=e,this.cone.updateMatrix()},Lo.prototype.setColor=function(e){this.line.material.color.copy(e),this.cone.material.color.copy(e)},jo.prototype=Object.create(Pa.prototype),jo.prototype.constructor=jo;function Co(e){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),xr.call(this,e),this.type="catmullrom"}br.create=function(e,t){return console.log("THREE.Curve.create() has been deprecated"),e.prototype=Object.create(br.prototype),e.prototype.constructor=e,e.prototype.getPoint=t,e},Object.assign(Dr.prototype,{createPointsGeometry:function(e){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");var t=this.getPoints(e);return this.createGeometry(t)},createSpacedPointsGeometry:function(e){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");var t=this.getSpacedPoints(e);return this.createGeometry(t)},createGeometry:function(e){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var t=new Ye,a=0,n=e.length;athis.maxSliceAdvancementPoint.x&&this.maxSliceAdvancementPoint.copy(this.lastIntersection)}IsHit(e){switch(this.state){case Io:this.handleStateNotReaching(e);break;case Do:this.handleStateReaching(e);break;case Oo:this.handleStateInsideBox(e);break;case Uo:this.handleStateHit()}return this.lastTime=e,this.state==Uo}handleStateNotReaching(e){this.CheckBladeInside()?(this.isGood||(this.badHit("Bad target hit!"),this.setState(Uo)),this.goodHitIfDot()?this.setState(Uo):(this.entryPoint.copy(this.intersection),this.entryTime=this.lastTime&&(e+this.lastTime)/2||e,this.setState(Oo))):this.reaching&&this.setState(Do)}handleStateReaching(e){if(this.CheckBladeInside()){if(this.isGood){if(this.goodHitIfDot())return this.setState(Uo),!0;if(this.lastIntersection.xthis.bbox.min.x){const t=(this.bbox.min.x-this.lastIntersection.x)/(this.intersection.x-this.lastIntersection.x),a=this.lastIntersection.y+t*(this.intersection.y-this.lastIntersection.y);if(a>this.bbox.min.y&&a-this.hitPlane.constant?this.bladeInside:(a.el.object3D.worldToLocal(t),t.z<-this.hitPlane.constant||(this.reaching=!0,this.lastIntersection.copy(this.intersection),this.hitPlane.intersectLine(this.bladeLine,this.intersection)&&this.bbox.containsPoint(this.intersection)&&(this.bladeInside=!0,this.SetFurthestSlicePoint())),this.bladeInside)}validateSlice(){const e=this.exitPoint.clone().sub(this.entryPoint),t=e.length()/(this.exitTime-this.entryTime)*1e3,a=e.x/(this.beat.bbox.max.x-this.beat.bbox.min.x);if(a<.3)return void this.badHit("Bad slice ratio!");const n=Ho(Bo(a,.3,1),.3,1,50,100);e.normalize();const r=e.dot(new p(1,0));if(r<.625)return void this.badHit("Bad angle!");const s=this.bbox.max.y-this.bbox.min.y;this.bbox.max.x,this.bbox.min.x;let o=.05*s,i=.5*s;const c=Ho(Bo(function(e,t,a){const n=Math.abs((a.x-t.x)*(t.y-e.y)-(a.y-t.y)*(t.x-e.x)),r=Math.sqrt(Math.pow(a.x-t.x,2)+Math.pow(a.y-t.y,2));return n/r}(this.bboxcenter,this.entryPoint,this.exitPoint)/s,o,i),o,i,50,0),d=Ho(Bo(t,5,25),5,25,0,50),l=50*r,u=n+d+l+c;return this.hitData={good:!0,score:zo(u),percent:zo(u/250*100),speedScore:zo(d),angleScore:zo(l),accuracyScore:zo(c),slashSpeed:zo(t),angleDot:zo(r),sliceRatio:zo(a)},this.beat.el.sceneEl.emit("setHitsDebug",this.hitData),this.hitData}badHit(e){this.hitData={good:!1,reason:e},this.beat.el.sceneEl.emit("setHitsDebug",this.hitData)}goodHitIfDot(){return!(!this.isGood||!this.beat.isDot())&&(this.hitData={good:!0,score:250,percent:100},this.beat.el.sceneEl.emit("setHitsDebug",this.hitData),!0)}reset(){this.reaching=[!1,!1],this.bladeInside=!1,this.HitDetected=!1}}class Zo{constructor(e,t,a){this.punch=e,this.beat=t,this.isGood=a}IsHit(e){if(this.HitDetected)return!0;if(this.punch.checkCollision(this.beat)){this.HitDetected=!0,this.HitIsGood=!0;const e=60,t=1.5,a=this.punch.el.components.punch.speed,n=a/t*40;let r;r=a<=t?e+Math.min(n,40):e+Ho(Bo(a,1.5,6),1.5,6,40,70);const s=r/(e+70);this.score={score:r,percent:s}}return this.HitDetected}}function Ho(e,t,a,n,r){return n+(r-n)*(e-t)/(a-t)}function Bo(e,t,a){return Math.min(Math.max(e,t),a)}function zo(e){return Math.round(1e3*e)/1e3}},function(e,t){e.exports="varying vec2 uvs;\nvoid main() {\n uvs.xy = uv.xy;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"},function(e,t,a){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var n=a(11),r={NODE_CLIENT:!1,NODE_ADMIN:!1,SDK_VERSION:"${JSCORE_VERSION}"},s=function(e,t){if(!e)throw o(t)},o=function(e){return new Error("Firebase Database ("+r.SDK_VERSION+") INTERNAL ASSERT FAILED: "+e)},i=function(e){for(var t=[],a=0,n=0;n>6|192,t[a++]=63&r|128):55296==(64512&r)&&n+1>18|240,t[a++]=r>>12&63|128,t[a++]=r>>6&63|128,t[a++]=63&r|128):(t[a++]=r>>12|224,t[a++]=r>>6&63|128,t[a++]=63&r|128)}return t},c={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray:function(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();for(var a=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,n=[],r=0;r>2,u=(3&s)<<4|i>>4,h=(15&i)<<2|d>>6,m=63&d;c||(m=64,o||(h=64)),n.push(a[l],a[u],a[h],a[m])}return n.join("")},encodeString:function(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(i(e),t)},decodeString:function(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){for(var t=[],a=0,n=0;a191&&r<224){var s=e[a++];t[n++]=String.fromCharCode((31&r)<<6|63&s)}else if(r>239&&r<365){var o=((7&r)<<18|(63&(s=e[a++]))<<12|(63&(i=e[a++]))<<6|63&e[a++])-65536;t[n++]=String.fromCharCode(55296+(o>>10)),t[n++]=String.fromCharCode(56320+(1023&o))}else{s=e[a++];var i=e[a++];t[n++]=String.fromCharCode((15&r)<<12|(63&s)<<6|63&i)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray:function(e,t){this.init_();for(var a=t?this.charToByteMapWebSafe_:this.charToByteMap_,n=[],r=0;r>4;if(n.push(d),64!==i){var l=o<<4&240|i>>2;if(n.push(l),64!==c){var u=i<<6&192|c;n.push(u)}}}return n},init_:function(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(var e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}},d=function(e){try{return c.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null}; /** * @license * Copyright 2017 Google LLC @@ -214,7 +214,7 @@ function(e){return l(void 0,e)},t.deepExtend=l,t.errorPrefix=E,t.getUA=h,t.isAdm * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */,t.validateIndexedDBOpenable=function(){return new Promise((function(e,t){try{var a=!0,n="validate-browser-context-for-indexeddb-analytics-module",r=window.indexedDB.open(n);r.onsuccess=function(){r.result.close(),a||window.indexedDB.deleteDatabase(n),e(!0)},r.onupgradeneeded=function(){a=!1},r.onerror=function(){var e;t((null===(e=r.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}}))},t.validateNamespace=function(e,t,a,n){if((!n||a)&&"string"!=typeof a)throw new Error(E(e,t,n)+"must be a valid firebase namespace.")}}).call(this,a(1))},function(e,t,a){var n=a(199);(e.exports=a(200)(!1)).push([e.i,"html {\n background: #000;\n}\n\n#vrButton {\n position: absolute;\n background: url("+n(a(201))+") no-repeat;\n background-size: cover;\n border: 0;\n cursor: pointer;\n right: 20px;\n bottom: 20px;\n text-decoration: none;\n z-index: 9999999;\n width: 84px;\n height: 47px;\n}\n\n#vrButton.a-hidden {\n visibility: hidden;\n}\n\n#vrButton:active {\n border: 0;\n}\n\n#vrButton:hover {\n background-position: 0 -50.5px;\n}\n\n#vrButton p {\n bottom: 45px;\n color: #FFF;\n font-size: 12px;\n font-family: monospace;\n font-weight: bold;\n text-align: center;\n text-transform: uppercase;\n position: relative;\n}\n\n.a-loader-title {\n animation: loaderTitle 1s infinite alternate;\n color: rgba(0,0,0,0);\n background: none;\n background-image: url("+n(a(202))+');\n height: 36.2vh;\n background-repeat: no-repeat;\n background-position: center;\n margin-top: 0;\n background-size: contain;\n}\n\n@keyframes loaderTitle {\n 0% { opacity: 1; }\n 50% { opacity: 0.8; }\n 100% { opacity: 1; }\n}\n\n#subscribeForm {\n background: rgba(0, 0, 0, 0.75);\n box-shadow: 0px 0 1px #888;\n bottom: 0;\n color: #FAFAFA;\n font-family: monospace;\n height: 100px;\n left: 0;\n margin: 0;\n min-width: 400px;\n padding: 5px 20px 0 5px;\n position: fixed;\n text-align: center;\n z-index: 9999999;\n}\n\n#subscribeForm h2 {\n font-size: 16px;\n font-weight: 300;\n}\n\n#subscribeForm #subscribeClose {\n cursor: pointer;\n font-size: 26px;\n font-weight: 600;\n position: absolute;\n top: 0;\n right: 5px;\n}\n\ninput[type="email"] {\n background: #FAFAFA;\n border: 0;\n border-radius: 5px;\n color: $gray;\n height: 40px;\n padding-left: 20px;\n margin-right: 10px;\n max-width: 480px;\n text-transform: uppercase;\n vertical-align: middle;\n width: 50%;\n}\n\nbutton {\n border: 0;\n background: #FF74b8;\n border-radius: 20px;\n cursor: pointer;\n font-size: 14px;\n color: #FAFAFA;\n text-transform: uppercase;\n transition: .1s all;\n padding: 11px 20px;\n vertical-align: middle;\n}\n\nbutton:hover {\n background: #FF94C8;\n}\n',""])},,,function(e,t,a){const n=2*Math.PI,r=(s=1.33,o=.5,e=>1-function(e,t){function a(e,t,a){return Math.min(Math.max(e,t),a)}const n=a(e||1,1,10),r=a(t||.5,.1,2);return e=>0===e||1===e?e:-n*Math.pow(2,10*(e-1))*Math.sin((e-1-r/(2*Math.PI)*Math.asin(1/n))*(2*Math.PI)/r)}(s,o)(1-e));var s,o;const i={once:!0},c={arrowblue:"blueBeatObjTemplate",arrowred:"redBeatObjTemplate",dotblue:"dotBlueObjTemplate",dotred:"dotRedObjTemplate",mine:"mineObjTemplate"},d={right:0,upright:45,up:90,upleft:135,left:180,downleft:225,down:270,downright:315},l={classic:.48,punch:.35,ride:.4};AFRAME.registerComponent("beat",{schema:{color:{default:"red",oneOf:["red","blue"]},debug:{default:!1},type:{default:"arrow",oneOf:["arrow","dot","mine"]}},init:function(){this.bbox=null,this.beatSystem=this.el.sceneEl.components["beat-system"],this.broken=null,this.brokenPoolName=void 0,this.destroyed=!1,this.poolName=void 0,this.returnToPoolTimer=1e3,this.warmupTime=0,this.curveEl=document.getElementById("curve"),this.curveFollowRig=document.getElementById("curveFollowRig"),this.mineParticles=document.getElementById("mineParticles"),this.rigContainer=document.getElementById("rigContainer"),this.verticalPositions=this.beatSystem.verticalPositions,this.explodeEventDetail={beatDirection:"",color:this.data.color,correctHit:!1,direction:new THREE.Vector3,gameMode:"",position:new THREE.Vector3,rotation:new THREE.Euler},this.blockEl=document.createElement("a-entity"),this.blockEl.setAttribute("mixin","beatBlock"),this.el.appendChild(this.blockEl),this.initMesh(),"mine"===this.data.type?this.poolName="pool__beat-mine":this.poolName=`pool__beat-${this.data.type}-${this.data.color}`},tick:function(e,t){const a=this.el;this.data;if(this.destroyed)return this.returnToPoolTimer-=t,void(this.returnToPoolTimer<=0&&this.returnToPool());if(this.warmupTime<2e3){const e=r(this.warmupTime/2e3);a.object3D.rotation.y=this.rotationStart+e*this.rotationChange,a.object3D.position.y=this.positionStart+e*this.positionChange,this.warmupTime+=t}},onGenerate:function(e,t,a,r,s){const o=this.data,i=this.el,c=l[this.beatSystem.data.gameMode]*(1/.29);if(this.blockEl.object3D.scale.set(c,c,c),r=r||"down",this.cutDirection=r,this.horizontalPosition=t,this.verticalPosition=a,this.songPosition=e,!this.blockEl)return void console.warn("Unable to generate beat. blockEl was undefined.");this.blockEl.object3D.visible=!0,this.destroyed=!1,i.object3D.visible=!0,this.warmupTime=0;const u=this.curveEl.components.supercurve;u.getPointAt(e,i.object3D.position),u.alignToCurve(e,i.object3D),i.object3D.position.x+=this.beatSystem.horizontalPositions[t],"dot"!==o.type&&(i.object3D.rotation.z=THREE.Math.degToRad(d[r])),this.rotationStart=i.object3D.rotation.y,this.rotationChange=n,Math.random>.5&&(this.rotationChange*=-1);i.object3D.position.y-=.5,this.positionStart=i.object3D.position.y,this.positionChange=this.verticalPositions[a]+.5+s,this.beatSystem.registerBeat(this)},initMesh:function(){const e=this.blockEl,t=(this.el,this.data.type);!function e(t,a){if(!u[a]){const n=document.getElementById(a);if(!n.getObject3D("mesh"))return void n.addEventListener("object3dset",n=>{"mesh"===n.detail.type&&e(t,a)},i);u[a]=n.getObject3D("mesh").children[0].geometry}u[a]&&(t.getObject3D("mesh")||t.setObject3D("mesh",new THREE.Mesh),t.getObject3D("mesh").geometry=u[a])}(e,c["mine"!==t?`${t}${this.data.color}`:t]),e.setAttribute("materials","name","beat");const a=e.getObject3D("mesh");a.geometry.computeBoundingBox(),this.bbox=a.geometry.boundingBox,this.data.type},destroyBeat:function(e,t){this.data;const a=this.explodeEventDetail,n=this.rigContainer.object3D;let r;if(this.blockEl.object3D.visible=!1,this.destroyed=!0,this.returnToPoolTimer=1e3,a.beatDirection=this.cutDirection,a.color=this.data.color,a.correctHit=t,a.gameMode=this.beatSystem.data.gameMode,a.position.copy(this.el.object3D.position),n.worldToLocal(a.position),"mine"===this.data.type)r="pool__beat-broken-mine";else{r=`pool__${"classic"===this.beatSystem.data.gameMode?"beat":"punch"}-broken-${this.data.color}`,"dot"===this.data.type&&(r+="-dot")}this.broken=this.el.sceneEl.components[r].requestEntity(),this.broken&&this.broken.emit("explode",this.explodeEventDetail,!1),"classic"===this.beatSystem.data.gameMode&&t&&e.components.trail.pulse()},isDot:function(){return"dot"===this.data.type},isMine:function(){return"mine"===this.data.type},isArrow:function(){return"beat"===this.data.type},returnToPool:function(){this.beatSystem.unregisterBeat(this),this.el.object3D.position.set(0,0,-9999),this.el.object3D.visible=!1,this.el.sceneEl.components[this.poolName].returnEntity(this.el)}});const u={};if(window.AFRAME){const t=["beat"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n1-function(e,t){function a(e,t,a){return Math.min(Math.max(e,t),a)}const n=a(e||1,1,10),r=a(t||.5,.1,2);return e=>0===e||1===e?e:-n*Math.pow(2,10*(e-1))*Math.sin((e-1-r/(2*Math.PI)*Math.asin(1/n))*(2*Math.PI)/r)}(s,o)(1-e));var s,o;const i={once:!0},c={arrowblue:"blueBeatObjTemplate",arrowred:"redBeatObjTemplate",dotblue:"dotBlueObjTemplate",dotred:"dotRedObjTemplate",mine:"mineObjTemplate"},d={right:0,upright:45,up:90,upleft:135,left:180,downleft:225,down:270,downright:315},l={classic:.48,punch:.35,ride:.4};AFRAME.registerComponent("beat",{schema:{color:{default:"red",oneOf:["red","blue"]},debug:{default:!1},type:{default:"arrow",oneOf:["arrow","dot","mine"]}},init:function(){this.bbox=null,this.beatSystem=this.el.sceneEl.components["beat-system"],this.broken=null,this.brokenPoolName=void 0,this.destroyed=!1,this.poolName=void 0,this.returnToPoolTimer=1e3,this.warmupTime=0,this.curveEl=document.getElementById("curve"),this.curveFollowRig=document.getElementById("curveFollowRig"),this.mineParticles=document.getElementById("mineParticles"),this.rigContainer=document.getElementById("rigContainer"),this.verticalPositions=this.beatSystem.verticalPositions,this.explodeEventDetail={beatDirection:"",color:this.data.color,correctHit:!1,direction:new THREE.Vector3,gameMode:"",position:new THREE.Vector3,rotation:new THREE.Euler},this.blockEl=document.createElement("a-entity"),this.blockEl.setAttribute("mixin","beatBlock"),this.el.appendChild(this.blockEl),this.initMesh(),"mine"===this.data.type?this.poolName="pool__beat-mine":this.poolName=`pool__beat-${this.data.type}-${this.data.color}`},tick:function(e,t){const a=this.el;this.data;if(this.destroyed)return this.returnToPoolTimer-=t,void(this.returnToPoolTimer<=0&&this.returnToPool());if(this.warmupTime<2e3){const e=r(this.warmupTime/2e3);a.object3D.rotation.y=this.rotationStart+e*this.rotationChange,a.object3D.position.y=this.positionStart+e*this.positionChange,this.warmupTime+=t}},onGenerate:function(e,t,a,r,s){const o=this.data,i=this.el,c=l[this.beatSystem.data.gameMode]*(1/.29);if(this.blockEl.object3D.scale.set(c,c,c),r=r||"down",this.cutDirection=r,this.horizontalPosition=t,this.verticalPosition=a,this.songPosition=e,!this.blockEl)return void console.warn("Unable to generate beat. blockEl was undefined.");this.blockEl.object3D.visible=!0,this.destroyed=!1,i.object3D.visible=!0,this.warmupTime=0;const u=this.curveEl.components.supercurve;u.getPointAt(e,i.object3D.position),u.alignToCurve(e,i.object3D),i.object3D.position.x+=this.beatSystem.horizontalPositions[t],"dot"!==o.type&&(i.object3D.rotation.z=THREE.Math.degToRad(d[r])),this.rotationStart=i.object3D.rotation.y,this.rotationChange=n,Math.random>.5&&(this.rotationChange*=-1);i.object3D.position.y-=.5,this.positionStart=i.object3D.position.y,this.positionChange=this.verticalPositions[a]+.5+s,this.beatSystem.registerBeat(this)},initMesh:function(){const e=this.blockEl,t=(this.el,this.data.type);!function e(t,a){if(!u[a]){const n=document.getElementById(a);if(!n.getObject3D("mesh"))return void n.addEventListener("object3dset",n=>{"mesh"===n.detail.type&&e(t,a)},i);u[a]=n.getObject3D("mesh").children[0].geometry}u[a]&&(t.getObject3D("mesh")||t.setObject3D("mesh",new THREE.Mesh),t.getObject3D("mesh").geometry=u[a])}(e,c["mine"!==t?`${t}${this.data.color}`:t]),e.setAttribute("materials","name","beat");const a=e.getObject3D("mesh");a.geometry.computeBoundingBox(),this.bbox=a.geometry.boundingBox,"mine"===this.data.type&&this.bbox.scale(.5,.5,.5)},destroyBeat:function(e,t){this.data;const a=this.explodeEventDetail,n=this.rigContainer.object3D;let r;if(this.blockEl.object3D.visible=!1,this.destroyed=!0,this.returnToPoolTimer=1e3,a.beatDirection=this.cutDirection,a.color=this.data.color,a.correctHit=t,a.gameMode=this.beatSystem.data.gameMode,a.position.copy(this.el.object3D.position),n.worldToLocal(a.position),"mine"===this.data.type)r="pool__beat-broken-mine";else{r=`pool__${"classic"===this.beatSystem.data.gameMode?"beat":"punch"}-broken-${this.data.color}`,"dot"===this.data.type&&(r+="-dot")}this.broken=this.el.sceneEl.components[r].requestEntity(),this.broken&&this.broken.emit("explode",this.explodeEventDetail,!1),"classic"===this.beatSystem.data.gameMode&&t&&e.components.trail.pulse()},isDot:function(){return"dot"===this.data.type},isMine:function(){return"mine"===this.data.type},isArrow:function(){return"beat"===this.data.type},returnToPool:function(){this.beatSystem.unregisterBeat(this),this.el.object3D.position.set(0,0,-9999),this.el.object3D.visible=!1,this.el.sceneEl.components[this.poolName].returnEntity(this.el)}});const u={};if(window.AFRAME){const t=["beat"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=(null!=n?n:t.logLevel)&&e({level:s[a].toLowerCase(),message:i,args:r,type:t.name})}},n=0,r=o;n{},console.timeEnd=()=>{},a(42),a(43),a(44),a(45),a(46),a(47),a(49),a(50),AFRAME.log=()=>{},a(52),a(54),a(55),a(56),a(57),a(58),n(a(59)),n(a(193)),a(198),a(205),e.hot.accept(),document.addEventListener("DOMContentLoaded",()=>{!function(){const e=document.querySelector("form");if(!e)return;if(localStorage.getItem("subscribeClosed")){const t=e.parentNode;return void t.parentNode.removeChild(t)}document.getElementById("subscribeClose").addEventListener("click",()=>{const t=e.parentNode;t.parentNode.removeChild(t),localStorage.setItem("subscribeClosed",!0)});const t=e.querySelector(".submit"),a=e.querySelector('input[type="email"]'),n=document.querySelector("#subscribeForm > h2");let r="";n&&(r=n.innerHTML);e.addEventListener("submit",e=>{e.preventDefault();const a=new XMLHttpRequest;let r="http://localhost:5000/mail/subscribe";return r="https://supermedium.com/mail/subscribe",a.open("POST",r),a.addEventListener("load",()=>{200!==parseInt(a.status,10)&&(window.location.href="https://supermedium/subscribe/"),t&&(t.disabled=!0,t.innerHTML="Subscribed!"),n&&(n.innerHTML="Successfully subscribed, thank you!")}),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.send(JSON.stringify({email:document.querySelector('[name="email"]').value,source:"moonrider"})),!1}),t&&a.addEventListener("keydown",()=>{t.hasAttribute("disabled")&&(t.innerHTML="Subscribe",t.removeAttribute("disabled")),n&&r&&(n.innerHTML=r)})}()}),"http:"!==window.location.protocol||window.location.host.startsWith("localhost")||window.location.replace("https:"+location.href.substring(location.protocol.length))},function(e,t){THREE.BufferGeometryUtils={computeTangents:function(e){var t=e.index,a=e.attributes;if(null!==t&&void 0!==a.position&&void 0!==a.normal&&void 0!==a.uv){var n=t.array,r=a.position.array,s=a.normal.array,o=a.uv.array,i=r.length/3;void 0===a.tangent&&e.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*i),4));for(var c=a.tangent.array,d=[],l=[],u=0;u0){f=f.clone();for(var b=0;b=n.x&&this.boxMin.y<=r.y&&this.boxMax.y>=n.y&&this.boxMin.z<=r.z&&this.boxMax.z>=n.z}}(),setDirty:function(){this.dirty=!0},refreshObjects:function(){const e=this.data;this.objectEls=e.objects?this.el.sceneEl.querySelectorAll(e.objects):this.el.sceneEl.children,this.dirty=!1}})},function(e,t){var a=[new THREE.Vector2,new THREE.Vector2,new THREE.Vector2,new THREE.Vector2];function n(e,t,n,r){const s=1/r,o=1/n;return a[0].set(s*t,o*e+o),a[1].set(s*t,o*e),a[2].set(s*t+s,o*e),a[3].set(s*t+s,o*e+o),a}AFRAME.registerComponent("atlas-uvs",{dependencies:["geometry"],schema:{totalColumns:{type:"int",default:1},totalRows:{type:"int",default:1},column:{type:"int",default:1},row:{type:"int",default:1}},update:function(){const e=this.data,t=n(e.row-1,e.column-1,e.totalRows,e.totalColumns),a=this.el.getObject3D("mesh").geometry;var r=new Float32Array([t[0].x,t[0].y,t[3].x,t[3].y,t[1].x,t[1].y,t[2].x,t[2].y]);a.setAttribute("uv",new THREE.BufferAttribute(r,2)),a.uvsNeedUpdate=!0}}),AFRAME.registerComponent("dynamic-texture-atlas",{schema:{canvasId:{default:"dynamicAtlas"},canvasHeight:{default:1024},canvasWidth:{default:1024},debug:{default:!1},numColumns:{default:8},numRows:{default:8}},multiple:!0,init:function(){const e=this.canvas=document.createElement("canvas");e.id=this.data.canvasId,e.height=this.data.canvasHeight,e.width=this.data.canvasWidth,this.ctx=e.getContext("2d"),document.body.appendChild(e),this.data.debug&&(e.style.left=0,e.style.top=0,e.style.position="fixed",e.style.zIndex=9999999999)},drawTexture:function(e,t,a,r,s){const o=this.canvas,i=this.data;e.complete||(e.onload=()=>{this.drawTexture(e,t,a)});const c=s||o.height/i.numRows,d=r||o.width/i.numColumns;return this.ctx.drawImage(e,d*t,d*a,d,c),n(t,a,i.numRows,i.numColumns)}}),e.exports.getGridUvs=n},function(e,t){if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");var a={};AFRAME.registerComponent("audioanalyser",{schema:{buffer:{default:!1},beatDetectionDecay:{default:.99},beatDetectionMinVolume:{default:15},beatDetectionThrottle:{default:250},cache:{default:!1},enabled:{default:!0},enableBeatDetection:{default:!0},enableLevels:{default:!0},enableWaveform:{default:!0},enableVolume:{default:!0},fftSize:{default:2048},smoothingTimeConstant:{default:.8},src:{parse:function(e){return e.constructor!==String?e:e.startsWith("#")||e.startsWith(".")?document.querySelector(e):e}},unique:{default:!1}},init:function(){this.audioEl=null,this.levels=null,this.waveform=null,this.volume=0,this.xhr=null,this.initContext()},update:function(e){var t=this.analyser,a=this.data;e.fftSize===a.fftSize&&e.smoothingTimeConstant===a.smoothingTimeConstant||(t.fftSize=a.fftSize,t.smoothingTimeConstant=a.smoothingTimeConstant,this.levels=new Uint8Array(t.frequencyBinCount),this.waveform=new Uint8Array(t.fftSize)),a.src&&this.refreshSource()},tick:function(e,t){var a,n=this.data;if(n.enabled){if((n.enableLevels||n.enableVolume)&&this.analyser.getByteFrequencyData(this.levels),n.enableWaveform&&this.analyser.getByteTimeDomainData(this.waveform),n.enableVolume||n.enableBeatDetection){for(var r=0,s=0;sthis.beatCutOff&&a>this.data.beatDetectionMinVolume?(this.el.emit("audioanalyserbeat",null,!1),this.beatCutOff=1.5*a,this.beatTime=0):this.beatTime<=this.data.beatDetectionThrottle?this.beatTime+=t:(this.beatCutOff*=this.data.beatDetectionDecay,this.beatCutOff=Math.max(this.beatCutOff,this.data.beatDetectionMinVolume)))}},initContext:function(){var e,t=this.data;this.context=new(window.webkitAudioContext||window.AudioContext),e=this.analyser=this.context.createAnalyser(),(this.gainNode=this.context.createGain()).connect(e),e.connect(this.context.destination),e.fftSize=t.fftSize,e.smoothingTimeConstant=t.smoothingTimeConstant,this.levels=new Uint8Array(e.frequencyBinCount),this.waveform=new Uint8Array(e.fftSize)},refreshSource:function(){this.analyser;var e=this.data;e.buffer&&e.src.constructor===String?this.getBufferSource().then(e=>{this.source=e,this.source.connect(this.gainNode)}):(this.source=this.getMediaSource(),this.source.connect(this.gainNode))},suspendContext:function(){this.context.suspend()},resumeContext:function(){this.context.resume()},fetchAudioBuffer:function(e){return a[e]?a[e].constructor===Promise?a[e]:Promise.resolve(a[e]):(this.data.cache||Object.keys(a).forEach((function(e){delete a[e]})),a[e]=new Promise(t=>{const n=this.xhr=new XMLHttpRequest;n.open("GET",e),n.responseType="arraybuffer",n.addEventListener("load",()=>{function r(n){a[e]=n,t(n)}const s=this.context.decodeAudioData(n.response,r);s&&s.constructor===Promise&&s.then(r).catch(console.error)}),n.send()}),a[e])},getBufferSource:function(){var e=this.data;return this.fetchAudioBuffer(e.src).then(()=>{var t;return(t=this.context.createBufferSource()).buffer=a[e.src],this.el.emit("audioanalyserbuffersource",t,!1),t}).catch(console.error)},getMediaSource:function(){const e={};return function(){const t=this.data.src.constructor===String?this.data.src:this.data.src.src;if(e[t])return e[t];this.data.src.constructor===String?(this.audio=document.createElement("audio"),this.audio.crossOrigin="anonymous",this.audio.setAttribute("src",this.data.src)):this.audio=this.data.src;const a=this.context.createMediaElementSource(this.audio);return e[t]=a,a}}()})},function(e,t){var a=AFRAME.utils.styleParser;if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");AFRAME.registerComponent("event-set",{schema:{default:"",parse:function(e){return a.parse(e)}},multiple:!0,init:function(){this.eventHandler=null,this.eventName=null},update:function(e){this.removeEventListener(),this.updateEventListener(),this.addEventListener()},remove:function(){this.removeEventListener()},pause:function(){this.removeEventListener()},play:function(){this.addEventListener()},updateEventListener:function(){var e,t,a,n=this.data,r=this.el;e=n._event||this.id,t=n._target,a=t?r.sceneEl.querySelector(t):r,this.eventName=e;const s=()=>{var e;for(e in n)"_event"!==e&&"_target"!==e&&AFRAME.utils.entity.setComponentProperty.call(this,a,e,n[e])};isNaN(n._delay)?this.eventHandler=s:this.eventHandler=()=>{setTimeout(s,parseFloat(n._delay))}},addEventListener:function(){this.el.addEventListener(this.eventName,this.eventHandler)},removeEventListener:function(){this.el.removeEventListener(this.eventName,this.eventHandler)}})},function(e,t,a){THREE.BufferGeometryUtils||a(48),AFRAME.registerComponent("geometry-merger",{schema:{preserveOriginal:{default:!1}},init:function(){var e=this;this.geometry=new THREE.Geometry,this.mesh=new THREE.Mesh(this.geometry),this.el.setObject3D("mesh",this.mesh),this.faceIndex={},this.vertexIndex={},this.el.object3D.traverse((function(t){"Mesh"===t.type&&t!==e.mesh&&(e.faceIndex[t.parent.uuid]=[e.geometry.faces.length,e.geometry.faces.length+t.geometry.faces.length-1],e.vertexIndex[t.parent.uuid]=[e.geometry.vertices.length,e.geometry.vertices.length+t.geometry.vertices.length-1],t.parent.updateMatrix(),e.geometry.merge(t.geometry,t.parent.matrix),e.data.preserveOriginal||t.parent.remove(t))}))}}),AFRAME.registerComponent("buffer-geometry-merger",{schema:{preserveOriginal:{default:!1}},init:function(){var e=[];this.el.sceneEl.object3D.updateMatrixWorld(),this.el.object3D.traverse((function(t){"Mesh"===t.type&&t.el!==self.el&&(t.geometry.applyMatrix(t.matrixWorld),e.push(t.geometry.clone()),t.parent.remove(t))}));const t=THREE.BufferGeometryUtils.mergeBufferGeometries(e);this.mesh=new THREE.Mesh(t),this.el.setObject3D("mesh",this.mesh)}})},function(e,t){THREE.BufferGeometryUtils={computeTangents:function(e){var t=e.index,a=e.attributes;if(null!==t&&void 0!==a.position&&void 0!==a.normal&&void 0!==a.uv){var n=t.array,r=a.position.array,s=a.normal.array,o=a.uv.array,i=r.length/3;void 0===a.tangent&&e.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*i),4));for(var c=a.tangent.array,d=[],l=[],u=0;ua.max&&this.logs.shift(),this.el.setAttribute("text",{value:this.logs.join("\n")}))},remove:function(){this.el.removeAttribute("text"),this.system.unregisterLogger(this)}})},function(e,t,a){a(53),AFRAME.registerComponent("orbit-controls",{dependencies:["camera"],schema:{autoRotate:{type:"boolean"},autoRotateSpeed:{default:2},dampingFactor:{default:.1},enabled:{default:!0},enableDamping:{default:!0},enableKeys:{default:!0},enablePan:{default:!0},enableRotate:{default:!0},enableZoom:{default:!0},initialPosition:{type:"vec3"},keyPanSpeed:{default:7},minAzimuthAngle:{type:"number",default:1/0},maxAzimuthAngle:{type:"number",default:1/0},maxDistance:{default:1e3},maxPolarAngle:{default:AFRAME.utils.device.isMobile()?90:120},minDistance:{default:1},minPolarAngle:{default:0},minZoom:{default:0},panSpeed:{default:1},rotateSpeed:{default:.05},screenSpacePanning:{default:!1},target:{type:"vec3"},zoomSpeed:{default:.5}},init:function(){var e,t=this.el;this.controls=new THREE.OrbitControls(t.getObject3D("camera"),t.sceneEl.renderer.domElement),e=new THREE.Vector3,t.sceneEl.addEventListener("enter-vr",()=>{(AFRAME.utils.device.checkHeadsetConnected()||AFRAME.utils.device.isMobile())&&(this.controls.enabled=!1,t.hasAttribute("look-controls")&&(t.setAttribute("look-controls","enabled",!0),e.copy(t.getObject3D("camera").position),t.getObject3D("camera").position.set(0,0,0)))}),t.sceneEl.addEventListener("exit-vr",()=>{(AFRAME.utils.device.checkHeadsetConnected()||AFRAME.utils.device.isMobile())&&(this.controls.enabled=!0,t.getObject3D("camera").position.copy(e),t.hasAttribute("look-controls")&&t.setAttribute("look-controls","enabled",!1))}),document.body.style.cursor="grab",document.addEventListener("mousedown",()=>{document.body.style.cursor="grabbing"}),document.addEventListener("mouseup",()=>{document.body.style.cursor="grab"}),this.target=new THREE.Vector3,t.getObject3D("camera").position.copy(this.data.initialPosition)},update:function(e){var t=this.controls,a=this.data;t.target=this.target.copy(a.target),t.autoRotate=a.autoRotate,t.autoRotateSpeed=a.autoRotateSpeed,t.dampingFactor=a.dampingFactor,t.enabled=a.enabled,t.enableDamping=a.enableDamping,t.enableKeys=a.enableKeys,t.enablePan=a.enablePan,t.enableRotate=a.enableRotate,t.enableZoom=a.enableZoom,t.keyPanSpeed=a.keyPanSpeed,t.maxPolarAngle=THREE.Math.degToRad(a.maxPolarAngle),t.maxDistance=a.maxDistance,t.minDistance=a.minDistance,t.minPolarAngle=THREE.Math.degToRad(a.minPolarAngle),t.minZoom=a.minZoom,t.panSpeed=a.panSpeed,t.rotateSpeed=a.rotateSpeed,t.screenSpacePanning=a.screenSpacePanning,t.zoomSpeed=a.zoomSpeed},tick:function(){var e=this.controls;this.data.enabled&&e.enabled&&(e.enableDamping||e.autoRotate)&&this.controls.update()}})},function(e,t){THREE.OrbitControls=function(e,t){var a,n,r,s,o;this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.25,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.enableKeys=!0,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},this.mouseButtons={ORBIT:THREE.MOUSE.LEFT,ZOOM:THREE.MOUSE.MIDDLE,PAN:THREE.MOUSE.RIGHT},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=function(){return p.phi},this.getAzimuthalAngle=function(){return p.theta},this.saveState=function(){i.target0.copy(i.target),i.position0.copy(i.object.position),i.zoom0=i.object.zoom},this.reset=function(){i.target.copy(i.target0),i.object.position.copy(i.position0),i.object.zoom=i.zoom0,i.object.updateProjectionMatrix(),i.dispatchEvent(c),i.update(),h=u.NONE},this.update=(a=new THREE.Vector3,n=(new THREE.Quaternion).setFromUnitVectors(e.up,new THREE.Vector3(0,1,0)),r=n.clone().inverse(),s=new THREE.Vector3,o=new THREE.Quaternion,function(){var e=i.object.position;return a.copy(e).sub(i.target),a.applyQuaternion(n),p.setFromVector3(a),i.autoRotate&&h===u.NONE&&k(2*Math.PI/60/60*i.autoRotateSpeed),p.theta+=f.theta,p.phi+=f.phi,p.theta=Math.max(i.minAzimuthAngle,Math.min(i.maxAzimuthAngle,p.theta)),p.phi=Math.max(i.minPolarAngle,Math.min(i.maxPolarAngle,p.phi)),p.makeSafe(),p.radius*=b,p.radius=Math.max(i.minDistance,Math.min(i.maxDistance,p.radius)),i.target.add(y),a.setFromSpherical(p),a.applyQuaternion(r),e.copy(i.target).add(a),i.object.lookAt(i.target),!0===i.enableDamping?(f.theta*=1-i.dampingFactor,f.phi*=1-i.dampingFactor):f.set(0,0,0),b=1,y.set(0,0,0),!!(g||s.distanceToSquared(i.object.position)>m||8*(1-o.dot(i.object.quaternion))>m)&&(i.dispatchEvent(c),s.copy(i.object.position),o.copy(i.object.quaternion),g=!1,!0)}),this.dispose=function(){i.domElement.removeEventListener("contextmenu",V,!1),i.domElement.removeEventListener("mousedown",O,!1),i.domElement.removeEventListener("wheel",Z,!1),i.domElement.removeEventListener("touchstart",B,!1),i.domElement.removeEventListener("touchend",q,!1),i.domElement.removeEventListener("touchmove",z,!1),document.removeEventListener("mousemove",U,!1),document.removeEventListener("mouseup",F,!1),window.removeEventListener("keydown",H,!1)};var i=this,c={type:"change"},d={type:"start"},l={type:"end"},u={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},h=u.NONE,m=1e-6,p=new THREE.Spherical,f=new THREE.Spherical,b=1,y=new THREE.Vector3,g=!1,v=new THREE.Vector2,w=new THREE.Vector2,A=new THREE.Vector2,S=new THREE.Vector2,E=new THREE.Vector2,x=new THREE.Vector2,T=new THREE.Vector2,R=new THREE.Vector2,_=new THREE.Vector2;function N(){return Math.pow(.95,i.zoomSpeed)}function k(e){f.theta-=e}function M(e){f.phi-=e}var P,L=(P=new THREE.Vector3,function(e,t){P.setFromMatrixColumn(t,0),P.multiplyScalar(-e),y.add(P)}),j=function(){var e=new THREE.Vector3;return function(t,a){e.setFromMatrixColumn(a,1),e.multiplyScalar(t),y.add(e)}}(),C=function(){var e=new THREE.Vector3;return function(t,a){var n=i.domElement===document?i.domElement.body:i.domElement;if(i.object.isPerspectiveCamera){var r=i.object.position;e.copy(r).sub(i.target);var s=e.length();s*=Math.tan(i.object.fov/2*Math.PI/180),L(2*t*s/n.clientHeight,i.object.matrix),j(2*a*s/n.clientHeight,i.object.matrix)}else i.object.isOrthographicCamera?(L(t*(i.object.right-i.object.left)/i.object.zoom/n.clientWidth,i.object.matrix),j(a*(i.object.top-i.object.bottom)/i.object.zoom/n.clientHeight,i.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),i.enablePan=!1)}}();function I(e){i.object.isPerspectiveCamera?b/=e:i.object.isOrthographicCamera?(i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom*e)),i.object.updateProjectionMatrix(),g=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function D(e){i.object.isPerspectiveCamera?b*=e:i.object.isOrthographicCamera?(i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom/e)),i.object.updateProjectionMatrix(),g=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function O(e){if(!1!==i.enabled){switch(e.preventDefault(),e.button){case i.mouseButtons.ORBIT:if(!1===i.enableRotate)return;!function(e){v.set(e.clientX,e.clientY)}(e),h=u.ROTATE;break;case i.mouseButtons.ZOOM:if(!1===i.enableZoom)return;!function(e){T.set(e.clientX,e.clientY)}(e),h=u.DOLLY;break;case i.mouseButtons.PAN:if(!1===i.enablePan)return;!function(e){S.set(e.clientX,e.clientY)}(e),h=u.PAN}h!==u.NONE&&(document.addEventListener("mousemove",U,!1),document.addEventListener("mouseup",F,!1),i.dispatchEvent(d))}}function U(e){if(!1!==i.enabled)switch(e.preventDefault(),h){case u.ROTATE:if(!1===i.enableRotate)return;!function(e){w.set(e.clientX,e.clientY),A.subVectors(w,v);var t=i.domElement===document?i.domElement.body:i.domElement;k(2*Math.PI*A.x/t.clientWidth*i.rotateSpeed),M(2*Math.PI*A.y/t.clientHeight*i.rotateSpeed),v.copy(w),i.update()}(e);break;case u.DOLLY:if(!1===i.enableZoom)return;!function(e){R.set(e.clientX,e.clientY),_.subVectors(R,T),_.y>0?I(N()):_.y<0&&D(N()),T.copy(R),i.update()}(e);break;case u.PAN:if(!1===i.enablePan)return;!function(e){E.set(e.clientX,e.clientY),x.subVectors(E,S),C(x.x,x.y),S.copy(E),i.update()}(e)}}function F(e){!1!==i.enabled&&(document.removeEventListener("mousemove",U,!1),document.removeEventListener("mouseup",F,!1),i.dispatchEvent(l),h=u.NONE)}function Z(e){!1===i.enabled||!1===i.enableZoom||h!==u.NONE&&h!==u.ROTATE||(e.preventDefault(),e.stopPropagation(),i.dispatchEvent(d),function(e){e.deltaY<0?D(N()):e.deltaY>0&&I(N()),i.update()}(e),i.dispatchEvent(l))}function H(e){!1!==i.enabled&&!1!==i.enableKeys&&!1!==i.enablePan&&function(e){switch(e.keyCode){case i.keys.UP:C(0,i.keyPanSpeed),i.update();break;case i.keys.BOTTOM:C(0,-i.keyPanSpeed),i.update();break;case i.keys.LEFT:C(i.keyPanSpeed,0),i.update();break;case i.keys.RIGHT:C(-i.keyPanSpeed,0),i.update()}}(e)}function B(e){if(!1!==i.enabled){switch(e.touches.length){case 1:if(!1===i.enableRotate)return;!function(e){v.set(e.touches[0].pageX,e.touches[0].pageY)}(e),h=u.TOUCH_ROTATE;break;case 2:if(!1===i.enableZoom)return;!function(e){var t=e.touches[0].pageX-e.touches[1].pageX,a=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(t*t+a*a);T.set(0,n)}(e),h=u.TOUCH_DOLLY;break;case 3:if(!1===i.enablePan)return;!function(e){S.set(e.touches[0].pageX,e.touches[0].pageY)}(e),h=u.TOUCH_PAN;break;default:h=u.NONE}h!==u.NONE&&i.dispatchEvent(d)}}function z(e){if(!1!==i.enabled)switch(e.preventDefault(),e.stopPropagation(),e.touches.length){case 1:if(!1===i.enableRotate)return;if(h!==u.TOUCH_ROTATE)return;!function(e){w.set(e.touches[0].pageX,e.touches[0].pageY),A.subVectors(w,v);var t=i.domElement===document?i.domElement.body:i.domElement;k(2*Math.PI*A.x/t.clientWidth*i.rotateSpeed),M(2*Math.PI*A.y/t.clientHeight*i.rotateSpeed),v.copy(w),i.update()}(e);break;case 2:if(!1===i.enableZoom)return;if(h!==u.TOUCH_DOLLY)return;!function(e){var t=e.touches[0].pageX-e.touches[1].pageX,a=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(t*t+a*a);R.set(0,n),_.subVectors(R,T),_.y>0?D(N()):_.y<0&&I(N()),T.copy(R),i.update()}(e);break;case 3:if(!1===i.enablePan)return;if(h!==u.TOUCH_PAN)return;!function(e){E.set(e.touches[0].pageX,e.touches[0].pageY),x.subVectors(E,S),C(x.x,x.y),S.copy(E),i.update()}(e);break;default:h=u.NONE}}function q(e){!1!==i.enabled&&(i.dispatchEvent(l),h=u.NONE)}function V(e){!1!==i.enabled&&e.preventDefault()}i.domElement.addEventListener("contextmenu",V,!1),i.domElement.addEventListener("mousedown",O,!1),i.domElement.addEventListener("wheel",Z,!1),i.domElement.addEventListener("touchstart",B,!1),i.domElement.addEventListener("touchend",q,!1),i.domElement.addEventListener("touchmove",z,!1),window.addEventListener("keydown",H,!1),this.update()},THREE.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.OrbitControls.prototype.constructor=THREE.OrbitControls,Object.defineProperties(THREE.OrbitControls.prototype,{center:{get:function(){return console.warn("THREE.OrbitControls: .center has been renamed to .target"),this.target}},noZoom:{get:function(){return console.warn("THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),!this.enableZoom},set:function(e){console.warn("THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),this.enableZoom=!e}},noRotate:{get:function(){return console.warn("THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),!this.enableRotate},set:function(e){console.warn("THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),this.enableRotate=!e}},noPan:{get:function(){return console.warn("THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead."),!this.enablePan},set:function(e){console.warn("THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead."),this.enablePan=!e}},noKeys:{get:function(){return console.warn("THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),!this.enableKeys},set:function(e){console.warn("THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),this.enableKeys=!e}},staticMoving:{get:function(){return console.warn("THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),!this.enableDamping},set:function(e){console.warn("THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),this.enableDamping=!e}},dynamicDampingFactor:{get:function(){return console.warn("THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor},set:function(e){console.warn("THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor=e}}})},function(e,t){AFRAME.registerComponent("proxy-event",{schema:{captureBubbles:{default:!1},enabled:{default:!0},event:{type:"string"},from:{type:"string"},to:{type:"string"},as:{type:"string"},bubbles:{default:!1}},multiple:!0,init:function(){var e,t,a,n=this.data,r=this.el,s=this;if(n.from?e="PARENT"===n.from?[r.parentNode]:document.querySelectorAll(n.from):a="CHILDREN"===n.to?r.querySelectorAll("*"):"SELF"===n.to?[r]:document.querySelectorAll(n.to),n.from)for(t=0;t{"nonrecursive"!==this.id&&e.detail.object.traverse(this.set)})},update:function(){"nonrecursive"===this.id?this.set(this.el.object3D):this.el.object3D.traverse(this.set)},set:function(e){isNaN(this.data)?e.renderOrder=this.system.order[this.data]:e.renderOrder=parseFloat(this.data)}}),AFRAME.registerComponent("render-order-recursive",{init:function(){this.el.addEventListener("child-attached",e=>{e.detail.el.setAttribute("render-order",this.el.getAttribute("render-order"))})}})},function(e,t,a){var n;"undefined"!=typeof self&&self,n=function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=1)}([function(e,t,a){"use strict";var n={};e.exports.select=function(e,t,a){return n[t]||(n[t]=new Function("state","item","return "+c(t)+";")),n[t](e,a)};var r=/\.([A-Za-z][\w_-]*)/g,s=/([=&|!?:+-])(\s*)([\(]?)([A-Za-z][\w_-]*)/g,o=/^([\(]?)([A-Za-z][\w_-]*)/g,i=/state\["item"\]/g;function c(e){return e=(e=(e=(e=e.replace(r,'["$1"]')).replace(o,'$1state["$2"]')).replace(s,'$1$2$3state["$4"]')).replace(i,"item")}function d(){var e=arguments;return function(){var t;for(t=0;t","<","<=",">="],u=/\s+/,h=/\(|\)|\!/g;function m(e){return-1===(e=function(e){return 0===e.indexOf("!!")?e.replace("!!",""):0===e.indexOf("!")?e.replace("!",""):e}(e.trim())).indexOf(".")?e:e.substring(0,e.indexOf("."))}e.exports.parseKeysToWatch=function(e,t,a){var n,r;for(r=f(t,u),n=0;n [data-bind-for-active="false"]'))(n=o.querySelector('[data-bind-for-active="false"]')).setAttribute("data-bind-for-key",c),n.setAttribute("data-bind-for-value",d),n.object3D.visible=!0,n.play(),n.setAttribute("data-bind-for-active","true"),n.emit("bindforupdateinplace",i,!1);else{var l=this.generateFromTemplate(i,a);l.addEventListener("loaded",(function(){l.emit("bindforupdateinplace",i,!1)})),o.appendChild(l)}this.renderedKeys.push(d)}else-1!==t.indexOf(d)&&(e.length&&e[0].constructor===String?(n=o.querySelector('[data-bind-for-value="'+d+'"]')).setAttribute("data-bind-for-key",a):n=o.querySelector('[data-bind-for-key="'+c+'"]'),n.emit("bindforupdateinplace",i,!1));e[a+1]&&(this.data.delay?setTimeout((function(){r.renderItemsInPlace(e,t,a+1)}),this.data.delay):this.renderItemsInPlace(e,t,a+1))},generateFromTemplate:function(e,t){var a=this.data;this.el.appendChild(this.system.renderTemplate(this.template,e));var n=this.el.children[this.el.children.length-1];if(!e)return n.setAttribute("data-bind-for-key",""),n.setAttribute("data-bind-for-active","false"),n;var r=this.getBindForKey(e,t);return n.setAttribute("data-bind-for-key",r),a.key||n.setAttribute("data-bind-for-value",e),n.setAttribute("data-bind-for-active","true"),n},getElsToRemove:(n=[],function(e,t){var a=this.data,r=this.el;n.length=0;for(var s=0;s{r[e]={},r[e].START="thumb"+e+"start",r[e].END="thumb"+e+"end"});AFRAME.registerComponent("thumb-controls",{schema:{thresholdAngle:{default:89.5},thresholdPad:{default:.05},thresholdStick:{default:.75}},init:function(){var e=this.el;this.onTrackpadDown=this.onTrackpadDown.bind(this),this.onTrackpadUp=this.onTrackpadUp.bind(this),this.directionStick="",this.directionTrackpad="",e.components["tracked-controls"]&&(this.axis=e.components["tracked-controls"].axis),this.type="STICK",e.addEventListener("controllerconnected",t=>{this.axis=e.components["tracked-controls"].axis,"oculus-touch-controls"!==t.detail.name&&"windows-motion-controls"!==t.detail.name?this.type="PAD":this.type="STICK"})},play:function(){var e=this.el;e.addEventListener("trackpaddown",this.onTrackpadDown),e.addEventListener("trackpadup",this.onTrackpadUp),e.addEventListener("touchpaddown",this.onTrackpadDown),e.addEventListener("touchpadup",this.onTrackpadUp)},pause:function(){var e=this.el;e.removeEventListener("trackpaddown",this.onTrackpadDown),e.removeEventListener("trackpadup",this.onTrackpadUp),e.removeEventListener("touchpaddown",this.onTrackpadDown),e.removeEventListener("touchpadup",this.onTrackpadUp)},onTrackpadDown:function(){var e,t=this.el;this.getDistance()this.data.thresholdStick){if(!(e=this.getDirection()))return;return this.directionStick=e,t.emit(r.NULL.START,null,!1),void t.emit(r[this.directionStick].START,null,!1)}this.directionStick&&this.getDistance()360&&(o-=360),(t=a[r]-s)<0&&(e>=360+t&&e<=360||e>=0&&e<=o))return n[r];if(e>=t&&e<=o)return n[r]}},getAngle:function(){var e,t=this.axis;return this.axis?((e="PAD"===this.type?Math.atan2(-t[1],t[0]):Math.atan2(-t[3],t[2]))<0&&(e=2*Math.PI+e),THREE.Math.radToDeg(e)):0}}),AFRAME.registerComponent("thumb-controls-debug",{dependencies:["thumb-controls"],schema:{controllerType:{type:"string"},hand:{type:"string"},enabled:{default:!1}},init:function(){var e,t,a,n,r=this.el;if(this.data.enabled||AFRAME.utils.getUrlParameter("debug-thumb")){console.log("%c debug-thumb","background: #111; color: red");var s=function(){r.components["tracked-controls"].handleAxes=()=>{},a={axis:t=[0,0,0]},r.components["tracked-controls"].axis=t,r.components["thumb-controls"].axis=t};r.components["tracked-controls"]?s():this.el.addEventListener("controllerconnected",(function(){s()})),(n=this.createCanvas()).addEventListener("click",n=>{"vive-controls"===this.data.controllerType?e?r.emit("trackpadup"):r.emit("trackpaddown"):e&&(t[0]=0,t[1]=0,r.emit("axismove",a,!1)),e=!e}),n.addEventListener("mousemove",s=>{var o;e&&(o=n.getBoundingClientRect(),t[0]=(s.clientX-o.left)/240*2-1,t[1]=(s.clientY-o.top)/240*2-1,r.emit("axismove",a,!1))}),n.addEventListener("mouseleave",n=>{e&&(t[0]=0,t[1]=0,r.emit("axismove",a,!1))})}},createCanvas:function(){var e,t;return(e=document.createElement("canvas")).classList.add("debugThumb"),e.height=240,e.width=240,e.style.bottom=0,e.style.borderRadius="250px",e.style.opacity=.5,e.style.position="fixed",e.style.zIndex=999999999,"left"===this.data.hand?e.style.left=0:e.style.right=0,(t=e.getContext("2d")).fillStyle="#333",t.fillRect(0,0,240,240),document.body.appendChild(e),e}})},function(e,t,a){var n={"./HitDetector.js":16,"./active-item.js":60,"./beat-cut-fx.js":61,"./beat-generator.js":15,"./beat-hit-sound.js":62,"./beat-system.js":63,"./beat.js":22,"./blade.js":64,"./check-vr.js":65,"./console-shortcuts.js":66,"./controller.js":67,"./copy-texture.js":68,"./cursor-laser.js":69,"./cursor-mesh.js":70,"./curve-follow-rig-reset.js":71,"./cutfx-shader.js":72,"./debug-beat-generator.js":75,"./debug-beat-positioning.js":76,"./debug-controller.js":77,"./debug-cursor.js":78,"./debug-intro.js":79,"./debug-song-time.js":80,"./debug-state.js":81,"./delayed-proxy-event.js":82,"./difficulty-background.js":83,"./difficulty-filter.js":84,"./difficulty-text.js":85,"./follow-position.js":86,"./follow-z.js":87,"./gameover.js":88,"./gpu-preloader.js":89,"./gradient-shader.js":90,"./hand-swapper.js":92,"./handstar-shader.js":93,"./haptics-wall.js":96,"./haptics-weapon.js":97,"./headfist.js":98,"./history.js":99,"./intro-song.js":100,"./keyboard-raycastable.js":101,"./leaderboard.js":102,"./materials.js":109,"./menu-controls.js":124,"./menu-difficulty-select.js":125,"./menu-genre.js":126,"./menu-midsection.js":127,"./menu-mode.js":128,"./menu-playlist-button.js":129,"./menu-playlist.js":130,"./menu-selected-challenge-image.js":131,"./menu-slide-animation.js":132,"./multiplier-ring.js":133,"./no-frustum-cull.js":134,"./panel-shader.js":135,"./pause.js":138,"./pauser.js":139,"./play-sound.js":140,"./player-height.js":142,"./plume.js":143,"./punch.js":144,"./raycaster-target.js":145,"./recenter.js":146,"./ring.js":147,"./score-texts.js":150,"./search-thumbnail-atlas.js":151,"./search.js":152,"./song-info-positioner.js":155,"./song-preview.js":156,"./song-progress-info.js":157,"./song.js":158,"./stage-colors.js":159,"./stage-lasers.js":160,"./stars.js":161,"./stats-param.js":162,"./stepback.js":163,"./sub-object.js":164,"./super-keyboard.js":165,"./supercurve-color.js":166,"./supercurve-shader.js":167,"./supercurve.js":170,"./supercutfx-shader.js":173,"./supercutfx.js":174,"./tail.js":175,"./text-counter.js":176,"./text-geometry.js":177,"./text-truncate.js":178,"./text-uppercase.js":179,"./toggle-pause-play.js":180,"./trail.js":181,"./tunnels.js":182,"./vertex-colors-buffer.js":183,"./victory-accuracy-ring.js":184,"./victory-rank.js":185,"./visible-raycastable.js":186,"./wall-shader.js":187,"./wall.js":190,"./weapon-particles.js":191,"./zip-loader.js":192};function r(e){var t=s(e);return a(t)}function s(e){if(!a.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=s,e.exports=r,r.id=59},function(e,t,a){if(AFRAME.registerComponent("active-item",{dependencies:["material"],schema:{active:{default:!1},opacity:{default:1}},init:function(){this.defaultOpacity=this.el.getAttribute("material").opacity,this.materialObj={opacity:this.data.opacity}},update:function(){var e=this.el;this.data.active?(e.setAttribute("material",this.materialObj),e.object3D.visible=!0):(e.setAttribute("material","opacity",this.defaultOpacity),e.components.animation__mouseleave&&setTimeout(()=>{e.emit("mouseleave",null,!1)}))}}),AFRAME.registerComponent("active-text-color",{dependencies:["text"],schema:{active:{default:!1},color:{default:"#333"}},init:function(){this.defaultColor=this.el.getAttribute("text").color},update:function(){var e=this.el;this.data.active?e.setAttribute("text","color",this.data.color):e.setAttribute("text","color",this.defaultColor)}}),window.AFRAME){const t=["active-item","active-text-color"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;nMath.abs(t.y)?"right":"down"),t.z*=.01,n.copy(t).multiplyScalar(-.0025).clampLength(0,.01);for(let t=0;t{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0){const e=this.beatEventsQueue.shift();e.good?this.el.sceneEl.emit("beathit",e,!0):this.el.sceneEl.emit("beatwrong",e,!0)}if(!this.data.isPlaying||"ride"===this.data.gameMode)return;const a=this.beatsToCheck,n=(this.supercurve.curve,this.supercurveFollow.songProgress);a.length=0;for(let e=0;ethis.curveFollowRig.object3D.position.z){t.returnToPool(),t.isMine()||this.el.sceneEl.emit("beatmiss",null,!0);continue}if(na[e].songPosition&&(s=!1),s);e++);s&&a.push(t)}if(this.weapons[0].tickBeatSystem(e,t),this.weapons[1].tickBeatSystem(e,t),a.length)for(let t=0;t=98&&(this.superCuts[this.superCutIdx].components.supercutfx.createSuperCut(e.el.object3D,e.data.color),this.superCutIdx=(this.superCutIdx+1)%this.superCuts.length),this.beatEventsQueue.push(n)}else this.beatEventsQueue.push(n);e.destroyBeat(a,n.good)},horizontalPositions:{},verticalPositions:{},updateBeatPositioning:function(){const e={classic:.95,ride:.95,punch:1.2};return function(){const t=this.data.gameMode,a=this.horizontalPositions,n=this.verticalPositions,r=this.el.sceneEl.camera.el.object3D.position.y-1.6,s=i[t],o="classic"===t?s:1.2*s;a.left=-1.5*o,a.middleleft=-.5*o,a.middle=o,a.middleright=.5*o,a.right=1.5*o;const c=e[t],d=s;n.bottom=Math.max(.4,c+r),n.middle=Math.max(.4+d,c+d+r),n.top=Math.max(.4+2*d,c+2*d+r)}}(),registerBeat:function(e){e.hitDetectors=this.weapons.map(t=>{if("mine"===e.data.type)var a=!1;else a=o[t.el.dataset.hand]===e.data.color;return"classic"===this.data.gameMode?new n.BladeHitDetector(t,e,a):new n.PunchHitDetector(t,e,a)}),this.beats.push(e)},unregisterBeat:function(e){this.beats.splice(this.beats.indexOf(e),1)}}),window.AFRAME){const t=["beat-system"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{AFRAME.utils.device.checkHeadsetConnected()&&this.el.emit("displayconnected")},250)}}),window.AFRAME){const t=[],a=[],n=["check-vr"];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;ndocument.querySelector(e),window.$$=e=>document.querySelectorAll(e),window.$$$=e=>document.querySelector(`[${e}]`).getAttribute(e),window.$$$$=e=>document.querySelector(`[${e}]`).components[e],window.scene=this.el,window.state=this.el.systems.state.state}}),window.AFRAME){const t=["console-shortcuts"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.controllerType=e.detail.name,this.el.setAttribute("cursor",this.config[this.controllerType].cursor||{})});const a={hand:t.hand,model:!1};e.setAttribute("daydream-controls",a),e.setAttribute("oculus-go-controls",a),e.setAttribute("oculus-touch-controls",{hand:t.hand,model:!1,orientationOffset:{x:0,y:0,z:0}}),e.setAttribute("vive-controls",a),e.setAttribute("vive-focus-controls",a),e.setAttribute("windows-motion-controls",a),e.setAttribute("generic-tracked-controller-controls",a)},config:{"daydream-controls":{cursor:{downEvents:["trackpaddown","triggerdown"],upEvents:["trackpadup","triggerup"]}},"oculus-go-controls":{cursor:{downEvents:["trackpaddown","triggerdown"],upEvents:["trackpadup","triggerup"]}},"oculus-touch-controls":{cursor:{downEvents:["triggerdown","gripdown","abuttondown","bbuttondown","xbuttondown","ybuttondown"],upEvents:["triggerup","gripup","abuttonup","bbuttonup","xbuttonup","ybuttonup"]}},"vive-controls":{cursor:{downEvents:["trackpaddown","triggerdown","gripdown"],upEvents:["trackpadup","triggerup","gripup"]}},"vive-focus-controls":{cursor:{downEvents:["trackpaddown","triggerdown","gripdown"],upEvents:["trackpadup","triggerup","gripup"]}},"windows-motion-controls":{cursor:{downEvents:["trackpaddown","triggerdown","gripdown"],upEvents:["trackpadup","triggerup","gripup"]}},"generic-tracked-controller-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}}}}),window.AFRAME){const t=["controller"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.copyTexture()}),this.copyTexture()},copyTexture:function(){const e=this.el,t=this.data.from,a=e.getObject3D("mesh").material;t.getObject3D("mesh")&&(a.map=t.getObject3D("mesh").material.map,a.map&&(a.map.needsUpdate=!0,a.needsUpdate=!0))}}),window.AFRAME){const t=["copy-texture"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.reset()})},update:function(e){const t=this.data;this.el;!e.isVictory&&t.isVictory&&this.reset()},reset:function(){this.el.components["supercurve-follow"].curveProgress=0,this.el.object3D.position.set(0,0,0),this.el.object3D.rotation.set(0,0,0)}}),window.AFRAME){const t=["curve-follow-rig-reset"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{t.spawn()});s.style.width="460px",s.style.bottomMargin="10px"}()},addDebugStageControls:function(){var e=0;const t=(t,a,n)=>{const r=document.createElement("div");r.style.position="absolute",r.id="stagecontrol"+t,r.style.width="100px",r.style.height="30px",r.style.top="element"===n?"20px":"70px",r.style.background="#000",r.style.color="#fff",r.style.zIndex=999999999,r.style.padding="5px",r.style.font="14px sans-serif",r.style.textAlign="center",r.style.cursor="pointer",r.style.left=20+120*t+"px",r.innerHTML=a,"element"===n?r.addEventListener("click",()=>{document.getElementById("stagecontrol"+e).style.background="#000",r.style.background="#66f",e=t}):r.addEventListener("click",()=>{this.beatLoader.generateEvent({_type:e,_value:t})}),document.body.appendChild(r)};["sky","tunnelNeon","leftStageLasers","rightStageLasers","floor"].forEach((e,a)=>{t(a,e,"element")}),["off","blue","blue","bluefade","","red","red","redfade"].forEach((e,a)=>{t(a,e,"value")})}}),window.AFRAME){const t=["debug-beat-generator"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{const t=this.el.sceneEl.components["beat-generator"];t.data.gameMode=e,scene.components["beat-system"].data.gameMode=e,scene.components["beat-system"].updateBeatPositioning(),n.forEach(a=>{r.forEach(n=>{let r=t.requestBeat("punch"===e?"dot":"arrow","red"),s=Math.random()<.5?"left":"right";r.components.beat.onGenerate(.001,a,n,s),r.object3D.renderOrder=9999,r.play(),r=t.requestBeat("dot","blue"),s=Math.random()<.5?"down":"up",r.components.beat.onGenerate(.0015,a,n,s),r.object3D.renderOrder=9999,r.play()})});const a=scene.components.pool__wall.requestEntity();a.components.wall.onGenerate(.0015,"left",4,4,!0),a.play(),document.getElementById("beatContainer").removeAttribute("bind__visible"),document.getElementById("beatContainer").object3D.visible=!0},500))}}),window.AFRAME){const t=["debug-beat-positioning"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{t.isTrusted&&(e.emit("triggerdown"),e.emit("triggerup"))}),"oculus"===AFRAME.utils.getUrlParameter("debug")?(e.emit("controllerconnected",{name:"oculus-touch-controls"}),t.emit("controllerconnected",{name:"oculus-touch-controls"}),e.setAttribute("controller","controllerType","oculus-touch-controls"),t.setAttribute("controller","controllerType","oculus-touch-controls")):(e.emit("controllerconnected",{name:"vive-controls"}),t.emit("controllerconnected",{name:"vive-controls"}),e.setAttribute("controller","controllerType","vive-controls"),t.setAttribute("controller","controllerType","vive-controls")),this.el.emit("enter-vr",null,!1),document.addEventListener("keydown",a=>{var n,r,s,o;a.shiftKey&&(32!==a.keyCode?81!==a.keyCode?(78===a.keyCode&&(this.secondaryGripDown?(t.emit("gripup"),this.secondaryGripDown=!1):(t.emit("gripdown"),this.secondaryGripDown=!0)),77===a.keyCode&&(this.primaryGripDown?(e.emit("gripup"),this.primaryGripDown=!1):(e.emit("gripdown"),this.primaryGripDown=!0)),49===a.keyCode&&t.emit("menudown"),a.ctrlKey?(s=t.getAttribute("position"),72===a.keyCode&&(s.x-=.02),74===a.keyCode&&(s.y-=.02),75===a.keyCode&&(s.y+=.02),76===a.keyCode&&(s.x+=.02),59!==a.keyCode&&186!==a.keyCode||(s.z-=.01),222===a.keyCode&&(s.z+=.01),t.setAttribute("position",AFRAME.utils.clone(s))):(n=e.getAttribute("position"),72===a.keyCode&&(n.x-=.02),74===a.keyCode&&(n.y-=.02),75===a.keyCode&&(n.y+=.02),76===a.keyCode&&(n.x+=.02),59!==a.keyCode&&186!==a.keyCode||(n.z-=.02),222===a.keyCode&&(n.z+=.02),e.setAttribute("position",AFRAME.utils.clone(n))),a.ctrlKey?(o=t.getAttribute("rotation"),89===a.keyCode&&(o.x-=10),79===a.keyCode&&(o.x+=10),85===a.keyCode&&(o.y-=10),73===a.keyCode&&(o.y+=10),t.setAttribute("rotation",AFRAME.utils.clone(o))):(r=e.getAttribute("rotation"),89===a.keyCode&&(r.x-=10),79===a.keyCode&&(r.x+=10),85===a.keyCode&&(r.y-=10),73===a.keyCode&&(r.y+=10),e.setAttribute("rotation",AFRAME.utils.clone(r)))):this.isSecondaryTriggerDown?(t.emit("triggerup"),this.isSecondaryTriggerDown=!1):(t.emit("triggerdown"),this.isSecondaryTriggerDown=!0):this.isTriggerDown?(e.emit("triggerup"),this.isTriggerDown=!1):(e.emit("triggerdown"),this.isTriggerDown=!0))})))},play:function(){var e,t;if(this.bounds=document.body.getBoundingClientRect(),!AFRAME.utils.getUrlParameter("debug"))return;if(AFRAME.utils.getUrlParameter("headfist"))return;e=document.getElementById("rightHand"),(t=document.getElementById("leftHand")).object3D.position.set(-.2,1.5,-.5),e.object3D.position.set(.2,1.5,-.5),t.setAttribute("rotation",{x:35,y:0,z:0});const a=AFRAME.utils.getUrlParameter("type");[e,t].forEach(e=>{e.querySelector(".laser").object3D.visible=!1,"classic"===a?(e.querySelector(".bladeContainer").removeAttribute("bind__visible"),e.querySelector(".bladeContainer").object3D.visible=!0,e.querySelector(".bladeContainer").object3D.scale.set(1,1,1)):"punch"===a?(e.querySelector(".punch").removeAttribute("bind__visible"),e.querySelector(".punch").object3D.visible=!0,e.querySelector(".punch").object3D.visible=!0,e.querySelector(".bladeHandle").object3D.visible=!1):"ride"===a&&(e.querySelector(".handStar").removeAttribute("bind__visible"),e.querySelector(".handStar").object3D.visible=!0,e.querySelector(".bladeHandle").object3D.visible=!1)})},onMouseMove:function(){const e=new THREE.Vector3,t=new THREE.Vector2,a=new THREE.Vector3;return function(n){const r=this.bounds,s=this.el.sceneEl.camera,o=n.clientX-r.left,i=n.clientY-r.top;t.x=o/r.width*2-1,t.y=-i/r.height*2-1,document.getElementById("camera").object3D.getWorldPosition(a),e.set(t.x,t.y,.5).unproject(s).sub(a).normalize();const c=document.getElementById("rightHand").object3D.position,d=-a.z/e.z;s.getWorldPosition(c).add(e.multiplyScalar(d)),c.y+=.8}}()}),window.AFRAME){const t=["debug-controller"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{console.log(this.el.components.song.getCurrentTime())},250)}}),window.AFRAME){const t=["debug-song-time"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.split(",").forEach(e=>{this.el.sceneEl.emit("debug"+e.trim(),null,!1)})},500)}}),window.AFRAME){const t=["debug-state"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{var n=s.data;if(n.enabled&&(n.captureBubbles||e.target===r))for(t=0;t{var t=a.data;t.enabled&&(t.captureBubbles||n.target===e)&&a.el.emit(t.as||t.event,n.detail?n.detail:null,!1)},t.delay)}))}}),window.AFRAME){const t=["delayed-proxy-event"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=0&&(this.beatContainer.object3D.position.z=1.5*-Math.pow(1-this.countDown,2),this.countDown-=t/1e3)},reset:function(){this.beatContainer.object3D.position.z=0,this.el.sceneEl.setAttribute("stage-colors","color","blue")},triggerAnimations:function(){for(let e=0;e{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.preloadFromSelector("#mainLogo"),this.preloadFromSelector("#prevArrow"),this.preloadFromSelector("#stepback"),this.preloadFromSelector(".difficultyBackground"),this.preloadFromSelector(".genreIcon"),this.preloadFromSelector(".merkababloom"),this.preloadFromSelector(".searchResultBackground"),this.preloadMaterialsComponentTextures(),this.preloadKeyboard(),this.preloadSlice(),this.preloadEnvMap(),this.preloadFXs()},1e3)},preloadFromSelector:function(e){const t=document.querySelector(e);this.preloadTexture(t.getObject3D("mesh").material.map)},preloadMaterialsComponentTextures:function(){const e=this.el.systems.materials.textureList;for(var t=0;t{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.el.addEventListener(e,this.swapHand)})},swapHand:function(){this.data.enabled&&this.el.sceneEl.emit("activehandswap",null,!1)}}),window.AFRAME){const t=["hand-swapper"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{if(!t.detail||!t.detail.intersectedEl||!this.data.enabled)return;const a=t.detail.intersectedEl;a.classList.contains("blade")&&a!==e?(this.isColliding=!0,this.el.components.haptics__weapon.pulse()):this.isColliding=!1}),e.addEventListener("mouseleave",e=>{this.isColliding=!1})},tick:function(){this.isColliding&&this.data.enabled&&this.el.components.haptics__weapon.pulse()}}),window.AFRAME){const t=["haptics-weapons"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.username=e.detail.value,localStorage.setItem("moonriderusername",this.username)}),this.el.addEventListener("leaderboardsubmit",this.addScore.bind(this))},update:function(e){!n.apps.length&&this.data.apiKey&&(n.initializeApp({apiKey:this.data.apiKey,authDomain:this.data.authDomain,databaseURL:this.data.databaseURL,projectId:this.data.projectId,storageBucket:this.data.storageBucket,messagingSenderId:this.data.messagingSenderId}),this.firestore=n.firestore(),this.firestore.settings({}),this.db=this.firestore.collection("scores")),!e.isVictory&&this.data.isVictory&&this.checkLeaderboardQualify(),this.data.difficulty&&e.difficulty!==this.data.difficulty||this.data.menuSelectedChallengeId&&e.menuSelectedChallengeId!==this.data.menuSelectedChallengeId?this.fetchScores(this.data.menuSelectedChallengeId):this.data.challengeId&&e.challengeId!==this.data.challengeId&&this.fetchScores(this.data.challengeId)},addScore:function(){const e=this.el.sceneEl.systems.state.state;if(!e.isVictory||!e.inVR)return;const t={accuracy:e.score.accuracy,challengeId:e.challenge.id,gameMode:this.data.gameMode,score:e.score.score,username:this.username,difficulty:this.data.difficulty||e.challenge.difficulty,time:new Date};r.includes(this.username.toLowerCase())||this.username.match(s)||this.db.add(t),this.addEventDetail.scoreData=t,this.el.emit("leaderboardscoreadded",this.addEventDetail,!1)},fetchScores:function(e){if("ride"===this.data.gameMode)return;const t=this.el.sceneEl.systems.state.state;this.db.where("challengeId","==",e).where("difficulty","==",t.menuSelectedChallenge.id?t.menuSelectedChallenge.difficulty:t.challenge.difficulty).where("gameMode","==",this.data.gameMode).orderBy("score","desc").orderBy("time","asc").limit(10).get().then(t=>{this.eventDetail.challengeId=e,this.scores.length=0,t.empty||t.forEach(e=>this.scores.push(e.data())),this.el.sceneEl.emit("leaderboard",this.eventDetail,!1)}).catch(e=>{console.error("[firestore]",e)})},checkLeaderboardQualify:function(){const e=this.el.sceneEl.systems.state.state.score.score;if(!AFRAME.utils.getUrlParameter("dot")){if(this.scores.length<10)return this.qualifyingIndex=this.scores.length,void this.el.sceneEl.emit("leaderboardqualify",this.scores.length,!1);for(let t=0;tthis.scores[t].score)return this.qualifyingIndex=t,void this.el.sceneEl.emit("leaderboardqualify",t,!1)}}}),window.AFRAME){const t=["leaderboard"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=(null!=n?n:t.logLevel)&&e({level:s[a].toLowerCase(),message:i,args:r,type:t.name})}},n=0,r=o;n{},console.timeEnd=()=>{},a(42),a(43),a(44),a(45),a(46),a(47),a(49),a(50),AFRAME.log=()=>{},a(52),a(54),a(55),a(56),a(57),a(58),n(a(59)),n(a(193)),a(197),a(204),e.hot.accept(),document.addEventListener("DOMContentLoaded",()=>{!function(){const e=document.querySelector("form");if(!e)return;if(localStorage.getItem("subscribeClosed")){const t=e.parentNode;return void t.parentNode.removeChild(t)}document.getElementById("subscribeClose").addEventListener("click",()=>{const t=e.parentNode;t.parentNode.removeChild(t),localStorage.setItem("subscribeClosed",!0)});const t=e.querySelector(".submit"),a=e.querySelector('input[type="email"]'),n=document.querySelector("#subscribeForm > h2");let r="";n&&(r=n.innerHTML);e.addEventListener("submit",e=>{e.preventDefault();const a=new XMLHttpRequest;let r="http://localhost:5000/mail/subscribe";return r="https://supermedium.com/mail/subscribe",a.open("POST",r),a.addEventListener("load",()=>{200!==parseInt(a.status,10)&&(window.location.href="https://supermedium/subscribe/"),t&&(t.disabled=!0,t.innerHTML="Subscribed!"),n&&(n.innerHTML="Successfully subscribed, thank you!")}),a.setRequestHeader("Content-Type","application/json;charset=UTF-8"),a.send(JSON.stringify({email:document.querySelector('[name="email"]').value,source:"moonrider"})),!1}),t&&a.addEventListener("keydown",()=>{t.hasAttribute("disabled")&&(t.innerHTML="Subscribe",t.removeAttribute("disabled")),n&&r&&(n.innerHTML=r)})}()}),"http:"!==window.location.protocol||window.location.host.startsWith("localhost")||window.location.replace("https:"+location.href.substring(location.protocol.length))},function(e,t){THREE.BufferGeometryUtils={computeTangents:function(e){var t=e.index,a=e.attributes;if(null!==t&&void 0!==a.position&&void 0!==a.normal&&void 0!==a.uv){var n=t.array,r=a.position.array,s=a.normal.array,o=a.uv.array,i=r.length/3;void 0===a.tangent&&e.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*i),4));for(var c=a.tangent.array,d=[],l=[],u=0;u0){f=f.clone();for(var b=0;b=n.x&&this.boxMin.y<=r.y&&this.boxMax.y>=n.y&&this.boxMin.z<=r.z&&this.boxMax.z>=n.z}}(),setDirty:function(){this.dirty=!0},refreshObjects:function(){const e=this.data;this.objectEls=e.objects?this.el.sceneEl.querySelectorAll(e.objects):this.el.sceneEl.children,this.dirty=!1}})},function(e,t){var a=[new THREE.Vector2,new THREE.Vector2,new THREE.Vector2,new THREE.Vector2];function n(e,t,n,r){const s=1/r,o=1/n;return a[0].set(s*t,o*e+o),a[1].set(s*t,o*e),a[2].set(s*t+s,o*e),a[3].set(s*t+s,o*e+o),a}AFRAME.registerComponent("atlas-uvs",{dependencies:["geometry"],schema:{totalColumns:{type:"int",default:1},totalRows:{type:"int",default:1},column:{type:"int",default:1},row:{type:"int",default:1}},update:function(){const e=this.data,t=n(e.row-1,e.column-1,e.totalRows,e.totalColumns),a=this.el.getObject3D("mesh").geometry;var r=new Float32Array([t[0].x,t[0].y,t[3].x,t[3].y,t[1].x,t[1].y,t[2].x,t[2].y]);a.setAttribute("uv",new THREE.BufferAttribute(r,2)),a.uvsNeedUpdate=!0}}),AFRAME.registerComponent("dynamic-texture-atlas",{schema:{canvasId:{default:"dynamicAtlas"},canvasHeight:{default:1024},canvasWidth:{default:1024},debug:{default:!1},numColumns:{default:8},numRows:{default:8}},multiple:!0,init:function(){const e=this.canvas=document.createElement("canvas");e.id=this.data.canvasId,e.height=this.data.canvasHeight,e.width=this.data.canvasWidth,this.ctx=e.getContext("2d"),document.body.appendChild(e),this.data.debug&&(e.style.left=0,e.style.top=0,e.style.position="fixed",e.style.zIndex=9999999999)},drawTexture:function(e,t,a,r,s){const o=this.canvas,i=this.data;e.complete||(e.onload=()=>{this.drawTexture(e,t,a)});const c=s||o.height/i.numRows,d=r||o.width/i.numColumns;return this.ctx.drawImage(e,d*t,d*a,d,c),n(t,a,i.numRows,i.numColumns)}}),e.exports.getGridUvs=n},function(e,t){if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");var a={};AFRAME.registerComponent("audioanalyser",{schema:{buffer:{default:!1},beatDetectionDecay:{default:.99},beatDetectionMinVolume:{default:15},beatDetectionThrottle:{default:250},cache:{default:!1},enabled:{default:!0},enableBeatDetection:{default:!0},enableLevels:{default:!0},enableWaveform:{default:!0},enableVolume:{default:!0},fftSize:{default:2048},smoothingTimeConstant:{default:.8},src:{parse:function(e){return e.constructor!==String?e:e.startsWith("#")||e.startsWith(".")?document.querySelector(e):e}},unique:{default:!1}},init:function(){this.audioEl=null,this.levels=null,this.waveform=null,this.volume=0,this.xhr=null,this.initContext()},update:function(e){var t=this.analyser,a=this.data;e.fftSize===a.fftSize&&e.smoothingTimeConstant===a.smoothingTimeConstant||(t.fftSize=a.fftSize,t.smoothingTimeConstant=a.smoothingTimeConstant,this.levels=new Uint8Array(t.frequencyBinCount),this.waveform=new Uint8Array(t.fftSize)),a.src&&this.refreshSource()},tick:function(e,t){var a,n=this.data;if(n.enabled){if((n.enableLevels||n.enableVolume)&&this.analyser.getByteFrequencyData(this.levels),n.enableWaveform&&this.analyser.getByteTimeDomainData(this.waveform),n.enableVolume||n.enableBeatDetection){for(var r=0,s=0;sthis.beatCutOff&&a>this.data.beatDetectionMinVolume?(this.el.emit("audioanalyserbeat",null,!1),this.beatCutOff=1.5*a,this.beatTime=0):this.beatTime<=this.data.beatDetectionThrottle?this.beatTime+=t:(this.beatCutOff*=this.data.beatDetectionDecay,this.beatCutOff=Math.max(this.beatCutOff,this.data.beatDetectionMinVolume)))}},initContext:function(){var e,t=this.data;this.context=new(window.webkitAudioContext||window.AudioContext),e=this.analyser=this.context.createAnalyser(),(this.gainNode=this.context.createGain()).connect(e),e.connect(this.context.destination),e.fftSize=t.fftSize,e.smoothingTimeConstant=t.smoothingTimeConstant,this.levels=new Uint8Array(e.frequencyBinCount),this.waveform=new Uint8Array(e.fftSize)},refreshSource:function(){this.analyser;var e=this.data;e.buffer&&e.src.constructor===String?this.getBufferSource().then(e=>{this.source=e,this.source.connect(this.gainNode)}):(this.source=this.getMediaSource(),this.source.connect(this.gainNode))},suspendContext:function(){this.context.suspend()},resumeContext:function(){this.context.resume()},fetchAudioBuffer:function(e){return a[e]?a[e].constructor===Promise?a[e]:Promise.resolve(a[e]):(this.data.cache||Object.keys(a).forEach((function(e){delete a[e]})),a[e]=new Promise(t=>{const n=this.xhr=new XMLHttpRequest;n.open("GET",e),n.responseType="arraybuffer",n.addEventListener("load",()=>{function r(n){a[e]=n,t(n)}const s=this.context.decodeAudioData(n.response,r);s&&s.constructor===Promise&&s.then(r).catch(console.error)}),n.send()}),a[e])},getBufferSource:function(){var e=this.data;return this.fetchAudioBuffer(e.src).then(()=>{var t;return(t=this.context.createBufferSource()).buffer=a[e.src],this.el.emit("audioanalyserbuffersource",t,!1),t}).catch(console.error)},getMediaSource:function(){const e={};return function(){const t=this.data.src.constructor===String?this.data.src:this.data.src.src;if(e[t])return e[t];this.data.src.constructor===String?(this.audio=document.createElement("audio"),this.audio.crossOrigin="anonymous",this.audio.setAttribute("src",this.data.src)):this.audio=this.data.src;const a=this.context.createMediaElementSource(this.audio);return e[t]=a,a}}()})},function(e,t){var a=AFRAME.utils.styleParser;if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");AFRAME.registerComponent("event-set",{schema:{default:"",parse:function(e){return a.parse(e)}},multiple:!0,init:function(){this.eventHandler=null,this.eventName=null},update:function(e){this.removeEventListener(),this.updateEventListener(),this.addEventListener()},remove:function(){this.removeEventListener()},pause:function(){this.removeEventListener()},play:function(){this.addEventListener()},updateEventListener:function(){var e,t,a,n=this.data,r=this.el;e=n._event||this.id,t=n._target,a=t?r.sceneEl.querySelector(t):r,this.eventName=e;const s=()=>{var e;for(e in n)"_event"!==e&&"_target"!==e&&AFRAME.utils.entity.setComponentProperty.call(this,a,e,n[e])};isNaN(n._delay)?this.eventHandler=s:this.eventHandler=()=>{setTimeout(s,parseFloat(n._delay))}},addEventListener:function(){this.el.addEventListener(this.eventName,this.eventHandler)},removeEventListener:function(){this.el.removeEventListener(this.eventName,this.eventHandler)}})},function(e,t,a){THREE.BufferGeometryUtils||a(48),AFRAME.registerComponent("geometry-merger",{schema:{preserveOriginal:{default:!1}},init:function(){var e=this;this.geometry=new THREE.Geometry,this.mesh=new THREE.Mesh(this.geometry),this.el.setObject3D("mesh",this.mesh),this.faceIndex={},this.vertexIndex={},this.el.object3D.traverse((function(t){"Mesh"===t.type&&t!==e.mesh&&(e.faceIndex[t.parent.uuid]=[e.geometry.faces.length,e.geometry.faces.length+t.geometry.faces.length-1],e.vertexIndex[t.parent.uuid]=[e.geometry.vertices.length,e.geometry.vertices.length+t.geometry.vertices.length-1],t.parent.updateMatrix(),e.geometry.merge(t.geometry,t.parent.matrix),e.data.preserveOriginal||t.parent.remove(t))}))}}),AFRAME.registerComponent("buffer-geometry-merger",{schema:{preserveOriginal:{default:!1}},init:function(){var e=[];this.el.sceneEl.object3D.updateMatrixWorld(),this.el.object3D.traverse((function(t){"Mesh"===t.type&&t.el!==self.el&&(t.geometry.applyMatrix(t.matrixWorld),e.push(t.geometry.clone()),t.parent.remove(t))}));const t=THREE.BufferGeometryUtils.mergeBufferGeometries(e);this.mesh=new THREE.Mesh(t),this.el.setObject3D("mesh",this.mesh)}})},function(e,t){THREE.BufferGeometryUtils={computeTangents:function(e){var t=e.index,a=e.attributes;if(null!==t&&void 0!==a.position&&void 0!==a.normal&&void 0!==a.uv){var n=t.array,r=a.position.array,s=a.normal.array,o=a.uv.array,i=r.length/3;void 0===a.tangent&&e.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*i),4));for(var c=a.tangent.array,d=[],l=[],u=0;ua.max&&this.logs.shift(),this.el.setAttribute("text",{value:this.logs.join("\n")}))},remove:function(){this.el.removeAttribute("text"),this.system.unregisterLogger(this)}})},function(e,t,a){a(53),AFRAME.registerComponent("orbit-controls",{dependencies:["camera"],schema:{autoRotate:{type:"boolean"},autoRotateSpeed:{default:2},dampingFactor:{default:.1},enabled:{default:!0},enableDamping:{default:!0},enableKeys:{default:!0},enablePan:{default:!0},enableRotate:{default:!0},enableZoom:{default:!0},initialPosition:{type:"vec3"},keyPanSpeed:{default:7},minAzimuthAngle:{type:"number",default:1/0},maxAzimuthAngle:{type:"number",default:1/0},maxDistance:{default:1e3},maxPolarAngle:{default:AFRAME.utils.device.isMobile()?90:120},minDistance:{default:1},minPolarAngle:{default:0},minZoom:{default:0},panSpeed:{default:1},rotateSpeed:{default:.05},screenSpacePanning:{default:!1},target:{type:"vec3"},zoomSpeed:{default:.5}},init:function(){var e,t=this.el;this.controls=new THREE.OrbitControls(t.getObject3D("camera"),t.sceneEl.renderer.domElement),e=new THREE.Vector3,t.sceneEl.addEventListener("enter-vr",()=>{(AFRAME.utils.device.checkHeadsetConnected()||AFRAME.utils.device.isMobile())&&(this.controls.enabled=!1,t.hasAttribute("look-controls")&&(t.setAttribute("look-controls","enabled",!0),e.copy(t.getObject3D("camera").position),t.getObject3D("camera").position.set(0,0,0)))}),t.sceneEl.addEventListener("exit-vr",()=>{(AFRAME.utils.device.checkHeadsetConnected()||AFRAME.utils.device.isMobile())&&(this.controls.enabled=!0,t.getObject3D("camera").position.copy(e),t.hasAttribute("look-controls")&&t.setAttribute("look-controls","enabled",!1))}),document.body.style.cursor="grab",document.addEventListener("mousedown",()=>{document.body.style.cursor="grabbing"}),document.addEventListener("mouseup",()=>{document.body.style.cursor="grab"}),this.target=new THREE.Vector3,t.getObject3D("camera").position.copy(this.data.initialPosition)},update:function(e){var t=this.controls,a=this.data;t.target=this.target.copy(a.target),t.autoRotate=a.autoRotate,t.autoRotateSpeed=a.autoRotateSpeed,t.dampingFactor=a.dampingFactor,t.enabled=a.enabled,t.enableDamping=a.enableDamping,t.enableKeys=a.enableKeys,t.enablePan=a.enablePan,t.enableRotate=a.enableRotate,t.enableZoom=a.enableZoom,t.keyPanSpeed=a.keyPanSpeed,t.maxPolarAngle=THREE.Math.degToRad(a.maxPolarAngle),t.maxDistance=a.maxDistance,t.minDistance=a.minDistance,t.minPolarAngle=THREE.Math.degToRad(a.minPolarAngle),t.minZoom=a.minZoom,t.panSpeed=a.panSpeed,t.rotateSpeed=a.rotateSpeed,t.screenSpacePanning=a.screenSpacePanning,t.zoomSpeed=a.zoomSpeed},tick:function(){var e=this.controls;this.data.enabled&&e.enabled&&(e.enableDamping||e.autoRotate)&&this.controls.update()}})},function(e,t){THREE.OrbitControls=function(e,t){var a,n,r,s,o;this.object=e,this.domElement=void 0!==t?t:document,this.enabled=!0,this.target=new THREE.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.25,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.enableKeys=!0,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},this.mouseButtons={ORBIT:THREE.MOUSE.LEFT,ZOOM:THREE.MOUSE.MIDDLE,PAN:THREE.MOUSE.RIGHT},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=function(){return p.phi},this.getAzimuthalAngle=function(){return p.theta},this.saveState=function(){i.target0.copy(i.target),i.position0.copy(i.object.position),i.zoom0=i.object.zoom},this.reset=function(){i.target.copy(i.target0),i.object.position.copy(i.position0),i.object.zoom=i.zoom0,i.object.updateProjectionMatrix(),i.dispatchEvent(c),i.update(),h=u.NONE},this.update=(a=new THREE.Vector3,n=(new THREE.Quaternion).setFromUnitVectors(e.up,new THREE.Vector3(0,1,0)),r=n.clone().inverse(),s=new THREE.Vector3,o=new THREE.Quaternion,function(){var e=i.object.position;return a.copy(e).sub(i.target),a.applyQuaternion(n),p.setFromVector3(a),i.autoRotate&&h===u.NONE&&k(2*Math.PI/60/60*i.autoRotateSpeed),p.theta+=f.theta,p.phi+=f.phi,p.theta=Math.max(i.minAzimuthAngle,Math.min(i.maxAzimuthAngle,p.theta)),p.phi=Math.max(i.minPolarAngle,Math.min(i.maxPolarAngle,p.phi)),p.makeSafe(),p.radius*=b,p.radius=Math.max(i.minDistance,Math.min(i.maxDistance,p.radius)),i.target.add(y),a.setFromSpherical(p),a.applyQuaternion(r),e.copy(i.target).add(a),i.object.lookAt(i.target),!0===i.enableDamping?(f.theta*=1-i.dampingFactor,f.phi*=1-i.dampingFactor):f.set(0,0,0),b=1,y.set(0,0,0),!!(g||s.distanceToSquared(i.object.position)>m||8*(1-o.dot(i.object.quaternion))>m)&&(i.dispatchEvent(c),s.copy(i.object.position),o.copy(i.object.quaternion),g=!1,!0)}),this.dispose=function(){i.domElement.removeEventListener("contextmenu",V,!1),i.domElement.removeEventListener("mousedown",O,!1),i.domElement.removeEventListener("wheel",Z,!1),i.domElement.removeEventListener("touchstart",B,!1),i.domElement.removeEventListener("touchend",q,!1),i.domElement.removeEventListener("touchmove",z,!1),document.removeEventListener("mousemove",U,!1),document.removeEventListener("mouseup",F,!1),window.removeEventListener("keydown",H,!1)};var i=this,c={type:"change"},d={type:"start"},l={type:"end"},u={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},h=u.NONE,m=1e-6,p=new THREE.Spherical,f=new THREE.Spherical,b=1,y=new THREE.Vector3,g=!1,v=new THREE.Vector2,w=new THREE.Vector2,A=new THREE.Vector2,S=new THREE.Vector2,E=new THREE.Vector2,x=new THREE.Vector2,T=new THREE.Vector2,R=new THREE.Vector2,_=new THREE.Vector2;function N(){return Math.pow(.95,i.zoomSpeed)}function k(e){f.theta-=e}function M(e){f.phi-=e}var P,L=(P=new THREE.Vector3,function(e,t){P.setFromMatrixColumn(t,0),P.multiplyScalar(-e),y.add(P)}),j=function(){var e=new THREE.Vector3;return function(t,a){e.setFromMatrixColumn(a,1),e.multiplyScalar(t),y.add(e)}}(),C=function(){var e=new THREE.Vector3;return function(t,a){var n=i.domElement===document?i.domElement.body:i.domElement;if(i.object.isPerspectiveCamera){var r=i.object.position;e.copy(r).sub(i.target);var s=e.length();s*=Math.tan(i.object.fov/2*Math.PI/180),L(2*t*s/n.clientHeight,i.object.matrix),j(2*a*s/n.clientHeight,i.object.matrix)}else i.object.isOrthographicCamera?(L(t*(i.object.right-i.object.left)/i.object.zoom/n.clientWidth,i.object.matrix),j(a*(i.object.top-i.object.bottom)/i.object.zoom/n.clientHeight,i.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),i.enablePan=!1)}}();function I(e){i.object.isPerspectiveCamera?b/=e:i.object.isOrthographicCamera?(i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom*e)),i.object.updateProjectionMatrix(),g=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function D(e){i.object.isPerspectiveCamera?b*=e:i.object.isOrthographicCamera?(i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom/e)),i.object.updateProjectionMatrix(),g=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function O(e){if(!1!==i.enabled){switch(e.preventDefault(),e.button){case i.mouseButtons.ORBIT:if(!1===i.enableRotate)return;!function(e){v.set(e.clientX,e.clientY)}(e),h=u.ROTATE;break;case i.mouseButtons.ZOOM:if(!1===i.enableZoom)return;!function(e){T.set(e.clientX,e.clientY)}(e),h=u.DOLLY;break;case i.mouseButtons.PAN:if(!1===i.enablePan)return;!function(e){S.set(e.clientX,e.clientY)}(e),h=u.PAN}h!==u.NONE&&(document.addEventListener("mousemove",U,!1),document.addEventListener("mouseup",F,!1),i.dispatchEvent(d))}}function U(e){if(!1!==i.enabled)switch(e.preventDefault(),h){case u.ROTATE:if(!1===i.enableRotate)return;!function(e){w.set(e.clientX,e.clientY),A.subVectors(w,v);var t=i.domElement===document?i.domElement.body:i.domElement;k(2*Math.PI*A.x/t.clientWidth*i.rotateSpeed),M(2*Math.PI*A.y/t.clientHeight*i.rotateSpeed),v.copy(w),i.update()}(e);break;case u.DOLLY:if(!1===i.enableZoom)return;!function(e){R.set(e.clientX,e.clientY),_.subVectors(R,T),_.y>0?I(N()):_.y<0&&D(N()),T.copy(R),i.update()}(e);break;case u.PAN:if(!1===i.enablePan)return;!function(e){E.set(e.clientX,e.clientY),x.subVectors(E,S),C(x.x,x.y),S.copy(E),i.update()}(e)}}function F(e){!1!==i.enabled&&(document.removeEventListener("mousemove",U,!1),document.removeEventListener("mouseup",F,!1),i.dispatchEvent(l),h=u.NONE)}function Z(e){!1===i.enabled||!1===i.enableZoom||h!==u.NONE&&h!==u.ROTATE||(e.preventDefault(),e.stopPropagation(),i.dispatchEvent(d),function(e){e.deltaY<0?D(N()):e.deltaY>0&&I(N()),i.update()}(e),i.dispatchEvent(l))}function H(e){!1!==i.enabled&&!1!==i.enableKeys&&!1!==i.enablePan&&function(e){switch(e.keyCode){case i.keys.UP:C(0,i.keyPanSpeed),i.update();break;case i.keys.BOTTOM:C(0,-i.keyPanSpeed),i.update();break;case i.keys.LEFT:C(i.keyPanSpeed,0),i.update();break;case i.keys.RIGHT:C(-i.keyPanSpeed,0),i.update()}}(e)}function B(e){if(!1!==i.enabled){switch(e.touches.length){case 1:if(!1===i.enableRotate)return;!function(e){v.set(e.touches[0].pageX,e.touches[0].pageY)}(e),h=u.TOUCH_ROTATE;break;case 2:if(!1===i.enableZoom)return;!function(e){var t=e.touches[0].pageX-e.touches[1].pageX,a=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(t*t+a*a);T.set(0,n)}(e),h=u.TOUCH_DOLLY;break;case 3:if(!1===i.enablePan)return;!function(e){S.set(e.touches[0].pageX,e.touches[0].pageY)}(e),h=u.TOUCH_PAN;break;default:h=u.NONE}h!==u.NONE&&i.dispatchEvent(d)}}function z(e){if(!1!==i.enabled)switch(e.preventDefault(),e.stopPropagation(),e.touches.length){case 1:if(!1===i.enableRotate)return;if(h!==u.TOUCH_ROTATE)return;!function(e){w.set(e.touches[0].pageX,e.touches[0].pageY),A.subVectors(w,v);var t=i.domElement===document?i.domElement.body:i.domElement;k(2*Math.PI*A.x/t.clientWidth*i.rotateSpeed),M(2*Math.PI*A.y/t.clientHeight*i.rotateSpeed),v.copy(w),i.update()}(e);break;case 2:if(!1===i.enableZoom)return;if(h!==u.TOUCH_DOLLY)return;!function(e){var t=e.touches[0].pageX-e.touches[1].pageX,a=e.touches[0].pageY-e.touches[1].pageY,n=Math.sqrt(t*t+a*a);R.set(0,n),_.subVectors(R,T),_.y>0?D(N()):_.y<0&&I(N()),T.copy(R),i.update()}(e);break;case 3:if(!1===i.enablePan)return;if(h!==u.TOUCH_PAN)return;!function(e){E.set(e.touches[0].pageX,e.touches[0].pageY),x.subVectors(E,S),C(x.x,x.y),S.copy(E),i.update()}(e);break;default:h=u.NONE}}function q(e){!1!==i.enabled&&(i.dispatchEvent(l),h=u.NONE)}function V(e){!1!==i.enabled&&e.preventDefault()}i.domElement.addEventListener("contextmenu",V,!1),i.domElement.addEventListener("mousedown",O,!1),i.domElement.addEventListener("wheel",Z,!1),i.domElement.addEventListener("touchstart",B,!1),i.domElement.addEventListener("touchend",q,!1),i.domElement.addEventListener("touchmove",z,!1),window.addEventListener("keydown",H,!1),this.update()},THREE.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),THREE.OrbitControls.prototype.constructor=THREE.OrbitControls,Object.defineProperties(THREE.OrbitControls.prototype,{center:{get:function(){return console.warn("THREE.OrbitControls: .center has been renamed to .target"),this.target}},noZoom:{get:function(){return console.warn("THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),!this.enableZoom},set:function(e){console.warn("THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),this.enableZoom=!e}},noRotate:{get:function(){return console.warn("THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),!this.enableRotate},set:function(e){console.warn("THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),this.enableRotate=!e}},noPan:{get:function(){return console.warn("THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead."),!this.enablePan},set:function(e){console.warn("THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead."),this.enablePan=!e}},noKeys:{get:function(){return console.warn("THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),!this.enableKeys},set:function(e){console.warn("THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),this.enableKeys=!e}},staticMoving:{get:function(){return console.warn("THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),!this.enableDamping},set:function(e){console.warn("THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),this.enableDamping=!e}},dynamicDampingFactor:{get:function(){return console.warn("THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor},set:function(e){console.warn("THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor=e}}})},function(e,t){AFRAME.registerComponent("proxy-event",{schema:{captureBubbles:{default:!1},enabled:{default:!0},event:{type:"string"},from:{type:"string"},to:{type:"string"},as:{type:"string"},bubbles:{default:!1}},multiple:!0,init:function(){var e,t,a,n=this.data,r=this.el,s=this;if(n.from?e="PARENT"===n.from?[r.parentNode]:document.querySelectorAll(n.from):a="CHILDREN"===n.to?r.querySelectorAll("*"):"SELF"===n.to?[r]:document.querySelectorAll(n.to),n.from)for(t=0;t{"nonrecursive"!==this.id&&e.detail.object.traverse(this.set)})},update:function(){"nonrecursive"===this.id?this.set(this.el.object3D):this.el.object3D.traverse(this.set)},set:function(e){isNaN(this.data)?e.renderOrder=this.system.order[this.data]:e.renderOrder=parseFloat(this.data)}}),AFRAME.registerComponent("render-order-recursive",{init:function(){this.el.addEventListener("child-attached",e=>{e.detail.el.setAttribute("render-order",this.el.getAttribute("render-order"))})}})},function(e,t,a){var n;"undefined"!=typeof self&&self,n=function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=1)}([function(e,t,a){"use strict";var n={};e.exports.select=function(e,t,a){return n[t]||(n[t]=new Function("state","item","return "+c(t)+";")),n[t](e,a)};var r=/\.([A-Za-z][\w_-]*)/g,s=/([=&|!?:+-])(\s*)([\(]?)([A-Za-z][\w_-]*)/g,o=/^([\(]?)([A-Za-z][\w_-]*)/g,i=/state\["item"\]/g;function c(e){return e=(e=(e=(e=e.replace(r,'["$1"]')).replace(o,'$1state["$2"]')).replace(s,'$1$2$3state["$4"]')).replace(i,"item")}function d(){var e=arguments;return function(){var t;for(t=0;t","<","<=",">="],u=/\s+/,h=/\(|\)|\!/g;function m(e){return-1===(e=function(e){return 0===e.indexOf("!!")?e.replace("!!",""):0===e.indexOf("!")?e.replace("!",""):e}(e.trim())).indexOf(".")?e:e.substring(0,e.indexOf("."))}e.exports.parseKeysToWatch=function(e,t,a){var n,r;for(r=f(t,u),n=0;n [data-bind-for-active="false"]'))(n=o.querySelector('[data-bind-for-active="false"]')).setAttribute("data-bind-for-key",c),n.setAttribute("data-bind-for-value",d),n.object3D.visible=!0,n.play(),n.setAttribute("data-bind-for-active","true"),n.emit("bindforupdateinplace",i,!1);else{var l=this.generateFromTemplate(i,a);l.addEventListener("loaded",(function(){l.emit("bindforupdateinplace",i,!1)})),o.appendChild(l)}this.renderedKeys.push(d)}else-1!==t.indexOf(d)&&(e.length&&e[0].constructor===String?(n=o.querySelector('[data-bind-for-value="'+d+'"]')).setAttribute("data-bind-for-key",a):n=o.querySelector('[data-bind-for-key="'+c+'"]'),n.emit("bindforupdateinplace",i,!1));e[a+1]&&(this.data.delay?setTimeout((function(){r.renderItemsInPlace(e,t,a+1)}),this.data.delay):this.renderItemsInPlace(e,t,a+1))},generateFromTemplate:function(e,t){var a=this.data;this.el.appendChild(this.system.renderTemplate(this.template,e));var n=this.el.children[this.el.children.length-1];if(!e)return n.setAttribute("data-bind-for-key",""),n.setAttribute("data-bind-for-active","false"),n;var r=this.getBindForKey(e,t);return n.setAttribute("data-bind-for-key",r),a.key||n.setAttribute("data-bind-for-value",e),n.setAttribute("data-bind-for-active","true"),n},getElsToRemove:(n=[],function(e,t){var a=this.data,r=this.el;n.length=0;for(var s=0;s{r[e]={},r[e].START="thumb"+e+"start",r[e].END="thumb"+e+"end"});AFRAME.registerComponent("thumb-controls",{schema:{thresholdAngle:{default:89.5},thresholdPad:{default:.05},thresholdStick:{default:.75}},init:function(){var e=this.el;this.onTrackpadDown=this.onTrackpadDown.bind(this),this.onTrackpadUp=this.onTrackpadUp.bind(this),this.directionStick="",this.directionTrackpad="",e.components["tracked-controls"]&&(this.axis=e.components["tracked-controls"].axis),this.type="STICK",e.addEventListener("controllerconnected",t=>{this.axis=e.components["tracked-controls"].axis,"oculus-touch-controls"!==t.detail.name&&"windows-motion-controls"!==t.detail.name?this.type="PAD":this.type="STICK"})},play:function(){var e=this.el;e.addEventListener("trackpaddown",this.onTrackpadDown),e.addEventListener("trackpadup",this.onTrackpadUp),e.addEventListener("touchpaddown",this.onTrackpadDown),e.addEventListener("touchpadup",this.onTrackpadUp)},pause:function(){var e=this.el;e.removeEventListener("trackpaddown",this.onTrackpadDown),e.removeEventListener("trackpadup",this.onTrackpadUp),e.removeEventListener("touchpaddown",this.onTrackpadDown),e.removeEventListener("touchpadup",this.onTrackpadUp)},onTrackpadDown:function(){var e,t=this.el;this.getDistance()this.data.thresholdStick){if(!(e=this.getDirection()))return;return this.directionStick=e,t.emit(r.NULL.START,null,!1),void t.emit(r[this.directionStick].START,null,!1)}this.directionStick&&this.getDistance()360&&(o-=360),(t=a[r]-s)<0&&(e>=360+t&&e<=360||e>=0&&e<=o))return n[r];if(e>=t&&e<=o)return n[r]}},getAngle:function(){var e,t=this.axis;return this.axis?((e="PAD"===this.type?Math.atan2(-t[1],t[0]):Math.atan2(-t[3],t[2]))<0&&(e=2*Math.PI+e),THREE.Math.radToDeg(e)):0}}),AFRAME.registerComponent("thumb-controls-debug",{dependencies:["thumb-controls"],schema:{controllerType:{type:"string"},hand:{type:"string"},enabled:{default:!1}},init:function(){var e,t,a,n,r=this.el;if(this.data.enabled||AFRAME.utils.getUrlParameter("debug-thumb")){console.log("%c debug-thumb","background: #111; color: red");var s=function(){r.components["tracked-controls"].handleAxes=()=>{},a={axis:t=[0,0,0]},r.components["tracked-controls"].axis=t,r.components["thumb-controls"].axis=t};r.components["tracked-controls"]?s():this.el.addEventListener("controllerconnected",(function(){s()})),(n=this.createCanvas()).addEventListener("click",n=>{"vive-controls"===this.data.controllerType?e?r.emit("trackpadup"):r.emit("trackpaddown"):e&&(t[0]=0,t[1]=0,r.emit("axismove",a,!1)),e=!e}),n.addEventListener("mousemove",s=>{var o;e&&(o=n.getBoundingClientRect(),t[0]=(s.clientX-o.left)/240*2-1,t[1]=(s.clientY-o.top)/240*2-1,r.emit("axismove",a,!1))}),n.addEventListener("mouseleave",n=>{e&&(t[0]=0,t[1]=0,r.emit("axismove",a,!1))})}},createCanvas:function(){var e,t;return(e=document.createElement("canvas")).classList.add("debugThumb"),e.height=240,e.width=240,e.style.bottom=0,e.style.borderRadius="250px",e.style.opacity=.5,e.style.position="fixed",e.style.zIndex=999999999,"left"===this.data.hand?e.style.left=0:e.style.right=0,(t=e.getContext("2d")).fillStyle="#333",t.fillRect(0,0,240,240),document.body.appendChild(e),e}})},function(e,t,a){var n={"./HitDetector.js":16,"./active-item.js":60,"./beat-cut-fx.js":61,"./beat-generator.js":15,"./beat-hit-sound.js":62,"./beat-system.js":63,"./beat.js":22,"./blade.js":64,"./check-vr.js":65,"./console-shortcuts.js":66,"./controller.js":67,"./copy-texture.js":68,"./cursor-laser.js":69,"./cursor-mesh.js":70,"./curve-follow-rig-reset.js":71,"./cutfx-shader.js":72,"./debug-beat-generator.js":75,"./debug-beat-positioning.js":76,"./debug-controller.js":77,"./debug-cursor.js":78,"./debug-intro.js":79,"./debug-song-time.js":80,"./debug-state.js":81,"./delayed-proxy-event.js":82,"./difficulty-background.js":83,"./difficulty-filter.js":84,"./difficulty-text.js":85,"./follow-position.js":86,"./follow-z.js":87,"./gameover.js":88,"./gpu-preloader.js":89,"./gradient-shader.js":90,"./hand-swapper.js":92,"./handstar-shader.js":93,"./haptics-wall.js":96,"./haptics-weapon.js":97,"./headfist.js":98,"./history.js":99,"./intro-song.js":100,"./keyboard-raycastable.js":101,"./leaderboard.js":102,"./materials.js":109,"./menu-controls.js":124,"./menu-difficulty-select.js":125,"./menu-genre.js":126,"./menu-midsection.js":127,"./menu-mode.js":128,"./menu-playlist-button.js":129,"./menu-playlist.js":130,"./menu-selected-challenge-image.js":131,"./menu-slide-animation.js":132,"./multiplier-ring.js":133,"./no-frustum-cull.js":134,"./panel-shader.js":135,"./pause.js":138,"./pauser.js":139,"./play-sound.js":140,"./player-height.js":142,"./plume.js":143,"./punch.js":144,"./raycaster-target.js":145,"./recenter.js":146,"./ring.js":147,"./score-texts.js":150,"./search-thumbnail-atlas.js":151,"./search.js":152,"./song-info-positioner.js":155,"./song-preview.js":156,"./song-progress-info.js":157,"./song.js":158,"./stage-colors.js":159,"./stage-lasers.js":160,"./stars.js":161,"./stats-param.js":162,"./stepback.js":163,"./sub-object.js":164,"./super-keyboard.js":165,"./supercurve-color.js":166,"./supercurve-shader.js":167,"./supercurve.js":170,"./supercutfx-shader.js":173,"./supercutfx.js":174,"./tail.js":175,"./text-counter.js":176,"./text-geometry.js":177,"./text-truncate.js":178,"./text-uppercase.js":179,"./toggle-pause-play.js":180,"./trail.js":181,"./tunnels.js":182,"./vertex-colors-buffer.js":183,"./victory-accuracy-ring.js":184,"./victory-rank.js":185,"./visible-raycastable.js":186,"./wall-shader.js":187,"./wall.js":190,"./weapon-particles.js":191,"./zip-loader.js":192};function r(e){var t=s(e);return a(t)}function s(e){if(!a.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=s,e.exports=r,r.id=59},function(e,t,a){if(AFRAME.registerComponent("active-item",{dependencies:["material"],schema:{active:{default:!1},opacity:{default:1}},init:function(){this.defaultOpacity=this.el.getAttribute("material").opacity,this.materialObj={opacity:this.data.opacity}},update:function(){var e=this.el;this.data.active?(e.setAttribute("material",this.materialObj),e.object3D.visible=!0):(e.setAttribute("material","opacity",this.defaultOpacity),e.components.animation__mouseleave&&setTimeout(()=>{e.emit("mouseleave",null,!1)}))}}),AFRAME.registerComponent("active-text-color",{dependencies:["text"],schema:{active:{default:!1},color:{default:"#333"}},init:function(){this.defaultColor=this.el.getAttribute("text").color},update:function(){var e=this.el;this.data.active?e.setAttribute("text","color",this.data.color):e.setAttribute("text","color",this.defaultColor)}}),window.AFRAME){const t=["active-item","active-text-color"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;nMath.abs(t.y)?"right":"down"),t.z*=.01,n.copy(t).multiplyScalar(-.0025).clampLength(0,.01);for(let t=0;t{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0){const e=this.beatEventsQueue.shift();e.good?this.el.sceneEl.emit("beathit",e,!0):this.el.sceneEl.emit("beatwrong",e,!0)}if(!this.data.isPlaying||"ride"===this.data.gameMode)return;const a=this.beatsToCheck,n=(this.supercurve.curve,this.supercurveFollow.songProgress);a.length=0;for(let e=0;ethis.curveFollowRig.object3D.position.z){t.returnToPool(),t.isMine()||this.el.sceneEl.emit("beatmiss",null,!0);continue}if(na[e].songPosition&&(s=!1),s);e++);s&&a.push(t)}if(this.weapons[0].tickBeatSystem(e,t),this.weapons[1].tickBeatSystem(e,t),a.length)for(let t=0;t=98&&(this.superCuts[this.superCutIdx].components.supercutfx.createSuperCut(e.el.object3D,e.data.color),this.superCutIdx=(this.superCutIdx+1)%this.superCuts.length),this.beatEventsQueue.push(n)}else this.beatEventsQueue.push(n);e.destroyBeat(a,n.good)},horizontalPositions:{},verticalPositions:{},updateBeatPositioning:function(){const e={classic:.95,ride:.95,punch:1.2};return function(){const t=this.data.gameMode,a=this.horizontalPositions,n=this.verticalPositions,r=this.el.sceneEl.camera.el.object3D.position.y-1.6,s=i[t],o="classic"===t?s:1.2*s;a.left=-1.5*o,a.middleleft=-.5*o,a.middle=o,a.middleright=.5*o,a.right=1.5*o;const c=e[t],d=s;n.bottom=Math.max(.4,c+r),n.middle=Math.max(.4+d,c+d+r),n.top=Math.max(.4+2*d,c+2*d+r)}}(),registerBeat:function(e){e.hitDetectors=this.weapons.map(t=>{if("mine"===e.data.type)var a=!1;else a=o[t.el.dataset.hand]===e.data.color;return"classic"===this.data.gameMode?new n.BladeHitDetector(t,e,a):new n.PunchHitDetector(t,e,a)}),this.beats.push(e)},unregisterBeat:function(e){this.beats.splice(this.beats.indexOf(e),1)}}),window.AFRAME){const t=["beat-system"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{AFRAME.utils.device.checkHeadsetConnected()&&this.el.emit("displayconnected")},250)}}),window.AFRAME){const t=[],a=[],n=["check-vr"];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;ndocument.querySelector(e),window.$$=e=>document.querySelectorAll(e),window.$$$=e=>document.querySelector(`[${e}]`).getAttribute(e),window.$$$$=e=>document.querySelector(`[${e}]`).components[e],window.scene=this.el,window.state=this.el.systems.state.state}}),window.AFRAME){const t=["console-shortcuts"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.controllerType=e.detail.name,this.el.setAttribute("cursor",this.config[this.controllerType].cursor||{})});const a={hand:t.hand,model:!1};e.setAttribute("daydream-controls",a),e.setAttribute("oculus-go-controls",a),e.setAttribute("oculus-touch-controls",{hand:t.hand,model:!1,orientationOffset:{x:0,y:0,z:0}}),e.setAttribute("vive-controls",a),e.setAttribute("vive-focus-controls",a),e.setAttribute("windows-motion-controls",a),e.setAttribute("generic-tracked-controller-controls",a)},config:{"daydream-controls":{cursor:{downEvents:["trackpaddown","triggerdown"],upEvents:["trackpadup","triggerup"]}},"oculus-go-controls":{cursor:{downEvents:["trackpaddown","triggerdown"],upEvents:["trackpadup","triggerup"]}},"oculus-touch-controls":{cursor:{downEvents:["triggerdown","gripdown","abuttondown","bbuttondown","xbuttondown","ybuttondown"],upEvents:["triggerup","gripup","abuttonup","bbuttonup","xbuttonup","ybuttonup"]}},"vive-controls":{cursor:{downEvents:["trackpaddown","triggerdown","gripdown"],upEvents:["trackpadup","triggerup","gripup"]}},"vive-focus-controls":{cursor:{downEvents:["trackpaddown","triggerdown","gripdown"],upEvents:["trackpadup","triggerup","gripup"]}},"windows-motion-controls":{cursor:{downEvents:["trackpaddown","triggerdown","gripdown"],upEvents:["trackpadup","triggerup","gripup"]}},"generic-tracked-controller-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}}}}),window.AFRAME){const t=["controller"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.copyTexture()}),this.copyTexture()},copyTexture:function(){const e=this.el,t=this.data.from,a=e.getObject3D("mesh").material;t.getObject3D("mesh")&&(a.map=t.getObject3D("mesh").material.map,a.map&&(a.map.needsUpdate=!0,a.needsUpdate=!0))}}),window.AFRAME){const t=["copy-texture"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.reset()})},update:function(e){const t=this.data;this.el;!e.isVictory&&t.isVictory&&this.reset()},reset:function(){this.el.components["supercurve-follow"].curveProgress=0,this.el.object3D.position.set(0,0,0),this.el.object3D.rotation.set(0,0,0)}}),window.AFRAME){const t=["curve-follow-rig-reset"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{t.spawn()});s.style.width="460px",s.style.bottomMargin="10px"}()},addDebugStageControls:function(){var e=0;const t=(t,a,n)=>{const r=document.createElement("div");r.style.position="absolute",r.id="stagecontrol"+t,r.style.width="100px",r.style.height="30px",r.style.top="element"===n?"20px":"70px",r.style.background="#000",r.style.color="#fff",r.style.zIndex=999999999,r.style.padding="5px",r.style.font="14px sans-serif",r.style.textAlign="center",r.style.cursor="pointer",r.style.left=20+120*t+"px",r.innerHTML=a,"element"===n?r.addEventListener("click",()=>{document.getElementById("stagecontrol"+e).style.background="#000",r.style.background="#66f",e=t}):r.addEventListener("click",()=>{this.beatLoader.generateEvent({_type:e,_value:t})}),document.body.appendChild(r)};["sky","tunnelNeon","leftStageLasers","rightStageLasers","floor"].forEach((e,a)=>{t(a,e,"element")}),["off","blue","blue","bluefade","","red","red","redfade"].forEach((e,a)=>{t(a,e,"value")})}}),window.AFRAME){const t=["debug-beat-generator"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{const t=this.el.sceneEl.components["beat-generator"];t.data.gameMode=e,scene.components["beat-system"].data.gameMode=e,scene.components["beat-system"].updateBeatPositioning(),n.forEach(a=>{r.forEach(n=>{let r=t.requestBeat("punch"===e?"dot":"arrow","red"),s=Math.random()<.5?"left":"right";r.components.beat.onGenerate(.001,a,n,s),r.object3D.renderOrder=9999,r.play(),r=t.requestBeat("dot","blue"),s=Math.random()<.5?"down":"up",r.components.beat.onGenerate(.0015,a,n,s),r.object3D.renderOrder=9999,r.play()})});const a=scene.components.pool__wall.requestEntity();a.components.wall.onGenerate(.0015,"left",4,4,!0),a.play(),document.getElementById("beatContainer").removeAttribute("bind__visible"),document.getElementById("beatContainer").object3D.visible=!0},500))}}),window.AFRAME){const t=["debug-beat-positioning"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{t.isTrusted&&(e.emit("triggerdown"),e.emit("triggerup"))}),"oculus"===AFRAME.utils.getUrlParameter("debug")?(e.emit("controllerconnected",{name:"oculus-touch-controls"}),t.emit("controllerconnected",{name:"oculus-touch-controls"}),e.setAttribute("controller","controllerType","oculus-touch-controls"),t.setAttribute("controller","controllerType","oculus-touch-controls")):(e.emit("controllerconnected",{name:"vive-controls"}),t.emit("controllerconnected",{name:"vive-controls"}),e.setAttribute("controller","controllerType","vive-controls"),t.setAttribute("controller","controllerType","vive-controls")),this.el.emit("enter-vr",null,!1),document.addEventListener("keydown",a=>{var n,r,s,o;a.shiftKey&&(32!==a.keyCode?81!==a.keyCode?(78===a.keyCode&&(this.secondaryGripDown?(t.emit("gripup"),this.secondaryGripDown=!1):(t.emit("gripdown"),this.secondaryGripDown=!0)),77===a.keyCode&&(this.primaryGripDown?(e.emit("gripup"),this.primaryGripDown=!1):(e.emit("gripdown"),this.primaryGripDown=!0)),49===a.keyCode&&t.emit("menudown"),a.ctrlKey?(s=t.getAttribute("position"),72===a.keyCode&&(s.x-=.02),74===a.keyCode&&(s.y-=.02),75===a.keyCode&&(s.y+=.02),76===a.keyCode&&(s.x+=.02),59!==a.keyCode&&186!==a.keyCode||(s.z-=.01),222===a.keyCode&&(s.z+=.01),t.setAttribute("position",AFRAME.utils.clone(s))):(n=e.getAttribute("position"),72===a.keyCode&&(n.x-=.02),74===a.keyCode&&(n.y-=.02),75===a.keyCode&&(n.y+=.02),76===a.keyCode&&(n.x+=.02),59!==a.keyCode&&186!==a.keyCode||(n.z-=.02),222===a.keyCode&&(n.z+=.02),e.setAttribute("position",AFRAME.utils.clone(n))),a.ctrlKey?(o=t.getAttribute("rotation"),89===a.keyCode&&(o.x-=10),79===a.keyCode&&(o.x+=10),85===a.keyCode&&(o.y-=10),73===a.keyCode&&(o.y+=10),t.setAttribute("rotation",AFRAME.utils.clone(o))):(r=e.getAttribute("rotation"),89===a.keyCode&&(r.x-=10),79===a.keyCode&&(r.x+=10),85===a.keyCode&&(r.y-=10),73===a.keyCode&&(r.y+=10),e.setAttribute("rotation",AFRAME.utils.clone(r)))):this.isSecondaryTriggerDown?(t.emit("triggerup"),this.isSecondaryTriggerDown=!1):(t.emit("triggerdown"),this.isSecondaryTriggerDown=!0):this.isTriggerDown?(e.emit("triggerup"),this.isTriggerDown=!1):(e.emit("triggerdown"),this.isTriggerDown=!0))})))},play:function(){var e,t;if(this.bounds=document.body.getBoundingClientRect(),!AFRAME.utils.getUrlParameter("debug"))return;if(AFRAME.utils.getUrlParameter("headfist"))return;e=document.getElementById("rightHand"),(t=document.getElementById("leftHand")).object3D.position.set(-.2,1.5,-.5),e.object3D.position.set(.2,1.5,-.5),t.setAttribute("rotation",{x:35,y:0,z:0});const a=AFRAME.utils.getUrlParameter("type");[e,t].forEach(e=>{e.querySelector(".laser").object3D.visible=!1,"classic"===a?(e.querySelector(".bladeContainer").removeAttribute("bind__visible"),e.querySelector(".bladeContainer").object3D.visible=!0,e.querySelector(".bladeContainer").object3D.scale.set(1,1,1)):"punch"===a?(e.querySelector(".punch").removeAttribute("bind__visible"),e.querySelector(".punch").object3D.visible=!0,e.querySelector(".punch").object3D.visible=!0,e.querySelector(".bladeHandle").object3D.visible=!1):"ride"===a&&(e.querySelector(".handStar").removeAttribute("bind__visible"),e.querySelector(".handStar").object3D.visible=!0,e.querySelector(".bladeHandle").object3D.visible=!1)})},onMouseMove:function(){const e=new THREE.Vector3,t=new THREE.Vector2,a=new THREE.Vector3;return function(n){const r=this.bounds,s=this.el.sceneEl.camera,o=n.clientX-r.left,i=n.clientY-r.top;t.x=o/r.width*2-1,t.y=-i/r.height*2-1,document.getElementById("camera").object3D.getWorldPosition(a),e.set(t.x,t.y,.5).unproject(s).sub(a).normalize();const c=document.getElementById("rightHand").object3D.position,d=-a.z/e.z;s.getWorldPosition(c).add(e.multiplyScalar(d)),c.y+=.8}}()}),window.AFRAME){const t=["debug-controller"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{console.log(this.el.components.song.getCurrentTime())},250)}}),window.AFRAME){const t=["debug-song-time"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.split(",").forEach(e=>{this.el.sceneEl.emit("debug"+e.trim(),null,!1)})},500)}}),window.AFRAME){const t=["debug-state"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{var n=s.data;if(n.enabled&&(n.captureBubbles||e.target===r))for(t=0;t{var t=a.data;t.enabled&&(t.captureBubbles||n.target===e)&&a.el.emit(t.as||t.event,n.detail?n.detail:null,!1)},t.delay)}))}}),window.AFRAME){const t=["delayed-proxy-event"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=0&&(this.beatContainer.object3D.position.z=1.5*-Math.pow(1-this.countDown,2),this.countDown-=t/1e3)},reset:function(){this.beatContainer.object3D.position.z=0,this.el.sceneEl.setAttribute("stage-colors","color","blue")},triggerAnimations:function(){for(let e=0;e{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.preloadFromSelector("#mainLogo"),this.preloadFromSelector("#prevArrow"),this.preloadFromSelector("#stepback"),this.preloadFromSelector(".difficultyBackground"),this.preloadFromSelector(".genreIcon"),this.preloadFromSelector(".merkababloom"),this.preloadFromSelector(".searchResultBackground"),this.preloadMaterialsComponentTextures(),this.preloadKeyboard(),this.preloadSlice(),this.preloadEnvMap(),this.preloadFXs()},1e3)},preloadFromSelector:function(e){const t=document.querySelector(e);this.preloadTexture(t.getObject3D("mesh").material.map)},preloadMaterialsComponentTextures:function(){const e=this.el.systems.materials.textureList;for(var t=0;t{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.el.addEventListener(e,this.swapHand)})},swapHand:function(){this.data.enabled&&this.el.sceneEl.emit("activehandswap",null,!1)}}),window.AFRAME){const t=["hand-swapper"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{if(!t.detail||!t.detail.intersectedEl||!this.data.enabled)return;const a=t.detail.intersectedEl;a.classList.contains("blade")&&a!==e?(this.isColliding=!0,this.el.components.haptics__weapon.pulse()):this.isColliding=!1}),e.addEventListener("mouseleave",e=>{this.isColliding=!1})},tick:function(){this.isColliding&&this.data.enabled&&this.el.components.haptics__weapon.pulse()}}),window.AFRAME){const t=["haptics-weapons"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.username=e.detail.value,localStorage.setItem("moonriderusername",this.username)}),this.el.addEventListener("leaderboardsubmit",this.addScore.bind(this))},update:function(e){!n.apps.length&&this.data.apiKey&&(n.initializeApp({apiKey:this.data.apiKey,authDomain:this.data.authDomain,databaseURL:this.data.databaseURL,projectId:this.data.projectId,storageBucket:this.data.storageBucket,messagingSenderId:this.data.messagingSenderId}),this.firestore=n.firestore(),this.firestore.settings({}),this.db=this.firestore.collection("scores")),!e.isVictory&&this.data.isVictory&&this.checkLeaderboardQualify(),this.data.difficulty&&e.difficulty!==this.data.difficulty||this.data.menuSelectedChallengeId&&e.menuSelectedChallengeId!==this.data.menuSelectedChallengeId?this.fetchScores(this.data.menuSelectedChallengeId):this.data.challengeId&&e.challengeId!==this.data.challengeId&&this.fetchScores(this.data.challengeId)},addScore:function(){const e=this.el.sceneEl.systems.state.state;if(!e.isVictory||!e.inVR)return;const t={accuracy:e.score.accuracy,challengeId:e.challenge.id,gameMode:this.data.gameMode,score:e.score.score,username:this.username,difficulty:this.data.difficulty||e.challenge.difficulty,time:new Date};r.includes(this.username.toLowerCase())||this.username.match(s)||this.db.add(t),this.addEventDetail.scoreData=t,this.el.emit("leaderboardscoreadded",this.addEventDetail,!1)},fetchScores:function(e){if("ride"===this.data.gameMode)return;const t=this.el.sceneEl.systems.state.state;this.db.where("challengeId","==",e).where("difficulty","==",t.menuSelectedChallenge.id?t.menuSelectedChallenge.difficulty:t.challenge.difficulty).where("gameMode","==",this.data.gameMode).orderBy("score","desc").orderBy("time","asc").limit(10).get().then(t=>{this.eventDetail.challengeId=e,this.scores.length=0,t.empty||t.forEach(e=>this.scores.push(e.data())),this.el.sceneEl.emit("leaderboard",this.eventDetail,!1)}).catch(e=>{console.error("[firestore]",e)})},checkLeaderboardQualify:function(){const e=this.el.sceneEl.systems.state.state.score.score;if(!AFRAME.utils.getUrlParameter("dot")){if(this.scores.length<10)return this.qualifyingIndex=this.scores.length,void this.el.sceneEl.emit("leaderboardqualify",this.scores.length,!1);for(let t=0;tthis.scores[t].score)return this.qualifyingIndex=t,void this.el.sceneEl.emit("leaderboardqualify",t,!1)}}}),window.AFRAME){const t=["leaderboard"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var s,o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},i=i||{},c=o||self;function d(){}function l(e){var t=typeof e;return"object"!=t?t:e?Array.isArray(e)?"array":t:"null"}function u(e){var t=l(e);return"array"==t||"object"==t&&"number"==typeof e.length}function h(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var m="closure_uid_"+(1e9*Math.random()>>>0),p=0;function f(e,t,a){return e.call.apply(e.bind,arguments)}function b(e,t,a){if(!e)throw Error();if(2t?1:0}e:{var P=c.navigator;if(P){var L=P.userAgent;if(L){_=L;break e}}_=""}function j(e,t,a){for(var n in e)t.call(a,e[n],n,e)}function C(e){var t={};for(var a in e)t[a]=e[a];return t}var I="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function D(e,t){for(var a,n,r=1;rparseFloat(W)){U=String(Y);break e}}U=W}var K,X={};function Q(e){return function(e,t){var a=X;return Object.prototype.hasOwnProperty.call(a,e)?a[e]:a[e]=t(e)}(e,(function(){for(var t=0,a=N(String(U)).split("."),n=N(String(e)).split("."),r=Math.max(a.length,n.length),s=0;0==t&&s=e.keyCode)&&(e.keyCode=-1)}catch(e){}};var ie="closure_listenable_"+(1e6*Math.random()|0),ce=0;function de(e,t,a,n,r){this.listener=e,this.proxy=null,this.src=t,this.type=a,this.capture=!!n,this.ca=r,this.key=++ce,this.Y=this.Z=!1}function le(e){e.Y=!0,e.listener=null,e.proxy=null,e.src=null,e.ca=null}function ue(e){this.src=e,this.a={},this.b=0}function he(e,t){var a=t.type;if(a in e.a){var n,r=e.a[a],s=S(r,t);(n=0<=s)&&Array.prototype.splice.call(r,s,1),n&&(le(t),0==e.a[a].length&&(delete e.a[a],e.b--))}}function me(e,t,a,n){for(var r=0;r>>0);function xe(e){return"function"==l(e)?e:(e[Ee]||(e[Ee]=function(t){return e.handleEvent(t)}),e[Ee])}function Te(){A.call(this),this.c=new ue(this),this.J=this,this.C=null}function Re(e,t,a,n){if(!(t=e.c.a[String(t)]))return!0;t=t.concat();for(var r=!0,s=0;sn.length)){var r=n[1];if(Array.isArray(r)&&!(1>r.length)){var s=r[0];if("noop"!=s&&"stop"!=s&&"close"!=s)for(var o=1;ot.length?bt:(t=t.substr(n,a),e.D=n+a,t))}function At(e){e.U=v()+e.P,St(e,e.P)}function St(e,t){if(null!=e.o)throw Error("WatchDog timer not null");e.o=at(y(e.Ua,e),t)}function Et(e){e.o&&(c.clearTimeout(e.o),e.o=null)}function xt(e){0==e.g.v||e.A||Ha(e.g,e)}function Tt(e){Et(e);var t=e.F;t&&"function"==typeof t.ja&&t.ja(),e.F=null,Fe(e.R),Ge(e.J),e.a&&(t=e.a,e.a=null,t.abort(),t.ja())}function Rt(e,t){try{var a=e.g;if(0!=a.v&&(a.a==e||sa(a.b,e)))if(a.I=e.N,!e.C&&sa(a.b,e)&&3==a.v){try{var n=a.ka.a.parse(t)}catch(e){n=null}if(Array.isArray(n)&&3==n.length){var r=n;if(0==r[0]){e:if(!a.j){if(a.a){if(!(a.a.u+3e3r[2]&&a.H&&0==a.o&&!a.m&&(a.m=at(y(a.Ra,a),6e3));if(1>=ra(a.b)&&a.ea){try{a.ea()}catch(e){}a.ea=void 0}}else za(a,11)}else if((e.C||a.a==e)&&Za(a),!R(t))for(t=n=a.ka.a.parse(t),n=0;nt||3==t&&!z&&!this.a.$())){this.A||4!=t||7==a||Qe(8==a||0>=n?3:2),Et(this);var r=this.a.X();this.N=r;var s=this.a.$();if(this.b=200==r,function(e,t,a,n,r,s,o){e.info((function(){return"XMLHTTP RESP ("+n+") [ attempt "+r+"]: "+t+"\n"+a+"\n"+s+" "+o}))}(this.c,this.m,this.l,this.f,this.T,t,r),this.b){if(this.V&&!this.C){t:{if(this.a){var o,i=this.a;if((o=i.a?i.a.getResponseHeader("X-HTTP-Initial-Response"):null)&&!R(o)){var c=o;break t}}c=null}if(!c){this.b=!1,this.h=3,et(12),Tt(this),xt(this);break e}Je(this.c,this.f,c,"Initial handshake response via X-HTTP-Initial-Response"),this.C=!0,Rt(this,c)}this.I?(vt(this,t,s),z&&this.b&&3==t&&(Ve(this.J,this.R,"tick",this.Va),this.R.start())):(Je(this.c,this.f,s,null),Rt(this,s)),4==t&&Tt(this),this.b&&!this.A&&(4==t?Ha(this.g,this):(this.b=!1,At(this)))}else 400==r&&0t)throw Error("Bad port number "+t);e.h=t}else e.h=null}function Ot(e,t,a){t instanceof Jt?(e.b=t,function(e,t){t&&!e.f&&(Yt(e),e.c=null,e.a.forEach((function(e,t){var a=t.toLowerCase();t!=a&&(Kt(this,t),Qt(this,a,e))}),e)),e.f=t}(e.b,e.a)):(a||(t=Ht(t,Gt)),e.b=new Jt(t,e.a))}function Ut(e,t,a){e.b.set(t,a)}function Ft(e){return Ut(e,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^v()).toString(36)),e}function Zt(e,t){return e?t?decodeURI(e.replace(/%25/g,"%2525")):decodeURIComponent(e):""}function Ht(e,t,a){return"string"==typeof e?(e=encodeURI(e).replace(t,Bt),a&&(e=e.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),e):null}function Bt(e){return"%"+((e=e.charCodeAt(0))>>4&15).toString(16)+(15&e).toString(16)}Lt.prototype.toString=function(){var e=[],t=this.f;t&&e.push(Ht(t,zt,!0),":");var a=this.c;return(a||"file"==t)&&(e.push("//"),(t=this.j)&&e.push(Ht(t,zt,!0),"@"),e.push(encodeURIComponent(String(a)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(a=this.h)&&e.push(":",String(a))),(a=this.g)&&(this.c&&"/"!=a.charAt(0)&&e.push("/"),e.push(Ht(a,"/"==a.charAt(0)?Vt:qt,!0))),(a=this.b.toString())&&e.push("?",a),(a=this.i)&&e.push("#",Ht(a,Wt)),e.join("")};var zt=/[#\/\?@]/g,qt=/[#\?:]/g,Vt=/[#\?]/g,Gt=/[#\?@]/g,Wt=/#/g;function Jt(e,t){this.b=this.a=null,this.c=e||null,this.f=!!t}function Yt(e){e.a||(e.a=new Nt,e.b=0,e.c&&function(e,t){if(e){e=e.split("&");for(var a=0;a2*e.c&&kt(e)))}function Xt(e,t){return Yt(e),t=$t(e,t),Mt(e.a.b,t)}function Qt(e,t,a){Kt(e,t),0=e.f}function ra(e){return e.b?1:e.a?e.a.size:0}function sa(e,t){return e.b?e.b==t:!!e.a&&e.a.has(t)}function oa(e,t){e.a?e.a.add(t):e.b=t}function ia(e,t){e.b&&e.b==t?e.b=null:e.a&&e.a.has(t)&&e.a.delete(t)}function ca(e){var t,a;if(null!=e.b)return e.c.concat(e.b.s);if(null!=e.a&&0!==e.a.size){var n=e.c;try{for(var s=r(e.a.values()),o=s.next();!o.done;o=s.next()){var i=o.value;n=n.concat(i.s)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(a=s.return)&&a.call(s)}finally{if(t)throw t.error}}return n}return T(e.c)}function da(){}function la(){this.a=new da}function ua(e,t,a){var n=a||"";try{_t(e,(function(e,a){var r=e;h(e)&&(r=_e(e)),t.push(n+a+"="+encodeURIComponent(r))}))}catch(e){throw t.push(n+"type="+encodeURIComponent("_badmap")),e}}function ha(e,t,a,n,r){try{t.onload=null,t.onerror=null,t.onabort=null,t.ontimeout=null,r(n)}catch(e){}}ta.prototype.cancel=function(){var e,t;if(this.c=ca(this),this.b)this.b.cancel(),this.b=null;else if(this.a&&0!==this.a.size){try{for(var a=r(this.a.values()),n=a.next();!n.done;n=a.next()){n.value.cancel()}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}this.a.clear()}},da.prototype.stringify=function(e){return c.JSON.stringify(e,void 0)},da.prototype.parse=function(e){return c.JSON.parse(e,void 0)};var ma=c.JSON.parse;function pa(e){Te.call(this),this.headers=new Nt,this.H=e||null,this.b=!1,this.s=this.a=null,this.B="",this.h=0,this.f="",this.g=this.A=this.l=this.u=!1,this.o=0,this.m=null,this.I=fa,this.D=this.F=!1}w(pa,Te);var fa="",ba=/^https?$/i,ya=["POST","PUT"];function ga(e){return"content-type"==e.toLowerCase()}function va(e,t){e.b=!1,e.a&&(e.g=!0,e.a.abort(),e.g=!1),e.f=t,e.h=5,wa(e),Sa(e)}function wa(e){e.u||(e.u=!0,e.dispatchEvent("complete"),e.dispatchEvent("error"))}function Aa(e){if(e.b&&void 0!==i&&(!e.s[1]||4!=xa(e)||2!=e.X()))if(e.l&&4==xa(e))Ze(e.za,0,e);else if(e.dispatchEvent("readystatechange"),4==xa(e)){e.b=!1;try{var t,a=e.X();e:switch(a){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var n=!0;break e;default:n=!1}if(!(t=n)){var r;if(r=0===a){var s=String(e.B).match(Pt)[1]||null;if(!s&&c.self&&c.self.location){var o=c.self.location.protocol;s=o.substr(0,o.length-1)}r=!ba.test(s?s.toLowerCase():"")}t=r}if(t)e.dispatchEvent("complete"),e.dispatchEvent("success");else{e.h=6;try{var d=2(d-=s))s=Math.max(0,r[c].b-100),i=!1;else try{ua(l,o,"req"+d+"_")}catch(e){n&&n(l)}}if(i){n=o.join("&");break e}}return e=e.g.splice(0,a),t.s=e,n}function Da(e){e.a||e.j||(e.U=1,Ce(e.Aa,e),e.o=0)}function Oa(e){return!(e.a||e.j||3<=e.o)&&(e.U++,e.j=at(y(e.Aa,e),Ba(e,e.o)),e.o++,!0)}function Ua(e){null!=e.s&&(c.clearTimeout(e.s),e.s=null)}function Fa(e){e.a=new mt(e,e.c,"rpc",e.U),null===e.i&&(e.a.B=e.l),e.a.O=0;var t=jt(e.la);Ut(t,"RID","rpc"),Ut(t,"SID",e.J),Ut(t,"CI",e.H?"0":"1"),Ut(t,"AID",e.P),Ca(e,t),Ut(t,"TYPE","xmlhttp"),e.i&&e.l&&Ta(t,e.i,e.l),e.D&&e.a.setTimeout(e.D);var a=e.a;e=e.ga,a.H=1,a.i=Ft(jt(t)),a.j=null,a.I=!0,gt(a,e)}function Za(e){null!=e.m&&(c.clearTimeout(e.m),e.m=null)}function Ha(e,t){var a=null;if(e.a==t){Za(e),Ua(e),e.a=null;var n=2}else{if(!sa(e.b,t))return;a=t.s,ia(e.b,t),n=1}if(e.I=t.N,0!=e.v)if(t.b)if(1==n){a=t.j?t.j.length:0,t=v()-t.u;var r=e.u;(n=Ke()).dispatchEvent(new tt(n,a,t,r)),La(e)}else Da(e);else if(3==(r=t.h)||0==r&&0=e.b.f-(e.h?1:0))&&(e.h?(e.g=t.s.concat(e.g),!0):!(1==e.v||2==e.v||e.u>=(e.Ia?0:e.Ja))&&(e.h=at(y(e.Ba,e,t),Ba(e,e.u)),e.u++,!0))}(e,t)||2==n&&Oa(e)))switch(a&&0t?null:"string"==typeof e?e.charAt(t):e[t]}(r.L()),a=c.FormData&&e instanceof c.FormData,!(0<=S(ya,t))||n||a||r.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8"),r.forEach((function(e,t){this.a.setRequestHeader(t,e)}),this),this.I&&(this.a.responseType=this.I),"withCredentials"in this.a&&this.a.withCredentials!==this.F&&(this.a.withCredentials=this.F);try{Ea(this),0=this.N)){var e=2*this.N;this.c.info("BP detection timer enabled: "+e),this.s=at(y(this.Sa,this),e)}},s.Sa=function(){this.s&&(this.s=null,this.c.info("BP detection timeout reached."),this.c.info("Buffering proxy detected and switch to long-polling!"),this.H=!1,this.F=!0,ka(this),Fa(this))},s.Ra=function(){null!=this.m&&(this.m=null,ka(this),Oa(this),et(19))},s.Xa=function(e){e?(this.c.info("Successfully pinged google.com"),et(2)):(this.c.info("Failed to ping google.com"),et(1))},(s=Wa.prototype).ta=function(){},s.sa=function(){},s.ra=function(){},s.qa=function(){},s.Ha=function(){},Ja.prototype.a=function(e,t){return new Ya(e,t)},w(Ya,Te),(s=Ya.prototype).addEventListener=function(e,t,a,n){Ya.S.addEventListener.call(this,e,t,a,n)},s.removeEventListener=function(e,t,a,n){Ya.S.removeEventListener.call(this,e,t,a,n)},s.Oa=function(){this.a.f=this.f,this.h&&(this.a.C=!0);var e=this.a,t=this.l,a=this.b||void 0;et(0),e.fa=t,e.W=a||{},e.H=e.T,e.B=Va(e,null,e.fa),La(e)},s.close=function(){Na(this.a)},s.Pa=function(e){if("string"==typeof e){var t={};t.__data__=e,Pa(this.a,t)}else this.g?((t={}).__data__=_e(e),Pa(this.a,t)):Pa(this.a,e)},s.G=function(){this.a.f=null,delete this.f,Na(this.a),delete this.a,Ya.S.G.call(this)},w(Ka,lt),w(Xa,ut),w(Qa,Wa),Qa.prototype.ta=function(){this.a.dispatchEvent("a")},Qa.prototype.sa=function(e){this.a.dispatchEvent(new Ka(e))},Qa.prototype.ra=function(e){this.a.dispatchEvent(new Xa(e))},Qa.prototype.qa=function(){this.a.dispatchEvent("b")},Ja.prototype.createWebChannel=Ja.prototype.a,Ya.prototype.send=Ya.prototype.Pa,Ya.prototype.open=Ya.prototype.Oa,Ya.prototype.close=Ya.prototype.close,nt.NO_ERROR=0,nt.TIMEOUT=8,nt.HTTP_ERROR=6,rt.COMPLETE="complete",it.EventType=dt,dt.OPEN="a",dt.CLOSE="b",dt.ERROR="c",dt.MESSAGE="d",Te.prototype.listen=Te.prototype.va,pa.prototype.listenOnce=pa.prototype.wa,pa.prototype.getLastError=pa.prototype.Qa,pa.prototype.getLastErrorCode=pa.prototype.ua,pa.prototype.getStatus=pa.prototype.X,pa.prototype.getResponseJson=pa.prototype.Na,pa.prototype.getResponseText=pa.prototype.$,pa.prototype.send=pa.prototype.ba;var $a={createWebChannelTransport:function(){return new Ja},ErrorCode:nt,EventType:rt,WebChannel:it,XhrIo:pa},en=$a.createWebChannelTransport,tn=$a.ErrorCode,an=$a.EventType,nn=$a.WebChannel,rn=$a.XhrIo;t.default=$a}.call(this,a(1))},function(e,t,a){const n=a(0),r=new THREE.Color;function s(e,t,a){r.set(a),e.uniforms?(e.uniforms[t].value.x=r.r,e.uniforms[t].value.y=r.g,e.uniforms[t].value.z=r.b):e[t].set(a)}function o(e,t,a,n,r,s){e.fillStyle=t,e.fillRect(a,n,r,s)}function i(e,t,a,n,r,s,o){let i;i=s>o?e.createLinearGradient(0,0,s,0):e.createLinearGradient(0,0,0,o),i.addColorStop(0,t),i.addColorStop(1,a),e.fillStyle=i,e.fillRect(n,r,s,o)}if(AFRAME.registerSystem("materials",{schema:{},init:function(){this.curve=null,this.panelMaterials=[];const e=localStorage.getItem("colorScheme")||"default";this.scheme=n.schemes[e],this.textureList=[],this.beatsCanvas=document.createElement("canvas"),this.beatsTexture=new THREE.CanvasTexture(this.beatsCanvas),this.generateBeatsTexture(),this.textureList.push(this.beatsTexture),this.envmapCanvas=document.createElement("canvas"),this.envmapTexture=new THREE.CanvasTexture(this.envmapCanvas),this.generateEnvmapTexture(),this.textureList.push(this.envmapTexture),this.fistsCanvas=document.createElement("canvas"),this.fistsTexture=new THREE.CanvasTexture(this.fistsCanvas),this.generateFistsTexture(),this.textureList.push(this.fistsTexture),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{this.createMaterials()}):this.createMaterials()},play:function(){this.setColorScheme()},tick:function(e,t){this.aurora.uniforms.time.value=e,this.home.animate&&(this.home.uniforms.time.value=e),this.leftFistWeapon.uniforms.time.value=e,this.leftWeapon.uniforms.time.value=e,this.rightFistWeapon.uniforms.time.value=e,this.rightWeapon.uniforms.time.value=e,this.rings.uniforms.time.value=e,this.tube.uniforms.time.value=e},createMaterials:function(){const e=this.scheme;this.tunnel=new THREE.ShaderMaterial({vertexShader:a(110),fragmentShader:a(111),uniforms:{fogColor:{value:new THREE.Color(e.primary)},color1:{value:new THREE.Color(e.primary)},color2:{value:new THREE.Color(e.secondary)},color3:{value:new THREE.Color(e.tertiary)},scale:{value:1}},transparent:!0}),this.merkaba=new THREE.MeshBasicMaterial({color:new THREE.Color(e.primary)}),this.backglow=new THREE.MeshBasicMaterial({transparent:!0,map:(new THREE.TextureLoader).load(document.getElementById("backGlowImg").src),color:new THREE.Color(e.primary)}),this.textureList.push(this.backglow.map),this.aurora=new THREE.ShaderMaterial({vertexShader:a(112),fragmentShader:a(113),uniforms:{colorPrimary:{value:new THREE.Color(e.primary)},colorSecondary:{value:new THREE.Color(e.secondary)},time:{value:0}},transparent:!0}),this.rings=new THREE.ShaderMaterial({vertexShader:a(114),fragmentShader:a(115),uniforms:{colorPrimary:{value:new THREE.Color(e.primary)},colorSecondary:{value:new THREE.Color(e.secondary)},colorTertiary:{value:new THREE.Color(e.tertiary)},time:{value:0}},transparent:!0,depthWrite:!1}),this.moon=new THREE.ShaderMaterial({vertexShader:a(116),fragmentShader:a(117),uniforms:{map:{value:(new THREE.TextureLoader).load(document.getElementById("moonImg").src)},tint:{value:new THREE.Color(e.secondarybright)}},transparent:!0}),this.textureList.push(this.moon.uniforms.map.value),this.home=new THREE.ShaderMaterial({vertexShader:a(118),fragmentShader:a(119),uniforms:{color1:{value:new THREE.Color(e.primary)},color2:{value:new THREE.Color(e.secondary)},color3:{value:new THREE.Color(e.tertiary)},src:{value:(new THREE.TextureLoader).load(document.getElementById("homeShadowImg").src)},time:{value:0}},transparent:!0}),this.textureList.push(this.home.uniforms.src.value);const t=(new THREE.TextureLoader).load(document.getElementById("weaponImg").src);t.wrapS=THREE.RepeatWrapping,t.wrapT=THREE.RepeatWrapping,t.repeat.set(2,2),t.magFilter=THREE.NearestFilter,this.textureList.push(t),this.rightWeapon=new THREE.ShaderMaterial({vertexShader:a(26),fragmentShader:a(27),uniforms:{src:{value:t},color:{value:new THREE.Color(e.secondary)},thickness:{value:1.6},time:{value:0}},transparent:!0,blending:THREE.AdditiveBlending}),this.leftWeapon=new THREE.ShaderMaterial({vertexShader:a(26),fragmentShader:a(27),uniforms:{src:{value:t},color:{value:new THREE.Color(e.primary)},thickness:{value:1.6},time:{value:0}},transparent:!0,blending:THREE.AdditiveBlending}),this.leftFistWeapon=new THREE.ShaderMaterial({vertexShader:a(17),fragmentShader:a(28),uniforms:{src:{value:t},color:{value:new THREE.Color(e.primary)},time:{value:0}},side:THREE.DoubleSide,transparent:!0,blending:THREE.AdditiveBlending}),this.rightFistWeapon=new THREE.ShaderMaterial({vertexShader:a(17),fragmentShader:a(28),uniforms:{src:{value:t},color:{value:new THREE.Color(e.secondary)},time:{value:0}},side:THREE.DoubleSide,transparent:!0,blending:THREE.AdditiveBlending});const r=(new THREE.TextureLoader).load(document.getElementById("weaponImg").src),s=(new THREE.TextureLoader).load(document.getElementById("weaponHandleImg").src);r.mapping=THREE.SphericalReflectionMapping,this.textureList.push(r),this.textureList.push(s),this.leftWeaponHandle=new THREE.MeshStandardMaterial({roughness:.4,metalness:.5,color:new THREE.Color(e.primary),map:s,envMap:r}),this.rightWeaponHandle=new THREE.MeshStandardMaterial({roughness:.4,metalness:.5,color:new THREE.Color(e.secondary),map:s,envMap:r});const o=(new THREE.TextureLoader).load(document.getElementById("weapon2Img").src);o.mapping=THREE.SphericalReflectionMapping,this.leftFist=new THREE.MeshStandardMaterial({roughness:.3,metalness:.8,map:this.fistsTexture,envMap:o,transparent:!0}),this.rightFist=new THREE.MeshStandardMaterial({roughness:.3,metalness:.8,map:this.fistsTexture,envMap:o,transparent:!0}),this.beat=new THREE.MeshLambertMaterial({map:this.beatsTexture,transparent:!0}),this.blueBeatPieces=new THREE.MeshLambertMaterial({map:this.beatsTexture,color:e.secondary,emissive:e.secondary,emissiveIntensity:.2}),this.redBeatPieces=new THREE.MeshLambertMaterial({map:this.beatsTexture,color:e.primary,emissive:e.primary,emissiveIntensity:.2}),this.minePieces=new THREE.MeshLambertMaterial({color:e.tertiary,emissive:e.tertiary,emissiveIntensity:.2});const i=(new THREE.TextureLoader).load(document.getElementById("backGlowImg").src);this.redBeatGlow=new THREE.MeshBasicMaterial({color:e.primary,map:i,blending:THREE.AdditiveBlending,transparent:!0}),this.blueBeatGlow=new THREE.MeshBasicMaterial({color:e.secondary,map:i,blending:THREE.AdditiveBlending,transparent:!0}),this.textureList.push(i),this.stars=new THREE.PointsMaterial({size:1,map:(new THREE.TextureLoader).load(document.getElementById("starImg").src),blending:THREE.AdditiveBlending,transparent:!0,color:new THREE.Color(e.secondary)}),this.textureList.push(this.stars.map);const c=(new THREE.TextureLoader).load(document.getElementById("sideglowImg").src);this.textureList.push(c),this.leftsideglow=new THREE.MeshBasicMaterial({map:c,transparent:!0,blending:THREE.AdditiveBlending,depthTest:!1,side:THREE.BackSide,color:new THREE.Color(n.OFF)}),this.rightsideglow=new THREE.MeshBasicMaterial({map:c,transparent:!0,blending:THREE.AdditiveBlending,depthTest:!1,color:new THREE.Color(n.OFF)});const d=(new THREE.TextureLoader).load(document.getElementById("plumeImg").src);d.minFilter=THREE.LinearFilter,this.arrowBluePlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.secondary)},src:{value:d}},transparent:!0,depthTest:!1}),this.arrowRedPlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.primary)},src:{value:d}},transparent:!0,depthTest:!1}),this.dotBluePlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.secondary)},src:{value:d}},transparent:!0,depthTest:!1}),this.dotRedPlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.primary)},src:{value:d}},transparent:!0,depthTest:!1}),this.minePlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.tertiary)},src:{value:d}},transparent:!0,depthTest:!1});const l=(new THREE.TextureLoader).load(document.getElementById("tubeImg").src),u=(new THREE.TextureLoader).load(document.getElementById("tubeColorImg").src);l.generateMipmaps=!1,l.minFilter=THREE.LinearFilter,u.generateMipmaps=!1,u.minFilter=THREE.LinearFilter,this.tube=new THREE.ShaderMaterial({vertexShader:a(120),fragmentShader:a(121),uniforms:{time:{value:0},opacity:{value:0},src:{value:l},color:{value:u}},transparent:!0,depthTest:!1,side:THREE.BackSide});const h=(new THREE.TextureLoader).load(document.getElementById("handStarTrailImg").src);h.generateMipmaps=!1,h.minFilter=THREE.LinearFilter,this.handStarTrail=new THREE.ShaderMaterial({vertexShader:a(122),fragmentShader:a(123),uniforms:{colorPrimary:{value:new THREE.Color(e.primary)},colorSecondary:{value:new THREE.Color(e.secondary)},colorTertiary:{value:new THREE.Color(e.tertiary)},pulse:{value:0},src:{value:h}},transparent:!0,depthTest:!1,blending:THREE.AdditiveBlending,side:THREE.DoubleSide})},setColorScheme:function(e){this.el.sceneEl;const t=this.scheme=n.schemes[e]||n.schemes.default;s(this.arrowBluePlume,"color",t.secondary),s(this.arrowRedPlume,"color",t.primary),s(this.aurora,"colorPrimary",t.primary),s(this.aurora,"colorSecondary",t.secondary),s(this.backglow,"color",t.primary),s(this.blueBeatGlow,"color",t.secondary),s(this.blueBeatGlow,"color",t.secondary),s(this.blueBeatPieces,"color",t.secondary),s(this.blueBeatPieces,"emissive",t.secondary),s(this.dotBluePlume,"color",t.secondary),s(this.dotRedPlume,"color",t.primary),s(this.handStarTrail,"colorPrimary",t.primary),s(this.handStarTrail,"colorSecondary",t.secondary),s(this.handStarTrail,"colorTertiary",t.tertiary),s(this.home,"color1",t.primary),s(this.home,"color2",t.secondary),s(this.home,"color3",t.tertiary),s(this.leftFist,"color",t.primarybright),s(this.leftFistWeapon,"color",t.primary),s(this.leftWeapon,"color",t.primary),s(this.leftWeaponHandle,"color",t.primary),s(this.merkaba,"color",t.primary),s(this.minePieces,"color",t.tertiary),s(this.minePieces,"emissive",t.tertiary),s(this.minePlume,"color",t.tertiary),s(this.moon,"tint",t.secondarybright),s(this.redBeatGlow,"color",t.primary),s(this.redBeatGlow,"color",t.primary),s(this.redBeatPieces,"color",t.primary),s(this.redBeatPieces,"emissive",t.primary),s(this.rightFist,"color",t.secondarybright),s(this.rightWeapon,"color",t.secondary),s(this.rightFistWeapon,"color",t.secondary),s(this.rightWeaponHandle,"color",t.secondary),s(this.rings,"colorPrimary",t.primary),s(this.rings,"colorSecondary",t.secondary),s(this.rings,"colorTertiary",t.tertiary),s(this.stars,"color",t.secondary),s(this.tunnel,"fogColor",t.primary),s(this.tunnel,"color1",t.primary),s(this.tunnel,"color2",t.secondary),s(this.tunnel,"color3",t.tertiary),this.generateBeatsTexture(),this.generateEnvmapTexture(),this.generateFistsTexture(),document.querySelectorAll("a-entity[wall]").forEach(e=>{s(e.getObject3D("mesh").material,"colorTertiary",t.tertiary)}),this.panelMaterials.forEach(e=>{s(e,"colorPrimary",t.primary),s(e,"colorSecondary",t.secondary)}),s(this.curve,"fogColor",t.primary),s(this.curve,"color1",t.primary),s(this.curve,"color2",t.secondary)},generateBeatsTexture:function(){const e=this.scheme,t=new THREE.Color(e.primary),a=new THREE.Color(e.secondary),n=new THREE.Color(e.tertiary),r=this.beatsCanvas,s=r.getContext("2d");r.width=512,r.height=32,o(s,n.getStyle(),0,0,128,6),o(s,"#000",128,0,128,6),o(s,a.getStyle(),256,0,128,6),o(s,t.getStyle(),384,0,105,6),o(s,"#FFF",489,0,23,6),i(s,"#000000",a.getStyle(),0,6,512,4),i(s,"#000",t.getStyle(),0,10,512,5),i(s,"#000",n.getStyle(),0,15,512,4),i(s,`rgba(${a.r}, ${a.g}, ${a.b}, 0)`,a.getStyle(),0,19,512,5),i(s,`rgba(${t.r}, ${t.g}, ${t.b}, 0)`,t.getStyle(),0,24,512,4),i(s,`rgba(${n.r}, ${n.g}, ${n.b}, 0)`,n.getStyle(),0,28,512,4);const c=this.beatsTexture;return c.generateMipmaps=!1,c.magFilter=THREE.LinearFilter,c.minFilter=THREE.LinearFilter,c.needsUpdate=!0,c},generateFistsTexture:function(){const e=this.scheme,t=new THREE.Color(e.primarybright),a=new THREE.Color(e.secondarybright),n=this.fistsCanvas,r=n.getContext("2d");return n.width=8,n.height=128,i(r,t.getStyle(),`rgba(${t.r}, ${t.g}, ${t.b}, 0)`,0,0,4,128),i(r,a.getStyle(),`rgba(${a.r}, ${a.g}, ${a.b}, 0)`,4,0,4,128),this.fistsTexture.needsUpdate=!0,this.fistsTexture},generateEnvmapTexture:function(){const e=this.scheme,t=new THREE.Color(e.primary),a=new THREE.Color(e.secondary),n=document.getElementById("envmapTemplateImg");n.addEventListener("load",()=>{const e=n.width,r=n.height,s=this.envmapCanvas;s.width=e,s.height=r;const o=s.getContext("2d");o.drawImage(n,0,0);const i=o.getImageData(0,0,e,r),c=i.data;let d,l;for(let e=0;e{"mesh"===t.detail.type&&(e=this.el.getObject3D("mesh"),e&&this.applyMaterial(e))}),this.material.animate=this.data.animate},applyMaterial:function(e){e.detail&&(e=e.detail.model),this.data.recursive?e.traverse(e=>{"Mesh"===e.type&&(e.material=this.material)}):e.material=this.material}}),AFRAME.registerComponent("materials-color-menu",{play:function(){this.text=document.getElementById("colorName")},events:{mouseenter:function(e){this.text.setAttribute("text","value",e.target.dataset.colorName)},mouseleave:function(e){this.text.setAttribute("text","value","")},click:function(e){this.el.sceneEl.systems.materials.setColorScheme(e.target.dataset.colorScheme),this.el.sceneEl.emit("colorschemechange",e.target.dataset.colorScheme,!1)}}}),window.AFRAME){const t=["materials","materials-color-menu"],a=[],n=["materials"];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.el.object3D.visible=!1,setTimeout(()=>{this.el.components.layout.update(),this.el.object3D.visible=!0},150)})},events:{click:function(e){this.el.sceneEl.emit("menudifficultyselect",e.target.closest(".difficultyOption").dataset.difficulty,!1)}}}),window.AFRAME){const t=["menu-difficulty-select"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.el.sceneEl.emit("genreselect",e.target.closest(".genre").dataset.bindForKey)})}}),window.AFRAME){const t=["menu-genre"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{const t=e.target.closest("[data-mode]"),a=t.dataset.mode,n=t.dataset.name;this.el.sceneEl.emit("gamemode",a,!1),this.data.hasVR&&localStorage.setItem("gameMode",n),this.setModeOption(n)})},update:function(){this.data.hasVR?(this.setModeOption(localStorage.getItem("gameMode")||"punchvr"),this.el.sceneEl.emit("gamemode",s[localStorage.getItem("gameMode")||"punchvr"])):this.setModeOption("ride2d")},setModeOption:function(e){const t=this.el.querySelectorAll(".modeItem");document.getElementById("modeIcon").object3D.position.y=r[e];for(let a=0;a{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.el.components.animation__scaledown.beginAnimation(),this.el.object3D.position.z=0},800))}}),window.AFRAME){const t=["menu-playlist-button"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{const t=e.target.closest(".playlist");this.eventDetail.id=t.dataset.playlist,this.eventDetail.title=t.dataset.title,this.el.sceneEl.emit("playlistselect",this.eventDetail)})}}),window.AFRAME){const t=["menu-playlist"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{27===e.keyCode&&this.pauseGame()}),this.el.sceneEl.addEventListener("controllerconnected",e=>{"vive-controls"===e.detail.name?this.el.addEventListener("menudown",this.pauseGame):(this.el.addEventListener("thumbstickdown",this.pauseGame),this.el.addEventListener("trackpaddown",this.pauseGame))}),document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.pauseGame()})},pauseGame:function(){this.data.enabled&&this.el.sceneEl.emit("pausegame",null,!1)}}),window.AFRAME){const t=["pauser"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.data.enabled&&this.system.playSound(this.src,this.data.volume)})},update:function(){this.src=this.data.sound,this.data.sound.startsWith("#")&&(this.src=document.querySelector(this.data.sound).getAttribute("src"))}}),window.AFRAME){const t=["play-sound"],a=[],n=["play-sound"];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n3&&e.shift(),e.push(this.el.object3D.position.y),this.height=function(e){e.sort(n);const t=e.length/2;return t%1?e[t-.5]:(e[t-1]+e[t])/2}(e);const t=(a=this.height,r=1.6,s=2.2,Math.min(Math.max(a,r),s));var a,r,s,o,i;this.beatOffset=(i=0)+(.2-i)*(t-(o=1.6))/(2.2-o)}}),window.AFRAME){const t=["player-height"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;nthis.curveFollowRig.object3D.position.z+10)this.returnToPool();else for(let e=0;e{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.addEventListener("menudown",this.recenter),e.addEventListener("thumbstickdown",this.recenter)}),this.el.addEventListener("recenter",this.recenter)},recenter:(n=new THREE.Euler,r=new THREE.Matrix4,s=new THREE.Matrix4,o=new THREE.Matrix4,function(){const e=this.el;if(!this.data.enabled)return;const t=e.sceneEl.camera.el.object3D;r.identity(),n.set(0,-1*t.rotation.y,0),s.makeRotationFromEuler(n),o.makeTranslation(-1*t.position.x,0,-1*t.position.z),r.multiply(s).multiply(o),r.decompose(e.object3D.position,e.object3D.quaternion,e.object3D.scale),e.object3D.updateMatrixWorld(!0),e.emit("recentered",null,!1)})}),window.AFRAME){const t=["recenter"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.draw(a,t)}}e.length!==this.lastNumResults&&this.updateAlphaMap(e.length),this.lastNumResults=e.length},draw:function(e,t){this.ctx.drawImage(e,0,t*(512/384*64),64,512/384*64),this.el.getObject3D("mesh").material.map.needsUpdate=!0},clearCanvas:function(){const e=this.canvas;this.ctx.fillStyle="#111",this.ctx.fillRect(0,0,e.width,e.height)},updateAlphaMap:function(e){const t=this.alphaCanvas,a=this.alphaCtx;a.fillStyle="#FFF",a.fillRect(0,0,t.width,t.height),a.fillStyle="#000",a.fillRect(0,e*(512/384*64),t.width,t.height-e*(512/384*64)),this.el.getObject3D("mesh").material.alphaMap.needsUpdate=!0,this.el.getObject3D("mesh").material.needsUpdate=!0}}),window.AFRAME){const t=["search-thumbnail-atlas"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0;t--){const a=Math.floor(Math.random()*(t+1));[e[t],e[a]]=[e[a],e[t]]}}(this.popularHits),this.queryObject={hitsPerPage:0,query:""},this.el.sceneEl.addEventListener("searchclear",()=>{this.search("")})},update:function(e){this.popularHits&&(this.search(this.data.query),e.query&&!this.data.query&&(this.keyboardEl.components["super-keyboard"].data.value="",this.keyboardEl.components["super-keyboard"].updateTextInput("")),this.debouncedSearch=n(this.search.bind(this),1e3))},play:function(){this.el.sceneEl.emit("searchresults",this.eventDetail),this.search("")},events:{superkeyboardchange:function(e){e.target===this.el&&this.debouncedSearch(e.detail.value)}},search:function(e){if(!e&&"All"===this.data.difficultyFilter&&!this.data.genre&&!this.data.playlist&&this.popularHits)return this.eventDetail.results=this.popularHits,this.eventDetail.query="",void this.el.sceneEl.emit("searchresults",this.eventDetail);if(this.eventDetail.query=e,this.queryObject.query=e,this.queryObject.hitsPerPage=e?30:150,"favorites"===this.data.playlist)return this.eventDetail.results=JSON.parse(localStorage.getItem("favorites-v2")),void this.el.sceneEl.emit("searchresults",this.eventDetail);let t="https://beatsaver.com/api/search/text/CURRENT_PAGE_INDEX?sortOrder=Rating&automapper=true&q="+encodeURIComponent(e);if(this.data.playlist)t=`https://api.beatsaver.com/playlists/id/${this.data.playlist}/CURRENT_PAGE_INDEX`;else if(this.data.genre){const e={Pop:"pop","R&B":"rb",Rap:"hip-hop-rap",Rock:"rock",Soundtrack:"tv-movie-soundtrack","Video Games":"video-game-soundtrack",Electronic:"electronic","Hip Hop":"hip-hop-rap",House:"house","J-Pop":"j-pop","K-Pop":"k-pop",Meme:"comedy-meme",Alternative:"alternative",Anime:"anime",Comedy:"comedy-meme",Dubstep:"dubstep",Dance:"dance"}[this.data.genre];t="https://beatsaver.com/api/search/text/CURRENT_PAGE_INDEX?sortOrder=Rating&automapper=true&tags="+encodeURIComponent(e)}else if(e&&e.length<3)return;fetch(t.replaceAll("CURRENT_PAGE_INDEX",0)).then(e=>e.json()).then(e=>{var a=(e.docs||e.maps).map(r);this.eventDetail.results=a,this.eventDetail.url=t,this.eventDetail.urlPage=0,this.el.sceneEl.emit("searchresults",this.eventDetail)})}}),AFRAME.registerComponent("search-result-list",{init:function(){new MutationObserver(e=>{for(let t=0;t{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=t||a<0||b&&e-d>=s}function A(){var e=m();if(w(e))return S(e);i=setTimeout(A,function(e){var a=t-(e-c);return b?h(a,s-(e-d)):a}(e))}function S(e){return i=void 0,y&&n?g(e):(n=r=void 0,o)}function E(){var e=m(),a=w(e);if(n=arguments,r=this,c=e,a){if(void 0===i)return v(c);if(b)return i=setTimeout(A,t),g(c)}return void 0===i&&(i=setTimeout(A,t)),o}return t=f(t)||0,p(a)&&(l=!!a.leading,s=(b="maxWait"in a)?u(f(a.maxWait)||0,t):s,y="trailing"in a?!!a.trailing:y),E.cancel=function(){void 0!==i&&clearTimeout(i),d=0,n=c=r=i=void 0},E.flush=function(){return void 0===i?o:S(m())},E}}).call(this,a(1))},function(e,t){e.exports=[{id:"2144",name:"Shut Up and Dance - WALK THE MOON",description:"Difficulties: Expert+ (Added 11/15), Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/x9hJbTlPQUY",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:128,duration:200,songName:"Shut Up and Dance",songSubName:"WALK THE MOON",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:47856,upvotes:15705,downvotes:243,score:.9584},uploaded:"2018-11-21T01:27:00Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"89cf8bb07afb3c59ae7b5ac00337d62261c36fb4",key:"2144",state:"Published",createdAt:"2018-11-21T01:27:00Z",sageScore:3,diffs:[{njs:10,offset:0,notes:301,bombs:4,obstacles:24,nps:1.578,length:407,characteristic:"Standard",difficulty:"Normal",events:380,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.781,paritySummary:{errors:64,warns:19,resets:0}},{njs:10,offset:0,notes:486,bombs:4,obstacles:24,nps:2.547,length:407,characteristic:"Standard",difficulty:"Hard",events:380,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.781,paritySummary:{errors:76,warns:34,resets:0}},{njs:10,offset:0,notes:620,bombs:4,obstacles:24,nps:3.246,length:407.5,characteristic:"Standard",difficulty:"Expert",events:380,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.016,paritySummary:{errors:88,warns:68,resets:0}},{njs:12,offset:0,notes:894,bombs:0,obstacles:0,nps:4.68,length:407.5,characteristic:"Standard",difficulty:"ExpertPlus",events:380,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.016,paritySummary:{errors:99,warns:120,resets:0}}],downloadURL:"https://cdn.beatsaver.com/89cf8bb07afb3c59ae7b5ac00337d62261c36fb4.zip",coverURL:"https://cdn.beatsaver.com/89cf8bb07afb3c59ae7b5ac00337d62261c36fb4.jpg",previewURL:"https://cdn.beatsaver.com/89cf8bb07afb3c59ae7b5ac00337d62261c36fb4.mp3"}],createdAt:"2018-11-21T01:27:00Z",updatedAt:"2018-11-21T01:27:00Z",lastPublishedAt:"2018-11-21T01:27:00Z"},{id:"66e6",name:"League of Legends - Legends never die (ft. Against The Current)",description:"A special request from Prima1URGE",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:140,duration:236,songName:"Legends Never Die",songSubName:"",songAuthorName:"League of Legends & Against The Current",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:30647,upvotes:10346,downvotes:160,score:.9549},uploaded:"2019-09-30T10:19:45.606Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"732bd4072b89d4b3bf0e63db812a7ffc3096e837",key:"66e6",state:"Published",createdAt:"2019-09-30T10:19:45.606Z",sageScore:6,diffs:[{njs:12,offset:0,notes:705,bombs:0,obstacles:10,nps:3.041,length:541,characteristic:"Standard",difficulty:"Expert",events:1693,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.857,paritySummary:{errors:4,warns:2,resets:0}},{njs:16,offset:0,notes:876,bombs:0,obstacles:10,nps:3.778,length:541,characteristic:"Standard",difficulty:"ExpertPlus",events:1693,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.857,paritySummary:{errors:3,warns:2,resets:0}}],downloadURL:"https://cdn.beatsaver.com/732bd4072b89d4b3bf0e63db812a7ffc3096e837.zip",coverURL:"https://cdn.beatsaver.com/732bd4072b89d4b3bf0e63db812a7ffc3096e837.jpg",previewURL:"https://cdn.beatsaver.com/732bd4072b89d4b3bf0e63db812a7ffc3096e837.mp3"}],createdAt:"2019-09-30T10:19:45.606Z",updatedAt:"2019-09-30T10:19:45.606Z",lastPublishedAt:"2019-09-30T10:19:45.606Z"},{id:"570",name:"Mr. Blue Sky | Electric Light Orchestra",description:"Channel your inner Baby Groot. Normal, Hard, Expert\r\nSpecial thanks to BennydaBeast for his help on this track!",uploader:{id:41378,name:"greatyazer",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea71",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea71?d=retro",type:"SIMPLE"},metadata:{bpm:174,duration:222,songName:"Mr. Blue Sky",songSubName:"Electric Light Orchestra",songAuthorName:"GreatYazer",levelAuthorName:"greatyazer"},stats:{plays:0,downloads:53449,upvotes:29661,downvotes:731,score:.9547},uploaded:"2018-06-16T16:53:34Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"236173d5ba7dc379d480b9cb5fb6b4fa5abe77da",key:"570",state:"Published",createdAt:"2018-06-16T16:53:34Z",sageScore:5,diffs:[{njs:10,offset:0,notes:462,bombs:0,obstacles:25,nps:2.228,length:601.313,characteristic:"Standard",difficulty:"Normal",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.349,paritySummary:{errors:132,warns:16,resets:0},stars:1.46},{njs:10,offset:0,notes:639,bombs:0,obstacles:40,nps:3.082,length:601.313,characteristic:"Standard",difficulty:"Hard",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.349,paritySummary:{errors:109,warns:27,resets:0}},{njs:10,offset:0,notes:825,bombs:0,obstacles:40,nps:3.979,length:601.313,characteristic:"Standard",difficulty:"Expert",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.349,paritySummary:{errors:119,warns:57,resets:0}}],downloadURL:"https://cdn.beatsaver.com/236173d5ba7dc379d480b9cb5fb6b4fa5abe77da.zip",coverURL:"https://cdn.beatsaver.com/236173d5ba7dc379d480b9cb5fb6b4fa5abe77da.jpg",previewURL:"https://cdn.beatsaver.com/236173d5ba7dc379d480b9cb5fb6b4fa5abe77da.mp3"}],createdAt:"2018-06-16T16:53:34Z",updatedAt:"2018-06-16T16:53:34Z",lastPublishedAt:"2018-06-16T16:53:34Z"},{id:"3cf5",name:"Caramelldansen",description:"Preview: https://youtu.be/V5p0HOzunY0\n\n\nTwitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:165,duration:178,songName:"Caramelldansen (Speedcake Remix)",songSubName:"Caramell",songAuthorName:"Dack",levelAuthorName:"Dack"},stats:{plays:0,downloads:30551,upvotes:19321,downvotes:422,score:.9543},uploaded:"2019-03-09T22:54:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cf5e32d6b7f30095f7198da5894139c92336cad7",key:"3cf5",state:"Published",createdAt:"2019-03-09T22:54:54Z",sageScore:4,diffs:[{njs:14,offset:0,notes:722,bombs:52,obstacles:28,nps:4.254,length:466.75,characteristic:"Standard",difficulty:"Expert",events:597,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.727,paritySummary:{errors:37,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cf5e32d6b7f30095f7198da5894139c92336cad7.zip",coverURL:"https://cdn.beatsaver.com/cf5e32d6b7f30095f7198da5894139c92336cad7.jpg",previewURL:"https://cdn.beatsaver.com/cf5e32d6b7f30095f7198da5894139c92336cad7.mp3"}],createdAt:"2019-03-09T22:54:54Z",updatedAt:"2019-03-09T22:54:54Z",lastPublishedAt:"2019-03-09T22:54:54Z"},{id:"133b",name:"Daddy - PSY",description:"Insanely fun dance map! Enjoy!\nSee the map in action (Expert): https://www.youtube.com/watch?v=7jOIdfo0j4Q\n\nThank you to my playtesters:\nDuoVR (https://www.twitch.tv/duovr)\nSourgurl (https://www.twitch.tv/sourgurl)\nRexxxzi (https://www.twitch.tv/rexxxzi)\nAshleyriott (https://www.twitch.tv/ashleyriott)",uploader:{id:38202,name:"fafurion",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f945",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f945?d=retro",type:"SIMPLE"},metadata:{bpm:132,duration:232,songName:"Daddy",songSubName:"PSY",songAuthorName:"Fafurion",levelAuthorName:"fafurion"},stats:{plays:0,downloads:21881,upvotes:11227,downvotes:192,score:.9542},uploaded:"2018-09-02T23:43:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"dc489921185f92dfecb9cb07b84fc556123bd134",key:"133b",state:"Published",createdAt:"2018-09-02T23:43:45Z",sageScore:5,diffs:[{njs:10,offset:0,notes:671,bombs:0,obstacles:16,nps:3.012,length:490.125,characteristic:"Standard",difficulty:"Hard",events:1586,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.784,paritySummary:{errors:38,warns:39,resets:0}},{njs:10,offset:0,notes:831,bombs:0,obstacles:16,nps:3.73,length:490.125,characteristic:"Standard",difficulty:"Expert",events:1587,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.784,paritySummary:{errors:44,warns:40,resets:0}}],downloadURL:"https://cdn.beatsaver.com/dc489921185f92dfecb9cb07b84fc556123bd134.zip",coverURL:"https://cdn.beatsaver.com/dc489921185f92dfecb9cb07b84fc556123bd134.jpg",previewURL:"https://cdn.beatsaver.com/dc489921185f92dfecb9cb07b84fc556123bd134.mp3"}],createdAt:"2018-09-02T23:43:45Z",updatedAt:"2018-09-02T23:43:45Z",lastPublishedAt:"2018-09-02T23:43:45Z"},{id:"121f",name:"Skillet - Feel Invincible",description:"Expert / Hard\r\nhttps://www.youtube.com/watch?v=nq-Qul4XxbE",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:227,songName:"Feel Invincible",songSubName:"Skillet",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:24093,upvotes:9596,downvotes:150,score:.9541},uploaded:"2018-08-27T16:47:05Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2e9ab6e1fb8055649e241cade98b018926cc93a8",key:"121f",state:"Published",createdAt:"2018-08-27T16:47:05Z",sageScore:6,diffs:[{njs:10,offset:0,notes:620,bombs:0,obstacles:10,nps:2.764,length:471,characteristic:"Standard",difficulty:"Hard",events:1654,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.286,paritySummary:{errors:15,warns:58,resets:0}},{njs:12,offset:0,notes:738,bombs:0,obstacles:11,nps:3.29,length:471,characteristic:"Standard",difficulty:"Expert",events:1654,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.286,paritySummary:{errors:21,warns:72,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2e9ab6e1fb8055649e241cade98b018926cc93a8.zip",coverURL:"https://cdn.beatsaver.com/2e9ab6e1fb8055649e241cade98b018926cc93a8.jpg",previewURL:"https://cdn.beatsaver.com/2e9ab6e1fb8055649e241cade98b018926cc93a8.mp3"}],createdAt:"2018-08-27T16:47:05Z",updatedAt:"2018-08-27T16:47:05Z",lastPublishedAt:"2018-08-27T16:47:05Z"},{id:"4e6f",name:"Kero Kero Bonito - Flamingo",description:"edited: NJS was a tad slow my b\r\nfuramingo \r\noh oh ooh oh\r\nthis needed to be remapped\r\n \r\nPlease check out Kero Kero Bonito and the rest of their songs\r\nI'll be mappin more of em soon\r\n\r\nBPM 178\r\nFlamingo (Expert)\r\nShrimp (Hard)\r\n\r\nhave fun \r\n\r\ngimme feedback on Discord\r\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:178,duration:197,songName:"Flamingo",songSubName:"Kero Kero Bonito",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:22969,upvotes:10417,downvotes:173,score:.954},uploaded:"2019-05-22T00:46:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"585ee25e654ebf5db5aa0ec02c3bcecbaccf3e0b",key:"4e6f",state:"Published",createdAt:"2019-05-22T00:46:47Z",sageScore:5,diffs:[{njs:13,offset:0,notes:519,bombs:8,obstacles:86,nps:2.692,length:572,characteristic:"Standard",difficulty:"Hard",events:2271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192.809,paritySummary:{errors:43,warns:43,resets:2}},{njs:16,offset:0,notes:679,bombs:10,obstacles:86,nps:3.522,length:572,characteristic:"Standard",difficulty:"Expert",events:2271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192.809,paritySummary:{errors:35,warns:24,resets:4}}],downloadURL:"https://cdn.beatsaver.com/585ee25e654ebf5db5aa0ec02c3bcecbaccf3e0b.zip",coverURL:"https://cdn.beatsaver.com/585ee25e654ebf5db5aa0ec02c3bcecbaccf3e0b.jpg",previewURL:"https://cdn.beatsaver.com/585ee25e654ebf5db5aa0ec02c3bcecbaccf3e0b.mp3"}],createdAt:"2019-05-22T00:46:47Z",updatedAt:"2019-05-22T00:46:47Z",lastPublishedAt:"2019-05-22T00:46:47Z"},{id:"1fef",name:"Imagine Dragons - Believer (100k ver.) | 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:205,songName:"Believer (100k ver.)",songSubName:"Imagine Dragons",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:39471,upvotes:16897,downvotes:378,score:.9528},uploaded:"2018-11-12T17:53:58Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9a7a5beadfdd1c7c0f137ecba6e5f6ff377eb390",key:"1fef",state:"Published",createdAt:"2018-11-12T17:53:58Z",sageScore:6,diffs:[{njs:10,offset:0,notes:216,bombs:0,obstacles:0,nps:1.09,length:413,characteristic:"Standard",difficulty:"Easy",events:3418,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:42,warns:14,resets:0}},{njs:10,offset:0,notes:388,bombs:0,obstacles:8,nps:1.957,length:413,characteristic:"Standard",difficulty:"Normal",events:3418,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:18,warns:21,resets:0}},{njs:11,offset:0,notes:514,bombs:0,obstacles:10,nps:2.593,length:413,characteristic:"Standard",difficulty:"Hard",events:3418,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:57,warns:59,resets:0}},{njs:12,offset:0,notes:560,bombs:0,obstacles:12,nps:2.825,length:413,characteristic:"Standard",difficulty:"Expert",events:3430,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:102,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9a7a5beadfdd1c7c0f137ecba6e5f6ff377eb390.zip",coverURL:"https://cdn.beatsaver.com/9a7a5beadfdd1c7c0f137ecba6e5f6ff377eb390.jpg",previewURL:"https://cdn.beatsaver.com/9a7a5beadfdd1c7c0f137ecba6e5f6ff377eb390.mp3"}],createdAt:"2018-11-12T17:53:58Z",updatedAt:"2018-11-12T17:53:58Z",lastPublishedAt:"2018-11-12T17:53:58Z"},{id:"4c6",name:"Muse - Uprising",description:"Expert / Hard\r\nhttps://youtu.be/WpFUt3UNp7c",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:251,songName:"Uprising",songSubName:"Muse",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:31460,upvotes:12140,downvotes:243,score:.9522},uploaded:"2018-06-11T21:47:41Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"00e5671e594a6fe621c3605fcc5a0e4466ba6478",key:"4c6",state:"Published",createdAt:"2018-06-11T21:47:41Z",sageScore:6,diffs:[{njs:10,offset:0,notes:633,bombs:0,obstacles:13,nps:2.599,length:519.625,characteristic:"Standard",difficulty:"Hard",events:1975,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.574,paritySummary:{errors:122,warns:57,resets:0},stars:1.45},{njs:12,offset:0,notes:880,bombs:0,obstacles:19,nps:3.613,length:519.625,characteristic:"Standard",difficulty:"Expert",events:1975,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.574,paritySummary:{errors:104,warns:75,resets:0},stars:2.19}],downloadURL:"https://cdn.beatsaver.com/00e5671e594a6fe621c3605fcc5a0e4466ba6478.zip",coverURL:"https://cdn.beatsaver.com/00e5671e594a6fe621c3605fcc5a0e4466ba6478.jpg",previewURL:"https://cdn.beatsaver.com/00e5671e594a6fe621c3605fcc5a0e4466ba6478.mp3"}],createdAt:"2018-06-11T21:47:41Z",updatedAt:"2018-06-11T21:47:41Z",lastPublishedAt:"2018-06-11T21:47:41Z"},{id:"da60",name:"[Extra Sensory] Dirty Androids - Midnight Lady",description:'Enjoy the ride.\n\nMassive thanks to Nyri0 and Checkthepan for helping with scripts and some math!!\n\n\nThis map was released as a part of the "Extra Sensory" event.\n\nVideo showcase thingy: https://youtu.be/pE_s9bvntA0 (watch tougeVR\'s instead tho)',uploader:{id:4235136,name:"reaxt",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ab",avatar:"https://cdn.beatsaver.com/avatar/163052863038291970.png",type:"DISCORD"},metadata:{bpm:128,duration:127,songName:"Midnight Lady",songSubName:"",songAuthorName:"Dirty Androids",levelAuthorName:"Reaxt"},stats:{plays:0,downloads:17800,upvotes:6632,downvotes:93,score:.9519},uploaded:"2020-08-20T16:48:21.705Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ee501d7348223470c16ca88eac4a946e41cd11a9",key:"da60",state:"Published",createdAt:"2020-08-20T16:48:21.705Z",sageScore:2,diffs:[{njs:18,offset:0,notes:748,bombs:0,obstacles:4878,nps:6.233,length:256,characteristic:"Standard",difficulty:"ExpertPlus",events:767,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:120,paritySummary:{errors:7,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ee501d7348223470c16ca88eac4a946e41cd11a9.zip",coverURL:"https://cdn.beatsaver.com/ee501d7348223470c16ca88eac4a946e41cd11a9.jpg",previewURL:"https://cdn.beatsaver.com/ee501d7348223470c16ca88eac4a946e41cd11a9.mp3"}],createdAt:"2020-08-20T16:48:21.705Z",updatedAt:"2020-08-20T16:48:21.705Z",lastPublishedAt:"2020-08-20T16:48:21.705Z"},{id:"2087",name:"Panic at the disco - The Greatest Show reimagined | (100K Contest)",description:"Here is a bonus map for the 100K contest! Playing any difficulty will give you 4x the normal chance of winning up to $12000 in prizes!!\r\nBig thank you to the beat saber mapping group for helping me out with a few things, you guys are great!\r\n\r\nTo enter, you need to go to the following website and download the mod installer: https://bsaber.com/100k-contest/\r\n\r\nThe competition is now over, but the maps remain!\r\nVideo Preview: https://www.youtube.com/watch?v=E929e6puEQA",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:77,duration:174,songName:"The greatest show reimagined",songSubName:"Panic at the disco",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:26198,upvotes:9073,downvotes:160,score:.9518},uploaded:"2018-11-16T17:57:55Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"afc2a905079d1fcdc9d82fa50e83c842d4d42118",key:"2087",state:"Published",createdAt:"2018-11-16T17:57:55Z",sageScore:5,diffs:[{njs:10,offset:0,notes:252,bombs:0,obstacles:6,nps:1.542,length:209.75,characteristic:"Standard",difficulty:"Easy",events:1328,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.442,paritySummary:{errors:35,warns:26,resets:0}},{njs:10,offset:0,notes:342,bombs:0,obstacles:5,nps:2.092,length:209.75,characteristic:"Standard",difficulty:"Normal",events:1327,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.442,paritySummary:{errors:37,warns:36,resets:0}},{njs:11,offset:0,notes:472,bombs:0,obstacles:5,nps:2.888,length:209.75,characteristic:"Standard",difficulty:"Hard",events:1326,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.442,paritySummary:{errors:37,warns:41,resets:0}},{njs:12,offset:0,notes:565,bombs:0,obstacles:5,nps:3.457,length:209.75,characteristic:"Standard",difficulty:"Expert",events:1329,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.442,paritySummary:{errors:39,warns:30,resets:0}}],downloadURL:"https://cdn.beatsaver.com/afc2a905079d1fcdc9d82fa50e83c842d4d42118.zip",coverURL:"https://cdn.beatsaver.com/afc2a905079d1fcdc9d82fa50e83c842d4d42118.jpg",previewURL:"https://cdn.beatsaver.com/afc2a905079d1fcdc9d82fa50e83c842d4d42118.mp3"}],createdAt:"2018-11-16T17:57:55Z",updatedAt:"2018-11-16T17:57:55Z",lastPublishedAt:"2018-11-16T17:57:55Z"},{id:"747",name:"Technologic - Daft Punk (Update)",description:"Expert / Hard / Normal",uploader:{id:44595,name:"awfulnaut",uniqueSet:!0,hash:"5cff0b7398cc5a672c84edac",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84edac?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:169,songName:"Technologic",songSubName:"Daft Punk",songAuthorName:"Awfulnaut",levelAuthorName:"awfulnaut"},stats:{plays:0,downloads:26292,upvotes:10662,downvotes:205,score:.9518},uploaded:"2018-06-30T18:30:38Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"831247d7d02e948e5d03622748bb130b5057023d",key:"747",state:"Published",createdAt:"2018-06-30T18:30:38Z",sageScore:6,diffs:[{njs:10,offset:0,notes:375,bombs:334,obstacles:9,nps:2.276,length:350.021,characteristic:"Standard",difficulty:"Normal",events:1321,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.364,paritySummary:{errors:62,warns:48,resets:110}},{njs:10,offset:0,notes:480,bombs:306,obstacles:3,nps:2.913,length:350,characteristic:"Standard",difficulty:"Hard",events:1321,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.354,paritySummary:{errors:31,warns:59,resets:96}},{njs:10,offset:0,notes:662,bombs:138,obstacles:3,nps:4.018,length:350,characteristic:"Standard",difficulty:"Expert",events:1327,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.354,paritySummary:{errors:42,warns:68,resets:43}}],downloadURL:"https://cdn.beatsaver.com/831247d7d02e948e5d03622748bb130b5057023d.zip",coverURL:"https://cdn.beatsaver.com/831247d7d02e948e5d03622748bb130b5057023d.jpg",previewURL:"https://cdn.beatsaver.com/831247d7d02e948e5d03622748bb130b5057023d.mp3"}],createdAt:"2018-06-30T18:30:38Z",updatedAt:"2018-06-30T18:30:38Z",lastPublishedAt:"2018-06-30T18:30:38Z"},{id:"1023",name:"I Wanna Be Like You (Sim Gretina Remix)",description:"Who doesn't love The Jungle Book? \r\nPreview: https://youtu.be/DXdo1-FlxSk",uploader:{id:4285668,name:"connorjc",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fb89",avatar:"https://cdn.beatsaver.com/avatar/99724057217355776.png",type:"DISCORD"},metadata:{bpm:110,duration:172,songName:"I Wanna Be Like You (Sim Gretina Remix)",songSubName:"Jungle Book",songAuthorName:"ConnorJC",levelAuthorName:"ConnorJC"},stats:{plays:0,downloads:15215,upvotes:7020,downvotes:108,score:.9513},uploaded:"2018-08-16T13:41:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"638cf20187a122490b4662555e9072cd8073146b",key:"1023",state:"Published",createdAt:"2018-08-16T13:41:07Z",sageScore:4,diffs:[{njs:10,offset:0,notes:512,bombs:0,obstacles:52,nps:3.276,length:286.5,characteristic:"Standard",difficulty:"Expert",events:486,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.273,paritySummary:{errors:81,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/638cf20187a122490b4662555e9072cd8073146b.zip",coverURL:"https://cdn.beatsaver.com/638cf20187a122490b4662555e9072cd8073146b.jpg",previewURL:"https://cdn.beatsaver.com/638cf20187a122490b4662555e9072cd8073146b.mp3"}],createdAt:"2018-08-16T13:41:07Z",updatedAt:"2018-08-16T13:41:07Z",lastPublishedAt:"2018-08-16T13:41:07Z"},{id:"18cc",name:"Du Hast by Rammstein (Kole Edit)",description:"Many has been asking, many have been waiting patiently, many have been confused as to why this hasn't been done before, but now it's here and now you can have it too; here's Du Hast by Rammstein now in Beat Saber!\r\n\r\nSong has been edited (shortened) to be tighter and not too repetitive.\r\n\r\nPreview:\r\nhttps://youtu.be/3i1mf2EGSjc\r\n\r\nBPM: 125.09\r\nDuration: 2:57\r\nEasy, Normal, Hard and Expert difficulties.\r\n\r\nEasy: 251, 0 obstacles, 0 mines\r\nNormal: 444 notes, 0 obstacles, 0 mines\r\nHard: 581 notes, 0 obstacles, 0 mines\r\nExpert: 437 notes, 0 obstacles, 0 mines\r\n\r\nThanks to VenclaireVR, Redmagi, Horseman, Saut and elliotttate for playtesting!\r\n\r\nDownload the One Saber version of this map here:\r\nhttps://beatsaver.com/browse/detail/6784-6436\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:125,duration:177,songName:"Du Hast",songSubName:"Rammstein",songAuthorName:"Level by Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:19197,upvotes:9801,downvotes:188,score:.9511},uploaded:"2018-10-05T06:17:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6df961680ead49e2d92de1a95b789e0ce4a026db",key:"18cc",state:"Published",createdAt:"2018-10-05T06:17:10Z",sageScore:4,diffs:[{njs:10,offset:0,notes:251,bombs:0,obstacles:0,nps:1.487,length:352,characteristic:"Standard",difficulty:"Easy",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:65,warns:24,resets:0}},{njs:11,offset:0,notes:444,bombs:0,obstacles:0,nps:2.63,length:352,characteristic:"Standard",difficulty:"Normal",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:74,warns:35,resets:0}},{njs:12,offset:0,notes:581,bombs:0,obstacles:0,nps:3.441,length:352,characteristic:"Standard",difficulty:"Hard",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:83,warns:44,resets:0}},{njs:12,offset:0,notes:723,bombs:0,obstacles:0,nps:4.282,length:352,characteristic:"Standard",difficulty:"Expert",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:57,warns:57,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6df961680ead49e2d92de1a95b789e0ce4a026db.zip",coverURL:"https://cdn.beatsaver.com/6df961680ead49e2d92de1a95b789e0ce4a026db.jpg",previewURL:"https://cdn.beatsaver.com/6df961680ead49e2d92de1a95b789e0ce4a026db.mp3"}],createdAt:"2018-10-05T06:17:10Z",updatedAt:"2018-10-05T06:17:10Z",lastPublishedAt:"2018-10-05T06:17:10Z"},{id:"23c3",name:"Without Me (ILLENIUM Remix) - Halsey",description:"All 5 Difficulties\r\nBPM: 136\r\nNote Jumps Speed from E+to Easy: 14, 12, 11, 10, 10\r\n\r\nLemme know what you think!",uploader:{id:30754,name:"styngme",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9cd",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9cd?d=retro",type:"SIMPLE"},metadata:{bpm:136,duration:247,songName:"Without Me - ILLENIUM Remix",songSubName:"Halsey, ILLENIUM",songAuthorName:"StyngMe",levelAuthorName:"styngme"},stats:{plays:0,downloads:23662,upvotes:8757,downvotes:162,score:.9507},uploaded:"2018-12-04T15:46:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a684cee0d634b9bb59eef234665fd28ef27876ac",key:"23c3",state:"Published",createdAt:"2018-12-04T15:46:54Z",sageScore:7,diffs:[{njs:10,offset:0,notes:571,bombs:0,obstacles:78,nps:2.652,length:488,characteristic:"Standard",difficulty:"Easy",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:5,warns:2,resets:0}},{njs:10,offset:0,notes:747,bombs:0,obstacles:78,nps:3.47,length:488,characteristic:"Standard",difficulty:"Normal",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:51,warns:40,resets:0}},{njs:11,offset:0,notes:788,bombs:0,obstacles:78,nps:3.66,length:488,characteristic:"Standard",difficulty:"Hard",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:58,warns:40,resets:0}},{njs:12,offset:0,notes:850,bombs:0,obstacles:78,nps:3.948,length:488,characteristic:"Standard",difficulty:"Expert",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:72,warns:69,resets:0}},{njs:14,offset:0,notes:872,bombs:0,obstacles:78,nps:4.05,length:488,characteristic:"Standard",difficulty:"ExpertPlus",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:67,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a684cee0d634b9bb59eef234665fd28ef27876ac.zip",coverURL:"https://cdn.beatsaver.com/a684cee0d634b9bb59eef234665fd28ef27876ac.jpg",previewURL:"https://cdn.beatsaver.com/a684cee0d634b9bb59eef234665fd28ef27876ac.mp3"}],createdAt:"2018-12-04T15:46:54Z",updatedAt:"2018-12-04T15:46:54Z",lastPublishedAt:"2018-12-04T15:46:54Z"},{id:"38ff",name:"Ievan Polkka",description:"",uploader:{id:30164,name:"fraktar",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551b0",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8551b0?d=retro",type:"SIMPLE"},metadata:{bpm:119,duration:147,songName:"Ievan Polkka",songSubName:"Hatsune Miku",songAuthorName:"Fraktar",levelAuthorName:"Fraktar"},stats:{plays:0,downloads:17204,upvotes:8751,downvotes:167,score:.9501},uploaded:"2019-02-23T15:58:08Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"72bf749f5df632cd103fccd734c9fd5cc7596caa",key:"38ff",state:"Published",createdAt:"2019-02-23T15:58:08Z",sageScore:5,diffs:[{njs:12,offset:0,notes:734,bombs:0,obstacles:16,nps:5.09,length:286,characteristic:"Standard",difficulty:"Expert",events:1360,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:144.202,paritySummary:{errors:70,warns:39,resets:0}}],downloadURL:"https://cdn.beatsaver.com/72bf749f5df632cd103fccd734c9fd5cc7596caa.zip",coverURL:"https://cdn.beatsaver.com/72bf749f5df632cd103fccd734c9fd5cc7596caa.jpg",previewURL:"https://cdn.beatsaver.com/72bf749f5df632cd103fccd734c9fd5cc7596caa.mp3"}],createdAt:"2019-02-23T15:58:08Z",updatedAt:"2019-02-23T15:58:08Z",lastPublishedAt:"2019-02-23T15:58:08Z"},{id:"8553",name:"Blinding Lights - The Weeknd",description:"This map was supposed to release last year and have a 90 degree difficulty but it got cut because life ¯\\_(ツ)_/¯ Fantastic song though.\n\nExpert Playthrough : https://youtu.be/GonnTYPmDVY",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:171,duration:199,songName:"Blinding Lights",songSubName:"",songAuthorName:"The Weeknd",levelAuthorName:"NovaShaft"},stats:{plays:0,downloads:34508,upvotes:11999,downvotes:269,score:.95},uploaded:"2020-02-08T17:26:23.499Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"17d298f2bf78b453cd66474ce268ae9dac9fab46",key:"8553",state:"Published",createdAt:"2020-02-08T17:26:23.499Z",sageScore:7,diffs:[{njs:10,offset:0,notes:271,bombs:0,obstacles:15,nps:1.482,length:521,characteristic:"Standard",difficulty:"Easy",events:3071,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.807,paritySummary:{errors:71,warns:4,resets:0}},{njs:13,offset:1,notes:457,bombs:16,obstacles:25,nps:2.5,length:521,characteristic:"Standard",difficulty:"Hard",events:3071,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.807,paritySummary:{errors:6,warns:7,resets:1}},{njs:17,offset:.5,notes:594,bombs:44,obstacles:33,nps:3.249,length:521,characteristic:"Standard",difficulty:"Expert",events:3146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.807,paritySummary:{errors:14,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/17d298f2bf78b453cd66474ce268ae9dac9fab46.zip",coverURL:"https://cdn.beatsaver.com/17d298f2bf78b453cd66474ce268ae9dac9fab46.jpg",previewURL:"https://cdn.beatsaver.com/17d298f2bf78b453cd66474ce268ae9dac9fab46.mp3"}],createdAt:"2020-02-08T17:26:23.499Z",updatedAt:"2020-02-08T17:26:23.499Z",lastPublishedAt:"2020-02-08T17:26:23.499Z"},{id:"2e9e",name:"YoiYoi Kokon - REOL",description:"Put on your yukata; lets travel back in time and enjoy ourselves! Here's REOL's probably most popular song mapped by me, YoiYoi Kokon (宵々古今)!\r\n\r\nThe audio version of the song is that of the music video (slightly edited by me) as I love the addition of the fireworks in the last part of the song. Together with the crowd in the intro this makes it feel like you're attending a festival.\r\n\r\nExpert+ is basically Expert but with no pauses and with the melody followed instead of the shouts.\r\n\r\nPreview:\r\nhttps://youtu.be/G61m6Au2foM\r\n\r\nBPM: 150\r\nDuration: 4:16\r\nEasy, Normal, Hard, Expert and Expert+ difficulties.\r\n\r\nEasy: 332, 12 obstacles, 0 mines\r\nNormal: 471 notes, 17 obstacles, 0 mines\r\nHard: 679 notes, 17 obstacles, 0 mines\r\nExpert: 954 notes, 17 obstacles, 0 mines\r\nExpert+: 1086 notes, 1 obstacles, 0 mines\r\n\r\nThanks to Redmagi, Aithke, aggrogahu, Don and Emperor of the Internet for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:150,duration:256,songName:"YoiYoi Kokon",songSubName:"REOL",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:13836,upvotes:6975,downvotes:118,score:.9499},uploaded:"2019-01-18T09:22:30Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"766a222b102b6522cd5d31e82ec7adc7c5ff011e",key:"2e9e",state:"Published",createdAt:"2019-01-18T09:22:30Z",sageScore:7,diffs:[{njs:9,offset:0,notes:332,bombs:0,obstacles:12,nps:1.349,length:615.203,characteristic:"Standard",difficulty:"Easy",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:48,warns:24,resets:0}},{njs:10,offset:0,notes:471,bombs:0,obstacles:17,nps:1.914,length:615.203,characteristic:"Standard",difficulty:"Normal",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:67,warns:38,resets:0}},{njs:11,offset:0,notes:679,bombs:0,obstacles:17,nps:2.759,length:615.203,characteristic:"Standard",difficulty:"Hard",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:79,warns:71,resets:0}},{njs:12.5,offset:0,notes:954,bombs:0,obstacles:17,nps:3.877,length:615.203,characteristic:"Standard",difficulty:"Expert",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:104,warns:144,resets:0}},{njs:12.5,offset:0,notes:1086,bombs:0,obstacles:1,nps:4.413,length:615.203,characteristic:"Standard",difficulty:"ExpertPlus",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:102,warns:152,resets:0}}],downloadURL:"https://cdn.beatsaver.com/766a222b102b6522cd5d31e82ec7adc7c5ff011e.zip",coverURL:"https://cdn.beatsaver.com/766a222b102b6522cd5d31e82ec7adc7c5ff011e.jpg",previewURL:"https://cdn.beatsaver.com/766a222b102b6522cd5d31e82ec7adc7c5ff011e.mp3"}],createdAt:"2019-01-18T09:22:30Z",updatedAt:"2019-01-18T09:22:30Z",lastPublishedAt:"2019-01-18T09:22:30Z"},{id:"30fd",name:"Love The Way You Lie (ft. Rihanna) - Eminem, Rihanna | Charted by StyngMe",description:"I hope you enjoy!\r\nBPM: 87\r\nDifficulties: ALL\r\nNote Jump Speed for E+ through Easy: 16, 14, 12, 12, 11",uploader:{id:30754,name:"styngme",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9cd",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9cd?d=retro",type:"SIMPLE"},metadata:{bpm:87,duration:265,songName:"Love The Way You Lie (ft. Rihanna)",songSubName:"Eminem, Rihanna",songAuthorName:"StyngMe",levelAuthorName:"styngme"},stats:{plays:0,downloads:24461,upvotes:7923,downvotes:147,score:.9497},uploaded:"2019-01-25T15:48:22Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8161daf97cab8c95aea0556549b4b8cfb29a13d3",key:"30fd",state:"Published",createdAt:"2019-01-25T15:48:22Z",sageScore:7,diffs:[{njs:11,offset:0,notes:387,bombs:0,obstacles:18,nps:1.661,length:337.75,characteristic:"Standard",difficulty:"Easy",events:2082,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:28,warns:28,resets:0}},{njs:12,offset:0,notes:503,bombs:0,obstacles:6,nps:2.159,length:337.75,characteristic:"Standard",difficulty:"Normal",events:2082,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:21,warns:36,resets:0}},{njs:12,offset:0,notes:617,bombs:0,obstacles:0,nps:2.649,length:337.75,characteristic:"Standard",difficulty:"Hard",events:2082,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:37,warns:38,resets:0}},{njs:14,offset:0,notes:1006,bombs:0,obstacles:0,nps:4.319,length:337.75,characteristic:"Standard",difficulty:"Expert",events:2082,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:24,warns:55,resets:0}},{njs:16,offset:0,notes:1207,bombs:0,obstacles:0,nps:5.182,length:337.75,characteristic:"Standard",difficulty:"ExpertPlus",events:2085,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:39,warns:76,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8161daf97cab8c95aea0556549b4b8cfb29a13d3.zip",coverURL:"https://cdn.beatsaver.com/8161daf97cab8c95aea0556549b4b8cfb29a13d3.jpg",previewURL:"https://cdn.beatsaver.com/8161daf97cab8c95aea0556549b4b8cfb29a13d3.mp3"}],createdAt:"2019-01-25T15:48:22Z",updatedAt:"2019-01-25T15:48:22Z",lastPublishedAt:"2019-01-25T15:48:22Z"},{id:"26f6",name:"IGNITE (Ranked Version) [Sword Art Online Season 2 Opening] - Aoi Eir",description:"Trying to get this version ranked! New version with changes according to the ranking criteria: Double directional notes fixed, flow improvements, removed fast dodge walls on bridge section.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:171,duration:244,songName:"IGNITE",songSubName:"Aoi Eir",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:23842,upvotes:11061,downvotes:245,score:.9495},uploaded:"2018-12-20T01:21:47Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"125b07ebcc06fe9667e83fc2d6b9ae5ecbc72e8c",key:"26f6",state:"Published",createdAt:"2018-12-20T01:21:47Z",sageScore:6,diffs:[{njs:14,offset:0,notes:1093,bombs:16,obstacles:16,nps:4.594,length:678,characteristic:"Standard",difficulty:"Expert",events:1642,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:237.895,paritySummary:{errors:77,warns:79,resets:0},stars:3.21}],downloadURL:"https://cdn.beatsaver.com/125b07ebcc06fe9667e83fc2d6b9ae5ecbc72e8c.zip",coverURL:"https://cdn.beatsaver.com/125b07ebcc06fe9667e83fc2d6b9ae5ecbc72e8c.jpg",previewURL:"https://cdn.beatsaver.com/125b07ebcc06fe9667e83fc2d6b9ae5ecbc72e8c.mp3"}],createdAt:"2018-12-20T01:21:47Z",updatedAt:"2018-12-20T01:21:47Z",lastPublishedAt:"2018-12-20T01:21:47Z"},{id:"6b55",name:"ABIS & Signal & Tasha Baxter - The Wall (Buunshin Remix)",description:"https://youtu.be/xEowRTlHvuI",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:172,duration:271,songName:"The Wall",songSubName:"(Buunshin Remix)",songAuthorName:"ABIS & Signal & Tasha Baxter",levelAuthorName:"Rustic"},stats:{plays:0,downloads:8045,upvotes:4697,downvotes:61,score:.9491},uploaded:"2019-10-21T13:30:47.405Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e855d1a7b17904322aa3ebaf3bb002421bce568a",key:"6b55",state:"Published",createdAt:"2019-10-21T13:30:47.405Z",sageScore:6,diffs:[{njs:20,offset:0,notes:449,bombs:0,obstacles:9581,nps:1.828,length:704,characteristic:"Standard",difficulty:"Hard",events:7859,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:245.581,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:606,bombs:0,obstacles:9589,nps:2.468,length:704,characteristic:"Standard",difficulty:"Expert",events:7808,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:245.581,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e855d1a7b17904322aa3ebaf3bb002421bce568a.zip",coverURL:"https://cdn.beatsaver.com/e855d1a7b17904322aa3ebaf3bb002421bce568a.jpg",previewURL:"https://cdn.beatsaver.com/e855d1a7b17904322aa3ebaf3bb002421bce568a.mp3"}],createdAt:"2019-10-21T13:30:47.405Z",updatedAt:"2019-10-21T13:30:47.405Z",lastPublishedAt:"2019-10-21T13:30:47.405Z"},{id:"5e81",name:"Stressed Out - Twenty One Pilots",description:'"Stressed Out" is a song by American musical duo Twenty One Pilots, for their fourth studio album, Blurryface. Written by Tyler Joseph and produced by Mike Elizondo, the lyrics discuss the harsh end of adolescence and the transition to adulthood.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:170,duration:203,songName:"Stressed Out",songSubName:"",songAuthorName:"Twenty One Pilots",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:18746,upvotes:6062,downvotes:98,score:.9491},uploaded:"2019-08-22T14:20:38.731Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"068a80d89857a6a2221f54e8a5d374584b2db77e",key:"5e81",state:"Published",createdAt:"2019-08-22T14:20:38.731Z",sageScore:6,diffs:[{njs:14,offset:0,notes:651,bombs:0,obstacles:42,nps:3.282,length:562,characteristic:"Standard",difficulty:"Expert",events:1670,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.353,paritySummary:{errors:69,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/068a80d89857a6a2221f54e8a5d374584b2db77e.zip",coverURL:"https://cdn.beatsaver.com/068a80d89857a6a2221f54e8a5d374584b2db77e.jpg",previewURL:"https://cdn.beatsaver.com/068a80d89857a6a2221f54e8a5d374584b2db77e.mp3"}],createdAt:"2019-08-22T14:20:38.731Z",updatedAt:"2019-08-22T14:20:38.731Z",lastPublishedAt:"2019-08-22T14:20:38.731Z"},{id:"5552",name:"It's Tricky - Run DMC",description:"\"It's Tricky\" is the fourth and final single released from Run-DMC's third album, Raising Hell which was released early in 1987. \n\nThis is one of favorite workout songs, can't believe I haven't mapped it yet :P",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:128,duration:184,songName:"It's Tricky",songSubName:"",songAuthorName:"Run DMC",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:13372,upvotes:4472,downvotes:56,score:.9489},uploaded:"2019-07-02T17:23:10.798Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9027d4274febf8722078a5f70b51da58cf433322",key:"5552",state:"Published",createdAt:"2019-07-02T17:23:10.798Z",sageScore:6,diffs:[{njs:14,offset:0,notes:721,bombs:0,obstacles:8,nps:3.998,length:384.688,characteristic:"Standard",difficulty:"Expert",events:3029,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.322,paritySummary:{errors:34,warns:36,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9027d4274febf8722078a5f70b51da58cf433322.zip",coverURL:"https://cdn.beatsaver.com/9027d4274febf8722078a5f70b51da58cf433322.jpg",previewURL:"https://cdn.beatsaver.com/9027d4274febf8722078a5f70b51da58cf433322.mp3"}],createdAt:"2019-07-02T17:23:10.798Z",updatedAt:"2019-07-02T17:23:10.798Z",lastPublishedAt:"2019-07-02T17:23:10.798Z"},{id:"3038",name:"Moves Like Jagger - Maroon 5 ft. Christina Aguilera",description:"See it in Action: https://www.youtube.com/watch?v=buZypCnR1r8",uploader:{id:38202,name:"fafurion",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f945",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f945?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:204,songName:"Moves Like Jagger",songSubName:"Maroon 5 ft. Christina Aguilera",songAuthorName:"Fafurion",levelAuthorName:"fafurion"},stats:{plays:0,downloads:24035,upvotes:7173,downvotes:137,score:.9482},uploaded:"2019-01-23T00:01:22Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6f5e229b8ec73c9e448c00a680548b0ce25918ee",key:"3038",state:"Published",createdAt:"2019-01-23T00:01:22Z",sageScore:5,diffs:[{njs:10,offset:0,notes:297,bombs:0,obstacles:88,nps:1.547,length:409.5,characteristic:"Standard",difficulty:"Easy",events:2966,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.953,paritySummary:{errors:21,warns:30,resets:0}},{njs:10,offset:0,notes:343,bombs:0,obstacles:88,nps:1.787,length:409.5,characteristic:"Standard",difficulty:"Normal",events:2966,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.953,paritySummary:{errors:29,warns:33,resets:0}},{njs:12,offset:0,notes:524,bombs:0,obstacles:125,nps:2.73,length:409.5,characteristic:"Standard",difficulty:"Hard",events:2966,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.953,paritySummary:{errors:40,warns:62,resets:0}},{njs:12,offset:0,notes:695,bombs:0,obstacles:100,nps:3.621,length:409.5,characteristic:"Standard",difficulty:"Expert",events:2966,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.953,paritySummary:{errors:81,warns:108,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6f5e229b8ec73c9e448c00a680548b0ce25918ee.zip",coverURL:"https://cdn.beatsaver.com/6f5e229b8ec73c9e448c00a680548b0ce25918ee.jpg",previewURL:"https://cdn.beatsaver.com/6f5e229b8ec73c9e448c00a680548b0ce25918ee.mp3"}],createdAt:"2019-01-23T00:01:22Z",updatedAt:"2019-01-23T00:01:22Z",lastPublishedAt:"2019-01-23T00:01:22Z"},{id:"bd3",name:"New Rules - Dua Lipa",description:"Difficulties: Expert+, Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/Ohq6cA_1NAE\r\nLighting by Heisenberg: https://beatsaver.com/index.php/browse/byuser/1089",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:116,duration:211,songName:"New Rules",songSubName:"Dua Lipa",songAuthorName:"BennyDaBeast (Lighting: Heisenberg)",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:18879,upvotes:7509,downvotes:149,score:.948},uploaded:"2018-07-25T20:53:52Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"674b1b540ac5851c92c8cde7dd456698f5a733c4",key:"bd3",state:"Published",createdAt:"2018-07-25T20:53:52Z",sageScore:4,diffs:[{njs:10,offset:0,notes:423,bombs:0,obstacles:7,nps:2.055,length:398,characteristic:"Standard",difficulty:"Normal",events:2753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.862,paritySummary:{errors:81,warns:58,resets:0}},{njs:10,offset:0,notes:507,bombs:0,obstacles:32,nps:2.463,length:398,characteristic:"Standard",difficulty:"Hard",events:2753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.862,paritySummary:{errors:73,warns:67,resets:0}},{njs:10,offset:0,notes:771,bombs:0,obstacles:32,nps:3.745,length:398.003,characteristic:"Standard",difficulty:"Expert",events:2753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.863,paritySummary:{errors:95,warns:124,resets:0}},{njs:10,offset:0,notes:873,bombs:0,obstacles:32,nps:4.241,length:398,characteristic:"Standard",difficulty:"ExpertPlus",events:2753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.862,paritySummary:{errors:103,warns:146,resets:0}}],downloadURL:"https://cdn.beatsaver.com/674b1b540ac5851c92c8cde7dd456698f5a733c4.zip",coverURL:"https://cdn.beatsaver.com/674b1b540ac5851c92c8cde7dd456698f5a733c4.jpg",previewURL:"https://cdn.beatsaver.com/674b1b540ac5851c92c8cde7dd456698f5a733c4.mp3"}],createdAt:"2018-07-25T20:53:52Z",updatedAt:"2018-07-25T20:53:52Z",lastPublishedAt:"2018-07-25T20:53:52Z"},{id:"6d96",name:"League of Legends - Phoenix (ft. Cailin Russo and Chrissy Costanza)",description:"The Worlds 2019 theme for League of Legends.\nVideo: https://youtu.be/aUTcwyZ9LmI\nExpert+ Video: https://www.youtube.com/watch?v=-uh4WOhZmQs\n\nEasy: Notes: 245 NPS: 1.23 NJS: 12\nNormal: Notes: 307 NPS: 1.54 NJS: 14\nHard: Notes: 428 NPS: 2.15 NJS: 16\nExpert: Notes: 504 NPS: 2.53 NJS: 16\nExpert+: Notes: 664 NPS: 3.33 NJS: 17\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:168,duration:199,songName:"Phoenix",songSubName:"ft. Cailin Russo and Chrissy Costanza",songAuthorName:"League of Legends",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:15278,upvotes:6407,downvotes:122,score:.9471},uploaded:"2019-11-02T00:52:14.279Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1fd9078f4b357143390a8d24664736f78b4224a9",key:"6d96",state:"Published",createdAt:"2019-11-02T00:52:14.279Z",sageScore:6,diffs:[{njs:12,offset:0,notes:245,bombs:0,obstacles:20,nps:1.376,length:498.5,characteristic:"Standard",difficulty:"Easy",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.036,paritySummary:{errors:11,warns:1,resets:0}},{njs:14,offset:1.25,notes:307,bombs:0,obstacles:21,nps:1.724,length:498.5,characteristic:"Standard",difficulty:"Normal",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.036,paritySummary:{errors:7,warns:0,resets:0}},{njs:16,offset:.75,notes:428,bombs:0,obstacles:25,nps:2.404,length:498.5,characteristic:"Standard",difficulty:"Hard",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.036,paritySummary:{errors:2,warns:0,resets:0}},{njs:16,offset:.25,notes:504,bombs:0,obstacles:20,nps:2.828,length:499,characteristic:"Standard",difficulty:"Expert",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.214,paritySummary:{errors:1,warns:1,resets:0}},{njs:17,offset:0,notes:664,bombs:0,obstacles:92,nps:3.525,length:527.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.393,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1fd9078f4b357143390a8d24664736f78b4224a9.zip",coverURL:"https://cdn.beatsaver.com/1fd9078f4b357143390a8d24664736f78b4224a9.jpg",previewURL:"https://cdn.beatsaver.com/1fd9078f4b357143390a8d24664736f78b4224a9.mp3"}],createdAt:"2019-11-02T00:52:14.279Z",updatedAt:"2019-11-02T00:52:14.279Z",lastPublishedAt:"2019-11-02T00:52:14.279Z"},{id:"6366",name:"Star Sky - Two Steps From Hell",description:"68\nNormal wall --- 43 walls\nHyper wall --- 6631 walls\n\ndoodle :)",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:130,duration:330,songName:"Star Sky Two Steps From Hell",songSubName:"",songAuthorName:".",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:9471,upvotes:3452,downvotes:43,score:.9459},uploaded:"2019-09-14T19:59:45.575Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"323975ef9eaec337c8208dc864e766289e3d5ef1",key:"6366",state:"Published",createdAt:"2019-09-14T19:59:45.575Z",sageScore:5,diffs:[{njs:16,offset:0,notes:1218,bombs:0,obstacles:43,nps:3.754,length:703,characteristic:"Standard",difficulty:"Hard",events:1044,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:324.462,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1218,bombs:0,obstacles:6631,nps:3.754,length:703,characteristic:"Standard",difficulty:"Expert",events:1044,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:324.462,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/323975ef9eaec337c8208dc864e766289e3d5ef1.zip",coverURL:"https://cdn.beatsaver.com/323975ef9eaec337c8208dc864e766289e3d5ef1.jpg",previewURL:"https://cdn.beatsaver.com/323975ef9eaec337c8208dc864e766289e3d5ef1.mp3"}],createdAt:"2019-09-14T19:59:45.575Z",updatedAt:"2019-09-14T19:59:45.575Z",lastPublishedAt:"2019-09-14T19:59:45.575Z"},{id:"2005",name:"New Divide - Linkin Park - 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!\nhttps://www.youtube.com/watch?v=deWMNAw03QI&t=28s\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:118,duration:268,songName:"New Divide",songSubName:"Linkin Park",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:16063,upvotes:4873,downvotes:83,score:.9459},uploaded:"2018-11-13T00:58:32Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"be4a33ad1b1caef9f1f42b680ca1a9087db19ffe",key:"2005",state:"Published",createdAt:"2018-11-13T00:58:32Z",sageScore:6,diffs:[{njs:13,offset:0,notes:353,bombs:0,obstacles:78,nps:1.363,length:509.5,characteristic:"Standard",difficulty:"Easy",events:2605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.068,paritySummary:{errors:29,warns:1,resets:0}},{njs:13,offset:0,notes:589,bombs:0,obstacles:18,nps:2.269,length:510.5,characteristic:"Standard",difficulty:"Normal",events:2605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.576,paritySummary:{errors:12,warns:6,resets:0}},{njs:13,offset:0,notes:893,bombs:0,obstacles:13,nps:3.44,length:510.5,characteristic:"Standard",difficulty:"Hard",events:2605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.576,paritySummary:{errors:16,warns:24,resets:0}},{njs:13,offset:0,notes:1167,bombs:0,obstacles:25,nps:4.496,length:510.5,characteristic:"Standard",difficulty:"Expert",events:2605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.576,paritySummary:{errors:38,warns:48,resets:0}}],downloadURL:"https://cdn.beatsaver.com/be4a33ad1b1caef9f1f42b680ca1a9087db19ffe.zip",coverURL:"https://cdn.beatsaver.com/be4a33ad1b1caef9f1f42b680ca1a9087db19ffe.jpg",previewURL:"https://cdn.beatsaver.com/be4a33ad1b1caef9f1f42b680ca1a9087db19ffe.mp3"}],createdAt:"2018-11-13T00:58:32Z",updatedAt:"2018-11-13T00:58:32Z",lastPublishedAt:"2018-11-13T00:58:32Z"},{id:"d7fa",name:"Geoxor - Gloom [Wallmap]",description:"REUPLOAD due to last minute mapping error\n\nSpecial thanks to:\nNyri0 - For providing scripts that were crucial to making this map possible, and for helping me along the way.\nLayanmeta - For giving me so much encouragement throughout the final stages and making a brilliant YouTube video on this map.\nBSMG discord - For the continued support throughout the development process\nAll you people/birds - For playing my map :D\n\nBRIAN HAS BECOME SENTIENT. ALL HAIL BRIAN",uploader:{id:18761,name:"minething",uniqueSet:!0,hash:"5e9b4ead16c9680006287387",avatar:"https://www.gravatar.com/avatar/5e9b4ead16c9680006287387?d=retro",type:"SIMPLE"},metadata:{bpm:93,duration:167,songName:"Gloom",songSubName:"",songAuthorName:"Geoxor",levelAuthorName:"Mine Thing"},stats:{plays:0,downloads:8341,upvotes:2314,downvotes:15,score:.9457},uploaded:"2020-08-16T19:13:40.774Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"823b4e880baac024728ae96a7c20e28026c4585d",key:"d7fa",state:"Published",createdAt:"2020-08-16T19:13:40.774Z",sageScore:3,diffs:[{njs:12,offset:6,notes:0,bombs:0,obstacles:15605,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:144,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:6,notes:202,bombs:0,obstacles:15605,nps:1.309,length:239.125,characteristic:"Standard",difficulty:"Hard",events:144,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:154.274,paritySummary:{errors:48,warns:6,resets:0}},{njs:12,offset:6,notes:411,bombs:4,obstacles:15605,nps:2.665,length:239,characteristic:"Standard",difficulty:"Expert",events:144,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:154.194,paritySummary:{errors:0,warns:0,resets:1}},{njs:12,offset:3,notes:411,bombs:4,obstacles:12340,nps:2.665,length:239,characteristic:"Standard",difficulty:"ExpertPlus",events:144,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:154.194,paritySummary:{errors:0,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/823b4e880baac024728ae96a7c20e28026c4585d.zip",coverURL:"https://cdn.beatsaver.com/823b4e880baac024728ae96a7c20e28026c4585d.jpg",previewURL:"https://cdn.beatsaver.com/823b4e880baac024728ae96a7c20e28026c4585d.mp3"}],createdAt:"2020-08-16T19:13:40.774Z",updatedAt:"2020-08-16T19:13:40.774Z",lastPublishedAt:"2020-08-16T19:13:40.774Z"},{id:"116b0",name:"Sakuzyo - Lost Memory[Wall Map]",description:"https://www.youtube.com/watch?v=Ha0199UiDUQ\nMy first noodle extensions map\nMay cause performance issue :)\nRequirements:Noodle Extensions,Chroma",uploader:{id:4289114,name:"waika",uniqueSet:!0,hash:"5cff0b7698cc5a672c85464f",avatar:"https://cdn.beatsaver.com/avatar/530663167244894220.png",type:"DISCORD"},metadata:{bpm:95,duration:255,songName:"Lost Memory",songSubName:"",songAuthorName:"Sakuzyo",levelAuthorName:"waika"},stats:{plays:0,downloads:9091,upvotes:3250,downvotes:39,score:.9455},uploaded:"2020-11-28T11:08:12.961Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1a88eee7cb1962157cc2439741fb06f7f78180d4",key:"116b0",state:"Published",createdAt:"2020-11-28T11:08:12.961Z",sageScore:3,diffs:[{njs:17,offset:.5,notes:0,bombs:0,obstacles:57070,nps:0,length:0,characteristic:"Standard",difficulty:"Normal",events:230,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:.5,notes:506,bombs:0,obstacles:57070,nps:2.36,length:339.5,characteristic:"Standard",difficulty:"Expert",events:230,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:214.421,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1a88eee7cb1962157cc2439741fb06f7f78180d4.zip",coverURL:"https://cdn.beatsaver.com/1a88eee7cb1962157cc2439741fb06f7f78180d4.jpg",previewURL:"https://cdn.beatsaver.com/1a88eee7cb1962157cc2439741fb06f7f78180d4.mp3"}],createdAt:"2020-11-28T11:08:12.961Z",updatedAt:"2020-11-28T11:08:12.961Z",lastPublishedAt:"2020-11-28T11:08:12.961Z"},{id:"9a0c",name:"Thnks fr th Mmrs - Fall Out Boy",description:"Thnks fr th Mmrs (or Thanks for the Memories) from Fall Out Boy.\nSo far the map that I have put the most work into (and which probably made me age by 3 years). Hope you enjoy it!\n\nThe map has Chroma lighting but can also be played without the Chroma mod.\nExpert+ contains single saber sections and polyrhythm parts. Just so you are warned ;)\n\nBig thanks to Sorukun for playtesting this map and especially to Timeweaver for pointing out all issues it had during its creation!",uploader:{id:21367,name:"hamsta",uniqueSet:!0,hash:"5de27451fffaa600066f2842",avatar:"https://www.gravatar.com/avatar/5de27451fffaa600066f2842?d=retro",type:"SIMPLE"},metadata:{bpm:155,duration:197,songName:"Thnks fr th Mmrs",songSubName:"",songAuthorName:"Fall Out Boy",levelAuthorName:"Hamsta"},stats:{plays:0,downloads:14444,upvotes:4054,downvotes:62,score:.9453},uploaded:"2020-04-12T09:50:46.516Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0e8ef3006db854c67f04fe72322bccea410f69ee",key:"9a0c",state:"Published",createdAt:"2020-04-12T09:50:46.516Z",sageScore:5,diffs:[{njs:14,offset:0,notes:580,bombs:0,obstacles:51,nps:3.092,length:484,characteristic:"Standard",difficulty:"Hard",events:2597,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:187.355,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:637,bombs:0,obstacles:51,nps:3.395,length:484,characteristic:"Standard",difficulty:"Expert",events:2597,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:187.355,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:844,bombs:0,obstacles:39,nps:4.499,length:484,characteristic:"Standard",difficulty:"ExpertPlus",events:2597,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:187.355,paritySummary:{errors:1,warns:2,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0e8ef3006db854c67f04fe72322bccea410f69ee.zip",coverURL:"https://cdn.beatsaver.com/0e8ef3006db854c67f04fe72322bccea410f69ee.jpg",previewURL:"https://cdn.beatsaver.com/0e8ef3006db854c67f04fe72322bccea410f69ee.mp3"}],createdAt:"2020-04-12T09:50:46.516Z",updatedAt:"2020-04-12T09:50:46.516Z",lastPublishedAt:"2020-04-12T09:50:46.516Z"},{id:"4980",name:"Paradise - Coldplay",description:"\"Paradise\" is a song by the British rock band Coldplay. The song was released on 12 September 2011. I kinda like this song for relaxing on long car rides and I don't know how it will feel as a beat saber map but I'ma try mapping it anyways. So here it is :)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:70,duration:278,songName:"Paradise",songSubName:"Coldplay",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:12627,upvotes:2893,downvotes:31,score:.9451},uploaded:"2019-04-30T05:45:51Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b14639af36673a43fe32bc7563619deff438d438",key:"4980",state:"Published",createdAt:"2019-04-30T05:45:51Z",sageScore:6,diffs:[{njs:13,offset:0,notes:1023,bombs:0,obstacles:35,nps:3.816,length:312.75,characteristic:"Standard",difficulty:"Expert",events:4651,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.071,paritySummary:{errors:28,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b14639af36673a43fe32bc7563619deff438d438.zip",coverURL:"https://cdn.beatsaver.com/b14639af36673a43fe32bc7563619deff438d438.jpg",previewURL:"https://cdn.beatsaver.com/b14639af36673a43fe32bc7563619deff438d438.mp3"}],createdAt:"2019-04-30T05:45:51Z",updatedAt:"2019-04-30T05:45:51Z",lastPublishedAt:"2019-04-30T05:45:51Z"},{id:"efe",name:"Some Nights - Fun.",description:"Difficulties: Expert+, Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/X4R7VIZPffk",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:108,duration:255,songName:"Some Nights",songSubName:"Fun.",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:15367,upvotes:7399,downvotes:170,score:.9451},uploaded:"2018-08-10T20:34:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e64d6b7c5527d36005ae1801268798dd21ccf605",key:"efe",state:"Published",createdAt:"2018-08-10T20:34:09Z",sageScore:4,diffs:[{njs:10,offset:0,notes:321,bombs:0,obstacles:14,nps:1.382,length:418,characteristic:"Standard",difficulty:"Normal",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.222,paritySummary:{errors:73,warns:36,resets:0}},{njs:10,offset:0,notes:432,bombs:0,obstacles:14,nps:1.86,length:418,characteristic:"Standard",difficulty:"Hard",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.222,paritySummary:{errors:82,warns:51,resets:0}},{njs:10,offset:0,notes:680,bombs:0,obstacles:14,nps:2.928,length:418,characteristic:"Standard",difficulty:"Expert",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.222,paritySummary:{errors:86,warns:82,resets:0}},{njs:10,offset:0,notes:810,bombs:0,obstacles:14,nps:3.488,length:418,characteristic:"Standard",difficulty:"ExpertPlus",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.222,paritySummary:{errors:108,warns:106,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e64d6b7c5527d36005ae1801268798dd21ccf605.zip",coverURL:"https://cdn.beatsaver.com/e64d6b7c5527d36005ae1801268798dd21ccf605.jpg",previewURL:"https://cdn.beatsaver.com/e64d6b7c5527d36005ae1801268798dd21ccf605.mp3"}],createdAt:"2018-08-10T20:34:09Z",updatedAt:"2018-08-10T20:34:09Z",lastPublishedAt:"2018-08-10T20:34:09Z"},{id:"14d64",name:"Try - MitiS Feat. RORY",description:"Twenty-Sixth Upload\n\nThis map means the whole world to me, so I hope everyone enjoys this map. My father passed away on Jan. 23, 2021, in the middle of making this map. I am dedicating this map for him because of how much this songs means to me now. \nPouring my heart and soul into this map took a lot out of me, making it as perfect to my little abilities I have for mapping.\n\nBig shout outs to Lonely and Jamman for lighting this beautiful song and for agreeing to light it, it means the world to me.\nBig shout outs to thelightdesigner for making such amazing and beautiful walls. Thank you for taking the time to make this, it means the world to me.\nBig shout outs to Mawntee for giving me advice on how to make this map feel and shout outs to thelitlewiseowl for modding it, showing me what I can improve in this map. \nBiggest shout outs to everyone that play tested it multiple times. I am sorry for bugging them for multiple play test. \n\nAnd Biggest shoutout to my favorite chillstep/melodic dubstep artist, MitiS and Rory for making this beautiful song. \nYou have no idea how much this song means to me, I thank you so much. Keep up the good work MitiS.\n\n**NOODLES AND CHROMA REQUIRED**\n\nI hope this map can show you the feeling in this song, as well as what it portrays. I tried my best, I hope it turns out great and everyone enjoys it. \nThank you everyone for taking the time to download and play this map. I appreciate it everyone.\n\nFeedback is always welcome!",uploader:{id:4285346,name:"remie",uniqueSet:!0,hash:"5f6efd989824150006d740ac",avatar:"https://cdn.beatsaver.com/avatar/144275927466115073.png",type:"DISCORD"},metadata:{bpm:132,duration:273,songName:"Try",songSubName:"",songAuthorName:"MitiS Feat. RORY",levelAuthorName:"Remie & Lone"},stats:{plays:0,downloads:7511,upvotes:2884,downvotes:31,score:.945},uploaded:"2021-03-01T13:29:26.471Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6db3d9da217b41607d250aa7a28c5dc26a082188",key:"14d64",state:"Published",createdAt:"2021-03-01T13:29:26.471Z",sageScore:3,diffs:[{njs:17,offset:-.7,notes:1447,bombs:21,obstacles:17451,nps:6.217,length:512.083,characteristic:"Standard",difficulty:"ExpertPlus",events:36825,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:232.765,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/6db3d9da217b41607d250aa7a28c5dc26a082188.zip",coverURL:"https://cdn.beatsaver.com/6db3d9da217b41607d250aa7a28c5dc26a082188.jpg",previewURL:"https://cdn.beatsaver.com/6db3d9da217b41607d250aa7a28c5dc26a082188.mp3"}],createdAt:"2021-03-01T13:29:26.471Z",updatedAt:"2021-03-01T13:29:26.471Z",lastPublishedAt:"2021-03-01T13:29:26.471Z"},{id:"3b84",name:"Revenge [DJ Got Us Fallin In Love Minecraft Parody] - CaptainSparklez ft. TryHardNinja",description:"Revenge is a Minecraft parody song of DJ Got Us Fallin In Love by CaptainSparklez featuring vocals from TryHardNinja. Slight remap of DJ Got Us Fallin In Love.\r\n\r\nDamn, this song brings me back memories of the golden age of Minecraft.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:120,duration:222,songName:"Revenge",songSubName:"CaptainSparklez ft. TryHardNinja",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:13421,upvotes:7001,downvotes:157,score:.945},uploaded:"2019-03-04T17:01:53Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7ac4d99cee16e8d0437d7e8feecdb12488cc27d3",key:"3b84",state:"Published",createdAt:"2019-03-04T17:01:53Z",sageScore:5,diffs:[{njs:14,offset:0,notes:858,bombs:0,obstacles:1,nps:3.972,length:432,characteristic:"Standard",difficulty:"Expert",events:1675,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216,paritySummary:{errors:80,warns:85,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7ac4d99cee16e8d0437d7e8feecdb12488cc27d3.zip",coverURL:"https://cdn.beatsaver.com/7ac4d99cee16e8d0437d7e8feecdb12488cc27d3.jpg",previewURL:"https://cdn.beatsaver.com/7ac4d99cee16e8d0437d7e8feecdb12488cc27d3.mp3"}],createdAt:"2019-03-04T17:01:53Z",updatedAt:"2019-03-04T17:01:53Z",lastPublishedAt:"2019-03-04T17:01:53Z"},{id:"b7aa",name:"Powerwolf - Venom of Venus",description:"Back to my more regular style, Powerwolf is a power-metal band that perform around the themes of werewolves and religion, a strange but interesting mixture.\r\n\r\nEx+ has a no-colours mode for those who wish to play without the custom block colours, but unfortunately I can't fit such an option for all difficulties.\r\n\r\nNormal 1.85 NPS\r\nHard 3.15 NPS\r\nExpert 4.43 NPS\r\nExpert+ 5.11 NPS\r\n\r\nThere is no easy difficulty, as that I needed the slot for the no-colour mode.",uploader:{id:4285369,name:"Cyrix",uniqueSet:!0,hash:"5eb6eb9a7abb000006c85add",avatar:"https://cdn.beatsaver.com/avatar/167730807929044992.png",type:"DISCORD"},metadata:{bpm:164,duration:210,songName:"Venom of Venus",songSubName:"",songAuthorName:"Powerwolf",levelAuthorName:"Cyrix"},stats:{plays:0,downloads:8465,upvotes:2864,downvotes:31,score:.9449},uploaded:"2020-06-29T18:24:10.081Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f88b43c770dcd85a4ba18368853fbf062d41a09c",key:"b7aa",state:"Published",createdAt:"2020-06-29T18:24:10.081Z",sageScore:7,diffs:[{njs:12,offset:.5,notes:392,bombs:0,obstacles:63,nps:1.948,length:549.938,characteristic:"Standard",difficulty:"Easy",events:4188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.197,paritySummary:{errors:44,warns:15,resets:0}},{njs:13,offset:1,notes:666,bombs:8,obstacles:36,nps:3.31,length:549.938,characteristic:"Standard",difficulty:"Normal",events:4188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.197,paritySummary:{errors:1,warns:0,resets:1}},{njs:17,offset:0,notes:934,bombs:9,obstacles:7,nps:4.642,length:549.938,characteristic:"Standard",difficulty:"Hard",events:4188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.197,paritySummary:{errors:0,warns:0,resets:2}},{njs:20,offset:-.25,notes:1079,bombs:4,obstacles:7,nps:5.353,length:551,characteristic:"Standard",difficulty:"Expert",events:4192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.585,paritySummary:{errors:1,warns:0,resets:2}},{njs:20,offset:-.25,notes:1079,bombs:4,obstacles:7,nps:5.353,length:551,characteristic:"Standard",difficulty:"ExpertPlus",events:4192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.585,paritySummary:{errors:1,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/f88b43c770dcd85a4ba18368853fbf062d41a09c.zip",coverURL:"https://cdn.beatsaver.com/f88b43c770dcd85a4ba18368853fbf062d41a09c.jpg",previewURL:"https://cdn.beatsaver.com/f88b43c770dcd85a4ba18368853fbf062d41a09c.mp3"}],createdAt:"2020-06-29T18:24:10.081Z",updatedAt:"2020-06-29T18:24:10.081Z",lastPublishedAt:"2020-06-29T18:24:10.081Z"},{id:"fd",name:"Rasputin - Boney M",description:"Expert\r\n127 bpm",uploader:{id:48512,name:"jobas",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9a2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9a2?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:266,songName:"Rasputin-Boney M",songSubName:"",songAuthorName:"Jobas",levelAuthorName:"jobas"},stats:{plays:0,downloads:22705,upvotes:8696,downvotes:218,score:.9448},uploaded:"2018-05-18T23:27:59Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bf2f5afaeae0767c9bd6944ce74a23f6b24f4098",key:"fd",state:"Published",createdAt:"2018-05-18T23:27:59Z",sageScore:4,diffs:[{njs:10,offset:0,notes:701,bombs:0,obstacles:124,nps:2.699,length:549.844,characteristic:"Standard",difficulty:"Hard",events:0,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.769,paritySummary:{errors:29,warns:158,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bf2f5afaeae0767c9bd6944ce74a23f6b24f4098.zip",coverURL:"https://cdn.beatsaver.com/bf2f5afaeae0767c9bd6944ce74a23f6b24f4098.jpg",previewURL:"https://cdn.beatsaver.com/bf2f5afaeae0767c9bd6944ce74a23f6b24f4098.mp3"}],createdAt:"2018-05-18T23:27:59Z",updatedAt:"2018-05-18T23:27:59Z",lastPublishedAt:"2018-05-18T23:27:59Z"},{id:"74d5",name:"What's New, Scooby-Doo? - Simple Plan",description:"Just practicing my mapping with this song\n\nalso, my childhood nostalgia\nEDIT: forgot to set NJS",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:158.03,duration:67,songName:"What's New, Scooby-Doo?",songSubName:"",songAuthorName:"Simple Plan",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:10991,upvotes:3468,downvotes:48,score:.9447},uploaded:"2019-12-08T18:41:10.652Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e004f84ffebded94e761d667db6aaa44f000a8a8",key:"74d5",state:"Published",createdAt:"2019-12-08T18:41:10.652Z",sageScore:2,diffs:[{njs:15,offset:0,notes:330,bombs:2,obstacles:0,nps:5.226,length:166.313,characteristic:"Standard",difficulty:"Expert",events:382,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:63.145,paritySummary:{errors:9,warns:7,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e004f84ffebded94e761d667db6aaa44f000a8a8.zip",coverURL:"https://cdn.beatsaver.com/e004f84ffebded94e761d667db6aaa44f000a8a8.jpg",previewURL:"https://cdn.beatsaver.com/e004f84ffebded94e761d667db6aaa44f000a8a8.mp3"}],createdAt:"2019-12-08T18:41:10.652Z",updatedAt:"2019-12-08T18:41:10.652Z",lastPublishedAt:"2019-12-08T18:41:10.652Z"},{id:"a438",name:"Wait - M83 (wall map)",description:"I wanted to do something special for this great song, and also see the potential of Noodle Extensions. A few tips for a better experience:\r\n- disable the mirror effect in the game settings\r\n- turn the SFX volume down in the player settings\r\n- hide the HUD in the player settings\r\n\r\nVideo: https://youtu.be/oe6ThhijPy0\r\n\r\nThe map has a lot of walls, so you might not be able to run it on the lower-end hardware. I've included a version with less walls in case it helps.",uploader:{id:4288814,name:"nyri0",uniqueSet:!0,hash:"5e792df416c9680006086a78",avatar:"https://cdn.beatsaver.com/avatar/396715033125584907.png",type:"DISCORD"},metadata:{bpm:148,duration:336,songName:"Wait",songSubName:"",songAuthorName:"M83",levelAuthorName:"nyri0"},stats:{plays:0,downloads:6655,upvotes:2103,downvotes:14,score:.9442},uploaded:"2020-05-08T23:53:02.030Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0d8921ef06a889cbd9db13afcc43f09a1619b173",key:"a438",state:"Published",createdAt:"2020-05-08T23:53:02.030Z",sageScore:6,diffs:[{njs:8,offset:6,notes:735,bombs:0,obstacles:6684,nps:2.225,length:815,characteristic:"Standard",difficulty:"Easy",events:5,chroma:!1,me:!1,ne:!0,cinema:!1,seconds:330.405,paritySummary:{errors:94,warns:27,resets:0}},{njs:8,offset:6,notes:735,bombs:0,obstacles:10499,nps:2.225,length:815,characteristic:"Standard",difficulty:"Hard",events:5,chroma:!1,me:!1,ne:!0,cinema:!1,seconds:330.405,paritySummary:{errors:94,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0d8921ef06a889cbd9db13afcc43f09a1619b173.zip",coverURL:"https://cdn.beatsaver.com/0d8921ef06a889cbd9db13afcc43f09a1619b173.jpg",previewURL:"https://cdn.beatsaver.com/0d8921ef06a889cbd9db13afcc43f09a1619b173.mp3"}],createdAt:"2020-05-08T23:53:02.030Z",updatedAt:"2020-05-08T23:53:02.030Z",lastPublishedAt:"2020-05-08T23:53:02.030Z"},{id:"4a35",name:"[Anniversary] Animals (Radio Edit) - Martin Garrix [Joetastic & StyngMe]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:176,songName:"Animals (Radio Edit)",songSubName:"Martin Garrix",songAuthorName:"Joetastic & StyngMe",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:14718,upvotes:7734,downvotes:189,score:.9442},uploaded:"2019-05-03T14:08:02Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1a1737caba0f049a69369e328622e06b2a32b634",key:"4a35",state:"Published",createdAt:"2019-05-03T14:08:02Z",sageScore:8,diffs:[{njs:10,offset:0,notes:272,bombs:0,obstacles:19,nps:1.612,length:360,characteristic:"Standard",difficulty:"Easy",events:2074,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.75,paritySummary:{errors:32,warns:22,resets:0}},{njs:12,offset:0,notes:350,bombs:0,obstacles:22,nps:2.08,length:359,characteristic:"Standard",difficulty:"Normal",events:2074,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.281,paritySummary:{errors:34,warns:27,resets:0}},{njs:14,offset:0,notes:436,bombs:6,obstacles:22,nps:2.584,length:360,characteristic:"Standard",difficulty:"Hard",events:2074,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.75,paritySummary:{errors:29,warns:31,resets:4}},{njs:15,offset:0,notes:675,bombs:4,obstacles:22,nps:4,length:360,characteristic:"Standard",difficulty:"Expert",events:2074,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.75,paritySummary:{errors:26,warns:34,resets:1}},{njs:16,offset:0,notes:738,bombs:0,obstacles:21,nps:4.373,length:360,characteristic:"Standard",difficulty:"ExpertPlus",events:2038,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.75,paritySummary:{errors:46,warns:40,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1a1737caba0f049a69369e328622e06b2a32b634.zip",coverURL:"https://cdn.beatsaver.com/1a1737caba0f049a69369e328622e06b2a32b634.jpg",previewURL:"https://cdn.beatsaver.com/1a1737caba0f049a69369e328622e06b2a32b634.mp3"}],createdAt:"2019-05-03T14:08:02Z",updatedAt:"2019-05-03T14:08:02Z",lastPublishedAt:"2019-05-03T14:08:02Z"},{id:"5038",name:"Uptown Funk - Mark Ronson",description:"5/31: This version now works for the Oculus Quest.\r\n\r\nDifficulties: Expert and Hard\r\nYouTube Link: https://youtu.be/6TYji_Klr9I",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:115,duration:271,songName:"Uptown Funk",songSubName:"Mark Ronson",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:21925,upvotes:9390,downvotes:251,score:.944},uploaded:"2019-05-31T17:58:39Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d110e413fb7fb462b692f1f17b835cf8b7280884",key:"5038",state:"Published",createdAt:"2019-05-31T17:58:39Z",sageScore:5,diffs:[{njs:10,offset:0,notes:639,bombs:0,obstacles:24,nps:2.397,length:511,characteristic:"Standard",difficulty:"Hard",events:786,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:266.609,paritySummary:{errors:115,warns:89,resets:0}},{njs:10,offset:0,notes:776,bombs:0,obstacles:24,nps:2.911,length:511,characteristic:"Standard",difficulty:"Expert",events:786,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:266.609,paritySummary:{errors:98,warns:111,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d110e413fb7fb462b692f1f17b835cf8b7280884.zip",coverURL:"https://cdn.beatsaver.com/d110e413fb7fb462b692f1f17b835cf8b7280884.jpg",previewURL:"https://cdn.beatsaver.com/d110e413fb7fb462b692f1f17b835cf8b7280884.mp3"}],createdAt:"2019-05-31T17:58:39Z",updatedAt:"2019-05-31T17:58:39Z",lastPublishedAt:"2019-05-31T17:58:39Z"},{id:"1c1",name:"Shia LaBeouf (Rob Cantor)",description:"Shia LaBeouf - Rob Cantor\r\nFinished Lighting\r\nDifficulties: Expert, Hard, Normal, Easy\r\nBPM: 96",uploader:{id:53184,name:"kleid",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ecd9",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ecd9?d=retro",type:"SIMPLE"},metadata:{bpm:96,duration:154,songName:"Shia LaBeouf",songSubName:"Rob Cantor",songAuthorName:"Kleid",levelAuthorName:"kleid"},stats:{plays:0,downloads:12103,upvotes:6574,downvotes:151,score:.9439},uploaded:"2018-05-23T00:42:28Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"1279a3fcaff31e767e5dd7d7c016ec08733cf566",key:"1c1",state:"Published",createdAt:"2018-05-23T00:42:28Z",sageScore:5,diffs:[{njs:10,offset:0,notes:266,bombs:0,obstacles:39,nps:1.891,length:225,characteristic:"Standard",difficulty:"Easy",events:379,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.625,paritySummary:{errors:36,warns:49,resets:0},stars:1.36},{njs:10,offset:0,notes:323,bombs:0,obstacles:44,nps:2.296,length:225,characteristic:"Standard",difficulty:"Normal",events:379,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.625,paritySummary:{errors:59,warns:46,resets:0},stars:1.65},{njs:10,offset:0,notes:344,bombs:24,obstacles:44,nps:2.445,length:225,characteristic:"Standard",difficulty:"Hard",events:379,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.625,paritySummary:{errors:61,warns:48,resets:3},stars:1.73},{njs:10,offset:0,notes:378,bombs:28,obstacles:64,nps:2.687,length:225,characteristic:"Standard",difficulty:"Expert",events:379,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.625,paritySummary:{errors:69,warns:54,resets:3}}],downloadURL:"https://cdn.beatsaver.com/1279a3fcaff31e767e5dd7d7c016ec08733cf566.zip",coverURL:"https://cdn.beatsaver.com/1279a3fcaff31e767e5dd7d7c016ec08733cf566.jpg",previewURL:"https://cdn.beatsaver.com/1279a3fcaff31e767e5dd7d7c016ec08733cf566.mp3"}],createdAt:"2018-05-23T00:42:28Z",updatedAt:"2018-05-23T00:42:28Z",lastPublishedAt:"2018-05-23T00:42:28Z"},{id:"7a64",name:"Joey Batey - Toss A Coin To Your Witcher",description:"Expert+ Preview https://www.youtube.com/watch?v=AjfABhvswrI\n\nToss a Coin to Beat Saber!\n\nNetflix's The Witcher OST.\nOriginal Music by Sonya Belousova & Giona Ostinelli.\nLyrics by Jenny Klein, Sonya Belousova & Giona Ostinelli.\nPerformed by Joey Batey.\n\nThanks Sorukun for playtesting.",uploader:{id:4286200,name:"holair",uniqueSet:!0,hash:"5cff0b7698cc5a672c853af4",avatar:"https://cdn.beatsaver.com/avatar/176034748571844608.png",type:"DISCORD"},metadata:{bpm:105,duration:180,songName:"Toss A Coin To Your Witcher",songSubName:"Netflix's The Witcher",songAuthorName:"Joey Batey",levelAuthorName:"Holair"},stats:{plays:0,downloads:16196,upvotes:9958,downvotes:275,score:.9438},uploaded:"2019-12-28T20:11:35.767Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"19a733cf9202ef25725966d78f465bf87b26254d",key:"7a64",state:"Published",createdAt:"2019-12-28T20:11:35.767Z",sageScore:7,diffs:[{njs:10,offset:0,notes:175,bombs:0,obstacles:1,nps:1.008,length:303.743,characteristic:"Standard",difficulty:"Easy",events:814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.567,paritySummary:{errors:55,warns:12,resets:0}},{njs:10,offset:0,notes:322,bombs:0,obstacles:2,nps:1.855,length:303.743,characteristic:"Standard",difficulty:"Normal",events:814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.567,paritySummary:{errors:37,warns:21,resets:0}},{njs:12,offset:0,notes:459,bombs:0,obstacles:10,nps:2.645,length:303.743,characteristic:"Standard",difficulty:"Hard",events:814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.567,paritySummary:{errors:38,warns:16,resets:0}},{njs:14,offset:0,notes:578,bombs:0,obstacles:15,nps:3.33,length:303.743,characteristic:"Standard",difficulty:"Expert",events:1310,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.567,paritySummary:{errors:37,warns:40,resets:0}},{njs:14,offset:0,notes:580,bombs:0,obstacles:14,nps:3.342,length:303.74,characteristic:"Standard",difficulty:"ExpertPlus",events:1310,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.566,paritySummary:{errors:41,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/19a733cf9202ef25725966d78f465bf87b26254d.zip",coverURL:"https://cdn.beatsaver.com/19a733cf9202ef25725966d78f465bf87b26254d.jpg",previewURL:"https://cdn.beatsaver.com/19a733cf9202ef25725966d78f465bf87b26254d.mp3"}],createdAt:"2019-12-28T20:11:35.767Z",updatedAt:"2019-12-28T20:11:35.767Z",lastPublishedAt:"2019-12-28T20:11:35.767Z"},{id:"49f2",name:"It's My Life - Bon Jovi",description:"I might be a huge weeb but I still enjoy listening to 80s band: Bon Jovi. Here's one of their more modern songs from the 2000s: It's My Life! Mapping on this isn't too difficult, it's an slow rock song so not much I can map to anyways",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:120,duration:226,songName:"It's My Life",songSubName:"Bon Jovi",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:11924,upvotes:3179,downvotes:44,score:.9436},uploaded:"2019-05-02T14:08:00Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"172b9d6d206a3fb679426b2934daad3191b10ec7",key:"49f2",state:"Published",createdAt:"2019-05-02T14:08:00Z",sageScore:5,diffs:[{njs:12,offset:0,notes:684,bombs:0,obstacles:4,nps:3.081,length:444,characteristic:"Standard",difficulty:"Hard",events:1968,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222,paritySummary:{errors:13,warns:15,resets:0}}],downloadURL:"https://cdn.beatsaver.com/172b9d6d206a3fb679426b2934daad3191b10ec7.zip",coverURL:"https://cdn.beatsaver.com/172b9d6d206a3fb679426b2934daad3191b10ec7.jpg",previewURL:"https://cdn.beatsaver.com/172b9d6d206a3fb679426b2934daad3191b10ec7.mp3"}],createdAt:"2019-05-02T14:08:00Z",updatedAt:"2019-05-02T14:08:00Z",lastPublishedAt:"2019-05-02T14:08:00Z"},{id:"5616",name:"Sanctuary - Joji (All Difficulties, Single Saber, & No Arrows)",description:"A tribute to our boy Joji. Lots of love for him in this, 10 difficulties for players of all skill to enjoy.\n\n168 BPM - 2:56 Runtime\nEasy - 268 Notes\nNormal - 327 Notes\nHard - 409 Notes\nExpert - 465 Notes\nExpert+ - 542 Notes\n\nHard (Single Saber) - 306 Notes\nExpert (Single Saber) - 375 Notes\nExpert+ (Single Saber) - 444 Notes\n\nSincerity Difficulty (Reversed No Arrow) - 465 Notes\nSanctuary Difficulty (Reversed No Arrow) - 542 Notes\n\nGameplay:  https://youtu.be/u2AYPs94t7o\n\n**Little easter egg. Wall counts on maps correspond to milestones for George Miller. 162 videos on FilthyFrank YT channel, 105 videos on TooDamnFilthy YT channel, 95 videos on Dizastamusic YT channel, 38 songs on Pink Guy album, 35 songs on Pink Season album.",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:168,duration:176,songName:"Sanctuary",songSubName:"",songAuthorName:"Joji",levelAuthorName:"Skyler Wallace"},stats:{plays:0,downloads:12792,upvotes:3919,downvotes:67,score:.9434},uploaded:"2019-07-09T02:56:20.454Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"76bc9c795600df8c663dea4927f470d0a7700ab3",key:"5616",state:"Published",createdAt:"2019-07-09T02:56:20.454Z",sageScore:8,diffs:[{njs:10,offset:0,notes:268,bombs:0,obstacles:35,nps:1.737,length:432,characteristic:"Standard",difficulty:"Easy",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:94,warns:18,resets:0}},{njs:10,offset:0,notes:327,bombs:0,obstacles:38,nps:2.119,length:432,characteristic:"Standard",difficulty:"Normal",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:61,warns:12,resets:0}},{njs:12,offset:0,notes:409,bombs:0,obstacles:92,nps:2.651,length:432,characteristic:"Standard",difficulty:"Hard",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:29,warns:10,resets:0}},{njs:14,offset:1,notes:465,bombs:0,obstacles:105,nps:3.014,length:432,characteristic:"Standard",difficulty:"Expert",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:37,warns:26,resets:0}},{njs:14,offset:1,notes:542,bombs:0,obstacles:162,nps:3.513,length:432,characteristic:"Standard",difficulty:"ExpertPlus",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:24,warns:29,resets:0}},{njs:12,offset:0,notes:306,bombs:0,obstacles:92,nps:1.983,length:432,characteristic:"OneSaber",difficulty:"Hard",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:23,warns:28,resets:0}},{njs:14,offset:1,notes:375,bombs:0,obstacles:105,nps:2.431,length:432,characteristic:"OneSaber",difficulty:"Expert",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:26,warns:29,resets:0}},{njs:14,offset:1,notes:444,bombs:0,obstacles:162,nps:2.878,length:432,characteristic:"OneSaber",difficulty:"ExpertPlus",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:25,warns:57,resets:0}},{njs:-14,offset:1,notes:465,bombs:0,obstacles:105,nps:3.014,length:432,characteristic:"NoArrows",difficulty:"Expert",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:0,warns:0,resets:0}},{njs:-14,offset:1,notes:542,bombs:0,obstacles:162,nps:3.513,length:432,characteristic:"NoArrows",difficulty:"ExpertPlus",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/76bc9c795600df8c663dea4927f470d0a7700ab3.zip",coverURL:"https://cdn.beatsaver.com/76bc9c795600df8c663dea4927f470d0a7700ab3.jpg",previewURL:"https://cdn.beatsaver.com/76bc9c795600df8c663dea4927f470d0a7700ab3.mp3"}],createdAt:"2019-07-09T02:56:20.454Z",updatedAt:"2019-07-09T02:56:20.454Z",lastPublishedAt:"2019-07-09T02:56:20.454Z"},{id:"9b35",name:"Ready To [BNA: Brand New Animal Opening]",description:'use CHROMA mod for some cool ring prop effects\n\nTrigger greatness with a fire opening\nI\'m not a furry\nI think\n\n"Ready To" was sung by main girl, Michiru Kagemori (CV: Sumire Morohoshi)\n\nBPM 147 |\nExpert+\nExpert\nHard\nNormal\nEasy\n\ntyhf\n\npreview: https://www.youtube.com/watch?v=x6Q0y8Y8g0U\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:147,duration:199,songName:"Ready To",songSubName:"",songAuthorName:"Michiru (CV: Sumire Morohoshi)",levelAuthorName:"ETAN"},stats:{plays:0,downloads:12461,upvotes:4254,downvotes:78,score:.9432},uploaded:"2020-04-15T05:30:10.784Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c5de287d4406906d4ad3ddebc18e18446bb3a578",key:"9b35",state:"Published",createdAt:"2020-04-15T05:30:10.784Z",sageScore:7,diffs:[{njs:11,offset:0,notes:264,bombs:0,obstacles:2,nps:1.356,length:477,characteristic:"Standard",difficulty:"Easy",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:2,warns:4,resets:0}},{njs:11,offset:0,notes:336,bombs:0,obstacles:2,nps:1.726,length:477,characteristic:"Standard",difficulty:"Normal",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:0,warns:0,resets:0}},{njs:13,offset:1,notes:500,bombs:32,obstacles:2,nps:2.568,length:477,characteristic:"Standard",difficulty:"Hard",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:.3,notes:734,bombs:32,obstacles:2,nps:3.77,length:477,characteristic:"Standard",difficulty:"Expert",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:0,warns:0,resets:0}},{njs:21,offset:-.3,notes:900,bombs:32,obstacles:2,nps:4.623,length:477,characteristic:"Standard",difficulty:"ExpertPlus",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c5de287d4406906d4ad3ddebc18e18446bb3a578.zip",coverURL:"https://cdn.beatsaver.com/c5de287d4406906d4ad3ddebc18e18446bb3a578.jpg",previewURL:"https://cdn.beatsaver.com/c5de287d4406906d4ad3ddebc18e18446bb3a578.mp3"}],createdAt:"2020-04-15T05:30:10.784Z",updatedAt:"2020-04-15T05:30:10.784Z",lastPublishedAt:"2020-04-15T05:30:10.784Z"},{id:"56cb",name:"Onegai Muscle [Dumbbell Nan Kilo Moteru? Opening]",description:"SAIDO CHESTO\n\nSung by \nHibiki Sakura (CV: Ai Fairouz)\nNaruzou Machio (CV: Kaito Ishikawa)\n\nBPM 132 | Length 1:32\nMuscle!+ (Expert+)\nExpert\nHard\n\nThanks to Helen Carnate and Kival Evan for playtesting\n\ntyhf\n\ndm me on discord with feedback\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:132,duration:92,songName:"Onegai Muscle",songSubName:"",songAuthorName:"Ai Fairouz, Kaito Ishikawa",levelAuthorName:"ETAN"},stats:{plays:0,downloads:12485,upvotes:5772,downvotes:131,score:.9428},uploaded:"2019-07-13T16:48:46.669Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7aa8bd16a692b8c8769d96cf96b9b259bea2e862",key:"56cb",state:"Published",createdAt:"2019-07-13T16:48:46.669Z",sageScore:5,diffs:[{njs:13,offset:0,notes:223,bombs:32,obstacles:37,nps:2.544,length:192.875,characteristic:"Standard",difficulty:"Hard",events:5023,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.67,paritySummary:{errors:4,warns:5,resets:0}},{njs:16,offset:0,notes:304,bombs:32,obstacles:37,nps:3.468,length:192.875,characteristic:"Standard",difficulty:"Expert",events:5023,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.67,paritySummary:{errors:8,warns:4,resets:0}},{njs:19,offset:0,notes:402,bombs:32,obstacles:38,nps:4.585,length:192.875,characteristic:"Standard",difficulty:"ExpertPlus",events:5023,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.67,paritySummary:{errors:12,warns:6,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7aa8bd16a692b8c8769d96cf96b9b259bea2e862.zip",coverURL:"https://cdn.beatsaver.com/7aa8bd16a692b8c8769d96cf96b9b259bea2e862.jpg",previewURL:"https://cdn.beatsaver.com/7aa8bd16a692b8c8769d96cf96b9b259bea2e862.mp3"}],createdAt:"2019-07-13T16:48:46.669Z",updatedAt:"2019-07-13T16:48:46.669Z",lastPublishedAt:"2019-07-13T16:48:46.669Z"},{id:"3b76",name:"Caravan Palace - Miracle",description:"==================================================\r\nSong: Caravan Palace - Miracle\r\nBPM: 120\r\nNote jump speed: 10 - 16\r\nVersions: Expert+, Expert, Hard, Normal\r\n=============================\r\nLove this new track from Caravan Palace",uploader:{id:4287543,name:"therealzeroz",uniqueSet:!0,hash:"5cff0b7498cc5a672c85037b",avatar:"https://cdn.beatsaver.com/avatar/182672808961114112.png",type:"DISCORD"},metadata:{bpm:100,duration:221,songName:"Caravan Palace - Miracle",songSubName:"",songAuthorName:"TheRealZeroz",levelAuthorName:"TheRealZeroz"},stats:{plays:0,downloads:8954,upvotes:5074,downvotes:107,score:.9428},uploaded:"2019-03-04T12:15:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"29e5877ec735378b8ba3751dc8896bf63a43c525",key:"3b76",state:"Published",createdAt:"2019-03-04T12:15:10Z",sageScore:3,diffs:[{njs:10,offset:0,notes:326,bombs:0,obstacles:4,nps:1.793,length:303,characteristic:"Standard",difficulty:"Normal",events:4399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.8,paritySummary:{errors:38,warns:2,resets:0}},{njs:13,offset:0,notes:562,bombs:0,obstacles:0,nps:3.081,length:304,characteristic:"Standard",difficulty:"Hard",events:4399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.4,paritySummary:{errors:12,warns:13,resets:0}},{njs:14,offset:0,notes:1034,bombs:0,obstacles:8,nps:5.669,length:304,characteristic:"Standard",difficulty:"Expert",events:4399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.4,paritySummary:{errors:20,warns:2,resets:0}},{njs:16,offset:0,notes:1156,bombs:0,obstacles:9,nps:6.348,length:303.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.1,paritySummary:{errors:36,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/29e5877ec735378b8ba3751dc8896bf63a43c525.zip",coverURL:"https://cdn.beatsaver.com/29e5877ec735378b8ba3751dc8896bf63a43c525.jpg",previewURL:"https://cdn.beatsaver.com/29e5877ec735378b8ba3751dc8896bf63a43c525.mp3"}],createdAt:"2019-03-04T12:15:10Z",updatedAt:"2019-03-04T12:15:10Z",lastPublishedAt:"2019-03-04T12:15:10Z"},{id:"5062",name:"Witchcraft - Pendulum",description:"I have been working on this chart for a while now, finally able to finish it off. :) Enjoy!\r\nhttps://www.youtube.com/watch?v=mlaH4Dqjv1U",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:174,duration:254,songName:"Witchcraft",songSubName:"Pendulum",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:9888,upvotes:4287,downvotes:83,score:.9424},uploaded:"2019-06-01T07:59:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"015170851544c832ee4ac858ca6b3425677b1696",key:"5062",state:"Published",createdAt:"2019-06-01T07:59:40Z",sageScore:4,diffs:[{njs:10,offset:0,notes:372,bombs:0,obstacles:33,nps:1.515,length:712,characteristic:"Standard",difficulty:"Normal",events:8298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.517,paritySummary:{errors:13,warns:21,resets:0}},{njs:12,offset:0,notes:750,bombs:0,obstacles:53,nps:3.055,length:712,characteristic:"Standard",difficulty:"Hard",events:8298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.517,paritySummary:{errors:8,warns:7,resets:0}},{njs:14,offset:0,notes:1213,bombs:0,obstacles:36,nps:4.941,length:712,characteristic:"Standard",difficulty:"Expert",events:8298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.517,paritySummary:{errors:10,warns:5,resets:0}},{njs:18,offset:0,notes:1401,bombs:0,obstacles:28,nps:5.706,length:712,characteristic:"Standard",difficulty:"ExpertPlus",events:8298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.517,paritySummary:{errors:7,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/015170851544c832ee4ac858ca6b3425677b1696.zip",coverURL:"https://cdn.beatsaver.com/015170851544c832ee4ac858ca6b3425677b1696.jpg",previewURL:"https://cdn.beatsaver.com/015170851544c832ee4ac858ca6b3425677b1696.mp3"}],createdAt:"2019-06-01T07:59:40Z",updatedAt:"2019-06-01T07:59:40Z",lastPublishedAt:"2019-06-01T07:59:40Z"},{id:"6891",name:"Panic! At The Disco - I Write Sins Not Tragedies",description:"PepeJamJam \nAll Difficulties",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:170,duration:188,songName:"I Write Sins Not Tragedies",songSubName:"",songAuthorName:"Panic! At the Disco",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:17370,upvotes:5712,downvotes:132,score:.9423},uploaded:"2019-10-08T04:14:47.579Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7ec6ee195a2d577d5b924dad8b1a25b881aa2d27",key:"6891",state:"Published",createdAt:"2019-10-08T04:14:47.579Z",sageScore:8,diffs:[{njs:10,offset:0,notes:271,bombs:0,obstacles:21,nps:1.519,length:505.5,characteristic:"Standard",difficulty:"Easy",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:15,warns:9,resets:0}},{njs:10,offset:0,notes:312,bombs:0,obstacles:21,nps:1.749,length:505.5,characteristic:"Standard",difficulty:"Normal",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:18,warns:10,resets:0}},{njs:10,offset:0,notes:487,bombs:0,obstacles:41,nps:2.73,length:505.5,characteristic:"Standard",difficulty:"Hard",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:32,warns:34,resets:0}},{njs:12,offset:0,notes:690,bombs:80,obstacles:29,nps:3.867,length:505.5,characteristic:"Standard",difficulty:"Expert",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:11,warns:6,resets:2}},{njs:15,offset:0,notes:969,bombs:0,obstacles:17,nps:5.431,length:505.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:9,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7ec6ee195a2d577d5b924dad8b1a25b881aa2d27.zip",coverURL:"https://cdn.beatsaver.com/7ec6ee195a2d577d5b924dad8b1a25b881aa2d27.jpg",previewURL:"https://cdn.beatsaver.com/7ec6ee195a2d577d5b924dad8b1a25b881aa2d27.mp3"}],createdAt:"2019-10-08T04:14:47.579Z",updatedAt:"2019-10-08T04:14:47.579Z",lastPublishedAt:"2019-10-08T04:14:47.579Z"},{id:"1eb2",name:"Pumped Up Kicks - Foster the People",description:"128 BPM / 3:27 Runtime\r\nNormal / 381 Notes\r\nHard / 492 Notes\r\nExpert / 714 Notes\r\n\r\nGameplay:\r\nhttps://youtu.be/oo1EgLAOB1s\r\n\r\nListen to the song:\r\nhttps://www.youtube.com/watch?v=SDTZ7iX4vTQ",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:128,duration:207,songName:"Pumped Up Kicks",songSubName:"Foster The People",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:17347,upvotes:6240,downvotes:151,score:.9423},uploaded:"2018-11-07T04:34:04Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b0f6224a2717b97a4538790a32eb618acae1f57a",key:"1eb2",state:"Published",createdAt:"2018-11-07T04:34:04Z",sageScore:6,diffs:[{njs:10,offset:0,notes:381,bombs:0,obstacles:41,nps:1.926,length:422,characteristic:"Standard",difficulty:"Normal",events:1994,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.813,paritySummary:{errors:82,warns:64,resets:0}},{njs:10,offset:0,notes:492,bombs:23,obstacles:16,nps:2.481,length:423,characteristic:"Standard",difficulty:"Hard",events:1994,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.281,paritySummary:{errors:58,warns:62,resets:4}},{njs:12,offset:0,notes:714,bombs:8,obstacles:34,nps:3.601,length:423,characteristic:"Standard",difficulty:"Expert",events:1994,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.281,paritySummary:{errors:69,warns:63,resets:1}}],downloadURL:"https://cdn.beatsaver.com/b0f6224a2717b97a4538790a32eb618acae1f57a.zip",coverURL:"https://cdn.beatsaver.com/b0f6224a2717b97a4538790a32eb618acae1f57a.jpg",previewURL:"https://cdn.beatsaver.com/b0f6224a2717b97a4538790a32eb618acae1f57a.mp3"}],createdAt:"2018-11-07T04:34:04Z",updatedAt:"2018-11-07T04:34:04Z",lastPublishedAt:"2018-11-07T04:34:04Z"},{id:"368c",name:"Harajuku Iyahoi - Kyary Pamyu Pamyu",description:"All difficulties relatively close to OST standards.\n\nThanks to n3tman, Sehria, OmniOmega, CyanSnow, Aeroluna, and Expo for their help.\n\nhttps://youtu.be/YqptqS0vIIA\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:128,duration:218,songName:"Harajuku Iyahoi",songSubName:"Kyary Pamyu Pamyu",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:4783,upvotes:2027,downvotes:17,score:.9421},uploaded:"2019-02-15T23:55:37Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8c392c31aeadb55eebeb978c09fa79857380f15c",key:"368c",state:"Published",createdAt:"2019-02-15T23:55:37Z",sageScore:4,diffs:[{njs:9,offset:0,notes:214,bombs:0,obstacles:15,nps:1.057,length:432,characteristic:"Standard",difficulty:"Easy",events:969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.5,paritySummary:{errors:59,warns:16,resets:0}},{njs:9,offset:0,notes:306,bombs:0,obstacles:15,nps:1.511,length:432,characteristic:"Standard",difficulty:"Normal",events:969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.5,paritySummary:{errors:68,warns:44,resets:0}},{njs:11,offset:0,notes:469,bombs:0,obstacles:21,nps:2.316,length:432,characteristic:"Standard",difficulty:"Hard",events:969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.5,paritySummary:{errors:68,warns:98,resets:0}},{njs:12,offset:0,notes:685,bombs:6,obstacles:25,nps:3.383,length:432,characteristic:"Standard",difficulty:"Expert",events:969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.5,paritySummary:{errors:85,warns:76,resets:2}}],downloadURL:"https://cdn.beatsaver.com/8c392c31aeadb55eebeb978c09fa79857380f15c.zip",coverURL:"https://cdn.beatsaver.com/8c392c31aeadb55eebeb978c09fa79857380f15c.jpg",previewURL:"https://cdn.beatsaver.com/8c392c31aeadb55eebeb978c09fa79857380f15c.mp3"}],createdAt:"2019-02-15T23:55:37Z",updatedAt:"2019-02-15T23:55:37Z",lastPublishedAt:"2019-02-15T23:55:37Z"},{id:"141",name:"GANGNAM STYLE",description:"Expert, Hard, and Normal tracks. I tried my best to setup the chorus charts to allow you to mimic the classic dance moves. I think it matches up quite nicely. I hope you have as much fun playing as I did making this! Enjoy!",uploader:{id:41378,name:"greatyazer",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea71",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea71?d=retro",type:"SIMPLE"},metadata:{bpm:132,duration:219,songName:"Gangnam Style",songSubName:"PSY",songAuthorName:"GreatYazer",levelAuthorName:"greatyazer"},stats:{plays:0,downloads:35740,upvotes:21669,downvotes:788,score:.9421},uploaded:"2018-05-20T09:59:02Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"8e7e553099436af31564adf1977a5ec42a61cfff",key:"141",state:"Published",createdAt:"2018-05-20T09:59:02Z",sageScore:5,diffs:[{njs:10,offset:0,notes:415,bombs:4,obstacles:42,nps:2.02,length:452,characteristic:"Standard",difficulty:"Normal",events:735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.455,paritySummary:{errors:191,warns:17,resets:0},stars:1.15},{njs:10,offset:0,notes:695,bombs:40,obstacles:94,nps:3.383,length:452,characteristic:"Standard",difficulty:"Hard",events:735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.455,paritySummary:{errors:275,warns:23,resets:0}},{njs:10,offset:0,notes:932,bombs:50,obstacles:103,nps:4.536,length:452,characteristic:"Standard",difficulty:"Expert",events:735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.455,paritySummary:{errors:332,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8e7e553099436af31564adf1977a5ec42a61cfff.zip",coverURL:"https://cdn.beatsaver.com/8e7e553099436af31564adf1977a5ec42a61cfff.jpg",previewURL:"https://cdn.beatsaver.com/8e7e553099436af31564adf1977a5ec42a61cfff.mp3"}],createdAt:"2018-05-20T09:59:02Z",updatedAt:"2018-05-20T09:59:02Z",lastPublishedAt:"2018-05-20T09:59:02Z"},{id:"319f",name:"Fall Out Boy - My songs know what you did in the dark (Light 'em up)",description:"Had a bit of time off lately so I went and made a other map. This time it's Fall Out Boy!\r\nI realise a map had been made for this track already, but I thought I'd give my take on it too seeing as its such a good song ;)\r\nAll difficulties are included from Easy to Expert so enjoy! :)\r\n\r\nUpdate: \r\nDecided to bite the bullet here and do an update. Big thanks for Heisenbergirl for pointing out the NJS felt off. Playing around with it I've now raised it to 13 (from 12) and learnt a valuable skill when it comes to mapping. Basically the NJS spaces out the notes a bit more so makes it easier to read.\r\nI also adjusted a couple of the opening notes on Hard because I didn't really like the way that they flowed.\r\nFinally just want to apologise to everyone who's worked hard on a score or left a review. It sucks to have to reset it like this but it did need the update.\r\n\r\nVideo: https://www.youtube.com/watch?v=iZMvCvyarYA",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:152,duration:188,songName:"My songs know what you did in the dark",songSubName:"Fall Out Boy",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:15797,upvotes:5260,downvotes:119,score:.9419},uploaded:"2019-01-27T13:00:05Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5b53a3bede4fd8ee0950d0c5ba2dbbff73b6d127",key:"319f",state:"Published",createdAt:"2019-01-27T13:00:05Z",sageScore:6,diffs:[{njs:10,offset:0,notes:243,bombs:4,obstacles:93,nps:1.362,length:452,characteristic:"Standard",difficulty:"Easy",events:1723,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:23,warns:13,resets:0}},{njs:10,offset:0,notes:328,bombs:4,obstacles:95,nps:1.838,length:452,characteristic:"Standard",difficulty:"Normal",events:1723,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:28,warns:28,resets:2}},{njs:11,offset:0,notes:514,bombs:4,obstacles:75,nps:2.881,length:452,characteristic:"Standard",difficulty:"Hard",events:1725,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:25,warns:18,resets:1}},{njs:13,offset:0,notes:693,bombs:8,obstacles:58,nps:3.884,length:452,characteristic:"Standard",difficulty:"Expert",events:1726,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:27,warns:21,resets:4}}],downloadURL:"https://cdn.beatsaver.com/5b53a3bede4fd8ee0950d0c5ba2dbbff73b6d127.zip",coverURL:"https://cdn.beatsaver.com/5b53a3bede4fd8ee0950d0c5ba2dbbff73b6d127.jpg",previewURL:"https://cdn.beatsaver.com/5b53a3bede4fd8ee0950d0c5ba2dbbff73b6d127.mp3"}],createdAt:"2019-01-27T13:00:05Z",updatedAt:"2019-01-27T13:00:05Z",lastPublishedAt:"2019-01-27T13:00:05Z"},{id:"ac0a",name:"Hornet (Hollow Knight OST)",description:'This song really loses something without Hornet\'s war cries of "SHAA" and "HEGAALE" every three seconds. It also really gains something, because without that you can actually hear the music for once.',uploader:{id:4285065,name:"skaiamechanic",uniqueSet:!0,hash:"5e455654470a8200067c9bf9",avatar:"https://cdn.beatsaver.com/avatar/274999097361170432.png",type:"DISCORD"},metadata:{bpm:145,duration:168,songName:"Hornet",songSubName:"Hollow Knight",songAuthorName:"Christopher Larkin",levelAuthorName:"SkaiaMechanic"},stats:{plays:0,downloads:6639,upvotes:2339,downvotes:26,score:.9418},uploaded:"2020-05-29T18:41:14.740Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"48f5d0ddc8c6a006b5633c828039912744393877",key:"ac0a",state:"Published",createdAt:"2020-05-29T18:41:14.740Z",sageScore:5,diffs:[{njs:15,offset:0,notes:695,bombs:0,obstacles:12,nps:4.266,length:393.75,characteristic:"Standard",difficulty:"Hard",events:2513,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.931,paritySummary:{errors:43,warns:55,resets:0}},{njs:18,offset:0,notes:720,bombs:0,obstacles:33,nps:4.419,length:393.75,characteristic:"Standard",difficulty:"Expert",events:2513,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.931,paritySummary:{errors:27,warns:35,resets:0}}],downloadURL:"https://cdn.beatsaver.com/48f5d0ddc8c6a006b5633c828039912744393877.zip",coverURL:"https://cdn.beatsaver.com/48f5d0ddc8c6a006b5633c828039912744393877.jpg",previewURL:"https://cdn.beatsaver.com/48f5d0ddc8c6a006b5633c828039912744393877.mp3"}],createdAt:"2020-05-29T18:41:14.740Z",updatedAt:"2020-05-29T18:41:14.740Z",lastPublishedAt:"2020-05-29T18:41:14.740Z"},{id:"176c",name:"24K Magic - Bruno Mars",description:"We're taking it back old school... It's time to DANCE, baby!\r\nDifficulties: Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/IA4W-Z7KXSo",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:107,duration:228,songName:"24K Magic",songSubName:"Bruno Mars",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:13810,upvotes:6648,downvotes:174,score:.9412},uploaded:"2018-09-27T01:05:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b9e05baa59f3ea5c97c5ae82766783d895249c61",key:"176c",state:"Published",createdAt:"2018-09-27T01:05:07Z",sageScore:6,diffs:[{njs:10,offset:0,notes:215,bombs:0,obstacles:38,nps:1.08,length:355,characteristic:"Standard",difficulty:"Normal",events:1484,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.065,paritySummary:{errors:49,warns:40,resets:0}},{njs:10,offset:0,notes:439,bombs:0,obstacles:40,nps:2.205,length:355,characteristic:"Standard",difficulty:"Hard",events:1480,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.065,paritySummary:{errors:44,warns:84,resets:0}},{njs:10,offset:0,notes:592,bombs:0,obstacles:52,nps:2.974,length:355,characteristic:"Standard",difficulty:"Expert",events:1480,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.065,paritySummary:{errors:70,warns:116,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b9e05baa59f3ea5c97c5ae82766783d895249c61.zip",coverURL:"https://cdn.beatsaver.com/b9e05baa59f3ea5c97c5ae82766783d895249c61.jpg",previewURL:"https://cdn.beatsaver.com/b9e05baa59f3ea5c97c5ae82766783d895249c61.mp3"}],createdAt:"2018-09-27T01:05:07Z",updatedAt:"2018-09-27T01:05:07Z",lastPublishedAt:"2018-09-27T01:05:07Z"},{id:"6ea9",name:"Down Under - Men At Work",description:"Here's another great 80's anthem - Down Under, by Men At Work. I really enjoyed mapping this song. So much so, that I decided to do a full spread from Expert Plus to Easy. This is a really fun map to play whatever your skill level. I hope you enjoy it as much as I do!\n\nhttps://youtu.be/G0gTegU32ng",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:107,duration:210,songName:"Down Under",songSubName:"",songAuthorName:"Men At Work",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:12452,upvotes:3609,downvotes:67,score:.9411},uploaded:"2019-11-07T20:34:53.687Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c9ceaf7a8a7cea8381d08618c66110abbc4844f9",key:"6ea9",state:"Published",createdAt:"2019-11-07T20:34:53.687Z",sageScore:6,diffs:[{njs:12,offset:0,notes:249,bombs:0,obstacles:0,nps:1.22,length:364,characteristic:"Standard",difficulty:"Easy",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:59,warns:52,resets:0}},{njs:12,offset:0,notes:416,bombs:0,obstacles:0,nps:2.038,length:364,characteristic:"Standard",difficulty:"Normal",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:85,warns:84,resets:0}},{njs:15,offset:0,notes:613,bombs:0,obstacles:0,nps:3.003,length:364,characteristic:"Standard",difficulty:"Hard",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:54,warns:97,resets:0}},{njs:16,offset:0,notes:753,bombs:0,obstacles:0,nps:3.689,length:364,characteristic:"Standard",difficulty:"Expert",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:47,warns:56,resets:0}},{njs:17,offset:.8,notes:938,bombs:0,obstacles:0,nps:4.596,length:364,characteristic:"Standard",difficulty:"ExpertPlus",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:60,warns:36,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c9ceaf7a8a7cea8381d08618c66110abbc4844f9.zip",coverURL:"https://cdn.beatsaver.com/c9ceaf7a8a7cea8381d08618c66110abbc4844f9.jpg",previewURL:"https://cdn.beatsaver.com/c9ceaf7a8a7cea8381d08618c66110abbc4844f9.mp3"}],createdAt:"2019-11-07T20:34:53.687Z",updatedAt:"2019-11-07T20:34:53.687Z",lastPublishedAt:"2019-11-07T20:34:53.687Z"},{id:"195f",name:"Under The Sea (Little Mermaid) - Samuel E. Wright",description:'"What do they got? A lot of sand. We got a hot crustacean band! Each little clam here know how to jam here, under the sea!"\r\nDifficulties: Expert+, Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/h6eMPlGUZsw',uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:200,duration:194,songName:"Under The Sea",songSubName:"Samuel E. Wright",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:15120,upvotes:6093,downvotes:156,score:.9408},uploaded:"2018-10-08T23:44:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f745bac45c618fa2c49a0ee0c383f2a6cb356a78",key:"195f",state:"Published",createdAt:"2018-10-08T23:44:34Z",sageScore:4,diffs:[{njs:10,offset:0,notes:277,bombs:0,obstacles:9,nps:1.464,length:630,characteristic:"Standard",difficulty:"Normal",events:1406,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189,paritySummary:{errors:31,warns:31,resets:0}},{njs:10,offset:0,notes:317,bombs:0,obstacles:9,nps:1.673,length:631,characteristic:"Standard",difficulty:"Hard",events:1406,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:47,warns:28,resets:0}},{njs:10,offset:0,notes:541,bombs:0,obstacles:9,nps:2.855,length:631,characteristic:"Standard",difficulty:"Expert",events:1406,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:61,warns:89,resets:0}},{njs:10,offset:0,notes:848,bombs:0,obstacles:9,nps:4.475,length:631,characteristic:"Standard",difficulty:"ExpertPlus",events:1406,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:86,warns:112,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f745bac45c618fa2c49a0ee0c383f2a6cb356a78.zip",coverURL:"https://cdn.beatsaver.com/f745bac45c618fa2c49a0ee0c383f2a6cb356a78.jpg",previewURL:"https://cdn.beatsaver.com/f745bac45c618fa2c49a0ee0c383f2a6cb356a78.mp3"}],createdAt:"2018-10-08T23:44:34Z",updatedAt:"2018-10-08T23:44:34Z",lastPublishedAt:"2018-10-08T23:44:34Z"},{id:"849a",name:"Darude Sandstorm",description:"du du du du du\nI originally mapped this back in May 2018, and then again in June 2018. The Beatsaver site migration yeeted the map, so I've restored the two original maps as well as 5 new standard difficulties, 5 one saber difficulties, and one 360 level. Fun Fact: Freeek originally got the idea to create Lightmap because he hated the lighting in the original Sandstorm map...so I created a new version of Lightmap and used that to light the new difficulties.\n\nStandard\nEasy - 307 notes (1.37 NPS)\nNormal - 505 notes (2.25 NPS)\nHard - 756 notes (3.38 NPS)\nExpert - 1120 notes (5.00 NPS)\nExpert+ - 1358 notes (6.06 NPS)\n\nOne Saber\nEasy - 192 notes (0.86 NPS)\nNormal - 302 notes (1.35 NPS)\nHard - 508 notes (2.27 NPS)\nExpert - 734 notes (3.28 NPS)\nExpert+ - 1112 notes (4.96 NPS)\n\nNo Arrows\nOriginal Expert - 1151 notes (5.14 NPS)\nOriginal Expert+ - 1141 notes (5.09 NPS)\n\n360\nExpert+ - 1359 notes (6.07 NPS)\n\nGameplay: Coming Soon\nSong: https://youtu.be/y6120QOlsfU",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:136,duration:224,songName:"Sandstorm",songSubName:"",songAuthorName:"Darude",levelAuthorName:"Skyler Wallace"},stats:{plays:0,downloads:29265,upvotes:10584,downvotes:337,score:.9406},uploaded:"2020-02-06T04:55:40.715Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"580eb7d1614a35d192722f748400c9896ac9527d",key:"849a",state:"Published",createdAt:"2020-02-06T04:55:40.715Z",sageScore:6,diffs:[{njs:10,offset:-1,notes:307,bombs:0,obstacles:15,nps:1.407,length:496,characteristic:"Standard",difficulty:"Easy",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:154,warns:44,resets:0},stars:.89},{njs:10,offset:-1,notes:505,bombs:0,obstacles:15,nps:2.314,length:496,characteristic:"Standard",difficulty:"Normal",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:143,warns:46,resets:0},stars:1.42},{njs:12,offset:.5,notes:756,bombs:0,obstacles:27,nps:3.464,length:496,characteristic:"Standard",difficulty:"Hard",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:26,warns:18,resets:0},stars:2.01},{njs:15,offset:0,notes:1120,bombs:0,obstacles:43,nps:5.133,length:496,characteristic:"Standard",difficulty:"Expert",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:12,warns:6,resets:0},stars:4.2},{njs:17,offset:-.25,notes:1358,bombs:18,obstacles:23,nps:6.223,length:496,characteristic:"Standard",difficulty:"ExpertPlus",events:13969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:4,warns:6,resets:0},stars:5.95},{njs:10,offset:-1,notes:192,bombs:0,obstacles:13,nps:.88,length:496,characteristic:"OneSaber",difficulty:"Easy",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:88,warns:26,resets:0}},{njs:10,offset:-1,notes:302,bombs:0,obstacles:15,nps:1.384,length:496,characteristic:"OneSaber",difficulty:"Normal",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:65,warns:74,resets:0}},{njs:12,offset:.5,notes:508,bombs:0,obstacles:15,nps:2.328,length:496,characteristic:"OneSaber",difficulty:"Hard",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:53,warns:64,resets:0}},{njs:15,offset:0,notes:734,bombs:0,obstacles:24,nps:3.364,length:496,characteristic:"OneSaber",difficulty:"Expert",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:4,warns:5,resets:0}},{njs:17,offset:-.25,notes:1112,bombs:0,obstacles:41,nps:5.096,length:496,characteristic:"OneSaber",difficulty:"ExpertPlus",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:5,warns:9,resets:0}},{njs:12,offset:.5,notes:1151,bombs:0,obstacles:19,nps:4.089,length:639.75,characteristic:"NoArrows",difficulty:"Expert",events:1080,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:282.243,paritySummary:{errors:87,warns:41,resets:0}},{njs:15,offset:0,notes:1141,bombs:0,obstacles:31,nps:4.054,length:639.75,characteristic:"NoArrows",difficulty:"ExpertPlus",events:2315,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:282.243,paritySummary:{errors:129,warns:34,resets:0}},{njs:17,offset:0,notes:1359,bombs:0,obstacles:27,nps:6.228,length:496,characteristic:"360Degree",difficulty:"ExpertPlus",events:14547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:4,warns:6,resets:0}}],downloadURL:"https://cdn.beatsaver.com/580eb7d1614a35d192722f748400c9896ac9527d.zip",coverURL:"https://cdn.beatsaver.com/580eb7d1614a35d192722f748400c9896ac9527d.jpg",previewURL:"https://cdn.beatsaver.com/580eb7d1614a35d192722f748400c9896ac9527d.mp3"}],createdAt:"2020-02-06T04:55:40.715Z",updatedAt:"2020-02-06T04:55:40.715Z",lastPublishedAt:"2020-02-06T04:55:40.715Z"},{id:"4858",name:"Papercut - Linkin Park",description:"YouTube:\r\nhttps://www.youtube.com/watch?v=vjVkXlxsO8Q",uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:150,duration:187,songName:"Papercut",songSubName:"Linkin Park",songAuthorName:"Heisenberg",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:9559,upvotes:4539,downvotes:101,score:.9406},uploaded:"2019-04-25T17:52:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"431ffaa53a1e45ffab6c81a895e456f6aad1e038",key:"4858",state:"Published",createdAt:"2019-04-25T17:52:09Z",sageScore:6,diffs:[{njs:12,offset:0,notes:634,bombs:0,obstacles:96,nps:3.534,length:449,characteristic:"Standard",difficulty:"Hard",events:2316,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.6,paritySummary:{errors:40,warns:45,resets:0}},{njs:15,offset:0,notes:842,bombs:0,obstacles:90,nps:4.694,length:449,characteristic:"Standard",difficulty:"Expert",events:2316,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.6,paritySummary:{errors:16,warns:22,resets:0}},{njs:18,offset:0,notes:993,bombs:0,obstacles:66,nps:5.535,length:449,characteristic:"Standard",difficulty:"ExpertPlus",events:2327,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.6,paritySummary:{errors:31,warns:63,resets:0}}],downloadURL:"https://cdn.beatsaver.com/431ffaa53a1e45ffab6c81a895e456f6aad1e038.zip",coverURL:"https://cdn.beatsaver.com/431ffaa53a1e45ffab6c81a895e456f6aad1e038.jpg",previewURL:"https://cdn.beatsaver.com/431ffaa53a1e45ffab6c81a895e456f6aad1e038.mp3"}],createdAt:"2019-04-25T17:52:09Z",updatedAt:"2019-04-25T17:52:09Z",lastPublishedAt:"2019-04-25T17:52:09Z"},{id:"5d8d",name:"New Game - Nitro Fun",description:"Dancey E+, not very challenging.\n\nSee it in action: https://www.youtube.com/watch?v=IddrPmb4poA\n\nThank you to my playtesters:\n\nQTpop (https://www.twitch.tv/qtpop)\nTheRainbowGamerGirl (https://www.twitch.tv/therainbowgamergirl)",uploader:{id:38202,name:"fafurion",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f945",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f945?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:261,songName:"New Game",songSubName:"",songAuthorName:"Nitro Fun",levelAuthorName:"Fafurion"},stats:{plays:0,downloads:4880,upvotes:2873,downvotes:46,score:.9404},uploaded:"2019-08-17T15:26:08.685Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"310694f2ff8d129d4e64192251653caffdc65b62",key:"5d8d",state:"Published",createdAt:"2019-08-17T15:26:08.685Z",sageScore:5,diffs:[{njs:16,offset:0,notes:1229,bombs:0,obstacles:37,nps:4.824,length:543.5,characteristic:"Standard",difficulty:"ExpertPlus",events:7711,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:254.766,paritySummary:{errors:45,warns:81,resets:0}}],downloadURL:"https://cdn.beatsaver.com/310694f2ff8d129d4e64192251653caffdc65b62.zip",coverURL:"https://cdn.beatsaver.com/310694f2ff8d129d4e64192251653caffdc65b62.jpg",previewURL:"https://cdn.beatsaver.com/310694f2ff8d129d4e64192251653caffdc65b62.mp3"}],createdAt:"2019-08-17T15:26:08.685Z",updatedAt:"2019-08-17T15:26:08.685Z",lastPublishedAt:"2019-08-17T15:26:08.685Z"},{id:"2b1a",name:"Fallen Kingdom [Viva la Vida Minecraft Parody] - CaptainSparklez ft. TryHardNinja",description:"As requested by @ScrewBedtime and @Anonymous_Food: Fallen Kingdom, CaptainSparklez's minecraft parody of Viva la Vida. The parody's song arrangement is slightly different than the original so I had to remap some parts. This map goes out to all the 12 year olds that will listen to this instead of the original all because it has Minecraft lol. For the full experience play this with a minecraft saber and platform.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:138,duration:255,songName:"Fallen Kingdom",songSubName:"CaptainSparklez ft. TryHardNinja",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:8390,upvotes:4332,downvotes:95,score:.9403},uploaded:"2019-01-05T10:20:33Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"06150c7c34af95f53f5ed8fac5659c70649a07f0",key:"2b1a",state:"Published",createdAt:"2019-01-05T10:20:33Z",sageScore:4,diffs:[{njs:14,offset:0,notes:925,bombs:0,obstacles:43,nps:4.037,length:527,characteristic:"Standard",difficulty:"Hard",events:727,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.13,paritySummary:{errors:40,warns:37,resets:0}}],downloadURL:"https://cdn.beatsaver.com/06150c7c34af95f53f5ed8fac5659c70649a07f0.zip",coverURL:"https://cdn.beatsaver.com/06150c7c34af95f53f5ed8fac5659c70649a07f0.jpg",previewURL:"https://cdn.beatsaver.com/06150c7c34af95f53f5ed8fac5659c70649a07f0.mp3"}],createdAt:"2019-01-05T10:20:33Z",updatedAt:"2019-01-05T10:20:33Z",lastPublishedAt:"2019-01-05T10:20:33Z"},{id:"4adb",name:"Deja Vu - Dave Rodgers (Initial D)",description:"Was requested to get this Ranked, so some minor changes to fit updates in Ranking criteria!\r\n\r\nNotes Per Second:\r\nEasy / 1.6\r\nNormal / 2\r\nHard / 2.6\r\nExpert / 3.6\r\nExpert+ / 4.2\r\n\r\nExpert+ Playthrough:\r\nhttps://streamable.com/pk918",uploader:{id:11373,name:"redmagi",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e9d2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9d2?d=retro",type:"SIMPLE"},metadata:{bpm:154,duration:105,songName:"Deja Vu (Short Ver.)",songSubName:"Dave Rodgers",songAuthorName:"Redmagi",levelAuthorName:"redmagi"},stats:{plays:0,downloads:24353,upvotes:10971,downvotes:358,score:.9402},uploaded:"2019-05-05T18:37:01Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"c9c15d3f3109a8f732b41b299ce84556bebf73ac",key:"4adb",state:"Published",createdAt:"2019-05-05T18:37:01Z",sageScore:8,diffs:[{njs:10,offset:1,notes:171,bombs:0,obstacles:11,nps:1.669,length:263,characteristic:"Standard",difficulty:"Easy",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:9,warns:6,resets:0},stars:.95},{njs:12,offset:1,notes:211,bombs:45,obstacles:8,nps:2.059,length:263,characteristic:"Standard",difficulty:"Normal",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:27,warns:26,resets:2},stars:1.29},{njs:14,offset:1,notes:281,bombs:56,obstacles:8,nps:2.742,length:263,characteristic:"Standard",difficulty:"Hard",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:18,warns:28,resets:6},stars:1.92},{njs:15,offset:1,notes:382,bombs:24,obstacles:0,nps:3.728,length:263,characteristic:"Standard",difficulty:"Expert",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:19,warns:36,resets:4},stars:2.68},{njs:18,offset:0,notes:446,bombs:32,obstacles:0,nps:4.353,length:263,characteristic:"Standard",difficulty:"ExpertPlus",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:19,warns:56,resets:0},stars:4.46}],downloadURL:"https://cdn.beatsaver.com/c9c15d3f3109a8f732b41b299ce84556bebf73ac.zip",coverURL:"https://cdn.beatsaver.com/c9c15d3f3109a8f732b41b299ce84556bebf73ac.jpg",previewURL:"https://cdn.beatsaver.com/c9c15d3f3109a8f732b41b299ce84556bebf73ac.mp3"}],createdAt:"2019-05-05T18:37:01Z",updatedAt:"2019-05-05T18:37:01Z",lastPublishedAt:"2019-05-05T18:37:01Z"},{id:"4a47",name:"[Anniversary] Supernova - Laszlo [DownyCat]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:196,songName:"Supernova",songSubName:"Laszlo",songAuthorName:"DownyCat",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:7974,upvotes:4371,downvotes:97,score:.9402},uploaded:"2019-05-03T14:10:59Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"17ad188a8dea7cff81f5f7c6720099a1e395b168",key:"4a47",state:"Published",createdAt:"2019-05-03T14:10:59Z",sageScore:8,diffs:[{njs:12,offset:0,notes:260,bombs:0,obstacles:18,nps:1.387,length:400,characteristic:"Standard",difficulty:"Easy",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:21,warns:17,resets:0}},{njs:12,offset:0,notes:375,bombs:0,obstacles:22,nps:2,length:400,characteristic:"Standard",difficulty:"Normal",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:18,warns:14,resets:0}},{njs:12,offset:0,notes:491,bombs:0,obstacles:22,nps:2.619,length:400,characteristic:"Standard",difficulty:"Hard",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:16,warns:19,resets:0}},{njs:16,offset:0,notes:832,bombs:0,obstacles:22,nps:4.437,length:400,characteristic:"Standard",difficulty:"Expert",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:12,warns:8,resets:0}},{njs:18,offset:0,notes:959,bombs:0,obstacles:22,nps:5.115,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:18,warns:15,resets:0}}],downloadURL:"https://cdn.beatsaver.com/17ad188a8dea7cff81f5f7c6720099a1e395b168.zip",coverURL:"https://cdn.beatsaver.com/17ad188a8dea7cff81f5f7c6720099a1e395b168.jpg",previewURL:"https://cdn.beatsaver.com/17ad188a8dea7cff81f5f7c6720099a1e395b168.mp3"}],createdAt:"2019-05-03T14:10:59Z",updatedAt:"2019-05-03T14:10:59Z",lastPublishedAt:"2019-05-03T14:10:59Z"},{id:"36d5",name:"TheFatRat - MAYDAY feat. Laura Brehm",description:"reuploaded for ranked\n",uploader:{id:4284400,name:"oddloop",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fd45",avatar:"https://cdn.beatsaver.com/avatar/173241614192476161.png",type:"DISCORD"},metadata:{bpm:150,duration:247,songName:"MAYDAY",songSubName:"TheFatRat & Laura Brehm",songAuthorName:"Oddloop",levelAuthorName:"oddloop"},stats:{plays:0,downloads:12226,upvotes:4840,downvotes:114,score:.9402},uploaded:"2019-02-16T21:37:31Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"6a9042eb11d4da0938bbdaa0f584131def762f4a",key:"36d5",state:"Published",createdAt:"2019-02-16T21:37:31Z",sageScore:6,diffs:[{njs:16,offset:0,notes:887,bombs:0,obstacles:20,nps:3.807,length:582.5,characteristic:"Standard",difficulty:"Expert",events:1307,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:233,paritySummary:{errors:23,warns:24,resets:0},stars:2.85}],downloadURL:"https://cdn.beatsaver.com/6a9042eb11d4da0938bbdaa0f584131def762f4a.zip",coverURL:"https://cdn.beatsaver.com/6a9042eb11d4da0938bbdaa0f584131def762f4a.jpg",previewURL:"https://cdn.beatsaver.com/6a9042eb11d4da0938bbdaa0f584131def762f4a.mp3"}],createdAt:"2019-02-16T21:37:31Z",updatedAt:"2019-02-16T21:37:31Z",lastPublishedAt:"2019-02-16T21:37:31Z"},{id:"49ae",name:"Lindsey Stirling - Shatter Me",description:"Feedback on Discord: nitronik.exe#7974\nNote: if you dont like flashy lights, turn on static lights! (also epilepsy warning lol)\npreview: https://www.youtube.com/watch?v=0JGEh4lPVpA\n\nEasy (lightshow): 0 notes, 0 nps, 0 bombs, 0 walls, njs 10\nNormal: 692 notes, 2.37 nps, 0 bombs, 25 walls, njs 10\nHard: 912 notes, 3.13 nps, 8 bombs, 29 walls, njs 13\nExpert: 1166 notes, 4 nps, 38 bombs, 29 walls, njs 16\nExpertPlus: 1462 Notes, 5.02 nps, 64 bombs, 33 walls, njs 19",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:145,duration:291,songName:"Shatter Me",songSubName:"Lindsey Stirling",songAuthorName:"nitronik.exe",levelAuthorName:"nitronikexe"},stats:{plays:0,downloads:10457,upvotes:5571,downvotes:144,score:.9397},uploaded:"2019-05-01T10:07:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0c02558f26e46d94c33728885a10ea8a4e2a9fd5",key:"49ae",state:"Published",createdAt:"2019-05-01T10:07:45Z",sageScore:8,diffs:[{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:692,bombs:0,obstacles:25,nps:2.57,length:650.667,characteristic:"Standard",difficulty:"Normal",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.241,paritySummary:{errors:0,warns:18,resets:0}},{njs:13,offset:0,notes:912,bombs:8,obstacles:29,nps:3.386,length:651,characteristic:"Standard",difficulty:"Hard",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.379,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1166,bombs:38,obstacles:29,nps:4.305,length:654.5,characteristic:"Standard",difficulty:"Expert",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.828,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:0,notes:1462,bombs:64,obstacles:33,nps:5.427,length:651,characteristic:"Standard",difficulty:"ExpertPlus",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.379,paritySummary:{errors:8,warns:4,resets:20}}],downloadURL:"https://cdn.beatsaver.com/0c02558f26e46d94c33728885a10ea8a4e2a9fd5.zip",coverURL:"https://cdn.beatsaver.com/0c02558f26e46d94c33728885a10ea8a4e2a9fd5.jpg",previewURL:"https://cdn.beatsaver.com/0c02558f26e46d94c33728885a10ea8a4e2a9fd5.mp3"}],createdAt:"2019-05-01T10:07:45Z",updatedAt:"2019-05-01T10:07:45Z",lastPublishedAt:"2019-05-01T10:07:45Z"},{id:"45e",name:"CAN'T STOP THE FEELING! - Justin Timberlake",description:"Difficulties: Expert Only Lighting by GreatYazer\r\nWatch Me on Twitch: http://www.twitch.tv/bennydabeastlive\r\n\r\nIf you like this, check out my other beat maps:\r\nMidnight City by M83: https://beatsaver.com/details.php?id=542\r\nKids by MGMT: https://beatsaver.com/details.php?id=421\r\nWhat You Know by Two Door Cinema Club: https://beatsaver.com/details.php?id=1107\r\nPolish Girl by Neon Indian: https://beatsaver.com/details.php?id=694",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:113,duration:238,songName:"CAN'T STOP THE FEELING!",songSubName:"Justin Timberlake",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:18524,upvotes:6933,downvotes:197,score:.9397},uploaded:"2018-06-08T21:44:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"91ba25c089d50e93154e2c7920c46d4730f22569",key:"45e",state:"Published",createdAt:"2018-06-08T21:44:40Z",sageScore:5,diffs:[{njs:10,offset:0,notes:579,bombs:0,obstacles:38,nps:2.507,length:435,characteristic:"Standard",difficulty:"Expert",events:709,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.973,paritySummary:{errors:110,warns:65,resets:0}}],downloadURL:"https://cdn.beatsaver.com/91ba25c089d50e93154e2c7920c46d4730f22569.zip",coverURL:"https://cdn.beatsaver.com/91ba25c089d50e93154e2c7920c46d4730f22569.jpg",previewURL:"https://cdn.beatsaver.com/91ba25c089d50e93154e2c7920c46d4730f22569.mp3"}],createdAt:"2018-06-08T21:44:40Z",updatedAt:"2018-06-08T21:44:40Z",lastPublishedAt:"2018-06-08T21:44:40Z"},{id:"80da",name:"chelmico - Easy Breezy [Keep Your Hands Off Eizouken! Opening]",description:"stan sayaka\n\nAlso please check out chelmico's other songs. I've just recently become addicted to their songs\n\nBPM 186 |\nExpert+\nExpert\nHard\nBreezy (Normal)\nEasy\n\nthanks as always\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:186,duration:109,songName:"Easy Breezy",songSubName:"",songAuthorName:"chelmico",levelAuthorName:"ETAN"},stats:{plays:0,downloads:7380,upvotes:2370,downvotes:33,score:.9396},uploaded:"2020-01-24T11:15:41.867Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"070007ff180423aa0abf3f2ba5584b0846788ee8",key:"80da",state:"Published",createdAt:"2020-01-24T11:15:41.867Z",sageScore:6,diffs:[{njs:10,offset:.5,notes:117,bombs:8,obstacles:11,nps:1.242,length:292,characteristic:"Standard",difficulty:"Easy",events:4738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:94.194,paritySummary:{errors:7,warns:7,resets:2}},{njs:12,offset:0,notes:181,bombs:17,obstacles:11,nps:1.909,length:294,characteristic:"Standard",difficulty:"Normal",events:4738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:94.839,paritySummary:{errors:1,warns:1,resets:2}},{njs:13,offset:0,notes:272,bombs:17,obstacles:11,nps:2.858,length:295,characteristic:"Standard",difficulty:"Hard",events:4738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:95.161,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:1,notes:368,bombs:17,obstacles:11,nps:3.765,length:303,characteristic:"Standard",difficulty:"Expert",events:4738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:97.742,paritySummary:{errors:0,warns:0,resets:2}},{njs:21,offset:0,notes:467,bombs:17,obstacles:11,nps:4.778,length:303,characteristic:"Standard",difficulty:"ExpertPlus",events:4687,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:97.742,paritySummary:{errors:0,warns:0,resets:2}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:4687,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/070007ff180423aa0abf3f2ba5584b0846788ee8.zip",coverURL:"https://cdn.beatsaver.com/070007ff180423aa0abf3f2ba5584b0846788ee8.jpg",previewURL:"https://cdn.beatsaver.com/070007ff180423aa0abf3f2ba5584b0846788ee8.mp3"}],createdAt:"2020-01-24T11:15:41.867Z",updatedAt:"2020-01-24T11:15:41.867Z",lastPublishedAt:"2020-01-24T11:15:41.867Z"},{id:"68f4",name:"Ehrling - Palm Trees",description:"Expert / Hard / Normal\r\nMade for HeyFalcon",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:122,duration:167,songName:"Palm Trees",songSubName:"",songAuthorName:"Ehrling",levelAuthorName:"Rustic"},stats:{plays:0,downloads:3862,upvotes:2336,downvotes:32,score:.9396},uploaded:"2019-10-10T18:18:18.093Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6eef9850cfeb43d14c66323cfbae50d8532c9c43",key:"68f4",state:"Published",createdAt:"2019-10-10T18:18:18.093Z",sageScore:6,diffs:[{njs:12,offset:0,notes:257,bombs:0,obstacles:4876,nps:1.574,length:332,characteristic:"Standard",difficulty:"Normal",events:1638,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:163.279,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:336,bombs:0,obstacles:4876,nps:2.058,length:332,characteristic:"Standard",difficulty:"Hard",events:1638,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:163.279,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:0,notes:337,bombs:0,obstacles:4876,nps:2.064,length:332,characteristic:"Standard",difficulty:"Expert",events:1694,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:163.279,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6eef9850cfeb43d14c66323cfbae50d8532c9c43.zip",coverURL:"https://cdn.beatsaver.com/6eef9850cfeb43d14c66323cfbae50d8532c9c43.jpg",previewURL:"https://cdn.beatsaver.com/6eef9850cfeb43d14c66323cfbae50d8532c9c43.mp3"}],createdAt:"2019-10-10T18:18:18.093Z",updatedAt:"2019-10-10T18:18:18.093Z",lastPublishedAt:"2019-10-10T18:18:18.093Z"},{id:"1311",name:"Restart",description:"Finally!\r\n\r\nAnother map for you all to enjoy!\r\n\r\nThis cheerful song will get anyones spirits up! \r\nAnd with the song being part dancey part flow your gonna wish you played it!\r\n\r\nExpert+ is HyperSpeed mode for those who want to play fast!\r\n\r\nAll lighting was done by me!\r\nI do say that ive got a talent for lighting hmm? ;P",uploader:{id:4289111,name:"blackblazon",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ef34",avatar:"https://cdn.beatsaver.com/avatar/127162370538733568.png",type:"DISCORD"},metadata:{bpm:155,duration:252,songName:"Restart",songSubName:"Subtact",songAuthorName:"BlackBlazon",levelAuthorName:"blackblazon"},stats:{plays:0,downloads:5574,upvotes:2795,downvotes:46,score:.9396},uploaded:"2018-09-02T01:56:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c7a915c5315591f5a0e31f89dbbad4e69992f353",key:"1311",state:"Published",createdAt:"2018-09-02T01:56:36Z",sageScore:5,diffs:[{njs:12,offset:0,notes:1116,bombs:0,obstacles:0,nps:4.512,length:639,characteristic:"Standard",difficulty:"Expert",events:1785,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:247.355,paritySummary:{errors:66,warns:23,resets:0}},{njs:15,offset:0,notes:1116,bombs:0,obstacles:0,nps:4.512,length:639,characteristic:"Standard",difficulty:"ExpertPlus",events:1785,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:247.355,paritySummary:{errors:66,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c7a915c5315591f5a0e31f89dbbad4e69992f353.zip",coverURL:"https://cdn.beatsaver.com/c7a915c5315591f5a0e31f89dbbad4e69992f353.jpg",previewURL:"https://cdn.beatsaver.com/c7a915c5315591f5a0e31f89dbbad4e69992f353.mp3"}],createdAt:"2018-09-02T01:56:36Z",updatedAt:"2018-09-02T01:56:36Z",lastPublishedAt:"2018-09-02T01:56:36Z"},{id:"3fd3",name:"Cowboy Bebop - Tank! (Ben Briggs Remix)",description:"New lights, Expert now E+, an actual Expert added.",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:128,duration:173,songName:"Tank! (Ben Briggs Remix)",songSubName:"Cowboy Bebop",songAuthorName:"Ryger",levelAuthorName:"Ryger"},stats:{plays:0,downloads:10556,upvotes:4579,downvotes:108,score:.9395},uploaded:"2019-03-22T19:27:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8a19fa1812254b7b610e667039af155cee68606a",key:"3fd3",state:"Published",createdAt:"2019-03-22T19:27:47Z",sageScore:6,diffs:[{njs:14,offset:0,notes:703,bombs:0,obstacles:5,nps:4.173,length:359.375,characteristic:"Standard",difficulty:"Expert",events:3940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.457,paritySummary:{errors:41,warns:24,resets:0}},{njs:14,offset:0,notes:780,bombs:0,obstacles:5,nps:4.63,length:359.375,characteristic:"Standard",difficulty:"ExpertPlus",events:3940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.457,paritySummary:{errors:68,warns:46,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8a19fa1812254b7b610e667039af155cee68606a.zip",coverURL:"https://cdn.beatsaver.com/8a19fa1812254b7b610e667039af155cee68606a.jpg",previewURL:"https://cdn.beatsaver.com/8a19fa1812254b7b610e667039af155cee68606a.mp3"}],createdAt:"2019-03-22T19:27:47Z",updatedAt:"2019-03-22T19:27:47Z",lastPublishedAt:"2019-03-22T19:27:47Z"},{id:"6484",name:"Poison - Nightcore",description:"Youtube Preview: https://youtu.be/dzbdbXJWKMQ",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:169,duration:150,songName:"Poison - Nightcore",songSubName:"",songAuthorName:"Groove Coverage",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:6746,upvotes:3401,downvotes:67,score:.9394},uploaded:"2019-09-19T13:15:08.715Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e570d226c15ad3f5c4b84cfffe3542e61facc502",key:"6484",state:"Published",createdAt:"2019-09-19T13:15:08.715Z",sageScore:5,diffs:[{njs:15,offset:0,notes:504,bombs:4,obstacles:24,nps:3.518,length:403.5,characteristic:"Standard",difficulty:"Expert",events:616,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:143.254,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/e570d226c15ad3f5c4b84cfffe3542e61facc502.zip",coverURL:"https://cdn.beatsaver.com/e570d226c15ad3f5c4b84cfffe3542e61facc502.jpg",previewURL:"https://cdn.beatsaver.com/e570d226c15ad3f5c4b84cfffe3542e61facc502.mp3"}],createdAt:"2019-09-19T13:15:08.715Z",updatedAt:"2019-09-19T13:15:08.715Z",lastPublishedAt:"2019-09-19T13:15:08.715Z"},{id:"2c4f",name:"POP/STARS vs MEGALOVANIA - Dj CUTMAN",description:"As requested by @Gravemind1. POP/STARS vs MEGALOVANIA by Dj CUTMAN! I had fun mapping this (especially since it gives me a reason to lightmap the KDA environment!) and I hope you'll have fun playing it too! \r\n\r\nAll credit goes to Dj CUTMAN for the mashup: https://www.youtube.com/watch?v=Wan2REH1x9g",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:185,duration:176,songName:"POP/STARS vs MEGALOVANIA",songSubName:"Dj CUTMAN",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:9567,upvotes:4373,downvotes:101,score:.9394},uploaded:"2019-01-09T15:56:43Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5ede52db98f5cde3a4d54b4f96d7f9b6fe227fe7",key:"2c4f",state:"Published",createdAt:"2019-01-09T15:56:43Z",sageScore:5,diffs:[{njs:15,offset:0,notes:995,bombs:0,obstacles:27,nps:5.821,length:527,characteristic:"Standard",difficulty:"ExpertPlus",events:3164,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.919,paritySummary:{errors:43,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5ede52db98f5cde3a4d54b4f96d7f9b6fe227fe7.zip",coverURL:"https://cdn.beatsaver.com/5ede52db98f5cde3a4d54b4f96d7f9b6fe227fe7.jpg",previewURL:"https://cdn.beatsaver.com/5ede52db98f5cde3a4d54b4f96d7f9b6fe227fe7.mp3"}],createdAt:"2019-01-09T15:56:43Z",updatedAt:"2019-01-09T15:56:43Z",lastPublishedAt:"2019-01-09T15:56:43Z"},{id:"3694",name:"Centipede",description:"A full remake of the original Centipede map!\r\n\r\nEnjoy at your hearts content!\r\n\r\np.s i lied about the hiatus",uploader:{id:4289111,name:"blackblazon",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ef34",avatar:"https://cdn.beatsaver.com/avatar/127162370538733568.png",type:"DISCORD"},metadata:{bpm:140,duration:249,songName:"Centipede",songSubName:"Knife Party",songAuthorName:"BlackBlazon & EpicEwok",levelAuthorName:"blackblazon"},stats:{plays:0,downloads:8169,upvotes:4979,downvotes:125,score:.9391},uploaded:"2019-02-16T00:35:23Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e59f717e08b56c8693b14f42a94832cacd4bbca4",key:"3694",state:"Published",createdAt:"2019-02-16T00:35:23Z",sageScore:5,diffs:[{njs:14,offset:0,notes:1004,bombs:56,obstacles:25,nps:4.371,length:536,characteristic:"Standard",difficulty:"Expert",events:11574,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.714,paritySummary:{errors:22,warns:22,resets:0}},{njs:18,offset:0,notes:1004,bombs:56,obstacles:25,nps:4.371,length:536,characteristic:"Standard",difficulty:"ExpertPlus",events:11574,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.714,paritySummary:{errors:22,warns:22,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e59f717e08b56c8693b14f42a94832cacd4bbca4.zip",coverURL:"https://cdn.beatsaver.com/e59f717e08b56c8693b14f42a94832cacd4bbca4.jpg",previewURL:"https://cdn.beatsaver.com/e59f717e08b56c8693b14f42a94832cacd4bbca4.mp3"}],createdAt:"2019-02-16T00:35:23Z",updatedAt:"2019-02-16T00:35:23Z",lastPublishedAt:"2019-02-16T00:35:23Z"},{id:"1716",name:"Empty Threat - CHVRCHES",description:"Difficulties: Expert+, Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/5fp_4qs7RvA",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:132,duration:246,songName:"Empty Threat",songSubName:"CHVRCHES",songAuthorName:"Benny",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:7003,upvotes:3875,downvotes:85,score:.939},uploaded:"2018-09-25T02:11:16Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f08cad7d3b663caa6f8c23aa04664273f532f74a",key:"1716",state:"Published",createdAt:"2018-09-25T02:11:16Z",sageScore:4,diffs:[{njs:10,offset:0,notes:405,bombs:0,obstacles:16,nps:1.697,length:527,characteristic:"Standard",difficulty:"Normal",events:1241,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.545,paritySummary:{errors:55,warns:38,resets:0}},{njs:10,offset:0,notes:621,bombs:0,obstacles:24,nps:2.6,length:527.5,characteristic:"Standard",difficulty:"Hard",events:1241,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.773,paritySummary:{errors:70,warns:69,resets:0}},{njs:10,offset:0,notes:930,bombs:0,obstacles:24,nps:3.893,length:527.5,characteristic:"Standard",difficulty:"Expert",events:1241,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.773,paritySummary:{errors:97,warns:109,resets:0}},{njs:11,offset:0,notes:1255,bombs:0,obstacles:22,nps:5.251,length:527.75,characteristic:"Standard",difficulty:"ExpertPlus",events:1241,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.886,paritySummary:{errors:116,warns:208,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f08cad7d3b663caa6f8c23aa04664273f532f74a.zip",coverURL:"https://cdn.beatsaver.com/f08cad7d3b663caa6f8c23aa04664273f532f74a.jpg",previewURL:"https://cdn.beatsaver.com/f08cad7d3b663caa6f8c23aa04664273f532f74a.mp3"}],createdAt:"2018-09-25T02:11:16Z",updatedAt:"2018-09-25T02:11:16Z",lastPublishedAt:"2018-09-25T02:11:16Z"},{id:"9d7",name:"Back in Black - AC/DC",description:"CAUSE I'M BACK IN BLAAAAAAACK! All difficulties, full lights.\r\n\r\nWas charted form start to finish on my twitch, come watch me stream other chart creations!!!! https://www.twitch.tv/freeek\r\n\r\nExpert FC Video: https://www.youtube.com/watch?v=ZxLxbSfSEPA",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:95,duration:241,songName:"Back in Black",songSubName:"AC/DC",songAuthorName:"Freeek",levelAuthorName:"freeek"},stats:{plays:0,downloads:20588,upvotes:8804,downvotes:280,score:.939},uploaded:"2018-07-16T11:58:36Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"8af82a87167070a08ec63dba0459c829c2954067",key:"9d7",state:"Published",createdAt:"2018-07-16T11:58:36Z",sageScore:5,diffs:[{njs:10,offset:0,notes:450,bombs:0,obstacles:31,nps:1.947,length:366,characteristic:"Standard",difficulty:"Easy",events:1258,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.158,paritySummary:{errors:19,warns:2,resets:0},stars:.51},{njs:10,offset:0,notes:563,bombs:0,obstacles:47,nps:2.436,length:366,characteristic:"Standard",difficulty:"Normal",events:1258,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.158,paritySummary:{errors:87,warns:21,resets:0},stars:1.12},{njs:10,offset:0,notes:683,bombs:0,obstacles:47,nps:2.955,length:366,characteristic:"Standard",difficulty:"Hard",events:1258,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.158,paritySummary:{errors:81,warns:89,resets:0},stars:1.73},{njs:10,offset:0,notes:824,bombs:0,obstacles:47,nps:3.565,length:366,characteristic:"Standard",difficulty:"Expert",events:1258,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.158,paritySummary:{errors:79,warns:95,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8af82a87167070a08ec63dba0459c829c2954067.zip",coverURL:"https://cdn.beatsaver.com/8af82a87167070a08ec63dba0459c829c2954067.jpg",previewURL:"https://cdn.beatsaver.com/8af82a87167070a08ec63dba0459c829c2954067.mp3"}],createdAt:"2018-07-16T11:58:36Z",updatedAt:"2018-07-16T11:58:36Z",lastPublishedAt:"2018-07-16T11:58:36Z"},{id:"198f3",name:"Spider Dance - Toby Fox (Undertale modchart)",description:"There are countless Undertale maps on Beat Saber, but what if you could actually experience a real boss fight? It's now possible thanks to Noodle Extensions, and I'm proud to present to you the first Undertale modchart: Spider Dance, where you will confront Muffet.\r\n\r\nTips for a better experience:\r\n- Don't use static lights; there shouldn't be any lights\r\n- Hide the HUD in player settings\r\n- Enable \"bloom post-processing\"\r\n- Enable \"screen distortion effects\"\r\n\r\nInstallation instructions:\r\n- You will need Noodle Extensions and Chroma and their dependencies. All are now available on ModAssistant.\r\n- If you read this in a future where the update broke the mods and they haven't been approved on ModAssistant yet, install the basic mods from ModAssistant and get the latest releases of Noodle Extensions, Heck, and Chroma from Aeroluna's GitHub: https://github.com/Aeroluna\r\n\r\nVideo: https://youtu.be/fy8KmUor6fI\r\n\r\nI started this a while ago before Ghost Choir and then abandoned the project. But I finally decided to finish the work, so I hope you'll enjoy it :)\r\nThanks to Reaxt and Cyansnow, who testplayed and made detailed suggestions that helped me improve the quality of this map. I really appreciate it.\r\n\r\nMy social media links (please follow/subscribe): https://linktr.ee/nyri0",uploader:{id:4288814,name:"nyri0",uniqueSet:!0,hash:"5e792df416c9680006086a78",avatar:"https://cdn.beatsaver.com/avatar/396715033125584907.png",type:"DISCORD"},metadata:{bpm:115,duration:114,songName:"Spider Dance",songSubName:"",songAuthorName:"Toby Fox",levelAuthorName:"nyri0"},stats:{plays:0,downloads:15821,upvotes:1257,downvotes:4,score:.9389},uploaded:"2021-06-25T17:47:40.296Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"09246637fa63ac55aa518718fd1eb4b876960480",key:"198f3",state:"Published",createdAt:"2021-06-25T17:47:40.296Z",sageScore:2,diffs:[{njs:16,offset:0,notes:434,bombs:88,obstacles:1153,nps:4.377,length:190.063,characteristic:"Standard",difficulty:"ExpertPlus",events:5,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:99.163,paritySummary:{errors:13,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/09246637fa63ac55aa518718fd1eb4b876960480.zip",coverURL:"https://cdn.beatsaver.com/09246637fa63ac55aa518718fd1eb4b876960480.jpg",previewURL:"https://cdn.beatsaver.com/09246637fa63ac55aa518718fd1eb4b876960480.mp3"}],createdAt:"2021-06-25T17:47:40.296Z",updatedAt:"2021-06-25T17:47:40.296Z",lastPublishedAt:"2021-06-25T17:47:40.296Z"},{id:"860",name:"Wake Me Up When September Ends - Green Day",description:"Expert - Hard - Normal Charts\nCustom Lighting\nhttps://www.youtube.com/watch?v=QPiD-n4W6s0\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:105,duration:271,songName:"Wake Me Up When September Ends",songSubName:"Green Day",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:11787,upvotes:3264,downvotes:64,score:.9389},uploaded:"2018-07-07T14:38:17Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"d0457c1dee4a78f5496c3b282f8b834ec45f75a8",key:"860",state:"Published",createdAt:"2018-07-07T14:38:17Z",sageScore:5,diffs:[{njs:10,offset:0,notes:461,bombs:34,obstacles:97,nps:1.801,length:448,characteristic:"Standard",difficulty:"Normal",events:1579,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256,paritySummary:{errors:59,warns:13,resets:2},stars:.95},{njs:10,offset:0,notes:862,bombs:0,obstacles:85,nps:3.367,length:448,characteristic:"Standard",difficulty:"Hard",events:1579,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256,paritySummary:{errors:52,warns:1,resets:0}},{njs:10,offset:0,notes:1179,bombs:0,obstacles:86,nps:4.605,length:448,characteristic:"Standard",difficulty:"Expert",events:1579,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256,paritySummary:{errors:19,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d0457c1dee4a78f5496c3b282f8b834ec45f75a8.zip",coverURL:"https://cdn.beatsaver.com/d0457c1dee4a78f5496c3b282f8b834ec45f75a8.jpg",previewURL:"https://cdn.beatsaver.com/d0457c1dee4a78f5496c3b282f8b834ec45f75a8.mp3"}],createdAt:"2018-07-07T14:38:17Z",updatedAt:"2018-07-07T14:38:17Z",lastPublishedAt:"2018-07-07T14:38:17Z"},{id:"3fc",name:"The White Stripes - Seven Nation Army",description:"UPDATED! @BlueASIS#4095 on Discord let me know what you think",uploader:{id:52648,name:"blueasis",uniqueSet:!1,hash:"5cff0b7298cc5a672c84eb5d",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84eb5d?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:232,songName:"Seven Nation Army",songSubName:"The White Stripes",songAuthorName:"BlueASIS",levelAuthorName:"blueasis"},stats:{plays:0,downloads:20649,upvotes:14458,downvotes:530,score:.9389},uploaded:"2018-06-06T18:51:03Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0b0ad0f34b2d0687a9794bcf5019100fda06971e",key:"3fc",state:"Published",createdAt:"2018-06-06T18:51:03Z",sageScore:4,diffs:[{njs:10,offset:0,notes:399,bombs:0,obstacles:0,nps:1.817,length:453.875,characteristic:"Standard",difficulty:"Normal",events:812,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.617,paritySummary:{errors:90,warns:6,resets:0}},{njs:10,offset:0,notes:496,bombs:0,obstacles:0,nps:2.258,length:453.875,characteristic:"Standard",difficulty:"Hard",events:812,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.617,paritySummary:{errors:113,warns:12,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0b0ad0f34b2d0687a9794bcf5019100fda06971e.zip",coverURL:"https://cdn.beatsaver.com/0b0ad0f34b2d0687a9794bcf5019100fda06971e.jpg",previewURL:"https://cdn.beatsaver.com/0b0ad0f34b2d0687a9794bcf5019100fda06971e.mp3"}],createdAt:"2018-06-06T18:51:03Z",updatedAt:"2018-06-06T18:51:03Z",lastPublishedAt:"2018-06-06T18:51:03Z"},{id:"5925",name:'Hardware Store - "Weird Al" Yankovic',description:'Hardware Store is a song by "Weird Al" Yankovic. "Hardware Store", which, as the title suggests, is about a new neighborhood hardware store and the things that can be purchased therein. The song was originally supposed to be a style parody of another (unspecified) artist, but it eventually evolved into its own, original composition.\n\nThere\'s a rapid-fire list of 61 products that he sings at the bridge of the song so prepare for that :P',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:126.14,duration:226,songName:"Hardware Store",songSubName:"",songAuthorName:'"Weird Al" Yankovic',levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3028,upvotes:1490,downvotes:10,score:.9388},uploaded:"2019-07-27T16:27:18.223Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2c677458db9ca04a7d0b64f47b443661d0e487d8",key:"5925",state:"Published",createdAt:"2019-07-27T16:27:18.223Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1223,bombs:0,obstacles:24,nps:5.529,length:465.063,characteristic:"Standard",difficulty:"ExpertPlus",events:1571,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.213,paritySummary:{errors:45,warns:36,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2c677458db9ca04a7d0b64f47b443661d0e487d8.zip",coverURL:"https://cdn.beatsaver.com/2c677458db9ca04a7d0b64f47b443661d0e487d8.jpg",previewURL:"https://cdn.beatsaver.com/2c677458db9ca04a7d0b64f47b443661d0e487d8.mp3"}],createdAt:"2019-07-27T16:27:18.223Z",updatedAt:"2019-07-27T16:27:18.223Z",lastPublishedAt:"2019-07-27T16:27:18.223Z"},{id:"3e4",name:"I'll Make A Man Out Of You - Mulan",description:"Expert+/Expert/Hard/Normal all with Lighting Events\r\n114 BMP\r\nSee reddit for video of Expert+ (https://www.reddit.com/r/beatsaber/comments/8owz4t/ill_make_a_man_out_of_you_mulan_expert_video/?ref=share&ref_source=link)",uploader:{id:52670,name:"glacialdrift",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f176",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f176?d=retro",type:"SIMPLE"},metadata:{bpm:114,duration:202,songName:"I'll Make A Man Out Of You",songSubName:"Mulan",songAuthorName:"Glacial Drift",levelAuthorName:"glacialdrift"},stats:{plays:0,downloads:7958,upvotes:4393,downvotes:106,score:.9386},uploaded:"2018-06-06T01:30:06Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d8088b0ab3d9e5b3e62a2daf7cdc8204e0c67256",key:"3e4",state:"Published",createdAt:"2018-06-06T01:30:06Z",sageScore:3,diffs:[{njs:10,offset:0,notes:285,bombs:0,obstacles:2,nps:1.47,length:368.9,characteristic:"Standard",difficulty:"Normal",events:898,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.158,paritySummary:{errors:109,warns:26,resets:0}},{njs:10,offset:0,notes:449,bombs:0,obstacles:2,nps:2.317,length:368.9,characteristic:"Standard",difficulty:"Hard",events:898,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.158,paritySummary:{errors:99,warns:49,resets:0}},{njs:10,offset:0,notes:607,bombs:0,obstacles:2,nps:3.132,length:368.9,characteristic:"Standard",difficulty:"Expert",events:1025,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.158,paritySummary:{errors:91,warns:74,resets:0}},{njs:10,offset:0,notes:712,bombs:0,obstacles:2,nps:3.674,length:368.9,characteristic:"Standard",difficulty:"ExpertPlus",events:1025,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.158,paritySummary:{errors:87,warns:86,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d8088b0ab3d9e5b3e62a2daf7cdc8204e0c67256.zip",coverURL:"https://cdn.beatsaver.com/d8088b0ab3d9e5b3e62a2daf7cdc8204e0c67256.jpg",previewURL:"https://cdn.beatsaver.com/d8088b0ab3d9e5b3e62a2daf7cdc8204e0c67256.mp3"}],createdAt:"2018-06-06T01:30:06Z",updatedAt:"2018-06-06T01:30:06Z",lastPublishedAt:"2018-06-06T01:30:06Z"},{id:"11cf8",name:"Up & Down",description:"I had fun. Liked the song.\nThis map uses Noodle Extensions by the way.\nAlso, please disable any custom note models you might have, and don’t use the BTS environment.\n\nMap video: https://youtu.be/vueyLFN6Azg\n\n-= NOT MY AUDIO =-\n\nOriginal: https://youtu.be/oJa7Kr7_9dw\n\nNotes: 522\nNPS: 3.18\nNJS: 17\nBPM: 138\nBombs: 0\nWalls: 8\nLights: 2,790\nErrors: 5\n\nThanks to:\n@JohnnyDee\n@DefDoof\nfor testing!\n\nThis map does not work for the Quest/Quest 2",uploader:{id:4284638,name:"thegoodboi",uniqueSet:!0,hash:"5cff0b7698cc5a672c85433c",avatar:"https://cdn.beatsaver.com/avatar/515025828736794654.png",type:"DISCORD"},metadata:{bpm:138,duration:164,songName:"Up & Down",songSubName:"",songAuthorName:"Marnik",levelAuthorName:"The Good Boi"},stats:{plays:0,downloads:12995,upvotes:5828,downvotes:162,score:.9385},uploaded:"2020-12-20T21:25:04.106Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2aa85aad10e124eb674d18d49251bc94ee1a4283",key:"11cf8",state:"Published",createdAt:"2020-12-20T21:25:04.106Z",sageScore:7,diffs:[{njs:17,offset:0,notes:535,bombs:0,obstacles:8,nps:3.418,length:360,characteristic:"Standard",difficulty:"ExpertPlus",events:2790,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:156.522,paritySummary:{errors:27,warns:14,resets:0}},{njs:17,offset:0,notes:535,bombs:0,obstacles:8,nps:3.418,length:360,characteristic:"Lawless",difficulty:"ExpertPlus",events:2790,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:156.522,paritySummary:{errors:26,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2aa85aad10e124eb674d18d49251bc94ee1a4283.zip",coverURL:"https://cdn.beatsaver.com/2aa85aad10e124eb674d18d49251bc94ee1a4283.jpg",previewURL:"https://cdn.beatsaver.com/2aa85aad10e124eb674d18d49251bc94ee1a4283.mp3"}],createdAt:"2020-12-20T21:25:04.106Z",updatedAt:"2020-12-20T21:25:04.106Z",lastPublishedAt:"2020-12-20T21:25:04.106Z"},{id:"47f3",name:"TWICE - FANCY",description:"Aggrogahu: Lights, Hard, and Normal.\r\n Here are his awesome maps that you should download: https://beatsaver.com/browse/byuser/5760\r\n\r\nKikae: Expert/Expert+",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:132,duration:218,songName:"FANCY",songSubName:"TWICE",songAuthorName:"KikaeAeon & Aggrogahu",levelAuthorName:"kikaeaeon"},stats:{plays:0,downloads:11038,upvotes:2829,downvotes:52,score:.9381},uploaded:"2019-04-23T09:46:04Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c63d899018f131d3aed03816c5074350aaa700a7",key:"47f3",state:"Published",createdAt:"2019-04-23T09:46:04Z",sageScore:4,diffs:[{njs:9,offset:0,notes:380,bombs:12,obstacles:12,nps:1.802,length:464,characteristic:"Standard",difficulty:"Normal",events:1003,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.909,paritySummary:{errors:41,warns:61,resets:18}},{njs:10,offset:0,notes:587,bombs:6,obstacles:14,nps:2.777,length:465,characteristic:"Standard",difficulty:"Hard",events:972,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.364,paritySummary:{errors:54,warns:54,resets:3}},{njs:12,offset:0,notes:817,bombs:0,obstacles:5,nps:3.865,length:465,characteristic:"Standard",difficulty:"Expert",events:1001,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.364,paritySummary:{errors:11,warns:1,resets:0}},{njs:15,offset:0,notes:1048,bombs:0,obstacles:5,nps:4.958,length:465,characteristic:"Standard",difficulty:"ExpertPlus",events:1003,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.364,paritySummary:{errors:12,warns:14,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c63d899018f131d3aed03816c5074350aaa700a7.zip",coverURL:"https://cdn.beatsaver.com/c63d899018f131d3aed03816c5074350aaa700a7.jpg",previewURL:"https://cdn.beatsaver.com/c63d899018f131d3aed03816c5074350aaa700a7.mp3"}],createdAt:"2019-04-23T09:46:04Z",updatedAt:"2019-04-23T09:46:04Z",lastPublishedAt:"2019-04-23T09:46:04Z"},{id:"1421c",name:"Look At The Sky - Porter Robinson",description:"MAKE SURE TO HAVE BLOOM POST PROCESS ON AND SCREEN DISTORTION EFFECTS ON!!!!\n\n\nThis was super fun to work on! And its finally out! Please enjoy!\nPlease make sure to have noodle extensions and chroma,\nSpecial thanks to MakeUMove, and Dack!\n\nIf you cant play it, heres the video! https://youtu.be/VWSubdP0WcQ",uploader:{id:4235136,name:"reaxt",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ab",avatar:"https://cdn.beatsaver.com/avatar/163052863038291970.png",type:"DISCORD"},metadata:{bpm:115,duration:164,songName:"look at the sky",songSubName:"",songAuthorName:"porter robinson",levelAuthorName:"Reaxt & CyanSnow"},stats:{plays:0,downloads:5472,upvotes:1623,downvotes:15,score:.938},uploaded:"2021-02-16T19:10:35.911Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"825dbd980eadceaba54c8e9d8e68f93a1b4cb029",key:"1421c",state:"Published",createdAt:"2021-02-16T19:10:35.911Z",sageScore:2,diffs:[{njs:14,offset:0,notes:505,bombs:0,obstacles:5343,nps:3.552,length:272.5,characteristic:"Lawless",difficulty:"ExpertPlus",events:1247,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:142.174,paritySummary:{errors:2,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/825dbd980eadceaba54c8e9d8e68f93a1b4cb029.zip",coverURL:"https://cdn.beatsaver.com/825dbd980eadceaba54c8e9d8e68f93a1b4cb029.jpg",previewURL:"https://cdn.beatsaver.com/825dbd980eadceaba54c8e9d8e68f93a1b4cb029.mp3"}],createdAt:"2021-02-16T19:10:35.911Z",updatedAt:"2021-02-16T19:10:35.911Z",lastPublishedAt:"2021-02-16T19:10:35.911Z"},{id:"2da4",name:"Ghosts n Stuff (feat. Rob Swire) - deadmau5",description:"128 BPM / 3:17 Runtime\r\nEasy / 208 Notes\r\nNormal / 345 Notes\r\nHard / 458 Notes\r\nExpert / 595 Notes\r\n\r\nThis one comes with custom colors similar to the KDA Popstars OST track.\r\n\r\nGameplay:\r\nhttps://youtu.be/vxqyTGuO910",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:128,duration:197,songName:"Ghosts n Stuff (feat. Rob Swire)",songSubName:"deadmau5",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:13432,upvotes:6655,downvotes:199,score:.938},uploaded:"2019-01-14T13:48:11Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"712ee0801ae2e65e4cd7ea5377bcf272981b57c6",key:"2da4",state:"Published",createdAt:"2019-01-14T13:48:11Z",sageScore:6,diffs:[{njs:10,offset:1,notes:208,bombs:0,obstacles:16,nps:1.072,length:414,characteristic:"Standard",difficulty:"Easy",events:1827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.063,paritySummary:{errors:46,warns:21,resets:0}},{njs:10,offset:1,notes:345,bombs:0,obstacles:19,nps:1.773,length:415,characteristic:"Standard",difficulty:"Normal",events:1827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.531,paritySummary:{errors:37,warns:12,resets:0}},{njs:12,offset:1,notes:458,bombs:0,obstacles:15,nps:2.352,length:415.5,characteristic:"Standard",difficulty:"Hard",events:1827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.766,paritySummary:{errors:32,warns:19,resets:0}},{njs:14,offset:0,notes:595,bombs:22,obstacles:29,nps:3.055,length:415.5,characteristic:"Standard",difficulty:"Expert",events:1827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.766,paritySummary:{errors:41,warns:34,resets:1}}],downloadURL:"https://cdn.beatsaver.com/712ee0801ae2e65e4cd7ea5377bcf272981b57c6.zip",coverURL:"https://cdn.beatsaver.com/712ee0801ae2e65e4cd7ea5377bcf272981b57c6.jpg",previewURL:"https://cdn.beatsaver.com/712ee0801ae2e65e4cd7ea5377bcf272981b57c6.mp3"}],createdAt:"2019-01-14T13:48:11Z",updatedAt:"2019-01-14T13:48:11Z",lastPublishedAt:"2019-01-14T13:48:11Z"},{id:"49fc",name:"You Give Love A Bad Name - Bon Jovi",description:"Another classic from Bon Jovi :D This one has more beats than it’s my life so it's slightly harder too. Thus the expert difficulty, but it's still on the easy side of expert. Also Gotta love 80s songs lol, no computer mastering means BPM was inconsistent and there are over 20 bpm changes lol",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:123,duration:220,songName:"You Give Love A Bad Name",songSubName:"Bon Jovi",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:8360,upvotes:2027,downvotes:27,score:.9379},uploaded:"2019-05-02T18:03:13Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9465922b3962dca2b4c6d3b312fe61bec255c1e4",key:"49fc",state:"Published",createdAt:"2019-05-02T18:03:13Z",sageScore:6,diffs:[{njs:13,offset:0,notes:731,bombs:2,obstacles:3,nps:3.551,length:422,characteristic:"Standard",difficulty:"Expert",events:2246,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.854,paritySummary:{errors:28,warns:38,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9465922b3962dca2b4c6d3b312fe61bec255c1e4.zip",coverURL:"https://cdn.beatsaver.com/9465922b3962dca2b4c6d3b312fe61bec255c1e4.jpg",previewURL:"https://cdn.beatsaver.com/9465922b3962dca2b4c6d3b312fe61bec255c1e4.mp3"}],createdAt:"2019-05-02T18:03:13Z",updatedAt:"2019-05-02T18:03:13Z",lastPublishedAt:"2019-05-02T18:03:13Z"},{id:"b514",name:"[[Wall Show + Chroma]] GAS GAS GAS | Manuel",description:"This wall map is a bit more intense than my others, you will need a very hefty pc to run and record this. Have Fun!\n\nHere's a playthrough: https://www.youtube.com/watch?v=hlS6r-Usnro\nHere's a playthrough by Nico (HQ Version): https://youtu.be/F_3qRxDdQc0\n\nREQUIREMENTS: \n -Noodle Extensions\n -Chroma/ChromaLite\n(fixed formatting + removed stupid metadata ;)",uploader:{id:73008,name:"thelightdesigner",uniqueSet:!0,hash:"5cff0b7798cc5a672c85627a",avatar:"https://cdn.beatsaver.com/avatar/480555157952659489.png",type:"DISCORD"},metadata:{bpm:154,duration:108,songName:"GAS GAS GAS",songSubName:"(Short Ver.)",songAuthorName:"Manuel",levelAuthorName:"KyleT"},stats:{plays:0,downloads:9291,upvotes:2453,downvotes:41,score:.9377},uploaded:"2020-06-22T20:02:06.271Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"95e11f39b2898a38e3b5e61d2156ef5f5835f40f",key:"b514",state:"Published",createdAt:"2020-06-22T20:02:06.271Z",sageScore:3,diffs:[{njs:16.5,offset:0,notes:390,bombs:13,obstacles:13898,nps:3.832,length:261.25,characteristic:"Standard",difficulty:"Expert",events:1462,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:101.786,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/95e11f39b2898a38e3b5e61d2156ef5f5835f40f.zip",coverURL:"https://cdn.beatsaver.com/95e11f39b2898a38e3b5e61d2156ef5f5835f40f.jpg",previewURL:"https://cdn.beatsaver.com/95e11f39b2898a38e3b5e61d2156ef5f5835f40f.mp3"}],createdAt:"2020-06-22T20:02:06.271Z",updatedAt:"2020-06-22T20:02:06.271Z",lastPublishedAt:"2020-06-22T20:02:06.271Z"},{id:"774e",name:"Sad Machine - Porter Robinson",description:"77",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:89,duration:257,songName:"Sad Machine",songSubName:"",songAuthorName:"Porter Robinson",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:7096,upvotes:2724,downvotes:50,score:.9377},uploaded:"2019-12-18T21:56:31.549Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7f6ab5de98ac1970e734ea6e26a539fa11cc4f66",key:"774e",state:"Published",createdAt:"2019-12-18T21:56:31.549Z",sageScore:4,diffs:[{njs:10,offset:-.4,notes:647,bombs:0,obstacles:237,nps:2.583,length:369.5,characteristic:"Standard",difficulty:"Hard",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.101,paritySummary:{errors:1,warns:2,resets:0}},{njs:12,offset:-.6,notes:1025,bombs:0,obstacles:237,nps:4.092,length:369.5,characteristic:"Standard",difficulty:"Expert",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.101,paritySummary:{errors:22,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7f6ab5de98ac1970e734ea6e26a539fa11cc4f66.zip",coverURL:"https://cdn.beatsaver.com/7f6ab5de98ac1970e734ea6e26a539fa11cc4f66.jpg",previewURL:"https://cdn.beatsaver.com/7f6ab5de98ac1970e734ea6e26a539fa11cc4f66.mp3"}],createdAt:"2019-12-18T21:56:31.549Z",updatedAt:"2019-12-18T21:56:31.549Z",lastPublishedAt:"2019-12-18T21:56:31.549Z"},{id:"1fe5",name:"I Just Can't Wait To Be King - Lion King OST - 100k Contest",description:'Unleash your inner beast with the song "I Just Can\'t Wait to be King" from the official Lion King Soundtrack! This map has difficulties from Easy to Expert, for everyone to enjoy! \r\nThis is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!\r\n\r\nPreview: https://youtu.be/YDAkqZR9Hs0',uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:99,duration:168,songName:"I Just Can't Wait To Be King",songSubName:"Rowan Atkinson, Jason Weaver, Laura Williams",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:11682,upvotes:3499,downvotes:77,score:.9377},uploaded:"2018-11-12T16:50:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1a3237630cd17aaa2af3f728621dcfdcce38edf1",key:"1fe5",state:"Published",createdAt:"2018-11-12T16:50:07Z",sageScore:5,diffs:[{njs:11,offset:0,notes:144,bombs:0,obstacles:16,nps:.91,length:261,characteristic:"Standard",difficulty:"Easy",events:466,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.182,paritySummary:{errors:44,warns:9,resets:0}},{njs:11,offset:0,notes:309,bombs:0,obstacles:16,nps:1.953,length:261,characteristic:"Standard",difficulty:"Normal",events:466,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.182,paritySummary:{errors:33,warns:18,resets:0}},{njs:11,offset:0,notes:452,bombs:0,obstacles:20,nps:2.857,length:261,characteristic:"Standard",difficulty:"Hard",events:466,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.182,paritySummary:{errors:46,warns:56,resets:0}},{njs:11,offset:0,notes:512,bombs:0,obstacles:20,nps:3.237,length:261,characteristic:"Standard",difficulty:"Expert",events:466,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.182,paritySummary:{errors:52,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1a3237630cd17aaa2af3f728621dcfdcce38edf1.zip",coverURL:"https://cdn.beatsaver.com/1a3237630cd17aaa2af3f728621dcfdcce38edf1.jpg",previewURL:"https://cdn.beatsaver.com/1a3237630cd17aaa2af3f728621dcfdcce38edf1.mp3"}],createdAt:"2018-11-12T16:50:07Z",updatedAt:"2018-11-12T16:50:07Z",lastPublishedAt:"2018-11-12T16:50:07Z"},{id:"ae0e",name:"Alan Walker - Spectre",description:'"Spectre", Alan Walker\'s second most popular NoCopyrightSounds track.\r\nThis is a remap of my very first map. Since a lot of people still like this track and want a proper map of it in Beat Saber, I decided to remap this track following the latest mapping standards. \r\n\r\nEasy : NPS 1.23 | NJS 10\r\nNormal : NPS 2.00 | NJS 10\r\nHard : NPS 3.28 | NJS 13\r\nExpert : NPS 4.44 | NJS 16\r\nExpert+ : NPS 5.41 | NJS 19\r\n\r\nShowcase:\r\nhttps://www.youtube.com/watch?v=Xq7_-0HPThA\r\n\r\nShout out to the following play-testers who play-tested my map:\r\n*lapras\r\n*officialMECH\r\n*Escapee\r\n\r\nFeel free to make your own map for this track.\r\n\r\nOriginal map: https://beatsaver.com/beatmap/155a\r\n\r\nIf you enjoy my work and wish to donate, the option is here :)\r\nPaypal: https://www.paypal.me/WeldonWen',uploader:{id:4286890,name:"weldonwen",uniqueSet:!0,hash:"5cff0b7498cc5a672c850433",avatar:"https://cdn.beatsaver.com/avatar/571472512924254229.png",type:"DISCORD"},metadata:{bpm:128,duration:231,songName:"Spectre ",songSubName:"",songAuthorName:"Alan Walker",levelAuthorName:"WeldonWen"},stats:{plays:0,downloads:11498,upvotes:2715,downvotes:50,score:.9376},uploaded:"2020-06-03T23:05:28.787Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3c6f02ecbef50e2019d5938871a8f3fcdb7b07a2",key:"ae0e",state:"Published",createdAt:"2020-06-03T23:05:28.787Z",sageScore:7,diffs:[{njs:10,offset:1.04,notes:285,bombs:44,obstacles:40,nps:1.315,length:462.5,characteristic:"Standard",difficulty:"Easy",events:3884,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.797,paritySummary:{errors:81,warns:36,resets:0}},{njs:10,offset:.99,notes:464,bombs:51,obstacles:58,nps:2.136,length:463.5,characteristic:"Standard",difficulty:"Normal",events:3884,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.266,paritySummary:{errors:70,warns:10,resets:0}},{njs:13,offset:.259,notes:760,bombs:56,obstacles:42,nps:3.498,length:463.5,characteristic:"Standard",difficulty:"Hard",events:3883,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.266,paritySummary:{errors:2,warns:6,resets:0}},{njs:16,offset:-.2,notes:1029,bombs:45,obstacles:55,nps:4.736,length:463.5,characteristic:"Standard",difficulty:"Expert",events:3885,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.266,paritySummary:{errors:2,warns:0,resets:2}},{njs:19,offset:-.5,notes:1255,bombs:21,obstacles:46,nps:5.776,length:463.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3963,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.266,paritySummary:{errors:1,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/3c6f02ecbef50e2019d5938871a8f3fcdb7b07a2.zip",coverURL:"https://cdn.beatsaver.com/3c6f02ecbef50e2019d5938871a8f3fcdb7b07a2.jpg",previewURL:"https://cdn.beatsaver.com/3c6f02ecbef50e2019d5938871a8f3fcdb7b07a2.mp3"}],createdAt:"2020-06-03T23:05:28.787Z",updatedAt:"2020-06-03T23:05:28.787Z",lastPublishedAt:"2020-06-03T23:05:28.787Z"},{id:"7c05",name:"[Bloq Busters Vol. 2] The Sirens - Seven Lions & Jason Ross",description:"Part of Bloq Busters Vol 2 - Melodic Dubstep\r\n\r\nThis eerie but beautiful and powerful journey composed by Seven Lions and Jason Ross will take you on a trip!\r\n\r\nFeatures Chroma Lights and all difficulties from Normal to Expert++.",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:145,duration:237,songName:"The Sirens",songSubName:"",songAuthorName:"Seven Lions & Jason Ross",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:7774,upvotes:1475,downvotes:12,score:.9374},uploaded:"2020-01-03T22:46:03.484Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0dadd6ab18e3ca0011459f16366e41ecffa5029e",key:"7c05",state:"Published",createdAt:"2020-01-03T22:46:03.484Z",sageScore:6,diffs:[{njs:10,offset:0,notes:383,bombs:0,obstacles:256,nps:1.78,length:520,characteristic:"Standard",difficulty:"Easy",events:11028,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:73,warns:6,resets:0}},{njs:13,offset:0,notes:624,bombs:32,obstacles:253,nps:2.9,length:520,characteristic:"Standard",difficulty:"Normal",events:11028,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:1,warns:0,resets:0}},{njs:15,offset:0,notes:927,bombs:263,obstacles:259,nps:4.308,length:520,characteristic:"Standard",difficulty:"Hard",events:11028,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:3,warns:0,resets:7}},{njs:17,offset:0,notes:1072,bombs:47,obstacles:256,nps:4.982,length:520,characteristic:"Standard",difficulty:"Expert",events:11028,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:2,warns:0,resets:2}},{njs:19,offset:-.25,notes:1256,bombs:134,obstacles:257,nps:5.837,length:520,characteristic:"Standard",difficulty:"ExpertPlus",events:11097,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:2,warns:2,resets:4}},{njs:19,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:11097,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0dadd6ab18e3ca0011459f16366e41ecffa5029e.zip",coverURL:"https://cdn.beatsaver.com/0dadd6ab18e3ca0011459f16366e41ecffa5029e.jpg",previewURL:"https://cdn.beatsaver.com/0dadd6ab18e3ca0011459f16366e41ecffa5029e.mp3"}],createdAt:"2020-01-03T22:46:03.484Z",updatedAt:"2020-01-03T22:46:03.484Z",lastPublishedAt:"2020-01-03T22:46:03.484Z"},{id:"7b68",name:"First of the Year (Equinox) - Skrillex",description:"First of the Year (Equinox) - Skrillex\n\nThis is my first map of 2020, and a huge throwback to when I first started listening to Skrillex. As well as it being a collaboration between myself, Checkthepan, Haclyon12, and CyanSnow.\n\nThanks to Checkthepan for making the 360 & 90-degree levels, Halcyon12 for the awesome chroma lights and CyanSnow for getting the files release ready. \n\nalso was originally trying to be the first map uploaded for 2020 but beatsaver had a stroke and now it's like the 5th or something\n",uploader:{id:4284904,name:"xscaramouche",uniqueSet:!0,hash:"5cff0b7798cc5a672c8558ed",avatar:"https://cdn.beatsaver.com/avatar/227538798387527680.png",type:"DISCORD"},metadata:{bpm:145,duration:257,songName:"First of the Year",songSubName:"(Equinox)",songAuthorName:"Skrillex",levelAuthorName:"xScaramouche & Checkthepan & Halcyon12"},stats:{plays:0,downloads:18265,upvotes:4286,downvotes:108,score:.9374},uploaded:"2020-01-01T04:28:55.040Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2feafef61cad57ea2d6608eb54c39f139abb48c1",key:"7b68",state:"Published",createdAt:"2020-01-01T04:28:55.040Z",sageScore:7,diffs:[{njs:12,offset:1,notes:387,bombs:0,obstacles:183,nps:1.538,length:608,characteristic:"Standard",difficulty:"Easy",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:183,warns:0,resets:0}},{njs:12,offset:1,notes:476,bombs:0,obstacles:182,nps:1.892,length:607.998,characteristic:"Standard",difficulty:"Normal",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.585,paritySummary:{errors:124,warns:0,resets:0}},{njs:14,offset:.5,notes:658,bombs:9,obstacles:192,nps:2.615,length:608,characteristic:"Standard",difficulty:"Hard",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1017,bombs:9,obstacles:180,nps:4.042,length:608,characteristic:"Standard",difficulty:"Expert",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.35,notes:1359,bombs:39,obstacles:186,nps:5.402,length:608,characteristic:"Standard",difficulty:"ExpertPlus",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:1,warns:0,resets:0}},{njs:17,offset:0,notes:1554,bombs:232,obstacles:45,nps:6.177,length:608,characteristic:"90Degree",difficulty:"ExpertPlus",events:27854,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:21,warns:0,resets:15}},{njs:17,offset:0,notes:1555,bombs:232,obstacles:44,nps:6.181,length:608,characteristic:"360Degree",difficulty:"ExpertPlus",events:27904,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:20,warns:0,resets:15}},{njs:69,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2feafef61cad57ea2d6608eb54c39f139abb48c1.zip",coverURL:"https://cdn.beatsaver.com/2feafef61cad57ea2d6608eb54c39f139abb48c1.jpg",previewURL:"https://cdn.beatsaver.com/2feafef61cad57ea2d6608eb54c39f139abb48c1.mp3"}],createdAt:"2020-01-01T04:28:55.040Z",updatedAt:"2020-01-01T04:28:55.040Z",lastPublishedAt:"2020-01-01T04:28:55.040Z"},{id:"480",name:"Earth, Wind & Fire - September",description:"Expert | Hard | Normal\r\n\r\nBPM - 126\r\nDuration - 2:21\r\n\r\nPreview: https://youtu.be/FOob1xit17Y",uploader:{id:45732,name:"calijor",uniqueSet:!1,hash:"5cff0b7298cc5a672c84ebb1",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ebb1?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:142,songName:"September",songSubName:"",songAuthorName:"Earth, Wind & Fire",levelAuthorName:"calijor"},stats:{plays:0,downloads:18722,upvotes:10791,downvotes:385,score:.9374},uploaded:"2018-06-09T18:27:58Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"aa2f7bf0df25cd57dddac159fa7c159f732e0553",key:"480",state:"Published",createdAt:"2018-06-09T18:27:58Z",sageScore:4,diffs:[{njs:10,offset:0,notes:291,bombs:0,obstacles:8,nps:2.171,length:281.469,characteristic:"Standard",difficulty:"Normal",events:832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.033,paritySummary:{errors:61,warns:39,resets:0}},{njs:10,offset:0,notes:367,bombs:0,obstacles:8,nps:2.738,length:281.469,characteristic:"Standard",difficulty:"Hard",events:832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.033,paritySummary:{errors:67,warns:65,resets:0}},{njs:10,offset:0,notes:409,bombs:0,obstacles:8,nps:3.051,length:281.469,characteristic:"Standard",difficulty:"Expert",events:832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.033,paritySummary:{errors:75,warns:73,resets:0}}],downloadURL:"https://cdn.beatsaver.com/aa2f7bf0df25cd57dddac159fa7c159f732e0553.zip",coverURL:"https://cdn.beatsaver.com/aa2f7bf0df25cd57dddac159fa7c159f732e0553.jpg",previewURL:"https://cdn.beatsaver.com/aa2f7bf0df25cd57dddac159fa7c159f732e0553.mp3"}],createdAt:"2018-06-09T18:27:58Z",updatedAt:"2018-06-09T18:27:58Z",lastPublishedAt:"2018-06-09T18:27:58Z"},{id:"1181f",name:"Royal & the Serpent - Overwhelmed",description:"Feeling that finals crunch? Worried about the pandemic? General anxiety with the news, and just feeling overwhelmed? Don't forget to take a step back and take a breath. Maybe by dancing along to this song that perfectly captures all of those feelings! Complete with overwhelming Chroma 2.0 lights! And now the extra details:\n\nBPM: 87\nNPS: Ez - 1.71; N - 2.09; H - 2.75; Ex - 3.19; Ex+ - 4.11\nNotes: Ez - 277; N - 338; H - 444; Ex - 516; Ex+ - 664\nBombs: Ez - 0; N - 0; H - 4; Ex - 4; Ex+ - 4\nWalls: Ez - 136; N - 134; H - 144; Ex - 109; Ex+ - 109\n\nSpecial thanks to qwasyx, Smay, and Cyrix for playtesting!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:87,duration:161,songName:"Overwhelmed",songSubName:"",songAuthorName:"Royal & the Serpent",levelAuthorName:"fruhead"},stats:{plays:0,downloads:8427,upvotes:1704,downvotes:19,score:.9371},uploaded:"2020-11-29T23:09:47.309Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b748894960a346f1568b9f4876643f1358cfa897",key:"1181f",state:"Published",createdAt:"2020-11-29T23:09:47.309Z",sageScore:6,diffs:[{njs:10,offset:0,notes:277,bombs:0,obstacles:136,nps:1.793,length:224,characteristic:"Standard",difficulty:"Easy",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:43,warns:9,resets:0}},{njs:12,offset:-.3,notes:338,bombs:0,obstacles:134,nps:2.188,length:224,characteristic:"Standard",difficulty:"Normal",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:22,warns:11,resets:0}},{njs:14,offset:.4,notes:444,bombs:4,obstacles:144,nps:2.874,length:224,characteristic:"Standard",difficulty:"Hard",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:14,warns:4,resets:4}},{njs:16,offset:.25,notes:516,bombs:4,obstacles:109,nps:3.34,length:224,characteristic:"Standard",difficulty:"Expert",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:0,warns:0,resets:2}},{njs:18,offset:.1,notes:664,bombs:4,obstacles:109,nps:4.298,length:224,characteristic:"Standard",difficulty:"ExpertPlus",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:0,warns:0,resets:2}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Expert",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b748894960a346f1568b9f4876643f1358cfa897.zip",coverURL:"https://cdn.beatsaver.com/b748894960a346f1568b9f4876643f1358cfa897.jpg",previewURL:"https://cdn.beatsaver.com/b748894960a346f1568b9f4876643f1358cfa897.mp3"}],createdAt:"2020-11-29T23:09:47.309Z",updatedAt:"2020-11-29T23:09:47.309Z",lastPublishedAt:"2020-11-29T23:09:47.309Z"},{id:"3b31",name:"Wolfgang Lohr ft. Maskarade - Hit the Road Jack (Electro Swing)",description:"I realise this is the third time that this song has been made over the last month, so sorry for that. But If your not a fan of my version then please check out the other maps linked below.\r\nThis song happened because someone requested I do an electroswing map. This was not the one they asked for, but his request inspired me to do one of the same genre anyway. I'm happy with the way that expert turned out, but the other difficulties are perhaps a bit rushed on this one. I've left easy out again as the play rates are so low. But If this is a problem for anyone, please give me a message and I'll see about adding one in. Other than that, happy dancing!\r\n\r\nVideo Preview: https://www.youtube.com/watch?v=sg_hCGmoPNg\r\nTime spent mapping: 7:58\r\n\r\nAlternative versions:\r\nFrom SilverScythePC: https://beatsaver.com/browse/detail/12538-13416\r\nFrom Salvay: https://beatsaver.com/browse/detail/12752-13664",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:159,songName:"Hit the Road Jack (Electro Swing)",songSubName:"Wolfgang Lohr and Maskerade",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:7058,upvotes:3315,downvotes:73,score:.937},uploaded:"2019-03-03T13:06:00Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"46afff5698b59795c5e88f0b610b8321fb9b1791",key:"3b31",state:"Published",createdAt:"2019-03-03T13:06:00Z",sageScore:6,diffs:[{njs:10,offset:0,notes:261,bombs:4,obstacles:38,nps:1.702,length:317,characteristic:"Standard",difficulty:"Normal",events:1419,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.387,paritySummary:{errors:21,warns:18,resets:2}},{njs:12,offset:0,notes:473,bombs:7,obstacles:33,nps:3.084,length:317,characteristic:"Standard",difficulty:"Hard",events:1419,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.387,paritySummary:{errors:45,warns:22,resets:1}},{njs:16,offset:0,notes:656,bombs:7,obstacles:32,nps:4.267,length:317.75,characteristic:"Standard",difficulty:"Expert",events:1419,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.75,paritySummary:{errors:42,warns:22,resets:1}}],downloadURL:"https://cdn.beatsaver.com/46afff5698b59795c5e88f0b610b8321fb9b1791.zip",coverURL:"https://cdn.beatsaver.com/46afff5698b59795c5e88f0b610b8321fb9b1791.jpg",previewURL:"https://cdn.beatsaver.com/46afff5698b59795c5e88f0b610b8321fb9b1791.mp3"}],createdAt:"2019-03-03T13:06:00Z",updatedAt:"2019-03-03T13:06:00Z",lastPublishedAt:"2019-03-03T13:06:00Z"},{id:"13e9",name:"dark cat - BUBBLE TEA",description:"--------------------------------\r\ndark cat - BUBBLE TEA (feat. juu & cinders)\r\nTime: 4:01\r\nExpert: 1087 Notes\r\nHard: 969 Notes\r\n--------------------------------\r\nHi guys, I'm a bit busy with school right now\r\nso my upload rate is going to slow down for a while..\r\n ^-^",uploader:{id:4288141,name:"roeek",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f787",avatar:"https://cdn.beatsaver.com/avatar/321652344196694016.png",type:"DISCORD"},metadata:{bpm:160,duration:241,songName:"BUBBLE TEA",songSubName:"dark cat",songAuthorName:"Mapped by roeek",levelAuthorName:"roeek"},stats:{plays:0,downloads:12107,upvotes:8979,downvotes:310,score:.9368},uploaded:"2018-09-06T18:59:42Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"f83edec86d3faf683711ecb0a9df6bd65d2d0ce0",key:"13e9",state:"Published",createdAt:"2018-09-06T18:59:42Z",sageScore:6,diffs:[{njs:12,offset:0,notes:969,bombs:0,obstacles:12,nps:4.303,length:600.5,characteristic:"Standard",difficulty:"Hard",events:1043,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.188,paritySummary:{errors:26,warns:32,resets:0}},{njs:13,offset:0,notes:1087,bombs:0,obstacles:12,nps:4.827,length:600.5,characteristic:"Standard",difficulty:"Expert",events:1047,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.188,paritySummary:{errors:35,warns:36,resets:0},stars:3.65}],downloadURL:"https://cdn.beatsaver.com/f83edec86d3faf683711ecb0a9df6bd65d2d0ce0.zip",coverURL:"https://cdn.beatsaver.com/f83edec86d3faf683711ecb0a9df6bd65d2d0ce0.jpg",previewURL:"https://cdn.beatsaver.com/f83edec86d3faf683711ecb0a9df6bd65d2d0ce0.mp3"}],createdAt:"2018-09-06T18:59:42Z",updatedAt:"2018-09-06T18:59:42Z",lastPublishedAt:"2018-09-06T18:59:42Z"},{id:"46be",name:"Kill This Love - BLACKPINK",description:"Thanks to n3tman, snaccy, Helen Carnate, PandaCat, and SimplyMarvelous for their help.\n\nAfter a thousand years, BLACKPINK has finally come out with new songs. Hopefully this map will absolve me from what I did with my last BLACKPINK map (though I still snuck in some choreography to this map when it fit).\n\nExpert+ preview: https://youtu.be/7_epIbqHD3U (footage is of pre-release version)\n\nPreview video uses custom blackpink light sabers, which you can find in the kpop beat saber discord here\nhttps://discord.gg/c9uHGYP\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:132,duration:188,songName:"Kill This Love",songSubName:"BLACKPINK",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:15888,upvotes:4507,downvotes:120,score:.9367},uploaded:"2019-04-18T03:00:19Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8255fef3ce60e6a9ca404491b6d6fdfec158581e",key:"46be",state:"Published",createdAt:"2019-04-18T03:00:19Z",sageScore:3,diffs:[{njs:9,offset:0,notes:278,bombs:13,obstacles:15,nps:1.529,length:400,characteristic:"Standard",difficulty:"Normal",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.818,paritySummary:{errors:57,warns:36,resets:6}},{njs:10,offset:0,notes:448,bombs:11,obstacles:18,nps:2.464,length:400,characteristic:"Standard",difficulty:"Hard",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.818,paritySummary:{errors:47,warns:28,resets:6}},{njs:12,offset:0,notes:665,bombs:26,obstacles:19,nps:3.658,length:400,characteristic:"Standard",difficulty:"Expert",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.818,paritySummary:{errors:39,warns:37,resets:3}},{njs:14,offset:0,notes:779,bombs:36,obstacles:19,nps:4.285,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.818,paritySummary:{errors:55,warns:56,resets:7}}],downloadURL:"https://cdn.beatsaver.com/8255fef3ce60e6a9ca404491b6d6fdfec158581e.zip",coverURL:"https://cdn.beatsaver.com/8255fef3ce60e6a9ca404491b6d6fdfec158581e.jpg",previewURL:"https://cdn.beatsaver.com/8255fef3ce60e6a9ca404491b6d6fdfec158581e.mp3"}],createdAt:"2019-04-18T03:00:19Z",updatedAt:"2019-04-18T03:00:19Z",lastPublishedAt:"2019-04-18T03:00:19Z"},{id:"ce0",name:"South Park - Kyle's Mom's a Bitch",description:"Preview:\r\nhttps://www.youtube.com/watch?v=OjHoHbbZYDE\r\n\r\nKyle's mom's a bitch, she's a big fat bitch\r\nShe's the biggest bitch in the whole wide world",uploader:{id:4286278,name:"ruckus",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1d8",avatar:"https://cdn.beatsaver.com/avatar/239082462083284992.png",type:"DISCORD"},metadata:{bpm:156,duration:95,songName:"Kyle's Mom's a Bitch",songSubName:"South Park",songAuthorName:"Ruckus",levelAuthorName:"ruckus"},stats:{plays:0,downloads:6595,upvotes:3276,downvotes:73,score:.9367},uploaded:"2018-07-30T23:36:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7fda5a2459b48226cc7dbaedf9c31f5fd7aff488",key:"ce0",state:"Published",createdAt:"2018-07-30T23:36:18Z",sageScore:4,diffs:[{njs:12,offset:0,notes:474,bombs:0,obstacles:0,nps:5.911,length:208.5,characteristic:"Standard",difficulty:"ExpertPlus",events:655,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:80.192,paritySummary:{errors:42,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7fda5a2459b48226cc7dbaedf9c31f5fd7aff488.zip",coverURL:"https://cdn.beatsaver.com/7fda5a2459b48226cc7dbaedf9c31f5fd7aff488.jpg",previewURL:"https://cdn.beatsaver.com/7fda5a2459b48226cc7dbaedf9c31f5fd7aff488.mp3"}],createdAt:"2018-07-30T23:36:18Z",updatedAt:"2018-07-30T23:36:18Z",lastPublishedAt:"2018-07-30T23:36:18Z"},{id:"a909",name:"[TheFatRat Pack] Time Lapse - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nTime Lapse Stats:\nExpert+ - 782 Notes | 4.29 NPS\nExpert - 615 Notes | 3.37 NPS\n(One Saber) Expert - 496 Notes | 2.72 NPS\nHard - 493 Notes | 2.70 NPS\nNormal - 305 Notes | 1.67 NPS\nEasy - 180 Notes | 0.99 NPS\n\nRoughly 7-8 Hours of work\nGameplay: https://youtu.be/aYwKN3LnEZA\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:127,duration:182,songName:"Time Lapse",songSubName:"",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:8459,upvotes:2334,downvotes:40,score:.9366},uploaded:"2020-05-22T13:28:32.918Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a03cb0a107993be5cded1e91dc31e8a7b048f02a",key:"a909",state:"Published",createdAt:"2020-05-22T13:28:32.918Z",sageScore:6,diffs:[{njs:9,offset:0,notes:180,bombs:0,obstacles:33,nps:1.035,length:368,characteristic:"Standard",difficulty:"Easy",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.858,paritySummary:{errors:40,warns:1,resets:0}},{njs:11,offset:1,notes:305,bombs:0,obstacles:41,nps:1.735,length:372,characteristic:"Standard",difficulty:"Normal",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.748,paritySummary:{errors:24,warns:24,resets:0}},{njs:12,offset:1,notes:493,bombs:0,obstacles:36,nps:2.783,length:375,characteristic:"Standard",difficulty:"Hard",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.165,paritySummary:{errors:3,warns:0,resets:0}},{njs:15,offset:.1,notes:614,bombs:1,obstacles:67,nps:3.429,length:379,characteristic:"Standard",difficulty:"Expert",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.055,paritySummary:{errors:2,warns:0,resets:0}},{njs:19,offset:-.4,notes:782,bombs:0,obstacles:84,nps:4.402,length:376,characteristic:"Standard",difficulty:"ExpertPlus",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.638,paritySummary:{errors:1,warns:0,resets:0}},{njs:16,offset:0,notes:496,bombs:0,obstacles:119,nps:2.792,length:376,characteristic:"OneSaber",difficulty:"Expert",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.638,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a03cb0a107993be5cded1e91dc31e8a7b048f02a.zip",coverURL:"https://cdn.beatsaver.com/a03cb0a107993be5cded1e91dc31e8a7b048f02a.jpg",previewURL:"https://cdn.beatsaver.com/a03cb0a107993be5cded1e91dc31e8a7b048f02a.mp3"}],createdAt:"2020-05-22T13:28:32.918Z",updatedAt:"2020-05-22T13:28:32.918Z",lastPublishedAt:"2020-05-22T13:28:32.918Z"},{id:"8d49",name:"Dreamcatcher - Scream",description:"Expert+ by noxn and simplymarvellous\nExpert and Lighting by aggrogahu\n\nMap preview by aggrogahu: https://www.youtube.com/watch?v=Yv908yUt9O0\n\nExtra thanks to simplymarvellous for fixing all of my sync issues and creating some pog patterns while he was at it! And special thanks to Bloodcloak for some great changes and ideas!\n\nThis was my first collab map. I've really enjoyed playing it and working with people to make a great finished product!\n\nJoin us in the KPOP Beat Saber discord here: https://discord.gg/c9uHGYP\n\nAnd finally, my survey link <3: https://forms.gle/8nJVPiriTWPx9irT6",uploader:{id:4289789,name:"noxn",uniqueSet:!0,hash:"5daab87cc216d40006bef803",avatar:"https://cdn.beatsaver.com/avatar/132315398287785985.png",type:"DISCORD"},metadata:{bpm:138,duration:206,songName:"Scream",songSubName:"",songAuthorName:"Dreamcatcher",levelAuthorName:"noxn; simplymarvellous; aggrogahu"},stats:{plays:0,downloads:9907,upvotes:1737,downvotes:21,score:.9366},uploaded:"2020-03-04T23:07:51.556Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"94e31eda51f8afd9e59c9895972b80775556cf6a",key:"8d49",state:"Published",createdAt:"2020-03-04T23:07:51.556Z",sageScore:5,diffs:[{njs:16,offset:.2,notes:717,bombs:48,obstacles:36,nps:3.616,length:456,characteristic:"Standard",difficulty:"Expert",events:2568,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.261,paritySummary:{errors:19,warns:24,resets:9}},{njs:18,offset:-.5,notes:1068,bombs:52,obstacles:47,nps:5.387,length:456,characteristic:"Standard",difficulty:"ExpertPlus",events:2568,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.261,paritySummary:{errors:11,warns:15,resets:2}}],downloadURL:"https://cdn.beatsaver.com/94e31eda51f8afd9e59c9895972b80775556cf6a.zip",coverURL:"https://cdn.beatsaver.com/94e31eda51f8afd9e59c9895972b80775556cf6a.jpg",previewURL:"https://cdn.beatsaver.com/94e31eda51f8afd9e59c9895972b80775556cf6a.mp3"}],createdAt:"2020-03-04T23:07:51.556Z",updatedAt:"2020-03-04T23:07:51.556Z",lastPublishedAt:"2020-03-04T23:07:51.556Z"},{id:"129bf",name:"LeaF - Mope Mope(Noodle Extensions, Chroma)",description:"Preview:\nhttps://www.youtube.com/watch?v=p9U5Y2iFoRQ&t=11s\nWarnings:\n--Fast Flashing Images\n--Disturbing Contents\n--This Level is NOT for Children--\nRequirements:\nNoodle Extensions, Chroma\nLeft-Handed and Custom Notes will cause some bugs\nSome of the bombs are fake:)\nThank you Moe ChiaKi for testing the map OwO",uploader:{id:4289114,name:"waika",uniqueSet:!0,hash:"5cff0b7698cc5a672c85464f",avatar:"https://cdn.beatsaver.com/avatar/530663167244894220.png",type:"DISCORD"},metadata:{bpm:200,duration:111,songName:"Mope Mope",songSubName:"",songAuthorName:"LeaF",levelAuthorName:"waika"},stats:{plays:0,downloads:9472,upvotes:3722,downvotes:90,score:.9366},uploaded:"2021-01-12T07:11:32.915Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6c9d463c1cf556246cf60bfaef75fc4f8ea3053f",key:"129bf",state:"Published",createdAt:"2021-01-12T07:11:32.915Z",sageScore:5,diffs:[{njs:16,offset:2,notes:968,bombs:4092,obstacles:303,nps:9.089,length:355,characteristic:"Standard",difficulty:"ExpertPlus",events:5812,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:106.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6c9d463c1cf556246cf60bfaef75fc4f8ea3053f.zip",coverURL:"https://cdn.beatsaver.com/6c9d463c1cf556246cf60bfaef75fc4f8ea3053f.jpg",previewURL:"https://cdn.beatsaver.com/6c9d463c1cf556246cf60bfaef75fc4f8ea3053f.mp3"}],createdAt:"2021-01-12T07:11:32.915Z",updatedAt:"2021-01-12T07:11:32.915Z",lastPublishedAt:"2021-01-12T07:11:32.915Z"},{id:"12d9",name:"Snail's House - Pixel Galaxy",description:"Hard/Expert | BPM: 150 | Length: 3:46 | Notes: 493/787\r\n\r\nIt's a really nice song. Not much else to say\r\nA lot of manual lighting too :D\r\n\r\n10th Map.\r\n\r\nPreview:\r\nhttps://www.youtube.com/watch?v=5xvJlMob-ok\r\nSong:\r\nhttps://www.youtube.com/watch?v=3nlSDxvt6JU",uploader:{id:4285825,name:"fefeland",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3bb",avatar:"https://cdn.beatsaver.com/avatar/119360573191225344.png",type:"DISCORD"},metadata:{bpm:150,duration:227,songName:"Pixel Galaxy",songSubName:"Snail's House",songAuthorName:"FEFELAND",levelAuthorName:"fefeland"},stats:{plays:0,downloads:6468,upvotes:2912,downvotes:60,score:.9366},uploaded:"2018-08-31T22:56:17Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"848b35a0028465bc4d76fd3cafb5acc4b2c70d5a",key:"12d9",state:"Published",createdAt:"2018-08-31T22:56:17Z",sageScore:6,diffs:[{njs:9,offset:0,notes:493,bombs:0,obstacles:0,nps:2.268,length:543.5,characteristic:"Standard",difficulty:"Hard",events:1741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.4,paritySummary:{errors:47,warns:20,resets:0},stars:1.49},{njs:12,offset:0,notes:787,bombs:0,obstacles:0,nps:3.62,length:543.5,characteristic:"Standard",difficulty:"Expert",events:1741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.4,paritySummary:{errors:41,warns:28,resets:0}}],downloadURL:"https://cdn.beatsaver.com/848b35a0028465bc4d76fd3cafb5acc4b2c70d5a.zip",coverURL:"https://cdn.beatsaver.com/848b35a0028465bc4d76fd3cafb5acc4b2c70d5a.jpg",previewURL:"https://cdn.beatsaver.com/848b35a0028465bc4d76fd3cafb5acc4b2c70d5a.mp3"}],createdAt:"2018-08-31T22:56:17Z",updatedAt:"2018-08-31T22:56:17Z",lastPublishedAt:"2018-08-31T22:56:17Z"},{id:"124",name:"Rasputin (Funk Overload)",description:"Hard\r\nBpm 147\r\nspeed up version of rasputin Original",uploader:{id:48512,name:"jobas",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9a2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9a2?d=retro",type:"SIMPLE"},metadata:{bpm:149,duration:239,songName:"Rasputin (Funk Overload)",songSubName:"",songAuthorName:"Jobas",levelAuthorName:"jobas"},stats:{plays:0,downloads:20546,upvotes:20981,downvotes:890,score:.9366},uploaded:"2018-05-19T16:36:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9a1d001995cc0a2014352aa7148cbcbf2e489d89",key:"124",state:"Published",createdAt:"2018-05-19T16:36:34Z",sageScore:5,diffs:[{njs:10,offset:0,notes:768,bombs:0,obstacles:154,nps:3.329,length:586.013,characteristic:"Standard",difficulty:"Hard",events:1109,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:235.978,paritySummary:{errors:58,warns:141,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9a1d001995cc0a2014352aa7148cbcbf2e489d89.zip",coverURL:"https://cdn.beatsaver.com/9a1d001995cc0a2014352aa7148cbcbf2e489d89.jpg",previewURL:"https://cdn.beatsaver.com/9a1d001995cc0a2014352aa7148cbcbf2e489d89.mp3"}],createdAt:"2018-05-19T16:36:34Z",updatedAt:"2018-05-19T16:36:34Z",lastPublishedAt:"2018-05-19T16:36:34Z"},{id:"12ad1",name:"Minnesota - Colors (ft. Jackie Rain) | Chroma RGB",description:"Chroma 2.0 HIGHLY RECOMMENDED!\n\nHad this map sitting in my project folder for some months and finally got to finish it! \nIt features a Chroma RGB lightshow AND Rainbow notes, for the full COLOR experience :)\n\nPreview: https://www.youtube.com/watch?v=8Omzd7IdJt0",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:140,duration:202,songName:"Colors",songSubName:"(ft. Jackie Rain)",songAuthorName:"Minnesota",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:3903,upvotes:1230,downvotes:7,score:.9364},uploaded:"2021-01-13T15:55:44.846Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"03fcb98091e50600d9d777251d765c53384c2735",key:"12ad1",state:"Published",createdAt:"2021-01-13T15:55:44.846Z",sageScore:4,diffs:[{njs:13,offset:.5,notes:395,bombs:0,obstacles:221,nps:2.057,length:448,characteristic:"Standard",difficulty:"Hard",events:16569,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:601,bombs:0,obstacles:113,nps:3.13,length:448,characteristic:"Standard",difficulty:"Expert",events:16569,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:-.5,notes:911,bombs:0,obstacles:120,nps:4.745,length:448,characteristic:"Standard",difficulty:"ExpertPlus",events:16569,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/03fcb98091e50600d9d777251d765c53384c2735.zip",coverURL:"https://cdn.beatsaver.com/03fcb98091e50600d9d777251d765c53384c2735.jpg",previewURL:"https://cdn.beatsaver.com/03fcb98091e50600d9d777251d765c53384c2735.mp3"}],createdAt:"2021-01-13T15:55:44.846Z",updatedAt:"2021-01-13T15:55:44.846Z",lastPublishedAt:"2021-01-13T15:55:44.846Z"},{id:"6094",name:"Legend - The Score",description:"https://www.youtube.com/watch?v=M5oxJRVwwCY",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:82,duration:190,songName:"Legend",songSubName:"",songAuthorName:"The Score",levelAuthorName:"DownyCat"},stats:{plays:0,downloads:5059,upvotes:1752,downvotes:22,score:.9363},uploaded:"2019-09-01T13:23:40.596Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f1c24c4b08a1126017ba8a96da4828d2d949f46b",key:"6094",state:"Published",createdAt:"2019-09-01T13:23:40.596Z",sageScore:6,diffs:[{njs:12,offset:0,notes:357,bombs:0,obstacles:37,nps:2.006,length:243.25,characteristic:"Standard",difficulty:"Normal",events:3490,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.988,paritySummary:{errors:5,warns:0,resets:0}},{njs:12,offset:0,notes:537,bombs:0,obstacles:47,nps:3.017,length:243.25,characteristic:"Standard",difficulty:"Hard",events:3490,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.988,paritySummary:{errors:3,warns:0,resets:0}},{njs:16,offset:0,notes:728,bombs:0,obstacles:42,nps:4.09,length:243.25,characteristic:"Standard",difficulty:"Expert",events:3490,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.988,paritySummary:{errors:5,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f1c24c4b08a1126017ba8a96da4828d2d949f46b.zip",coverURL:"https://cdn.beatsaver.com/f1c24c4b08a1126017ba8a96da4828d2d949f46b.jpg",previewURL:"https://cdn.beatsaver.com/f1c24c4b08a1126017ba8a96da4828d2d949f46b.mp3"}],createdAt:"2019-09-01T13:23:40.596Z",updatedAt:"2019-09-01T13:23:40.596Z",lastPublishedAt:"2019-09-01T13:23:40.596Z"},{id:"d4a5",name:"[FUTURE FUNK PACK] Shiawase No Monosashi (VANTAGE // Short Ver.)",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\n"Shiawase No Monosashi" is performed by Mariya Takeuchi. This version of the song is a short edit I made from VANTAGE //\'s edit. The original length of the song is 5 minutes long\n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:128,duration:171,songName:"Shiawase No Monosashi",songSubName:"(VANTAGE // Short Ver.)",songAuthorName:"Mariya Takeuchi",levelAuthorName:"ETAN"},stats:{plays:0,downloads:6944,upvotes:1542,downvotes:16,score:.9362},uploaded:"2020-08-12T18:17:44.285Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d7cb32f23041dec272de3da0ac141dd8f91478ca",key:"d4a5",state:"Published",createdAt:"2020-08-12T18:17:44.285Z",sageScore:7,diffs:[{njs:10,offset:1,notes:168,bombs:16,obstacles:1,nps:1.029,length:348.25,characteristic:"Standard",difficulty:"Easy",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.242,paritySummary:{errors:0,warns:0,resets:0}},{njs:11,offset:1,notes:255,bombs:16,obstacles:1,nps:1.562,length:348.25,characteristic:"Standard",difficulty:"Normal",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.242,paritySummary:{errors:1,warns:1,resets:0}},{njs:12,offset:1,notes:358,bombs:16,obstacles:1,nps:2.193,length:348.25,characteristic:"Standard",difficulty:"Hard",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.242,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:557,bombs:16,obstacles:1,nps:3.335,length:356.25,characteristic:"Standard",difficulty:"Expert",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.992,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:-.5,notes:778,bombs:16,obstacles:1,nps:4.659,length:356.25,characteristic:"Standard",difficulty:"ExpertPlus",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.992,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d7cb32f23041dec272de3da0ac141dd8f91478ca.zip",coverURL:"https://cdn.beatsaver.com/d7cb32f23041dec272de3da0ac141dd8f91478ca.jpg",previewURL:"https://cdn.beatsaver.com/d7cb32f23041dec272de3da0ac141dd8f91478ca.mp3"}],createdAt:"2020-08-12T18:17:44.285Z",updatedAt:"2020-08-12T18:17:44.285Z",lastPublishedAt:"2020-08-12T18:17:44.285Z"},{id:"75a8",name:"Silhouette [Naruto Shippuden 16th Opening] - KANA-BOON",description:"This map was converted from one of my old maps.\n\nFeel free to DM me on discord @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:183,duration:127,songName:"Silhouette (TV Size)",songSubName:"",songAuthorName:"KANA-BOON",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:10318,upvotes:2707,downvotes:54,score:.9362},uploaded:"2019-12-11T07:31:02.566Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ba8d44529d21da1128bc70034ee608b6e8a19a63",key:"75a8",state:"Published",createdAt:"2019-12-11T07:31:02.566Z",sageScore:4,diffs:[{njs:12,offset:0,notes:412,bombs:0,obstacles:0,nps:3.383,length:371.5,characteristic:"Standard",difficulty:"Hard",events:2826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:121.803,paritySummary:{errors:20,warns:20,resets:0}},{njs:14,offset:0,notes:520,bombs:0,obstacles:0,nps:4.269,length:371.5,characteristic:"Standard",difficulty:"Expert",events:2826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:121.803,paritySummary:{errors:42,warns:24,resets:0}},{njs:16,offset:0,notes:710,bombs:0,obstacles:0,nps:5.829,length:371.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3013,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:121.803,paritySummary:{errors:51,warns:65,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ba8d44529d21da1128bc70034ee608b6e8a19a63.zip",coverURL:"https://cdn.beatsaver.com/ba8d44529d21da1128bc70034ee608b6e8a19a63.jpg",previewURL:"https://cdn.beatsaver.com/ba8d44529d21da1128bc70034ee608b6e8a19a63.mp3"}],createdAt:"2019-12-11T07:31:02.566Z",updatedAt:"2019-12-11T07:31:02.566Z",lastPublishedAt:"2019-12-11T07:31:02.566Z"},{id:"5e44",name:"Wolf In Sheep's Clothing - Set It Off",description:"“Wolf In Sheep’s Clothing” is a song by American pop punk band Set It Off. The song appears on their album Duality.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:165,duration:189,songName:"Wolf In Sheep's Clothing",songSubName:"",songAuthorName:"Set It Off",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3557,upvotes:1766,downvotes:23,score:.936},uploaded:"2019-08-21T14:32:59.705Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"71498322889259738dfbd9fdae23fc94bc382793",key:"5e44",state:"Published",createdAt:"2019-08-21T14:32:59.705Z",sageScore:6,diffs:[{njs:15,offset:0,notes:710,bombs:12,obstacles:2,nps:3.844,length:508,characteristic:"Standard",difficulty:"Expert",events:2219,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.727,paritySummary:{errors:45,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/71498322889259738dfbd9fdae23fc94bc382793.zip",coverURL:"https://cdn.beatsaver.com/71498322889259738dfbd9fdae23fc94bc382793.jpg",previewURL:"https://cdn.beatsaver.com/71498322889259738dfbd9fdae23fc94bc382793.mp3"}],createdAt:"2019-08-21T14:32:59.705Z",updatedAt:"2019-08-21T14:32:59.705Z",lastPublishedAt:"2019-08-21T14:32:59.705Z"},{id:"2db0",name:"RESISTER [Sword Art Online: Alicization 2nd Opening] - ASCA",description:"As requested by @Shoko84 & @Sotarks: RESISTER, the second opening to Sword Art Online: Alicization by ASCA!\r\n\r\n(Originally came in only expert plus but poor Sotarks couldn't do it so thank him for making me include an expert and hard xP)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:183,duration:226,songName:"RESISTER",songSubName:"ASCA",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:6798,upvotes:3257,downvotes:75,score:.9359},uploaded:"2019-01-14T18:07:01Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eb52dc76edd0eeee542ca6d339127f88dce9a5f4",key:"2db0",state:"Published",createdAt:"2019-01-14T18:07:01Z",sageScore:6,diffs:[{njs:11,offset:0,notes:852,bombs:0,obstacles:45,nps:3.85,length:675,characteristic:"Standard",difficulty:"Hard",events:4117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.311,paritySummary:{errors:39,warns:22,resets:0}},{njs:13,offset:0,notes:970,bombs:0,obstacles:45,nps:4.383,length:675,characteristic:"Standard",difficulty:"Expert",events:4117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.311,paritySummary:{errors:47,warns:56,resets:0}},{njs:15,offset:0,notes:1162,bombs:0,obstacles:51,nps:5.251,length:675,characteristic:"Standard",difficulty:"ExpertPlus",events:4117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.311,paritySummary:{errors:36,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/eb52dc76edd0eeee542ca6d339127f88dce9a5f4.zip",coverURL:"https://cdn.beatsaver.com/eb52dc76edd0eeee542ca6d339127f88dce9a5f4.jpg",previewURL:"https://cdn.beatsaver.com/eb52dc76edd0eeee542ca6d339127f88dce9a5f4.mp3"}],createdAt:"2019-01-14T18:07:01Z",updatedAt:"2019-01-14T18:07:01Z",lastPublishedAt:"2019-01-14T18:07:01Z"},{id:"2475",name:"Bring It On - Giga-P",description:"Probably Giga-P's most famous song, Bring It On / 劣等上等 (Rettou Joutou / Inferiority Superiority), made for the 10th anniversary of the Vocaloids Rin and Len. This song has quickly entered the Hall of Fame and rightly so as it is one of everyone's (or at least, mine) favorite Vocaloid songs. because of that I knew I had to make a good map out of it. I had a lot of fun making this one and I hope it shows!\r\n\r\nAudio edits: extended intro and slight enhancements to the mix has been made since I had access to the vocals and karaoke tracks, to make the audio fit better in Beat Saber.\r\n\r\nPreview video:\r\nhttps://youtu.be/16oSzYCTD3A\r\n\r\nBPM: 160\r\nDuration: 3:56\r\nEasy, Normal, Hard and Expert difficulties.\r\n\r\nEasy: 335, 7 obstacles, 4 mines\r\nNormal: 469 notes, 10 obstacles, 8 mines\r\nHard: 665 notes, 14 obstacles, 24 mines\r\nExpert: 845 notes, 15 obstacles, 28 mines\r\n\r\nMap includes three different audio versions:\r\n* Full vocal version; the standard version of the song.\r\n* Karaoke version; you can sing along with backing vocals!\r\n* Instrumental version; If you don't want any backing or main vocals this is the version to use.\r\nTo change between these search for \"GigaP_Bring_It_On.ogg\" in your CustomSongs folder and open the folder where that file resides. Change the name of GigaP_Bring_It_On.ogg to GigaP_Bring_It_On_Standard.ogg and rename any of the other two versions to GigaP_Bring_It_On.ogg. Start the game and enjoy!\r\n\r\nThanks to AaltopahWi, RedMagi and ManDynasty for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:160,duration:236,songName:"Bring It On",songSubName:"Giga-P",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:9117,upvotes:3878,downvotes:99,score:.9359},uploaded:"2018-12-07T21:36:14Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"4cb323a4340177d7b7ca74f67f6b920ed320ee5e",key:"2475",state:"Published",createdAt:"2018-12-07T21:36:14Z",sageScore:5,diffs:[{njs:10,offset:0,notes:335,bombs:4,obstacles:7,nps:1.462,length:611,characteristic:"Standard",difficulty:"Easy",events:2906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.125,paritySummary:{errors:63,warns:28,resets:0},stars:1.02},{njs:11,offset:0,notes:469,bombs:8,obstacles:10,nps:2.047,length:611,characteristic:"Standard",difficulty:"Normal",events:2906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.125,paritySummary:{errors:69,warns:52,resets:4},stars:1.36},{njs:12,offset:0,notes:665,bombs:24,obstacles:14,nps:2.902,length:611,characteristic:"Standard",difficulty:"Hard",events:2906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.125,paritySummary:{errors:74,warns:79,resets:7},stars:1.95},{njs:13,offset:0,notes:845,bombs:28,obstacles:15,nps:3.688,length:611,characteristic:"Standard",difficulty:"Expert",events:3259,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.125,paritySummary:{errors:91,warns:115,resets:12},stars:2.64}],downloadURL:"https://cdn.beatsaver.com/4cb323a4340177d7b7ca74f67f6b920ed320ee5e.zip",coverURL:"https://cdn.beatsaver.com/4cb323a4340177d7b7ca74f67f6b920ed320ee5e.jpg",previewURL:"https://cdn.beatsaver.com/4cb323a4340177d7b7ca74f67f6b920ed320ee5e.mp3"}],createdAt:"2018-12-07T21:36:14Z",updatedAt:"2018-12-07T21:36:14Z",lastPublishedAt:"2018-12-07T21:36:14Z"},{id:"19d5",name:"BABY GOT BACK - Sir Mix A Lot (Mapped by GreatYazer)",description:"Oh, my, God Becky, look at her butt",uploader:{id:41378,name:"greatyazer",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea71",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea71?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:265,songName:"Baby Got Back",songSubName:"Sir Mix A Lot",songAuthorName:"GreatYazer",levelAuthorName:"greatyazer"},stats:{plays:0,downloads:9264,upvotes:3382,downvotes:80,score:.9359},uploaded:"2018-10-12T12:34:15Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9d5dbcb878623f3396395cec0e6e8e07d48d2256",key:"19d5",state:"Published",createdAt:"2018-10-12T12:34:15Z",sageScore:5,diffs:[{njs:10,offset:0,notes:254,bombs:0,obstacles:0,nps:1.044,length:519,characteristic:"Standard",difficulty:"Easy",events:2124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.281,paritySummary:{errors:61,warns:19,resets:0}},{njs:10,offset:0,notes:394,bombs:0,obstacles:1,nps:1.62,length:519,characteristic:"Standard",difficulty:"Normal",events:2124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.281,paritySummary:{errors:100,warns:34,resets:0}},{njs:10,offset:0,notes:603,bombs:0,obstacles:9,nps:2.479,length:519,characteristic:"Standard",difficulty:"Hard",events:2124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.281,paritySummary:{errors:79,warns:48,resets:0}},{njs:10,offset:0,notes:889,bombs:0,obstacles:14,nps:3.654,length:519,characteristic:"Standard",difficulty:"Expert",events:2124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.281,paritySummary:{errors:107,warns:66,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9d5dbcb878623f3396395cec0e6e8e07d48d2256.zip",coverURL:"https://cdn.beatsaver.com/9d5dbcb878623f3396395cec0e6e8e07d48d2256.jpg",previewURL:"https://cdn.beatsaver.com/9d5dbcb878623f3396395cec0e6e8e07d48d2256.mp3"}],createdAt:"2018-10-12T12:34:15Z",updatedAt:"2018-10-12T12:34:15Z",lastPublishedAt:"2018-10-12T12:34:15Z"},{id:"d00c",name:"[Extra Sensory] Hayako - Analys",description:'WE ARE BACK\n\nMassive thanks to these people for making all of this possible!!\nAeroluna- For making Noodle Extensions and updating Chroma\nCyan- For spending almost a full day starting at effects with and for me and also helping with making sure the mapping wasnt horrible\nArti- CusomJsonData and helping make this whole project happen initially at all!!\nFMS_Cat- Map heavily inspired and made from his original, https://youtu.be/eqZE60HanCM . The we are back text was also modeled after that in his chart\n\nAnd anyone else who helped me out while I was being dumb with this whole thing\n\nThis map was released as a part of the "Extra Sensory" event.\n\nVideo: https://youtu.be/sYkW_AWUEL8',uploader:{id:4235136,name:"reaxt",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ab",avatar:"https://cdn.beatsaver.com/avatar/163052863038291970.png",type:"DISCORD"},metadata:{bpm:170,duration:129,songName:"ANALYS",songSubName:"",songAuthorName:"HAYAKO",levelAuthorName:"Reaxt"},stats:{plays:0,downloads:6832,upvotes:4995,downvotes:145,score:.9358},uploaded:"2020-08-06T16:52:58.027Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f6dbd83b699872e2e42c2fc90337ef0ac2ab8f30",key:"d00c",state:"Published",createdAt:"2020-08-06T16:52:58.027Z",sageScore:3,diffs:[{njs:19,offset:0,notes:2390,bombs:100,obstacles:502,nps:19.238,length:352,characteristic:"Standard",difficulty:"ExpertPlus",events:2478,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:124.235,paritySummary:{errors:149,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f6dbd83b699872e2e42c2fc90337ef0ac2ab8f30.zip",coverURL:"https://cdn.beatsaver.com/f6dbd83b699872e2e42c2fc90337ef0ac2ab8f30.jpg",previewURL:"https://cdn.beatsaver.com/f6dbd83b699872e2e42c2fc90337ef0ac2ab8f30.mp3"}],createdAt:"2020-08-06T16:52:58.027Z",updatedAt:"2020-08-06T16:52:58.027Z",lastPublishedAt:"2020-08-06T16:52:58.027Z"},{id:"85b",name:"Take Me Home, Country Road - Fallout 76 Version",description:"Easy to beat, but a blast to play through. Enjoy!",uploader:{id:50560,name:"npcinnkeeper",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f8e7",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f8e7?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:178,songName:"Take Me Home, Country Roads",songSubName:"Fallout 76",songAuthorName:"NPC Innkeeper",levelAuthorName:"npcinnkeeper"},stats:{plays:0,downloads:12534,upvotes:5946,downvotes:185,score:.9358},uploaded:"2018-07-07T14:08:33Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9ed3b706b2306c00c2ad70a287c784277dbb5d74",key:"85b",state:"Published",createdAt:"2018-07-07T14:08:33Z",sageScore:4,diffs:[{njs:10,offset:0,notes:536,bombs:14,obstacles:13,nps:3.131,length:456.5,characteristic:"Standard",difficulty:"Hard",events:954,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.188,paritySummary:{errors:141,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9ed3b706b2306c00c2ad70a287c784277dbb5d74.zip",coverURL:"https://cdn.beatsaver.com/9ed3b706b2306c00c2ad70a287c784277dbb5d74.jpg",previewURL:"https://cdn.beatsaver.com/9ed3b706b2306c00c2ad70a287c784277dbb5d74.mp3"}],createdAt:"2018-07-07T14:08:33Z",updatedAt:"2018-07-07T14:08:33Z",lastPublishedAt:"2018-07-07T14:08:33Z"},{id:"4d62",name:"Skrillex - Bangarang",description:"Feedback on Discord: nitronik.exe#7974\n\nNOTE: There are two expert+ difficulties and so there is no easy mode!\nanyways, hope you enjoy!\npreview: https://www.youtube.com/watch?v=p0Z6U8x9fb4",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:110,duration:219,songName:"Bangarang",songSubName:"Skrillex",songAuthorName:"nitronik.exe",levelAuthorName:"nitronikexe"},stats:{plays:0,downloads:12246,upvotes:5033,downvotes:147,score:.9357},uploaded:"2019-05-17T11:28:44Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"137e76fcfb08e99695f481f7133cef173fd7fa8e",key:"4d62",state:"Published",createdAt:"2019-05-17T11:28:44Z",sageScore:8,diffs:[{njs:10,offset:0,notes:631,bombs:0,obstacles:6,nps:3.152,length:367,characteristic:"Standard",difficulty:"Easy",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.182,paritySummary:{errors:129,warns:0,resets:0}},{njs:10,offset:0,notes:708,bombs:0,obstacles:14,nps:3.527,length:368,characteristic:"Standard",difficulty:"Normal",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.727,paritySummary:{errors:26,warns:25,resets:0}},{njs:13,offset:0,notes:881,bombs:0,obstacles:14,nps:4.389,length:368,characteristic:"Standard",difficulty:"Hard",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.727,paritySummary:{errors:3,warns:3,resets:0}},{njs:16,offset:0,notes:1032,bombs:108,obstacles:29,nps:5.141,length:368,characteristic:"Standard",difficulty:"Expert",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.727,paritySummary:{errors:2,warns:0,resets:4}},{njs:17,offset:0,notes:1088,bombs:0,obstacles:26,nps:5.42,length:368,characteristic:"Standard",difficulty:"ExpertPlus",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.727,paritySummary:{errors:54,warns:42,resets:0}}],downloadURL:"https://cdn.beatsaver.com/137e76fcfb08e99695f481f7133cef173fd7fa8e.zip",coverURL:"https://cdn.beatsaver.com/137e76fcfb08e99695f481f7133cef173fd7fa8e.jpg",previewURL:"https://cdn.beatsaver.com/137e76fcfb08e99695f481f7133cef173fd7fa8e.mp3"}],createdAt:"2019-05-17T11:28:44Z",updatedAt:"2019-05-17T11:28:44Z",lastPublishedAt:"2019-05-17T11:28:44Z"},{id:"97ac",name:"Mick Gordon - Unholy Crusade",description:"Rip and tear\r\n\r\n\r\nExtra super huge thank you to the following people for making this possible\r\nAeroluna- For making Noodle Extensions and updating Chroma\r\nSpooky Ghost- For making Beatwalls\r\nArti- For making the core mod that allowed Noodle Extensions and Chroma to support the new values\r\n\r\nAnd thank you for putting up with my shit during this :)\r\n\r\nVideo: https://www.youtube.com/watch?v=zhIIh3nccNQ",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:150,duration:167,songName:"Unholy Crusade",songSubName:"",songAuthorName:"Mick Gordon",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:6492,upvotes:2903,downvotes:63,score:.9356},uploaded:"2020-04-05T15:44:13.116Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"abc41236f324093fbf711abce8c18c2a47debe20",key:"97ac",state:"Published",createdAt:"2020-04-05T15:44:13.116Z",sageScore:4,diffs:[{njs:19,offset:-.3,notes:650,bombs:0,obstacles:21376,nps:4.331,length:375.23,characteristic:"Lawless",difficulty:"ExpertPlus",events:3853,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:150.092,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/abc41236f324093fbf711abce8c18c2a47debe20.zip",coverURL:"https://cdn.beatsaver.com/abc41236f324093fbf711abce8c18c2a47debe20.jpg",previewURL:"https://cdn.beatsaver.com/abc41236f324093fbf711abce8c18c2a47debe20.mp3"}],createdAt:"2020-04-05T15:44:13.116Z",updatedAt:"2020-04-05T15:44:13.116Z",lastPublishedAt:"2020-04-05T15:44:13.116Z"},{id:"462",name:"The Nights - Avicii",description:"The Nights By Avicii.\r\nThis is my first beatmap, feedback would be greatly appreciated :)",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:173,songName:"The Nights",songSubName:"",songAuthorName:"Avicii",levelAuthorName:"rocket"},stats:{plays:0,downloads:22239,upvotes:11170,downvotes:426,score:.9356},uploaded:"2018-06-08T23:20:50Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2c002d2874e029db43f3c7cf9bb271ae0d769b74",key:"462",state:"Published",createdAt:"2018-06-08T23:20:50Z",sageScore:5,diffs:[{njs:10,offset:0,notes:200,bombs:4,obstacles:14,nps:1.207,length:348,characteristic:"Standard",difficulty:"Normal",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.714,paritySummary:{errors:45,warns:19,resets:0},stars:.92},{njs:10,offset:0,notes:402,bombs:6,obstacles:14,nps:2.426,length:348,characteristic:"Standard",difficulty:"Hard",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.714,paritySummary:{errors:88,warns:44,resets:0}},{njs:10,offset:0,notes:702,bombs:10,obstacles:14,nps:4.236,length:348,characteristic:"Standard",difficulty:"Expert",events:705,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.714,paritySummary:{errors:119,warns:72,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2c002d2874e029db43f3c7cf9bb271ae0d769b74.zip",coverURL:"https://cdn.beatsaver.com/2c002d2874e029db43f3c7cf9bb271ae0d769b74.jpg",previewURL:"https://cdn.beatsaver.com/2c002d2874e029db43f3c7cf9bb271ae0d769b74.mp3"}],createdAt:"2018-06-08T23:20:50Z",updatedAt:"2018-06-08T23:20:50Z",lastPublishedAt:"2018-06-08T23:20:50Z"},{id:"9c54",name:"Yunomi - 惑星ラビット (feat. TORIENA)/Wakusei Rabbit[Wall Map]",description:'seventh map! [Noodle Extensions & Chroma] map!\nYunomi - Wakusei Rabbit (feat. TORIENA) Planet Rabbit\n \n!! This map requires!!\nNoodle Extensions , Chroma\n\nNoodle Extensions と Chromaが古いバージョンの時代に作ったので、最新バージョンだと壁のY軸(高さ)が破綻します。。\n昔と違い、RequirementsにMapping Extensionsが記載されていると干渉してしまうようなので、\n\n壁を正常に表示するには、以下の修正をお願い致します。\n1. info.datをテキストエディタ等で開く。\n2.「,"Mapping Extensions"」を検索し削除(3か所) コンマも含めますご注意ください。\n\n--(English)\nUnlike in the past, it seems to interfere with the Mapping Extensions listed in Requirements.\nIn order to display the wall properly, please make the following modifications.\n1. Open info.dat with a text editor.\n2. Search for [ , "Mapping Extensions"] and delete it (in three places), including commas.\n--\n\nMy Twitter : https://twitter.com/kamy_0811\n\n[Song info]\nSong name : Wakusei Rabbit\nAlbum : Oedo Controller\nMusic & Lyrics : Yunomi \nVocal : TORIENA\nArtwork : Kiato \nSoundCloud : https://soundcloud.com/tkrism/wakuseirabbit\nPlay movie : https://youtu.be/6WXJqlHQ4To',uploader:{id:4285148,name:"kamy",uniqueSet:!0,hash:"5e42a3f4d523400006369ea0",avatar:"https://cdn.beatsaver.com/avatar/415431418663927810.png",type:"DISCORD"},metadata:{bpm:174,duration:204,songName:"Wakusei_Rabbit",songSubName:"feat. TORIENA",songAuthorName:"Yunomi",levelAuthorName:"kamy"},stats:{plays:0,downloads:6028,upvotes:1794,downvotes:25,score:.9355},uploaded:"2020-04-18T14:46:30.487Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3b680d87cbba69bda48081e97dc925464116f41f",key:"9c54",state:"Published",createdAt:"2020-04-18T14:46:30.487Z",sageScore:7,diffs:[{njs:14,offset:0,notes:0,bombs:0,obstacles:27053,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:2845,chroma:!0,me:!0,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:762,bombs:0,obstacles:27053,nps:3.867,length:571.5,characteristic:"Standard",difficulty:"Hard",events:2848,chroma:!0,me:!0,ne:!0,cinema:!1,seconds:197.069,paritySummary:{errors:0,warns:2,resets:0}},{njs:17,offset:0,notes:1246,bombs:0,obstacles:27053,nps:6.323,length:571.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2845,chroma:!0,me:!0,ne:!0,cinema:!1,seconds:197.069,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3b680d87cbba69bda48081e97dc925464116f41f.zip",coverURL:"https://cdn.beatsaver.com/3b680d87cbba69bda48081e97dc925464116f41f.jpg",previewURL:"https://cdn.beatsaver.com/3b680d87cbba69bda48081e97dc925464116f41f.mp3"}],createdAt:"2020-04-18T14:46:30.487Z",updatedAt:"2020-04-18T14:46:30.487Z",lastPublishedAt:"2020-04-18T14:46:30.487Z"},{id:"1f42",name:"Field of Hopes and Dreams (Deltarune) - Toby Fox",description:"Song by Toby Fox\r\nVideo: https://youtu.be/2V7IFAKTIp4\r\n\r\n Expert, Hard, Normal\r\nBPM:120\r\nObstacles: 0\r\n\r\n-Expert-\r\nNotes: 513\r\nNotes per second: 3.12\r\nJump Speed: 13\r\n\r\n-Hard-\r\nNotes: 325\r\nNotes per second: 1.97\r\nJump Speed: 11\r\n\r\n-Expert-\r\nNotes: 212\r\nNotes per second: 1.29\r\nJump Speed: 10\r\n\r\nShoutout to testers:\r\nRedmagi\r\nManDynasty\r\nAaltopahWi\r\nAggrogahu",uploader:{id:39365,name:"todokete",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee70",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee70?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:164,songName:"Field of Hopes and Dreams",songSubName:"Toby Fox",songAuthorName:"Todokete",levelAuthorName:"todokete"},stats:{plays:0,downloads:6294,upvotes:3219,downvotes:76,score:.9353},uploaded:"2018-11-09T19:54:30Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c62d53bd22e3aa7d6a2ef04472ee7a22ceed74f6",key:"1f42",state:"Published",createdAt:"2018-11-09T19:54:30Z",sageScore:5,diffs:[{njs:10,offset:0,notes:212,bombs:0,obstacles:0,nps:1.33,length:332,characteristic:"Standard",difficulty:"Normal",events:888,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:159.36,paritySummary:{errors:44,warns:21,resets:0}},{njs:11,offset:0,notes:325,bombs:0,obstacles:0,nps:2.039,length:332,characteristic:"Standard",difficulty:"Hard",events:888,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:159.36,paritySummary:{errors:57,warns:15,resets:0}},{njs:13,offset:0,notes:513,bombs:0,obstacles:0,nps:3.219,length:332,characteristic:"Standard",difficulty:"Expert",events:888,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:159.36,paritySummary:{errors:68,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c62d53bd22e3aa7d6a2ef04472ee7a22ceed74f6.zip",coverURL:"https://cdn.beatsaver.com/c62d53bd22e3aa7d6a2ef04472ee7a22ceed74f6.jpg",previewURL:"https://cdn.beatsaver.com/c62d53bd22e3aa7d6a2ef04472ee7a22ceed74f6.mp3"}],createdAt:"2018-11-09T19:54:30Z",updatedAt:"2018-11-09T19:54:30Z",lastPublishedAt:"2018-11-09T19:54:30Z"},{id:"1970",name:"Still Into You - Paramore",description:"Expert Playthrough : https://youtu.be/CUBqLk35vbE",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:136,duration:216,songName:"Still Into You",songSubName:"Paramore",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:8223,upvotes:2078,downvotes:35,score:.9352},uploaded:"2018-10-09T15:34:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fdd3fd8a25a79c114184cef10633fe6a57c7eb4c",key:"1970",state:"Published",createdAt:"2018-10-09T15:34:41Z",sageScore:4,diffs:[{njs:10,offset:0,notes:713,bombs:0,obstacles:21,nps:3.536,length:457,characteristic:"Standard",difficulty:"Hard",events:738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.618,paritySummary:{errors:25,warns:25,resets:0}},{njs:11,offset:0,notes:848,bombs:0,obstacles:21,nps:4.206,length:457,characteristic:"Standard",difficulty:"Expert",events:738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.618,paritySummary:{errors:50,warns:72,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fdd3fd8a25a79c114184cef10633fe6a57c7eb4c.zip",coverURL:"https://cdn.beatsaver.com/fdd3fd8a25a79c114184cef10633fe6a57c7eb4c.jpg",previewURL:"https://cdn.beatsaver.com/fdd3fd8a25a79c114184cef10633fe6a57c7eb4c.mp3"}],createdAt:"2018-10-09T15:34:41Z",updatedAt:"2018-10-09T15:34:41Z",lastPublishedAt:"2018-10-09T15:34:41Z"},{id:"8790",name:"Satellite - Rise Against",description:'"Satellite" is a song by American rock band Rise Against, featured on their sixth studio album Endgame (2011). \n\nWritten by lead vocalist Tim McIlrath, "Satellite" expresses the idea that the band stood by their social and political beliefs, and that they would not conform to mainstream media.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:136,duration:237,songName:"Satellite",songSubName:"",songAuthorName:"Rise Against",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4055,upvotes:1641,downvotes:21,score:.9351},uploaded:"2020-02-16T09:32:52.155Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2a3c743f85bd235cd9d658fe728f9db79f3b9dc5",key:"8790",state:"Published",createdAt:"2020-02-16T09:32:52.155Z",sageScore:7,diffs:[{njs:15,offset:0,notes:982,bombs:26,obstacles:10,nps:4.306,length:516.975,characteristic:"Standard",difficulty:"ExpertPlus",events:7595,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228.077,paritySummary:{errors:9,warns:6,resets:1}}],downloadURL:"https://cdn.beatsaver.com/2a3c743f85bd235cd9d658fe728f9db79f3b9dc5.zip",coverURL:"https://cdn.beatsaver.com/2a3c743f85bd235cd9d658fe728f9db79f3b9dc5.jpg",previewURL:"https://cdn.beatsaver.com/2a3c743f85bd235cd9d658fe728f9db79f3b9dc5.mp3"}],createdAt:"2020-02-16T09:32:52.155Z",updatedAt:"2020-02-16T09:32:52.155Z",lastPublishedAt:"2020-02-16T09:32:52.155Z"},{id:"689b",name:"DuckTales Opening ",description:"Opening by Felicia Barton\nJust a simple but fun map of this song from childhood!\n:D \nFC: https://www.youtube.com/watch?v=QCOHyHKy6SI&feature=youtu.be",uploader:{id:35241,name:"4strofan",uniqueSet:!0,hash:"5cff0b7598cc5a672c851d18",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c851d18?d=retro",type:"SIMPLE"},metadata:{bpm:91.51,duration:121,songName:"DuckTales",songSubName:"Opening Song",songAuthorName:"Felicia Barton",levelAuthorName:"Strofan"},stats:{plays:0,downloads:4253,upvotes:2276,downvotes:42,score:.9351},uploaded:"2019-10-08T13:14:56.729Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2e687b4e357c8fb14d1cba11b3d4029070ed51f7",key:"689b",state:"Published",createdAt:"2019-10-08T13:14:56.729Z",sageScore:5,diffs:[{njs:14,offset:0,notes:460,bombs:0,obstacles:0,nps:4.091,length:171.5,characteristic:"Standard",difficulty:"Expert",events:1106,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:112.447,paritySummary:{errors:15,warns:6,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2e687b4e357c8fb14d1cba11b3d4029070ed51f7.zip",coverURL:"https://cdn.beatsaver.com/2e687b4e357c8fb14d1cba11b3d4029070ed51f7.jpg",previewURL:"https://cdn.beatsaver.com/2e687b4e357c8fb14d1cba11b3d4029070ed51f7.mp3"}],createdAt:"2019-10-08T13:14:56.729Z",updatedAt:"2019-10-08T13:14:56.729Z",lastPublishedAt:"2019-10-08T13:14:56.729Z"},{id:"67ba",name:"Air - Mr.FijiWiji Remix | AMV by SliceOfLife",description:'Videolink:\nhttps://youtu.be/V-KFAdSjeKo\n\n====================================================\n\nIf you are making a video to the level I would be happy if my video is linked in the description, but is not a must.\n\n====================================================\n\nIn order to play the level properly, the following plugins are required !!!\n== MappingExtension is required! ==\n== ChromaLite is recommended ==\n== SongCore is recommended ==\n\nAll plugins can be downloaded by ModAssistant\nhttps://github.com/Assistant/ModAssistant\n\nChromaLite and SongCore are only for the aesthetics! This includes light events and colors. If you don\'t want to use the preset colors, set the "Allow Color Override" option under "SongCore" to off.\n\n====================================================\n\nDifficulty: Expert\nNotes: 146\nWalls: 4135\nBombs: 900\n\n====================================================\n\nThis level CAN cause performance issues to your PC, especially on lower end VR PCs. ',uploader:{id:37230,name:"gevarred",uniqueSet:!0,hash:"5d971075e6a6760006266826",avatar:"https://www.gravatar.com/avatar/5d971075e6a6760006266826?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:172,songName:"Air",songSubName:"Shortened by SliceOfLife",songAuthorName:"Mr. FijiWiji Remix",levelAuthorName:"Gevarred"},stats:{plays:0,downloads:4245,upvotes:4022,downvotes:109,score:.935},uploaded:"2019-10-04T10:05:15.873Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"65c0c3e82499281f2c9b1d09d7eb3e60bcacd57d",key:"67ba",state:"Published",createdAt:"2019-10-04T10:05:15.873Z",sageScore:5,diffs:[{njs:8,offset:0,notes:146,bombs:900,obstacles:4135,nps:1.065,length:287.781,characteristic:"Standard",difficulty:"ExpertPlus",events:1015,chroma:!0,me:!0,ne:!1,cinema:!1,seconds:137.039,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/65c0c3e82499281f2c9b1d09d7eb3e60bcacd57d.zip",coverURL:"https://cdn.beatsaver.com/65c0c3e82499281f2c9b1d09d7eb3e60bcacd57d.jpg",previewURL:"https://cdn.beatsaver.com/65c0c3e82499281f2c9b1d09d7eb3e60bcacd57d.mp3"}],createdAt:"2019-10-04T10:05:15.873Z",updatedAt:"2019-10-04T10:05:15.873Z",lastPublishedAt:"2019-10-04T10:05:15.873Z"},{id:"38eb",name:"The Rockafeller Skank - Fatboy Slim - BT90",description:'This map is part of a 90s songpack. Search "BT90" to find all the songs in the songpack.\r\nMap is created by Heisenberg_IRL. Check out https://www.twitch.tv/heisenberg_irl',uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:153,duration:236,songName:"The Rockafeller Skank",songSubName:"Fatboy Slim [BT90]",songAuthorName:"Heisenberg",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:5545,upvotes:2421,downvotes:48,score:.9348},uploaded:"2019-02-23T13:17:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5ad1cb4a7317ddc5d54d497c8d35eda5dd9d44b9",key:"38eb",state:"Published",createdAt:"2019-02-23T13:17:40Z",sageScore:6,diffs:[{njs:12,offset:0,notes:775,bombs:884,obstacles:43,nps:3.384,length:584,characteristic:"Standard",difficulty:"Expert",events:5820,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.02,paritySummary:{errors:43,warns:44,resets:15}},{njs:18,offset:0,notes:1014,bombs:907,obstacles:41,nps:4.371,length:591.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5820,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.961,paritySummary:{errors:48,warns:98,resets:18}}],downloadURL:"https://cdn.beatsaver.com/5ad1cb4a7317ddc5d54d497c8d35eda5dd9d44b9.zip",coverURL:"https://cdn.beatsaver.com/5ad1cb4a7317ddc5d54d497c8d35eda5dd9d44b9.jpg",previewURL:"https://cdn.beatsaver.com/5ad1cb4a7317ddc5d54d497c8d35eda5dd9d44b9.mp3"}],createdAt:"2019-02-23T13:17:40Z",updatedAt:"2019-02-23T13:17:40Z",lastPublishedAt:"2019-02-23T13:17:40Z"},{id:"445f",name:"Kazuma Kiryu - Baka Mitai [Yakuza OST]",description:"Dame da ne \r\nDame yo\r\nDame na no yo ( ͒˃̩̩⌂˂̩̩ ͒)\r\n\r\nPlay Yakuza, especially the karaoke mini-games\r\nFun fact: it is impossible to listen to this song without crying (100% guaranteed) \r\n\r\n74 BPM\r\nExpert\r\n\r\n:)\r\n\r\ncontact me on discord\r\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:74,duration:119,songName:"Baka Mitai",songSubName:"Kazuma Kiryu",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:5251,upvotes:1681,downvotes:23,score:.9347},uploaded:"2019-04-08T17:08:08Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c39c719a17a081d0bd0806052bd39ba4ee39b6b0",key:"445f",state:"Published",createdAt:"2019-04-08T17:08:08Z",sageScore:4,diffs:[{njs:13.5,offset:0,notes:272,bombs:0,obstacles:21,nps:2.546,length:263.5,characteristic:"Standard",difficulty:"Expert",events:553,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:213.649,paritySummary:{errors:9,warns:11,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c39c719a17a081d0bd0806052bd39ba4ee39b6b0.zip",coverURL:"https://cdn.beatsaver.com/c39c719a17a081d0bd0806052bd39ba4ee39b6b0.jpg",previewURL:"https://cdn.beatsaver.com/c39c719a17a081d0bd0806052bd39ba4ee39b6b0.mp3"}],createdAt:"2019-04-08T17:08:08Z",updatedAt:"2019-04-08T17:08:08Z",lastPublishedAt:"2019-04-08T17:08:08Z"},{id:"bdc7",name:"That's Life - Frank Sinatra",description:"Here is an honest-to-goodness human-mapped version of Frank Sinatra's 1966 hit, That's Life. This song is way too good to just have a crappy beat sage map.\n\nNormal and Hard Standard levels, and Expert Standard, 90, and 360 levels. Note that the expert levels are all essentially the same, just with varying degrees of wobbles.\n\nThanks to Maybeemae for the playtests!\n\nhttps://youtu.be/QXjj2-fgK8U",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:77,duration:186,songName:"That's Life",songSubName:"",songAuthorName:"Frank Sinatra",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:4965,upvotes:1172,downvotes:8,score:.9346},uploaded:"2020-07-11T22:35:42.033Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7cca8c1afecd782cfd74f158c312201b780043d8",key:"bdc7",state:"Published",createdAt:"2020-07-11T22:35:42.033Z",sageScore:4,diffs:[{njs:10,offset:-.3,notes:321,bombs:0,obstacles:6,nps:1.768,length:233,characteristic:"Standard",difficulty:"Normal",events:1086,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:30,warns:41,resets:0}},{njs:12,offset:.3,notes:418,bombs:0,obstacles:8,nps:2.302,length:233,characteristic:"Standard",difficulty:"Hard",events:1086,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:24,warns:38,resets:0}},{njs:13,offset:.1,notes:492,bombs:0,obstacles:8,nps:2.71,length:233,characteristic:"Standard",difficulty:"Expert",events:1086,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:24,warns:26,resets:0}},{njs:13,offset:.3,notes:489,bombs:0,obstacles:8,nps:2.693,length:233,characteristic:"90Degree",difficulty:"Expert",events:1192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:25,warns:27,resets:0}},{njs:13,offset:.3,notes:489,bombs:0,obstacles:8,nps:2.693,length:233,characteristic:"360Degree",difficulty:"Expert",events:1166,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:25,warns:26,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7cca8c1afecd782cfd74f158c312201b780043d8.zip",coverURL:"https://cdn.beatsaver.com/7cca8c1afecd782cfd74f158c312201b780043d8.jpg",previewURL:"https://cdn.beatsaver.com/7cca8c1afecd782cfd74f158c312201b780043d8.mp3"}],createdAt:"2020-07-11T22:35:42.033Z",updatedAt:"2020-07-11T22:35:42.033Z",lastPublishedAt:"2020-07-11T22:35:42.033Z"},{id:"194c",name:"Better When I'm Dancin' - Meghan Trainor",description:'"We can do this together... I bet you feel better when you\'re dancing, yeah, yeah..."\r\nDifficulties: Expert, Hard, Normal',uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:128,duration:178,songName:"Better When I'm Dancin'",songSubName:"Meghan Trainor",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:5411,upvotes:1790,downvotes:27,score:.9345},uploaded:"2018-10-08T12:10:29Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9bd5e0efe697a38fe0da28f252a8bfb870da630a",key:"194c",state:"Published",createdAt:"2018-10-08T12:10:29Z",sageScore:5,diffs:[{njs:10,offset:0,notes:271,bombs:0,obstacles:16,nps:1.571,length:368,characteristic:"Standard",difficulty:"Normal",events:940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.5,paritySummary:{errors:31,warns:26,resets:0}},{njs:10,offset:0,notes:474,bombs:0,obstacles:16,nps:2.748,length:368,characteristic:"Standard",difficulty:"Hard",events:940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.5,paritySummary:{errors:87,warns:57,resets:0}},{njs:10,offset:0,notes:643,bombs:0,obstacles:16,nps:3.733,length:367.5,characteristic:"Standard",difficulty:"Expert",events:940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.266,paritySummary:{errors:82,warns:71,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9bd5e0efe697a38fe0da28f252a8bfb870da630a.zip",coverURL:"https://cdn.beatsaver.com/9bd5e0efe697a38fe0da28f252a8bfb870da630a.jpg",previewURL:"https://cdn.beatsaver.com/9bd5e0efe697a38fe0da28f252a8bfb870da630a.mp3"}],createdAt:"2018-10-08T12:10:29Z",updatedAt:"2018-10-08T12:10:29Z",lastPublishedAt:"2018-10-08T12:10:29Z"},{id:"a908",name:"[TheFatRat Pack] Unity - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nUnity Stats:\nExpert+ - 1013 Notes | 4.74 NPS\nExpert - 869 Notes | 4.07 NPS\nHard - 608 Notes | 2.85 NPS\nNormal - 373 Notes | 1.75 NPS\nEasy - 264 Notes | 1.24 NPS\n\nRoughly 8-9 Hours of work\nGameplay: https://youtu.be/8lIoHcrm3wQ\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:105,duration:213,songName:"Unity",songSubName:"",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:11605,upvotes:3186,downvotes:78,score:.9344},uploaded:"2020-05-22T13:28:31.075Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"296946437e2194823129d88e7c457202e4c7f281",key:"a908",state:"Published",createdAt:"2020-05-22T13:28:31.075Z",sageScore:5,diffs:[{njs:10,offset:1,notes:264,bombs:0,obstacles:17,nps:1.262,length:366,characteristic:"Standard",difficulty:"Easy",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:48,warns:26,resets:0}},{njs:10,offset:1,notes:373,bombs:0,obstacles:16,nps:1.783,length:366,characteristic:"Standard",difficulty:"Normal",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:55,warns:24,resets:0}},{njs:12.5,offset:0,notes:608,bombs:0,obstacles:19,nps:2.907,length:366,characteristic:"Standard",difficulty:"Hard",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:22,warns:8,resets:0}},{njs:15,offset:-.25,notes:869,bombs:0,obstacles:17,nps:4.155,length:366,characteristic:"Standard",difficulty:"Expert",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:3,warns:0,resets:0}},{njs:16,offset:.5,notes:1013,bombs:0,obstacles:24,nps:4.844,length:366,characteristic:"Standard",difficulty:"ExpertPlus",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/296946437e2194823129d88e7c457202e4c7f281.zip",coverURL:"https://cdn.beatsaver.com/296946437e2194823129d88e7c457202e4c7f281.jpg",previewURL:"https://cdn.beatsaver.com/296946437e2194823129d88e7c457202e4c7f281.mp3"}],createdAt:"2020-05-22T13:28:31.075Z",updatedAt:"2020-05-22T13:28:31.075Z",lastPublishedAt:"2020-05-22T13:28:31.075Z"},{id:"a465",name:"The Chain - Fleetwood Mac",description:"Today (May 9) is my mapperversary! I released my first map - Comfort Eagle - a year ago today. Since then, I've released another 50 maps - almost one a week for a year! And of course, one of those is Little Shop, which is really 13 songs in one monster map. Help me celebrate my mapperversary by playing this map of Fleetwood Mac's 1977 classic, The Chain. Normal and Expert Standard, and Expert Plus 360 levels.\n\nThanks Beat Saber community for a really fun year of mapping and having fun with y’all! Thanks to the Beat Saber Modding Group for helping me get started in the beginning - especially CyanSnow and HelenCarnate - you guys were a great help to me at the beginning, despite being new mappers yourselves! Thanks to the Ramen Noodle crew for letting this old guy hang out and pretend he’s one of the cool mappers. Thanks to Darkuni and Maybeemae for being awesome friends! Extra special thanks to my mapping buddy, MajorPickle – you da man! Here’s to many more years to come!\n\nMy initial post for this map mentioned that any videos would be insta-blocked on youtube, because mine was. Since then, several people have posted videos of it without problem, so apparently it's okay.\n\nhttps://bittube.tv/post/0d3e4790-7a77-498b-9223-3d70c3ac9234",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:152,duration:252,songName:"The Chain",songSubName:"",songAuthorName:"Fleetwood Mac",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:7216,upvotes:1873,downvotes:30,score:.9344},uploaded:"2020-05-09T11:53:28.520Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4db96dd119b51d7f7124b6055db2ee1131452667",key:"a465",state:"Published",createdAt:"2020-05-09T11:53:28.520Z",sageScore:3,diffs:[{njs:10,offset:0,notes:469,bombs:0,obstacles:135,nps:1.883,length:631,characteristic:"Standard",difficulty:"Normal",events:555,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.079,paritySummary:{errors:57,warns:51,resets:0}},{njs:13,offset:.3,notes:851,bombs:68,obstacles:113,nps:3.417,length:631,characteristic:"Standard",difficulty:"Expert",events:554,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.079,paritySummary:{errors:36,warns:33,resets:9}},{njs:13,offset:.5,notes:851,bombs:63,obstacles:116,nps:3.417,length:631,characteristic:"360Degree",difficulty:"ExpertPlus",events:766,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.079,paritySummary:{errors:36,warns:33,resets:9}}],downloadURL:"https://cdn.beatsaver.com/4db96dd119b51d7f7124b6055db2ee1131452667.zip",coverURL:"https://cdn.beatsaver.com/4db96dd119b51d7f7124b6055db2ee1131452667.jpg",previewURL:"https://cdn.beatsaver.com/4db96dd119b51d7f7124b6055db2ee1131452667.mp3"}],createdAt:"2020-05-09T11:53:28.520Z",updatedAt:"2020-05-09T11:53:28.520Z",lastPublishedAt:"2020-05-09T11:53:28.520Z"},{id:"6100",name:"Keina Suda - veil [Fire Force Ending]",description:"Fire Force is rad\nBoth the op and ed are also rad\n\nBPM 150 | Length 1:30\nExpert+\nExpert\nHard\nNormal\n\nplease enjoy\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:150,duration:91,songName:"veil",songSubName:"",songAuthorName:"Keina Suda",levelAuthorName:"ETAN"},stats:{plays:0,downloads:5151,upvotes:1646,downvotes:23,score:.9341},uploaded:"2019-09-03T00:05:16.685Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f8bd8b3b1fecc3834a6ea88da39a055c98013823",key:"6100",state:"Published",createdAt:"2019-09-03T00:05:16.685Z",sageScore:3,diffs:[{njs:11,offset:0,notes:155,bombs:0,obstacles:6,nps:1.872,length:207,characteristic:"Standard",difficulty:"Normal",events:2814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:82.8,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:0,notes:203,bombs:0,obstacles:6,nps:2.452,length:207,characteristic:"Standard",difficulty:"Hard",events:2814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:82.8,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:280,bombs:0,obstacles:6,nps:3.373,length:207.5,characteristic:"Standard",difficulty:"Expert",events:2814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:83,paritySummary:{errors:7,warns:6,resets:0}},{njs:18,offset:0,notes:366,bombs:5,obstacles:6,nps:4.41,length:207.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2822,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:83,paritySummary:{errors:8,warns:9,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f8bd8b3b1fecc3834a6ea88da39a055c98013823.zip",coverURL:"https://cdn.beatsaver.com/f8bd8b3b1fecc3834a6ea88da39a055c98013823.jpg",previewURL:"https://cdn.beatsaver.com/f8bd8b3b1fecc3834a6ea88da39a055c98013823.mp3"}],createdAt:"2019-09-03T00:05:16.685Z",updatedAt:"2019-09-03T00:05:16.685Z",lastPublishedAt:"2019-09-03T00:05:16.685Z"},{id:"b",name:"Imagine Dragons - Believer",description:"Currently expert only. Events included.",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:205,songName:"Believer",songSubName:"Imagine Dragons",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:19970,upvotes:11803,downvotes:476,score:.9341},uploaded:"2018-05-08T18:56:36Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"19f2879d11a91b51a5c090d63471c3e8d9b7aee3",key:"b",state:"Published",createdAt:"2018-05-08T18:56:36Z",sageScore:5,diffs:[{njs:10,offset:0,notes:546,bombs:0,obstacles:10,nps:2.754,length:413,characteristic:"Standard",difficulty:"Expert",events:551,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:130,warns:49,resets:0},stars:1.44}],downloadURL:"https://cdn.beatsaver.com/19f2879d11a91b51a5c090d63471c3e8d9b7aee3.zip",coverURL:"https://cdn.beatsaver.com/19f2879d11a91b51a5c090d63471c3e8d9b7aee3.jpg",previewURL:"https://cdn.beatsaver.com/19f2879d11a91b51a5c090d63471c3e8d9b7aee3.mp3"}],createdAt:"2018-05-08T18:56:36Z",updatedAt:"2018-05-08T18:56:36Z",lastPublishedAt:"2018-05-08T18:56:36Z"},{id:"8115",name:"Los! Los! Los! (German Ver.) [Youjo Senki Ending] - Selphius",description:"German cover of Los! Los! Los! performed by Selphius. It was originally performed by Aoi Yuuki, the voice actress of Tanya Degurechaff. \n\nHearing this song in German just feels so right! The original song was also has German lyrics but it was sung by a Japanese so it really didn't fit.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:119,duration:215,songName:"Los! Los! Los! (German Ver.)",songSubName:"",songAuthorName:"Selphius",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:10730,upvotes:1513,downvotes:19,score:.934},uploaded:"2020-01-25T01:56:05.274Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cdfd561127d3a71c02af0996c215242fcb789f79",key:"8115",state:"Published",createdAt:"2020-01-25T01:56:05.274Z",sageScore:5,diffs:[{njs:12,offset:0,notes:723,bombs:26,obstacles:13,nps:3.468,length:413.5,characteristic:"Standard",difficulty:"Hard",events:4753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.487,paritySummary:{errors:27,warns:29,resets:4}},{njs:16,offset:0,notes:974,bombs:16,obstacles:25,nps:4.672,length:413.5,characteristic:"Standard",difficulty:"Expert",events:4753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.487,paritySummary:{errors:21,warns:12,resets:4}},{njs:20,offset:.5,notes:1098,bombs:16,obstacles:14,nps:5.267,length:413.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.487,paritySummary:{errors:20,warns:13,resets:2}}],downloadURL:"https://cdn.beatsaver.com/cdfd561127d3a71c02af0996c215242fcb789f79.zip",coverURL:"https://cdn.beatsaver.com/cdfd561127d3a71c02af0996c215242fcb789f79.jpg",previewURL:"https://cdn.beatsaver.com/cdfd561127d3a71c02af0996c215242fcb789f79.mp3"}],createdAt:"2020-01-25T01:56:05.274Z",updatedAt:"2020-01-25T01:56:05.274Z",lastPublishedAt:"2020-01-25T01:56:05.274Z"},{id:"31fa",name:"Joji - SLOW DANCING IN THE DARK",description:"89 BPM / 3:31 Runtime\r\nEasy / 223 Notes\r\nNormal / 327 Notes\r\nHard / 441 Notes\r\nExpert / 631 Notes\r\nExpert+ / ???\r\n\r\nIf this lags your computer, I'm sorry! I tried the best I could to add the walls while also optimizing for performance. Try playing with No Obstacles, that will fix the issue. Should be fine for most people.\r\n\r\nGameplay: https://youtu.be/Pweso54qcwk",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:89,duration:212,songName:"SLOW DANCING IN THE DARK",songSubName:"Joji",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:7575,upvotes:2691,downvotes:61,score:.9338},uploaded:"2019-01-28T22:17:59Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c983fa1786f03be4965b2319daa86f74ce0be831",key:"31fa",state:"Published",createdAt:"2019-01-28T22:17:59Z",sageScore:6,diffs:[{njs:12,offset:0,notes:223,bombs:0,obstacles:55,nps:1.095,length:302,characteristic:"Standard",difficulty:"Easy",events:2312,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.596,paritySummary:{errors:75,warns:8,resets:0}},{njs:10,offset:0,notes:327,bombs:0,obstacles:55,nps:1.601,length:303,characteristic:"Standard",difficulty:"Normal",events:2312,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.27,paritySummary:{errors:79,warns:25,resets:0}},{njs:12,offset:0,notes:441,bombs:0,obstacles:165,nps:2.159,length:303,characteristic:"Standard",difficulty:"Hard",events:2312,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.27,paritySummary:{errors:55,warns:38,resets:0}},{njs:12,offset:0,notes:631,bombs:16,obstacles:258,nps:3.099,length:302,characteristic:"Standard",difficulty:"Expert",events:2312,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.596,paritySummary:{errors:49,warns:46,resets:4}}],downloadURL:"https://cdn.beatsaver.com/c983fa1786f03be4965b2319daa86f74ce0be831.zip",coverURL:"https://cdn.beatsaver.com/c983fa1786f03be4965b2319daa86f74ce0be831.jpg",previewURL:"https://cdn.beatsaver.com/c983fa1786f03be4965b2319daa86f74ce0be831.mp3"}],createdAt:"2019-01-28T22:17:59Z",updatedAt:"2019-01-28T22:17:59Z",lastPublishedAt:"2019-01-28T22:17:59Z"},{id:"32d4",name:"MariannE (Lanota Edit) - Yooh",description:"Lanota Edit (2:43)\r\nNotes per Second / Video Play-through (All Full Combo):\r\nEasy: 1.4 / https://streamable.com/6y473\r\nNormal: 1.5 / https://streamable.com/ctc6c\r\nHard: 2.6 / https://streamable.com/ot9ws\r\nExpert: 3.8 / https://streamable.com/4gsdz\r\nExpert+: 6.1 / https://streamable.com/rizv3 (1st Person) \r\n\r\nThe jump in difficulty from Expert to Expert+ is substantial, so watch out!\r\nAll difficulties as always!",uploader:{id:11373,name:"redmagi",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e9d2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9d2?d=retro",type:"SIMPLE"},metadata:{bpm:191,duration:164,songName:"MariannE (Lanota Edit)",songSubName:"Yooh",songAuthorName:"Redmagi",levelAuthorName:"redmagi"},stats:{plays:0,downloads:7763,upvotes:5249,downvotes:168,score:.9337},uploaded:"2019-02-01T16:17:26Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"afb47d1abb417a76a4293d29a725d6dd74d76782",key:"32d4",state:"Published",createdAt:"2019-02-01T16:17:26Z",sageScore:8,diffs:[{njs:10,offset:1,notes:235,bombs:0,obstacles:2,nps:1.508,length:496,characteristic:"Standard",difficulty:"Easy",events:8433,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:19,warns:19,resets:0},stars:.94},{njs:12,offset:1,notes:246,bombs:32,obstacles:6,nps:1.579,length:496,characteristic:"Standard",difficulty:"Normal",events:8433,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:19,warns:24,resets:5},stars:1.08},{njs:14,offset:1,notes:435,bombs:48,obstacles:4,nps:2.792,length:496,characteristic:"Standard",difficulty:"Hard",events:8435,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:23,warns:37,resets:10},stars:1.65},{njs:16,offset:1,notes:622,bombs:86,obstacles:4,nps:3.992,length:496,characteristic:"Standard",difficulty:"Expert",events:8433,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:43,warns:39,resets:5},stars:2.64},{njs:18,offset:0,notes:1011,bombs:0,obstacles:0,nps:6.489,length:496,characteristic:"Standard",difficulty:"ExpertPlus",events:8431,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:44,warns:71,resets:0},stars:5.71}],downloadURL:"https://cdn.beatsaver.com/afb47d1abb417a76a4293d29a725d6dd74d76782.zip",coverURL:"https://cdn.beatsaver.com/afb47d1abb417a76a4293d29a725d6dd74d76782.jpg",previewURL:"https://cdn.beatsaver.com/afb47d1abb417a76a4293d29a725d6dd74d76782.mp3"}],createdAt:"2019-02-01T16:17:26Z",updatedAt:"2019-02-01T16:17:26Z",lastPublishedAt:"2019-02-01T16:17:26Z"},{id:"a68b",name:"[Noodle Touhou] Masayoshi Minoshima - Bad Apple!! (Nhato Remix)",description:"Expert+ Preview: https://www.youtube.com/watch?v=CpfdPKtiYXs\n\nThis song makes me nostalgic to my first exposure to Touhou. I hope this brings back that nostalgia in a new light before we all fade to black.\n\nThis map is part of the first Touhou map pack brought to you by the Ramen Noodle mapper group! It contains all sorts of covers, arrangements and remix of the original Touhou soundtrack. We hope you enjoy it a lot!\nCheckout the playlist here: https://bsaber.com/noodle-touhou/\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725 !",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:138,duration:369,songName:"Bad Apple!!",songSubName:"ft. nomico (Nhato Remix)",songAuthorName:"Masayoshi Minoshima",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:6326,upvotes:2755,downvotes:64,score:.9336},uploaded:"2020-05-15T18:01:27.405Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3b86d374847b41800d8b3aebb2043138db06ad64",key:"a68b",state:"Published",createdAt:"2020-05-15T18:01:27.405Z",sageScore:4,diffs:[{njs:12,offset:.7,notes:1161,bombs:0,obstacles:307,nps:3.21,length:832,characteristic:"Standard",difficulty:"Hard",events:6683,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:361.739,paritySummary:{errors:6,warns:6,resets:0}},{njs:16,offset:0,notes:1341,bombs:0,obstacles:281,nps:3.707,length:832,characteristic:"Standard",difficulty:"Expert",events:6683,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:361.739,paritySummary:{errors:7,warns:9,resets:0}},{njs:20,offset:-.4,notes:1560,bombs:0,obstacles:239,nps:4.312,length:832.063,characteristic:"Standard",difficulty:"ExpertPlus",events:6683,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:361.766,paritySummary:{errors:16,warns:24,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3b86d374847b41800d8b3aebb2043138db06ad64.zip",coverURL:"https://cdn.beatsaver.com/3b86d374847b41800d8b3aebb2043138db06ad64.jpg",previewURL:"https://cdn.beatsaver.com/3b86d374847b41800d8b3aebb2043138db06ad64.mp3"}],createdAt:"2020-05-15T18:01:27.405Z",updatedAt:"2020-05-15T18:01:27.405Z",lastPublishedAt:"2020-05-15T18:01:27.405Z"},{id:"1ff4",name:"Sheppard - Geronimo (100K Contest)",description:"This community is amazing, in just 6 months we've reached 100,000 members with no signs of slowing down. To celebrate, this map was created with 21 others to bring you the 100K contest! Here, you can win over $7000 in prizes!!\r\n\r\nTo enter, you need to go to the following website and download the mod installer: https://bsaber.com/100k-contest/\r\n\r\nThe competition is now over, but the maps remain!\r\nVideo Preview: https://www.youtube.com/watch?v=k4nEgDrI0vU",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:142,duration:219,songName:"Geronimo",songSubName:"Sheppard",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:6998,upvotes:2775,downvotes:65,score:.9336},uploaded:"2018-11-12T18:28:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"41a84fc21bdbfea8ca03021237662596d798f662",key:"1ff4",state:"Published",createdAt:"2018-11-12T18:28:10Z",sageScore:5,diffs:[{njs:10,offset:0,notes:293,bombs:20,obstacles:21,nps:1.421,length:488,characteristic:"Standard",difficulty:"Easy",events:1188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.197,paritySummary:{errors:29,warns:16,resets:0}},{njs:10,offset:0,notes:338,bombs:20,obstacles:21,nps:1.639,length:488,characteristic:"Standard",difficulty:"Normal",events:1188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.197,paritySummary:{errors:32,warns:26,resets:0}},{njs:10,offset:0,notes:570,bombs:20,obstacles:21,nps:2.764,length:488,characteristic:"Standard",difficulty:"Hard",events:1190,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.197,paritySummary:{errors:33,warns:30,resets:0}},{njs:12,offset:0,notes:707,bombs:20,obstacles:21,nps:3.429,length:488,characteristic:"Standard",difficulty:"Expert",events:1192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.197,paritySummary:{errors:55,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/41a84fc21bdbfea8ca03021237662596d798f662.zip",coverURL:"https://cdn.beatsaver.com/41a84fc21bdbfea8ca03021237662596d798f662.jpg",previewURL:"https://cdn.beatsaver.com/41a84fc21bdbfea8ca03021237662596d798f662.mp3"}],createdAt:"2018-11-12T18:28:10Z",updatedAt:"2018-11-12T18:28:10Z",lastPublishedAt:"2018-11-12T18:28:10Z"},{id:"4e86",name:"Zero to Hero - Hercules",description:"E+ FC: https://www.youtube.com/watch?v=SVzMwvrsQa0",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:120,duration:140,songName:"Zero to Hero",songSubName:"Hercules",songAuthorName:"Ryger",levelAuthorName:"Ryger"},stats:{plays:0,downloads:5259,upvotes:2235,downvotes:45,score:.9334},uploaded:"2019-05-22T16:18:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0b4cda7dd0b19972b9965f7c39ad3a04ceb9f110",key:"4e86",state:"Published",createdAt:"2019-05-22T16:18:18Z",sageScore:2,diffs:[{njs:12,offset:0,notes:477,bombs:0,obstacles:0,nps:3.529,length:376.19,characteristic:"Standard",difficulty:"Hard",events:2354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.095,paritySummary:{errors:26,warns:16,resets:0}},{njs:14,offset:0,notes:604,bombs:0,obstacles:0,nps:4.469,length:376.19,characteristic:"Standard",difficulty:"Expert",events:2354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.095,paritySummary:{errors:30,warns:19,resets:0}},{njs:15,offset:0,notes:644,bombs:0,obstacles:0,nps:4.752,length:377.206,characteristic:"Standard",difficulty:"ExpertPlus",events:2354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.603,paritySummary:{errors:30,warns:32,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0b4cda7dd0b19972b9965f7c39ad3a04ceb9f110.zip",coverURL:"https://cdn.beatsaver.com/0b4cda7dd0b19972b9965f7c39ad3a04ceb9f110.jpg",previewURL:"https://cdn.beatsaver.com/0b4cda7dd0b19972b9965f7c39ad3a04ceb9f110.mp3"}],createdAt:"2019-05-22T16:18:18Z",updatedAt:"2019-05-22T16:18:18Z",lastPublishedAt:"2019-05-22T16:18:18Z"},{id:"3700",name:"U Got That",description:"",uploader:{id:27874,name:"serenity",uniqueSet:!0,hash:"5cff0b7798cc5a672c855426",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855426?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:190,songName:"U Got That",songSubName:"Halogen",songAuthorName:"Serenity",levelAuthorName:"Serenity"},stats:{plays:0,downloads:6766,upvotes:7958,downvotes:296,score:.9334},uploaded:"2019-02-17T05:53:20Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b671c2401d1b8af29efe71e448f586223e6ca70a",key:"3700",state:"Published",createdAt:"2019-02-17T05:53:20Z",sageScore:5,diffs:[{njs:10,offset:0,notes:732,bombs:24,obstacles:55,nps:3.96,length:382,characteristic:"Standard",difficulty:"Expert",events:1040,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.839,paritySummary:{errors:108,warns:73,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b671c2401d1b8af29efe71e448f586223e6ca70a.zip",coverURL:"https://cdn.beatsaver.com/b671c2401d1b8af29efe71e448f586223e6ca70a.jpg",previewURL:"https://cdn.beatsaver.com/b671c2401d1b8af29efe71e448f586223e6ca70a.mp3"}],createdAt:"2019-02-17T05:53:20Z",updatedAt:"2019-02-17T05:53:20Z",lastPublishedAt:"2019-02-17T05:53:20Z"},{id:"77e9",name:"Jingo Jungle [Saga of Tanya the Evil Opening] - AmaLee",description:'AmaLee\'s English cover of "Jingo Jungle", the opening from Saga of Tanya the Evil (Youjo Senki). Original song by MYTH & ROID.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:130,duration:225,songName:"Jingo Jungle",songSubName:"",songAuthorName:"AmaLee",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2875,upvotes:1595,downvotes:23,score:.9333},uploaded:"2019-12-21T02:44:34.295Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f90a2e4f8ee7b1f33543cddccb8baea660253d4a",key:"77e9",state:"Published",createdAt:"2019-12-21T02:44:34.295Z",sageScore:5,diffs:[{njs:12,offset:0,notes:581,bombs:104,obstacles:28,nps:2.647,length:475.5,characteristic:"Standard",difficulty:"Hard",events:5987,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:35,warns:15,resets:10}},{njs:15,offset:0,notes:950,bombs:78,obstacles:14,nps:4.329,length:475.5,characteristic:"Standard",difficulty:"Expert",events:5987,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:42,warns:48,resets:8}},{njs:17,offset:0,notes:1184,bombs:105,obstacles:17,nps:5.395,length:475.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5987,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:32,warns:43,resets:16}}],downloadURL:"https://cdn.beatsaver.com/f90a2e4f8ee7b1f33543cddccb8baea660253d4a.zip",coverURL:"https://cdn.beatsaver.com/f90a2e4f8ee7b1f33543cddccb8baea660253d4a.jpg",previewURL:"https://cdn.beatsaver.com/f90a2e4f8ee7b1f33543cddccb8baea660253d4a.mp3"}],createdAt:"2019-12-21T02:44:34.295Z",updatedAt:"2019-12-21T02:44:34.295Z",lastPublishedAt:"2019-12-21T02:44:34.295Z"},{id:"16ff",name:"Little Swing - AronChupa",description:"Preview: https://youtu.be/_IERvrKBKB0\r\nI wasn't happy with all the other versions of this song, so I made my own.",uploader:{id:4285668,name:"connorjc",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fb89",avatar:"https://cdn.beatsaver.com/avatar/99724057217355776.png",type:"DISCORD"},metadata:{bpm:126,duration:165,songName:"Little Swing",songSubName:"AronChupa feat. Little Sis Nora",songAuthorName:"ConnorJC",levelAuthorName:"ConnorJC"},stats:{plays:0,downloads:4721,upvotes:2877,downvotes:70,score:.9333},uploaded:"2018-09-24T14:51:17Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"235336f468a6290c87d724616e9b1d952ae3b8f2",key:"16ff",state:"Published",createdAt:"2018-09-24T14:51:17Z",sageScore:4,diffs:[{njs:12,offset:0,notes:669,bombs:0,obstacles:28,nps:4.216,length:333.25,characteristic:"Standard",difficulty:"Expert",events:460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.69,paritySummary:{errors:37,warns:55,resets:0}}],downloadURL:"https://cdn.beatsaver.com/235336f468a6290c87d724616e9b1d952ae3b8f2.zip",coverURL:"https://cdn.beatsaver.com/235336f468a6290c87d724616e9b1d952ae3b8f2.jpg",previewURL:"https://cdn.beatsaver.com/235336f468a6290c87d724616e9b1d952ae3b8f2.mp3"}],createdAt:"2018-09-24T14:51:17Z",updatedAt:"2018-09-24T14:51:17Z",lastPublishedAt:"2018-09-24T14:51:17Z"},{id:"1230",name:"Hymn for the Weekend - Coldplay",description:"Hymn for the weekend by Coldplay\r\nBPM: 90 (AHH SLOW)\r\nRuntime: 4m3s\r\nDifficulties: Easy, Normal, Hard, Expert\r\n\r\nDemo : https://vimeo.com/286997137",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:90,duration:244,songName:"Hymn For The Weekend",songSubName:"Coldplay",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:9700,upvotes:3156,downvotes:81,score:.9333},uploaded:"2018-08-28T01:41:15Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f050cd142882f102226efb614cca3a1ac1368fff",key:"1230",state:"Published",createdAt:"2018-08-28T01:41:15Z",sageScore:5,diffs:[{njs:12,offset:0,notes:202,bombs:0,obstacles:8,nps:.935,length:324,characteristic:"Standard",difficulty:"Easy",events:892,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216,paritySummary:{errors:35,warns:7,resets:0}},{njs:12,offset:0,notes:377,bombs:0,obstacles:8,nps:1.745,length:324,characteristic:"Standard",difficulty:"Normal",events:895,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216,paritySummary:{errors:49,warns:39,resets:0}},{njs:12,offset:0,notes:573,bombs:0,obstacles:8,nps:2.617,length:328.375,characteristic:"Standard",difficulty:"Hard",events:893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.917,paritySummary:{errors:50,warns:56,resets:0}},{njs:12,offset:0,notes:729,bombs:0,obstacles:8,nps:3.33,length:328.375,characteristic:"Standard",difficulty:"Expert",events:893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.917,paritySummary:{errors:78,warns:87,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f050cd142882f102226efb614cca3a1ac1368fff.zip",coverURL:"https://cdn.beatsaver.com/f050cd142882f102226efb614cca3a1ac1368fff.jpg",previewURL:"https://cdn.beatsaver.com/f050cd142882f102226efb614cca3a1ac1368fff.mp3"}],createdAt:"2018-08-28T01:41:15Z",updatedAt:"2018-08-28T01:41:15Z",lastPublishedAt:"2018-08-28T01:41:15Z"},{id:"276a",name:"Ain't Nothin' like a Funky Beat - Hideki Naganuma",description:"BAH BAH BAAAH BAH\r\nBAHBAH BUBAH BAH BAH BAAAAH BAH\r\nAint nothin like a funky beat\r\nMy Camera plus mod wasnt working :(\r\n\r\nDifficulties - Expert, Hard, Normal, , Easy\r\nBPM - 142\r\nPreview: https://youtu.be/92pCsIPxv10",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:142,duration:205,songName:"AIN'T NOTHIN' LIKE A FUNKY BEAT",songSubName:"Hideki Naganuma",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:5635,upvotes:2795,downvotes:67,score:.9332},uploaded:"2018-12-22T17:07:11Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a2c21a3a478f14422185f77cc8f9030f638fcf06",key:"276a",state:"Published",createdAt:"2018-12-22T17:07:11Z",sageScore:6,diffs:[{njs:15,offset:0,notes:237,bombs:0,obstacles:14,nps:1.214,length:462,characteristic:"Standard",difficulty:"Easy",events:1171,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.211,paritySummary:{errors:30,warns:16,resets:0}},{njs:15,offset:0,notes:441,bombs:0,obstacles:14,nps:2.239,length:466.25,characteristic:"Standard",difficulty:"Normal",events:1171,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.007,paritySummary:{errors:75,warns:40,resets:0}},{njs:15,offset:0,notes:684,bombs:0,obstacles:14,nps:3.472,length:466.25,characteristic:"Standard",difficulty:"Hard",events:1171,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.007,paritySummary:{errors:70,warns:95,resets:0}},{njs:15,offset:0,notes:838,bombs:0,obstacles:14,nps:4.254,length:466.25,characteristic:"Standard",difficulty:"Expert",events:1171,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.007,paritySummary:{errors:66,warns:76,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a2c21a3a478f14422185f77cc8f9030f638fcf06.zip",coverURL:"https://cdn.beatsaver.com/a2c21a3a478f14422185f77cc8f9030f638fcf06.jpg",previewURL:"https://cdn.beatsaver.com/a2c21a3a478f14422185f77cc8f9030f638fcf06.mp3"}],createdAt:"2018-12-22T17:07:11Z",updatedAt:"2018-12-22T17:07:11Z",lastPublishedAt:"2018-12-22T17:07:11Z"},{id:"46d4",name:"Rap God - Eminem",description:"",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:148,duration:366,songName:"Rap God",songSubName:"Eminem",songAuthorName:"Ryger",levelAuthorName:"Ryger"},stats:{plays:0,downloads:17173,upvotes:8866,downvotes:344,score:.933},uploaded:"2019-04-18T16:38:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a38fd8581eb892cc7090f78bfe61e9c256478cf3",key:"46d4",state:"Published",createdAt:"2019-04-18T16:38:34Z",sageScore:6,diffs:[{njs:15,offset:0,notes:2060,bombs:6,obstacles:2,nps:5.724,length:887.75,characteristic:"Standard",difficulty:"Expert",events:9351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:359.899,paritySummary:{errors:80,warns:66,resets:0}},{njs:15,offset:0,notes:2060,bombs:6,obstacles:2,nps:5.724,length:887.75,characteristic:"Standard",difficulty:"ExpertPlus",events:9351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:359.899,paritySummary:{errors:80,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a38fd8581eb892cc7090f78bfe61e9c256478cf3.zip",coverURL:"https://cdn.beatsaver.com/a38fd8581eb892cc7090f78bfe61e9c256478cf3.jpg",previewURL:"https://cdn.beatsaver.com/a38fd8581eb892cc7090f78bfe61e9c256478cf3.mp3"}],createdAt:"2019-04-18T16:38:34Z",updatedAt:"2019-04-18T16:38:34Z",lastPublishedAt:"2019-04-18T16:38:34Z"},{id:"1188e",name:"Fox Stevenson - All Eyes On Me",description:"Man I love Stan, had a lot of fun making this :p\n\nhas Chroma lights",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:172,duration:181,songName:"All Eyes On Me",songSubName:"",songAuthorName:"Fox Stevenson",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:7649,upvotes:1891,downvotes:34,score:.9328},uploaded:"2020-11-30T15:14:16.512Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"77300a040e85107d5a745f2f9f2e5ced43205f4a",key:"1188e",state:"Published",createdAt:"2020-11-30T15:14:16.512Z",sageScore:5,diffs:[{njs:14,offset:1,notes:491,bombs:12,obstacles:66,nps:2.779,length:506.5,characteristic:"Standard",difficulty:"Hard",events:4370,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:176.686,paritySummary:{errors:0,warns:0,resets:6}},{njs:17,offset:.2,notes:748,bombs:0,obstacles:27,nps:4.213,length:509,characteristic:"Standard",difficulty:"Expert",events:4370,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:177.558,paritySummary:{errors:0,warns:0,resets:0}},{njs:21,offset:-.3,notes:951,bombs:0,obstacles:27,nps:5.382,length:506.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4370,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:176.686,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/77300a040e85107d5a745f2f9f2e5ced43205f4a.zip",coverURL:"https://cdn.beatsaver.com/77300a040e85107d5a745f2f9f2e5ced43205f4a.jpg",previewURL:"https://cdn.beatsaver.com/77300a040e85107d5a745f2f9f2e5ced43205f4a.mp3"}],createdAt:"2020-11-30T15:14:16.512Z",updatedAt:"2020-11-30T15:14:16.512Z",lastPublishedAt:"2020-11-30T15:14:16.512Z"},{id:"2c3",name:"Koto - Clozee",description:"Here it is finally, Koto - Clozee from LIV's announcement featuring their depth camera so you don't have to have a green screen! https://twitter.com/LIV/status/1001490921295417345\r\n\r\nIf you love my maps and want to support me, heres my patreon!\r\nhttps://www.patreon.com/purphorosVR",uploader:{id:49373,name:"purphoros",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea98",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea98?d=retro",type:"SIMPLE"},metadata:{bpm:100,duration:253,songName:"Koto",songSubName:"CloZee",songAuthorName:"Purphoros",levelAuthorName:"purphoros"},stats:{plays:0,downloads:5247,upvotes:3689,downvotes:105,score:.9328},uploaded:"2018-05-29T17:19:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c1638525606ecb7aea6d6a71d124aa79296ab842",key:"2c3",state:"Published",createdAt:"2018-05-29T17:19:09Z",sageScore:4,diffs:[{njs:10,offset:0,notes:858,bombs:0,obstacles:12,nps:3.575,length:400,characteristic:"Standard",difficulty:"Expert",events:72,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240,paritySummary:{errors:108,warns:55,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c1638525606ecb7aea6d6a71d124aa79296ab842.zip",coverURL:"https://cdn.beatsaver.com/c1638525606ecb7aea6d6a71d124aa79296ab842.jpg",previewURL:"https://cdn.beatsaver.com/c1638525606ecb7aea6d6a71d124aa79296ab842.mp3"}],createdAt:"2018-05-29T17:19:09Z",updatedAt:"2018-05-29T17:19:09Z",lastPublishedAt:"2018-05-29T17:19:09Z"},{id:"15b16",name:"Codly - Lucy, The God Of Time [Wall Map]",description:"This map has 2 diffs Expert and ExpertPlus\nExpert - Reddek\nExpertPlus - shan_man\n\nLink to preview: https://youtu.be/_LUXKlcpue4\n\nLink to original song: https://youtu.be/kyCXzxmebB4\nSong By: Codly and Sakuzyo\n\nOkay, I put way to much time into this...\n\nHuge thanks to Shan_Man for making a diff in this\n\nAlso thank you Reaxt for your help with the last drop\n\nMade with \n-Demo.js script\n-ScuffedWalls\n\nshan_man: https://beatsaver.com/uploader/5ec5aaa616c9680006500e0a\n\nWould love some feedback in the dms!:\nReddek#5864\nshan_man#7777",uploader:{id:4233941,name:"reddek",uniqueSet:!0,hash:"5dbfb4426dea0b0006bd328d",avatar:"https://cdn.beatsaver.com/avatar/177436487086768129.png",type:"DISCORD"},metadata:{bpm:170,duration:267,songName:"Lucy, The God of Time",songSubName:"",songAuthorName:"Codly",levelAuthorName:"Shan_Man & Reddek"},stats:{plays:0,downloads:3574,upvotes:1185,downvotes:11,score:.9327},uploaded:"2021-03-21T02:47:31.861Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"dd4a025f814b8570f2726939b1c5b000ed210ecf",key:"15b16",state:"Published",createdAt:"2021-03-21T02:47:31.861Z",sageScore:3,diffs:[{njs:20,offset:-.4,notes:873,bombs:117,obstacles:4342,nps:3.654,length:677,characteristic:"Standard",difficulty:"Expert",events:31216,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:238.941,paritySummary:{errors:0,warns:0,resets:3}},{njs:20,offset:-.4,notes:1353,bombs:44,obstacles:4342,nps:5.662,length:677,characteristic:"Standard",difficulty:"ExpertPlus",events:31217,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:238.941,paritySummary:{errors:0,warns:0,resets:3}}],downloadURL:"https://cdn.beatsaver.com/dd4a025f814b8570f2726939b1c5b000ed210ecf.zip",coverURL:"https://cdn.beatsaver.com/dd4a025f814b8570f2726939b1c5b000ed210ecf.jpg",previewURL:"https://cdn.beatsaver.com/dd4a025f814b8570f2726939b1c5b000ed210ecf.mp3"}],createdAt:"2021-03-21T02:47:31.861Z",updatedAt:"2021-03-21T02:47:31.861Z",lastPublishedAt:"2021-03-21T02:47:31.861Z"},{id:"2c3e",name:"Pump It - Black Eyed Peas",description:"Map #9. This was a special request by RedMagi, and he certainly deserves it for tirelessly testing all the other garbage we throw at him. Baxter with the funky patterns, RedMagi with some challenging streams in Expert+, and ALSO the amazing lighting effects! (Oh and of course a heck of a lot of play testing and feedback for fine tuning.) Hope you enjoy it as much as we do.\r\n\r\nAlso a big thank you to all our playtesters for the useful feedback: ManDynasty, Trolav, Crankor, Scrappy, and TurtleSquared\r\n\r\nhttps://youtu.be/YJnL0gq1z7s (Easy)\r\nhttps://youtu.be/U0DIjo4_ZE0 (Normal)\r\nhttps://youtu.be/zks4TgpfoR4 (Hard)\r\nhttps://youtu.be/rRq_fHRSCoI (Expert 3rd person)\r\nhttps://youtu.be/9ThPg99Xm9A (Expert 1st person)\r\nhttps://youtu.be/NPOPWH8bb10 (Expert+)",uploader:{id:27595,name:"baxter395",uniqueSet:!0,hash:"5cff0b7598cc5a672c852f7b",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c852f7b?d=retro",type:"SIMPLE"},metadata:{bpm:154,duration:215,songName:"Pump It",songSubName:"Black Eyed Peas",songAuthorName:"baxter395 (M) RedMagi (M, L)",levelAuthorName:"baxter395"},stats:{plays:0,downloads:12322,upvotes:4839,downvotes:156,score:.9327},uploaded:"2019-01-09T05:13:56Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2884021451135e751d3c442ae92243697744b349",key:"2c3e",state:"Published",createdAt:"2019-01-09T05:13:56Z",sageScore:4,diffs:[{njs:10,offset:0,notes:306,bombs:0,obstacles:15,nps:1.144,length:686.679,characteristic:"Standard",difficulty:"Easy",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:267.537,paritySummary:{errors:72,warns:22,resets:0}},{njs:11,offset:0,notes:393,bombs:0,obstacles:22,nps:1.877,length:537.407,characteristic:"Standard",difficulty:"Normal",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.38,paritySummary:{errors:77,warns:43,resets:0}},{njs:12,offset:0,notes:583,bombs:0,obstacles:16,nps:2.779,length:538.36,characteristic:"Standard",difficulty:"Hard",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.751,paritySummary:{errors:63,warns:68,resets:0}},{njs:16,offset:0,notes:890,bombs:40,obstacles:59,nps:4.243,length:538.36,characteristic:"Standard",difficulty:"Expert",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.751,paritySummary:{errors:88,warns:125,resets:7}},{njs:18,offset:0,notes:1048,bombs:24,obstacles:63,nps:4.996,length:538.392,characteristic:"Standard",difficulty:"ExpertPlus",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.763,paritySummary:{errors:93,warns:104,resets:2}}],downloadURL:"https://cdn.beatsaver.com/2884021451135e751d3c442ae92243697744b349.zip",coverURL:"https://cdn.beatsaver.com/2884021451135e751d3c442ae92243697744b349.jpg",previewURL:"https://cdn.beatsaver.com/2884021451135e751d3c442ae92243697744b349.mp3"}],createdAt:"2019-01-09T05:13:56Z",updatedAt:"2019-01-09T05:13:56Z",lastPublishedAt:"2019-01-09T05:13:56Z"},{id:"3f38",name:"Sk8er Boi - Avril Lavigne",description:'"Sk8er Boi" (pronounced "skater boy") is a song by Canadian singer-songwriter Avril Lavigne.\r\n\r\nThis song was on my list of songs to map and I was excited when I saw someone had made one today, and after playing it I decided to make my own map of it.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:150,duration:206,songName:"Sk8er Boi",songSubName:"Avril Lavigne",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:8202,upvotes:2443,downvotes:55,score:.9326},uploaded:"2019-03-20T18:01:26Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1078f8128effc0b79f19adf2b7aeed613afabac6",key:"3f38",state:"Published",createdAt:"2019-03-20T18:01:26Z",sageScore:6,diffs:[{njs:15,offset:0,notes:893,bombs:0,obstacles:0,nps:4.71,length:474,characteristic:"Standard",difficulty:"Expert",events:1410,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.6,paritySummary:{errors:41,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1078f8128effc0b79f19adf2b7aeed613afabac6.zip",coverURL:"https://cdn.beatsaver.com/1078f8128effc0b79f19adf2b7aeed613afabac6.jpg",previewURL:"https://cdn.beatsaver.com/1078f8128effc0b79f19adf2b7aeed613afabac6.mp3"}],createdAt:"2019-03-20T18:01:26Z",updatedAt:"2019-03-20T18:01:26Z",lastPublishedAt:"2019-03-20T18:01:26Z"},{id:"19f3",name:"PONPONPON - Kyary Pamyu Pamyu",description:"Everyday PON\nEvery time is PON\n\nExpert is relatively easy, pretty close to OST standards\nHard is pretty close to OST as well\nNormal -- first time doing Normal, give any feedback on bsaber dot com\n\nExpert Preview: https://youtu.be/4AMzxcWDqPM\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu\n\nShoutout to Geb and RedMagi for playtesting",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:128,duration:247,songName:"PONPONPON",songSubName:"Kyary Pamyu Pamyu",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:4544,upvotes:2285,downvotes:49,score:.9326},uploaded:"2018-10-12T23:21:38Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c1b08e5c05c9e6dad4096f3ff04d1e0497a0a339",key:"19f3",state:"Published",createdAt:"2018-10-12T23:21:38Z",sageScore:4,diffs:[{njs:10,offset:0,notes:432,bombs:2,obstacles:38,nps:1.832,length:503,characteristic:"Standard",difficulty:"Normal",events:636,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:235.781,paritySummary:{errors:101,warns:37,resets:1}},{njs:10,offset:0,notes:541,bombs:1,obstacles:38,nps:2.29,length:504,characteristic:"Standard",difficulty:"Hard",events:636,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:236.25,paritySummary:{errors:133,warns:61,resets:0}},{njs:10,offset:0,notes:714,bombs:2,obstacles:48,nps:3.022,length:504,characteristic:"Standard",difficulty:"Expert",events:636,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:236.25,paritySummary:{errors:120,warns:84,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c1b08e5c05c9e6dad4096f3ff04d1e0497a0a339.zip",coverURL:"https://cdn.beatsaver.com/c1b08e5c05c9e6dad4096f3ff04d1e0497a0a339.jpg",previewURL:"https://cdn.beatsaver.com/c1b08e5c05c9e6dad4096f3ff04d1e0497a0a339.mp3"}],createdAt:"2018-10-12T23:21:38Z",updatedAt:"2018-10-12T23:21:38Z",lastPublishedAt:"2018-10-12T23:21:38Z"},{id:"11b7a",name:"Still Alive - Portal",description:"I've wanted to map this song for a while now. And since this one's probably the last Portal song I'll map, I gave it my best. \r\n\r\nP.S. - I'm so glad to be back mapping this month. I had to take a break due to overwhelming stress, but now I'm feeling ready again.\r\nI hope you enjoy.\r\n\r\nPortal on Steam:\r\nhttps://store.steampowered.com/app/400/Portal/",uploader:{id:4284694,name:"jokidum",uniqueSet:!0,hash:"5e15518d47f1600006e912cc",avatar:"https://cdn.beatsaver.com/avatar/494282373094047745.png",type:"DISCORD"},metadata:{bpm:120,duration:176,songName:"Still Alive",songSubName:"- Portal",songAuthorName:"Jonathan Coulton",levelAuthorName:"Jokidum"},stats:{plays:0,downloads:5965,upvotes:1927,downvotes:36,score:.9325},uploaded:"2020-12-04T20:30:44.132Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8c03b43484b0dd1fc7d8a3104a82f0992a001c6c",key:"11b7a",state:"Published",createdAt:"2020-12-04T20:30:44.132Z",sageScore:4,diffs:[{njs:12,offset:0,notes:490,bombs:0,obstacles:13,nps:2.853,length:343.5,characteristic:"Standard",difficulty:"Expert",events:1060,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.75,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:1060,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8c03b43484b0dd1fc7d8a3104a82f0992a001c6c.zip",coverURL:"https://cdn.beatsaver.com/8c03b43484b0dd1fc7d8a3104a82f0992a001c6c.jpg",previewURL:"https://cdn.beatsaver.com/8c03b43484b0dd1fc7d8a3104a82f0992a001c6c.mp3"}],createdAt:"2020-12-04T20:30:44.132Z",updatedAt:"2020-12-04T20:30:44.132Z",lastPublishedAt:"2020-12-04T20:30:44.132Z"},{id:"1ff9",name:"Thaehan - Circus | - 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!\r\n\r\nI have changed some parts of the map since\r\n\r\nPreview: https://www.youtube.com/watch?v=e4stySCsNIM",uploader:{id:4286278,name:"ruckus",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1d8",avatar:"https://cdn.beatsaver.com/avatar/239082462083284992.png",type:"DISCORD"},metadata:{bpm:196,duration:148,songName:"Circus",songSubName:"Thaehan",songAuthorName:"Ruckus",levelAuthorName:"ruckus"},stats:{plays:0,downloads:4649,upvotes:2448,downvotes:56,score:.9324},uploaded:"2018-11-12T20:35:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e2934fbc194a51aa3579613bd88dc47503016c8a",key:"1ff9",state:"Published",createdAt:"2018-11-12T20:35:47Z",sageScore:7,diffs:[{njs:11,offset:0,notes:251,bombs:0,obstacles:12,nps:1.83,length:448,characteristic:"Standard",difficulty:"Easy",events:2733,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:0,warns:0,resets:0}},{njs:11,offset:0,notes:462,bombs:0,obstacles:0,nps:3.369,length:448,characteristic:"Standard",difficulty:"Normal",events:2735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:29,warns:27,resets:0}},{njs:12,offset:0,notes:513,bombs:0,obstacles:0,nps:3.741,length:448,characteristic:"Standard",difficulty:"Hard",events:2735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:62,warns:42,resets:0}},{njs:14,offset:0,notes:719,bombs:0,obstacles:0,nps:5.24,length:448.273,characteristic:"Standard",difficulty:"Expert",events:2736,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.226,paritySummary:{errors:60,warns:73,resets:0}},{njs:17,offset:0,notes:739,bombs:0,obstacles:0,nps:5.386,length:448.25,characteristic:"Standard",difficulty:"ExpertPlus",events:3278,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.219,paritySummary:{errors:58,warns:79,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e2934fbc194a51aa3579613bd88dc47503016c8a.zip",coverURL:"https://cdn.beatsaver.com/e2934fbc194a51aa3579613bd88dc47503016c8a.jpg",previewURL:"https://cdn.beatsaver.com/e2934fbc194a51aa3579613bd88dc47503016c8a.mp3"}],createdAt:"2018-11-12T20:35:47Z",updatedAt:"2018-11-12T20:35:47Z",lastPublishedAt:"2018-11-12T20:35:47Z"},{id:"943e",name:"The Only Thing They Fear is You - Mick Gordon DOOM OST",description:"THE 360 MAP REQUIRES THE MAPPING EXTENSIONS MOD FOR BEAT SABER v1.8.0 OR GREATER (the Timbaland Update). OLDER VERSIONS OF MAPPING EXTENSIONS WILL NOT WORK.\n\nEpilepsy warning. Play with Static Lights or dim Custom Colors if prone to epileptic attacks.\nLightshow nerfed on Hard, Expert, and 360 difficulties.\n\nThis map’s Custom Colors are enabled via SongCore. To disable them, go to Mod Settings > SongCore from the ingame Main Menu.\n\n103 BPM / 3:20 Duration\n\nStandard (No Mapping Extensions)\nI'm too young to die - 482 notes (2.41 NPS)\nHurt me plenty - 603 notes (3.02 NPS)\nUltra-Violence - 713 notes (3.57 NPS)\n\n360 (Mapping Extensions)\nNightmare - 713 notes (3.57 NPS) ~6k rotations\n\nLightshow (No Mapping Extensions / SongCore required)\nLightshow - 20359 events\n\nTougeVR's Mixed Reality Playthrough: https://youtu.be/8arRphzeiDE\nMapping Extensions for pre-v1.8.0: https://drive.google.com/file/d/1-59-n3OLqNk4LOZ7MHo9AJ87-2__tEFo/view?usp=sharing",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:103,duration:200,songName:"The Only Thing They Fear is You",songSubName:"",songAuthorName:"Mick Gordon",levelAuthorName:"Skyler Wallace"},stats:{plays:0,downloads:13590,upvotes:4650,downvotes:150,score:.9322},uploaded:"2020-03-27T08:59:46.875Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ac3976bd01d289aaacf03423706010e843a824d5",key:"943e",state:"Published",createdAt:"2020-03-27T08:59:46.875Z",sageScore:6,diffs:[{njs:13,offset:-.25,notes:482,bombs:370,obstacles:376,nps:2.556,length:323.688,characteristic:"Standard",difficulty:"Hard",events:17272,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.556,paritySummary:{errors:25,warns:33,resets:0}},{njs:16,offset:.5,notes:603,bombs:721,obstacles:375,nps:3.193,length:324.187,characteristic:"Standard",difficulty:"Expert",events:17272,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.847,paritySummary:{errors:3,warns:10,resets:97}},{njs:19,offset:.25,notes:713,bombs:769,obstacles:379,nps:3.635,length:336.689,characteristic:"Standard",difficulty:"ExpertPlus",events:20359,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.13,paritySummary:{errors:10,warns:52,resets:95}},{njs:19,offset:.25,notes:713,bombs:7824,obstacles:9601,nps:3.623,length:337.843,characteristic:"360Degree",difficulty:"ExpertPlus",events:25883,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:196.802,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:20359,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ac3976bd01d289aaacf03423706010e843a824d5.zip",coverURL:"https://cdn.beatsaver.com/ac3976bd01d289aaacf03423706010e843a824d5.jpg",previewURL:"https://cdn.beatsaver.com/ac3976bd01d289aaacf03423706010e843a824d5.mp3"}],createdAt:"2020-03-27T08:59:46.875Z",updatedAt:"2020-03-27T08:59:46.875Z",lastPublishedAt:"2020-03-27T08:59:46.875Z"},{id:"4274",name:"Flesh - Nightcore (RubyChan)",description:"BPM: 152.674\r\nNPS: N: 1.92 H: 2.91 E: 3.71 E+: 4.26\r\nNotes: N: 425 H: 644 E: 819 E+: 942\r\nWalls: N: 80 H:82 E:96 E+: 85\r\nBombs: N: 20 H:34 E: 50 E+: 60\r\n\r\nNormal/Hard tend to follow the beat, while Expert/Expert+ tend to follow the vocals. Thanks to Redmagi and helencarnate for play testing!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:153,duration:221,songName:"Flesh",songSubName:"Nighctore (RubyChan)",songAuthorName:"fruhead",levelAuthorName:"fruhead"},stats:{plays:0,downloads:3291,upvotes:1693,downvotes:29,score:.9319},uploaded:"2019-03-31T18:25:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0acc713b47e8228b242fb42c0db29959014f8124",key:"4274",state:"Published",createdAt:"2019-03-31T18:25:07Z",sageScore:3,diffs:[{njs:12,offset:0,notes:425,bombs:20,obstacles:80,nps:2.116,length:511,characteristic:"Standard",difficulty:"Normal",events:7207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.392,paritySummary:{errors:13,warns:0,resets:10}},{njs:14,offset:0,notes:644,bombs:34,obstacles:82,nps:3.207,length:511,characteristic:"Standard",difficulty:"Hard",events:7207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.392,paritySummary:{errors:14,warns:14,resets:18}},{njs:16,offset:0,notes:819,bombs:50,obstacles:96,nps:4.078,length:511,characteristic:"Standard",difficulty:"Expert",events:7207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.392,paritySummary:{errors:32,warns:56,resets:19}},{njs:16,offset:0,notes:942,bombs:60,obstacles:85,nps:4.691,length:511,characteristic:"Standard",difficulty:"ExpertPlus",events:7207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.392,paritySummary:{errors:23,warns:66,resets:23}}],downloadURL:"https://cdn.beatsaver.com/0acc713b47e8228b242fb42c0db29959014f8124.zip",coverURL:"https://cdn.beatsaver.com/0acc713b47e8228b242fb42c0db29959014f8124.jpg",previewURL:"https://cdn.beatsaver.com/0acc713b47e8228b242fb42c0db29959014f8124.mp3"}],createdAt:"2019-03-31T18:25:07Z",updatedAt:"2019-03-31T18:25:07Z",lastPublishedAt:"2019-03-31T18:25:07Z"},{id:"5fda",name:"Mr. Blue Sky",description:"After a certain streamer asked for this to be re-made I put it on my list, needed a break from the current harder maps I'm working on so made this feel-good classic. Hope you enjoy :D\n\nSpecial thanks to those who tested, especially Sehria for her suggestions, and thanks to my little sister for testing Hard diff :P",uploader:{id:4285633,name:"edmard",uniqueSet:!0,hash:"5cff0b7798cc5a672c856604",avatar:"https://cdn.beatsaver.com/avatar/157188812462620672.png",type:"DISCORD"},metadata:{bpm:174,duration:222,songName:"Mr. Blue Sky",songSubName:"",songAuthorName:"Electric Light Orchestra",levelAuthorName:"Edmard"},stats:{plays:0,downloads:4883,upvotes:2486,downvotes:59,score:.9318},uploaded:"2019-08-28T15:45:05.788Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0039a0c02e9e0ac1761445caadefdfdd989f5316",key:"5fda",state:"Published",createdAt:"2019-08-28T15:45:05.788Z",sageScore:5,diffs:[{njs:14,offset:0,notes:742,bombs:0,obstacles:24,nps:3.579,length:601.25,characteristic:"Standard",difficulty:"Hard",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.328,paritySummary:{errors:2,warns:2,resets:0}},{njs:16,offset:0,notes:772,bombs:0,obstacles:28,nps:3.724,length:601.25,characteristic:"Standard",difficulty:"Expert",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.328,paritySummary:{errors:2,warns:2,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0039a0c02e9e0ac1761445caadefdfdd989f5316.zip",coverURL:"https://cdn.beatsaver.com/0039a0c02e9e0ac1761445caadefdfdd989f5316.jpg",previewURL:"https://cdn.beatsaver.com/0039a0c02e9e0ac1761445caadefdfdd989f5316.mp3"}],createdAt:"2019-08-28T15:45:05.788Z",updatedAt:"2019-08-28T15:45:05.788Z",lastPublishedAt:"2019-08-28T15:45:05.788Z"},{id:"57c2",name:"Rockefeller Street (Nightcore) - Getter Jaani",description:"Hey this is reuploaded since it broke before\nhave fun",uploader:{id:16388,name:"rinkusenpai",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f6cc",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f6cc?d=retro",type:"SIMPLE"},metadata:{bpm:162.5,duration:145,songName:"Rockefeller Street (Nightcore)",songSubName:"",songAuthorName:"Getter Jaani",levelAuthorName:"RinkuSenpai"},stats:{plays:0,downloads:10267,upvotes:7867,downvotes:306,score:.9318},uploaded:"2019-07-18T21:40:09.204Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"b8c98ffc598703aadb4a3cb921d2830d270b57a5",key:"57c2",state:"Published",createdAt:"2019-07-18T21:40:09.204Z",sageScore:6,diffs:[{njs:13,offset:0,notes:545,bombs:0,obstacles:8,nps:3.884,length:380,characteristic:"Standard",difficulty:"Hard",events:2247,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.308,paritySummary:{errors:73,warns:61,resets:0},stars:3.06},{njs:17,offset:0,notes:709,bombs:0,obstacles:6,nps:5.053,length:380,characteristic:"Standard",difficulty:"Expert",events:2247,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.308,paritySummary:{errors:87,warns:75,resets:0},stars:4.39}],downloadURL:"https://cdn.beatsaver.com/b8c98ffc598703aadb4a3cb921d2830d270b57a5.zip",coverURL:"https://cdn.beatsaver.com/b8c98ffc598703aadb4a3cb921d2830d270b57a5.jpg",previewURL:"https://cdn.beatsaver.com/b8c98ffc598703aadb4a3cb921d2830d270b57a5.mp3"}],createdAt:"2019-07-18T21:40:09.204Z",updatedAt:"2019-07-18T21:40:09.204Z",lastPublishedAt:"2019-07-18T21:40:09.204Z"},{id:"2693",name:"I Want You - DJMAX",description:"I love this song.",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:140,duration:109,songName:"I Want You",songSubName:"DJMAX",songAuthorName:"ejiejidayo",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:6675,upvotes:2356,downvotes:54,score:.9318},uploaded:"2018-12-18T12:09:51Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"bb9de13539a2ab9a21f7ff68a2669f7887011456",key:"2693",state:"Published",createdAt:"2018-12-18T12:09:51Z",sageScore:4,diffs:[{njs:11,offset:0,notes:115,bombs:0,obstacles:25,nps:1.209,length:222,characteristic:"Standard",difficulty:"Easy",events:108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:95.143,paritySummary:{errors:23,warns:12,resets:0},stars:1.08},{njs:12,offset:0,notes:173,bombs:0,obstacles:24,nps:1.786,length:226.031,characteristic:"Standard",difficulty:"Normal",events:108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:96.871,paritySummary:{errors:13,warns:18,resets:0},stars:1.26},{njs:13,offset:0,notes:225,bombs:2,obstacles:42,nps:2.292,length:229.031,characteristic:"Standard",difficulty:"Hard",events:108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:98.156,paritySummary:{errors:15,warns:24,resets:0},stars:1.71},{njs:14,offset:0,notes:405,bombs:2,obstacles:32,nps:4.126,length:229.031,characteristic:"Standard",difficulty:"Expert",events:106,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:98.156,paritySummary:{errors:33,warns:80,resets:0},stars:2.85}],downloadURL:"https://cdn.beatsaver.com/bb9de13539a2ab9a21f7ff68a2669f7887011456.zip",coverURL:"https://cdn.beatsaver.com/bb9de13539a2ab9a21f7ff68a2669f7887011456.jpg",previewURL:"https://cdn.beatsaver.com/bb9de13539a2ab9a21f7ff68a2669f7887011456.mp3"}],createdAt:"2018-12-18T12:09:51Z",updatedAt:"2018-12-18T12:09:51Z",lastPublishedAt:"2018-12-18T12:09:51Z"},{id:"a907",name:"[TheFatRat Pack] Monody (ft. Laura Brehm) - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nMonody Stats:\nExpert+ - 1058 Notes | 3.73 NPS\nExpert - 907 Notes | 3.19 NPS\nHard - 677 Notes | 2.38 NPS\nNormal - 421 Notes | 1.48 NPS\nEasy - 283 Notes | 1.00 NPS\n\nRoughly 11-12 Hours of work\nGameplay: https://youtu.be/5LvJXf4Co4w\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:107,duration:283,songName:"Monody",songSubName:"ft. Laura Brehm",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:9449,upvotes:2084,downvotes:44,score:.9316},uploaded:"2020-05-22T13:28:13.182Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8e82872941abe8c99e9ac86d9c063fc5aee57d52",key:"a907",state:"Published",createdAt:"2020-05-22T13:28:13.182Z",sageScore:7,diffs:[{njs:10,offset:1,notes:283,bombs:0,obstacles:63,nps:1.048,length:481.689,characteristic:"Standard",difficulty:"Easy",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.106,paritySummary:{errors:43,warns:21,resets:0}},{njs:10,offset:1,notes:421,bombs:0,obstacles:62,nps:1.559,length:481.689,characteristic:"Standard",difficulty:"Normal",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.106,paritySummary:{errors:33,warns:16,resets:0}},{njs:12,offset:.25,notes:677,bombs:0,obstacles:61,nps:2.507,length:481.656,characteristic:"Standard",difficulty:"Hard",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.087,paritySummary:{errors:8,warns:6,resets:0}},{njs:15,offset:-.3,notes:907,bombs:0,obstacles:58,nps:3.358,length:481.689,characteristic:"Standard",difficulty:"Expert",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.106,paritySummary:{errors:5,warns:3,resets:0}},{njs:18,offset:.4,notes:1058,bombs:0,obstacles:59,nps:3.917,length:481.689,characteristic:"Standard",difficulty:"ExpertPlus",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.106,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8e82872941abe8c99e9ac86d9c063fc5aee57d52.zip",coverURL:"https://cdn.beatsaver.com/8e82872941abe8c99e9ac86d9c063fc5aee57d52.jpg",previewURL:"https://cdn.beatsaver.com/8e82872941abe8c99e9ac86d9c063fc5aee57d52.mp3"}],createdAt:"2020-05-22T13:28:13.182Z",updatedAt:"2020-05-22T13:28:13.182Z",lastPublishedAt:"2020-05-22T13:28:13.182Z"},{id:"9cd2",name:"Grant - Are We Still Young",description:"i can't get enough grant in my life, send help\r\n\r\nif you don't like dodge walls, check the lawless diff @whipstickgostop",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:110,duration:216,songName:"Are We Still Young",songSubName:"",songAuthorName:"grant",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:6474,upvotes:1642,downvotes:28,score:.9315},uploaded:"2020-04-19T21:24:40.430Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d03086c064a4546e4c5bfe6ef79545850fd1ac98",key:"9cd2",state:"Published",createdAt:"2020-04-19T21:24:40.430Z",sageScore:7,diffs:[{njs:10,offset:0,notes:270,bombs:0,obstacles:14,nps:1.292,length:383,characteristic:"Standard",difficulty:"Easy",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:208.909,paritySummary:{errors:88,warns:19,resets:0}},{njs:10,offset:0,notes:407,bombs:0,obstacles:13,nps:1.948,length:383,characteristic:"Standard",difficulty:"Normal",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:208.909,paritySummary:{errors:51,warns:15,resets:0}},{njs:12,offset:0,notes:576,bombs:0,obstacles:140,nps:2.746,length:384.5,characteristic:"Standard",difficulty:"Hard",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:209.727,paritySummary:{errors:4,warns:3,resets:0}},{njs:15,offset:-.25,notes:721,bombs:16,obstacles:138,nps:3.442,length:384,characteristic:"Standard",difficulty:"Expert",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:209.455,paritySummary:{errors:0,warns:0,resets:3}},{njs:17,offset:.2,notes:928,bombs:46,obstacles:186,nps:4.431,length:384,characteristic:"Standard",difficulty:"ExpertPlus",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:209.455,paritySummary:{errors:0,warns:0,resets:5}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:.2,notes:928,bombs:46,obstacles:145,nps:4.431,length:384,characteristic:"Lawless",difficulty:"ExpertPlus",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:209.455,paritySummary:{errors:0,warns:0,resets:5}}],downloadURL:"https://cdn.beatsaver.com/d03086c064a4546e4c5bfe6ef79545850fd1ac98.zip",coverURL:"https://cdn.beatsaver.com/d03086c064a4546e4c5bfe6ef79545850fd1ac98.jpg",previewURL:"https://cdn.beatsaver.com/d03086c064a4546e4c5bfe6ef79545850fd1ac98.mp3"}],createdAt:"2020-04-19T21:24:40.430Z",updatedAt:"2020-04-19T21:24:40.430Z",lastPublishedAt:"2020-04-19T21:24:40.430Z"},{id:"6d63",name:"Take on Me - a-ha",description:"This song may be older than I am, but it still rocks even to this date. This made me compelled in making a map worthy of it for modern times. Mapped in a similar dancy style as some of my other maps.\n\nAudio: The album version is used but with the music video ending/outro.\n\nPreview Video:\nhttps://youtu.be/ouhgRepxZMk\n\nBPM: 168-169\nDuration: 3:39\nEasy, Normal, Hard and Expert difficulties:\n\nEasy:\n277 notes, 29 obstacles, 0 mines\n\nNormal:\n359 notes, 26 obstacles, 0 mines\n\nHard:\n549 notes, 26 obstacles, 0 mines\n\nExpert:\n852 notes, 23 obstacles, 0 mines\n\nThanks to Jessi81, Thomas, Kival Evan, Redmagi and Storm Knight for playtesting!\n\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:168.868,duration:219,songName:"Take On Me",songSubName:"",songAuthorName:"A-ha",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:15253,upvotes:3615,downvotes:108,score:.9314},uploaded:"2019-11-01T07:20:59.352Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ac7d867dccb85bd28eea0787eda92c25f849dcef",key:"6d63",state:"Published",createdAt:"2019-11-01T07:20:59.352Z",sageScore:6,diffs:[{njs:10,offset:1,notes:277,bombs:0,obstacles:29,nps:1.325,length:588.521,characteristic:"Standard",difficulty:"Easy",events:2868,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.106,paritySummary:{errors:63,warns:26,resets:0}},{njs:12,offset:1,notes:359,bombs:0,obstacles:26,nps:1.711,length:590.521,characteristic:"Standard",difficulty:"Normal",events:2868,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.816,paritySummary:{errors:63,warns:61,resets:0}},{njs:15,offset:1,notes:549,bombs:0,obstacles:26,nps:2.617,length:590.521,characteristic:"Standard",difficulty:"Hard",events:2868,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.816,paritySummary:{errors:62,warns:70,resets:0}},{njs:18,offset:1,notes:852,bombs:0,obstacles:23,nps:4.061,length:590.521,characteristic:"Standard",difficulty:"Expert",events:2868,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.816,paritySummary:{errors:30,warns:67,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ac7d867dccb85bd28eea0787eda92c25f849dcef.zip",coverURL:"https://cdn.beatsaver.com/ac7d867dccb85bd28eea0787eda92c25f849dcef.jpg",previewURL:"https://cdn.beatsaver.com/ac7d867dccb85bd28eea0787eda92c25f849dcef.mp3"}],createdAt:"2019-11-01T07:20:59.352Z",updatedAt:"2019-11-01T07:20:59.352Z",lastPublishedAt:"2019-11-01T07:20:59.352Z"},{id:"9956",name:"Or3o - Help Me",description:"Help Me, by Or3o\nThis was really fun to map but took a little longer than expected.\nAnother full diff spread map. Hope you enjoy!\nThanks to the testplayers: Sorukun, Wolfb34, and Johnny Dee",uploader:{id:15650,name:"alzaraf",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ce3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ce3?d=retro",type:"SIMPLE"},metadata:{bpm:110,duration:188,songName:"Help Me",songSubName:"",songAuthorName:"Or3o",levelAuthorName:"Alzaraf"},stats:{plays:0,downloads:2316,upvotes:1519,downvotes:24,score:.9313},uploaded:"2020-04-10T16:34:49.265Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c56040e307335a3e7116de76e4f07d472cfe28d3",key:"9956",state:"Published",createdAt:"2020-04-10T16:34:49.265Z",sageScore:7,diffs:[{njs:10,offset:0,notes:216,bombs:0,obstacles:0,nps:1.189,length:333,characteristic:"Standard",difficulty:"Easy",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.636,paritySummary:{errors:56,warns:2,resets:0}},{njs:12,offset:0,notes:283,bombs:0,obstacles:0,nps:1.558,length:333,characteristic:"Standard",difficulty:"Normal",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.636,paritySummary:{errors:61,warns:0,resets:0}},{njs:14,offset:0,notes:497,bombs:0,obstacles:0,nps:2.72,length:335,characteristic:"Standard",difficulty:"Hard",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.727,paritySummary:{errors:28,warns:0,resets:0}},{njs:16,offset:0,notes:729,bombs:0,obstacles:0,nps:3.984,length:335.5,characteristic:"Standard",difficulty:"Expert",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.3,notes:816,bombs:0,obstacles:0,nps:4.459,length:335.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c56040e307335a3e7116de76e4f07d472cfe28d3.zip",coverURL:"https://cdn.beatsaver.com/c56040e307335a3e7116de76e4f07d472cfe28d3.jpg",previewURL:"https://cdn.beatsaver.com/c56040e307335a3e7116de76e4f07d472cfe28d3.mp3"}],createdAt:"2020-04-10T16:34:49.265Z",updatedAt:"2020-04-10T16:34:49.265Z",lastPublishedAt:"2020-04-10T16:34:49.265Z"},{id:"6360",name:"Shirobon - Into the Zone",description:"",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:122,duration:180,songName:"Into the Zone",songSubName:"",songAuthorName:"Shirobon",levelAuthorName:"Rustic"},stats:{plays:0,downloads:2366,upvotes:1312,downvotes:17,score:.9313},uploaded:"2019-09-14T17:32:19.835Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c22b89db9dfef084c62412def48cdace57226f5e",key:"6360",state:"Published",createdAt:"2019-09-14T17:32:19.835Z",sageScore:6,diffs:[{njs:18,offset:0,notes:428,bombs:0,obstacles:615,nps:2.67,length:326,characteristic:"Standard",difficulty:"Expert",events:5077,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:160.328,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c22b89db9dfef084c62412def48cdace57226f5e.zip",coverURL:"https://cdn.beatsaver.com/c22b89db9dfef084c62412def48cdace57226f5e.jpg",previewURL:"https://cdn.beatsaver.com/c22b89db9dfef084c62412def48cdace57226f5e.mp3"}],createdAt:"2019-09-14T17:32:19.835Z",updatedAt:"2019-09-14T17:32:19.835Z",lastPublishedAt:"2019-09-14T17:32:19.835Z"},{id:"7de1",name:"Emergency (Nightcore Mix) - Kim Leoni",description:"78",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:174,duration:148,songName:"Emergency (Nightcore Mix)",songSubName:"",songAuthorName:"Kim Leoni",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:7439,upvotes:2274,downvotes:52,score:.9313},uploaded:"2020-01-12T09:33:57.766Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c28ac0c2eac67c79b893ba3a1f432a27dd3a368b",key:"7de1",state:"Published",createdAt:"2020-01-12T09:33:57.766Z",sageScore:4,diffs:[{njs:14,offset:.6,notes:542,bombs:58,obstacles:187,nps:3.806,length:413,characteristic:"Standard",difficulty:"Easy",events:1749,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:142.414,paritySummary:{errors:67,warns:79,resets:23}},{njs:13,offset:0,notes:428,bombs:0,obstacles:126,nps:3.005,length:413,characteristic:"Standard",difficulty:"Hard",events:1749,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:142.414,paritySummary:{errors:2,warns:2,resets:0}},{njs:16,offset:.1,notes:599,bombs:0,obstacles:126,nps:4.196,length:414,characteristic:"Standard",difficulty:"Expert",events:1749,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:142.759,paritySummary:{errors:14,warns:44,resets:0}},{njs:17,offset:0,notes:805,bombs:0,obstacles:126,nps:5.639,length:414,characteristic:"Standard",difficulty:"ExpertPlus",events:1749,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:142.759,paritySummary:{errors:18,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c28ac0c2eac67c79b893ba3a1f432a27dd3a368b.zip",coverURL:"https://cdn.beatsaver.com/c28ac0c2eac67c79b893ba3a1f432a27dd3a368b.jpg",previewURL:"https://cdn.beatsaver.com/c28ac0c2eac67c79b893ba3a1f432a27dd3a368b.mp3"}],createdAt:"2020-01-12T09:33:57.766Z",updatedAt:"2020-01-12T09:33:57.766Z",lastPublishedAt:"2020-01-12T09:33:57.766Z"},{id:"557f",name:"Enormous Penis - Da Vinci's Notebook",description:"This is my first time working on a A Capella song! which means no instruments and mapping to lyrics or lip noises. which means its usually not following the bpm closely (some parts are 1/8 faster or slower). I did like the challenge though and it was a nice change of pace! Thanks Austin for giving me a reason to try mapping A Capella.\n\n“Enormous Penis” is an A Capella song performed by the group Da Vinci’s Notebook for their album Brontosaurus, which was released in 2002. ",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:119,duration:164,songName:"Enormous Penis",songSubName:"",songAuthorName:"Da Vinci's Notebook",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2614,upvotes:1367,downvotes:19,score:.9312},uploaded:"2019-07-04T13:21:52.797Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2b61e7bd12379b9c1c193de7e28d1e816942c948",key:"557f",state:"Published",createdAt:"2019-07-04T13:21:52.797Z",sageScore:5,diffs:[{njs:12,offset:0,notes:518,bombs:55,obstacles:36,nps:3.252,length:315.875,characteristic:"Standard",difficulty:"Hard",events:714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:159.265,paritySummary:{errors:29,warns:25,resets:10}}],downloadURL:"https://cdn.beatsaver.com/2b61e7bd12379b9c1c193de7e28d1e816942c948.zip",coverURL:"https://cdn.beatsaver.com/2b61e7bd12379b9c1c193de7e28d1e816942c948.jpg",previewURL:"https://cdn.beatsaver.com/2b61e7bd12379b9c1c193de7e28d1e816942c948.mp3"}],createdAt:"2019-07-04T13:21:52.797Z",updatedAt:"2019-07-04T13:21:52.797Z",lastPublishedAt:"2019-07-04T13:21:52.797Z"},{id:"5373",name:"Chito (CV: Minase Inori), Yuuri (CV: Kubo Yurika) - Ugoku, Ugoku",description:"A nice, chill map of the opening to one of my favorite animes to let you know that I haven't stopped mapping yet. I have quite a few maps I've been slowly making progress on and they should be coming out sometime soon!\n\nIn case you need a way to contact me or let me know of any issues: discord.gg/EVU9At2",uploader:{id:4288620,name:"hexagonial",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f2fb",avatar:"https://cdn.beatsaver.com/avatar/221442943045599232.png",type:"DISCORD"},metadata:{bpm:128,duration:91,songName:"Ugoku, Ugoku",songSubName:"",songAuthorName:"Chito (CV: Minase Inori), Yuuri (CV: Kubo Yurika)",levelAuthorName:"Hexagonial"},stats:{plays:0,downloads:3196,upvotes:1684,downvotes:30,score:.9312},uploaded:"2019-06-19T01:42:05.315Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7ac2bd85723acb7d4fd9957e62a7769700755c04",key:"5373",state:"Published",createdAt:"2019-06-19T01:42:05.315Z",sageScore:7,diffs:[{njs:10,offset:0,notes:95,bombs:8,obstacles:45,nps:1.081,length:187.5,characteristic:"Standard",difficulty:"Easy",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:152,bombs:8,obstacles:45,nps:1.729,length:187.5,characteristic:"Standard",difficulty:"Normal",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:14,warns:0,resets:0}},{njs:13,offset:0,notes:243,bombs:4,obstacles:43,nps:2.765,length:187.5,characteristic:"Standard",difficulty:"Hard",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:8,warns:0,resets:0}},{njs:15,offset:0,notes:326,bombs:0,obstacles:36,nps:3.709,length:187.5,characteristic:"Standard",difficulty:"Expert",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:393,bombs:0,obstacles:39,nps:4.471,length:187.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:1,warns:9,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7ac2bd85723acb7d4fd9957e62a7769700755c04.zip",coverURL:"https://cdn.beatsaver.com/7ac2bd85723acb7d4fd9957e62a7769700755c04.jpg",previewURL:"https://cdn.beatsaver.com/7ac2bd85723acb7d4fd9957e62a7769700755c04.mp3"}],createdAt:"2019-06-19T01:42:05.315Z",updatedAt:"2019-06-19T01:42:05.315Z",lastPublishedAt:"2019-06-19T01:42:05.315Z"},{id:"10dcc",name:"The Chonk Chart™",description:"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n(account definitely isn't a Mawntee alt account no sir)",uploader:{id:1602,name:"chief-queef",uniqueSet:!0,hash:"5f9a4d2a030219000627c2bf",avatar:"https://cdn.beatsaver.com/avatar/1602.jpg",type:"SIMPLE"},metadata:{bpm:69,duration:23,songName:"Chonk Chart",songSubName:"",songAuthorName:"Gyan Ko",levelAuthorName:"Chief Queef"},stats:{plays:0,downloads:3653,upvotes:1784,downvotes:34,score:.9311},uploaded:"2020-11-12T09:20:18.282Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b966edcba3f8187dacd633dabbf05e128e57d21b",key:"10dcc",state:"Published",createdAt:"2020-11-12T09:20:18.282Z",sageScore:4,diffs:[{njs:6.9,offset:6.9,notes:7,bombs:0,obstacles:0,nps:.447,length:18,characteristic:"Standard",difficulty:"Easy",events:312,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:15.652,paritySummary:{errors:6,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b966edcba3f8187dacd633dabbf05e128e57d21b.zip",coverURL:"https://cdn.beatsaver.com/b966edcba3f8187dacd633dabbf05e128e57d21b.jpg",previewURL:"https://cdn.beatsaver.com/b966edcba3f8187dacd633dabbf05e128e57d21b.mp3"}],createdAt:"2020-11-12T09:20:18.282Z",updatedAt:"2020-11-12T09:20:18.282Z",lastPublishedAt:"2020-11-12T09:20:18.282Z"},{id:"6b8c",name:"TheFatRat - MAYDAY feat. Laura Brehm",description:"--- PLEASE HAVE CHROMALITE INSTALLED FOR THE LIGHTSHOW AND LIGHTING EVENTS ---\n\nExpert+ (M A Y D A Y): Oddloop\nEasy - Expert: RedMagi\nLights: Aaltopahwi",uploader:{id:4284400,name:"oddloop",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fd45",avatar:"https://cdn.beatsaver.com/avatar/173241614192476161.png",type:"DISCORD"},metadata:{bpm:150,duration:249,songName:"MAYDAY",songSubName:"feat. Laura Brehm",songAuthorName:"TheFatRat",levelAuthorName:"Oddloop, RedMagi & AaltopahWi"},stats:{plays:0,downloads:8888,upvotes:4606,downvotes:154,score:.9311},uploaded:"2019-10-22T19:11:34.707Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"58e760690ffb379864d76b06505f4056e84fbe84",key:"6b8c",state:"Published",createdAt:"2019-10-22T19:11:34.707Z",sageScore:8,diffs:[{njs:10,offset:1,notes:251,bombs:0,obstacles:0,nps:1.077,length:582.5,characteristic:"Standard",difficulty:"Easy",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:233,paritySummary:{errors:7,warns:6,resets:0},stars:.8},{njs:12,offset:1,notes:434,bombs:0,obstacles:0,nps:1.863,length:582.5,characteristic:"Standard",difficulty:"Normal",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:233,paritySummary:{errors:11,warns:10,resets:0},stars:1.16},{njs:14,offset:1,notes:541,bombs:16,obstacles:0,nps:2.322,length:582.5,characteristic:"Standard",difficulty:"Hard",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:233,paritySummary:{errors:7,warns:8,resets:1},stars:1.53},{njs:16,offset:.5,notes:769,bombs:12,obstacles:0,nps:3.204,length:600,characteristic:"Standard",difficulty:"Expert",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240,paritySummary:{errors:10,warns:9,resets:1},stars:2.17},{njs:23,offset:.5,notes:1655,bombs:0,obstacles:49,nps:6.896,length:600,characteristic:"Standard",difficulty:"ExpertPlus",events:20314,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240,paritySummary:{errors:2,warns:0,resets:0},stars:5.3},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/58e760690ffb379864d76b06505f4056e84fbe84.zip",coverURL:"https://cdn.beatsaver.com/58e760690ffb379864d76b06505f4056e84fbe84.jpg",previewURL:"https://cdn.beatsaver.com/58e760690ffb379864d76b06505f4056e84fbe84.mp3"}],createdAt:"2019-10-22T19:11:34.707Z",updatedAt:"2019-10-22T19:11:34.707Z",lastPublishedAt:"2019-10-22T19:11:34.707Z"},{id:"1ff0",name:"Flux Pavilion - I can't stop | 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:148,songName:"I can't stop",songSubName:"Flux Pavilion",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:11299,upvotes:4364,downvotes:143,score:.9311},uploaded:"2018-11-12T17:55:03Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"8d9df176c94ecf5c7725457525b6f959f5ef9296",key:"1ff0",state:"Published",createdAt:"2018-11-12T17:55:03Z",sageScore:6,diffs:[{njs:10,offset:0,notes:145,bombs:0,obstacles:0,nps:1.057,length:320,characteristic:"Standard",difficulty:"Easy",events:1045,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:52,warns:3,resets:0},stars:.69},{njs:10,offset:0,notes:212,bombs:0,obstacles:0,nps:1.546,length:320,characteristic:"Standard",difficulty:"Normal",events:0,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:8,warns:17,resets:0},stars:.92},{njs:12,offset:0,notes:342,bombs:0,obstacles:0,nps:2.509,length:318,characteristic:"Standard",difficulty:"Hard",events:2634,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:136.286,paritySummary:{errors:5,warns:29,resets:0},stars:1.78},{njs:14,offset:0,notes:372,bombs:0,obstacles:15,nps:2.73,length:318,characteristic:"Standard",difficulty:"Expert",events:2634,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:136.286,paritySummary:{errors:17,warns:34,resets:0},stars:1.78}],downloadURL:"https://cdn.beatsaver.com/8d9df176c94ecf5c7725457525b6f959f5ef9296.zip",coverURL:"https://cdn.beatsaver.com/8d9df176c94ecf5c7725457525b6f959f5ef9296.jpg",previewURL:"https://cdn.beatsaver.com/8d9df176c94ecf5c7725457525b6f959f5ef9296.mp3"}],createdAt:"2018-11-12T17:55:03Z",updatedAt:"2018-11-12T17:55:03Z",lastPublishedAt:"2018-11-12T17:55:03Z"},{id:"e01a",name:"The Spectre - Wallmap",description:"Have you ever seen a call of duty montage from the early 2010's? maybe Russian guy playing a piano in public? \n \nIf you've ever heard of the name Alan Walker then you've heard of \"The Spectre\" so thanks to some help from a friend I'm here to bring you my newest masterpiece. A song with decently placed blocks... wow you'd think by now id actually do a new song but no. I'm here to fix The Spectre and give it the attention it deserves.\n\nOfficial Release Video:\nhttps://youtu.be/ljxO7plPgpA\n\nLight did a little play-through here if you curious\nhttps://www.youtube.com/watch?v=l4qjiqE-hqQ&t=12s",uploader:{id:3449,name:"rizthesnuggie",uniqueSet:!0,hash:"5f051045c51ba90006d92da9",avatar:"https://www.gravatar.com/avatar/5f051045c51ba90006d92da9?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:190,songName:"The Spectre",songSubName:"[Non NCS]",songAuthorName:"Alan Walker",levelAuthorName:"Riz and KyleT"},stats:{plays:0,downloads:2423,upvotes:1381,downvotes:20,score:.9309},uploaded:"2020-08-29T19:50:28.236Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f11409e4e08f2463be65c0e56dfc6f6b00e25aeb",key:"e01a",state:"Published",createdAt:"2020-08-29T19:50:28.236Z",sageScore:1,diffs:[{njs:16,offset:-.5,notes:749,bombs:25,obstacles:34105,nps:4.048,length:394.75,characteristic:"Standard",difficulty:"Expert",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:185.039,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.5,notes:0,bombs:0,obstacles:34105,nps:0,length:0,characteristic:"Lightshow",difficulty:"Expert",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f11409e4e08f2463be65c0e56dfc6f6b00e25aeb.zip",coverURL:"https://cdn.beatsaver.com/f11409e4e08f2463be65c0e56dfc6f6b00e25aeb.jpg",previewURL:"https://cdn.beatsaver.com/f11409e4e08f2463be65c0e56dfc6f6b00e25aeb.mp3"}],createdAt:"2020-08-29T19:50:28.236Z",updatedAt:"2020-08-29T19:50:28.236Z",lastPublishedAt:"2020-08-29T19:50:28.236Z"},{id:"67a8",name:"world.execute(me); - Mili (Fixed)",description:"71",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:130,duration:209,songName:"world.execute (me) ;",songSubName:"",songAuthorName:"Mili",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:4119,upvotes:1832,downvotes:36,score:.9309},uploaded:"2019-10-03T22:51:56.567Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cfc9d5013d12adb3ca5e0a4a31d8a06f2081dbe6",key:"67a8",state:"Published",createdAt:"2019-10-03T22:51:56.567Z",sageScore:5,diffs:[{njs:15,offset:0,notes:462,bombs:0,obstacles:610,nps:2.239,length:447,characteristic:"Standard",difficulty:"Hard",events:1025,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:206.308,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:984,bombs:0,obstacles:610,nps:4.764,length:447.5,characteristic:"Standard",difficulty:"Expert",events:1025,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:206.538,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cfc9d5013d12adb3ca5e0a4a31d8a06f2081dbe6.zip",coverURL:"https://cdn.beatsaver.com/cfc9d5013d12adb3ca5e0a4a31d8a06f2081dbe6.jpg",previewURL:"https://cdn.beatsaver.com/cfc9d5013d12adb3ca5e0a4a31d8a06f2081dbe6.mp3"}],createdAt:"2019-10-03T22:51:56.567Z",updatedAt:"2019-10-03T22:51:56.567Z",lastPublishedAt:"2019-10-03T22:51:56.567Z"},{id:"36bf",name:"Daft Punk - Aerodynamic",description:"An essential classic. You might want to stretch first...\r\nExpert+ and Hard.\r\n\r\nPreview: https://youtu.be/1dAwipwIgDg\r\n\r\nCheck out my other maps, too! If you like them, consider subscribing on YouTube to find out when new maps go live.\r\n\r\nThanks for playing!\r\n\r\nhttps://www.twitch.tv/syntheseizure",uploader:{id:31265,name:"syntheseizure",uniqueSet:!0,hash:"5cff0b7698cc5a672c8546bd",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8546bd?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:214,songName:"Aerodynamic",songSubName:"Daft Punk",songAuthorName:"Syntheseizure",levelAuthorName:"Syntheseizure"},stats:{plays:0,downloads:5893,upvotes:2763,downvotes:73,score:.9309},uploaded:"2019-02-16T17:49:39Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"092840ca9a391f34c6af32ac1d6475498de74407",key:"36bf",state:"Published",createdAt:"2019-02-16T17:49:39Z",sageScore:5,diffs:[{njs:12,offset:0,notes:650,bombs:0,obstacles:48,nps:3.2,length:416,characteristic:"Standard",difficulty:"Hard",events:2022,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.927,paritySummary:{errors:32,warns:11,resets:0}},{njs:14,offset:0,notes:1022,bombs:0,obstacles:48,nps:5.031,length:416,characteristic:"Standard",difficulty:"ExpertPlus",events:2022,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.927,paritySummary:{errors:48,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/092840ca9a391f34c6af32ac1d6475498de74407.zip",coverURL:"https://cdn.beatsaver.com/092840ca9a391f34c6af32ac1d6475498de74407.jpg",previewURL:"https://cdn.beatsaver.com/092840ca9a391f34c6af32ac1d6475498de74407.mp3"}],createdAt:"2019-02-16T17:49:39Z",updatedAt:"2019-02-16T17:49:39Z",lastPublishedAt:"2019-02-16T17:49:39Z"},{id:"381a",name:"Deep in Abyss [Made in Abyss Opening] - Riko (CV: Miyu Tomita), Reg (CV: Ise Mariya)",description:"Deep in Abyss is the opening song for Made in Abyss and is sung by Riko voiced by Miyu Tomita and Reg voiced by Ise Mariya.\r\n\r\nCheckout the map preview: https://www.youtube.com/watch?v=ZMQz-z57kKo",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:135,duration:221,songName:"Deep in Abyss",songSubName:"Riko (CV: Miyu Tomita), Reg (CV: Ise Mariya)",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3012,upvotes:1850,downvotes:37,score:.9308},uploaded:"2019-02-21T01:04:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c586288044251cc2b2e1d6ac3817214a9ea02302",key:"381a",state:"Published",createdAt:"2019-02-21T01:04:41Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1013,bombs:0,obstacles:33,nps:4.685,length:486.5,characteristic:"Standard",difficulty:"Expert",events:2230,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.222,paritySummary:{errors:41,warns:46,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c586288044251cc2b2e1d6ac3817214a9ea02302.zip",coverURL:"https://cdn.beatsaver.com/c586288044251cc2b2e1d6ac3817214a9ea02302.jpg",previewURL:"https://cdn.beatsaver.com/c586288044251cc2b2e1d6ac3817214a9ea02302.mp3"}],createdAt:"2019-02-21T01:04:41Z",updatedAt:"2019-02-21T01:04:41Z",lastPublishedAt:"2019-02-21T01:04:41Z"},{id:"a168",name:"Yunomi - Oedo Controller/大江戸コントローラー feat. TORIENA【Wall Map】",description:"【requires】 Noodle Extensions Chroma\nhttps://youtu.be/5D1WTufQ5dM ",uploader:{id:4285467,name:"fefy",uniqueSet:!0,hash:"5cff0b7798cc5a672c856908",avatar:"https://cdn.beatsaver.com/avatar/380656936460484620.png",type:"DISCORD"},metadata:{bpm:115,duration:257,songName:"Oedo Controller",songSubName:"feat. TORIENA",songAuthorName:"Yunomi",levelAuthorName:"Fefy"},stats:{plays:0,downloads:2659,upvotes:1344,downvotes:19,score:.9307},uploaded:"2020-05-02T09:37:24.020Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cc3e7aefe1e878057f83d9018eaf977d9f69a1bb",key:"a168",state:"Published",createdAt:"2020-05-02T09:37:24.020Z",sageScore:7,diffs:[{njs:15,offset:0,notes:0,bombs:0,obstacles:55472,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:2395,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:816,bombs:0,obstacles:55472,nps:3.265,length:479,characteristic:"Standard",difficulty:"Expert",events:2395,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:249.913,paritySummary:{errors:20,warns:12,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cc3e7aefe1e878057f83d9018eaf977d9f69a1bb.zip",coverURL:"https://cdn.beatsaver.com/cc3e7aefe1e878057f83d9018eaf977d9f69a1bb.jpg",previewURL:"https://cdn.beatsaver.com/cc3e7aefe1e878057f83d9018eaf977d9f69a1bb.mp3"}],createdAt:"2020-05-02T09:37:24.020Z",updatedAt:"2020-05-02T09:37:24.020Z",lastPublishedAt:"2020-05-02T09:37:24.020Z"},{id:"6adc",name:"Rasputin (Funk Overload)",description:"Huge thanks to Whipstickgostop for remastering the audio of this funky beat!",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:152,duration:225,songName:"Rasputin (Funk Overload)",songSubName:"",songAuthorName:"Boney M",levelAuthorName:"Ryger"},stats:{plays:0,downloads:10264,upvotes:4935,downvotes:173,score:.9305},uploaded:"2019-10-19T23:00:58.938Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e979073ecfbb283675d03453af39109957819f35",key:"6adc",state:"Published",createdAt:"2019-10-19T23:00:58.938Z",sageScore:5,diffs:[{njs:16,offset:0,notes:988,bombs:0,obstacles:0,nps:4.542,length:551.125,characteristic:"Standard",difficulty:"Hard",events:4202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.549,paritySummary:{errors:15,warns:14,resets:0}},{njs:16,offset:0,notes:1080,bombs:0,obstacles:0,nps:4.964,length:551.125,characteristic:"Standard",difficulty:"Expert",events:4202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.549,paritySummary:{errors:25,warns:21,resets:0}},{njs:18,offset:0,notes:1164,bombs:0,obstacles:0,nps:5.351,length:551.125,characteristic:"Standard",difficulty:"ExpertPlus",events:4196,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.549,paritySummary:{errors:21,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e979073ecfbb283675d03453af39109957819f35.zip",coverURL:"https://cdn.beatsaver.com/e979073ecfbb283675d03453af39109957819f35.jpg",previewURL:"https://cdn.beatsaver.com/e979073ecfbb283675d03453af39109957819f35.mp3"}],createdAt:"2019-10-19T23:00:58.938Z",updatedAt:"2019-10-19T23:00:58.938Z",lastPublishedAt:"2019-10-19T23:00:58.938Z"},{id:"3ae2",name:"I Don't Wanna Be In Love (Dance Floor Anthem) - Good Charlotte",description:"I Dont Wanna Be In Love (Dance Floor Anthem) - Good Charlotte\r\nhttps://www.youtube.com/watch?v=pbpeMN_vFRM",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:125,duration:243,songName:"I Don't Wanna Be In Love (Dance Floor Anthem)",songSubName:"Good Charlotte",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:4672,upvotes:991,downvotes:8,score:.9305},uploaded:"2019-03-02T17:41:39Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f0bef11ce8866052770c42ed855e5d21e935614c",key:"3ae2",state:"Published",createdAt:"2019-03-02T17:41:39Z",sageScore:6,diffs:[{njs:10,offset:0,notes:372,bombs:0,obstacles:29,nps:1.563,length:496,characteristic:"Standard",difficulty:"Normal",events:5639,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:238.08,paritySummary:{errors:19,warns:7,resets:0}},{njs:12,offset:0,notes:796,bombs:0,obstacles:20,nps:3.343,length:496,characteristic:"Standard",difficulty:"Hard",events:5639,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:238.08,paritySummary:{errors:18,warns:26,resets:0}},{njs:14,offset:0,notes:1174,bombs:0,obstacles:10,nps:4.931,length:496,characteristic:"Standard",difficulty:"Expert",events:5639,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:238.08,paritySummary:{errors:27,warns:36,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f0bef11ce8866052770c42ed855e5d21e935614c.zip",coverURL:"https://cdn.beatsaver.com/f0bef11ce8866052770c42ed855e5d21e935614c.jpg",previewURL:"https://cdn.beatsaver.com/f0bef11ce8866052770c42ed855e5d21e935614c.mp3"}],createdAt:"2019-03-02T17:41:39Z",updatedAt:"2019-03-02T17:41:39Z",lastPublishedAt:"2019-03-02T17:41:39Z"},{id:"706b",name:"Guren No Yumiya (TV Size) [Attack On Titan Opening] - Linked Horizon",description:"This map was converted from one of my old maps.\n\nFeel free to DM me on discord @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:180.676,duration:93,songName:"Guren no Yumiya (TV Size)",songSubName:"",songAuthorName:"Linked Horizon",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:8096,upvotes:2435,downvotes:61,score:.9304},uploaded:"2019-11-17T07:01:53.007Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c00412845c48fb65fc30f16d902af542ca2c88ac",key:"706b",state:"Published",createdAt:"2019-11-17T07:01:53.007Z",sageScore:4,diffs:[{njs:11,offset:0,notes:299,bombs:0,obstacles:0,nps:3.545,length:253.998,characteristic:"Standard",difficulty:"Hard",events:2393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:84.349,paritySummary:{errors:10,warns:7,resets:0}},{njs:13,offset:0,notes:375,bombs:0,obstacles:0,nps:4.446,length:253.998,characteristic:"Standard",difficulty:"Expert",events:2472,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:84.349,paritySummary:{errors:21,warns:20,resets:0}},{njs:15,offset:0,notes:460,bombs:0,obstacles:0,nps:5.454,length:253.998,characteristic:"Standard",difficulty:"ExpertPlus",events:2472,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:84.349,paritySummary:{errors:22,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c00412845c48fb65fc30f16d902af542ca2c88ac.zip",coverURL:"https://cdn.beatsaver.com/c00412845c48fb65fc30f16d902af542ca2c88ac.jpg",previewURL:"https://cdn.beatsaver.com/c00412845c48fb65fc30f16d902af542ca2c88ac.mp3"}],createdAt:"2019-11-17T07:01:53.007Z",updatedAt:"2019-11-17T07:01:53.007Z",lastPublishedAt:"2019-11-17T07:01:53.007Z"},{id:"88bd",name:"Pornhub Intro",description:"182nd Map\nCollab with Monteblanco, Neko, shuuxruri, Suzuki.dll, Zoinkai & Kalmer\n\nYoutube Preview : https://www.youtube.com/watch?v=7V8go6p4P2E",uploader:{id:4284588,name:"rigid",uniqueSet:!0,hash:"5cff0b7598cc5a672c852224",avatar:"https://cdn.beatsaver.com/avatar/295613108947386368.png",type:"DISCORD"},metadata:{bpm:120,duration:5,songName:"Pornhub Intro",songSubName:"",songAuthorName:"Yes",levelAuthorName:"Rigid, Monteblanco, Neko, shuuxruri, Suzuki.dll, Zoinkai & Kalmer"},stats:{plays:0,downloads:3144,upvotes:2182,downvotes:51,score:.9303},uploaded:"2020-02-19T21:36:55.060Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3ff5c30044bc8d0dfe5aae6b9c665a6367732242",key:"88bd",state:"Published",createdAt:"2020-02-19T21:36:55.060Z",sageScore:3,diffs:[{njs:14,offset:0,notes:10,bombs:0,obstacles:0,nps:4.706,length:4.25,characteristic:"Standard",difficulty:"ExpertPlus",events:93,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:2.125,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3ff5c30044bc8d0dfe5aae6b9c665a6367732242.zip",coverURL:"https://cdn.beatsaver.com/3ff5c30044bc8d0dfe5aae6b9c665a6367732242.jpg",previewURL:"https://cdn.beatsaver.com/3ff5c30044bc8d0dfe5aae6b9c665a6367732242.mp3"}],createdAt:"2020-02-19T21:36:55.060Z",updatedAt:"2020-02-19T21:36:55.060Z",lastPublishedAt:"2020-02-19T21:36:55.060Z"},{id:"3f79",name:"Here With Me (feat. CHVRCHES) - Marshmello",description:"Expert Playthrough : https://youtu.be/okOkJ55es8A",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:100,duration:158,songName:"Here With Me (feat. CHVRCHES)",songSubName:"Marshmello",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:6739,upvotes:2077,downvotes:47,score:.9303},uploaded:"2019-03-21T15:12:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bae9f42e64c14c8b1740c5bedc0e1c1db8c33c7d",key:"3f79",state:"Published",createdAt:"2019-03-21T15:12:40Z",sageScore:5,diffs:[{njs:11,offset:0,notes:253,bombs:0,obstacles:35,nps:1.67,length:252.5,characteristic:"Standard",difficulty:"Normal",events:626,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.5,paritySummary:{errors:27,warns:6,resets:0}},{njs:12,offset:0,notes:306,bombs:0,obstacles:35,nps:2.02,length:252.5,characteristic:"Standard",difficulty:"Hard",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.5,paritySummary:{errors:13,warns:8,resets:0}},{njs:14,offset:0,notes:450,bombs:0,obstacles:35,nps:2.97,length:252.5,characteristic:"Standard",difficulty:"Expert",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.5,paritySummary:{errors:28,warns:24,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bae9f42e64c14c8b1740c5bedc0e1c1db8c33c7d.zip",coverURL:"https://cdn.beatsaver.com/bae9f42e64c14c8b1740c5bedc0e1c1db8c33c7d.jpg",previewURL:"https://cdn.beatsaver.com/bae9f42e64c14c8b1740c5bedc0e1c1db8c33c7d.mp3"}],createdAt:"2019-03-21T15:12:40Z",updatedAt:"2019-03-21T15:12:40Z",lastPublishedAt:"2019-03-21T15:12:40Z"},{id:"238a",name:"Dance of the Sugar Plum Fairy - Lindsey Stirling",description:"EDIT: Thanks to everyone who voted for this map in the Christmas contest!\n\nTheme from the nutcracker.\n\nExpert+ preview: https://youtu.be/naaei24FZAY\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu\n\nHard and Normal are kinda close to OST standards, so might be easier for custom standards.\n\nThanks to Redmagi, baxter395, AaltopahWi, and Kolezan for their help and feedback.",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:140,duration:158,songName:"Dance of the Sugar Plum Fairy",songSubName:"Lindsey Stirling",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:4103,upvotes:1711,downvotes:33,score:.9302},uploaded:"2018-12-03T09:40:02Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6b901c30686a9fa2935271177fc1b57dd072aae8",key:"238a",state:"Published",createdAt:"2018-12-03T09:40:02Z",sageScore:4,diffs:[{njs:10,offset:0,notes:219,bombs:2,obstacles:29,nps:1.494,length:342,characteristic:"Standard",difficulty:"Normal",events:547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.571,paritySummary:{errors:89,warns:12,resets:0}},{njs:10,offset:0,notes:373,bombs:2,obstacles:16,nps:2.545,length:342,characteristic:"Standard",difficulty:"Hard",events:547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.571,paritySummary:{errors:54,warns:10,resets:0}},{njs:15,offset:0,notes:721,bombs:4,obstacles:32,nps:4.919,length:342,characteristic:"Standard",difficulty:"ExpertPlus",events:547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.571,paritySummary:{errors:51,warns:67,resets:1}}],downloadURL:"https://cdn.beatsaver.com/6b901c30686a9fa2935271177fc1b57dd072aae8.zip",coverURL:"https://cdn.beatsaver.com/6b901c30686a9fa2935271177fc1b57dd072aae8.jpg",previewURL:"https://cdn.beatsaver.com/6b901c30686a9fa2935271177fc1b57dd072aae8.mp3"}],createdAt:"2018-12-03T09:40:02Z",updatedAt:"2018-12-03T09:40:02Z",lastPublishedAt:"2018-12-03T09:40:02Z"},{id:"ebb",name:"Do I Wanna Know? - Arctic Monkeys",description:"X/H/N/E difficulties, full manual lighting.\r\n\r\nExpert Playthrough: https://www.youtube.com/watch?v=ejmDJxe1Vzg\r\n\r\nCreated on twitch in one sitting during a tutorial stream.\r\nFollow us and come say hi on twitch! https://www.twitch.tv/freeek\r\n\r\nHave fun :)\r\n\r\nFreeek!",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:85,duration:273,songName:"Do I Wanna Know?",songSubName:"Arctic Monkeys",songAuthorName:"Freeek",levelAuthorName:"freeek"},stats:{plays:0,downloads:6011,upvotes:2491,downvotes:64,score:.9302},uploaded:"2018-08-09T18:05:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0fa854bb295e56d8c77da226a3ca41c0070cc793",key:"ebb",state:"Published",createdAt:"2018-08-09T18:05:46Z",sageScore:6,diffs:[{njs:10,offset:0,notes:372,bombs:0,obstacles:71,nps:1.387,length:380,characteristic:"Standard",difficulty:"Easy",events:1154,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.235,paritySummary:{errors:84,warns:10,resets:0}},{njs:10,offset:0,notes:522,bombs:0,obstacles:72,nps:1.946,length:380,characteristic:"Standard",difficulty:"Normal",events:1154,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.235,paritySummary:{errors:53,warns:54,resets:0}},{njs:10,offset:0,notes:708,bombs:0,obstacles:72,nps:2.639,length:380,characteristic:"Standard",difficulty:"Hard",events:1154,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.235,paritySummary:{errors:56,warns:74,resets:0}},{njs:10,offset:0,notes:863,bombs:0,obstacles:75,nps:3.217,length:380,characteristic:"Standard",difficulty:"Expert",events:1154,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.235,paritySummary:{errors:79,warns:105,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0fa854bb295e56d8c77da226a3ca41c0070cc793.zip",coverURL:"https://cdn.beatsaver.com/0fa854bb295e56d8c77da226a3ca41c0070cc793.jpg",previewURL:"https://cdn.beatsaver.com/0fa854bb295e56d8c77da226a3ca41c0070cc793.mp3"}],createdAt:"2018-08-09T18:05:46Z",updatedAt:"2018-08-09T18:05:46Z",lastPublishedAt:"2018-08-09T18:05:46Z"},{id:"80fb",name:"[Noodlegames] Lifelight (Camellia's Hardstyle Bootleg)",description:"The Ramen Noodle group is here to bring you a map pack full of our favorite video game soundtracks and game-inspired music!\r\n\r\nCamellia + Iconic Song = PepeJam\r\nHas RGB lights (use chromalite pls, you'll make me cry if you don't)\r\n\r\nStandard mapped by +1 Rabbit\r\nLots of love provided by CyanSnow\r\nOne Saber and Lights mapped by Aeroluna\r\n\r\n150 BPM / 3:47 Duration\r\n\r\n[Standard]:\r\nEasy - 284 notes (1.16 NPS)\r\nNormal - 355 notes (1.56 NPS)\r\nHard - 661 notes (2.91 NPS)\r\nExpert - 899 notes (3.96 NPS)\r\nExpert+ - 1036 notes (4.56 NPS)\r\n\r\n[One Saber]:\r\nExpert - 622 notes (2.73 NPS)\r\nExpert+ - 692 notes (3.05 NPS)\r\n\r\nLights preview: https://youtu.be/qk06uZpgr7E",uploader:{id:4284266,name:"aeroluna",uniqueSet:!0,hash:"5cff0b7698cc5a672c854907",avatar:"https://cdn.beatsaver.com/avatar/193636171497209856.png",type:"DISCORD"},metadata:{bpm:150,duration:227,songName:"Lifelight",songSubName:"(Camellia's Hardstyle Bootleg)",songAuthorName:"Camellia",levelAuthorName:"+1 Rabbit & Aeroluna"},stats:{plays:0,downloads:4528,upvotes:1540,downvotes:27,score:.9301},uploaded:"2020-01-24T23:00:27.676Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bb2bd82208d452badc4acaf877dc2c4abd0fab15",key:"80fb",state:"Published",createdAt:"2020-01-24T23:00:27.676Z",sageScore:4,diffs:[{njs:12,offset:0,notes:264,bombs:0,obstacles:8,nps:1.231,length:536,characteristic:"Standard",difficulty:"Easy",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:116,warns:8,resets:0}},{njs:12,offset:0,notes:355,bombs:0,obstacles:55,nps:1.656,length:536,characteristic:"Standard",difficulty:"Normal",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:77,warns:24,resets:0}},{njs:14,offset:0,notes:661,bombs:0,obstacles:99,nps:3.083,length:536,characteristic:"Standard",difficulty:"Hard",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:39,warns:29,resets:0}},{njs:16,offset:.25,notes:899,bombs:0,obstacles:103,nps:4.193,length:536,characteristic:"Standard",difficulty:"Expert",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:2,warns:0,resets:0}},{njs:19,offset:-.2,notes:1036,bombs:0,obstacles:46,nps:4.832,length:536,characteristic:"Standard",difficulty:"ExpertPlus",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:622,bombs:0,obstacles:0,nps:2.777,length:560,characteristic:"OneSaber",difficulty:"Expert",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224,paritySummary:{errors:7,warns:1,resets:0}},{njs:18,offset:0,notes:692,bombs:0,obstacles:0,nps:3.089,length:560,characteristic:"OneSaber",difficulty:"ExpertPlus",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224,paritySummary:{errors:3,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bb2bd82208d452badc4acaf877dc2c4abd0fab15.zip",coverURL:"https://cdn.beatsaver.com/bb2bd82208d452badc4acaf877dc2c4abd0fab15.jpg",previewURL:"https://cdn.beatsaver.com/bb2bd82208d452badc4acaf877dc2c4abd0fab15.mp3"}],createdAt:"2020-01-24T23:00:27.676Z",updatedAt:"2020-01-24T23:00:27.676Z",lastPublishedAt:"2020-01-24T23:00:27.676Z"},{id:"d410",name:"[FUTURE FUNK PACK] Disco Lady - Nanidato",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\n"Disco Lady" by Nanidato was sampled from Tomato n\' Pine\'s "Wanna Dance!" \n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:120,duration:189,songName:"Disco Lady",songSubName:"",songAuthorName:"Nanidato",levelAuthorName:"ETAN"},stats:{plays:0,downloads:4750,upvotes:1097,downvotes:12,score:.9299},uploaded:"2020-08-11T17:46:48.109Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"601f29bdee0f10a29f1ad1520bd296930c7ad3d4",key:"d410",state:"Published",createdAt:"2020-08-11T17:46:48.109Z",sageScore:6,diffs:[{njs:10,offset:1,notes:191,bombs:0,obstacles:1,nps:1.051,length:363.5,characteristic:"Standard",difficulty:"Easy",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.75,paritySummary:{errors:8,warns:6,resets:0}},{njs:10,offset:1,notes:321,bombs:0,obstacles:1,nps:1.733,length:370.5,characteristic:"Standard",difficulty:"Normal",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:2,warns:0,resets:0}},{njs:12,offset:.3,notes:494,bombs:0,obstacles:1,nps:2.667,length:370.5,characteristic:"Standard",difficulty:"Hard",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:661,bombs:0,obstacles:1,nps:3.568,length:370.5,characteristic:"Standard",difficulty:"Expert",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.5,notes:924,bombs:0,obstacles:1,nps:4.988,length:370.5,characteristic:"Standard",difficulty:"ExpertPlus",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/601f29bdee0f10a29f1ad1520bd296930c7ad3d4.zip",coverURL:"https://cdn.beatsaver.com/601f29bdee0f10a29f1ad1520bd296930c7ad3d4.jpg",previewURL:"https://cdn.beatsaver.com/601f29bdee0f10a29f1ad1520bd296930c7ad3d4.mp3"}],createdAt:"2020-08-11T17:46:48.109Z",updatedAt:"2020-08-11T17:46:48.109Z",lastPublishedAt:"2020-08-11T17:46:48.109Z"},{id:"130e6",name:"Geoxor - Faerie [wall map]",description:"Wall map collab with Reddek lets go!!\nThis turned out so much better than I thought it would, I hope you enjoy it as much as I do\n\nMap preview: https://youtu.be/uOdpWjTdGCU \n\nFeedback welcome at shan_man#7777 and Reddek#5864",uploader:{id:75261,name:"shan_man",uniqueSet:!0,hash:"5ec5aaa616c9680006500e0a",avatar:"https://cdn.beatsaver.com/avatar/345431512658739200.png",type:"DISCORD"},metadata:{bpm:150,duration:244,songName:"Faerie",songSubName:"",songAuthorName:"Geoxor",levelAuthorName:"Reddek & Shan_Man"},stats:{plays:0,downloads:2988,upvotes:1092,downvotes:12,score:.9298},uploaded:"2021-01-23T05:09:19.779Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"57c96c82897a73c495758fa494875dce6bdab869",key:"130e6",state:"Published",createdAt:"2021-01-23T05:09:19.779Z",sageScore:5,diffs:[{njs:20,offset:-.5,notes:1269,bombs:42,obstacles:0,nps:5.513,length:575.5,characteristic:"Standard",difficulty:"Expert",events:9327,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:230.2,paritySummary:{errors:0,warns:0,resets:15}},{njs:20,offset:-.5,notes:1650,bombs:42,obstacles:3239,nps:7.118,length:579.5,characteristic:"Standard",difficulty:"ExpertPlus",events:9327,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:231.8,paritySummary:{errors:37,warns:1,resets:15}}],downloadURL:"https://cdn.beatsaver.com/57c96c82897a73c495758fa494875dce6bdab869.zip",coverURL:"https://cdn.beatsaver.com/57c96c82897a73c495758fa494875dce6bdab869.jpg",previewURL:"https://cdn.beatsaver.com/57c96c82897a73c495758fa494875dce6bdab869.mp3"}],createdAt:"2021-01-23T05:09:19.779Z",updatedAt:"2021-01-23T05:09:19.779Z",lastPublishedAt:"2021-01-23T05:09:19.779Z"},{id:"4a36",name:"[Anniversary] Backbone (ft. Nevve) - Droeloe [Fafurion & Skyler Wallace]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:151,duration:171,songName:"Backbone",songSubName:"Droeloe",songAuthorName:"Fafurion & Skyler Wallace",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:3767,upvotes:2308,downvotes:58,score:.9296},uploaded:"2019-05-03T14:08:11Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"376abe290620e443e9451366accb30e5095edbce",key:"4a36",state:"Published",createdAt:"2019-05-03T14:08:11Z",sageScore:7,diffs:[{njs:10,offset:0,notes:190,bombs:0,obstacles:4,nps:1.248,length:383,characteristic:"Standard",difficulty:"Easy",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:152.185,paritySummary:{errors:36,warns:31,resets:0}},{njs:12,offset:0,notes:265,bombs:0,obstacles:7,nps:1.746,length:382,characteristic:"Standard",difficulty:"Normal",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.788,paritySummary:{errors:43,warns:49,resets:0}},{njs:12,offset:0,notes:417,bombs:0,obstacles:12,nps:2.747,length:382,characteristic:"Standard",difficulty:"Hard",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.788,paritySummary:{errors:65,warns:40,resets:0}},{njs:12,offset:1,notes:552,bombs:0,obstacles:1,nps:3.632,length:382.5,characteristic:"Standard",difficulty:"Expert",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.987,paritySummary:{errors:36,warns:42,resets:0}},{njs:14,offset:1,notes:592,bombs:0,obstacles:3,nps:3.895,length:382.5,characteristic:"Standard",difficulty:"ExpertPlus",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.987,paritySummary:{errors:45,warns:59,resets:0}}],downloadURL:"https://cdn.beatsaver.com/376abe290620e443e9451366accb30e5095edbce.zip",coverURL:"https://cdn.beatsaver.com/376abe290620e443e9451366accb30e5095edbce.jpg",previewURL:"https://cdn.beatsaver.com/376abe290620e443e9451366accb30e5095edbce.mp3"}],createdAt:"2019-05-03T14:08:11Z",updatedAt:"2019-05-03T14:08:11Z",lastPublishedAt:"2019-05-03T14:08:11Z"},{id:"75ba",name:"Savior - Rise Against",description:'"Savior" is punk rock song by American rock band Rise Against, featured on their fifth studio album Appeal to Reason (2008). In contrast to the social and political topics normally discussed in Rise Against songs, "Savior" is about forgiveness and broken relationships.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:169,duration:244,songName:"Savior",songSubName:"",songAuthorName:"Rise Against",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3854,upvotes:1458,downvotes:25,score:.9295},uploaded:"2019-12-11T15:27:50.619Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"20527803675e3a3d7721c0b8d05a1439a02a580d",key:"75ba",state:"Published",createdAt:"2019-12-11T15:27:50.619Z",sageScore:5,diffs:[{njs:15,offset:0,notes:925,bombs:30,obstacles:6,nps:3.912,length:664.996,characteristic:"Standard",difficulty:"Expert",events:3686,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:236.093,paritySummary:{errors:20,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/20527803675e3a3d7721c0b8d05a1439a02a580d.zip",coverURL:"https://cdn.beatsaver.com/20527803675e3a3d7721c0b8d05a1439a02a580d.jpg",previewURL:"https://cdn.beatsaver.com/20527803675e3a3d7721c0b8d05a1439a02a580d.mp3"}],createdAt:"2019-12-11T15:27:50.619Z",updatedAt:"2019-12-11T15:27:50.619Z",lastPublishedAt:"2019-12-11T15:27:50.619Z"},{id:"affa",name:"Zomboy - Endgame [NE/CHROMA]",description:"Can you survive?\r\n\r\nPreview: https://youtu.be/t4bk8ym3fIQ",uploader:{id:26361,name:"spookyghost",uniqueSet:!0,hash:"5cff0b7798cc5a672c8561a5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8561a5?d=retro",type:"SIMPLE"},metadata:{bpm:200,duration:310,songName:"End Game",songSubName:"Rott n' Roll",songAuthorName:"Zomboy",levelAuthorName:"Spooky Ghost & Exce"},stats:{plays:0,downloads:2617,upvotes:2099,downvotes:50,score:.9294},uploaded:"2020-06-08T17:04:09.275Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c28ffc53acd2c89329b5a7ff3d57a2b32bca416e",key:"affa",state:"Published",createdAt:"2020-06-08T17:04:09.275Z",sageScore:4,diffs:[{njs:22,offset:0,notes:1493,bombs:5376,obstacles:5e4,nps:5.068,length:982,characteristic:"Standard",difficulty:"ExpertPlus",events:12193,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:294.6,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c28ffc53acd2c89329b5a7ff3d57a2b32bca416e.zip",coverURL:"https://cdn.beatsaver.com/c28ffc53acd2c89329b5a7ff3d57a2b32bca416e.jpg",previewURL:"https://cdn.beatsaver.com/c28ffc53acd2c89329b5a7ff3d57a2b32bca416e.mp3"}],createdAt:"2020-06-08T17:04:09.275Z",updatedAt:"2020-06-08T17:04:09.275Z",lastPublishedAt:"2020-06-08T17:04:09.275Z"},{id:"475",name:"Ride - Twenty One Pilots",description:"Expert and Normal Charts\nLighting Events\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:150,duration:213,songName:"Ride",songSubName:"Twenty One Pilots",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:5957,upvotes:2990,downvotes:88,score:.9294},uploaded:"2018-06-09T11:24:50Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"05c4b1fc955756d2672ce322417ad2fadb416af6",key:"475",state:"Published",createdAt:"2018-06-09T11:24:50Z",sageScore:4,diffs:[{njs:10,offset:0,notes:377,bombs:0,obstacles:32,nps:1.844,length:511,characteristic:"Standard",difficulty:"Normal",events:859,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.4,paritySummary:{errors:109,warns:26,resets:0}},{njs:10,offset:0,notes:674,bombs:0,obstacles:32,nps:3.297,length:511,characteristic:"Standard",difficulty:"Expert",events:859,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.4,paritySummary:{errors:96,warns:102,resets:0}}],downloadURL:"https://cdn.beatsaver.com/05c4b1fc955756d2672ce322417ad2fadb416af6.zip",coverURL:"https://cdn.beatsaver.com/05c4b1fc955756d2672ce322417ad2fadb416af6.jpg",previewURL:"https://cdn.beatsaver.com/05c4b1fc955756d2672ce322417ad2fadb416af6.mp3"}],createdAt:"2018-06-09T11:24:50Z",updatedAt:"2018-06-09T11:24:50Z",lastPublishedAt:"2018-06-09T11:24:50Z"},{id:"5725",name:"Livin' La Vida Loca - Ricky Martin",description:"\"Livin' la Vida Loca\" (Livin' A Crazy Life) is the number-one hit song performed by Ricky Martin. It was released on March 23, 1999, from Martin's self-titled debut English-language album.\n\nI actually heard this song first from Eddie Murphy and Antonio Banderas at the end of Shrek 2 lol. Gotta say, its pretty catchy.\n\nEDIT: Fixed one mismapped note on chorus section and added two more notes at the very start of the song",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:178,duration:242,songName:"Livin' La Vida Loca",songSubName:"",songAuthorName:"Ricky Martin",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:7458,upvotes:2396,downvotes:63,score:.9292},uploaded:"2019-07-15T07:01:36.333Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"13d4f57a62f8725b39e607914637625e1edaf58d",key:"5725",state:"Published",createdAt:"2019-07-15T07:01:36.333Z",sageScore:6,diffs:[{njs:14,offset:0,notes:932,bombs:0,obstacles:20,nps:3.908,length:707.5,characteristic:"Standard",difficulty:"Expert",events:2683,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:238.483,paritySummary:{errors:87,warns:58,resets:0}}],downloadURL:"https://cdn.beatsaver.com/13d4f57a62f8725b39e607914637625e1edaf58d.zip",coverURL:"https://cdn.beatsaver.com/13d4f57a62f8725b39e607914637625e1edaf58d.jpg",previewURL:"https://cdn.beatsaver.com/13d4f57a62f8725b39e607914637625e1edaf58d.mp3"}],createdAt:"2019-07-15T07:01:36.333Z",updatedAt:"2019-07-15T07:01:36.333Z",lastPublishedAt:"2019-07-15T07:01:36.333Z"},{id:"5efe",name:"Welcome to the Club - Nightcore (Manian)",description:"Been a while since I released, but I'm back with a brand new map! Welcome to the club everyone! We've got it goin on, til the break of dawn, so put the record on!\n\nBPM: 182.39\nNPS: N - 2.46 ; H - 2.91 ; Ex - 4.03 ; Ex+ - 4.51\nNotes: N - 396 ; H - 468 ; Ex - 648 ; Ex+ - 725\nWalls: N - 131 ; H - 48 ; Ex - 27 ; Ex+ - 31\nBombs: N - 24 ; H - 0 ; Ex - 0 ; Ex+ - 0\n\nThanks to Redmagi, Kival Evan, helencarnate, and redhq for testing, and to Skeelie and Ryger (RaynArch) for helping with timing!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:182.39,duration:161,songName:"Welcome to the Club",songSubName:"",songAuthorName:"Nightcore",levelAuthorName:"fruhead"},stats:{plays:0,downloads:3613,upvotes:2226,downvotes:56,score:.9291},uploaded:"2019-08-25T06:45:04.972Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f42e4fb7ea9a439bdf295ee1cf4459e52d15b520",key:"5efe",state:"Published",createdAt:"2019-08-25T06:45:04.972Z",sageScore:4,diffs:[{njs:12,offset:0,notes:396,bombs:24,obstacles:131,nps:2.556,length:471,characteristic:"Standard",difficulty:"Normal",events:5134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.943,paritySummary:{errors:42,warns:4,resets:4}},{njs:14,offset:.5,notes:468,bombs:0,obstacles:48,nps:3.018,length:471.375,characteristic:"Standard",difficulty:"Hard",events:5134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.066,paritySummary:{errors:14,warns:1,resets:0}},{njs:17,offset:.5,notes:648,bombs:0,obstacles:27,nps:4.179,length:471.375,characteristic:"Standard",difficulty:"Expert",events:5134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.066,paritySummary:{errors:18,warns:2,resets:0}},{njs:18,offset:.5,notes:725,bombs:0,obstacles:31,nps:4.675,length:471.375,characteristic:"Standard",difficulty:"ExpertPlus",events:5134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.066,paritySummary:{errors:27,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f42e4fb7ea9a439bdf295ee1cf4459e52d15b520.zip",coverURL:"https://cdn.beatsaver.com/f42e4fb7ea9a439bdf295ee1cf4459e52d15b520.jpg",previewURL:"https://cdn.beatsaver.com/f42e4fb7ea9a439bdf295ee1cf4459e52d15b520.mp3"}],createdAt:"2019-08-25T06:45:04.972Z",updatedAt:"2019-08-25T06:45:04.972Z",lastPublishedAt:"2019-08-25T06:45:04.972Z"},{id:"58b7",name:"The Twist - Chubby Checker",description:"Do the Twist!\n\nThere's a twist to this map ;) it has zero down slash notes (I always wanted to try making a map with no down slashes and I think I found the perfect song to try that)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:155,duration:158,songName:"The Twist",songSubName:"",songAuthorName:"Chubby Checker",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2345,upvotes:998,downvotes:10,score:.929},uploaded:"2019-07-24T18:00:19.429Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1c2af7c45bb55bfb19401ac619bded30c4cf01c6",key:"58b7",state:"Published",createdAt:"2019-07-24T18:00:19.429Z",sageScore:6,diffs:[{njs:14,offset:0,notes:591,bombs:0,obstacles:4,nps:3.834,length:398.188,characteristic:"Standard",difficulty:"Expert",events:2280,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.137,paritySummary:{errors:15,warns:93,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1c2af7c45bb55bfb19401ac619bded30c4cf01c6.zip",coverURL:"https://cdn.beatsaver.com/1c2af7c45bb55bfb19401ac619bded30c4cf01c6.jpg",previewURL:"https://cdn.beatsaver.com/1c2af7c45bb55bfb19401ac619bded30c4cf01c6.mp3"}],createdAt:"2019-07-24T18:00:19.429Z",updatedAt:"2019-07-24T18:00:19.429Z",lastPublishedAt:"2019-07-24T18:00:19.429Z"},{id:"11e9c",name:"Tsuki No Waltz (Standard and FeetSaber)",description:"*****Attention!!*****\nThis map will take SO LONG to finish loading, since it has 2 standard and 3 FeetSaber difficulties which are all wallmaps... Please be patient.\n読み込みがものすごく長いです。2刀譜面2つ、足譜面3つ、すべて壁譜面なので…。\n*********************\n\nRequirements :\nNoodle Extensions\nChroma\nFeet Saber (NalulunaModifier)\n\nBig thanks to Rinka Michibiki for making standard difficulties.\n2刀譜面を提供していただいた導祈りんか様に、心からの感謝を。\n\nFeetmap and wall: henomohesan @henomohesan\nStandard difficulty: Rinka Michibiki @rinka_michibiki\n\nDemo :\n(Standard) https://youtu.be/4Q_PJ7tg3LA\n(Feet Saber) https://youtu.be/PngIJAleFTQ\n\nYou can download NalulunaModifier from official page :\nhttps://youtu.be/QtLNweiiQPU\n\nSpecial Thanks:\nMapping Club JP Discord by kamy @kamy_0811\nChromapper JP manual by 姚明 @gensouyou_39\nBeatwall JP manual by Kamy @kamy_0811 and FaZPi @FaZ_Pi",uploader:{id:4285472,name:"henomohesan",uniqueSet:!0,hash:"5ece0766d87e5800060a4635",avatar:"https://cdn.beatsaver.com/avatar/483262661245796352.png",type:"DISCORD"},metadata:{bpm:173,duration:183,songName:"Tsuki No Waltz (Standard and FeetSaber)",songSubName:"",songAuthorName:"Mio Isayama",levelAuthorName:"henomohesan"},stats:{plays:0,downloads:2241,upvotes:723,downvotes:2,score:.9288},uploaded:"2020-12-22T07:56:06.804Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c967a5862a8602ebacebe44b6ac5c2422c3e90bb",key:"11e9c",state:"Published",createdAt:"2020-12-22T07:56:06.804Z",sageScore:4,diffs:[{njs:10,offset:.7,notes:218,bombs:0,obstacles:13839,nps:1.318,length:477,characteristic:"Standard",difficulty:"Normal",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:6,warns:0,resets:0}},{njs:11,offset:-.5,notes:398,bombs:0,obstacles:13839,nps:2.406,length:477,characteristic:"Standard",difficulty:"Hard",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:3,warns:7,resets:0}},{njs:8,offset:0,notes:206,bombs:0,obstacles:13859,nps:1.245,length:477,characteristic:"NoArrows",difficulty:"Easy",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:333,bombs:0,obstacles:13839,nps:2.013,length:477,characteristic:"NoArrows",difficulty:"Normal",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:408,bombs:0,obstacles:13839,nps:2.466,length:477,characteristic:"NoArrows",difficulty:"Expert",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c967a5862a8602ebacebe44b6ac5c2422c3e90bb.zip",coverURL:"https://cdn.beatsaver.com/c967a5862a8602ebacebe44b6ac5c2422c3e90bb.jpg",previewURL:"https://cdn.beatsaver.com/c967a5862a8602ebacebe44b6ac5c2422c3e90bb.mp3"}],createdAt:"2020-12-22T07:56:06.804Z",updatedAt:"2020-12-22T07:56:06.804Z",lastPublishedAt:"2020-12-22T07:56:06.804Z"},{id:"44f6",name:"Blumenkranz - Cyua & Hiroyuki Sawano [Kill la Kill OST]",description:"Smol fix in Exp.\r\n\r\nExp+ Gameplay: https://youtu.be/lAi_xIWoQsc\r\n\r\nVocals by Cyua.\r\nMusic by Hiroyuki Sawano.\r\nLyrics by Rie Sawano.\r\nCheck out Kill la Kill, it's awesome! And has more awesome music!\r\nhttps://myanimelist.net/anime/18679/Kill_la_Kill\r\n\r\nCover from the Kill la Kill OST.",uploader:{id:4286005,name:"mandynasty",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ffaa",avatar:"https://cdn.beatsaver.com/avatar/307589087030673408.png",type:"DISCORD"},metadata:{bpm:160,duration:259,songName:"Blumenkranz",songSubName:"Cyua & Hiroyuki Sawano",songAuthorName:"ManDynasty",levelAuthorName:"ManDynasty"},stats:{plays:0,downloads:2635,upvotes:1171,downvotes:16,score:.9288},uploaded:"2019-04-11T19:30:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"01f7b442e2f206d1611fe45e297c216fe07da78e",key:"44f6",state:"Published",createdAt:"2019-04-11T19:30:09Z",sageScore:4,diffs:[{njs:10,offset:0,notes:462,bombs:52,obstacles:94,nps:1.839,length:670,characteristic:"Standard",difficulty:"Normal",events:4169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.25,paritySummary:{errors:23,warns:15,resets:1}},{njs:14,offset:1,notes:633,bombs:101,obstacles:89,nps:2.519,length:670,characteristic:"Standard",difficulty:"Hard",events:4169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.25,paritySummary:{errors:44,warns:53,resets:1}},{njs:15,offset:1,notes:947,bombs:66,obstacles:77,nps:3.764,length:671,characteristic:"Standard",difficulty:"Expert",events:4169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.625,paritySummary:{errors:85,warns:116,resets:2}},{njs:16,offset:0,notes:1054,bombs:66,obstacles:83,nps:4.189,length:671,characteristic:"Standard",difficulty:"ExpertPlus",events:4169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.625,paritySummary:{errors:80,warns:108,resets:2}}],downloadURL:"https://cdn.beatsaver.com/01f7b442e2f206d1611fe45e297c216fe07da78e.zip",coverURL:"https://cdn.beatsaver.com/01f7b442e2f206d1611fe45e297c216fe07da78e.jpg",previewURL:"https://cdn.beatsaver.com/01f7b442e2f206d1611fe45e297c216fe07da78e.mp3"}],createdAt:"2019-04-11T19:30:09Z",updatedAt:"2019-04-11T19:30:09Z",lastPublishedAt:"2019-04-11T19:30:09Z"},{id:"4377",name:"The Greatest - Sia",description:"YouTube Preview: https://youtu.be/huUMotlFpig",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:192,duration:191,songName:"The Greatest (ft. Kendrick Lamar)",songSubName:"Sia",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:6436,upvotes:2325,downvotes:61,score:.9288},uploaded:"2019-04-04T21:20:03Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"58cd8ddf99600d967bca61285e9e0c429138009d",key:"4377",state:"Published",createdAt:"2019-04-04T21:20:03Z",sageScore:6,diffs:[{njs:12,offset:0,notes:822,bombs:16,obstacles:20,nps:4.355,length:604,characteristic:"Standard",difficulty:"ExpertPlus",events:3165,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.75,paritySummary:{errors:91,warns:108,resets:0}}],downloadURL:"https://cdn.beatsaver.com/58cd8ddf99600d967bca61285e9e0c429138009d.zip",coverURL:"https://cdn.beatsaver.com/58cd8ddf99600d967bca61285e9e0c429138009d.jpg",previewURL:"https://cdn.beatsaver.com/58cd8ddf99600d967bca61285e9e0c429138009d.mp3"}],createdAt:"2019-04-04T21:20:03Z",updatedAt:"2019-04-04T21:20:03Z",lastPublishedAt:"2019-04-04T21:20:03Z"},{id:"110ac",name:"Madeon - The Prince",description:'*CHROMA RECOMMENDED*\n\nThis map was originally going to have autolights. Imagine.\n\nDg: "When I began lighting this map, I did it with the intention of copying the colors and vibe of the official visualizer by Madeon, with my own twists to bring it up to Beat Saber level. The amount of time and effort that went into literally lighting thermal cam... unreal."\n\nYou can check out the visualizer here:https://www.youtube.com/watch?v=AOhFzDN3eMI\n\nBearly#5259\nDGRJ4Life#6510',uploader:{id:2381,name:"bearly",uniqueSet:!0,hash:"5ea9efbf16c968000636dba4",avatar:"https://www.gravatar.com/avatar/5ea9efbf16c968000636dba4?d=retro",type:"SIMPLE"},metadata:{bpm:95,duration:223,songName:"The Prince",songSubName:"",songAuthorName:"Madeon",levelAuthorName:"Bearly & dgrj4life"},stats:{plays:0,downloads:8424,upvotes:1707,downvotes:36,score:.9287},uploaded:"2020-11-16T23:34:00.851Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cf3243d6fc63c77a3b864414314ca4fb36f69e77",key:"110ac",state:"Published",createdAt:"2020-11-16T23:34:00.851Z",sageScore:5,diffs:[{njs:17,offset:.15,notes:917,bombs:8,obstacles:30,nps:4.27,length:340,characteristic:"Standard",difficulty:"Expert",events:33893,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:214.737,paritySummary:{errors:0,warns:0,resets:3}},{njs:18.5,offset:-.2,notes:990,bombs:3,obstacles:21,nps:4.61,length:340,characteristic:"Standard",difficulty:"ExpertPlus",events:33893,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:214.737,paritySummary:{errors:0,warns:0,resets:1}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:33893,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cf3243d6fc63c77a3b864414314ca4fb36f69e77.zip",coverURL:"https://cdn.beatsaver.com/cf3243d6fc63c77a3b864414314ca4fb36f69e77.jpg",previewURL:"https://cdn.beatsaver.com/cf3243d6fc63c77a3b864414314ca4fb36f69e77.mp3"}],createdAt:"2020-11-16T23:34:00.851Z",updatedAt:"2020-11-16T23:34:00.851Z",lastPublishedAt:"2020-11-16T23:34:00.851Z"},{id:"b18a",name:"[Bloq Busters Vol. 4] Eric Johnson - Cliffs of Dover",description:"Thanks to SkylerWallace for warping the audio to make this actually mappable! I loved this song from Guitar Hero, and wanted it to have a spot here in Beat Saber. Enjoy!",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:95,duration:254,songName:"Cliffs of Dover",songSubName:"",songAuthorName:"Eric Johnson",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:5733,upvotes:1467,downvotes:27,score:.9286},uploaded:"2020-06-12T22:01:10.949Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9f9f5c00b449549b1c276209148551c38abf495a",key:"b18a",state:"Published",createdAt:"2020-06-12T22:01:10.949Z",sageScore:6,diffs:[{njs:14,offset:-.25,notes:835,bombs:0,obstacles:2,nps:3.389,length:390.063,characteristic:"Standard",difficulty:"Hard",events:8195,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.355,paritySummary:{errors:9,warns:7,resets:0}},{njs:16,offset:.25,notes:1327,bombs:89,obstacles:20,nps:5.387,length:390.063,characteristic:"Standard",difficulty:"Expert",events:8195,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.355,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:1417,bombs:178,obstacles:10,nps:5.752,length:390.063,characteristic:"Standard",difficulty:"ExpertPlus",events:8195,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.355,paritySummary:{errors:3,warns:1,resets:7}}],downloadURL:"https://cdn.beatsaver.com/9f9f5c00b449549b1c276209148551c38abf495a.zip",coverURL:"https://cdn.beatsaver.com/9f9f5c00b449549b1c276209148551c38abf495a.jpg",previewURL:"https://cdn.beatsaver.com/9f9f5c00b449549b1c276209148551c38abf495a.mp3"}],createdAt:"2020-06-12T22:01:10.949Z",updatedAt:"2020-06-12T22:01:10.949Z",lastPublishedAt:"2020-06-12T22:01:10.949Z"},{id:"21b8",name:"Senpai Notice Me",description:"I need therapy.\r\nFinally getting it ranked! Let's go!",uploader:{id:28684,name:"jackodej",uniqueSet:!0,hash:"5cff0b7498cc5a672c850120",avatar:"https://www.gravatar.com/avatar/5cff0b7498cc5a672c850120?d=retro",type:"SIMPLE"},metadata:{bpm:155,duration:278,songName:"Senpai Notice Me",songSubName:"Camellia ft. Nanahira",songAuthorName:"JackoDEJ",levelAuthorName:"JackoDEJ"},stats:{plays:0,downloads:5405,upvotes:5203,downvotes:197,score:.9286},uploaded:"2018-11-23T14:11:31Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"e3ef6cab44ff2222c09b399e8e5a62a095233621",key:"21b8",state:"Published",createdAt:"2018-11-23T14:11:31Z",sageScore:6,diffs:[{njs:16,offset:0,notes:1730,bombs:0,obstacles:5,nps:6.357,length:703,characteristic:"Standard",difficulty:"ExpertPlus",events:1758,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:272.129,paritySummary:{errors:58,warns:61,resets:0},stars:5.91}],downloadURL:"https://cdn.beatsaver.com/e3ef6cab44ff2222c09b399e8e5a62a095233621.zip",coverURL:"https://cdn.beatsaver.com/e3ef6cab44ff2222c09b399e8e5a62a095233621.jpg",previewURL:"https://cdn.beatsaver.com/e3ef6cab44ff2222c09b399e8e5a62a095233621.mp3"}],createdAt:"2018-11-23T14:11:31Z",updatedAt:"2018-11-23T14:11:31Z",lastPublishedAt:"2018-11-23T14:11:31Z"},{id:"42",name:"Icarus - Madeon - HARD",description:"Icarus by Madeon,\r\n\r\nMostly an experiment in the 3D editor events... editor...\r\n\r\nFully evented, 3:33 length\r\n\r\nHard difficulty only.\r\n\r\nYoutube playthrough: https://www.youtube.com/watch?v=VvEkluZHkY4",uploader:{id:53534,name:"gompasta",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e8de",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8de?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:213,songName:"Icarus",songSubName:"",songAuthorName:"Madeon",levelAuthorName:"gompasta"},stats:{plays:0,downloads:6994,upvotes:3007,downvotes:92,score:.9285},uploaded:"2018-05-12T00:35:40Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"be1a39b41f2089cad9aa8d775f55e8707447b5ca",key:"42",state:"Published",createdAt:"2018-05-12T00:35:40Z",sageScore:5,diffs:[{njs:10,offset:0,notes:420,bombs:16,obstacles:6,nps:2.035,length:433.5,characteristic:"Standard",difficulty:"Hard",events:859,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.429,paritySummary:{errors:59,warns:63,resets:4},stars:1.56}],downloadURL:"https://cdn.beatsaver.com/be1a39b41f2089cad9aa8d775f55e8707447b5ca.zip",coverURL:"https://cdn.beatsaver.com/be1a39b41f2089cad9aa8d775f55e8707447b5ca.jpg",previewURL:"https://cdn.beatsaver.com/be1a39b41f2089cad9aa8d775f55e8707447b5ca.mp3"}],createdAt:"2018-05-12T00:35:40Z",updatedAt:"2018-05-12T00:35:40Z",lastPublishedAt:"2018-05-12T00:35:40Z"},{id:"8fc3",name:"Katy Perry - Dark Horse (feat. Juicy J) [Z-ANESaber]",description:"Yo\r\nI´m open for song requests so if you have any ideas let me know in the comments or on Discord:\r\nNiqu#9221\r\n\r\nThis song was requested by: SaberTribe\r\nHave fun!\r\n\r\nPlaythrough: https://www.youtube.com/watch?v=Qs8xfj_EQYs&feature=youtu.be\r\n\r\nSong: https://www.youtube.com/watch?v=0KSOMA3QBU0\r\n\r\nBye",uploader:{id:4284220,name:"z-anesaber",uniqueSet:!0,hash:"5dfbafac9921260006527fa4",avatar:"https://cdn.beatsaver.com/avatar/324954940885958658.png",type:"DISCORD"},metadata:{bpm:132,duration:212,songName:"Dark Horse [Z-ANESaber]",songSubName:"(feat. Juicy J)",songAuthorName:"Katy Perry",levelAuthorName:"Z-ANESaber"},stats:{plays:0,downloads:4654,upvotes:1239,downvotes:19,score:.9283},uploaded:"2020-03-13T21:40:12.962Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e53f2a91acfca398d1770e3972861ce15f56b123",key:"8fc3",state:"Published",createdAt:"2020-03-13T21:40:12.962Z",sageScore:3,diffs:[{njs:13.3,offset:0,notes:802,bombs:12,obstacles:9,nps:3.811,length:463,characteristic:"Standard",difficulty:"Expert",events:1851,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.455,paritySummary:{errors:6,warns:4,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e53f2a91acfca398d1770e3972861ce15f56b123.zip",coverURL:"https://cdn.beatsaver.com/e53f2a91acfca398d1770e3972861ce15f56b123.jpg",previewURL:"https://cdn.beatsaver.com/e53f2a91acfca398d1770e3972861ce15f56b123.mp3"}],createdAt:"2020-03-13T21:40:12.962Z",updatedAt:"2020-03-13T21:40:12.962Z",lastPublishedAt:"2020-03-13T21:40:12.962Z"},{id:"89be",name:"More One Night [Girl's Last Tour Ending]",description:"Sung by \nChito (CV: Inori Minase)\nYuuri (CV: Yurika Kubo)\n\nCute girls doing post-apocalyptic things\n\nI have fancy lighting on this one so make sure you got chroma or chromalite to see it! Unfortunately I couldn't get ring prop to work, I think i just mapped it wrong LOL. I learn soon enough\n\nBPM 123 | \nExpert+\nExpert\nHard\nLightshow\n\nty Qwasyx for playtesting\n\npreview: https://www.youtube.com/watch?v=bsqZWXBMQwQ\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:123,duration:214,songName:"More One Night",songSubName:"",songAuthorName:"Inori Minase, Yurika Kubo",levelAuthorName:"ETAN"},stats:{plays:0,downloads:2748,upvotes:1179,downvotes:17,score:.9283},uploaded:"2020-02-22T21:17:09.228Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bf43cba8026db57a2dda154ae4fa24621cc3a232",key:"89be",state:"Published",createdAt:"2020-02-22T21:17:09.228Z",sageScore:7,diffs:[{njs:13,offset:.4,notes:583,bombs:0,obstacles:21,nps:2.786,length:429,characteristic:"Standard",difficulty:"Hard",events:16009,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.268,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:833,bombs:0,obstacles:21,nps:3.981,length:429,characteristic:"Standard",difficulty:"Expert",events:16009,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.268,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:.5,notes:1e3,bombs:0,obstacles:21,nps:4.779,length:429,characteristic:"Standard",difficulty:"ExpertPlus",events:16009,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.268,paritySummary:{errors:12,warns:9,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:16009,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bf43cba8026db57a2dda154ae4fa24621cc3a232.zip",coverURL:"https://cdn.beatsaver.com/bf43cba8026db57a2dda154ae4fa24621cc3a232.jpg",previewURL:"https://cdn.beatsaver.com/bf43cba8026db57a2dda154ae4fa24621cc3a232.mp3"}],createdAt:"2020-02-22T21:17:09.228Z",updatedAt:"2020-02-22T21:17:09.228Z",lastPublishedAt:"2020-02-22T21:17:09.228Z"},{id:"72de",name:"GRiZ - Can't Hold Me Down",description:"Easy, normal, hard, expert (maulable), expert+\r\n\r\nThis is a remap, first had major issues. Maul players seem to like the original, so a modified version is included in the expert slot. Also now has a full spread and hand lights are replacing the trash from light map.\r\n\r\nSpecial thanks to Adeza for the original suggestion. \r\n\r\nVideo: https://www.youtube.com/watch?v=c1_ziuz5hrA",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:180,duration:208,songName:"Can't Hold Me Down",songSubName:"",songAuthorName:"GRiZ",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:4104,upvotes:1886,downvotes:44,score:.9283},uploaded:"2019-11-30T21:07:56.418Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a0ebf4980fcb1f29871582dbeca8e3a8d5511f1c",key:"72de",state:"Published",createdAt:"2019-11-30T21:07:56.418Z",sageScore:7,diffs:[{njs:12,offset:.25,notes:303,bombs:0,obstacles:0,nps:1.524,length:596.5,characteristic:"Standard",difficulty:"Easy",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:94,warns:26,resets:0}},{njs:12,offset:.25,notes:380,bombs:0,obstacles:0,nps:1.911,length:596.5,characteristic:"Standard",difficulty:"Normal",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:49,warns:17,resets:0}},{njs:14,offset:1,notes:420,bombs:0,obstacles:20,nps:2.112,length:596.5,characteristic:"Standard",difficulty:"Hard",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:12,warns:7,resets:0}},{njs:16,offset:.5,notes:749,bombs:0,obstacles:190,nps:3.767,length:596.5,characteristic:"Standard",difficulty:"Expert",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:7,warns:2,resets:0}},{njs:18,offset:.25,notes:1029,bombs:139,obstacles:18,nps:5.175,length:596.5,characteristic:"Standard",difficulty:"ExpertPlus",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:6,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a0ebf4980fcb1f29871582dbeca8e3a8d5511f1c.zip",coverURL:"https://cdn.beatsaver.com/a0ebf4980fcb1f29871582dbeca8e3a8d5511f1c.jpg",previewURL:"https://cdn.beatsaver.com/a0ebf4980fcb1f29871582dbeca8e3a8d5511f1c.mp3"}],createdAt:"2019-11-30T21:07:56.418Z",updatedAt:"2019-11-30T21:07:56.418Z",lastPublishedAt:"2019-11-30T21:07:56.418Z"},{id:"11de5",name:"Kaibutsu (TV Size) [Beastars Season 2 Opening] - YOASOBI",description:"Kaibutsu / 怪物 is the seventh single by Yoasobi. It is used as the opening theme song to the second season of Beastars.\n\nThis map was a special request by ScrewBedtime#5490\n\nKeep up to date on my maps: https://twitter.com/Joetastic_\nMy mapper's profile: https://bsaber.com/members/joetastic/\nContact me on discord: @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:170,duration:88,songName:"Kaibutsu (TV Size)",songSubName:"",songAuthorName:"YOASOBI",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:16414,upvotes:1604,downvotes:33,score:.9281},uploaded:"2020-12-21T17:50:41.969Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"08d9a92c273f6d06baa30c5b70f182c902349578",key:"11de5",state:"Published",createdAt:"2020-12-21T17:50:41.969Z",sageScore:3,diffs:[{njs:15,offset:.5,notes:327,bombs:6,obstacles:28,nps:3.829,length:242,characteristic:"Standard",difficulty:"Hard",events:2248,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.412,paritySummary:{errors:7,warns:0,resets:0}},{njs:17,offset:.2,notes:426,bombs:6,obstacles:44,nps:4.988,length:242,characteristic:"Standard",difficulty:"Expert",events:2248,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.412,paritySummary:{errors:1,warns:0,resets:0}},{njs:19,offset:0,notes:475,bombs:6,obstacles:43,nps:5.561,length:242,characteristic:"Standard",difficulty:"ExpertPlus",events:2248,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.412,paritySummary:{errors:1,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/08d9a92c273f6d06baa30c5b70f182c902349578.zip",coverURL:"https://cdn.beatsaver.com/08d9a92c273f6d06baa30c5b70f182c902349578.jpg",previewURL:"https://cdn.beatsaver.com/08d9a92c273f6d06baa30c5b70f182c902349578.mp3"}],createdAt:"2020-12-21T17:50:41.969Z",updatedAt:"2020-12-21T17:50:41.969Z",lastPublishedAt:"2020-12-21T17:50:41.969Z"},{id:"ae3c",name:"Fox Stevenson - Bruises",description:"I GOT.\r\nBRUISES.\r\n\r\nMade for my fiancee, and cause this song rocks enough to deserve a 360 and 90 degree map.\r\n\r\n2nd Reupload to fix a big oops in the 360 and 90 degree map ;_;",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:174,duration:224,songName:"Bruises",songSubName:"",songAuthorName:"Fox Stevenson",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:3027,upvotes:1258,downvotes:20,score:.9281},uploaded:"2020-06-04T12:46:11.099Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"71eff19ed6d32fd0a446e1a32303c77aa7f646f2",key:"ae3c",state:"Published",createdAt:"2020-06-04T12:46:11.099Z",sageScore:7,diffs:[{njs:10,offset:0,notes:335,bombs:0,obstacles:65,nps:1.52,length:639,characteristic:"Standard",difficulty:"Easy",events:13393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.345,paritySummary:{errors:86,warns:21,resets:0}},{njs:10,offset:0,notes:446,bombs:12,obstacles:64,nps:2.024,length:639,characteristic:"Standard",difficulty:"Normal",events:13393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.345,paritySummary:{errors:87,warns:1,resets:1}},{njs:12,offset:0,notes:692,bombs:12,obstacles:66,nps:3.141,length:639,characteristic:"Standard",difficulty:"Hard",events:13393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.345,paritySummary:{errors:8,warns:4,resets:3}},{njs:15,offset:.5,notes:1023,bombs:18,obstacles:52,nps:4.643,length:639,characteristic:"Standard",difficulty:"Expert",events:13393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.345,paritySummary:{errors:4,warns:2,resets:1}},{njs:19,offset:0,notes:1476,bombs:76,obstacles:0,nps:6.693,length:639.562,characteristic:"Standard",difficulty:"ExpertPlus",events:13394,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.539,paritySummary:{errors:6,warns:0,resets:15}},{njs:19,offset:.25,notes:1462,bombs:130,obstacles:70,nps:6.627,length:639.75,characteristic:"90Degree",difficulty:"ExpertPlus",events:13958,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.603,paritySummary:{errors:4,warns:1,resets:15}},{njs:19,offset:.25,notes:1462,bombs:130,obstacles:74,nps:6.627,length:639.75,characteristic:"360Degree",difficulty:"ExpertPlus",events:13974,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.603,paritySummary:{errors:4,warns:1,resets:15}}],downloadURL:"https://cdn.beatsaver.com/71eff19ed6d32fd0a446e1a32303c77aa7f646f2.zip",coverURL:"https://cdn.beatsaver.com/71eff19ed6d32fd0a446e1a32303c77aa7f646f2.jpg",previewURL:"https://cdn.beatsaver.com/71eff19ed6d32fd0a446e1a32303c77aa7f646f2.mp3"}],createdAt:"2020-06-04T12:46:11.099Z",updatedAt:"2020-06-04T12:46:11.099Z",lastPublishedAt:"2020-06-04T12:46:11.099Z"},{id:"6909",name:"Feuer Frei! - Rammstein",description:"Had fun making his one, and also made some One Saber difficulties for it since it fit pretty well. Enjoy!\n\nIncludes Standard (2 saber) Expert through Easy and One Saber Expert through Normal, and is a bit harder than normal since it's a faster song.\n\nNo preview (yet).\n\nBPM: 180.18\nDuration: 3:08\n\nStandard (2 Sabers):\nEasy, Normal, Hard and Expert difficulties:\n\nEasy:\n280 notes, 16 obstacles, 4 mines\n\nNormal:\n337 notes, 16 obstacles, 4 mines\n\nHard:\n459 notes, 15 obstacles, 4 mines\n\nExpert:\n773 notes, 16 obstacles, 2 mines\n\n\nOne Saber:\nNormal, Hard and Expert difficulties:\n\nNormal:\n216 notes, 17 obstacles, 0 mines\n\nHard:\n315 notes, 16 obstacles, 0 mines\n\nExpert:\n472 notes, 16 obstacles, 2 mines",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:190.18,duration:188,songName:"Feuer Frei!",songSubName:"",songAuthorName:"Rammstein",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:6179,upvotes:2018,downvotes:50,score:.928},uploaded:"2019-10-11T06:11:24.477Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a14d4f258c4a8012e110b599d725be7b20a5470a",key:"6909",state:"Published",createdAt:"2019-10-11T06:11:24.477Z",sageScore:5,diffs:[{njs:10,offset:0,notes:280,bombs:4,obstacles:16,nps:1.592,length:557.313,characteristic:"Standard",difficulty:"Easy",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:60,warns:13,resets:0}},{njs:12,offset:.5,notes:337,bombs:4,obstacles:16,nps:1.917,length:557.313,characteristic:"Standard",difficulty:"Normal",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:23,warns:19,resets:0}},{njs:16,offset:1,notes:459,bombs:4,obstacles:15,nps:2.611,length:557.313,characteristic:"Standard",difficulty:"Hard",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:29,warns:24,resets:0}},{njs:19,offset:1,notes:773,bombs:2,obstacles:16,nps:4.396,length:557.313,characteristic:"Standard",difficulty:"Expert",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:31,warns:48,resets:0}},{njs:12,offset:.5,notes:216,bombs:0,obstacles:17,nps:1.228,length:557.313,characteristic:"OneSaber",difficulty:"Normal",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:15,warns:34,resets:0}},{njs:16,offset:1,notes:315,bombs:0,obstacles:16,nps:1.792,length:557.313,characteristic:"OneSaber",difficulty:"Hard",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:12,warns:14,resets:0}},{njs:19,offset:1,notes:472,bombs:2,obstacles:16,nps:2.684,length:557.313,characteristic:"OneSaber",difficulty:"Expert",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:18,warns:14,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a14d4f258c4a8012e110b599d725be7b20a5470a.zip",coverURL:"https://cdn.beatsaver.com/a14d4f258c4a8012e110b599d725be7b20a5470a.jpg",previewURL:"https://cdn.beatsaver.com/a14d4f258c4a8012e110b599d725be7b20a5470a.mp3"}],createdAt:"2019-10-11T06:11:24.477Z",updatedAt:"2019-10-11T06:11:24.477Z",lastPublishedAt:"2019-10-11T06:11:24.477Z"},{id:"42ea",name:"DEUTSCHLAND - Rammstein",description:"Expert+ and expert are fairly similar where expert has some nerfed versions of expert+ some places. NJS18 on E+ and 15 on Expert",uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:323,songName:"DEUTSCHLAND",songSubName:"Rammstein",songAuthorName:"Heisenberg",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:3694,upvotes:2773,downvotes:83,score:.928},uploaded:"2019-04-02T03:59:23Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"414169f2f791443d9f6278009dd91ebe369bc9b6",key:"42ea",state:"Published",createdAt:"2019-04-02T03:59:23Z",sageScore:4,diffs:[{njs:15,offset:0,notes:915,bombs:0,obstacles:6,nps:3.091,length:592,characteristic:"Standard",difficulty:"Expert",events:2754,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296,paritySummary:{errors:39,warns:52,resets:0}},{njs:18,offset:0,notes:1063,bombs:0,obstacles:6,nps:3.591,length:592,characteristic:"Standard",difficulty:"ExpertPlus",events:2756,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296,paritySummary:{errors:42,warns:53,resets:0}}],downloadURL:"https://cdn.beatsaver.com/414169f2f791443d9f6278009dd91ebe369bc9b6.zip",coverURL:"https://cdn.beatsaver.com/414169f2f791443d9f6278009dd91ebe369bc9b6.jpg",previewURL:"https://cdn.beatsaver.com/414169f2f791443d9f6278009dd91ebe369bc9b6.mp3"}],createdAt:"2019-04-02T03:59:23Z",updatedAt:"2019-04-02T03:59:23Z",lastPublishedAt:"2019-04-02T03:59:23Z"},{id:"1ffd",name:"Senbonzakura (Short Ver.) by Kradness + Giga-P",description:"You like it fast? You like Senbonzakura? You want both? Then you've come to the right map! I knew I wanted to map Senbonzakura but I didn't quite like the original version, but as soon as I heard Kradness and Giga-P's version I knew I had found my own Senbonzakura.\r\n\r\nThis is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes by just playing Beat Saber! Go to https://bsaber.com/100k-contest/ for more info.\r\n\r\nSong has been edited; custom intro and shortened from full length.\r\n\r\nPreview:\r\nhttps://youtu.be/BLTaG3z9jOY\r\n\r\nBPM: 175\r\nDuration: 2:35\r\nEasy, Normal, Hard, Expert and Expert+ difficulties.\r\n\r\nEasy: 273, 8 obstacles, 0 mines\r\nNormal: 349 notes, 33 obstacles, 0 mines\r\nHard: 524 notes, 33 obstacles, 0 mines\r\nExpert: 755 notes, 33 obstacles, 0 mines\r\nExpert+: 880 notes, 33 obstacles, 0 mines\r\n\r\nThanks to Edzo, Redmagi, AaltoPaWi and Saut for playtesting! Special thanks to Redmagi for the stream ideas!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:175,duration:156,songName:"Senbonzakura (Short Ver.)",songSubName:"Kradness + Giga-P",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:9333,upvotes:5842,downvotes:234,score:.928},uploaded:"2018-11-12T22:10:22Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"eb28a79e2dbc80948d0ea09631e83557ea6b6735",key:"1ffd",state:"Published",createdAt:"2018-11-12T22:10:22Z",sageScore:7,diffs:[{njs:12,offset:0,notes:273,bombs:0,obstacles:33,nps:1.818,length:438,characteristic:"Standard",difficulty:"Easy",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.171,paritySummary:{errors:57,warns:23,resets:0},stars:1.24},{njs:13,offset:0,notes:349,bombs:0,obstacles:33,nps:2.319,length:439,characteristic:"Standard",difficulty:"Normal",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.514,paritySummary:{errors:61,warns:53,resets:0},stars:1.59},{njs:14,offset:0,notes:524,bombs:0,obstacles:33,nps:3.481,length:439,characteristic:"Standard",difficulty:"Hard",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.514,paritySummary:{errors:70,warns:55,resets:0},stars:2.42},{njs:15,offset:0,notes:755,bombs:0,obstacles:33,nps:5.016,length:439,characteristic:"Standard",difficulty:"Expert",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.514,paritySummary:{errors:121,warns:136,resets:0},stars:3.52},{njs:15,offset:0,notes:880,bombs:0,obstacles:33,nps:5.847,length:439,characteristic:"Standard",difficulty:"ExpertPlus",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.514,paritySummary:{errors:108,warns:161,resets:0},stars:4.33}],downloadURL:"https://cdn.beatsaver.com/eb28a79e2dbc80948d0ea09631e83557ea6b6735.zip",coverURL:"https://cdn.beatsaver.com/eb28a79e2dbc80948d0ea09631e83557ea6b6735.jpg",previewURL:"https://cdn.beatsaver.com/eb28a79e2dbc80948d0ea09631e83557ea6b6735.mp3"}],createdAt:"2018-11-12T22:10:22Z",updatedAt:"2018-11-12T22:10:22Z",lastPublishedAt:"2018-11-12T22:10:22Z"},{id:"aa73",name:"twenty one pilots - Level of Concern",description:"'Level of Concern' is a new single released by twenty one pilots during the COVID-19 pandemic. \n\nI meant to get this finished a couple of weeks ago, but hey, better late than never! I hope you enjoy. \n\nMapped by: Pyrowarfare#1032",uploader:{id:1096,name:"pyrowarfare",uniqueSet:!0,hash:"5e99c7df3f476a0006596cdf",avatar:"https://www.gravatar.com/avatar/5e99c7df3f476a0006596cdf?d=retro",type:"SIMPLE"},metadata:{bpm:122,duration:222,songName:"Level of Concern",songSubName:"",songAuthorName:"twenty one pilots",levelAuthorName:"Pyrowarfare"},stats:{plays:0,downloads:4749,upvotes:1220,downvotes:19,score:.9279},uploaded:"2020-05-26T00:39:21.533Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1b9278797fa6d85d0201d1a261101f8cb9ac7dde",key:"aa73",state:"Published",createdAt:"2020-05-26T00:39:21.533Z",sageScore:5,diffs:[{njs:10,offset:0,notes:233,bombs:0,obstacles:14,nps:1.062,length:446,characteristic:"Standard",difficulty:"Easy",events:2220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.344,paritySummary:{errors:89,warns:9,resets:0}},{njs:10,offset:0,notes:461,bombs:0,obstacles:14,nps:2.102,length:446,characteristic:"Standard",difficulty:"Normal",events:2220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.344,paritySummary:{errors:18,warns:19,resets:0}},{njs:12,offset:0,notes:663,bombs:4,obstacles:32,nps:3.023,length:446,characteristic:"Standard",difficulty:"Hard",events:2220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.344,paritySummary:{errors:2,warns:0,resets:1}},{njs:14,offset:0,notes:692,bombs:4,obstacles:44,nps:3.155,length:446,characteristic:"Standard",difficulty:"Expert",events:2220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.344,paritySummary:{errors:2,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1b9278797fa6d85d0201d1a261101f8cb9ac7dde.zip",coverURL:"https://cdn.beatsaver.com/1b9278797fa6d85d0201d1a261101f8cb9ac7dde.jpg",previewURL:"https://cdn.beatsaver.com/1b9278797fa6d85d0201d1a261101f8cb9ac7dde.mp3"}],createdAt:"2020-05-26T00:39:21.533Z",updatedAt:"2020-05-26T00:39:21.533Z",lastPublishedAt:"2020-05-26T00:39:21.533Z"},{id:"96fc",name:"JINGO JUNGLE [Youjo Senki Opening] - MYTH & ROID",description:"JINGO JUNGLE is the fifth single release of MYTH & ROID for their 1st Album『eYe's』and the opening song for the Youjo Senki anime. It is performed by the Japanese singer Mayu and was released on February 8th, 2017.\n\nMap was converted from my original AmaLee version as requested.\n\nEDIT: Expert Difficulty Fixed and added preview start time",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:130,duration:226,songName:"JINGO JUNGLE",songSubName:"",songAuthorName:"MYTH & ROID",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:9872,upvotes:1077,downvotes:14,score:.9279},uploaded:"2020-04-03T15:39:48.414Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f4555835fccad370eda615cbeff120afe9c4ab13",key:"96fc",state:"Published",createdAt:"2020-04-03T15:39:48.414Z",sageScore:4,diffs:[{njs:13,offset:0,notes:581,bombs:104,obstacles:28,nps:2.647,length:475.5,characteristic:"Standard",difficulty:"Hard",events:5921,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:35,warns:15,resets:10}},{njs:15,offset:0,notes:950,bombs:78,obstacles:14,nps:4.329,length:475.5,characteristic:"Standard",difficulty:"Expert",events:5921,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:42,warns:48,resets:8}},{njs:17,offset:0,notes:1184,bombs:105,obstacles:17,nps:5.395,length:475.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5921,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:32,warns:43,resets:16}}],downloadURL:"https://cdn.beatsaver.com/f4555835fccad370eda615cbeff120afe9c4ab13.zip",coverURL:"https://cdn.beatsaver.com/f4555835fccad370eda615cbeff120afe9c4ab13.jpg",previewURL:"https://cdn.beatsaver.com/f4555835fccad370eda615cbeff120afe9c4ab13.mp3"}],createdAt:"2020-04-03T15:39:48.414Z",updatedAt:"2020-04-03T15:39:48.414Z",lastPublishedAt:"2020-04-03T15:39:48.414Z"},{id:"4611",name:"BTS (feat. Halsey) - Boy With Luv",description:"I wouldn't say this was rushed but that I spent a lot of time on it in a couple of days, either way I really like the song and I think the map is pretty fun too.\r\nFeel free to join our K-Pop Beat Saber Discord https://discord.gg/c9uHGYP @SimplyMarvellous#0290 if you'd like to contact me at all\r\nhttps://youtu.be/Wfhj4fjugcg\r\n\r\n\r\n\r\nDownvote if the map is bad, not because you couldn't pass it :)",uploader:{id:4285134,name:"simplymarvellous",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f7a8",avatar:"https://cdn.beatsaver.com/avatar/189618441429319680.png",type:"DISCORD"},metadata:{bpm:120,duration:232,songName:"Boy With Luv",songSubName:"BTS (ft. Halsey)",songAuthorName:"SimplyMarvellous",levelAuthorName:"simplymarvellous"},stats:{plays:0,downloads:5564,upvotes:2055,downvotes:52,score:.9279},uploaded:"2019-04-15T06:34:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c0e3706463c5c9b993ba5d05c2166fb0b512e695",key:"4611",state:"Published",createdAt:"2019-04-15T06:34:34Z",sageScore:5,diffs:[{njs:12,offset:0,notes:792,bombs:0,obstacles:21,nps:3.03,length:522.833,characteristic:"Standard",difficulty:"Hard",events:1832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.417,paritySummary:{errors:81,warns:38,resets:0}},{njs:15,offset:0,notes:976,bombs:0,obstacles:21,nps:3.734,length:522.833,characteristic:"Standard",difficulty:"ExpertPlus",events:1832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.417,paritySummary:{errors:64,warns:42,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c0e3706463c5c9b993ba5d05c2166fb0b512e695.zip",coverURL:"https://cdn.beatsaver.com/c0e3706463c5c9b993ba5d05c2166fb0b512e695.jpg",previewURL:"https://cdn.beatsaver.com/c0e3706463c5c9b993ba5d05c2166fb0b512e695.mp3"}],createdAt:"2019-04-15T06:34:34Z",updatedAt:"2019-04-15T06:34:34Z",lastPublishedAt:"2019-04-15T06:34:34Z"},{id:"1fff",name:"Chiru Chiru by REOL",description:"The 4th most played song during the 100k Contest, I present to you a dance-able map of Chiru Chiru by REOL!\r\n\r\nThis is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes by just playing Beat Saber! Go to https://bsaber.com/100k-contest/ for more info.\r\n\r\nFull length song. I've added/edited a custom countdown to the intro.\r\n\r\nPreview:\r\nhttps://youtu.be/jcx6g6NS8_4\r\n\r\nBPM: 128\r\nDuration: 3:18\r\nEasy, Normal, Hard and Expert difficulties.\r\n\r\nEasy: 253, 31 obstacles, 6 mines\r\nNormal: 356 notes, 31 obstacles, 6 mines\r\nHard: 478 notes, 31 obstacles, 18 mines\r\nExpert: 675 notes, 31 obstacles, 18 mines\r\n\r\nThanks to Kizuflux, VenclaireVR, squeaksies, Crankor, NekiCoule, Redmagi, aggrogahu and Saut for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:128,duration:199,songName:"Chiru Chiru",songSubName:"REOL",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:6874,upvotes:4133,downvotes:148,score:.9279},uploaded:"2018-11-12T22:29:15Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"9993d9f5b03472efa5b8b31d3dc4156301145d97",key:"1fff",state:"Published",createdAt:"2018-11-12T22:29:15Z",sageScore:4,diffs:[{njs:10,offset:0,notes:258,bombs:6,obstacles:31,nps:1.339,length:411,characteristic:"Standard",difficulty:"Easy",events:955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192.656,paritySummary:{errors:62,warns:27,resets:3},stars:1.1},{njs:10,offset:0,notes:356,bombs:6,obstacles:31,nps:1.846,length:411.5,characteristic:"Standard",difficulty:"Normal",events:955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192.891,paritySummary:{errors:64,warns:44,resets:3},stars:1.37},{njs:11,offset:0,notes:478,bombs:18,obstacles:31,nps:2.472,length:412.5,characteristic:"Standard",difficulty:"Hard",events:955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.359,paritySummary:{errors:70,warns:85,resets:4},stars:1.82},{njs:11,offset:0,notes:669,bombs:18,obstacles:31,nps:3.46,length:412.5,characteristic:"Standard",difficulty:"Expert",events:956,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.359,paritySummary:{errors:96,warns:89,resets:5},stars:2.28}],downloadURL:"https://cdn.beatsaver.com/9993d9f5b03472efa5b8b31d3dc4156301145d97.zip",coverURL:"https://cdn.beatsaver.com/9993d9f5b03472efa5b8b31d3dc4156301145d97.jpg",previewURL:"https://cdn.beatsaver.com/9993d9f5b03472efa5b8b31d3dc4156301145d97.mp3"}],createdAt:"2018-11-12T22:29:15Z",updatedAt:"2018-11-12T22:29:15Z",lastPublishedAt:"2018-11-12T22:29:15Z"},{id:"6ac",name:"Pompeii - Bastille",description:"Hard only - Manageable but active. Events included.",uploader:{id:51831,name:"dietmoxie",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec3a",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec3a?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:214,songName:"Pompeii",songSubName:"",songAuthorName:"Bastille",levelAuthorName:"dietmoxie"},stats:{plays:0,downloads:10306,upvotes:5098,downvotes:196,score:.9279},uploaded:"2018-06-26T00:59:17Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9753e45020fe1c5681fcd74f5a41efcf3c143282",key:"6ac",state:"Published",createdAt:"2018-06-26T00:59:17Z",sageScore:4,diffs:[{njs:10,offset:0,notes:698,bombs:0,obstacles:31,nps:3.348,length:443,characteristic:"Standard",difficulty:"Hard",events:665,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.291,paritySummary:{errors:134,warns:133,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9753e45020fe1c5681fcd74f5a41efcf3c143282.zip",coverURL:"https://cdn.beatsaver.com/9753e45020fe1c5681fcd74f5a41efcf3c143282.jpg",previewURL:"https://cdn.beatsaver.com/9753e45020fe1c5681fcd74f5a41efcf3c143282.mp3"}],createdAt:"2018-06-26T00:59:17Z",updatedAt:"2018-06-26T00:59:17Z",lastPublishedAt:"2018-06-26T00:59:17Z"},{id:"54bb",name:"Bodies - Drowning Pool",description:'Fun fact: My first time hearing this song was on some random YouTube video in the 2000s, almost all YouTube videos back then used this song for some reason.\n\nWhen I reheard the song I immediately knew I have to put duck walls every time the lyrics went "HIT THE FLOOR". Also I wanted to use 1, 2, 3, 4 notes on a section of lyrics that said ONE TWO THREE FOUR.\n\nWarning: Please don\'t actually let your body hit the floor while playing this map. Smashing head first into the floor with a VR headset can be an expensive mistake.\n\n"Bodies" (often incorrectly called "Let the Bodies Hit the Floor") is a song by the American rock band Drowning Pool and also is the lead single from their debut album Sinner. It was also the theme song for the 2001 WWF SummerSlam pay-per-view event, as well as that of the ECW brand in 2006 to early 2008',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:130,duration:202,songName:"Bodies",songSubName:"",songAuthorName:"Drowning Pool",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4168,upvotes:1980,downvotes:49,score:.9278},uploaded:"2019-06-27T18:32:03.310Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8818e19d544a6ca8b1a05e7324731fee2f38b58f",key:"54bb",state:"Published",createdAt:"2019-06-27T18:32:03.310Z",sageScore:2,diffs:[{njs:14,offset:0,notes:805,bombs:0,obstacles:19,nps:4.211,length:414.144,characteristic:"Standard",difficulty:"Expert",events:5298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.144,paritySummary:{errors:29,warns:33,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8818e19d544a6ca8b1a05e7324731fee2f38b58f.zip",coverURL:"https://cdn.beatsaver.com/8818e19d544a6ca8b1a05e7324731fee2f38b58f.jpg",previewURL:"https://cdn.beatsaver.com/8818e19d544a6ca8b1a05e7324731fee2f38b58f.mp3"}],createdAt:"2019-06-27T18:32:03.310Z",updatedAt:"2019-06-27T18:32:03.310Z",lastPublishedAt:"2019-06-27T18:32:03.310Z"},{id:"5352",name:"1999 - Charli XCX & Troye Sivan",description:"It started as a meme in #mapping-discussion and expanded to a full blown project. I really like how it turned out. Hope you enjoy it :)\n\nLength: 3:11\nBPM: 124\nNJS: 17 (Expert+), 15 (Expert), 13 (Hard)\n\nEasy slot is the lightshow as always.\n\nThanks to my playtesters CyanSnow (2x) and Redmagi, show them some love! :)\n\nDM me your feedback on discord: Teuflum#5982",uploader:{id:68740,name:"Teuflum",uniqueSet:!0,hash:"5cff0b7498cc5a672c851a6b",avatar:"https://cdn.beatsaver.com/avatar/114706869460664326.png",type:"DISCORD"},metadata:{bpm:124,duration:192,songName:"1999",songSubName:"",songAuthorName:"Charli XCX & Troye Sivan",levelAuthorName:"Teuflum"},stats:{plays:0,downloads:2205,upvotes:1273,downvotes:21,score:.9278},uploaded:"2019-06-17T15:29:13.123Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d68bd4d997726249406bce748b83bf5464da99e7",key:"5352",state:"Published",createdAt:"2019-06-17T15:29:13.123Z",sageScore:7,diffs:[{njs:13,offset:0,notes:555,bombs:56,obstacles:37,nps:2.968,length:386.5,characteristic:"Standard",difficulty:"Hard",events:6185,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.016,paritySummary:{errors:23,warns:8,resets:4}},{njs:15,offset:0,notes:668,bombs:56,obstacles:41,nps:3.572,length:386.5,characteristic:"Standard",difficulty:"Expert",events:6185,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.016,paritySummary:{errors:20,warns:16,resets:4}},{njs:17,offset:0,notes:812,bombs:8,obstacles:39,nps:4.342,length:386.5,characteristic:"Standard",difficulty:"ExpertPlus",events:6185,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.016,paritySummary:{errors:33,warns:48,resets:2}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:6185,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d68bd4d997726249406bce748b83bf5464da99e7.zip",coverURL:"https://cdn.beatsaver.com/d68bd4d997726249406bce748b83bf5464da99e7.jpg",previewURL:"https://cdn.beatsaver.com/d68bd4d997726249406bce748b83bf5464da99e7.mp3"}],createdAt:"2019-06-17T15:29:13.123Z",updatedAt:"2019-06-17T15:29:13.123Z",lastPublishedAt:"2019-06-17T15:29:13.123Z"},{id:"a934",name:"Sabaton - Seven Pillars of Wisdom",description:"Sabaton is a Power-metal band that sings almost exclusively about historical events. This song is about Lawrence of Arabia, and is named after his autobiography.\r\n\r\nThe map is fully lit, and available in multiple difficulties. Thanks to the BSMG discord for helping test the map before release.\r\n\r\nNormal: 2.2 NPS - 10 NJS\r\nHard: 3.89 NPS - 13 NJS\r\nExpert: 5.24 NPS - 17 NJS",uploader:{id:4285369,name:"Cyrix",uniqueSet:!0,hash:"5eb6eb9a7abb000006c85add",avatar:"https://cdn.beatsaver.com/avatar/167730807929044992.png",type:"DISCORD"},metadata:{bpm:152,duration:178,songName:"Seven Pillars of Wisdom",songSubName:"",songAuthorName:"Sabaton",levelAuthorName:"Cyrix"},stats:{plays:0,downloads:2699,upvotes:824,downvotes:6,score:.9276},uploaded:"2020-05-22T21:19:05.343Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"16732f8edc59bd358278c14055cde1cd9ecb47aa",key:"a934",state:"Published",createdAt:"2020-05-22T21:19:05.343Z",sageScore:5,diffs:[{njs:10,offset:0,notes:393,bombs:0,obstacles:24,nps:2.299,length:433,characteristic:"Standard",difficulty:"Normal",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.921,paritySummary:{errors:18,warns:4,resets:0}},{njs:13,offset:.25,notes:696,bombs:20,obstacles:16,nps:4.044,length:436,characteristic:"Standard",difficulty:"Hard",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.105,paritySummary:{errors:0,warns:2,resets:3}},{njs:17,offset:.3,notes:937,bombs:16,obstacles:14,nps:5.444,length:436,characteristic:"Standard",difficulty:"Expert",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.105,paritySummary:{errors:0,warns:5,resets:5}}],downloadURL:"https://cdn.beatsaver.com/16732f8edc59bd358278c14055cde1cd9ecb47aa.zip",coverURL:"https://cdn.beatsaver.com/16732f8edc59bd358278c14055cde1cd9ecb47aa.jpg",previewURL:"https://cdn.beatsaver.com/16732f8edc59bd358278c14055cde1cd9ecb47aa.mp3"}],createdAt:"2020-05-22T21:19:05.343Z",updatedAt:"2020-05-22T21:19:05.343Z",lastPublishedAt:"2020-05-22T21:19:05.343Z"},{id:"51be",name:"Prayer Of The Refugee - Rise Against",description:'"Prayer of the Refugee" is a song by American rock band Rise Against. The lyrics were written by lead vocalist Tim McIlrath, and deal with the themes of forced displacement and the societal issues surrounding refugees. Thanks to @Scrappy for helping me find the variable BPM in this song',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:150,duration:200,songName:"Prayer Of The Refugee",songSubName:"Rise Against",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3598,upvotes:1630,downvotes:35,score:.9276},uploaded:"2019-06-06T05:53:57Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9c7e5ae537bb4871513330da180c6647cd8cffff",key:"51be",state:"Published",createdAt:"2019-06-06T05:53:57Z",sageScore:6,diffs:[{njs:13.5,offset:0,notes:860,bombs:0,obstacles:23,nps:4.503,length:479.103,characteristic:"Standard",difficulty:"Expert",events:3414,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.641,paritySummary:{errors:37,warns:24,resets:0}},{njs:15,offset:0,notes:936,bombs:0,obstacles:23,nps:4.9,length:479.103,characteristic:"Standard",difficulty:"ExpertPlus",events:3414,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.641,paritySummary:{errors:33,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9c7e5ae537bb4871513330da180c6647cd8cffff.zip",coverURL:"https://cdn.beatsaver.com/9c7e5ae537bb4871513330da180c6647cd8cffff.jpg",previewURL:"https://cdn.beatsaver.com/9c7e5ae537bb4871513330da180c6647cd8cffff.mp3"}],createdAt:"2019-06-06T05:53:57Z",updatedAt:"2019-06-06T05:53:57Z",lastPublishedAt:"2019-06-06T05:53:57Z"},{id:"226e",name:"Crawling - Linkin Park",description:"Another Linkin Park map! This time it is Crawling. \nPreview: https://www.youtube.com/watch?v=Pkr9Vm1dPv8\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:105,duration:208,songName:"Crawling",songSubName:"Linkin Park",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:5610,upvotes:2388,downvotes:67,score:.9276},uploaded:"2018-11-26T14:10:51Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"691b382b6ca6e69b9b908e41d439f9b7b9403fb6",key:"226e",state:"Published",createdAt:"2018-11-26T14:10:51Z",sageScore:5,diffs:[{njs:10,offset:0,notes:455,bombs:0,obstacles:64,nps:2.317,length:344,characteristic:"Standard",difficulty:"Normal",events:2399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.571,paritySummary:{errors:29,warns:28,resets:0}},{njs:12,offset:0,notes:666,bombs:0,obstacles:71,nps:3.386,length:344.5,characteristic:"Standard",difficulty:"Hard",events:2399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.857,paritySummary:{errors:24,warns:19,resets:0}},{njs:14,offset:0,notes:862,bombs:0,obstacles:75,nps:4.383,length:344.5,characteristic:"Standard",difficulty:"Expert",events:2399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.857,paritySummary:{errors:18,warns:39,resets:0}}],downloadURL:"https://cdn.beatsaver.com/691b382b6ca6e69b9b908e41d439f9b7b9403fb6.zip",coverURL:"https://cdn.beatsaver.com/691b382b6ca6e69b9b908e41d439f9b7b9403fb6.jpg",previewURL:"https://cdn.beatsaver.com/691b382b6ca6e69b9b908e41d439f9b7b9403fb6.mp3"}],createdAt:"2018-11-26T14:10:51Z",updatedAt:"2018-11-26T14:10:51Z",lastPublishedAt:"2018-11-26T14:10:51Z"},{id:"6cf7",name:"[Noodleween] AronChupa, Little Sis Nora - Rave in the Grave",description:"2nd Place winner in the BSMG Halloween map competition! :D\n\nThis map is part of the Noodleween song pack, brought to you by the Noodle mapper group. We hope you enjoy this as much as we enjoyed making it.\n\nThis song already had a map, but I thought it could use some love and revamping. Hope you guys enjoy the full difficulty spread!\n\nExpert+ Playthrough: https://www.youtube.com/watch?v=ufEQ4L2y694&feature=youtu.be\n\nHappy Halloween! :D 👻",uploader:{id:17131,name:"tranquillizeme",uniqueSet:!0,hash:"5cff0b7798cc5a672c85609e",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c85609e?d=retro",type:"SIMPLE"},metadata:{bpm:132,duration:154,songName:"Rave In The Grave",songSubName:"",songAuthorName:"AronChupa, Little Sis Nora",levelAuthorName:"TranquillizeMe"},stats:{plays:0,downloads:2987,upvotes:1394,downvotes:26,score:.9275},uploaded:"2019-10-29T23:00:07.667Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b288ce94ed8feff67af04fd75e23acafad66b9f8",key:"6cf7",state:"Published",createdAt:"2019-10-29T23:00:07.667Z",sageScore:6,diffs:[{njs:12,offset:1.5,notes:212,bombs:0,obstacles:36,nps:1.418,length:329,characteristic:"Standard",difficulty:"Easy",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:49,warns:7,resets:0}},{njs:13,offset:1,notes:286,bombs:12,obstacles:43,nps:1.912,length:329,characteristic:"Standard",difficulty:"Normal",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:42,warns:12,resets:0}},{njs:14,offset:1,notes:447,bombs:12,obstacles:37,nps:2.989,length:329,characteristic:"Standard",difficulty:"Hard",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:9,warns:2,resets:0}},{njs:15,offset:.5,notes:514,bombs:8,obstacles:47,nps:3.437,length:329,characteristic:"Standard",difficulty:"Expert",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:7,warns:2,resets:0}},{njs:19,offset:0,notes:610,bombs:24,obstacles:44,nps:4.079,length:329,characteristic:"Standard",difficulty:"ExpertPlus",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:8,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b288ce94ed8feff67af04fd75e23acafad66b9f8.zip",coverURL:"https://cdn.beatsaver.com/b288ce94ed8feff67af04fd75e23acafad66b9f8.jpg",previewURL:"https://cdn.beatsaver.com/b288ce94ed8feff67af04fd75e23acafad66b9f8.mp3"}],createdAt:"2019-10-29T23:00:07.667Z",updatedAt:"2019-10-29T23:00:07.667Z",lastPublishedAt:"2019-10-29T23:00:07.667Z"},{id:"53fc",name:"Sabaton - Shiroyama",description:"Second map!!! I hope you all enjoy the new map with added difficulties!! Feel free to message me on discord if you liked the map, have feedback, or have any suggestions for some more maps!!!\nMax●The●Whale#8744",uploader:{id:40212,name:"maximusthewhale",uniqueSet:!0,hash:"5cff0b7898cc5a672c856ed4",avatar:"https://www.gravatar.com/avatar/5cff0b7898cc5a672c856ed4?d=retro",type:"SIMPLE"},metadata:{bpm:171,duration:212,songName:"Shiroyama",songSubName:"",songAuthorName:"Sabaton",levelAuthorName:"Maximus"},stats:{plays:0,downloads:2704,upvotes:1798,downvotes:42,score:.9275},uploaded:"2019-06-22T09:34:40.930Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1340476c96b9052adfff5e63993b7ffa03229c39",key:"53fc",state:"Published",createdAt:"2019-06-22T09:34:40.930Z",sageScore:5,diffs:[{njs:13,offset:0,notes:736,bombs:0,obstacles:5,nps:3.648,length:575,characteristic:"Standard",difficulty:"Hard",events:1038,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.754,paritySummary:{errors:12,warns:0,resets:0}},{njs:15,offset:0,notes:889,bombs:0,obstacles:16,nps:4.406,length:575,characteristic:"Standard",difficulty:"Expert",events:3144,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.754,paritySummary:{errors:22,warns:22,resets:0}},{njs:18,offset:0,notes:1353,bombs:0,obstacles:16,nps:6.706,length:575,characteristic:"Standard",difficulty:"ExpertPlus",events:3216,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.754,paritySummary:{errors:29,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1340476c96b9052adfff5e63993b7ffa03229c39.zip",coverURL:"https://cdn.beatsaver.com/1340476c96b9052adfff5e63993b7ffa03229c39.jpg",previewURL:"https://cdn.beatsaver.com/1340476c96b9052adfff5e63993b7ffa03229c39.mp3"}],createdAt:"2019-06-22T09:34:40.930Z",updatedAt:"2019-06-22T09:34:40.930Z",lastPublishedAt:"2019-06-22T09:34:40.930Z"},{id:"5389",name:"On Top of the World - Imagine Dragons",description:"Re-upload of an earlier Beatmap that was lost to the update.",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:100,duration:192,songName:"On Top of the World",songSubName:"",songAuthorName:"Imagine Dragons",levelAuthorName:"BennyDaBeast"},stats:{plays:0,downloads:12331,upvotes:3114,downvotes:101,score:.9274},uploaded:"2019-06-19T17:02:53.084Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"88314981432a8002f62e464562c0c41f06393ab5",key:"5389",state:"Published",createdAt:"2019-06-19T17:02:53.084Z",sageScore:2,diffs:[{njs:10,offset:0,notes:269,bombs:0,obstacles:18,nps:1.423,length:315,characteristic:"Standard",difficulty:"Normal",events:781,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189,paritySummary:{errors:48,warns:37,resets:0}},{njs:10,offset:0,notes:374,bombs:0,obstacles:18,nps:1.976,length:315.5,characteristic:"Standard",difficulty:"Hard",events:781,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:54,warns:52,resets:0}},{njs:10,offset:0,notes:551,bombs:0,obstacles:27,nps:2.911,length:315.5,characteristic:"Standard",difficulty:"Expert",events:781,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:81,warns:91,resets:0}},{njs:10,offset:0,notes:720,bombs:4,obstacles:27,nps:3.803,length:315.5,characteristic:"Standard",difficulty:"ExpertPlus",events:781,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:54,warns:71,resets:4}}],downloadURL:"https://cdn.beatsaver.com/88314981432a8002f62e464562c0c41f06393ab5.zip",coverURL:"https://cdn.beatsaver.com/88314981432a8002f62e464562c0c41f06393ab5.jpg",previewURL:"https://cdn.beatsaver.com/88314981432a8002f62e464562c0c41f06393ab5.mp3"}],createdAt:"2019-06-19T17:02:53.084Z",updatedAt:"2019-06-19T17:02:53.084Z",lastPublishedAt:"2019-06-19T17:02:53.084Z"},{id:"4a3d",name:"[Anniversary] Fractures (ft. Nevve) - Illenium [BennyDaBeast]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:246,songName:"Fractures (ft. Nevve)",songSubName:"Illenium",songAuthorName:"BennyDaBeast",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:3049,upvotes:2328,downvotes:65,score:.9274},uploaded:"2019-05-03T14:09:37Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"440945a4fe86b5e3ee7f03b98c636c881930072f",key:"4a3d",state:"Published",createdAt:"2019-05-03T14:09:37Z",sageScore:5,diffs:[{njs:12,offset:0,notes:805,bombs:0,obstacles:41,nps:3.363,length:638.25,characteristic:"Standard",difficulty:"Hard",events:2214,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.344,paritySummary:{errors:98,warns:99,resets:0}},{njs:12,offset:0,notes:1048,bombs:0,obstacles:41,nps:4.379,length:638.25,characteristic:"Standard",difficulty:"Expert",events:2214,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.344,paritySummary:{errors:145,warns:163,resets:0}},{njs:15,offset:0,notes:1060,bombs:0,obstacles:41,nps:4.429,length:638.25,characteristic:"Standard",difficulty:"ExpertPlus",events:2214,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.344,paritySummary:{errors:137,warns:160,resets:0}}],downloadURL:"https://cdn.beatsaver.com/440945a4fe86b5e3ee7f03b98c636c881930072f.zip",coverURL:"https://cdn.beatsaver.com/440945a4fe86b5e3ee7f03b98c636c881930072f.jpg",previewURL:"https://cdn.beatsaver.com/440945a4fe86b5e3ee7f03b98c636c881930072f.mp3"}],createdAt:"2019-05-03T14:09:37Z",updatedAt:"2019-05-03T14:09:37Z",lastPublishedAt:"2019-05-03T14:09:37Z"},{id:"41a8",name:"fhana - Aozora no Rhapsody [Miss Kobayashi's Dragon Maid Opening]",description:"edited: Reworking E+, second guessing its patterns\r\nCGDCT is the best genre of anime. Dragon maid op is fire\r\nPlease check out fhána and their other music\r\n\r\nBPM 135 \r\nExpert\r\nHard\r\nNormal\r\nEasy\r\n\r\nhas fun\r\n\r\ncontact me on discord\r\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:135,duration:96,songName:"Aozora no Rhapsody",songSubName:"fhna",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:7116,upvotes:2214,downvotes:60,score:.9274},uploaded:"2019-03-29T05:34:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cdd469b733ade02a7996d1055082f3e1bc14ca8a",key:"41a8",state:"Published",createdAt:"2019-03-29T05:34:40Z",sageScore:4,diffs:[{njs:10,offset:0,notes:180,bombs:0,obstacles:7,nps:2.045,length:198,characteristic:"Standard",difficulty:"Easy",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88,paritySummary:{errors:11,warns:1,resets:0}},{njs:12,offset:0,notes:274,bombs:0,obstacles:3,nps:3.114,length:198,characteristic:"Standard",difficulty:"Normal",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88,paritySummary:{errors:12,warns:0,resets:0}},{njs:14,offset:0,notes:379,bombs:0,obstacles:3,nps:4.307,length:198,characteristic:"Standard",difficulty:"Hard",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88,paritySummary:{errors:16,warns:4,resets:0}},{njs:15,offset:0,notes:461,bombs:0,obstacles:2,nps:5.239,length:198,characteristic:"Standard",difficulty:"Expert",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88,paritySummary:{errors:7,warns:6,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cdd469b733ade02a7996d1055082f3e1bc14ca8a.zip",coverURL:"https://cdn.beatsaver.com/cdd469b733ade02a7996d1055082f3e1bc14ca8a.jpg",previewURL:"https://cdn.beatsaver.com/cdd469b733ade02a7996d1055082f3e1bc14ca8a.mp3"}],createdAt:"2019-03-29T05:34:40Z",updatedAt:"2019-03-29T05:34:40Z",lastPublishedAt:"2019-03-29T05:34:40Z"},{id:"84b4",name:"Nightcore - Everytime We Touch | Cascada",description:"174th Map\n\nYoutube Preview : https://youtu.be/i6so3ZhTtGQ",uploader:{id:4284588,name:"rigid",uniqueSet:!0,hash:"5cff0b7598cc5a672c852224",avatar:"https://cdn.beatsaver.com/avatar/295613108947386368.png",type:"DISCORD"},metadata:{bpm:186,duration:152,songName:"Nightcore - Everytime We Touch",songSubName:"",songAuthorName:"Cascada",levelAuthorName:"Rigid"},stats:{plays:0,downloads:4362,upvotes:1614,downvotes:35,score:.9273},uploaded:"2020-02-06T17:16:32.579Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"31979b560a0ea958f9f0d92df8dcc12f6b8f567c",key:"84b4",state:"Published",createdAt:"2020-02-06T17:16:32.579Z",sageScore:4,diffs:[{njs:15,offset:.5,notes:608,bombs:2,obstacles:77,nps:4.158,length:453.265,characteristic:"Standard",difficulty:"Expert",events:730,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.214,paritySummary:{errors:9,warns:8,resets:1}}],downloadURL:"https://cdn.beatsaver.com/31979b560a0ea958f9f0d92df8dcc12f6b8f567c.zip",coverURL:"https://cdn.beatsaver.com/31979b560a0ea958f9f0d92df8dcc12f6b8f567c.jpg",previewURL:"https://cdn.beatsaver.com/31979b560a0ea958f9f0d92df8dcc12f6b8f567c.mp3"}],createdAt:"2020-02-06T17:16:32.579Z",updatedAt:"2020-02-06T17:16:32.579Z",lastPublishedAt:"2020-02-06T17:16:32.579Z"},{id:"8149",name:"Great Days [JoJo's Bizarre Adventure: Diamond is Unbreakable 3rd Opening] - Karen Aoki & Daisuke Hasegawa",description:"\"Great Days\" is the third opening of JoJo's Bizarre Adventure: Diamond is Unbreakable and the seventh overall opening of the JoJo's Bizarre Adventure anime. The song is performed by the jazz vocalist Karen Aoki and Daisuke Hasegawa and composed by Yugo Kanno. The single was released on October 19, 2016.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:170,duration:239,songName:"Great Days",songSubName:"",songAuthorName:"Daisuke Hasegawa & Karen Aoki",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:6431,upvotes:1376,downvotes:26,score:.9271},uploaded:"2020-01-25T14:01:38.069Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3d3effcb84f2bf4aadcd7f6ba7f89eb37226a3c3",key:"8149",state:"Published",createdAt:"2020-01-25T14:01:38.069Z",sageScore:4,diffs:[{njs:16,offset:0,notes:1005,bombs:10,obstacles:54,nps:4.237,length:672,characteristic:"Standard",difficulty:"Expert",events:2987,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:237.176,paritySummary:{errors:43,warns:45,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3d3effcb84f2bf4aadcd7f6ba7f89eb37226a3c3.zip",coverURL:"https://cdn.beatsaver.com/3d3effcb84f2bf4aadcd7f6ba7f89eb37226a3c3.jpg",previewURL:"https://cdn.beatsaver.com/3d3effcb84f2bf4aadcd7f6ba7f89eb37226a3c3.mp3"}],createdAt:"2020-01-25T14:01:38.069Z",updatedAt:"2020-01-25T14:01:38.069Z",lastPublishedAt:"2020-01-25T14:01:38.069Z"},{id:"8ac5",name:"Overthinker - INZO",description:"Thanks Rexxz for all your patience and lighting skillz <3",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:108,duration:222,songName:"Overthinker",songSubName:"",songAuthorName:"INZO",levelAuthorName:"Ryger"},stats:{plays:0,downloads:2384,upvotes:1616,downvotes:36,score:.9268},uploaded:"2020-02-26T02:39:13.425Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e09394d9d641b6739e80553ce56dcd68fa27bdf3",key:"8ac5",state:"Published",createdAt:"2020-02-26T02:39:13.425Z",sageScore:4,diffs:[{njs:20,offset:.25,notes:0,bombs:0,obstacles:2405,nps:0,length:0,characteristic:"Standard",difficulty:"Expert",events:6835,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:.25,notes:984,bombs:0,obstacles:2405,nps:4.893,length:362,characteristic:"Standard",difficulty:"ExpertPlus",events:6836,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:201.111,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e09394d9d641b6739e80553ce56dcd68fa27bdf3.zip",coverURL:"https://cdn.beatsaver.com/e09394d9d641b6739e80553ce56dcd68fa27bdf3.jpg",previewURL:"https://cdn.beatsaver.com/e09394d9d641b6739e80553ce56dcd68fa27bdf3.mp3"}],createdAt:"2020-02-26T02:39:13.425Z",updatedAt:"2020-02-26T02:39:13.425Z",lastPublishedAt:"2020-02-26T02:39:13.425Z"},{id:"1ff6",name:"Don't Let Me Down (Illenium Remix) - The Chainsmokers feat. Daya (100k Contest)",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!\r\nDifficulties: Expert+, Expert, Hard, Normal",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:160,duration:220,songName:"Don't Let Me Down (Illenium Remix)",songSubName:"The Chainsmokers feat. Daya",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:10044,upvotes:4381,downvotes:166,score:.9268},uploaded:"2018-11-12T18:48:50Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5639a12cccf90238055116ec53e5297aa004627e",key:"1ff6",state:"Published",createdAt:"2018-11-12T18:48:50Z",sageScore:8,diffs:[{njs:10,offset:0,notes:280,bombs:0,obstacles:26,nps:1.511,length:494,characteristic:"Standard",difficulty:"Easy",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:68,warns:14,resets:0}},{njs:10,offset:0,notes:360,bombs:0,obstacles:26,nps:1.943,length:494,characteristic:"Standard",difficulty:"Normal",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:68,warns:32,resets:0}},{njs:12,offset:0,notes:521,bombs:0,obstacles:154,nps:2.801,length:496,characteristic:"Standard",difficulty:"Hard",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186,paritySummary:{errors:77,warns:49,resets:0}},{njs:12,offset:0,notes:746,bombs:0,obstacles:155,nps:4.011,length:496,characteristic:"Standard",difficulty:"Expert",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186,paritySummary:{errors:76,warns:100,resets:0}},{njs:14,offset:0,notes:1225,bombs:0,obstacles:207,nps:6.481,length:504,characteristic:"Standard",difficulty:"ExpertPlus",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189,paritySummary:{errors:101,warns:114,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5639a12cccf90238055116ec53e5297aa004627e.zip",coverURL:"https://cdn.beatsaver.com/5639a12cccf90238055116ec53e5297aa004627e.jpg",previewURL:"https://cdn.beatsaver.com/5639a12cccf90238055116ec53e5297aa004627e.mp3"}],createdAt:"2018-11-12T18:48:50Z",updatedAt:"2018-11-12T18:48:50Z",lastPublishedAt:"2018-11-12T18:48:50Z"},{id:"393",name:"O-Zone - Dragostea Din Tei",description:"numa numa numa yey\r\n\r\nhard only for now, but i'll add more difficulties later\r\n\r\nfull events/lighting",uploader:{id:52747,name:"esspee39",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f198",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f198?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:214,songName:"Dragostei Din Tei",songSubName:"O-Zone",songAuthorName:"esspee",levelAuthorName:"esspee39"},stats:{plays:0,downloads:5541,upvotes:3046,downvotes:100,score:.9268},uploaded:"2018-06-04T00:27:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b0fd4145a269f1fc8f78afccb4a310a36f2f873c",key:"393",state:"Published",createdAt:"2018-06-04T00:27:54Z",sageScore:5,diffs:[{njs:10,offset:0,notes:676,bombs:69,obstacles:16,nps:3.266,length:448.5,characteristic:"Standard",difficulty:"Hard",events:1136,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207,paritySummary:{errors:47,warns:131,resets:9}}],downloadURL:"https://cdn.beatsaver.com/b0fd4145a269f1fc8f78afccb4a310a36f2f873c.zip",coverURL:"https://cdn.beatsaver.com/b0fd4145a269f1fc8f78afccb4a310a36f2f873c.jpg",previewURL:"https://cdn.beatsaver.com/b0fd4145a269f1fc8f78afccb4a310a36f2f873c.mp3"}],createdAt:"2018-06-04T00:27:54Z",updatedAt:"2018-06-04T00:27:54Z",lastPublishedAt:"2018-06-04T00:27:54Z"},{id:"484d",name:"Sosageyo | Shinzou wo sasageyo | Attack on Titan OP 3 - Linked Horizon",description:"Huge thanks to Skeelie for lighting this map!\r\n\r\nThis map overrides the default red-blue colors to a blue-white color, matching the Survey Corps' Wings of Freedom.\r\nEasy, Hard, Expert, and Expert+ are all available.\r\nEasy is a bit spicy, Expert is very spicy.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:90,songName:"Shinzou wo Sasageyo",songSubName:"Linked Horizon",songAuthorName:"Ab & Skeelie",levelAuthorName:"TheAb"},stats:{plays:0,downloads:8967,upvotes:2595,downvotes:79,score:.9267},uploaded:"2019-04-25T10:29:55Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"713da9a9a0737f402ca75819ea9dc19ec3723329",key:"484d",state:"Published",createdAt:"2019-04-25T10:29:55Z",sageScore:5,diffs:[{njs:12,offset:0,notes:123,bombs:4,obstacles:5,nps:1.439,length:228,characteristic:"Standard",difficulty:"Easy",events:5254,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.5,paritySummary:{errors:30,warns:3,resets:2}},{njs:12,offset:0,notes:229,bombs:0,obstacles:5,nps:2.678,length:228,characteristic:"Standard",difficulty:"Hard",events:5215,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.5,paritySummary:{errors:21,warns:18,resets:0}},{njs:15,offset:0,notes:372,bombs:0,obstacles:4,nps:4.351,length:228,characteristic:"Standard",difficulty:"Expert",events:5215,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.5,paritySummary:{errors:33,warns:29,resets:0}},{njs:18,offset:0,notes:548,bombs:0,obstacles:3,nps:6.627,length:220.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5215,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:82.688,paritySummary:{errors:27,warns:48,resets:0}}],downloadURL:"https://cdn.beatsaver.com/713da9a9a0737f402ca75819ea9dc19ec3723329.zip",coverURL:"https://cdn.beatsaver.com/713da9a9a0737f402ca75819ea9dc19ec3723329.jpg",previewURL:"https://cdn.beatsaver.com/713da9a9a0737f402ca75819ea9dc19ec3723329.mp3"}],createdAt:"2019-04-25T10:29:55Z",updatedAt:"2019-04-25T10:29:55Z",lastPublishedAt:"2019-04-25T10:29:55Z"},{id:"21d9",name:"GAY FROGS",description:"I DON'T LIKE EM PUTTING CHEMICALS IN THE WATER THAT TURN THE FRIGGIN FROGS GAY!",uploader:{id:408,name:"nuketime",uniqueSet:!0,hash:"5cff0b7498cc5a672c8507f7",avatar:"https://cdn.beatsaver.com/avatar/175811186007343104.png",type:"DISCORD"},metadata:{bpm:143,duration:58,songName:"Gay Frogs",songSubName:"",songAuthorName:"Nuketime",levelAuthorName:"Nuketime"},stats:{plays:0,downloads:2129,upvotes:1147,downvotes:18,score:.9267},uploaded:"2018-11-24T03:47:04Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c7bdbfea113219f8b372ca6107540995c2e81997",key:"21d9",state:"Published",createdAt:"2018-11-24T03:47:04Z",sageScore:3,diffs:[{njs:15,offset:0,notes:278,bombs:0,obstacles:2,nps:5.066,length:109.75,characteristic:"Standard",difficulty:"ExpertPlus",events:280,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:46.049,paritySummary:{errors:52,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c7bdbfea113219f8b372ca6107540995c2e81997.zip",coverURL:"https://cdn.beatsaver.com/c7bdbfea113219f8b372ca6107540995c2e81997.jpg",previewURL:"https://cdn.beatsaver.com/c7bdbfea113219f8b372ca6107540995c2e81997.mp3"}],createdAt:"2018-11-24T03:47:04Z",updatedAt:"2018-11-24T03:47:04Z",lastPublishedAt:"2018-11-24T03:47:04Z"},{id:"a76b",name:"BB 2020 | PSYQUI feat. Marpril - Girly Cupid | 18 | Submission #47",description:"This is a submission for the Building Blocks 2020 mapping contest!\n\nAll submissions are anonymous and will be uploaded by the BuildingBlocks account from May 3rd-May 17th 2020.\n\nInterested in checking out more map submissions or entering yourself? Join our discord here: https://discord.gg/3VAPcdg\n\nRequired Plugins:\nNoodle Extension\nChroma",uploader:{id:27741,name:"buildingblocks",uniqueSet:!0,hash:"5eac7bb67abb000006beca92",avatar:"https://www.gravatar.com/avatar/5eac7bb67abb000006beca92?d=retro",type:"SIMPLE"},metadata:{bpm:133,duration:244,songName:"Girly Cupid",songSubName:"feat. Marpril",songAuthorName:"PSYQUI",levelAuthorName:"Building Blocks 2020"},stats:{plays:0,downloads:1140,upvotes:1003,downvotes:13,score:.9266},uploaded:"2020-05-17T20:45:31.509Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"55cd8d585f6e63fb9b06d7c7358bda53f821fa81",key:"a76b",state:"Published",createdAt:"2020-05-17T20:45:31.509Z",sageScore:3,diffs:[{njs:18,offset:-.2,notes:764,bombs:0,obstacles:36331,nps:3.232,length:524,characteristic:"Standard",difficulty:"Expert",events:3539,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:236.391,paritySummary:{errors:28,warns:16,resets:0}}],downloadURL:"https://cdn.beatsaver.com/55cd8d585f6e63fb9b06d7c7358bda53f821fa81.zip",coverURL:"https://cdn.beatsaver.com/55cd8d585f6e63fb9b06d7c7358bda53f821fa81.jpg",previewURL:"https://cdn.beatsaver.com/55cd8d585f6e63fb9b06d7c7358bda53f821fa81.mp3"}],createdAt:"2020-05-17T20:45:31.509Z",updatedAt:"2020-05-17T20:45:31.509Z",lastPublishedAt:"2020-05-17T20:45:31.509Z"},{id:"6368",name:"Mimimi - Nightcore",description:"Youtube Preview: https://youtu.be/vqVK85T72hs",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:144.6,duration:167,songName:"Mi Mi Mi - Nightcore",songSubName:"",songAuthorName:"NightcoreZodiac",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:2275,upvotes:1677,downvotes:39,score:.9266},uploaded:"2019-09-14T22:08:05.659Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"448f6e65098a9b0d2de0c5b87a53300a61795eb3",key:"6368",state:"Published",createdAt:"2019-09-14T22:08:05.659Z",sageScore:4,diffs:[{njs:16,offset:0,notes:755,bombs:0,obstacles:2,nps:4.648,length:391.5,characteristic:"Standard",difficulty:"Expert",events:859,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.448,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/448f6e65098a9b0d2de0c5b87a53300a61795eb3.zip",coverURL:"https://cdn.beatsaver.com/448f6e65098a9b0d2de0c5b87a53300a61795eb3.jpg",previewURL:"https://cdn.beatsaver.com/448f6e65098a9b0d2de0c5b87a53300a61795eb3.mp3"}],createdAt:"2019-09-14T22:08:05.659Z",updatedAt:"2019-09-14T22:08:05.659Z",lastPublishedAt:"2019-09-14T22:08:05.659Z"},{id:"51fd",name:"BLOODY STREAM",description:"For the Jojo Fans",uploader:{id:4284704,name:"epg7ens",uniqueSet:!0,hash:"5cff0b7798cc5a672c855bb6",avatar:"https://cdn.beatsaver.com/avatar/174643589618466816.png",type:"DISCORD"},metadata:{bpm:132,duration:259,songName:"BLOODY STREAM",songSubName:"Coda",songAuthorName:"EPG7ENS",levelAuthorName:"EPG7ENS"},stats:{plays:0,downloads:3172,upvotes:2054,downvotes:55,score:.9266},uploaded:"2019-06-07T06:27:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7d5038dd8aae109cbe537ecbc6c38ec458c820f8",key:"51fd",state:"Published",createdAt:"2019-06-07T06:27:36Z",sageScore:5,diffs:[{njs:17,offset:0,notes:1448,bombs:0,obstacles:0,nps:5.648,length:564,characteristic:"Standard",difficulty:"ExpertPlus",events:2746,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256.364,paritySummary:{errors:2,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7d5038dd8aae109cbe537ecbc6c38ec458c820f8.zip",coverURL:"https://cdn.beatsaver.com/7d5038dd8aae109cbe537ecbc6c38ec458c820f8.jpg",previewURL:"https://cdn.beatsaver.com/7d5038dd8aae109cbe537ecbc6c38ec458c820f8.mp3"}],createdAt:"2019-06-07T06:27:36Z",updatedAt:"2019-06-07T06:27:36Z",lastPublishedAt:"2019-06-07T06:27:36Z"},{id:"4b20",name:"[Anniversary] Booty Bounce - Tujamo & Taio Cruz [Fafurion]",description:"Part of the Anniversary Song Pack\r\nExpert+ must be unlocked via the Anniversary Campaign\r\nEdit: Fixed notes placed after song is finished",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:198,songName:"Booty Bounce",songSubName:"Tujamo & Taio Cruz",songAuthorName:"Fafurion",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:4060,upvotes:1819,downvotes:45,score:.9266},uploaded:"2019-05-07T03:38:08Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d106db545bccd0bba2432b71d94bb7f94fd1f9a2",key:"4b20",state:"Published",createdAt:"2019-05-07T03:38:08Z",sageScore:7,diffs:[{njs:13,offset:0,notes:366,bombs:0,obstacles:0,nps:1.881,length:415,characteristic:"Standard",difficulty:"Easy",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.531,paritySummary:{errors:6,warns:0,resets:0}},{njs:13,offset:0,notes:550,bombs:0,obstacles:0,nps:2.824,length:415.5,characteristic:"Standard",difficulty:"Normal",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.766,paritySummary:{errors:6,warns:0,resets:0}},{njs:13,offset:0,notes:732,bombs:0,obstacles:0,nps:3.756,length:415.75,characteristic:"Standard",difficulty:"Hard",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.883,paritySummary:{errors:20,warns:16,resets:0}},{njs:15,offset:0,notes:874,bombs:0,obstacles:0,nps:4.485,length:415.75,characteristic:"Standard",difficulty:"Expert",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.883,paritySummary:{errors:28,warns:34,resets:0}},{njs:15,offset:0,notes:938,bombs:0,obstacles:0,nps:4.813,length:415.75,characteristic:"Standard",difficulty:"ExpertPlus",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.883,paritySummary:{errors:32,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d106db545bccd0bba2432b71d94bb7f94fd1f9a2.zip",coverURL:"https://cdn.beatsaver.com/d106db545bccd0bba2432b71d94bb7f94fd1f9a2.jpg",previewURL:"https://cdn.beatsaver.com/d106db545bccd0bba2432b71d94bb7f94fd1f9a2.mp3"}],createdAt:"2019-05-07T03:38:08Z",updatedAt:"2019-05-07T03:38:08Z",lastPublishedAt:"2019-05-07T03:38:08Z"},{id:"672f",name:"Kyouran Hey Kids!! [TV Size] - THE ORAL CIGARETTES (Noragami Aragoto Opening)",description:"Added a more comfortable diff which is more similar to my usual mapping style. If you don't like Ex+, play 'Shinki' for more comfort :) Also included a Hard diff for new players to enjoy this amazing song!\n\nPreview(Shinki) by Monteblanco: https://www.youtube.com/watch?v=9g9k1PomJGc\n\nHard: 369 Notes\nExpert+: 582 Notes\nShinki: 484 Notes\nLighting: 2243 Events",uploader:{id:4285130,name:"zoinkai__",uniqueSet:!0,hash:"5d465581f9bbae00060f3215",avatar:"https://cdn.beatsaver.com/avatar/146677763347185665.png",type:"DISCORD"},metadata:{bpm:142,duration:91,songName:"Kyouran Hey Kids!! (TV Size)",songSubName:"Noragami Aragoto Opening (V2)",songAuthorName:"THE ORAL CIGARETTES",levelAuthorName:"Zoinkai"},stats:{plays:0,downloads:3439,upvotes:1294,downvotes:24,score:.9264},uploaded:"2019-10-01T14:49:19.005Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ad82ca6317e82318db8281f8902952f9d6175d3e",key:"672f",state:"Published",createdAt:"2019-10-01T14:49:19.005Z",sageScore:6,diffs:[{njs:12,offset:0,notes:369,bombs:0,obstacles:21,nps:4.456,length:196,characteristic:"Standard",difficulty:"Hard",events:2243,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:82.817,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:582,bombs:7,obstacles:33,nps:6.622,length:208,characteristic:"Standard",difficulty:"Expert",events:2243,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.887,paritySummary:{errors:6,warns:10,resets:1}},{njs:18,offset:0,notes:484,bombs:13,obstacles:34,nps:5.507,length:208,characteristic:"Standard",difficulty:"ExpertPlus",events:2243,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.887,paritySummary:{errors:5,warns:13,resets:2}}],downloadURL:"https://cdn.beatsaver.com/ad82ca6317e82318db8281f8902952f9d6175d3e.zip",coverURL:"https://cdn.beatsaver.com/ad82ca6317e82318db8281f8902952f9d6175d3e.jpg",previewURL:"https://cdn.beatsaver.com/ad82ca6317e82318db8281f8902952f9d6175d3e.mp3"}],createdAt:"2019-10-01T14:49:19.005Z",updatedAt:"2019-10-01T14:49:19.005Z",lastPublishedAt:"2019-10-01T14:49:19.005Z"},{id:"5d26",name:"[Anniversary] Dancin (Krono Remix) - Aaron Smith [Skyler Wallace & Rexxz]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:198,songName:"Dancin",songSubName:"Krono Remix",songAuthorName:"Aaron Smith",levelAuthorName:"Skyler Wallace & Rexxz"},stats:{plays:0,downloads:7081,upvotes:2783,downvotes:89,score:.9263},uploaded:"2019-08-16T01:48:15.139Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"52cf3774ef1705f2830a85ad3147be9c52c795af",key:"5d26",state:"Published",createdAt:"2019-08-16T01:48:15.139Z",sageScore:7,diffs:[{njs:10,offset:1,notes:232,bombs:0,obstacles:8,nps:1.215,length:382,characteristic:"Standard",difficulty:"Easy",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191,paritySummary:{errors:57,warns:26,resets:0}},{njs:10,offset:1,notes:280,bombs:0,obstacles:0,nps:1.458,length:384,characteristic:"Standard",difficulty:"Normal",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:71,warns:47,resets:0}},{njs:10,offset:1,notes:386,bombs:0,obstacles:4,nps:2.01,length:384,characteristic:"Standard",difficulty:"Hard",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:68,warns:47,resets:0}},{njs:14,offset:0,notes:594,bombs:0,obstacles:0,nps:3.094,length:384,characteristic:"Standard",difficulty:"Expert",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:52,warns:59,resets:0}},{njs:14,offset:0,notes:793,bombs:0,obstacles:30,nps:4.13,length:384,characteristic:"Standard",difficulty:"ExpertPlus",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:81,warns:81,resets:0}}],downloadURL:"https://cdn.beatsaver.com/52cf3774ef1705f2830a85ad3147be9c52c795af.zip",coverURL:"https://cdn.beatsaver.com/52cf3774ef1705f2830a85ad3147be9c52c795af.jpg",previewURL:"https://cdn.beatsaver.com/52cf3774ef1705f2830a85ad3147be9c52c795af.mp3"}],createdAt:"2019-08-16T01:48:15.139Z",updatedAt:"2019-08-16T01:48:15.139Z",lastPublishedAt:"2019-08-16T01:48:15.139Z"},{id:"32e",name:"Daft Punk - Harder Better Faster Stronger",description:"Expert & Hard | 600+ Blocks | Full Song 3:44 | Includes Lighting. Request to: @themakertales",uploader:{id:51740,name:"runrockgame",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f04e",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f04e?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:224,songName:"Harder Better Faster Stronger",songSubName:"Daft Punk",songAuthorName:"RunRockGame",levelAuthorName:"runrockgame"},stats:{plays:0,downloads:14652,upvotes:15728,downvotes:820,score:.9263},uploaded:"2018-06-01T18:01:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7c7f38d467bb43fe11a142581e63e324622ecc71",key:"32e",state:"Published",createdAt:"2018-06-01T18:01:45Z",sageScore:6,diffs:[{njs:10,offset:0,notes:423,bombs:57,obstacles:33,nps:1.381,length:630.5,characteristic:"Standard",difficulty:"Hard",events:1618,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:307.561,paritySummary:{errors:95,warns:38,resets:16}},{njs:10,offset:0,notes:616,bombs:68,obstacles:33,nps:2.011,length:630.5,characteristic:"Standard",difficulty:"Expert",events:1618,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:307.561,paritySummary:{errors:60,warns:83,resets:14}}],downloadURL:"https://cdn.beatsaver.com/7c7f38d467bb43fe11a142581e63e324622ecc71.zip",coverURL:"https://cdn.beatsaver.com/7c7f38d467bb43fe11a142581e63e324622ecc71.jpg",previewURL:"https://cdn.beatsaver.com/7c7f38d467bb43fe11a142581e63e324622ecc71.mp3"}],createdAt:"2018-06-01T18:01:45Z",updatedAt:"2018-06-01T18:01:45Z",lastPublishedAt:"2018-06-01T18:01:45Z"},{id:"636",name:"Burn - Ellie Goulding",description:"Difficulties: Expert, Hard, Normal\r\nCome Hang Out on Twitch! http://www.twitch.tv/bennydabeastlive\r\nYouTube Link: https://youtu.be/KOdvSdrnaeE\r\n\r\nIf you like this, check out my other beat maps:\r\nUptown Funk: https://beatsaver.com/details.php?id=1962\r\nCAN'T STOP THE FEELING by Justin Timberlake: https://beatsaver.com/details.php?id=1587\r\nMidnight City by M83: https://beatsaver.com/details.php?id=542\r\nKids by MGMT: https://beatsaver.com/details.php?id=421\r\nWhat You Know by Two Door Cinema Club: https://beatsaver.com/details.php?id=1107\r\nPolish Girl by Neon Indian: https://beatsaver.com/details.php?id=694",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:174,duration:233,songName:"Burn",songSubName:"Ellie Goulding",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:14492,upvotes:7023,downvotes:311,score:.9262},uploaded:"2018-06-22T20:31:34Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"9d31d3aab3d58ab540df63caed06d62ff1cfefdd",key:"636",state:"Published",createdAt:"2018-06-22T20:31:34Z",sageScore:7,diffs:[{njs:10,offset:0,notes:438,bombs:12,obstacles:8,nps:1.58,length:804,characteristic:"Standard",difficulty:"Easy",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:277.241,paritySummary:{errors:107,warns:62,resets:0}},{njs:10,offset:0,notes:519,bombs:12,obstacles:8,nps:1.872,length:804,characteristic:"Standard",difficulty:"Hard",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:277.241,paritySummary:{errors:67,warns:109,resets:0}},{njs:10,offset:0,notes:686,bombs:12,obstacles:8,nps:3.251,length:612,characteristic:"Standard",difficulty:"Expert",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.034,paritySummary:{errors:120,warns:168,resets:0},stars:2.37}],downloadURL:"https://cdn.beatsaver.com/9d31d3aab3d58ab540df63caed06d62ff1cfefdd.zip",coverURL:"https://cdn.beatsaver.com/9d31d3aab3d58ab540df63caed06d62ff1cfefdd.jpg",previewURL:"https://cdn.beatsaver.com/9d31d3aab3d58ab540df63caed06d62ff1cfefdd.mp3"}],createdAt:"2018-06-22T20:31:34Z",updatedAt:"2018-06-22T20:31:34Z",lastPublishedAt:"2018-06-22T20:31:34Z"},{id:"b662",name:"PREPARING THE KRABBY PATTY",description:"Just a funny little map I made a couple weeks ago. I thought you might enjoy it so I'm releasing it now.\r\nI hope you enjoy.\r\n\r\nThe song is from the SpongeBob episode, Krusty Krab Training Video.\r\nEpisode Info: https://spongebob.fandom.com/wiki/Krusty_Krab_Training_Video",uploader:{id:4284694,name:"jokidum",uniqueSet:!0,hash:"5e15518d47f1600006e912cc",avatar:"https://cdn.beatsaver.com/avatar/494282373094047745.png",type:"DISCORD"},metadata:{bpm:145,duration:37,songName:"PREPARING THE KRABBY PATTY",songSubName:"",songAuthorName:"SpongeBob SquarePants",levelAuthorName:"Jokidum"},stats:{plays:0,downloads:2731,upvotes:1125,downvotes:18,score:.9261},uploaded:"2020-06-26T20:00:17.824Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f931e1d23e0fad3b1ac22d86c55ab17718470b6d",key:"b662",state:"Published",createdAt:"2020-06-26T20:00:17.824Z",sageScore:-2,diffs:[{njs:12,offset:0,notes:165,bombs:0,obstacles:2,nps:5.75,length:69.344,characteristic:"Standard",difficulty:"ExpertPlus",events:628,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:28.694,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f931e1d23e0fad3b1ac22d86c55ab17718470b6d.zip",coverURL:"https://cdn.beatsaver.com/f931e1d23e0fad3b1ac22d86c55ab17718470b6d.jpg",previewURL:"https://cdn.beatsaver.com/f931e1d23e0fad3b1ac22d86c55ab17718470b6d.mp3"}],createdAt:"2020-06-26T20:00:17.824Z",updatedAt:"2020-06-26T20:00:17.824Z",lastPublishedAt:"2020-06-26T20:00:17.824Z"},{id:"6381",name:"Caravan Palace - Moonshine",description:"Easy, Normal, Hard, Expert, ExpertPlus\n\nE+: https://www.youtube.com/watch?v=pQFgyOkFdgM\n\nRequested by laser",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:117,duration:215,songName:"Moonshine",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:3301,upvotes:1700,downvotes:41,score:.9261},uploaded:"2019-09-15T02:18:33.112Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fd8d96de2a21cd4c56c6657214bb88e1b127b471",key:"6381",state:"Published",createdAt:"2019-09-15T02:18:33.112Z",sageScore:8,diffs:[{njs:12,offset:.5,notes:260,bombs:0,obstacles:23,nps:1.24,length:409,characteristic:"Standard",difficulty:"Easy",events:3302,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.744,paritySummary:{errors:96,warns:14,resets:0}},{njs:12,offset:.5,notes:376,bombs:0,obstacles:23,nps:1.793,length:409,characteristic:"Standard",difficulty:"Normal",events:3302,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.744,paritySummary:{errors:38,warns:19,resets:0}},{njs:13,offset:.25,notes:596,bombs:0,obstacles:10,nps:2.856,length:407,characteristic:"Standard",difficulty:"Hard",events:3302,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.718,paritySummary:{errors:7,warns:7,resets:0}},{njs:15,offset:0,notes:691,bombs:0,obstacles:9,nps:3.311,length:407,characteristic:"Standard",difficulty:"Expert",events:3302,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.718,paritySummary:{errors:7,warns:11,resets:0}},{njs:17,offset:-.25,notes:1302,bombs:0,obstacles:8,nps:6.2,length:409.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3299,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210,paritySummary:{errors:3,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fd8d96de2a21cd4c56c6657214bb88e1b127b471.zip",coverURL:"https://cdn.beatsaver.com/fd8d96de2a21cd4c56c6657214bb88e1b127b471.jpg",previewURL:"https://cdn.beatsaver.com/fd8d96de2a21cd4c56c6657214bb88e1b127b471.mp3"}],createdAt:"2019-09-15T02:18:33.112Z",updatedAt:"2019-09-15T02:18:33.112Z",lastPublishedAt:"2019-09-15T02:18:33.112Z"},{id:"8570",name:"Dua Lipa - Physical",description:"Physical - The first difficulty is Hard but is mislabeled as Expert. I have no way to update this sorry! The second difficulty is Expert.",uploader:{id:4285261,name:"yomama",uniqueSet:!0,hash:"5e23f0a1054bbd0007bc1ed4",avatar:"https://cdn.beatsaver.com/avatar/153595294792155137.png",type:"DISCORD"},metadata:{bpm:147,duration:195,songName:"Physical",songSubName:"",songAuthorName:"Dua Lipa",levelAuthorName:"yomama"},stats:{plays:0,downloads:4086,upvotes:1554,downvotes:35,score:.926},uploaded:"2020-02-09T03:16:30.433Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ab7c911471a652de2ba74bd6df2a4cbbc5d45fee",key:"8570",state:"Published",createdAt:"2020-02-09T03:16:30.433Z",sageScore:4,diffs:[{njs:10,offset:0,notes:767,bombs:0,obstacles:33,nps:4.059,length:463,characteristic:"Standard",difficulty:"Hard",events:2281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.98,paritySummary:{errors:105,warns:24,resets:0}},{njs:14,offset:0,notes:841,bombs:0,obstacles:33,nps:4.45,length:463,characteristic:"Standard",difficulty:"Expert",events:1397,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.98,paritySummary:{errors:101,warns:44,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ab7c911471a652de2ba74bd6df2a4cbbc5d45fee.zip",coverURL:"https://cdn.beatsaver.com/ab7c911471a652de2ba74bd6df2a4cbbc5d45fee.jpg",previewURL:"https://cdn.beatsaver.com/ab7c911471a652de2ba74bd6df2a4cbbc5d45fee.mp3"}],createdAt:"2020-02-09T03:16:30.433Z",updatedAt:"2020-02-09T03:16:30.433Z",lastPublishedAt:"2020-02-09T03:16:30.433Z"},{id:"6f60",name:"True Damage - GIANTS",description:"PepeJamJam ",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:155,duration:193,songName:"GIANTS",songSubName:"",songAuthorName:"True Damage",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:7189,upvotes:2503,downvotes:77,score:.926},uploaded:"2019-11-11T08:43:31.658Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7fba5d716708d625428985bbead477321c419240",key:"6f60",state:"Published",createdAt:"2019-11-11T08:43:31.658Z",sageScore:7,diffs:[{njs:10,offset:0,notes:418,bombs:0,obstacles:68,nps:2.279,length:473.72,characteristic:"Standard",difficulty:"Hard",events:1150,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.376,paritySummary:{errors:21,warns:7,resets:0}},{njs:12,offset:0,notes:633,bombs:0,obstacles:54,nps:3.452,length:473.72,characteristic:"Standard",difficulty:"Expert",events:1150,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.376,paritySummary:{errors:12,warns:14,resets:0}},{njs:16,offset:0,notes:863,bombs:0,obstacles:59,nps:4.705,length:473.84,characteristic:"Standard",difficulty:"ExpertPlus",events:1150,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.422,paritySummary:{errors:30,warns:55,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7fba5d716708d625428985bbead477321c419240.zip",coverURL:"https://cdn.beatsaver.com/7fba5d716708d625428985bbead477321c419240.jpg",previewURL:"https://cdn.beatsaver.com/7fba5d716708d625428985bbead477321c419240.mp3"}],createdAt:"2019-11-11T08:43:31.658Z",updatedAt:"2019-11-11T08:43:31.658Z",lastPublishedAt:"2019-11-11T08:43:31.658Z"},{id:"c208",name:"[Alphabeat - Pegboard Nerds Pack] Pegboard Nerds - Disconnected",description:"Part of the Pegboard Nerds Music Pack - Presented by the Alphabeat Mapping Group.\n\nAlphabeat is a mapping group that currently consists of 6 members, 4 of which have made this pack. This Pegboard Nerds pack is brought to you by Timeweaver, Rayman9515, KuritsaDBS & FireStrike!\n\nThis map uses a custom platform made by Rayman! Download it here: https://modelsaber.com/Platforms/?id=1594988870\n\nAll songs included in this pack:\n- Gunslinga (Mapped by Rayman)\n- Coffins (Mapped by Rayman)\n- Superstar (Mapped by Timeweaver & Firestrike)\n- Razor Sharp (Mapped by Firestrike)\n- Luigi’s Mansion (Mapped by Rayman)\n- Try This (Mapped by Timeweaver & Firestrike)\n- Swamp Thing (Mapped by Rayman & KuritsaDVR)\n- Exterminate (Mapped by Timeweaver)\n- Disconnected (Mapped by Timeweaver & Firestrike)\n- Here it Comes (Mapped by KuritsaDVR & Timeweaver)\nGet the playlist here: Coming Soon\n\nCheck everyone out:\nRayman: https://beatsaver.com/uploader/5dc6edac6dea0b0006c18486\nFirestrike: https://beatsaver.com/uploader/5cff0b7498cc5a672c85055a\nKuritsaDBS: https://beatsaver.com/uploader/5cff0b7698cc5a672c8537ef\n\nIncludes\n- 5 Standard Difficulties\n- 1 One Saber Difficulty",uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:128,duration:212,songName:"Disconnected",songSubName:"",songAuthorName:"Pegboard Nerds",levelAuthorName:"FireStrike & Timeweaver"},stats:{plays:0,downloads:4098,upvotes:1198,downvotes:21,score:.9259},uploaded:"2020-07-17T13:00:44.293Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"423bd0a80440bcc9dda9dbe20a72ed235dfc3e84",key:"c208",state:"Published",createdAt:"2020-07-17T13:00:44.293Z",sageScore:7,diffs:[{njs:9,offset:0,notes:274,bombs:0,obstacles:43,nps:1.319,length:443,characteristic:"Standard",difficulty:"Easy",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.656,paritySummary:{errors:82,warns:16,resets:0}},{njs:10,offset:1,notes:374,bombs:0,obstacles:58,nps:1.799,length:443.5,characteristic:"Standard",difficulty:"Normal",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:62,warns:42,resets:0}},{njs:12,offset:.5,notes:567,bombs:0,obstacles:60,nps:2.727,length:443.5,characteristic:"Standard",difficulty:"Hard",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:31,warns:22,resets:0}},{njs:15,offset:0,notes:777,bombs:0,obstacles:73,nps:3.738,length:443.5,characteristic:"Standard",difficulty:"Expert",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:2,warns:0,resets:0}},{njs:17,offset:-.25,notes:957,bombs:114,obstacles:56,nps:4.603,length:443.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:0,warns:2,resets:0}},{njs:15,offset:0,notes:611,bombs:0,obstacles:85,nps:2.939,length:443.5,characteristic:"OneSaber",difficulty:"Expert",events:4548,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:0,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/423bd0a80440bcc9dda9dbe20a72ed235dfc3e84.zip",coverURL:"https://cdn.beatsaver.com/423bd0a80440bcc9dda9dbe20a72ed235dfc3e84.jpg",previewURL:"https://cdn.beatsaver.com/423bd0a80440bcc9dda9dbe20a72ed235dfc3e84.mp3"}],createdAt:"2020-07-17T13:00:44.293Z",updatedAt:"2020-07-17T13:00:44.293Z",lastPublishedAt:"2020-07-17T13:00:44.293Z"},{id:"1fed",name:"Change The World - Fox Blanco - 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:179,songName:"Change The World",songSubName:"Fox Blanco",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:4075,upvotes:1249,downvotes:23,score:.9259},uploaded:"2018-11-12T17:42:26Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fcc70ede2fcbd648a25a954e6928a14985f1fbe8",key:"1fed",state:"Published",createdAt:"2018-11-12T17:42:26Z",sageScore:5,diffs:[{njs:10,offset:0,notes:245,bombs:0,obstacles:18,nps:1.4,length:367.5,characteristic:"Standard",difficulty:"Easy",events:889,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175,paritySummary:{errors:25,warns:4,resets:0}},{njs:10,offset:0,notes:321,bombs:0,obstacles:19,nps:1.834,length:367.5,characteristic:"Standard",difficulty:"Normal",events:889,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175,paritySummary:{errors:35,warns:6,resets:0}},{njs:10,offset:0,notes:443,bombs:0,obstacles:19,nps:2.531,length:367.5,characteristic:"Standard",difficulty:"Hard",events:889,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175,paritySummary:{errors:26,warns:9,resets:0}},{njs:12,offset:0,notes:531,bombs:0,obstacles:19,nps:3.034,length:367.5,characteristic:"Standard",difficulty:"Expert",events:889,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175,paritySummary:{errors:40,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fcc70ede2fcbd648a25a954e6928a14985f1fbe8.zip",coverURL:"https://cdn.beatsaver.com/fcc70ede2fcbd648a25a954e6928a14985f1fbe8.jpg",previewURL:"https://cdn.beatsaver.com/fcc70ede2fcbd648a25a954e6928a14985f1fbe8.mp3"}],createdAt:"2018-11-12T17:42:26Z",updatedAt:"2018-11-12T17:42:26Z",lastPublishedAt:"2018-11-12T17:42:26Z"},{id:"3023",name:"Houdini - Foster The People",description:"Expert Playthrough : https://youtu.be/6Fk164IwVyU",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:110,duration:204,songName:"Houdini",songSubName:"Foster The People",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:3836,upvotes:1087,downvotes:17,score:.9258},uploaded:"2019-01-22T19:02:49Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c50641c7f73470e5368ab6957bedca3b2e620edc",key:"3023",state:"Published",createdAt:"2019-01-22T19:02:49Z",sageScore:6,diffs:[{njs:10,offset:0,notes:367,bombs:0,obstacles:27,nps:1.838,length:366,characteristic:"Standard",difficulty:"Normal",events:1163,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.636,paritySummary:{errors:30,warns:20,resets:0}},{njs:11,offset:0,notes:522,bombs:0,obstacles:27,nps:2.615,length:366,characteristic:"Standard",difficulty:"Hard",events:1163,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.636,paritySummary:{errors:38,warns:29,resets:0}},{njs:12,offset:0,notes:829,bombs:0,obstacles:27,nps:4.153,length:366,characteristic:"Standard",difficulty:"Expert",events:1163,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.636,paritySummary:{errors:41,warns:33,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c50641c7f73470e5368ab6957bedca3b2e620edc.zip",coverURL:"https://cdn.beatsaver.com/c50641c7f73470e5368ab6957bedca3b2e620edc.jpg",previewURL:"https://cdn.beatsaver.com/c50641c7f73470e5368ab6957bedca3b2e620edc.mp3"}],createdAt:"2019-01-22T19:02:49Z",updatedAt:"2019-01-22T19:02:49Z",lastPublishedAt:"2019-01-22T19:02:49Z"},{id:"849c",name:"Nightcore - Sweet but Psycho",description:"Youtube Preview: https://youtu.be/7u9Z8z-25ro",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:148,duration:167,songName:"Nightcore - Sweet but Psycho",songSubName:"",songAuthorName:"Syrex",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:2955,upvotes:1088,downvotes:17,score:.9258},uploaded:"2020-02-06T05:37:47.858Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"908f95d354d9a3861f94055772983d54cd12bdcd",key:"849c",state:"Published",createdAt:"2020-02-06T05:37:47.858Z",sageScore:2,diffs:[{njs:18,offset:0,notes:672,bombs:0,obstacles:0,nps:4.134,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:778,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.162,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/908f95d354d9a3861f94055772983d54cd12bdcd.zip",coverURL:"https://cdn.beatsaver.com/908f95d354d9a3861f94055772983d54cd12bdcd.jpg",previewURL:"https://cdn.beatsaver.com/908f95d354d9a3861f94055772983d54cd12bdcd.mp3"}],createdAt:"2020-02-06T05:37:47.858Z",updatedAt:"2020-02-06T05:37:47.858Z",lastPublishedAt:"2020-02-06T05:37:47.858Z"},{id:"6cc2",name:"Tones And I - Dance Monkey",description:"Dance. :3",uploader:{id:4289959,name:"pinus-sp",uniqueSet:!0,hash:"5d9cd7b2e6a67600062ab0a9",avatar:"https://cdn.beatsaver.com/avatar/188777396441186304.png",type:"DISCORD"},metadata:{bpm:196,duration:211,songName:"Dance Monkey",songSubName:"",songAuthorName:"Tones and I",levelAuthorName:"Pinus Sp"},stats:{plays:0,downloads:7505,upvotes:5655,downvotes:239,score:.9258},uploaded:"2019-10-28T20:20:40.691Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"46bbda664ab28c94639d8991d924726c0803b023",key:"6cc2",state:"Published",createdAt:"2019-10-28T20:20:40.691Z",sageScore:5,diffs:[{njs:12,offset:0,notes:256,bombs:0,obstacles:76,nps:1.253,length:667.25,characteristic:"Standard",difficulty:"Normal",events:1140,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.26,paritySummary:{errors:133,warns:0,resets:0}},{njs:12,offset:0,notes:462,bombs:0,obstacles:88,nps:2.262,length:667.25,characteristic:"Standard",difficulty:"Hard",events:1140,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.26,paritySummary:{errors:265,warns:3,resets:0}},{njs:12,offset:0,notes:826,bombs:0,obstacles:88,nps:4.044,length:667.25,characteristic:"Standard",difficulty:"Expert",events:1140,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.26,paritySummary:{errors:132,warns:93,resets:0}}],downloadURL:"https://cdn.beatsaver.com/46bbda664ab28c94639d8991d924726c0803b023.zip",coverURL:"https://cdn.beatsaver.com/46bbda664ab28c94639d8991d924726c0803b023.jpg",previewURL:"https://cdn.beatsaver.com/46bbda664ab28c94639d8991d924726c0803b023.mp3"}],createdAt:"2019-10-28T20:20:40.691Z",updatedAt:"2019-10-28T20:20:40.691Z",lastPublishedAt:"2019-10-28T20:20:40.691Z"},{id:"5dbb",name:"Siames - The Wolf",description:"Video Preview: https://youtu.be/I68zZeXioyc\n\nDifficulty: Expert\nBPM: 96.1\nNotes: 632\nNJS: 12\nNPS: 3.32\nSong Duration: 3:10",uploader:{id:34679,name:"lukemortora",uniqueSet:!0,hash:"5cff0b7798cc5a672c855c16",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855c16?d=retro",type:"SIMPLE"},metadata:{bpm:96.1,duration:190,songName:"The Wolf",songSubName:"",songAuthorName:"Siames",levelAuthorName:"LukeMortora"},stats:{plays:0,downloads:1765,upvotes:1108,downvotes:18,score:.9257},uploaded:"2019-08-18T13:54:38.297Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"88ef5d6f1ce10e3cc85637b095cd46ee68f125ac",key:"5dbb",state:"Published",createdAt:"2019-08-18T13:54:38.297Z",sageScore:6,diffs:[{njs:13,offset:0,notes:632,bombs:60,obstacles:19,nps:3.467,length:292,characteristic:"Standard",difficulty:"Expert",events:1152,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.31,paritySummary:{errors:51,warns:53,resets:22}}],downloadURL:"https://cdn.beatsaver.com/88ef5d6f1ce10e3cc85637b095cd46ee68f125ac.zip",coverURL:"https://cdn.beatsaver.com/88ef5d6f1ce10e3cc85637b095cd46ee68f125ac.jpg",previewURL:"https://cdn.beatsaver.com/88ef5d6f1ce10e3cc85637b095cd46ee68f125ac.mp3"}],createdAt:"2019-08-18T13:54:38.297Z",updatedAt:"2019-08-18T13:54:38.297Z",lastPublishedAt:"2019-08-18T13:54:38.297Z"},{id:"8e98",name:"2WEI feat. Edda Hayes - Warriors",description:"Bit late on this one to be honest.\nOfficial Imagine Dragons cover from League of Legends season 2020 cinematic.\n\nvideo: https://youtu.be/Wl-GfMwC3i8\n\nEasy: Notes: 159 NPS: 0.91 NJS: 12\nNormal: Notes: 221 NPS: 1.26 NJS: 12\nHard: Notes: 288 NPS: 1.64 NJS: 15\nExpert: Notes: 373 NPS: 1.98 NJS: 17\nExpert+: Notes: 442 NPS: 2.35 NJS: 19\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:204,songName:"Warriors",songSubName:"(feat. Edda Hayes)",songAuthorName:"2WEI, League of Legends",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:10351,upvotes:2900,downvotes:97,score:.9256},uploaded:"2020-03-09T01:22:45.508Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3a49f1b40044ba90eb27963c29121537cec28a44",key:"8e98",state:"Published",createdAt:"2020-03-09T01:22:45.508Z",sageScore:8,diffs:[{njs:12,offset:1,notes:159,bombs:0,obstacles:21,nps:.91,length:358.292,characteristic:"Standard",difficulty:"Easy",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.777,paritySummary:{errors:13,warns:2,resets:0}},{njs:14,offset:.5,notes:221,bombs:0,obstacles:35,nps:1.259,length:359.904,characteristic:"Standard",difficulty:"Normal",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.563,paritySummary:{errors:9,warns:4,resets:0}},{njs:15,offset:0,notes:288,bombs:0,obstacles:54,nps:1.64,length:359.904,characteristic:"Standard",difficulty:"Hard",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.563,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.25,notes:373,bombs:0,obstacles:34,nps:1.98,length:386.268,characteristic:"Standard",difficulty:"Expert",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.424,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.5,notes:442,bombs:0,obstacles:178,nps:2.346,length:386.268,characteristic:"Standard",difficulty:"ExpertPlus",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.424,paritySummary:{errors:1,warns:0,resets:0}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3a49f1b40044ba90eb27963c29121537cec28a44.zip",coverURL:"https://cdn.beatsaver.com/3a49f1b40044ba90eb27963c29121537cec28a44.jpg",previewURL:"https://cdn.beatsaver.com/3a49f1b40044ba90eb27963c29121537cec28a44.mp3"}],createdAt:"2020-03-09T01:22:45.508Z",updatedAt:"2020-03-09T01:22:45.508Z",lastPublishedAt:"2020-03-09T01:22:45.508Z"},{id:"4fc3",name:"Doubt - twenty one pilots",description:"Nice relaxing and laid-back experience, even on Expert/Expert+. In-game voting is fixed too, so don't forget to update your mods!\r\n\r\nBPM: 123\r\n\r\nNotes: N - 409 ; H - 487 ; Ex - 668 ; Ex+ - 720\r\nWalls: N - 68 ; H - 42 ; Ex - 41 ; Ex+ - 40\r\nBombs: None!\r\n\r\nThanks to helencarnate and Qwasyx for playtesting!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:123,duration:191,songName:"Doubt",songSubName:"twenty one pilots",songAuthorName:"fruhead",levelAuthorName:"fruhead"},stats:{plays:0,downloads:6089,upvotes:1160,downvotes:20,score:.9256},uploaded:"2019-05-29T18:36:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bf166123a88a801f41aed10cff6c36f9f11f4cf3",key:"4fc3",state:"Published",createdAt:"2019-05-29T18:36:45Z",sageScore:4,diffs:[{njs:12,offset:0,notes:409,bombs:0,obstacles:68,nps:2.285,length:367,characteristic:"Standard",difficulty:"Normal",events:5750,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.024,paritySummary:{errors:13,warns:4,resets:0}},{njs:12,offset:0,notes:487,bombs:0,obstacles:42,nps:2.72,length:367,characteristic:"Standard",difficulty:"Hard",events:5750,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.024,paritySummary:{errors:11,warns:12,resets:0}},{njs:14,offset:0,notes:668,bombs:0,obstacles:41,nps:3.731,length:367,characteristic:"Standard",difficulty:"Expert",events:5750,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.024,paritySummary:{errors:20,warns:19,resets:0}},{njs:16,offset:0,notes:720,bombs:0,obstacles:41,nps:4.022,length:367,characteristic:"Standard",difficulty:"ExpertPlus",events:5750,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.024,paritySummary:{errors:18,warns:18,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bf166123a88a801f41aed10cff6c36f9f11f4cf3.zip",coverURL:"https://cdn.beatsaver.com/bf166123a88a801f41aed10cff6c36f9f11f4cf3.jpg",previewURL:"https://cdn.beatsaver.com/bf166123a88a801f41aed10cff6c36f9f11f4cf3.mp3"}],createdAt:"2019-05-29T18:36:45Z",updatedAt:"2019-05-29T18:36:45Z",lastPublishedAt:"2019-05-29T18:36:45Z"},{id:"1362d",name:"Ghost Choir - Louie Zong (modchart)",description:"This is a relaxing modchart and a technical proof of concept. If you haven't played my modchart Dondante yet, please check it out: https://beatsaver.com/beatmap/123b5\r\n\r\nThe map requires the mods Noodle Extensions and Chroma. If Noodle Extensions is not available yet on ModAssistant, you can get the latest release at https://github.com/Aeroluna/NoodleExtensions/releases/tag/v1.3.5\r\n\r\nTips for a better experience:\r\n- Disable static lights; there are no lights anyway\r\n- Hide the HUD\r\n- Turn the SFX volume down (0 or low value like 0.2)\r\n- Enable bloom post-processing\r\n\r\nPreview: https://youtu.be/XC7RY9C_EHs\r\n\r\nI adapted this from Louie Zong's original animation: https://youtu.be/kXF3VYYa5TI\r\n\r\n",uploader:{id:4288814,name:"nyri0",uniqueSet:!0,hash:"5e792df416c9680006086a78",avatar:"https://cdn.beatsaver.com/avatar/396715033125584907.png",type:"DISCORD"},metadata:{bpm:67,duration:90,songName:"Ghost Choir",songSubName:"",songAuthorName:"Louie Zong",levelAuthorName:"nyri0"},stats:{plays:0,downloads:1938,upvotes:663,downvotes:3,score:.9255},uploaded:"2021-01-30T12:31:29.825Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1d373506c0b2b82867411f18696a1ad53d4ea01d",key:"1362d",state:"Published",createdAt:"2021-01-30T12:31:29.825Z",sageScore:2,diffs:[{njs:14,offset:0,notes:138,bombs:0,obstacles:1460,nps:1.684,length:91.5,characteristic:"Standard",difficulty:"Hard",events:5,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:81.94,paritySummary:{errors:4,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1d373506c0b2b82867411f18696a1ad53d4ea01d.zip",coverURL:"https://cdn.beatsaver.com/1d373506c0b2b82867411f18696a1ad53d4ea01d.jpg",previewURL:"https://cdn.beatsaver.com/1d373506c0b2b82867411f18696a1ad53d4ea01d.mp3"}],createdAt:"2021-01-30T12:31:29.825Z",updatedAt:"2021-01-30T12:31:29.825Z",lastPublishedAt:"2021-01-30T12:31:29.825Z"},{id:"f91e",name:"Who's Laughing Now - Ava Max",description:"Surprise, it's a slow pop song and it doesn't have sliders!\nGoing back to my roots with this one just because I love the song and I wanted to rank a pop song in quite a while anyways.\n\nThank you for the mod Trolav!\n\nAs always, I'm open to feedback on discord @Teuflum#5982.",uploader:{id:68740,name:"Teuflum",uniqueSet:!0,hash:"5cff0b7498cc5a672c851a6b",avatar:"https://cdn.beatsaver.com/avatar/114706869460664326.png",type:"DISCORD"},metadata:{bpm:92,duration:181,songName:"Who's Laughing Now",songSubName:"",songAuthorName:"Ava Max",levelAuthorName:"Teuflum"},stats:{plays:0,downloads:11683,upvotes:1652,downvotes:40,score:.9255},uploaded:"2020-10-04T11:45:39.424Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"559113d5c4247438c6ecad852c61d03d79396af1",key:"f91e",state:"Published",createdAt:"2020-10-04T11:45:39.424Z",sageScore:7,diffs:[{njs:12,offset:0,notes:286,bombs:19,obstacles:139,nps:1.636,length:268,characteristic:"Standard",difficulty:"Easy",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:3,warns:0,resets:1},stars:.96},{njs:13,offset:-.25,notes:344,bombs:19,obstacles:139,nps:1.968,length:268,characteristic:"Standard",difficulty:"Normal",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:0,warns:0,resets:2},stars:1.32},{njs:14,offset:.5,notes:545,bombs:20,obstacles:126,nps:3.118,length:268,characteristic:"Standard",difficulty:"Hard",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:0,warns:0,resets:2},stars:1.96},{njs:15,offset:.25,notes:703,bombs:20,obstacles:93,nps:4.022,length:268,characteristic:"Standard",difficulty:"Expert",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:0,warns:0,resets:0},stars:2.83},{njs:17,offset:.1,notes:727,bombs:20,obstacles:93,nps:4.159,length:268,characteristic:"Standard",difficulty:"ExpertPlus",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:0,warns:0,resets:0},stars:4.02}],downloadURL:"https://cdn.beatsaver.com/559113d5c4247438c6ecad852c61d03d79396af1.zip",coverURL:"https://cdn.beatsaver.com/559113d5c4247438c6ecad852c61d03d79396af1.jpg",previewURL:"https://cdn.beatsaver.com/559113d5c4247438c6ecad852c61d03d79396af1.mp3"}],createdAt:"2020-10-04T11:45:39.424Z",updatedAt:"2021-09-20T15:00:35.623946Z",lastPublishedAt:"2020-10-04T11:45:39.424Z"},{id:"4fba",name:"Mirror Mirror [One Saber] (RWBY: Volume 1 Soundtrack) - Jeff Williams ft. Casey Lee Williams",description:"My first one saber map! Can't believe it took me 250 maps before I started making even 1 one saber map. Trying out one saber mapping with the first RWBY song that I mapped. No promises, but I might do more one saber RWBY maps if this takes off. Map comes with custom Atlas Blue and Snow White colors",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:146,duration:175,songName:"Mirror Mirror (One Saber)",songSubName:"Jeff Williams ft. Casey Lee Williams",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3363,upvotes:760,downvotes:6,score:.9255},uploaded:"2019-05-29T13:04:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4cb8bba2e14169819d61a4ccb69adba7b59d7f7a",key:"4fba",state:"Published",createdAt:"2019-05-29T13:04:18Z",sageScore:5,diffs:[{njs:12,offset:0,notes:352,bombs:0,obstacles:8,nps:2.185,length:391.993,characteristic:"OneSaber",difficulty:"Expert",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:161.093,paritySummary:{errors:15,warns:22,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4cb8bba2e14169819d61a4ccb69adba7b59d7f7a.zip",coverURL:"https://cdn.beatsaver.com/4cb8bba2e14169819d61a4ccb69adba7b59d7f7a.jpg",previewURL:"https://cdn.beatsaver.com/4cb8bba2e14169819d61a4ccb69adba7b59d7f7a.mp3"}],createdAt:"2019-05-29T13:04:18Z",updatedAt:"2019-05-29T13:04:18Z",lastPublishedAt:"2019-05-29T13:04:18Z"},{id:"447a",name:"AIAIAI",description:"Twitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:128,duration:192,songName:"AIAIAI (feat. Yasutaka Nakata)",songSubName:"Kizuna AI",songAuthorName:"Dack",levelAuthorName:"Dack"},stats:{plays:0,downloads:1261,upvotes:1434,downvotes:31,score:.9255},uploaded:"2019-04-09T11:00:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"174dbef7bfdd791378582d4e7b46f9d652ba44d8",key:"447a",state:"Published",createdAt:"2019-04-09T11:00:10Z",sageScore:4,diffs:[{njs:14,offset:0,notes:466,bombs:8,obstacles:15,nps:2.556,length:389,characteristic:"Standard",difficulty:"Expert",events:715,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.344,paritySummary:{errors:35,warns:29,resets:1}}],downloadURL:"https://cdn.beatsaver.com/174dbef7bfdd791378582d4e7b46f9d652ba44d8.zip",coverURL:"https://cdn.beatsaver.com/174dbef7bfdd791378582d4e7b46f9d652ba44d8.jpg",previewURL:"https://cdn.beatsaver.com/174dbef7bfdd791378582d4e7b46f9d652ba44d8.mp3"}],createdAt:"2019-04-09T11:00:10Z",updatedAt:"2019-04-09T11:00:10Z",lastPublishedAt:"2019-04-09T11:00:10Z"},{id:"d35a",name:"[FUTURE FUNK PACK] Windy Summer (Night Tempo 100% Pure Remastered)",description:"FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\nThese first two songs are originally sung by Anri, one of my favorite City Pop artist. \n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:120,duration:190,songName:"Windy Summer",songSubName:"(Night Tempo 100% Pure Remastered)",songAuthorName:"Anri",levelAuthorName:"ETAN"},stats:{plays:0,downloads:4185,upvotes:753,downvotes:6,score:.9253},uploaded:"2020-08-10T17:48:34.173Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"dc259cc74cc52a6103c0c3f44b04549e9f555425",key:"d35a",state:"Published",createdAt:"2020-08-10T17:48:34.173Z",sageScore:6,diffs:[{njs:10,offset:1,notes:177,bombs:0,obstacles:30,nps:.982,length:360.5,characteristic:"Standard",difficulty:"Easy",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.25,paritySummary:{errors:25,warns:8,resets:0}},{njs:11,offset:1,notes:302,bombs:0,obstacles:29,nps:1.675,length:360.5,characteristic:"Standard",difficulty:"Normal",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.25,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:.5,notes:422,bombs:0,obstacles:29,nps:2.335,length:361.5,characteristic:"Standard",difficulty:"Hard",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.75,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:668,bombs:0,obstacles:27,nps:3.696,length:361.5,characteristic:"Standard",difficulty:"Expert",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.75,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.5,notes:877,bombs:0,obstacles:28,nps:4.852,length:361.5,characteristic:"Standard",difficulty:"ExpertPlus",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.75,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/dc259cc74cc52a6103c0c3f44b04549e9f555425.zip",coverURL:"https://cdn.beatsaver.com/dc259cc74cc52a6103c0c3f44b04549e9f555425.jpg",previewURL:"https://cdn.beatsaver.com/dc259cc74cc52a6103c0c3f44b04549e9f555425.mp3"}],createdAt:"2020-08-10T17:48:34.173Z",updatedAt:"2020-08-10T17:48:34.173Z",lastPublishedAt:"2020-08-10T17:48:34.173Z"},{id:"3969",name:"Lukas Graham - 7 Years",description:"Trying out something new here and seeing how well a slower song performs in beat saber. I decided not to map an easy for this one due to the songs length and naturally slow pacing. I'm interested to know what you think though. Do you think slow songs are good for beat saber? Should I do more? etc...\r\n\r\nTime spent mapping: 13:52\r\nVideo Preview: https://www.youtube.com/watch?v=2JB4fn1npwQ",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:235,songName:"7 Years",songSubName:"Lukas Graham",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:4425,upvotes:2415,downvotes:75,score:.9253},uploaded:"2019-02-24T17:19:02Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"11621a2effc185bf6ae4c7526c9db8cf435fd9b2",key:"3969",state:"Published",createdAt:"2019-02-24T17:19:02Z",sageScore:5,diffs:[{njs:10,offset:0,notes:374,bombs:0,obstacles:36,nps:1.645,length:454.75,characteristic:"Standard",difficulty:"Normal",events:1566,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:227.375,paritySummary:{errors:30,warns:19,resets:0}},{njs:11,offset:0,notes:626,bombs:0,obstacles:23,nps:2.753,length:454.75,characteristic:"Standard",difficulty:"Hard",events:1566,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:227.375,paritySummary:{errors:41,warns:49,resets:0}},{njs:14,offset:0,notes:756,bombs:0,obstacles:23,nps:3.325,length:454.75,characteristic:"Standard",difficulty:"Expert",events:1566,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:227.375,paritySummary:{errors:42,warns:55,resets:0}}],downloadURL:"https://cdn.beatsaver.com/11621a2effc185bf6ae4c7526c9db8cf435fd9b2.zip",coverURL:"https://cdn.beatsaver.com/11621a2effc185bf6ae4c7526c9db8cf435fd9b2.jpg",previewURL:"https://cdn.beatsaver.com/11621a2effc185bf6ae4c7526c9db8cf435fd9b2.mp3"}],createdAt:"2019-02-24T17:19:02Z",updatedAt:"2019-02-24T17:19:02Z",lastPublishedAt:"2019-02-24T17:19:02Z"},{id:"157",name:"Seagulls!(Stop it Now)",description:"Normal/Hard/Expert (though overall they should all be fairly easy) Thought this would be a fun, lighthearted song to do. Song by Bad Lip Reading. (as sung by Yoda Luke and R2...kind of)",uploader:{id:53109,name:"paynter3d",uniqueSet:!0,hash:"5cff0b7298cc5a672c84eb80",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84eb80?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:192,songName:"Seagulls!",songSubName:"(Stop It Now)",songAuthorName:"Bad Lip Reading",levelAuthorName:"paynter3d"},stats:{plays:0,downloads:2917,upvotes:1985,downvotes:55,score:.9253},uploaded:"2018-05-20T20:57:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"055e8f8f8fabefcf12bbb6c50e2f78d666d619bf",key:"157",state:"Published",createdAt:"2018-05-20T20:57:46Z",sageScore:3,diffs:[{njs:10,offset:0,notes:383,bombs:0,obstacles:37,nps:2.037,length:376,characteristic:"Standard",difficulty:"Normal",events:622,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188,paritySummary:{errors:95,warns:61,resets:0}},{njs:10,offset:0,notes:460,bombs:0,obstacles:37,nps:2.447,length:376,characteristic:"Standard",difficulty:"Hard",events:622,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188,paritySummary:{errors:116,warns:58,resets:0}},{njs:10,offset:0,notes:628,bombs:64,obstacles:37,nps:3.34,length:376,characteristic:"Standard",difficulty:"Expert",events:626,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188,paritySummary:{errors:86,warns:105,resets:0}}],downloadURL:"https://cdn.beatsaver.com/055e8f8f8fabefcf12bbb6c50e2f78d666d619bf.zip",coverURL:"https://cdn.beatsaver.com/055e8f8f8fabefcf12bbb6c50e2f78d666d619bf.jpg",previewURL:"https://cdn.beatsaver.com/055e8f8f8fabefcf12bbb6c50e2f78d666d619bf.mp3"}],createdAt:"2018-05-20T20:57:46Z",updatedAt:"2018-05-20T20:57:46Z",lastPublishedAt:"2018-05-20T20:57:46Z"},{id:"1a0b9",name:"[Electro Swing Pack] Caravan Palace - Lone Digger",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/DF_ZrKY3LfY\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:124,duration:171,songName:"Lone Digger",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:19552,upvotes:1165,downvotes:21,score:.925},uploaded:"2021-07-08T15:25:28.524Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f89d7a02f16dbbe3c957fd56e35844ab7f23f532",key:"1a0b9",state:"Published",createdAt:"2021-07-08T15:25:28.524Z",sageScore:5,diffs:[{njs:16,offset:-.25,notes:434,bombs:0,obstacles:0,nps:2.611,length:343.5,characteristic:"Standard",difficulty:"Expert",events:1448,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.21,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:891,bombs:0,obstacles:4,nps:5.299,length:347.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1448,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.145,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f89d7a02f16dbbe3c957fd56e35844ab7f23f532.zip",coverURL:"https://cdn.beatsaver.com/f89d7a02f16dbbe3c957fd56e35844ab7f23f532.jpg",previewURL:"https://cdn.beatsaver.com/f89d7a02f16dbbe3c957fd56e35844ab7f23f532.mp3"}],createdAt:"2021-07-08T15:25:28.524Z",updatedAt:"2021-07-08T15:25:28.524Z",lastPublishedAt:"2021-07-08T15:25:28.524Z"},{id:"5d24",name:"[Anniversary] Face My Fears - Hikaru Utadu & Skrillex [BennyDaBeast]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:212,songName:"Face My Fears",songSubName:"",songAuthorName:"Hikaru Utada & Skrillex",levelAuthorName:"BennyDaBeast"},stats:{plays:0,downloads:4932,upvotes:2031,downvotes:58,score:.925},uploaded:"2019-08-16T01:48:04.848Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"460fcbe6916bd64eb31ff65a03e4d46d4773e31c",key:"5d24",state:"Published",createdAt:"2019-08-16T01:48:04.848Z",sageScore:8,diffs:[{njs:10,offset:0,notes:390,bombs:0,obstacles:0,nps:1.912,length:544,characteristic:"Standard",difficulty:"Easy",events:2297,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:85,warns:29,resets:0}},{njs:10,offset:0,notes:455,bombs:0,obstacles:0,nps:2.23,length:544,characteristic:"Standard",difficulty:"Normal",events:2297,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:80,warns:29,resets:0}},{njs:12,offset:-1,notes:567,bombs:0,obstacles:0,nps:2.779,length:544,characteristic:"Standard",difficulty:"Hard",events:2298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:88,warns:36,resets:0}},{njs:12,offset:-1,notes:776,bombs:0,obstacles:0,nps:3.804,length:544,characteristic:"Standard",difficulty:"Expert",events:2297,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:105,warns:60,resets:0}},{njs:15,offset:.4,notes:921,bombs:0,obstacles:0,nps:4.515,length:544,characteristic:"Standard",difficulty:"ExpertPlus",events:2297,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:102,warns:83,resets:0}}],downloadURL:"https://cdn.beatsaver.com/460fcbe6916bd64eb31ff65a03e4d46d4773e31c.zip",coverURL:"https://cdn.beatsaver.com/460fcbe6916bd64eb31ff65a03e4d46d4773e31c.jpg",previewURL:"https://cdn.beatsaver.com/460fcbe6916bd64eb31ff65a03e4d46d4773e31c.mp3"}],createdAt:"2019-08-16T01:48:04.848Z",updatedAt:"2019-08-16T01:48:04.848Z",lastPublishedAt:"2019-08-16T01:48:04.848Z"},{id:"269f",name:"Amusement Park - Keigo Hoashi [NieR: Automata]",description:"Expert Gameplay: https://www.youtube.com/watch?v=gOeGoxKR7fI&feature=youtu.be\r\nExpert and Expert+ are very similar, though Expert+ is a tad harder.\r\n\r\nSong by Keigo Hoashi as NieR:Automata OST",uploader:{id:4286005,name:"mandynasty",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ffaa",avatar:"https://cdn.beatsaver.com/avatar/307589087030673408.png",type:"DISCORD"},metadata:{bpm:120,duration:266,songName:"Amusement Park",songSubName:"Keigo Hoashi",songAuthorName:"ManDynasty",levelAuthorName:"ManDynasty"},stats:{plays:0,downloads:3394,upvotes:1832,downvotes:49,score:.925},uploaded:"2018-12-18T15:57:22Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"00151f9ef33d55245bb7cfc9756e223b7183ff65",key:"269f",state:"Published",createdAt:"2018-12-18T15:57:22Z",sageScore:2,diffs:[{njs:9,offset:0,notes:396,bombs:0,obstacles:242,nps:1.571,length:504,characteristic:"Standard",difficulty:"Normal",events:1606,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252,paritySummary:{errors:74,warns:23,resets:0}},{njs:10,offset:0,notes:528,bombs:0,obstacles:272,nps:2.095,length:504,characteristic:"Standard",difficulty:"Hard",events:1606,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252,paritySummary:{errors:42,warns:49,resets:0}},{njs:14,offset:0,notes:888,bombs:0,obstacles:102,nps:3.524,length:504,characteristic:"Standard",difficulty:"Expert",events:1606,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252,paritySummary:{errors:86,warns:77,resets:0}},{njs:14,offset:0,notes:931,bombs:0,obstacles:118,nps:3.588,length:519,characteristic:"Standard",difficulty:"ExpertPlus",events:1606,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.5,paritySummary:{errors:69,warns:56,resets:0}}],downloadURL:"https://cdn.beatsaver.com/00151f9ef33d55245bb7cfc9756e223b7183ff65.zip",coverURL:"https://cdn.beatsaver.com/00151f9ef33d55245bb7cfc9756e223b7183ff65.jpg",previewURL:"https://cdn.beatsaver.com/00151f9ef33d55245bb7cfc9756e223b7183ff65.mp3"}],createdAt:"2018-12-18T15:57:22Z",updatedAt:"2018-12-18T15:57:22Z",lastPublishedAt:"2018-12-18T15:57:22Z"},{id:"6ace",name:"Flower Dance - DJ Okawari",description:"There it is!!!! Hope you all enjoy this <3 \nCollabed with kuritsadbs on this map as he worked on the lights and he did amazing job on them! \nI might make 1 saber mode later on if i see that many liked this one :D\nCheck the map here: https://www.youtube.com/watch?v=vTPssZ0rKyI&feature=youtu.be",uploader:{id:1708,name:"layanmeta",uniqueSet:!0,hash:"5cff0b7698cc5a672c8539a1",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8539a1?d=retro",type:"SIMPLE"},metadata:{bpm:200,duration:238,songName:" Flower Dance",songSubName:"",songAuthorName:"DJ Okawari",levelAuthorName:"Layanmeta w/ KuritsaDBS"},stats:{plays:0,downloads:2467,upvotes:1257,downvotes:25,score:.9248},uploaded:"2019-10-19T17:05:33.835Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5d4b7dfbc7370400f54f02b76568bacd8497b3e9",key:"6ace",state:"Published",createdAt:"2019-10-19T17:05:33.835Z",sageScore:8,diffs:[{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:2030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:.4,notes:1225,bombs:0,obstacles:70,nps:5.206,length:784.375,characteristic:"Standard",difficulty:"ExpertPlus",events:2030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:235.313,paritySummary:{errors:12,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5d4b7dfbc7370400f54f02b76568bacd8497b3e9.zip",coverURL:"https://cdn.beatsaver.com/5d4b7dfbc7370400f54f02b76568bacd8497b3e9.jpg",previewURL:"https://cdn.beatsaver.com/5d4b7dfbc7370400f54f02b76568bacd8497b3e9.mp3"}],createdAt:"2019-10-19T17:05:33.835Z",updatedAt:"2019-10-19T17:05:33.835Z",lastPublishedAt:"2019-10-19T17:05:33.835Z"},{id:"e7cd",name:"[NoodleGames Vol.2] Last Surprise - Persona 5",description:"The Ramen Noodle group is back again to bring you a map pack full of our favorite video game soundtracks and game-inspired music!\n\nHere's one of my 4 Persona maps for the pack! Hope you enjoy.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:210,songName:"Last Surprise",songSubName:"",songAuthorName:"Shoji Meguro",levelAuthorName:"Ab"},stats:{plays:0,downloads:5978,upvotes:1048,downvotes:17,score:.9247},uploaded:"2020-09-10T19:19:34.152Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b5e4c4a65fa8c55a4c5a2b1d7681c31f301d5449",key:"e7cd",state:"Published",createdAt:"2020-09-10T19:19:34.152Z",sageScore:2,diffs:[{njs:13,offset:0,notes:650,bombs:0,obstacles:2,nps:3.173,length:420,characteristic:"Standard",difficulty:"Hard",events:3292,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:204.878,paritySummary:{errors:12,warns:8,resets:0}},{njs:17,offset:-.2,notes:861,bombs:0,obstacles:0,nps:4.203,length:420,characteristic:"Standard",difficulty:"Expert",events:3292,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.878,paritySummary:{errors:8,warns:9,resets:0}},{njs:18,offset:-.2,notes:983,bombs:0,obstacles:7,nps:4.798,length:420,characteristic:"Standard",difficulty:"ExpertPlus",events:3250,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:204.878,paritySummary:{errors:8,warns:8,resets:0}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:3249,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b5e4c4a65fa8c55a4c5a2b1d7681c31f301d5449.zip",coverURL:"https://cdn.beatsaver.com/b5e4c4a65fa8c55a4c5a2b1d7681c31f301d5449.jpg",previewURL:"https://cdn.beatsaver.com/b5e4c4a65fa8c55a4c5a2b1d7681c31f301d5449.mp3"}],createdAt:"2020-09-10T19:19:34.152Z",updatedAt:"2020-09-10T19:19:34.152Z",lastPublishedAt:"2020-09-10T19:19:34.152Z"},{id:"1a0b8",name:"[Electro Swing Pack] Wolfgang Lohr & The Swinghoppers - Party Like It's 1920",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/ye22W_xrXnk\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:120,duration:187,songName:"Party Like It's 1920",songSubName:"",songAuthorName:"The Swinghoppers & Wolfgang Lohr",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:13163,upvotes:670,downvotes:4,score:.9246},uploaded:"2021-07-08T15:25:28.451Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"973bab980b568e41b0a17a772e61377b01ef85ec",key:"1a0b8",state:"Published",createdAt:"2021-07-08T15:25:28.451Z",sageScore:4,diffs:[{njs:16,offset:-.5,notes:556,bombs:0,obstacles:0,nps:3.063,length:363,characteristic:"Standard",difficulty:"Expert",events:2057,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:850,bombs:0,obstacles:0,nps:4.683,length:363,characteristic:"Standard",difficulty:"ExpertPlus",events:2057,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/973bab980b568e41b0a17a772e61377b01ef85ec.zip",coverURL:"https://cdn.beatsaver.com/973bab980b568e41b0a17a772e61377b01ef85ec.jpg",previewURL:"https://cdn.beatsaver.com/973bab980b568e41b0a17a772e61377b01ef85ec.mp3"}],createdAt:"2021-07-08T15:25:28.451Z",updatedAt:"2021-07-08T15:25:28.451Z",lastPublishedAt:"2021-07-08T15:25:28.451Z"},{id:"d60d",name:"[FUTURE FUNK PACK] Tokyo Chopp ft. Shiki​(​TMNS​)​ (Moe Shop Remix)",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\nThese last two Moe Shop songs brings a fresh spin on the Future Funk genre! This song is a Moe Shop remix of Hentai Dude\'s "Tokyo Chopp" and Tomoko Aran\'s "Midnight Pretenders" (1983.)\n\nThank you for playing! I hope you enjoyed the map pack!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:117,duration:188,songName:"Tokyo Chopp ft. Shiki​(​TMNS​)​",songSubName:"(Moe Shop Remix)",songAuthorName:"Hentai Dude",levelAuthorName:"ETAN"},stats:{plays:0,downloads:6396,upvotes:1072,downvotes:18,score:.9246},uploaded:"2020-08-14T18:31:11.526Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c82dfb89e2e5beb11c57c1d311e801f7d5dac978",key:"d60d",state:"Published",createdAt:"2020-08-14T18:31:11.526Z",sageScore:7,diffs:[{njs:10,offset:1.5,notes:155,bombs:0,obstacles:8,nps:.856,length:353,characteristic:"Standard",difficulty:"Easy",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.026,paritySummary:{errors:29,warns:0,resets:0}},{njs:10,offset:1,notes:291,bombs:0,obstacles:8,nps:1.608,length:353,characteristic:"Standard",difficulty:"Normal",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.026,paritySummary:{errors:3,warns:0,resets:0}},{njs:12,offset:.5,notes:377,bombs:0,obstacles:7,nps:2.056,length:357.5,characteristic:"Standard",difficulty:"Hard",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.333,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:565,bombs:0,obstacles:7,nps:3.082,length:357.5,characteristic:"Standard",difficulty:"Expert",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.333,paritySummary:{errors:1,warns:0,resets:0}},{njs:17,offset:-.5,notes:765,bombs:0,obstacles:7,nps:4.173,length:357.5,characteristic:"Standard",difficulty:"ExpertPlus",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.333,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c82dfb89e2e5beb11c57c1d311e801f7d5dac978.zip",coverURL:"https://cdn.beatsaver.com/c82dfb89e2e5beb11c57c1d311e801f7d5dac978.jpg",previewURL:"https://cdn.beatsaver.com/c82dfb89e2e5beb11c57c1d311e801f7d5dac978.mp3"}],createdAt:"2020-08-14T18:31:11.526Z",updatedAt:"2020-08-14T18:31:11.526Z",lastPublishedAt:"2020-08-14T18:31:11.526Z"},{id:"41e4",name:"Meant to Live - Switchfoot",description:"Easy, Normal, and Hard are all relatively easy, even for OST standards. Expert might have some tricky patterns, but the NPS is still well within OST standards so should still be manageable.\n\nhttps://youtu.be/zEK_j3aqn4g\n\nSo for my first song with fully English vocals, here's a classic from the early 2000's that you completely forgot about. I was actually sitting on this map for a while but decided to release it because I wanted a bit of variety.\n\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:150,duration:200,songName:"Meant to Live",songSubName:"Switchfoot",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:3605,upvotes:937,downvotes:13,score:.9246},uploaded:"2019-03-30T02:30:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d6675f644e47f84789a0376a746a2514e8e7b7ff",key:"41e4",state:"Published",createdAt:"2019-03-30T02:30:46Z",diffs:[{njs:10,offset:0,notes:155,bombs:0,obstacles:11,nps:.859,length:451.3,characteristic:"Standard",difficulty:"Easy",events:576,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.52,paritySummary:{errors:45,warns:4,resets:0}},{njs:11,offset:0,notes:262,bombs:0,obstacles:11,nps:1.451,length:451.3,characteristic:"Standard",difficulty:"Normal",events:576,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.52,paritySummary:{errors:60,warns:13,resets:0}},{njs:10,offset:0,notes:408,bombs:0,obstacles:46,nps:2.26,length:451.3,characteristic:"Standard",difficulty:"Hard",events:576,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.52,paritySummary:{errors:50,warns:29,resets:0}},{njs:12,offset:0,notes:630,bombs:0,obstacles:53,nps:3.49,length:451.3,characteristic:"Standard",difficulty:"Expert",events:576,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.52,paritySummary:{errors:41,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d6675f644e47f84789a0376a746a2514e8e7b7ff.zip",coverURL:"https://cdn.beatsaver.com/d6675f644e47f84789a0376a746a2514e8e7b7ff.jpg",previewURL:"https://cdn.beatsaver.com/d6675f644e47f84789a0376a746a2514e8e7b7ff.mp3"}],createdAt:"2019-03-30T02:30:46Z",updatedAt:"2019-03-30T02:30:46Z",lastPublishedAt:"2019-03-30T02:30:46Z"},{id:"7c0b",name:"[Bloq Busters Vol. 2] Au5 & Fractal - Smoke",description:"Expert+ Preview: https://www.youtube.com/watch?v=_mJXl15vv1c\n\nA sick song from their Secret Weapon EP! I hope I did it justice with this mapping.\n\nThis map is part of the Bloq Busters Vol. 2: Melodic Dubstep map pack comprised of maps from several mappers featuring artists such as Seven Lions, Jason Ross, Au5, Warriyo, and more! Grab it here: https://bsaber.com/bloq-busters-vol-2-melodic-dubstep/\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725!",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:128,duration:302,songName:"Smoke",songSubName:"",songAuthorName:"Au5 & Fractal",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:2132,upvotes:701,downvotes:5,score:.9245},uploaded:"2020-01-03T22:50:59.278Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0bc6562a0bde3a933d656a514c67eeec88a315df",key:"7c0b",state:"Published",createdAt:"2020-01-03T22:50:59.278Z",sageScore:4,diffs:[{njs:12,offset:.6,notes:687,bombs:0,obstacles:245,nps:2.351,length:623.5,characteristic:"Standard",difficulty:"Hard",events:4233,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.266,paritySummary:{errors:2,warns:2,resets:0}},{njs:16,offset:-.1,notes:1074,bombs:0,obstacles:135,nps:3.675,length:623.5,characteristic:"Standard",difficulty:"Expert",events:4233,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.266,paritySummary:{errors:3,warns:3,resets:0}},{njs:20,offset:.6,notes:1188,bombs:0,obstacles:122,nps:4.065,length:623.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4227,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.266,paritySummary:{errors:1,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0bc6562a0bde3a933d656a514c67eeec88a315df.zip",coverURL:"https://cdn.beatsaver.com/0bc6562a0bde3a933d656a514c67eeec88a315df.jpg",previewURL:"https://cdn.beatsaver.com/0bc6562a0bde3a933d656a514c67eeec88a315df.mp3"}],createdAt:"2020-01-03T22:50:59.278Z",updatedAt:"2020-01-03T22:50:59.278Z",lastPublishedAt:"2020-01-03T22:50:59.278Z"},{id:"5e05",name:"Dire Straits - Money For Nothing",description:"",uploader:{id:4285018,name:"majorpickle",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f792",avatar:"https://cdn.beatsaver.com/avatar/450358937657671680.png",type:"DISCORD"},metadata:{bpm:136,duration:243,songName:"Money For Nothing",songSubName:"",songAuthorName:"Dire Straits",levelAuthorName:"Majorpickle"},stats:{plays:0,downloads:2691,upvotes:1068,downvotes:18,score:.9245},uploaded:"2019-08-20T03:07:14.232Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b81b682921b291b731111f9a29d7bf9353ff1365",key:"5e05",state:"Published",createdAt:"2019-08-20T03:07:14.232Z",sageScore:6,diffs:[{njs:12,offset:0,notes:851,bombs:0,obstacles:60,nps:3.8,length:507.656,characteristic:"Standard",difficulty:"Expert",events:2256,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.966,paritySummary:{errors:39,warns:30,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b81b682921b291b731111f9a29d7bf9353ff1365.zip",coverURL:"https://cdn.beatsaver.com/b81b682921b291b731111f9a29d7bf9353ff1365.jpg",previewURL:"https://cdn.beatsaver.com/b81b682921b291b731111f9a29d7bf9353ff1365.mp3"}],createdAt:"2019-08-20T03:07:14.232Z",updatedAt:"2019-08-20T03:07:14.232Z",lastPublishedAt:"2019-08-20T03:07:14.232Z"},{id:"a83b",name:"BAD APPLE!! [Punk Goes Pop Vol.2] - RichaadEB ft. Cristina Vee",description:"BAD APPLE!! is a metal cover by RichaadEB featuring voice actor and singer, Cristina Vee. This song was originally composed by Jun'ya Ota & Masayoshi Minoshima with vocals by Nomico.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:138,duration:301,songName:"BAD APPLE!!",songSubName:"ft. Cristina Vee",songAuthorName:"RichaadEB",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:5636,upvotes:1476,downvotes:35,score:.9242},uploaded:"2020-05-20T07:20:11.426Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"57d1004ac047bd554080c5bfdd6908743ebb9fd2",key:"a83b",state:"Published",createdAt:"2020-05-20T07:20:11.426Z",sageScore:3,diffs:[{njs:16,offset:0,notes:1649,bombs:0,obstacles:78,nps:5.644,length:672,characteristic:"Standard",difficulty:"ExpertPlus",events:9915,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.174,paritySummary:{errors:8,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/57d1004ac047bd554080c5bfdd6908743ebb9fd2.zip",coverURL:"https://cdn.beatsaver.com/57d1004ac047bd554080c5bfdd6908743ebb9fd2.jpg",previewURL:"https://cdn.beatsaver.com/57d1004ac047bd554080c5bfdd6908743ebb9fd2.mp3"}],createdAt:"2020-05-20T07:20:11.426Z",updatedAt:"2020-05-20T07:20:11.426Z",lastPublishedAt:"2020-05-20T07:20:11.426Z"},{id:"8b81",name:"Stonebank - To The Top",description:"https://www.youtube.com/watch?v=2DwhNw_pGrg",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:187,songName:"To The Top",songSubName:"",songAuthorName:"Stonebank",levelAuthorName:"Rustic"},stats:{plays:0,downloads:1287,upvotes:897,downvotes:12,score:.9242},uploaded:"2020-02-28T15:53:21.930Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7afc56e020bb12f1e91dc99b1107df830299cc98",key:"8b81",state:"Published",createdAt:"2020-02-28T15:53:21.930Z",sageScore:5,diffs:[{njs:20,offset:1,notes:491,bombs:0,obstacles:2922,nps:2.942,length:356,characteristic:"Standard",difficulty:"Expert",events:5581,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:166.875,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7afc56e020bb12f1e91dc99b1107df830299cc98.zip",coverURL:"https://cdn.beatsaver.com/7afc56e020bb12f1e91dc99b1107df830299cc98.jpg",previewURL:"https://cdn.beatsaver.com/7afc56e020bb12f1e91dc99b1107df830299cc98.mp3"}],createdAt:"2020-02-28T15:53:21.930Z",updatedAt:"2020-02-28T15:53:21.930Z",lastPublishedAt:"2020-02-28T15:53:21.930Z"},{id:"1c00",name:"Chop Suey - System of a Down",description:"4th map. Special thanks to Kolezan for doing the lighting and helping me out with the audio on this one. He did a great job. Also thanks to Crankor, TurtleSquared, and all my other play testers for multiple play tests and a lot of good feedback. Also this map would not have been possible without squeaksies' MediocreMapper!\nTIPS:\n\n(Expert/Expert+) In the final flow pattern in the last slow section of the song, the corner crouch is meant to make you do a sort of side lunge with that lunging side's saber swinging out wide behind you for balance. I have found that to be the smoothest flow, though it's not technically necessary.\n\n(Expert+ only) The \"climax\" point of each pattern in the ending flow is made to be an optional behind-the-back cross slash. You'll know it by the dotted cubes in that section. The backslash hand hits the dotted cubes. This move is fun but may take some practice to get down. (Hint: keep your eye on the top diagonal cube.)\n\nSwing those arms for the big hits.\n\nhttps://youtu.be/6NJh98lDJVo",uploader:{id:27595,name:"baxter395",uniqueSet:!0,hash:"5cff0b7598cc5a672c852f7b",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c852f7b?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:204,songName:"Chop Suey",songSubName:"System of a Down",songAuthorName:"baxter395",levelAuthorName:"baxter395"},stats:{plays:0,downloads:12175,upvotes:8010,downvotes:385,score:.9242},uploaded:"2018-10-25T00:30:35Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1b6f9e844d81ff0f6ee6feed62331a3d229be2e8",key:"1c00",state:"Published",createdAt:"2018-10-25T00:30:35Z",sageScore:-2,diffs:[{njs:10,offset:0,notes:497,bombs:0,obstacles:11,nps:2.601,length:404.463,characteristic:"Standard",difficulty:"Normal",events:1156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.085,paritySummary:{errors:75,warns:56,resets:0}},{njs:11,offset:0,notes:687,bombs:0,obstacles:34,nps:3.595,length:404.463,characteristic:"Standard",difficulty:"Hard",events:1156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.085,paritySummary:{errors:57,warns:89,resets:0}},{njs:12,offset:0,notes:804,bombs:0,obstacles:62,nps:4.208,length:404.463,characteristic:"Standard",difficulty:"Expert",events:1156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.085,paritySummary:{errors:64,warns:100,resets:0}},{njs:13,offset:0,notes:842,bombs:0,obstacles:54,nps:4.406,length:404.463,characteristic:"Standard",difficulty:"ExpertPlus",events:1156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.085,paritySummary:{errors:58,warns:110,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1b6f9e844d81ff0f6ee6feed62331a3d229be2e8.zip",coverURL:"https://cdn.beatsaver.com/1b6f9e844d81ff0f6ee6feed62331a3d229be2e8.jpg",previewURL:"https://cdn.beatsaver.com/1b6f9e844d81ff0f6ee6feed62331a3d229be2e8.mp3"}],createdAt:"2018-10-25T00:30:35Z",updatedAt:"2018-10-25T00:30:35Z",lastPublishedAt:"2018-10-25T00:30:35Z"},{id:"b724",name:"Falling - Dropgun x Asketa & Natan Chaim",description:"reupload #1 - improved the difficulty spread to not have an extreme jump between the Expert and Expert+ slot\n\nOnly some of the lower diffs changed on here, the E+ slot (Rising) is still the same as I got very positive feedback on that diff which I'm very happy about <3\nThe diff spread should be better now, so it is hopefully more enjoyable for all skill levels whenever it gets ranked.\n\noriginal description:\nhaha lyrics go brrrr\njust a little bit though\n\nalso I lighted manually which I haven't done for an eternity, hope you don't go blind or something\n\nbig thank you to Skeelie for modding this :)\n\nTeuflum#5982 for any feedback on discord.",uploader:{id:68740,name:"Teuflum",uniqueSet:!0,hash:"5cff0b7498cc5a672c851a6b",avatar:"https://cdn.beatsaver.com/avatar/114706869460664326.png",type:"DISCORD"},metadata:{bpm:126,duration:194,songName:"Falling",songSubName:"",songAuthorName:"Dropgun x Asketa & Natan Chaim",levelAuthorName:"Teuflum"},stats:{plays:0,downloads:8962,upvotes:3035,downvotes:109,score:.9241},uploaded:"2020-06-28T11:22:49.373Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2dddd6672560cb2c1d4c689ff31b5ea58ef1641e",key:"b724",state:"Published",createdAt:"2020-06-28T11:22:49.373Z",sageScore:7,diffs:[{njs:12,offset:.5,notes:454,bombs:0,obstacles:65,nps:2.432,length:392,characteristic:"Standard",difficulty:"Easy",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:12,warns:2,resets:0},stars:1.35},{njs:14,offset:0,notes:672,bombs:12,obstacles:65,nps:3.6,length:392,characteristic:"Standard",difficulty:"Normal",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:0,warns:0,resets:4},stars:2.28},{njs:17,offset:-.4,notes:973,bombs:20,obstacles:65,nps:5.213,length:392,characteristic:"Standard",difficulty:"Hard",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:0,warns:0,resets:2},stars:4.51},{njs:20,offset:.325,notes:1297,bombs:16,obstacles:39,nps:6.948,length:392,characteristic:"Standard",difficulty:"Expert",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:0,warns:0,resets:2},stars:5.65},{njs:22,offset:.1,notes:1483,bombs:16,obstacles:39,nps:7.945,length:392,characteristic:"Standard",difficulty:"ExpertPlus",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:2,warns:0,resets:4},stars:7.83},{njs:69,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2dddd6672560cb2c1d4c689ff31b5ea58ef1641e.zip",coverURL:"https://cdn.beatsaver.com/2dddd6672560cb2c1d4c689ff31b5ea58ef1641e.jpg",previewURL:"https://cdn.beatsaver.com/2dddd6672560cb2c1d4c689ff31b5ea58ef1641e.mp3"}],createdAt:"2020-06-28T11:22:49.373Z",updatedAt:"2021-09-20T15:01:27.178739Z",lastPublishedAt:"2020-06-28T11:22:49.373Z"},{id:"7e92",name:"Adventure of a Lifetime - Coldplay",description:"This song is one that i really love. Even though its different from most of the maps i posted so far, i still mapped it anyway because i like it.\n\nAll difficulties included, Expert+ is sort of on the lower end of expert+ maps.\n\nThanks to Helen Carnate, Sorukun, and Kolezan for helping me playtest the map! \n\nHave fun going on the Adventure of a Lifetime!",uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:112,duration:264,songName:"Adventure of a Lifetime",songSubName:"",songAuthorName:"Coldplay",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:4599,upvotes:1352,downvotes:30,score:.9241},uploaded:"2020-01-15T05:33:28.055Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cbfe28de7f63634096dd8ef34648753147f3f65d",key:"7e92",state:"Published",createdAt:"2020-01-15T05:33:28.055Z",sageScore:6,diffs:[{njs:10,offset:1,notes:301,bombs:0,obstacles:45,nps:1.232,length:456,characteristic:"Standard",difficulty:"Easy",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.286,paritySummary:{errors:61,warns:34,resets:0}},{njs:10,offset:1,notes:467,bombs:0,obstacles:48,nps:1.91,length:456.5,characteristic:"Standard",difficulty:"Normal",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.554,paritySummary:{errors:65,warns:20,resets:0}},{njs:12,offset:.5,notes:691,bombs:0,obstacles:41,nps:2.826,length:456.5,characteristic:"Standard",difficulty:"Hard",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.554,paritySummary:{errors:14,warns:10,resets:0}},{njs:15,offset:0,notes:1069,bombs:0,obstacles:42,nps:4.241,length:470.5,characteristic:"Standard",difficulty:"Expert",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252.054,paritySummary:{errors:4,warns:4,resets:0}},{njs:16,offset:-.25,notes:1199,bombs:0,obstacles:18,nps:4.752,length:471,characteristic:"Standard",difficulty:"ExpertPlus",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252.321,paritySummary:{errors:5,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cbfe28de7f63634096dd8ef34648753147f3f65d.zip",coverURL:"https://cdn.beatsaver.com/cbfe28de7f63634096dd8ef34648753147f3f65d.jpg",previewURL:"https://cdn.beatsaver.com/cbfe28de7f63634096dd8ef34648753147f3f65d.mp3"}],createdAt:"2020-01-15T05:33:28.055Z",updatedAt:"2020-01-15T05:33:28.055Z",lastPublishedAt:"2020-01-15T05:33:28.055Z"},{id:"6ed4",name:"Sayuri - Koukai no Uta [Boku no Hero Academia Ending 6]",description:"sayuri slaps\nmainstream anime mapper AYAYA\n\nBPM 180 | Length 1:54\nExpert+\nExpert\nHard\n\nThanks Monteblanco for testplaying\n\nhf\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:180,duration:115,songName:"Koukai no Uta",songSubName:"",songAuthorName:"Sayuri",levelAuthorName:"ETAN"},stats:{plays:0,downloads:11086,upvotes:1208,downvotes:24,score:.9241},uploaded:"2019-11-08T22:57:13.632Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"108f939f6a5a2c2f02e4e1e7c9a9bf46345681a4",key:"6ed4",state:"Published",createdAt:"2019-11-08T22:57:13.632Z",sageScore:5,diffs:[{njs:13,offset:0,notes:250,bombs:0,obstacles:0,nps:2.262,length:331.5,characteristic:"Standard",difficulty:"Hard",events:5351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:110.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:.5,notes:365,bombs:0,obstacles:0,nps:3.303,length:331.5,characteristic:"Standard",difficulty:"Expert",events:5351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:110.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:.25,notes:518,bombs:0,obstacles:0,nps:4.688,length:331.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:110.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/108f939f6a5a2c2f02e4e1e7c9a9bf46345681a4.zip",coverURL:"https://cdn.beatsaver.com/108f939f6a5a2c2f02e4e1e7c9a9bf46345681a4.jpg",previewURL:"https://cdn.beatsaver.com/108f939f6a5a2c2f02e4e1e7c9a9bf46345681a4.mp3"}],createdAt:"2019-11-08T22:57:13.632Z",updatedAt:"2019-11-08T22:57:13.632Z",lastPublishedAt:"2019-11-08T22:57:13.632Z"},{id:"587c",name:"Cracks (Flux Pavilion Remix)",description:"*reuploaded due to an error with the Lightshow Difficulty and Beatsaver*\n\nAnother collab! This one is meant to be more geared towards playability, (and possibly even rankability) so I hope you like it.\n\nIt also has Chroma lighting courtesy of Aeroluna. He's awesome for doing the lights, go check out his stuff too!\n\nCracks (Flux Pavilion Remix) - Belle Humble, Freestylers | 140 BPM | Hard, Expert, Expert+ | Fully Mapped with Chroma Lighting by Aeroluna\n\nHere's a video of the lights with Chroma on: https://youtu.be/iwFcR5YmYwg",uploader:{id:17131,name:"tranquillizeme",uniqueSet:!0,hash:"5cff0b7798cc5a672c85609e",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c85609e?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:143,songName:"Cracks",songSubName:"(Flux Pavilion Remix)",songAuthorName:"Various Artists",levelAuthorName:"TranquillizeMe"},stats:{plays:0,downloads:1454,upvotes:1082,downvotes:19,score:.9241},uploaded:"2019-07-23T01:37:18.104Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"51835f468381d630b48c36da70d2c2ce700bb274",key:"587c",state:"Published",createdAt:"2019-07-23T01:37:18.104Z",sageScore:6,diffs:[{njs:13,offset:1,notes:364,bombs:224,obstacles:30,nps:2.705,length:314,characteristic:"Standard",difficulty:"Hard",events:11202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.571,paritySummary:{errors:18,warns:16,resets:0}},{njs:16,offset:0,notes:506,bombs:228,obstacles:14,nps:3.76,length:314,characteristic:"Standard",difficulty:"Expert",events:11202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.571,paritySummary:{errors:9,warns:8,resets:2}},{njs:18,offset:0,notes:778,bombs:52,obstacles:18,nps:5.781,length:314,characteristic:"Standard",difficulty:"ExpertPlus",events:11202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.571,paritySummary:{errors:2,warns:0,resets:13}}],downloadURL:"https://cdn.beatsaver.com/51835f468381d630b48c36da70d2c2ce700bb274.zip",coverURL:"https://cdn.beatsaver.com/51835f468381d630b48c36da70d2c2ce700bb274.jpg",previewURL:"https://cdn.beatsaver.com/51835f468381d630b48c36da70d2c2ce700bb274.mp3"}],createdAt:"2019-07-23T01:37:18.104Z",updatedAt:"2019-07-23T01:37:18.104Z",lastPublishedAt:"2019-07-23T01:37:18.104Z"},{id:"d35b",name:"[FUTURE FUNK PACK] Remember Summer Days (MACROSS 82-99 Short Ver.)",description:"FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\nThese first two songs are originally sung by Anri, one of my favorite City Pop artist. \n\nThis version of Remember Summer Days is a short edit I made from MACROSS 82-99's bootleg version. The original song is waaay longer\n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:110,duration:171,songName:"Remember Summer Days",songSubName:"(MACROSS 82-99 Short Ver.)",songAuthorName:"Anri",levelAuthorName:"ETAN"},stats:{plays:0,downloads:4497,upvotes:775,downvotes:8,score:.9239},uploaded:"2020-08-10T17:48:45.792Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bb49a02cd1760f45d8c5104fc8881e61ab00b29f",key:"d35b",state:"Published",createdAt:"2020-08-10T17:48:45.792Z",sageScore:8,diffs:[{njs:10,offset:1,notes:154,bombs:0,obstacles:11,nps:.941,length:300.062,characteristic:"Standard",difficulty:"Easy",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.67,paritySummary:{errors:32,warns:2,resets:0}},{njs:10,offset:1,notes:220,bombs:0,obstacles:11,nps:1.344,length:300.062,characteristic:"Standard",difficulty:"Normal",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.67,paritySummary:{errors:2,warns:4,resets:0}},{njs:12,offset:.5,notes:417,bombs:0,obstacles:10,nps:2.506,length:305.125,characteristic:"Standard",difficulty:"Hard",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.432,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:593,bombs:0,obstacles:10,nps:3.563,length:305.125,characteristic:"Standard",difficulty:"Expert",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.432,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:.5,notes:752,bombs:0,obstacles:10,nps:4.518,length:305.125,characteristic:"Standard",difficulty:"ExpertPlus",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.432,paritySummary:{errors:0,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bb49a02cd1760f45d8c5104fc8881e61ab00b29f.zip",coverURL:"https://cdn.beatsaver.com/bb49a02cd1760f45d8c5104fc8881e61ab00b29f.jpg",previewURL:"https://cdn.beatsaver.com/bb49a02cd1760f45d8c5104fc8881e61ab00b29f.mp3"}],createdAt:"2020-08-10T17:48:45.792Z",updatedAt:"2020-08-10T17:48:45.792Z",lastPublishedAt:"2020-08-10T17:48:45.792Z"},{id:"5d1f",name:"Weight of the World (JVNA Remix) - NieR: Automata",description:"145 BPM - 4:27 Runtime\n\nStandard\nHard - 675 Notes\nExpert - 885 Notes\nExpert+ - 1169 Notes\n\nOne Saber\nExpert - 644 Notes\nExpert+ - 847 Notes\n\nLawless\nEnding E (unnerfed) - 2109 Walls\nEnding E - 1500 Walls\n\nGameplay: Coming soon",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:145,duration:268,songName:"Weight of the World",songSubName:"NieR:Automata",songAuthorName:"JVNA",levelAuthorName:"Skyler Wallace & Excession"},stats:{plays:0,downloads:4937,upvotes:2801,downvotes:98,score:.9239},uploaded:"2019-08-15T23:12:42.493Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6b4e0f6a698973ca55754d057b40463063ae59d8",key:"5d1f",state:"Published",createdAt:"2019-08-15T23:12:42.493Z",sageScore:6,diffs:[{njs:13,offset:1,notes:675,bombs:6,obstacles:45,nps:2.559,length:637.5,characteristic:"Standard",difficulty:"Hard",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:115,warns:44,resets:3}},{njs:15,offset:.25,notes:885,bombs:6,obstacles:49,nps:3.355,length:637.5,characteristic:"Standard",difficulty:"Expert",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:67,warns:39,resets:5}},{njs:17,offset:0,notes:1169,bombs:5,obstacles:58,nps:4.432,length:637.5,characteristic:"Standard",difficulty:"ExpertPlus",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:89,warns:78,resets:1}},{njs:13,offset:1,notes:644,bombs:6,obstacles:45,nps:2.441,length:637.5,characteristic:"OneSaber",difficulty:"Expert",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:41,warns:47,resets:3}},{njs:15,offset:.25,notes:847,bombs:6,obstacles:49,nps:3.211,length:637.5,characteristic:"OneSaber",difficulty:"ExpertPlus",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:59,warns:71,resets:0}},{njs:17,offset:0,notes:1169,bombs:5,obstacles:2108,nps:4.432,length:637.5,characteristic:"Lawless",difficulty:"Expert",events:12404,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:89,warns:78,resets:1}},{njs:17,offset:0,notes:1169,bombs:5,obstacles:1500,nps:4.432,length:637.5,characteristic:"Lawless",difficulty:"ExpertPlus",events:12404,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:89,warns:78,resets:1}}],downloadURL:"https://cdn.beatsaver.com/6b4e0f6a698973ca55754d057b40463063ae59d8.zip",coverURL:"https://cdn.beatsaver.com/6b4e0f6a698973ca55754d057b40463063ae59d8.jpg",previewURL:"https://cdn.beatsaver.com/6b4e0f6a698973ca55754d057b40463063ae59d8.mp3"}],createdAt:"2019-08-15T23:12:42.493Z",updatedAt:"2019-08-15T23:12:42.493Z",lastPublishedAt:"2019-08-15T23:12:42.493Z"},{id:"14aa",name:"Dummy! - Undertale OST (Toby Fox)",description:"Decided to make an Undertale map, original song by Toby Fox.",uploader:{id:14891,name:"elijoria",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fbf5",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84fbf5?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:146,songName:"Dummy!",songSubName:"Undertale OST",songAuthorName:"Toby Fox (Mapped By Elijoria)",levelAuthorName:"Elijoria"},stats:{plays:0,downloads:3830,upvotes:2082,downvotes:63,score:.9239},uploaded:"2018-09-11T23:43:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b9d323fb01bfdd9ece0702256416b44ce1026ec6",key:"14aa",state:"Published",createdAt:"2018-09-11T23:43:18Z",sageScore:4,diffs:[{njs:10,offset:0,notes:374,bombs:0,obstacles:49,nps:2.589,length:301,characteristic:"Standard",difficulty:"Normal",events:684,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:144.48,paritySummary:{errors:102,warns:50,resets:0}},{njs:10,offset:0,notes:515,bombs:0,obstacles:53,nps:3.565,length:301,characteristic:"Standard",difficulty:"Hard",events:684,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:144.48,paritySummary:{errors:89,warns:64,resets:0}},{njs:10,offset:0,notes:610,bombs:26,obstacles:53,nps:4.223,length:301,characteristic:"Standard",difficulty:"Expert",events:684,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:144.48,paritySummary:{errors:88,warns:67,resets:4}}],downloadURL:"https://cdn.beatsaver.com/b9d323fb01bfdd9ece0702256416b44ce1026ec6.zip",coverURL:"https://cdn.beatsaver.com/b9d323fb01bfdd9ece0702256416b44ce1026ec6.jpg",previewURL:"https://cdn.beatsaver.com/b9d323fb01bfdd9ece0702256416b44ce1026ec6.mp3"}],createdAt:"2018-09-11T23:43:18Z",updatedAt:"2018-09-11T23:43:18Z",lastPublishedAt:"2018-09-11T23:43:18Z"},{id:"acf",name:"EC2 - Prototyperaptor - Still Waiting",description:"Expert / Hard\r\nPart of the Electric City 2 song pack\r\nhttps://youtu.be/uCekFFk_nWA?t=4m29s",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:286,songName:"EC2 - Still Waiting",songSubName:"Prototyperaptor",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:4651,upvotes:1935,downvotes:56,score:.9239},uploaded:"2018-07-20T22:07:52Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"32ae684f553e7fa90d1e5325bd54581c0afd37fa",key:"acf",state:"Published",createdAt:"2018-07-20T22:07:52Z",sageScore:5,diffs:[{njs:10,offset:0,notes:604,bombs:0,obstacles:19,nps:2.192,length:572,characteristic:"Standard",difficulty:"Hard",events:2545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:274.56,paritySummary:{errors:7,warns:33,resets:0},stars:1.18},{njs:11,offset:0,notes:902,bombs:0,obstacles:35,nps:3.274,length:572,characteristic:"Standard",difficulty:"Expert",events:2545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:274.56,paritySummary:{errors:19,warns:65,resets:0},stars:1.99}],downloadURL:"https://cdn.beatsaver.com/32ae684f553e7fa90d1e5325bd54581c0afd37fa.zip",coverURL:"https://cdn.beatsaver.com/32ae684f553e7fa90d1e5325bd54581c0afd37fa.jpg",previewURL:"https://cdn.beatsaver.com/32ae684f553e7fa90d1e5325bd54581c0afd37fa.mp3"}],createdAt:"2018-07-20T22:07:52Z",updatedAt:"2018-07-20T22:07:52Z",lastPublishedAt:"2018-07-20T22:07:52Z"},{id:"10842",name:"Technicolor - Madeon",description:"4th map by Canadian_Dragon in collaboration with Kry\r\nThis map is a friendly gift for a good friend of ours and has been map to their liking. Hope everyone else enjoys it aswell.\r\n\r\nRequires Chroma & Noodle Extension [Wall Map]",uploader:{id:4013,name:"canadian_dragon",uniqueSet:!0,hash:"5e0bb55364f9aa0006d6d0fa",avatar:"https://cdn.beatsaver.com/avatar/4013.jpg",type:"SIMPLE"},metadata:{bpm:127,duration:385,songName:"Technicolor",songSubName:"",songAuthorName:"Madeon",levelAuthorName:"Canadian_Dragon & Kry"},stats:{plays:0,downloads:1998,upvotes:682,downvotes:5,score:.9238},uploaded:"2020-11-02T01:52:46.653Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0488692d1d2fa080fe429ee15efc84da40bc78d2",key:"10842",state:"Published",createdAt:"2020-11-02T01:52:46.653Z",sageScore:4,diffs:[{njs:19,offset:0,notes:1382,bombs:0,obstacles:38787,nps:3.75,length:780,characteristic:"Standard",difficulty:"ExpertPlus",events:8054,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:368.504,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0488692d1d2fa080fe429ee15efc84da40bc78d2.zip",coverURL:"https://cdn.beatsaver.com/0488692d1d2fa080fe429ee15efc84da40bc78d2.jpg",previewURL:"https://cdn.beatsaver.com/0488692d1d2fa080fe429ee15efc84da40bc78d2.mp3"}],createdAt:"2020-11-02T01:52:46.653Z",updatedAt:"2020-11-02T01:52:46.653Z",lastPublishedAt:"2020-11-02T01:52:46.653Z"},{id:"142e8",name:"K/DA - MORE (ft. Madison Beer, (G)I-DLE, Lexie Liu, Jaira Burns, Seraphine)",description:"From the unofficial music pack (K/DA ALL OUT) on BSaber.com\nPack: https://bsaber.com/kda-all-out/\nTrailer: https://youtu.be/e1ry_H86zqg\nPreview (Expert+): https://youtu.be/C86ebbseC34\nLightshow: https://youtu.be/lxbch_lAEA8\n__________\nCredits🤍\nMapper: Sotarks\nLighter: Sotarks\nCurators: Pixelguy, JohnnyDee & joey\nSpecial Thanks: eliotttate & Belaya\nTrailer: Tuffiii\n__________\nCheck out K/DA🤍\nhttps://twitter.com/kda_music\nhttps://linktr.ee/kda_music\nProduced by Riot Games",uploader:{id:2523,name:"sotarks",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541fd",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8541fd?d=retro",type:"SIMPLE"},metadata:{bpm:142,duration:219,songName:"MORE",songSubName:"",songAuthorName:"K/DA",levelAuthorName:"Sotarks"},stats:{plays:0,downloads:11653,upvotes:1408,downvotes:33,score:.9237},uploaded:"2021-02-17T18:04:39.306Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8c5be566e218b8cc59c21e947bc39c1ce1f98908",key:"142e8",state:"Published",createdAt:"2021-02-17T18:04:39.306Z",sageScore:7,diffs:[{njs:10,offset:-1.2813157,notes:245,bombs:0,obstacles:19,nps:1.191,length:487,characteristic:"Standard",difficulty:"Easy",events:2819,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:21,warns:0,resets:0}},{njs:12,offset:.274958,notes:363,bombs:2,obstacles:13,nps:1.764,length:487,characteristic:"Standard",difficulty:"Normal",events:2819,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:3,warns:0,resets:0}},{njs:14,offset:-.06,notes:618,bombs:13,obstacles:13,nps:3.003,length:487,characteristic:"Standard",difficulty:"Hard",events:2819,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:0,warns:0,resets:4}},{njs:16,offset:-.3,notes:863,bombs:12,obstacles:106,nps:4.194,length:487,characteristic:"Standard",difficulty:"Expert",events:2819,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:0,warns:0,resets:2}},{njs:18,offset:-.5,notes:1041,bombs:31,obstacles:271,nps:5.059,length:487,characteristic:"Standard",difficulty:"ExpertPlus",events:2821,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:1,warns:4,resets:5}}],downloadURL:"https://cdn.beatsaver.com/8c5be566e218b8cc59c21e947bc39c1ce1f98908.zip",coverURL:"https://cdn.beatsaver.com/8c5be566e218b8cc59c21e947bc39c1ce1f98908.jpg",previewURL:"https://cdn.beatsaver.com/8c5be566e218b8cc59c21e947bc39c1ce1f98908.mp3"}],createdAt:"2021-02-17T18:04:39.306Z",updatedAt:"2021-02-17T18:04:39.306Z",lastPublishedAt:"2021-02-17T18:04:39.306Z"},{id:"90c3",name:"Centuries - Fallout Boy (2020) [Mapped by Ab and Qwasyx]",description:"Phew, that took a while.\nHuge thanks to Qwasyx for lighting this map as well as making all the One Saber difficulties!\nAnother thanks to Fruhead for testing.\n\nI take requests! My Discord is Ab#8582.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:176,duration:227,songName:"Centuries",songSubName:"",songAuthorName:"Fallout Boy",levelAuthorName:"Ab & Qwasyx"},stats:{plays:0,downloads:8958,upvotes:2447,downvotes:81,score:.9237},uploaded:"2020-03-16T21:06:46.074Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e3bb02f9ecd08e4c3472fea92e604bc415338f2a",key:"90c3",state:"Published",createdAt:"2020-03-16T21:06:46.074Z",sageScore:6,diffs:[{njs:10,offset:0,notes:231,bombs:0,obstacles:46,nps:1.065,length:636,characteristic:"Standard",difficulty:"Easy",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:84,warns:0,resets:0}},{njs:13,offset:-.6,notes:329,bombs:0,obstacles:4,nps:1.517,length:636,characteristic:"Standard",difficulty:"Normal",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:26,warns:8,resets:0}},{njs:14,offset:.8,notes:514,bombs:92,obstacles:82,nps:2.371,length:636,characteristic:"Standard",difficulty:"Hard",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:0,warns:0,resets:2}},{njs:16,offset:.4,notes:667,bombs:182,obstacles:11,nps:3.076,length:636,characteristic:"Standard",difficulty:"Expert",events:14167,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:1,warns:1,resets:8}},{njs:20,offset:-.2,notes:862,bombs:164,obstacles:2,nps:3.976,length:636,characteristic:"Standard",difficulty:"ExpertPlus",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:1,warns:1,resets:5}},{njs:10,offset:0,notes:146,bombs:64,obstacles:4,nps:.671,length:638,characteristic:"OneSaber",difficulty:"Easy",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.5,paritySummary:{errors:21,warns:15,resets:1}},{njs:13,offset:-.6,notes:276,bombs:144,obstacles:68,nps:1.269,length:638,characteristic:"OneSaber",difficulty:"Normal",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.5,paritySummary:{errors:4,warns:22,resets:2}},{njs:14,offset:.8,notes:529,bombs:8,obstacles:0,nps:2.43,length:638.5,characteristic:"OneSaber",difficulty:"Hard",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.67,paritySummary:{errors:8,warns:6,resets:1}},{njs:16,offset:.4,notes:548,bombs:96,obstacles:0,nps:2.522,length:637.5,characteristic:"OneSaber",difficulty:"Expert",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.33,paritySummary:{errors:2,warns:0,resets:5}},{njs:20,offset:-.2,notes:830,bombs:153,obstacles:0,nps:3.807,length:639.5,characteristic:"OneSaber",difficulty:"ExpertPlus",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.011,paritySummary:{errors:0,warns:2,resets:13}},{njs:20,offset:-.2,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e3bb02f9ecd08e4c3472fea92e604bc415338f2a.zip",coverURL:"https://cdn.beatsaver.com/e3bb02f9ecd08e4c3472fea92e604bc415338f2a.jpg",previewURL:"https://cdn.beatsaver.com/e3bb02f9ecd08e4c3472fea92e604bc415338f2a.mp3"}],createdAt:"2020-03-16T21:06:46.074Z",updatedAt:"2020-03-16T21:06:46.074Z",lastPublishedAt:"2020-03-16T21:06:46.074Z"},{id:"63ea",name:"Sabaton - Primo Victoria",description:"Old but great song by Sabaton. Hard to Expert+ are mapped.\n\nGenre: Power metal\nBPM: 124.175\nNPS: 5.51 / 3.87 / 3.06\nNJS: 16 / 13 / 11\n\nExpert+ playthrough: https://youtu.be/Z92uPY3met4",uploader:{id:1207,name:"wyxi",uniqueSet:!0,hash:"5d0abf96b8c469000699075f",avatar:"https://www.gravatar.com/avatar/5d0abf96b8c469000699075f?d=retro",type:"SIMPLE"},metadata:{bpm:124.175,duration:251,songName:"Primo Victoria",songSubName:"",songAuthorName:"Sabaton",levelAuthorName:"Wyxi"},stats:{plays:0,downloads:2832,upvotes:1838,downvotes:52,score:.9237},uploaded:"2019-09-16T19:33:52.506Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d18d33e15faab989cc67b7a1ce0b03950295764f",key:"63ea",state:"Published",createdAt:"2019-09-16T19:33:52.506Z",sageScore:6,diffs:[{njs:11,offset:1,notes:769,bombs:4,obstacles:13,nps:3.18,length:500.5,characteristic:"Standard",difficulty:"Hard",events:2822,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.836,paritySummary:{errors:10,warns:2,resets:2}},{njs:13,offset:.5,notes:972,bombs:8,obstacles:12,nps:4.019,length:500.5,characteristic:"Standard",difficulty:"Expert",events:2823,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.836,paritySummary:{errors:15,warns:11,resets:4}},{njs:16,offset:0,notes:1385,bombs:8,obstacles:11,nps:5.727,length:500.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.836,paritySummary:{errors:20,warns:18,resets:4}}],downloadURL:"https://cdn.beatsaver.com/d18d33e15faab989cc67b7a1ce0b03950295764f.zip",coverURL:"https://cdn.beatsaver.com/d18d33e15faab989cc67b7a1ce0b03950295764f.jpg",previewURL:"https://cdn.beatsaver.com/d18d33e15faab989cc67b7a1ce0b03950295764f.mp3"}],createdAt:"2019-09-16T19:33:52.506Z",updatedAt:"2019-09-16T19:33:52.506Z",lastPublishedAt:"2019-09-16T19:33:52.506Z"},{id:"45eb",name:"Fun Tonight - MACROSS 82-99",description:'Future funk has a special place in my heart, Beat Saber could use some more of this genre.\r\nDifficulties: Expert, Expert+ (Both on the easier end of the spectrum)\r\n\r\n"DDR/Mystikmol" Difficulty Rating:\r\nE+ -- 12\r\nExpert -- 10',uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:130,duration:164,songName:"Fun Tonight",songSubName:"MACROSS 82-99",songAuthorName:"Checkthepan",levelAuthorName:"checkthepan"},stats:{plays:0,downloads:1300,upvotes:710,downvotes:6,score:.9237},uploaded:"2019-04-14T19:22:02Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"608bf3c4cd341a7b70199f26d44aaff71550078d",key:"45eb",state:"Published",createdAt:"2019-04-14T19:22:02Z",sageScore:7,diffs:[{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:1545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:613,bombs:0,obstacles:30,nps:3.795,length:350,characteristic:"Standard",difficulty:"Expert",events:1545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:161.538,paritySummary:{errors:14,warns:19,resets:0}},{njs:16,offset:0,notes:693,bombs:0,obstacles:31,nps:4.29,length:350,characteristic:"Standard",difficulty:"ExpertPlus",events:1545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:161.538,paritySummary:{errors:12,warns:28,resets:0}}],downloadURL:"https://cdn.beatsaver.com/608bf3c4cd341a7b70199f26d44aaff71550078d.zip",coverURL:"https://cdn.beatsaver.com/608bf3c4cd341a7b70199f26d44aaff71550078d.jpg",previewURL:"https://cdn.beatsaver.com/608bf3c4cd341a7b70199f26d44aaff71550078d.mp3"}],createdAt:"2019-04-14T19:22:02Z",updatedAt:"2019-04-14T19:22:02Z",lastPublishedAt:"2019-04-14T19:22:02Z"},{id:"443d",name:"PUSSY - Rammstein",description:"Another one!\r\n\r\nMaybe don't let your kids play this one until they are a bit older....",uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:240,songName:"PUSSY",songSubName:"Rammstein",songAuthorName:"Heisenberg",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:1710,upvotes:1218,downvotes:25,score:.9237},uploaded:"2019-04-08T04:27:04Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"54f6e76446b3a96cc4707fb2d2aa8bd1efd0baf3",key:"443d",state:"Published",createdAt:"2019-04-08T04:27:04Z",sageScore:6,diffs:[{njs:14,offset:0,notes:711,bombs:0,obstacles:1,nps:3.1,length:516,characteristic:"Standard",difficulty:"Expert",events:12824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.333,paritySummary:{errors:13,warns:24,resets:0}},{njs:16,offset:0,notes:967,bombs:12,obstacles:7,nps:4.217,length:516,characteristic:"Standard",difficulty:"ExpertPlus",events:12824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.333,paritySummary:{errors:40,warns:52,resets:7}}],downloadURL:"https://cdn.beatsaver.com/54f6e76446b3a96cc4707fb2d2aa8bd1efd0baf3.zip",coverURL:"https://cdn.beatsaver.com/54f6e76446b3a96cc4707fb2d2aa8bd1efd0baf3.jpg",previewURL:"https://cdn.beatsaver.com/54f6e76446b3a96cc4707fb2d2aa8bd1efd0baf3.mp3"}],createdAt:"2019-04-08T04:27:04Z",updatedAt:"2019-04-08T04:27:04Z",lastPublishedAt:"2019-04-08T04:27:04Z"},{id:"1ad55",name:"Porter Robinson & Madeon - Shelter (Modchart)",description:"This is a modchart that i wanted to do for a long time, i saved this song becuase I love it.\r\nAnd today I'm proud to show you my new modchart!\r\nI made this map in a week and i really enjoyed the process!\r\n\r\nShowcase: https://www.youtube.com/watch?v=a4zSCDYRwAQ\r\n\r\nIf you have any feedback dont be shy and tell me on discord:\r\nTzurS11#1111",uploader:{id:4284455,name:"TzurS11",uniqueSet:!0,hash:"6040a8135ab13d0006093512",avatar:"https://cdn.beatsaver.com/avatar/474645781786263552.png",type:"DISCORD"},metadata:{bpm:200,duration:219,songName:"Shelter",songSubName:"",songAuthorName:"Porter Robinson & Madeon",levelAuthorName:"TzurS11"},stats:{plays:0,downloads:12349,upvotes:737,downvotes:7,score:.9236},uploaded:"2021-08-01T20:31:30.562Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"740c5f5d7b730285c8d13fad1107be4659eb2839",key:"1ad55",state:"Published",createdAt:"2021-08-01T20:31:30.562Z",sageScore:3,diffs:[{njs:19,offset:-.05,notes:623,bombs:4,obstacles:0,nps:3.146,length:660,characteristic:"Standard",difficulty:"Expert",events:81591,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:198,paritySummary:{errors:0,warns:0,resets:1}},{njs:19,offset:-.05,notes:623,bombs:4,obstacles:24892,nps:3.146,length:660,characteristic:"Standard",difficulty:"ExpertPlus",events:81591,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:198,paritySummary:{errors:0,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/740c5f5d7b730285c8d13fad1107be4659eb2839.zip",coverURL:"https://cdn.beatsaver.com/740c5f5d7b730285c8d13fad1107be4659eb2839.jpg",previewURL:"https://cdn.beatsaver.com/740c5f5d7b730285c8d13fad1107be4659eb2839.mp3"}],createdAt:"2021-08-01T20:31:30.562Z",updatedAt:"2021-08-01T20:31:30.562Z",lastPublishedAt:"2021-08-01T20:31:30.562Z"},{id:"7326",name:"The Greatest Show - Mapped by TheAb",description:"This is the most time I've ever put into a map. Almost 14 hours have been put into it, and I really appreciate the light-show I've done. Truly hope you enjoy!\n\nExpert+: 4.55NPS\nExpert: 3.49NPS\nHard: 2.57NPS\nNormal: 1.61NPS\n12,601 Lighting events.\n\nOriginal Song: https://www.youtube.com/watch?v=NyVYXRD1Ans\n\nTwitter: https://twitter.com/TheAb03 / Discord: Ab#8582\nI take requests! DM Ab#8582 on Discord for more info.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:158,duration:301,songName:"The Greatest Show",songSubName:"",songAuthorName:"Hugh Jackman, Keala Settle, Zac Efron, Zendaya & The Greatest Showman Ensemble",levelAuthorName:"Ab"},stats:{plays:0,downloads:3783,upvotes:1160,downvotes:23,score:.9235},uploaded:"2019-12-01T19:39:02.667Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f621c70d06e8f5405ffa428f7b742b123208a656",key:"7326",state:"Published",createdAt:"2019-12-01T19:39:02.667Z",sageScore:5,diffs:[{njs:10,offset:0,notes:489,bombs:36,obstacles:75,nps:1.672,length:770.149,characteristic:"Standard",difficulty:"Normal",events:12599,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.462,paritySummary:{errors:43,warns:13,resets:6}},{njs:12,offset:.5,notes:777,bombs:31,obstacles:96,nps:2.657,length:770.149,characteristic:"Standard",difficulty:"Hard",events:12599,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.462,paritySummary:{errors:1,warns:0,resets:8}},{njs:15,offset:.3,notes:1056,bombs:48,obstacles:100,nps:3.611,length:770.149,characteristic:"Standard",difficulty:"Expert",events:12986,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.462,paritySummary:{errors:3,warns:1,resets:9}},{njs:19,offset:0,notes:1376,bombs:34,obstacles:97,nps:4.705,length:770.149,characteristic:"Standard",difficulty:"ExpertPlus",events:12595,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.462,paritySummary:{errors:0,warns:0,resets:6}},{njs:19,offset:0,notes:1,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:12568,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:1,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f621c70d06e8f5405ffa428f7b742b123208a656.zip",coverURL:"https://cdn.beatsaver.com/f621c70d06e8f5405ffa428f7b742b123208a656.jpg",previewURL:"https://cdn.beatsaver.com/f621c70d06e8f5405ffa428f7b742b123208a656.mp3"}],createdAt:"2019-12-01T19:39:02.667Z",updatedAt:"2019-12-01T19:39:02.667Z",lastPublishedAt:"2019-12-01T19:39:02.667Z"},{id:"56c2",name:"On The Floor (ft. Pitbull) - Jennifer Lopez",description:"You can most certainly dance to this song, I hope you like it!\nSend me your thoughts on Discord: Teuflum#5982\n\nExpert+ preview: https://www.youtube.com/watch?v=TPU4mCQngNQ\n\nMany thanks to my playtesters Redmagi, techbutterfly and Helen Carnate!\n\nDM me your feedback on discord: Teuflum#5982",uploader:{id:68740,name:"Teuflum",uniqueSet:!0,hash:"5cff0b7498cc5a672c851a6b",avatar:"https://cdn.beatsaver.com/avatar/114706869460664326.png",type:"DISCORD"},metadata:{bpm:130,duration:231,songName:"On The Floor",songSubName:"(ft. Pitbull)",songAuthorName:"Jennifer Lopez",levelAuthorName:"Teuflum"},stats:{plays:0,downloads:8646,upvotes:1696,downvotes:46,score:.9235},uploaded:"2019-07-13T12:11:30.889Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"56d18c176906a23b15702d3eb33f8669322ee312",key:"56c2",state:"Published",createdAt:"2019-07-13T12:11:30.889Z",sageScore:7,diffs:[{njs:10,offset:1,notes:307,bombs:0,obstacles:28,nps:1.415,length:470,characteristic:"Standard",difficulty:"Easy",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:87,warns:4,resets:0}},{njs:12,offset:1,notes:383,bombs:0,obstacles:30,nps:1.766,length:470,characteristic:"Standard",difficulty:"Normal",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:75,warns:13,resets:0}},{njs:14,offset:1,notes:638,bombs:0,obstacles:32,nps:2.941,length:470,characteristic:"Standard",difficulty:"Hard",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:29,warns:23,resets:0}},{njs:16,offset:.5,notes:838,bombs:0,obstacles:26,nps:3.863,length:470,characteristic:"Standard",difficulty:"Expert",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:30,warns:36,resets:0}},{njs:17,offset:0,notes:949,bombs:0,obstacles:23,nps:4.375,length:470,characteristic:"Standard",difficulty:"ExpertPlus",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:33,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/56d18c176906a23b15702d3eb33f8669322ee312.zip",coverURL:"https://cdn.beatsaver.com/56d18c176906a23b15702d3eb33f8669322ee312.jpg",previewURL:"https://cdn.beatsaver.com/56d18c176906a23b15702d3eb33f8669322ee312.mp3"}],createdAt:"2019-07-13T12:11:30.889Z",updatedAt:"2019-07-13T12:11:30.889Z",lastPublishedAt:"2019-07-13T12:11:30.889Z"},{id:"492e",name:"[OLD] Centuries - Fallout Boy | 2019 version | Mapped and Lighted by Ab",description:"Alright! Another one.\nNormal is pretty much top-Easy, couldn't decide.\nAb#4940 if you're interested in collabs\n\nAlso lights could get laggy",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:176,duration:227,songName:"Centuries",songSubName:"Fallout Boy",songAuthorName:"Ab",levelAuthorName:"TheAb"},stats:{plays:0,downloads:4393,upvotes:2252,downvotes:72,score:.9235},uploaded:"2019-04-28T22:58:20Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"158e65b2e9861c626344049ec4a069d1523ad060",key:"492e",state:"Published",createdAt:"2019-04-28T22:58:20Z",sageScore:4,diffs:[{njs:11,offset:0,notes:289,bombs:42,obstacles:4,nps:1.333,length:635.75,characteristic:"Standard",difficulty:"Normal",events:22890,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.733,paritySummary:{errors:79,warns:35,resets:2}},{njs:12,offset:0,notes:527,bombs:85,obstacles:5,nps:2.425,length:637.5,characteristic:"Standard",difficulty:"Hard",events:1,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.33,paritySummary:{errors:62,warns:51,resets:9}},{njs:12,offset:0,notes:762,bombs:158,obstacles:7,nps:3.506,length:637.5,characteristic:"Standard",difficulty:"Expert",events:22890,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.33,paritySummary:{errors:54,warns:44,resets:5}},{njs:18,offset:0,notes:1145,bombs:186,obstacles:0,nps:5.267,length:637.625,characteristic:"Standard",difficulty:"ExpertPlus",events:22890,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.372,paritySummary:{errors:68,warns:90,resets:6}}],downloadURL:"https://cdn.beatsaver.com/158e65b2e9861c626344049ec4a069d1523ad060.zip",coverURL:"https://cdn.beatsaver.com/158e65b2e9861c626344049ec4a069d1523ad060.jpg",previewURL:"https://cdn.beatsaver.com/158e65b2e9861c626344049ec4a069d1523ad060.mp3"}],createdAt:"2019-04-28T22:58:20Z",updatedAt:"2019-04-28T22:58:20Z",lastPublishedAt:"2019-04-28T22:58:20Z"},{id:"8215",name:"David Guetta, Brooks & Loote - Better When You're Gone",description:"First map of my Future House pack. I remember that I started this a long time ago, even before I had my VR; about 5 months ago going into September.\n\nVideo: https://youtu.be/NDDn7-Lzrlo\n\nEasy: Notes: 130 NPS: 1.22 NJS: 10\nNormal: Notes: 164 NPS: 1.65 NJS: 12\nHard: Notes: 267 NPS: 2.64 NJS: 14\nExpert: Notes: 398 NPS: 3.94 NJS: 16\nExpert+: Notes: 483 NPS: 4.76 NJS: 18\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:106,songName:"Better When You're Gone",songSubName:"(Ft. Loote)",songAuthorName:"David Guetta, Brooks",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:2743,upvotes:977,downvotes:16,score:.9233},uploaded:"2020-01-27T23:27:20.606Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"048b444b7011388e63e4b7bab1e8f96b4b51fa3d",key:"8215",state:"Published",createdAt:"2020-01-27T23:27:20.606Z",sageScore:6,diffs:[{njs:10,offset:1,notes:130,bombs:0,obstacles:0,nps:1.29,length:215,characteristic:"Standard",difficulty:"Easy",events:2063,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:100.781,paritySummary:{errors:54,warns:2,resets:0}},{njs:12,offset:.5,notes:164,bombs:0,obstacles:7,nps:1.652,length:211.75,characteristic:"Standard",difficulty:"Normal",events:2063,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:99.258,paritySummary:{errors:16,warns:6,resets:0}},{njs:14,offset:0,notes:267,bombs:0,obstacles:6,nps:2.643,length:215.5,characteristic:"Standard",difficulty:"Hard",events:2063,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:101.016,paritySummary:{errors:2,warns:2,resets:0}},{njs:16,offset:-.25,notes:398,bombs:0,obstacles:5,nps:3.94,length:215.5,characteristic:"Standard",difficulty:"Expert",events:2060,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:101.016,paritySummary:{errors:1,warns:0,resets:0}},{njs:18,offset:-.5,notes:483,bombs:4,obstacles:6,nps:4.765,length:216.25,characteristic:"Standard",difficulty:"ExpertPlus",events:2063,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:101.367,paritySummary:{errors:13,warns:18,resets:6}}],downloadURL:"https://cdn.beatsaver.com/048b444b7011388e63e4b7bab1e8f96b4b51fa3d.zip",coverURL:"https://cdn.beatsaver.com/048b444b7011388e63e4b7bab1e8f96b4b51fa3d.jpg",previewURL:"https://cdn.beatsaver.com/048b444b7011388e63e4b7bab1e8f96b4b51fa3d.mp3"}],createdAt:"2020-01-27T23:27:20.606Z",updatedAt:"2020-01-27T23:27:20.606Z",lastPublishedAt:"2020-01-27T23:27:20.606Z"},{id:"6352",name:"Paladin - EnV",description:'Map creators:\r\nYume - Notes / Walls\r\nRexxxzi - Lights\r\n\r\nThis is "High Tier Expert" difficulty\r\nWe hope you\'ll enjoy the map!',uploader:{id:37025,name:"yume",uniqueSet:!0,hash:"5cff0b7698cc5a672c853e8a",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853e8a?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:242,songName:"Paladin",songSubName:"",songAuthorName:"EnV",levelAuthorName:"Yume ft. Rexxz Lights"},stats:{plays:0,downloads:1187,upvotes:1079,downvotes:20,score:.9233},uploaded:"2019-09-14T12:32:01.763Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"583598b60c0ef891738d3b07c564cadff6500c63",key:"6352",state:"Published",createdAt:"2019-09-14T12:32:01.763Z",sageScore:7,diffs:[{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:9642,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1065,bombs:0,obstacles:7902,nps:4.615,length:500,characteristic:"Standard",difficulty:"Expert",events:9524,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:230.769,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1065,bombs:0,obstacles:7923,nps:4.615,length:500,characteristic:"Standard",difficulty:"ExpertPlus",events:9524,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:230.769,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/583598b60c0ef891738d3b07c564cadff6500c63.zip",coverURL:"https://cdn.beatsaver.com/583598b60c0ef891738d3b07c564cadff6500c63.jpg",previewURL:"https://cdn.beatsaver.com/583598b60c0ef891738d3b07c564cadff6500c63.mp3"}],createdAt:"2019-09-14T12:32:01.763Z",updatedAt:"2019-09-14T12:32:01.763Z",lastPublishedAt:"2019-09-14T12:32:01.763Z"},{id:"2c14",name:"CHVRCHES - The Mother We Share",description:"I noticed CHVRCHES' most popular song didn't have a map, so I gave it a shot. Check out my other maps, too!\r\n\r\nPreview: https://youtu.be/bGnUqfGrglY\r\nNormal / Hard / Expert\r\n\r\nhttps://www.twitch.tv/Syntheseizure",uploader:{id:31265,name:"syntheseizure",uniqueSet:!0,hash:"5cff0b7698cc5a672c8546bd",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8546bd?d=retro",type:"SIMPLE"},metadata:{bpm:87,duration:192,songName:"The Mother We Share",songSubName:"CHVRCHES",songAuthorName:"Syntheseizure",levelAuthorName:"Syntheseizure"},stats:{plays:0,downloads:1880,upvotes:1056,downvotes:19,score:.9233},uploaded:"2019-01-08T20:34:12Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4f96ae058a970508dad582e0ea60d5e6ad9d38b5",key:"2c14",state:"Published",createdAt:"2019-01-08T20:34:12Z",sageScore:4,diffs:[{njs:10,offset:0,notes:373,bombs:0,obstacles:2,nps:2.053,length:263.5,characteristic:"Standard",difficulty:"Normal",events:710,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.724,paritySummary:{errors:36,warns:7,resets:0}},{njs:10,offset:0,notes:480,bombs:0,obstacles:6,nps:2.641,length:263.5,characteristic:"Standard",difficulty:"Hard",events:710,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.724,paritySummary:{errors:20,warns:12,resets:0}},{njs:10,offset:0,notes:683,bombs:0,obstacles:12,nps:3.758,length:263.5,characteristic:"Standard",difficulty:"Expert",events:708,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.724,paritySummary:{errors:21,warns:7,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4f96ae058a970508dad582e0ea60d5e6ad9d38b5.zip",coverURL:"https://cdn.beatsaver.com/4f96ae058a970508dad582e0ea60d5e6ad9d38b5.jpg",previewURL:"https://cdn.beatsaver.com/4f96ae058a970508dad582e0ea60d5e6ad9d38b5.mp3"}],createdAt:"2019-01-08T20:34:12Z",updatedAt:"2019-01-08T20:34:12Z",lastPublishedAt:"2019-01-08T20:34:12Z"},{id:"2293",name:"My Soul,Your Beats",description:"Over 10 hours of work went into this to make it as good as it could be\r\nI consider this a new beginning, all previous maps of mine pale in comparison",uploader:{id:47724,name:"dafrandle",uniqueSet:!0,hash:"5cff0b7598cc5a672c8527e9",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c8527e9?d=retro",type:"SIMPLE"},metadata:{bpm:145,duration:276,songName:"My Soul,Your Beats",songSubName:"Lia",songAuthorName:"dafrandle",levelAuthorName:"dafrandle"},stats:{plays:0,downloads:3582,upvotes:1440,downvotes:35,score:.9233},uploaded:"2018-11-27T23:47:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"abc11caed9ca86fda3dacc12dd0bcca51041ebe0",key:"2293",state:"Published",createdAt:"2018-11-27T23:47:18Z",sageScore:6,diffs:[{njs:9,offset:0,notes:505,bombs:0,obstacles:3,nps:1.9,length:642.375,characteristic:"Standard",difficulty:"Normal",events:3955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.81,paritySummary:{errors:77,warns:13,resets:0}},{njs:10,offset:0,notes:768,bombs:0,obstacles:26,nps:2.889,length:642.375,characteristic:"Standard",difficulty:"Hard",events:3955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.81,paritySummary:{errors:64,warns:24,resets:0}},{njs:11,offset:0,notes:1120,bombs:62,obstacles:29,nps:4.214,length:642.375,characteristic:"Standard",difficulty:"Expert",events:3955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.81,paritySummary:{errors:89,warns:40,resets:5}}],downloadURL:"https://cdn.beatsaver.com/abc11caed9ca86fda3dacc12dd0bcca51041ebe0.zip",coverURL:"https://cdn.beatsaver.com/abc11caed9ca86fda3dacc12dd0bcca51041ebe0.jpg",previewURL:"https://cdn.beatsaver.com/abc11caed9ca86fda3dacc12dd0bcca51041ebe0.mp3"}],createdAt:"2018-11-27T23:47:18Z",updatedAt:"2018-11-27T23:47:18Z",lastPublishedAt:"2018-11-27T23:47:18Z"},{id:"1a0ba",name:"[Electro Swing Pack] Wolfgang Lohr & Maskarade - Hit The Road Jack",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/0ObNR9n_dDs\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:124,duration:159,songName:"Hit The Road Jack",songSubName:"",songAuthorName:"Wolfgang Lohr & Maskarade",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:14063,upvotes:841,downvotes:11,score:.9232},uploaded:"2021-07-08T15:26:18.072Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"75f10751d58f6f1ab0bc36e94039a144256adccb",key:"1a0ba",state:"Published",createdAt:"2021-07-08T15:26:18.072Z",sageScore:4,diffs:[{njs:16,offset:-.25,notes:475,bombs:0,obstacles:0,nps:3.089,length:317.75,characteristic:"Standard",difficulty:"Expert",events:1846,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.75,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:750,bombs:0,obstacles:0,nps:4.878,length:317.75,characteristic:"Standard",difficulty:"ExpertPlus",events:1846,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.75,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/75f10751d58f6f1ab0bc36e94039a144256adccb.zip",coverURL:"https://cdn.beatsaver.com/75f10751d58f6f1ab0bc36e94039a144256adccb.jpg",previewURL:"https://cdn.beatsaver.com/75f10751d58f6f1ab0bc36e94039a144256adccb.mp3"}],createdAt:"2021-07-08T15:26:18.072Z",updatedAt:"2021-07-08T15:26:18.072Z",lastPublishedAt:"2021-07-08T15:26:18.072Z"},{id:"924a",name:'JoJo ~Sono Chi no Sadame~ [JoJo\'s Bizarre Adventure Opening] - Hiroaki "TOMMY" Tominaga',description:'Not many people know this but my full name is actually Joetastic Joestar ;)\n\n"JoJo ~Sono Chi no Sadame~" is the first opening of JoJo\'s Bizarre Adventure: Phantom Blood by Hiroaki "TOMMY" Tominaga.\n\nMap Preview: https://youtu.be/WPprA9AS35A',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:146,duration:263,songName:"JoJo ~Sono Chi no Sadame~",songSubName:"",songAuthorName:'Hiroaki "TOMMY" Tominaga',levelAuthorName:"Joetastic"},stats:{plays:0,downloads:6854,upvotes:1594,downvotes:42,score:.9232},uploaded:"2020-03-21T18:09:50.603Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eb2b28402e27f784a64f99d338696a2bdd59fe2c",key:"924a",state:"Published",createdAt:"2020-03-21T18:09:50.603Z",sageScore:5,diffs:[{njs:16,offset:0,notes:1305,bombs:0,obstacles:16,nps:5.053,length:628.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4918,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:258.288,paritySummary:{errors:30,warns:38,resets:0}}],downloadURL:"https://cdn.beatsaver.com/eb2b28402e27f784a64f99d338696a2bdd59fe2c.zip",coverURL:"https://cdn.beatsaver.com/eb2b28402e27f784a64f99d338696a2bdd59fe2c.jpg",previewURL:"https://cdn.beatsaver.com/eb2b28402e27f784a64f99d338696a2bdd59fe2c.mp3"}],createdAt:"2020-03-21T18:09:50.603Z",updatedAt:"2020-03-21T18:09:50.603Z",lastPublishedAt:"2020-03-21T18:09:50.603Z"},{id:"aa5c",name:"MOMOLAND - BAAM (Remaster)",description:"Expert+ Preview: https://www.youtube.com/watch?v=5PUSZT6jUaY\n\nMan, I have been doing this for a year now. I feel old. Well enjoy this remake of the first map I uploaded!\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725 ! Or drop by the Kpop discord at: https://discord.gg/c9uHGYP",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:127,duration:209,songName:"BAAM",songSubName:"Remastered Map",songAuthorName:"MOMOLAND",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:8638,upvotes:1222,downvotes:26,score:.9231},uploaded:"2020-05-25T19:34:51.367Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"72746e0a89246d11a8fe7f3a23113f4605980a09",key:"aa5c",state:"Published",createdAt:"2020-05-25T19:34:51.367Z",sageScore:5,diffs:[{njs:12,offset:.4,notes:551,bombs:0,obstacles:148,nps:2.706,length:431,characteristic:"Standard",difficulty:"Hard",events:2998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.622,paritySummary:{errors:4,warns:0,resets:0}},{njs:16,offset:-.2,notes:823,bombs:0,obstacles:120,nps:4.041,length:431.063,characteristic:"Standard",difficulty:"Expert",events:2998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.652,paritySummary:{errors:6,warns:2,resets:0}},{njs:18,offset:-.4,notes:885,bombs:0,obstacles:111,nps:4.346,length:431,characteristic:"Standard",difficulty:"ExpertPlus",events:2998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.622,paritySummary:{errors:3,warns:7,resets:0}}],downloadURL:"https://cdn.beatsaver.com/72746e0a89246d11a8fe7f3a23113f4605980a09.zip",coverURL:"https://cdn.beatsaver.com/72746e0a89246d11a8fe7f3a23113f4605980a09.jpg",previewURL:"https://cdn.beatsaver.com/72746e0a89246d11a8fe7f3a23113f4605980a09.mp3"}],createdAt:"2020-05-25T19:34:51.367Z",updatedAt:"2020-05-25T19:34:51.367Z",lastPublishedAt:"2020-05-25T19:34:51.367Z"},{id:"33dc",name:"CeeLo Green ft. Jack Black - Kung Fu Fighting",description:"I only realised this yesterday, but I've managed to make a map of this Chinese inspired classic just in time for the Lunar new year. So happy Chinese new year everybody and I hope you enjoy it!\r\nTime spent mapping: 8:49\r\n\r\nVideo Preview: https://www.youtube.com/watch?v=73jUl1rH0Fo\r\nBeastSaber: https://bsaber.com/members/stumi/",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:110,duration:140,songName:"Kung Fu Fighting",songSubName:"CeeLo Green ft.Jack Black",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:7920,upvotes:1959,downvotes:59,score:.9231},uploaded:"2019-02-05T21:06:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b653e83bdae8028e77e84f751d23d619bc55f6f7",key:"33dc",state:"Published",createdAt:"2019-02-05T21:06:09Z",sageScore:6,diffs:[{njs:10,offset:0,notes:154,bombs:0,obstacles:26,nps:1.26,length:224,characteristic:"Standard",difficulty:"Easy",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:122.182,paritySummary:{errors:16,warns:18,resets:0}},{njs:10,offset:0,notes:197,bombs:0,obstacles:24,nps:1.612,length:224,characteristic:"Standard",difficulty:"Normal",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:122.182,paritySummary:{errors:17,warns:32,resets:0}},{njs:11,offset:0,notes:351,bombs:0,obstacles:13,nps:2.873,length:224,characteristic:"Standard",difficulty:"Hard",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:122.182,paritySummary:{errors:29,warns:29,resets:0}},{njs:14,offset:0,notes:502,bombs:0,obstacles:17,nps:4.109,length:224,characteristic:"Standard",difficulty:"Expert",events:1346,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:122.182,paritySummary:{errors:32,warns:40,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b653e83bdae8028e77e84f751d23d619bc55f6f7.zip",coverURL:"https://cdn.beatsaver.com/b653e83bdae8028e77e84f751d23d619bc55f6f7.jpg",previewURL:"https://cdn.beatsaver.com/b653e83bdae8028e77e84f751d23d619bc55f6f7.mp3"}],createdAt:"2019-02-05T21:06:09Z",updatedAt:"2019-02-05T21:06:09Z",lastPublishedAt:"2019-02-05T21:06:09Z"},{id:"24e",name:"Maculate - Get Schwifty (Andromulus Remix)",description:"Finished version! This track has 4 difficulties: Easy, Normal, Hard and Expert. So everyone can now get schwifty, regardless of skill level. \r\n\r\nThis is my first finished track, all feedback is welcome!",uploader:{id:53049,name:"enclose",uniqueSet:!1,hash:"5cff0b7398cc5a672c84ed3b",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ed3b?d=retro",type:"SIMPLE"},metadata:{bpm:200,duration:279,songName:"Get Schwifty (Andromulus Remix)",songSubName:"",songAuthorName:"Maculate",levelAuthorName:"enclose"},stats:{plays:0,downloads:5744,upvotes:4485,downvotes:191,score:.9231},uploaded:"2018-05-26T15:22:35Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"33d5c4fff97822eef1f02fc53bb0561f23489efe",key:"24e",state:"Published",createdAt:"2018-05-26T15:22:35Z",sageScore:6,diffs:[{njs:10,offset:0,notes:411,bombs:0,obstacles:77,nps:1.527,length:897,characteristic:"Standard",difficulty:"Easy",events:1673,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.1,paritySummary:{errors:120,warns:53,resets:0}},{njs:10,offset:0,notes:518,bombs:0,obstacles:120,nps:1.925,length:897,characteristic:"Standard",difficulty:"Normal",events:1754,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.1,paritySummary:{errors:123,warns:64,resets:0}},{njs:10,offset:0,notes:629,bombs:0,obstacles:131,nps:2.337,length:897,characteristic:"Standard",difficulty:"Hard",events:1890,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.1,paritySummary:{errors:119,warns:77,resets:0}},{njs:10,offset:0,notes:684,bombs:0,obstacles:220,nps:2.542,length:897,characteristic:"Standard",difficulty:"Expert",events:1905,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.1,paritySummary:{errors:112,warns:75,resets:0}}],downloadURL:"https://cdn.beatsaver.com/33d5c4fff97822eef1f02fc53bb0561f23489efe.zip",coverURL:"https://cdn.beatsaver.com/33d5c4fff97822eef1f02fc53bb0561f23489efe.jpg",previewURL:"https://cdn.beatsaver.com/33d5c4fff97822eef1f02fc53bb0561f23489efe.mp3"}],createdAt:"2018-05-26T15:22:35Z",updatedAt:"2018-05-26T15:22:35Z",lastPublishedAt:"2018-05-26T15:22:35Z"},{id:"13bea",name:"The Wall - (Buunshin Remix) [WALL MAP + CHROMA]",description:"Just wanna say that Rustic has inspired me, and has made me want to start mapping a while back, and with that, it has brought me many opportunities, and many friends.\n\nPrograms used\nScuffedWalls: https://github.com/thelightdesigner/ScuffedWalls\nbeatwalls: https://github.com/spookyGh0st/beatwalls\n\nNoodleExtensions: https://github.com/Aeroluna/NoodleExtensions/releases\n\nPreview: https://youtu.be/lFxGmGO2kww",uploader:{id:4284667,name:"tall_chilis_boi",uniqueSet:!0,hash:"5dec6d85fffaa6000679dc23",avatar:"https://cdn.beatsaver.com/avatar/427307106970894336.png",type:"DISCORD"},metadata:{bpm:172,duration:270,songName:"The Wall",songSubName:"(Buunshin Remix)",songAuthorName:"ABIS & Signal & Tasha Baxter",levelAuthorName:"Tall_Chilis_Boi"},stats:{plays:0,downloads:2353,upvotes:1376,downvotes:33,score:.9229},uploaded:"2021-02-08T08:27:12.773Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9192703d277e652e3dc367bc87c68107967c6898",key:"13bea",state:"Published",createdAt:"2021-02-08T08:27:12.773Z",sageScore:4,diffs:[{njs:20,offset:-.5,notes:768,bombs:0,obstacles:14814,nps:2.991,length:736,characteristic:"Standard",difficulty:"Expert",events:15872,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:256.744,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9192703d277e652e3dc367bc87c68107967c6898.zip",coverURL:"https://cdn.beatsaver.com/9192703d277e652e3dc367bc87c68107967c6898.jpg",previewURL:"https://cdn.beatsaver.com/9192703d277e652e3dc367bc87c68107967c6898.mp3"}],createdAt:"2021-02-08T08:27:12.773Z",updatedAt:"2021-02-08T08:27:12.773Z",lastPublishedAt:"2021-02-08T08:27:12.773Z"},{id:"9b89",name:"Stronger",description:"A wall map for this masterpiece of a song.\n----------------------------------------------\nPlease give feedback @Reddek#5864\nAnd thanks for playing!",uploader:{id:4233941,name:"reddek",uniqueSet:!0,hash:"5dbfb4426dea0b0006bd328d",avatar:"https://cdn.beatsaver.com/avatar/177436487086768129.png",type:"DISCORD"},metadata:{bpm:160,duration:207,songName:"Stronger",songSubName:"",songAuthorName:"TheFatRat, Slaydit & Anjulie",levelAuthorName:"Reddek"},stats:{plays:0,downloads:1299,upvotes:938,downvotes:15,score:.9229},uploaded:"2020-04-16T06:37:29.656Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e48afe3d1a2b94f5396f63e32972651495caf034",key:"9b89",state:"Published",createdAt:"2020-04-16T06:37:29.656Z",sageScore:4,diffs:[{njs:18,offset:0,notes:892,bombs:168,obstacles:2648,nps:4.471,length:532,characteristic:"Standard",difficulty:"ExpertPlus",events:3423,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:199.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e48afe3d1a2b94f5396f63e32972651495caf034.zip",coverURL:"https://cdn.beatsaver.com/e48afe3d1a2b94f5396f63e32972651495caf034.jpg",previewURL:"https://cdn.beatsaver.com/e48afe3d1a2b94f5396f63e32972651495caf034.mp3"}],createdAt:"2020-04-16T06:37:29.656Z",updatedAt:"2020-04-16T06:37:29.656Z",lastPublishedAt:"2020-04-16T06:37:29.656Z"},{id:"613b",name:"Seraphim On The Ring - Mitchie M ft. Hatsune Miku, Kagamine Rin, KAITO",description:'"Seraphim On The Ring" is a song by Mitchie M about pro wrestling match which Miku and Rin play against Meiko and Luka. The ringside commentator is KAITO and the referee is Len.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:175,duration:223,songName:"Seraphim On The Ring",songSubName:"",songAuthorName:"Mitchie M ft. Hatsune Miku, Kagamine Rin, KAITO",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2013,upvotes:992,downvotes:17,score:.9229},uploaded:"2019-09-04T09:20:18.405Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"605da022c1e9688e122688e3abf3ddc8321299a8",key:"613b",state:"Published",createdAt:"2019-09-04T09:20:18.405Z",sageScore:5,diffs:[{njs:12,offset:0,notes:679,bombs:0,obstacles:33,nps:3.215,length:616,characteristic:"Standard",difficulty:"Hard",events:5807,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.2,paritySummary:{errors:54,warns:41,resets:0}},{njs:14,offset:0,notes:913,bombs:0,obstacles:27,nps:4.323,length:616,characteristic:"Standard",difficulty:"Expert",events:5807,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.2,paritySummary:{errors:20,warns:21,resets:0}},{njs:16,offset:0,notes:1038,bombs:0,obstacles:30,nps:4.915,length:616,characteristic:"Standard",difficulty:"ExpertPlus",events:5807,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.2,paritySummary:{errors:33,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/605da022c1e9688e122688e3abf3ddc8321299a8.zip",coverURL:"https://cdn.beatsaver.com/605da022c1e9688e122688e3abf3ddc8321299a8.jpg",previewURL:"https://cdn.beatsaver.com/605da022c1e9688e122688e3abf3ddc8321299a8.mp3"}],createdAt:"2019-09-04T09:20:18.405Z",updatedAt:"2019-09-04T09:20:18.405Z",lastPublishedAt:"2019-09-04T09:20:18.405Z"},{id:"199e",name:"Super Mario 64 - Dire, Dire Docks (Wisp X Remix)",description:'Normal/Expert/Expert+ | BPM: 130 | Length: 3:23 | Notes: 376/688/1020\r\n\r\nI was just wondering how "Dire, Dire Docks" would look like in Beat Saber..\r\nThis is the result!\r\n\r\nLighting done with "Lightmap V2"\r\n\r\n12th Map.\r\n\r\nPreview:\r\nhttps://www.youtube.com/watch?v=dRprfDRvJJY\r\nSong:\r\nhttps://www.youtube.com/watch?v=56eIZKyhM6c',uploader:{id:4285825,name:"fefeland",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3bb",avatar:"https://cdn.beatsaver.com/avatar/119360573191225344.png",type:"DISCORD"},metadata:{bpm:130,duration:203,songName:"Dire, Dire Docks (Wisp X Remix)",songSubName:"Super Mario 64",songAuthorName:"FEFELAND",levelAuthorName:"fefeland"},stats:{plays:0,downloads:2005,upvotes:1351,downvotes:32,score:.9228},uploaded:"2018-10-10T20:02:06Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b8d647a30f15e33d77808f9a143f02e3af6016b4",key:"199e",state:"Published",createdAt:"2018-10-10T20:02:06Z",sageScore:5,diffs:[{njs:8,offset:0,notes:376,bombs:0,obstacles:50,nps:1.958,length:416,characteristic:"Standard",difficulty:"Normal",events:831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:72,warns:22,resets:0}},{njs:12,offset:0,notes:688,bombs:0,obstacles:51,nps:3.583,length:416,characteristic:"Standard",difficulty:"Expert",events:831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:46,warns:44,resets:0}},{njs:15,offset:0,notes:1020,bombs:0,obstacles:48,nps:5.313,length:416,characteristic:"Standard",difficulty:"ExpertPlus",events:831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:36,warns:32,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b8d647a30f15e33d77808f9a143f02e3af6016b4.zip",coverURL:"https://cdn.beatsaver.com/b8d647a30f15e33d77808f9a143f02e3af6016b4.jpg",previewURL:"https://cdn.beatsaver.com/b8d647a30f15e33d77808f9a143f02e3af6016b4.mp3"}],createdAt:"2018-10-10T20:02:06Z",updatedAt:"2018-10-10T20:02:06Z",lastPublishedAt:"2018-10-10T20:02:06Z"},{id:"65bb",name:"TWICE - Feel Special",description:"New Twice map by Aggrogahu and myself. I hope you enjoy it!\n\nKikaeaeon: Expert/Expert+\nAggrogahu: Hard/Normal",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:129,duration:208,songName:"Feel Special",songSubName:"",songAuthorName:"TWICE",levelAuthorName:"KikaeAeon & Aggrogahu"},stats:{plays:0,downloads:5121,upvotes:1156,downvotes:24,score:.9226},uploaded:"2019-09-25T05:14:20.078Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4644faf2fbb084c248d7e0f8d3592829ec7e19d0",key:"65bb",state:"Published",createdAt:"2019-09-25T05:14:20.078Z",sageScore:4,diffs:[{njs:10,offset:1,notes:351,bombs:0,obstacles:17,nps:1.747,length:432,characteristic:"Standard",difficulty:"Normal",events:1268,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.93,paritySummary:{errors:58,warns:30,resets:0}},{njs:10,offset:1,notes:552,bombs:0,obstacles:17,nps:2.747,length:432,characteristic:"Standard",difficulty:"Hard",events:1268,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.93,paritySummary:{errors:51,warns:36,resets:0}},{njs:12,offset:0,notes:762,bombs:0,obstacles:16,nps:3.792,length:432,characteristic:"Standard",difficulty:"Expert",events:1266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.93,paritySummary:{errors:16,warns:18,resets:0}},{njs:16,offset:0,notes:952,bombs:0,obstacles:36,nps:4.738,length:432,characteristic:"Standard",difficulty:"ExpertPlus",events:1266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.93,paritySummary:{errors:9,warns:9,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4644faf2fbb084c248d7e0f8d3592829ec7e19d0.zip",coverURL:"https://cdn.beatsaver.com/4644faf2fbb084c248d7e0f8d3592829ec7e19d0.jpg",previewURL:"https://cdn.beatsaver.com/4644faf2fbb084c248d7e0f8d3592829ec7e19d0.mp3"}],createdAt:"2019-09-25T05:14:20.078Z",updatedAt:"2019-09-25T05:14:20.078Z",lastPublishedAt:"2019-09-25T05:14:20.078Z"},{id:"48ff",name:"Sewayaki Kisune no Senko-san OP - Koyoi MofuMofu!!",description:"Twitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:103,duration:91,songName:"Koyoi MofuMofu",songSubName:"Agasa.K",songAuthorName:"Dack",levelAuthorName:"Dack"},stats:{plays:0,downloads:2294,upvotes:1317,downvotes:31,score:.9225},uploaded:"2019-04-28T12:14:58Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"52cba6c4432bca35081296a7e98be638f3f69c65",key:"48ff",state:"Published",createdAt:"2019-04-28T12:14:58Z",sageScore:2,diffs:[{njs:12,offset:0,notes:177,bombs:0,obstacles:0,nps:2.074,length:146.5,characteristic:"Standard",difficulty:"Normal",events:146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.34,paritySummary:{errors:10,warns:5,resets:0}},{njs:13,offset:0,notes:256,bombs:0,obstacles:0,nps:3,length:146.5,characteristic:"Standard",difficulty:"Hard",events:146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.34,paritySummary:{errors:13,warns:13,resets:0}},{njs:14,offset:0,notes:300,bombs:0,obstacles:0,nps:3.515,length:146.5,characteristic:"Standard",difficulty:"Expert",events:146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.34,paritySummary:{errors:6,warns:7,resets:0}},{njs:15,offset:0,notes:315,bombs:0,obstacles:0,nps:3.691,length:146.5,characteristic:"Standard",difficulty:"ExpertPlus",events:146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.34,paritySummary:{errors:7,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/52cba6c4432bca35081296a7e98be638f3f69c65.zip",coverURL:"https://cdn.beatsaver.com/52cba6c4432bca35081296a7e98be638f3f69c65.jpg",previewURL:"https://cdn.beatsaver.com/52cba6c4432bca35081296a7e98be638f3f69c65.mp3"}],createdAt:"2019-04-28T12:14:58Z",updatedAt:"2019-04-28T12:14:58Z",lastPublishedAt:"2019-04-28T12:14:58Z"},{id:"27f6",name:'We All Lift Together - Keith Power (From "Warframe")',description:"Welcome to Fortuna. Explore the frigid landscape of Venus populated with new Corpus threats, subterranean mysteries and an ecosystem on the brink of destruction.\r\nPlaying movie (Hard) : https://youtu.be/M1s6G4ib5Ew",uploader:{id:43083,name:"trgsonic",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c78",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c852c78?d=retro",type:"SIMPLE"},metadata:{bpm:134,duration:155,songName:"We All Lift Together",songSubName:"",songAuthorName:"Keith Power",levelAuthorName:"TRGsonic"},stats:{plays:0,downloads:1436,upvotes:736,downvotes:8,score:.9224},uploaded:"2018-12-25T14:00:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"050d447ebe73685cdb5515867dd7f065e0001fb7",key:"27f6",state:"Published",createdAt:"2018-12-25T14:00:28Z",sageScore:6,diffs:[{njs:10,offset:0,notes:197,bombs:0,obstacles:24,nps:1.375,length:320,characteristic:"Standard",difficulty:"Easy",events:144,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:143.284,paritySummary:{errors:37,warns:23,resets:0}},{njs:10.01,offset:0,notes:304,bombs:6,obstacles:23,nps:2.122,length:320,characteristic:"Standard",difficulty:"Normal",events:144,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:143.284,paritySummary:{errors:30,warns:21,resets:0}},{njs:10.05,offset:0,notes:360,bombs:8,obstacles:24,nps:2.513,length:320,characteristic:"Standard",difficulty:"Hard",events:144,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:143.284,paritySummary:{errors:34,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/050d447ebe73685cdb5515867dd7f065e0001fb7.zip",coverURL:"https://cdn.beatsaver.com/050d447ebe73685cdb5515867dd7f065e0001fb7.jpg",previewURL:"https://cdn.beatsaver.com/050d447ebe73685cdb5515867dd7f065e0001fb7.mp3"}],createdAt:"2018-12-25T14:00:28Z",updatedAt:"2018-12-25T14:00:28Z",lastPublishedAt:"2018-12-25T14:00:28Z"},{id:"7b5f",name:"My Stick! - Bad Lip Reading (Standard, 90 degree)",description:"Happy New Year 2020! I am a huge fan of the Bad Lip Reading Star Wars songs. I probably account for half of the 100s of millions of views they have received on youtube! If you're not familiar with them, go check them out! This newest one - My Stick! - just came out a few days ago and as soon as I heard it, I wanted to map it. So here it is - Easy, Normal, Hard, Expert, and Expert 90 degree difficulties available. \n\nBig thanks to my playtesters Maybeemae, MajorPickle, and Brentastic! You guys really help put the polish on these maps!\n\nhttps://www.youtube.com/watch?v=372GmcbFwCI",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:126,duration:205,songName:"My Stick",songSubName:"",songAuthorName:"Bad Lip Reading",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:2769,upvotes:1048,downvotes:20,score:.9223},uploaded:"2020-01-01T01:33:52.347Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4837ebdf91168a5e26eb5beebda03ebef31e6841",key:"7b5f",state:"Published",createdAt:"2020-01-01T01:33:52.347Z",sageScore:4,diffs:[{njs:8,offset:0,notes:173,bombs:14,obstacles:38,nps:.881,length:412.5,characteristic:"Standard",difficulty:"Easy",events:795,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.429,paritySummary:{errors:47,warns:21,resets:5}},{njs:10,offset:0,notes:292,bombs:22,obstacles:38,nps:1.458,length:420.5,characteristic:"Standard",difficulty:"Normal",events:795,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.238,paritySummary:{errors:48,warns:72,resets:10}},{njs:13,offset:0,notes:572,bombs:22,obstacles:38,nps:2.857,length:420.5,characteristic:"Standard",difficulty:"Hard",events:795,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.238,paritySummary:{errors:33,warns:84,resets:10}},{njs:13,offset:0,notes:683,bombs:22,obstacles:38,nps:3.411,length:420.5,characteristic:"Standard",difficulty:"Expert",events:795,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.238,paritySummary:{errors:31,warns:31,resets:9}},{njs:13,offset:0,notes:577,bombs:22,obstacles:7,nps:2.882,length:420.5,characteristic:"90Degree",difficulty:"Expert",events:1050,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.238,paritySummary:{errors:34,warns:85,resets:10}}],downloadURL:"https://cdn.beatsaver.com/4837ebdf91168a5e26eb5beebda03ebef31e6841.zip",coverURL:"https://cdn.beatsaver.com/4837ebdf91168a5e26eb5beebda03ebef31e6841.jpg",previewURL:"https://cdn.beatsaver.com/4837ebdf91168a5e26eb5beebda03ebef31e6841.mp3"}],createdAt:"2020-01-01T01:33:52.347Z",updatedAt:"2020-01-01T01:33:52.347Z",lastPublishedAt:"2020-01-01T01:33:52.347Z"},{id:"9137",name:"Uno - Little Big",description:"https://www.youtube.com/watch?v=8hiHXbvsT8o",uploader:{id:4285760,name:"okdisplay",uniqueSet:!0,hash:"5cff0b7398cc5a672c84eda2",avatar:"https://cdn.beatsaver.com/avatar/404020982676717570.png",type:"DISCORD"},metadata:{bpm:142,duration:163,songName:"UNO",songSubName:"",songAuthorName:"Little Big",levelAuthorName:"OkDisplay"},stats:{plays:0,downloads:1734,upvotes:997,downvotes:18,score:.9223},uploaded:"2020-03-18T02:49:03.418Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"359433e3d701cc06b47ac0d7fbb9b077cd970c01",key:"9137",state:"Published",createdAt:"2020-03-18T02:49:03.418Z",sageScore:4,diffs:[{njs:15,offset:0,notes:706,bombs:0,obstacles:0,nps:4.54,length:368,characteristic:"Standard",difficulty:"Expert",events:1500,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.493,paritySummary:{errors:13,warns:14,resets:0}},{njs:17,offset:0,notes:705,bombs:9,obstacles:23,nps:4.534,length:368,characteristic:"Standard",difficulty:"ExpertPlus",events:1464,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.493,paritySummary:{errors:11,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/359433e3d701cc06b47ac0d7fbb9b077cd970c01.zip",coverURL:"https://cdn.beatsaver.com/359433e3d701cc06b47ac0d7fbb9b077cd970c01.jpg",previewURL:"https://cdn.beatsaver.com/359433e3d701cc06b47ac0d7fbb9b077cd970c01.mp3"}],createdAt:"2020-03-18T02:49:03.418Z",updatedAt:"2020-03-18T02:49:03.418Z",lastPublishedAt:"2020-03-18T02:49:03.418Z"},{id:"7310",name:"The Struts - Body Talks ft. Kesha",description:"There is a significant lack of The Struts maps out there, so figured I'd get the ball rolling with this one. \n\nThe expert+ map was made by the incredible ConnorJC. He has a great mapping style and regularly uploads charts in the expert to expert+ range. You can check him out here:\nhttps://www.youtube.com/channel/UC_XqKPpfBiWEYZ-dhcKRPBw\nhttps://bsaber.com/members/connorjc/\n\nAll other difficulties are included as well\n\nEnjoy!",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:186,duration:176,songName:"Body Talks",songSubName:"Ft. Kesha",songAuthorName:"The Struts",levelAuthorName:"Stumi & ConnorJC"},stats:{plays:0,downloads:1554,upvotes:760,downvotes:9,score:.9223},uploaded:"2019-12-01T13:43:45.996Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ed72bd798a0d05592ff63a5ad844cdff01a76800",key:"7310",state:"Published",createdAt:"2019-12-01T13:43:45.996Z",sageScore:6,diffs:[{njs:12,offset:0,notes:130,bombs:0,obstacles:54,nps:.766,length:526,characteristic:"Standard",difficulty:"Easy",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.677,paritySummary:{errors:26,warns:14,resets:0}},{njs:12,offset:0,notes:218,bombs:4,obstacles:60,nps:1.285,length:526,characteristic:"Standard",difficulty:"Normal",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.677,paritySummary:{errors:37,warns:26,resets:0}},{njs:14,offset:.8,notes:446,bombs:7,obstacles:65,nps:2.614,length:529,characteristic:"Standard",difficulty:"Hard",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.645,paritySummary:{errors:20,warns:10,resets:5}},{njs:16,offset:.4,notes:704,bombs:22,obstacles:67,nps:4.115,length:530.333,characteristic:"Standard",difficulty:"Expert",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.075,paritySummary:{errors:5,warns:7,resets:1}},{njs:19,offset:.25,notes:777,bombs:6,obstacles:25,nps:4.566,length:527.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.161,paritySummary:{errors:7,warns:8,resets:2}}],downloadURL:"https://cdn.beatsaver.com/ed72bd798a0d05592ff63a5ad844cdff01a76800.zip",coverURL:"https://cdn.beatsaver.com/ed72bd798a0d05592ff63a5ad844cdff01a76800.jpg",previewURL:"https://cdn.beatsaver.com/ed72bd798a0d05592ff63a5ad844cdff01a76800.mp3"}],createdAt:"2019-12-01T13:43:45.996Z",updatedAt:"2019-12-01T13:43:45.996Z",lastPublishedAt:"2019-12-01T13:43:45.996Z"},{id:"38ec",name:"The Bad Touch - Bloodhound Gang - BT90",description:'This map is part of a 90s songpack. Search "BT90" to find all the songs in the songpack.\r\nMap is created by Heisenberg_IRL. Check out https://www.twitch.tv/heisenberg_irl\r\nLights are made by XypherOrion. Check out https://www.twitch.tv/xypherorion\r\n\r\nSpecial thanks to Fafurion for feedback and playtesting',uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:234,songName:"The Bad Touch",songSubName:"Bloodhound Gang [BT90]",songAuthorName:"Heisenberg & XypherOrion",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:5177,upvotes:2043,downvotes:65,score:.9223},uploaded:"2019-02-23T13:21:25Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d5e0ebff74ee79f517bbb580f3c55e389b09bfa0",key:"38ec",state:"Published",createdAt:"2019-02-23T13:21:25Z",sageScore:6,diffs:[{njs:14,offset:0,notes:809,bombs:0,obstacles:12,nps:3.694,length:449,characteristic:"Standard",difficulty:"Expert",events:2108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.024,paritySummary:{errors:55,warns:110,resets:0}},{njs:16,offset:0,notes:1062,bombs:2,obstacles:0,nps:4.849,length:449,characteristic:"Standard",difficulty:"ExpertPlus",events:2108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.024,paritySummary:{errors:113,warns:137,resets:2}}],downloadURL:"https://cdn.beatsaver.com/d5e0ebff74ee79f517bbb580f3c55e389b09bfa0.zip",coverURL:"https://cdn.beatsaver.com/d5e0ebff74ee79f517bbb580f3c55e389b09bfa0.jpg",previewURL:"https://cdn.beatsaver.com/d5e0ebff74ee79f517bbb580f3c55e389b09bfa0.mp3"}],createdAt:"2019-02-23T13:21:25Z",updatedAt:"2019-02-23T13:21:25Z",lastPublishedAt:"2019-02-23T13:21:25Z"},{id:"abbf",name:"PSYQUI feat. Marpril - Girly Cupid [Noodle Extensions]",description:"Expert Preview: https://www.youtube.com/watch?v=oD8JbrtlhZc\n\nSubmission #47 | 2nd place in the Building Blocks 2020 mapping contest. I hope you enjoy my first dive into Noodle Extensions and Chroma. This was a blast to make!\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725 !",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:133,duration:244,songName:"Girly Cupid",songSubName:"feat. Marpril",songAuthorName:"PSYQUI",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:4637,upvotes:1327,downvotes:32,score:.9222},uploaded:"2020-05-29T01:13:29.257Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"09083ec4540755cac095737c4af6af2910c4e856",key:"abbf",state:"Published",createdAt:"2020-05-29T01:13:29.257Z",sageScore:3,diffs:[{njs:18,offset:-.2,notes:764,bombs:0,obstacles:36331,nps:3.232,length:524,characteristic:"Standard",difficulty:"Expert",events:3539,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:236.391,paritySummary:{errors:28,warns:16,resets:0}}],downloadURL:"https://cdn.beatsaver.com/09083ec4540755cac095737c4af6af2910c4e856.zip",coverURL:"https://cdn.beatsaver.com/09083ec4540755cac095737c4af6af2910c4e856.jpg",previewURL:"https://cdn.beatsaver.com/09083ec4540755cac095737c4af6af2910c4e856.mp3"}],createdAt:"2020-05-29T01:13:29.257Z",updatedAt:"2020-05-29T01:13:29.257Z",lastPublishedAt:"2020-05-29T01:13:29.257Z"},{id:"1f90",name:"RIOT - Overkill",description:"",uploader:{id:408,name:"nuketime",uniqueSet:!0,hash:"5cff0b7498cc5a672c8507f7",avatar:"https://cdn.beatsaver.com/avatar/175811186007343104.png",type:"DISCORD"},metadata:{bpm:174,duration:308,songName:"Overkill",songSubName:"RIOT",songAuthorName:"Nuketime",levelAuthorName:"Nuketime"},stats:{plays:0,downloads:7566,upvotes:8186,downvotes:415,score:.9222},uploaded:"2018-11-10T20:57:38Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2fddb136bda7f9e29b4cb6621d6d8e0f8a43b126",key:"1f90",state:"Published",createdAt:"2018-11-10T20:57:38Z",sageScore:5,diffs:[{njs:17,offset:0,notes:1812,bombs:108,obstacles:132,nps:6.121,length:858.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3602,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296.034,paritySummary:{errors:85,warns:90,resets:0},stars:7.32}],downloadURL:"https://cdn.beatsaver.com/2fddb136bda7f9e29b4cb6621d6d8e0f8a43b126.zip",coverURL:"https://cdn.beatsaver.com/2fddb136bda7f9e29b4cb6621d6d8e0f8a43b126.jpg",previewURL:"https://cdn.beatsaver.com/2fddb136bda7f9e29b4cb6621d6d8e0f8a43b126.mp3"}],createdAt:"2018-11-10T20:57:38Z",updatedAt:"2018-11-10T20:57:38Z",lastPublishedAt:"2018-11-10T20:57:38Z"},{id:"58e",name:"History Maker - Dean Fujioka",description:"Expert / Hard / Normal | Get your Beat Saber -- on ICE!!! The lighting for this is top notch ;)\r\n\r\nVideo: https://youtu.be/ZS8YwPvKLgw\r\n\r\nThis map is best practice compliant: https://bit.ly/2LjbURw",uploader:{id:44595,name:"awfulnaut",uniqueSet:!0,hash:"5cff0b7398cc5a672c84edac",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84edac?d=retro",type:"SIMPLE"},metadata:{bpm:201,duration:187,songName:"History Maker",songSubName:"Dean Fujioka",songAuthorName:"Awfulnaut",levelAuthorName:"awfulnaut"},stats:{plays:0,downloads:2623,upvotes:1327,downvotes:32,score:.9222},uploaded:"2018-06-17T19:41:50Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"998f9b0a3e8b85ad697e8a7aa2c8b7d1f70936ce",key:"58e",state:"Published",createdAt:"2018-06-17T19:41:50Z",sageScore:6,diffs:[{njs:10,offset:0,notes:513,bombs:12,obstacles:27,nps:2.836,length:606,characteristic:"Standard",difficulty:"Normal",events:1153,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.896,paritySummary:{errors:86,warns:4,resets:0},stars:1.77},{njs:10,offset:0,notes:566,bombs:0,obstacles:27,nps:3.129,length:606,characteristic:"Standard",difficulty:"Hard",events:1153,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.896,paritySummary:{errors:47,warns:48,resets:0}},{njs:10,offset:0,notes:566,bombs:0,obstacles:27,nps:3.129,length:606,characteristic:"Standard",difficulty:"Expert",events:1153,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.896,paritySummary:{errors:43,warns:35,resets:0}}],downloadURL:"https://cdn.beatsaver.com/998f9b0a3e8b85ad697e8a7aa2c8b7d1f70936ce.zip",coverURL:"https://cdn.beatsaver.com/998f9b0a3e8b85ad697e8a7aa2c8b7d1f70936ce.jpg",previewURL:"https://cdn.beatsaver.com/998f9b0a3e8b85ad697e8a7aa2c8b7d1f70936ce.mp3"}],createdAt:"2018-06-17T19:41:50Z",updatedAt:"2018-06-17T19:41:50Z",lastPublishedAt:"2018-06-17T19:41:50Z"},{id:"14bd",name:"Starship - We Built This City",description:"Collab map between BennyDaBeast, Rustic and GreatYazer\r\nExper / Hard / Normal\r\nhttps://www.youtube.com/watch?v=KnLnUBIbfbM\r\nhttps://streamable.com/s8xvc",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:143,duration:298,songName:"We Built this City",songSubName:"Starship",songAuthorName:"GreatYazer, Rustic, BennyDaBeast",levelAuthorName:"rustic"},stats:{plays:0,downloads:9482,upvotes:3568,downvotes:145,score:.9221},uploaded:"2018-09-12T19:05:18Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"477fac9561e8931c7efaf49faa065611348f159d",key:"14bd",state:"Published",createdAt:"2018-09-12T19:05:18Z",sageScore:5,diffs:[{njs:10,offset:0,notes:472,bombs:26,obstacles:32,nps:1.64,length:686,characteristic:"Standard",difficulty:"Normal",events:1843,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:287.832,paritySummary:{errors:64,warns:56,resets:0},stars:1.03},{njs:10,offset:0,notes:759,bombs:26,obstacles:34,nps:2.633,length:687,characteristic:"Standard",difficulty:"Hard",events:1843,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.252,paritySummary:{errors:69,warns:90,resets:0},stars:1.66},{njs:11,offset:0,notes:967,bombs:26,obstacles:36,nps:3.355,length:687,characteristic:"Standard",difficulty:"Expert",events:1843,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.252,paritySummary:{errors:71,warns:126,resets:0}}],downloadURL:"https://cdn.beatsaver.com/477fac9561e8931c7efaf49faa065611348f159d.zip",coverURL:"https://cdn.beatsaver.com/477fac9561e8931c7efaf49faa065611348f159d.jpg",previewURL:"https://cdn.beatsaver.com/477fac9561e8931c7efaf49faa065611348f159d.mp3"}],createdAt:"2018-09-12T19:05:18Z",updatedAt:"2018-09-12T19:05:18Z",lastPublishedAt:"2018-09-12T19:05:18Z"},{id:"10e6",name:"We Wont Be Alone",description:"And here it is! \r\n\r\nAnother highly requested map!\r\n\r\nEnjoy to your hearts content!\r\n\r\n(P.s Thanks to everyone who supports me in my mapping endeavors and appreciate my work! it means a lot to me!)",uploader:{id:4289111,name:"blackblazon",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ef34",avatar:"https://cdn.beatsaver.com/avatar/127162370538733568.png",type:"DISCORD"},metadata:{bpm:175,duration:236,songName:"We Wont Be Alone",songSubName:"Feint",songAuthorName:"BlackBlazon",levelAuthorName:"blackblazon"},stats:{plays:0,downloads:1611,upvotes:1677,downvotes:48,score:.9221},uploaded:"2018-08-20T13:09:23Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fdb563492b79e57464424f73aa95ccc719f44576",key:"10e6",state:"Published",createdAt:"2018-08-20T13:09:23Z",sageScore:5,diffs:[{njs:10,offset:0,notes:1017,bombs:0,obstacles:0,nps:4.461,length:665,characteristic:"Standard",difficulty:"Expert",events:1043,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228,paritySummary:{errors:15,warns:5,resets:0}},{njs:15,offset:0,notes:1017,bombs:0,obstacles:0,nps:4.461,length:665,characteristic:"Standard",difficulty:"ExpertPlus",events:1043,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228,paritySummary:{errors:15,warns:5,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fdb563492b79e57464424f73aa95ccc719f44576.zip",coverURL:"https://cdn.beatsaver.com/fdb563492b79e57464424f73aa95ccc719f44576.jpg",previewURL:"https://cdn.beatsaver.com/fdb563492b79e57464424f73aa95ccc719f44576.mp3"}],createdAt:"2018-08-20T13:09:23Z",updatedAt:"2018-08-20T13:09:23Z",lastPublishedAt:"2018-08-20T13:09:23Z"},{id:"1a0b6",name:"[Electro Swing Pack] The Electric Swing Circus - Empires",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/WJy6_2cTPYg\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:120,duration:173,songName:"Empires",songSubName:"",songAuthorName:"The Electric Swing Circus",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:12715,upvotes:577,downvotes:3,score:.922},uploaded:"2021-07-08T15:24:55.769Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cecc89118b3a75ea7d65ceff5949b3ef19fea716",key:"1a0b6",state:"Published",createdAt:"2021-07-08T15:24:55.769Z",sageScore:4,diffs:[{njs:16,offset:-.5,notes:522,bombs:0,obstacles:24,nps:3.173,length:329,characteristic:"Standard",difficulty:"Expert",events:2051,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:823,bombs:0,obstacles:0,nps:5.003,length:329,characteristic:"Standard",difficulty:"ExpertPlus",events:2051,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cecc89118b3a75ea7d65ceff5949b3ef19fea716.zip",coverURL:"https://cdn.beatsaver.com/cecc89118b3a75ea7d65ceff5949b3ef19fea716.jpg",previewURL:"https://cdn.beatsaver.com/cecc89118b3a75ea7d65ceff5949b3ef19fea716.mp3"}],createdAt:"2021-07-08T15:24:55.769Z",updatedAt:"2021-07-08T15:24:55.769Z",lastPublishedAt:"2021-07-08T15:24:55.769Z"},{id:"97ec",name:"TheFatRat ft. Laura Brehm - MAYDAY (Nightcore Mix)",description:"#214\n\nYoutube Preview : https://youtu.be/YuAvugqwLiA",uploader:{id:4284588,name:"rigid",uniqueSet:!0,hash:"5cff0b7598cc5a672c852224",avatar:"https://cdn.beatsaver.com/avatar/295613108947386368.png",type:"DISCORD"},metadata:{bpm:173,duration:217,songName:"MAYDAY (Nightcore Mix)",songSubName:"",songAuthorName:"TheFatRat ft. Laura Brehm",levelAuthorName:"Rigid"},stats:{plays:0,downloads:1384,upvotes:782,downvotes:10,score:.922},uploaded:"2020-04-06T03:03:12.881Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"596010af1d16182372e2145d3b1687ecfed46387",key:"97ec",state:"Published",createdAt:"2020-04-06T03:03:12.881Z",sageScore:4,diffs:[{njs:16,offset:0,notes:751,bombs:30,obstacles:128,nps:3.599,length:600,characteristic:"Standard",difficulty:"Expert",events:2311,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.092,paritySummary:{errors:0,warns:0,resets:5}}],downloadURL:"https://cdn.beatsaver.com/596010af1d16182372e2145d3b1687ecfed46387.zip",coverURL:"https://cdn.beatsaver.com/596010af1d16182372e2145d3b1687ecfed46387.jpg",previewURL:"https://cdn.beatsaver.com/596010af1d16182372e2145d3b1687ecfed46387.mp3"}],createdAt:"2020-04-06T03:03:12.881Z",updatedAt:"2020-04-06T03:03:12.881Z",lastPublishedAt:"2020-04-06T03:03:12.881Z"},{id:"33c2",name:"Drive By - Train",description:'Another non weeb song, "Drive by" by Train, one of my favorite songs from the early days. Brought it from Itunes a long time ago so it\'s the highest quality file you can get :)',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:122,duration:196,songName:"Drive By",songSubName:"Train",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3897,upvotes:1087,downvotes:22,score:.922},uploaded:"2019-02-05T09:08:27Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5d3f6821934945c581882c067ef44d7e8c086423",key:"33c2",state:"Published",createdAt:"2019-02-05T09:08:27Z",sageScore:6,diffs:[{njs:15,offset:0,notes:895,bombs:0,obstacles:6,nps:4.795,length:379.5,characteristic:"Standard",difficulty:"Expert",events:1734,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.639,paritySummary:{errors:67,warns:85,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5d3f6821934945c581882c067ef44d7e8c086423.zip",coverURL:"https://cdn.beatsaver.com/5d3f6821934945c581882c067ef44d7e8c086423.jpg",previewURL:"https://cdn.beatsaver.com/5d3f6821934945c581882c067ef44d7e8c086423.mp3"}],createdAt:"2019-02-05T09:08:27Z",updatedAt:"2019-02-05T09:08:27Z",lastPublishedAt:"2019-02-05T09:08:27Z"},{id:"edf",name:"VORACITY",description:"enjoy :)",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:200,duration:221,songName:"VORACITY",songSubName:"OVERLOAD III OP",songAuthorName:"ejiejidayo",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:4278,upvotes:3077,downvotes:119,score:.922},uploaded:"2018-08-10T09:36:58Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7e096457e053dc0ee70fb5d08ed10332e5d5b75b",key:"edf",state:"Published",createdAt:"2018-08-10T09:36:58Z",sageScore:4,diffs:[{njs:10,offset:0,notes:778,bombs:37,obstacles:10,nps:3.723,length:696.5,characteristic:"Standard",difficulty:"Expert",events:827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.95,paritySummary:{errors:117,warns:85,resets:3}}],downloadURL:"https://cdn.beatsaver.com/7e096457e053dc0ee70fb5d08ed10332e5d5b75b.zip",coverURL:"https://cdn.beatsaver.com/7e096457e053dc0ee70fb5d08ed10332e5d5b75b.jpg",previewURL:"https://cdn.beatsaver.com/7e096457e053dc0ee70fb5d08ed10332e5d5b75b.mp3"}],createdAt:"2018-08-10T09:36:58Z",updatedAt:"2018-08-10T09:36:58Z",lastPublishedAt:"2018-08-10T09:36:58Z"},{id:"4f55",name:"Setting Sail, Coming Home (Bastion OST) - Darren Korb",description:"I remade my first map. Now with 75% less mid notes, and 300% more difficulty options! Disclaimer: Easy difficulty is actually Normal.\nSetting Sail, Coming Home is the credits theme for the game Bastion by Supergiant Games. It features vocals by Ashley Barrett and Darren Korb, who sing the verses of Zia and Zulf, respectively. As there are two vocalists in this song, I made two Normal difficulties, which each follow a different vocalist. The Hard and Expert difficulties follow both at the same time. Expert is mostly just a bit more fleshed out Hard, it's not too much more difficult.\nDefinitely check out this game if you haven't played it already.\nThanks to the playtesters Fruhead and CyanSnow on the modding Discord for testing this one.\nSee it played here:\nZia: https://youtu.be/WCcH3Sd6n-Y\nZulf: https://youtu.be/vcu_FX3c3t0\nHard: https://youtu.be/zUvWu9XglNA\nExpert: https://youtu.be/s2E2uvX5lJ4",uploader:{id:12233,name:"wolfb",uniqueSet:!0,hash:"5cff0b7698cc5a672c854e4f",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c854e4f?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:164,songName:"Setting Sail, Coming Home",songSubName:"Darren Korb",songAuthorName:"Wolfb",levelAuthorName:"wolfb"},stats:{plays:0,downloads:1272,upvotes:666,downvotes:6,score:.9219},uploaded:"2019-05-27T11:55:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"df2178c8d5cfa459861c263934e6a598b15a5452",key:"4f55",state:"Published",createdAt:"2019-05-27T11:55:36Z",sageScore:5,diffs:[{njs:10,offset:0,notes:251,bombs:0,obstacles:11,nps:1.569,length:320,characteristic:"Standard",difficulty:"Easy",events:1099,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:27,warns:5,resets:0}},{njs:10,offset:0,notes:242,bombs:0,obstacles:11,nps:1.513,length:320,characteristic:"Standard",difficulty:"Normal",events:1099,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:26,warns:7,resets:0}},{njs:12,offset:0,notes:368,bombs:0,obstacles:11,nps:2.3,length:320,characteristic:"Standard",difficulty:"Hard",events:1102,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:27,warns:36,resets:0}},{njs:14,offset:0,notes:444,bombs:0,obstacles:11,nps:2.775,length:320,characteristic:"Standard",difficulty:"Expert",events:1104,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:17,warns:37,resets:0}}],downloadURL:"https://cdn.beatsaver.com/df2178c8d5cfa459861c263934e6a598b15a5452.zip",coverURL:"https://cdn.beatsaver.com/df2178c8d5cfa459861c263934e6a598b15a5452.jpg",previewURL:"https://cdn.beatsaver.com/df2178c8d5cfa459861c263934e6a598b15a5452.mp3"}],createdAt:"2019-05-27T11:55:36Z",updatedAt:"2019-05-27T11:55:36Z",lastPublishedAt:"2019-05-27T11:55:36Z"},{id:"1f03",name:"Monster - Skillet (Kole Edit)",description:"2018-11-08: Reupload because of ranking! Scoreboards are unaffected.\r\n\r\nMonster by hard rock band Skillet was a request I got and I found it worthy and fun to make into a Beat Saber map, so here it is!\r\nSong has been edited and re-arranged to be tighter and not too repetitive.\r\n\r\nPreview:\r\nhttps://youtu.be/avTEevEonOA\r\n\r\nBPM: 135\r\nDuration: 1:52\r\nEasy, Normal, Hard and Expert difficulties.\r\n\r\nEasy: 247, 8 obstacles, 4 mines\r\nNormal: 300 notes, 8 obstacles, 8 mines\r\nHard: 423 notes, 8 obstacles, 8 mines\r\nExpert: 437 notes, 8 obstacles, 8 mines\r\n\r\nThanks to Edzo, RaZn, VenclaireVR, squeaksies and Todokete for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:135,duration:112,songName:"Monster",songSubName:"Skillet",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:8892,upvotes:4266,downvotes:185,score:.9219},uploaded:"2018-11-08T21:27:23Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5730ecc93a6bc9147bda83f7975791a03ba5b90b",key:"1f03",state:"Published",createdAt:"2018-11-08T21:27:23Z",sageScore:4,diffs:[{njs:10.5,offset:0,notes:247,bombs:4,obstacles:8,nps:2.365,length:235,characteristic:"Standard",difficulty:"Easy",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.444,paritySummary:{errors:47,warns:7,resets:2}},{njs:10.5,offset:0,notes:300,bombs:8,obstacles:8,nps:2.872,length:235,characteristic:"Standard",difficulty:"Normal",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.444,paritySummary:{errors:32,warns:20,resets:0}},{njs:11,offset:0,notes:423,bombs:8,obstacles:8,nps:4.05,length:235,characteristic:"Standard",difficulty:"Hard",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.444,paritySummary:{errors:77,warns:51,resets:0}},{njs:11,offset:0,notes:437,bombs:8,obstacles:8,nps:4.184,length:235,characteristic:"Standard",difficulty:"Expert",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.444,paritySummary:{errors:71,warns:71,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5730ecc93a6bc9147bda83f7975791a03ba5b90b.zip",coverURL:"https://cdn.beatsaver.com/5730ecc93a6bc9147bda83f7975791a03ba5b90b.jpg",previewURL:"https://cdn.beatsaver.com/5730ecc93a6bc9147bda83f7975791a03ba5b90b.mp3"}],createdAt:"2018-11-08T21:27:23Z",updatedAt:"2018-11-08T21:27:23Z",lastPublishedAt:"2018-11-08T21:27:23Z"},{id:"15c6",name:"Ghostbusters - Ray Parker Jr",description:"",uploader:{id:4285018,name:"majorpickle",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f792",avatar:"https://cdn.beatsaver.com/avatar/450358937657671680.png",type:"DISCORD"},metadata:{bpm:115.22,duration:246,songName:"Ghostbusters",songSubName:"",songAuthorName:"Ray Parker Jr.",levelAuthorName:"Majorpickle"},stats:{plays:0,downloads:7046,upvotes:1877,downvotes:58,score:.9219},uploaded:"2018-09-19T02:38:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cc424123372e316bd2fc9439bf0972aded811d04",state:"Published",createdAt:"2021-08-27T12:04:43.371828Z",sageScore:5,diffs:[{njs:10,offset:0,notes:651,bombs:15,obstacles:80,nps:2.828,length:442,characteristic:"Standard",difficulty:"Normal",events:3704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.168,paritySummary:{errors:25,warns:25,resets:4}},{njs:11,offset:0,notes:933,bombs:15,obstacles:80,nps:4.035,length:444.031,characteristic:"Standard",difficulty:"Hard",events:3704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.226,paritySummary:{errors:54,warns:62,resets:4}},{njs:15,offset:0,notes:933,bombs:15,obstacles:80,nps:4.035,length:444.031,characteristic:"Standard",difficulty:"Expert",events:3704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.226,paritySummary:{errors:54,warns:62,resets:4}},{njs:13,offset:0,notes:921,bombs:15,obstacles:72,nps:3.983,length:444.031,characteristic:"360Degree",difficulty:"Expert",events:2719,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.226,paritySummary:{errors:51,warns:50,resets:6}}],downloadURL:"https://cdn.beatsaver.com/cc424123372e316bd2fc9439bf0972aded811d04.zip",coverURL:"https://cdn.beatsaver.com/cc424123372e316bd2fc9439bf0972aded811d04.jpg",previewURL:"https://cdn.beatsaver.com/cc424123372e316bd2fc9439bf0972aded811d04.mp3"}],createdAt:"2018-09-19T02:38:07Z",updatedAt:"2021-08-27T12:05:13.876602Z",lastPublishedAt:"2021-08-27T12:04:50.582582Z"},{id:"19e23",name:"Home Free - Sea Shanty Medley",description:"Home Free medleys are amazing. This one was kind of a chat request. Cinema included.",uploader:{id:4287802,name:"origintt",uniqueSet:!0,hash:"5ef66418cb25920006b50ff3",avatar:"https://cdn.beatsaver.com/avatar/414156328072773632.png",type:"DISCORD"},metadata:{bpm:99,duration:236,songName:"Sea Shanty Medley",songSubName:"",songAuthorName:"Home Free",levelAuthorName:"OriginTT"},stats:{plays:0,downloads:6705,upvotes:603,downvotes:4,score:.9218},uploaded:"2021-07-04T19:18:25.991Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1fb8f1cd4a7e05c0a2463e36522298f0b24353ad",key:"19e23",state:"Published",createdAt:"2021-07-04T19:18:25.991Z",sageScore:5,diffs:[{njs:19,offset:0,notes:990,bombs:0,obstacles:20,nps:4.341,length:376.316,characteristic:"Standard",difficulty:"ExpertPlus",events:1464,chroma:!1,me:!1,ne:!1,cinema:!0,seconds:228.07,paritySummary:{errors:5,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1fb8f1cd4a7e05c0a2463e36522298f0b24353ad.zip",coverURL:"https://cdn.beatsaver.com/1fb8f1cd4a7e05c0a2463e36522298f0b24353ad.jpg",previewURL:"https://cdn.beatsaver.com/1fb8f1cd4a7e05c0a2463e36522298f0b24353ad.mp3"}],createdAt:"2021-07-04T19:18:25.991Z",updatedAt:"2021-07-04T19:18:25.991Z",lastPublishedAt:"2021-07-04T19:18:25.991Z"},{id:"744f",name:"Fantastic Dreamer (TV Size) [Konosuba! Opening] - Machico",description:"This map was converted from one of my old maps.\n\nFeel free to DM me on discord @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:185,duration:91,songName:"Fantastic Dreamer (TV Size)",songSubName:"",songAuthorName:"Machico",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4444,upvotes:1290,downvotes:31,score:.9218},uploaded:"2019-12-07T07:21:35.291Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c86360baf99485e61e18a80d48470c38f0faf4d3",key:"744f",state:"Published",createdAt:"2019-12-07T07:21:35.291Z",sageScore:3,diffs:[{njs:11,offset:0,notes:256,bombs:0,obstacles:0,nps:2.99,length:264,characteristic:"Standard",difficulty:"Hard",events:1956,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.622,paritySummary:{errors:20,warns:16,resets:0}},{njs:13,offset:0,notes:371,bombs:0,obstacles:2,nps:4.333,length:264,characteristic:"Standard",difficulty:"Expert",events:1956,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.622,paritySummary:{errors:15,warns:25,resets:0}},{njs:15,offset:0,notes:490,bombs:0,obstacles:4,nps:5.723,length:264,characteristic:"Standard",difficulty:"ExpertPlus",events:1956,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.622,paritySummary:{errors:20,warns:24,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c86360baf99485e61e18a80d48470c38f0faf4d3.zip",coverURL:"https://cdn.beatsaver.com/c86360baf99485e61e18a80d48470c38f0faf4d3.jpg",previewURL:"https://cdn.beatsaver.com/c86360baf99485e61e18a80d48470c38f0faf4d3.mp3"}],createdAt:"2019-12-07T07:21:35.291Z",updatedAt:"2019-12-07T07:21:35.291Z",lastPublishedAt:"2019-12-07T07:21:35.291Z"},{id:"4a3f",name:"[Anniversary] I Remember - Tristam [Heisenberg]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:110,duration:231,songName:"I Remember",songSubName:"Tristam",songAuthorName:"Heisenberg",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:3832,upvotes:2835,downvotes:107,score:.9218},uploaded:"2019-05-03T14:09:51Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"349ef04192948a8404ab7942d2813be3e37cd8fd",key:"4a3f",state:"Published",createdAt:"2019-05-03T14:09:51Z",sageScore:8,diffs:[{njs:11,offset:0,notes:237,bombs:0,obstacles:4,nps:1.137,length:382,characteristic:"Standard",difficulty:"Easy",events:8143,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:13,warns:24,resets:0}},{njs:12,offset:0,notes:362,bombs:0,obstacles:6,nps:1.737,length:382,characteristic:"Standard",difficulty:"Normal",events:8143,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:50,warns:35,resets:0}},{njs:13,offset:0,notes:465,bombs:0,obstacles:6,nps:2.232,length:382,characteristic:"Standard",difficulty:"Hard",events:8143,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:24,warns:36,resets:0}},{njs:14,offset:0,notes:627,bombs:0,obstacles:16,nps:3.009,length:382,characteristic:"Standard",difficulty:"Expert",events:8143,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:15,warns:26,resets:0}},{njs:16,offset:0,notes:853,bombs:0,obstacles:17,nps:4.094,length:382,characteristic:"Standard",difficulty:"ExpertPlus",events:8153,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:43,warns:111,resets:0}}],downloadURL:"https://cdn.beatsaver.com/349ef04192948a8404ab7942d2813be3e37cd8fd.zip",coverURL:"https://cdn.beatsaver.com/349ef04192948a8404ab7942d2813be3e37cd8fd.jpg",previewURL:"https://cdn.beatsaver.com/349ef04192948a8404ab7942d2813be3e37cd8fd.mp3"}],createdAt:"2019-05-03T14:09:51Z",updatedAt:"2019-05-03T14:09:51Z",lastPublishedAt:"2019-05-03T14:09:51Z"},{id:"17ac",name:"Holiday - Green Day",description:"Preview: https://www.youtube.com/watch?v=3eya5H-dYCc\nAlways enjoy making green day songs! We need more of them on beat saber!\nExpert - Hard - Normal\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:146,duration:233,songName:"Holiday",songSubName:"Green Day",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:4708,upvotes:2355,downvotes:82,score:.9218},uploaded:"2018-09-28T14:34:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"403efd4b7ec08f129f45f0859323f2d0ee052b34",key:"17ac",state:"Published",createdAt:"2018-09-28T14:34:41Z",sageScore:5,diffs:[{njs:10,offset:0,notes:477,bombs:0,obstacles:42,nps:2.161,length:539,characteristic:"Standard",difficulty:"Normal",events:1703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.507,paritySummary:{errors:45,warns:16,resets:0}},{njs:10,offset:0,notes:857,bombs:0,obstacles:2,nps:3.872,length:540.313,characteristic:"Standard",difficulty:"Hard",events:1703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.046,paritySummary:{errors:40,warns:78,resets:0}},{njs:10,offset:0,notes:1075,bombs:14,obstacles:2,nps:4.747,length:552.875,characteristic:"Standard",difficulty:"Expert",events:1703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:227.209,paritySummary:{errors:44,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/403efd4b7ec08f129f45f0859323f2d0ee052b34.zip",coverURL:"https://cdn.beatsaver.com/403efd4b7ec08f129f45f0859323f2d0ee052b34.jpg",previewURL:"https://cdn.beatsaver.com/403efd4b7ec08f129f45f0859323f2d0ee052b34.mp3"}],createdAt:"2018-09-28T14:34:41Z",updatedAt:"2018-09-28T14:34:41Z",lastPublishedAt:"2018-09-28T14:34:41Z"},{id:"5c83",name:"The Kids Arent Alright - The Offspring",description:"Shoutouts to twitch.tv/bearlyj and twitch.tv/whipstickgostop for playtesting!",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:194,duration:183,songName:"The Kids Arent Alright",songSubName:"",songAuthorName:"The Offspring",levelAuthorName:"Ris"},stats:{plays:0,downloads:5715,upvotes:2235,downvotes:76,score:.9217},uploaded:"2019-08-12T23:40:01.490Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"20986d8f9b32820de9a1953bf11db91abd27db27",key:"5c83",state:"Published",createdAt:"2019-08-12T23:40:01.490Z",sageScore:4,diffs:[{njs:10,offset:1,notes:328,bombs:2,obstacles:3,nps:1.848,length:573.809,characteristic:"Standard",difficulty:"Normal",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.467,paritySummary:{errors:44,warns:50,resets:0}},{njs:12,offset:1,notes:553,bombs:8,obstacles:3,nps:3.116,length:573.809,characteristic:"Standard",difficulty:"Hard",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.467,paritySummary:{errors:70,warns:70,resets:0}},{njs:16,offset:1,notes:909,bombs:8,obstacles:3,nps:5.122,length:573.809,characteristic:"Standard",difficulty:"Expert",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.467,paritySummary:{errors:61,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/20986d8f9b32820de9a1953bf11db91abd27db27.zip",coverURL:"https://cdn.beatsaver.com/20986d8f9b32820de9a1953bf11db91abd27db27.jpg",previewURL:"https://cdn.beatsaver.com/20986d8f9b32820de9a1953bf11db91abd27db27.mp3"}],createdAt:"2019-08-12T23:40:01.490Z",updatedAt:"2019-08-12T23:40:01.490Z",lastPublishedAt:"2019-08-12T23:40:01.490Z"},{id:"4a45",name:"[Anniversary] Nothing Stopping Me (ft. Kat Nestel) - Vicetone [BennyDaBeast]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:223,songName:"Nothing Stopping Me (ft. Kat Nestel)",songSubName:"Vicetone",songAuthorName:"BennyDaBeast",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:3386,upvotes:2390,downvotes:84,score:.9217},uploaded:"2019-05-03T14:10:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"01e9554069556f1756cbfcf9ac233b68d98b19c8",key:"4a45",state:"Published",createdAt:"2019-05-03T14:10:40Z",sageScore:7,diffs:[{njs:10,offset:0,notes:403,bombs:104,obstacles:22,nps:1.568,length:544,characteristic:"Standard",difficulty:"Easy",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:257.008,paritySummary:{errors:61,warns:32,resets:16}},{njs:10,offset:0,notes:481,bombs:104,obstacles:22,nps:1.872,length:544,characteristic:"Standard",difficulty:"Normal",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:257.008,paritySummary:{errors:71,warns:49,resets:20}},{njs:12,offset:0,notes:647,bombs:104,obstacles:22,nps:2.517,length:544,characteristic:"Standard",difficulty:"Hard",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:257.008,paritySummary:{errors:105,warns:80,resets:18}},{njs:12,offset:0,notes:693,bombs:104,obstacles:22,nps:3.274,length:448,characteristic:"Standard",difficulty:"Expert",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.654,paritySummary:{errors:65,warns:109,resets:20}},{njs:15,offset:0,notes:914,bombs:96,obstacles:34,nps:4.318,length:448,characteristic:"Standard",difficulty:"ExpertPlus",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.654,paritySummary:{errors:94,warns:128,resets:20}}],downloadURL:"https://cdn.beatsaver.com/01e9554069556f1756cbfcf9ac233b68d98b19c8.zip",coverURL:"https://cdn.beatsaver.com/01e9554069556f1756cbfcf9ac233b68d98b19c8.jpg",previewURL:"https://cdn.beatsaver.com/01e9554069556f1756cbfcf9ac233b68d98b19c8.mp3"}],createdAt:"2019-05-03T14:10:40Z",updatedAt:"2019-05-03T14:10:40Z",lastPublishedAt:"2019-05-03T14:10:40Z"},{id:"485a",name:"Lost in the Rhythm - Jamie Berry ft. Octavia Rose",description:"Got me twistin' and turnin' around in my Jimmy Choos\r\n\r\nOnce again get a variety of maps from the Funrankable team: Lighting and Ex+ by LittleAsi, Ex+ by Ryger, with Ex+, Expert, and Normal by baxter395. Enjoy each difficulty for a variety of novel styles.\r\n\r\nIf you enjoy our maps, please support the Funrankable Collective by contributing to our Patreon:\r\nhttps://www.patreon.com/funrankable\r\n\r\nThanks to these hip cats for playtesting and feedback: RedMagi, Qwasix",uploader:{id:37517,name:"funrankable",uniqueSet:!0,hash:"5cff0b7798cc5a672c8561ac",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8561ac?d=retro",type:"SIMPLE"},metadata:{bpm:121,duration:185,songName:"Lost in the Rhythm",songSubName:"Jamie Berry ft. Octavia Rose",songAuthorName:"Funrankable",levelAuthorName:"Funrankable"},stats:{plays:0,downloads:2942,upvotes:2309,downvotes:80,score:.9217},uploaded:"2019-04-25T19:03:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f819a2f44993ed7ea1630e103a106b2d1f7808ac",key:"485a",state:"Published",createdAt:"2019-04-25T19:03:46Z",sageScore:7,diffs:[{njs:11,offset:1,notes:350,bombs:0,obstacles:12,nps:2.028,length:348,characteristic:"Standard",difficulty:"Easy",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.562,paritySummary:{errors:48,warns:44,resets:0}},{njs:12,offset:1,notes:673,bombs:32,obstacles:6,nps:3.9,length:348,characteristic:"Standard",difficulty:"Normal",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.562,paritySummary:{errors:39,warns:20,resets:9}},{njs:14,offset:0,notes:785,bombs:207,obstacles:10,nps:4.549,length:348,characteristic:"Standard",difficulty:"Hard",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.562,paritySummary:{errors:37,warns:22,resets:11}},{njs:14,offset:0,notes:899,bombs:0,obstacles:4,nps:5.008,length:362,characteristic:"Standard",difficulty:"Expert",events:7794,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.504,paritySummary:{errors:38,warns:35,resets:0}},{njs:16,offset:0,notes:786,bombs:5,obstacles:79,nps:4.355,length:364,characteristic:"Standard",difficulty:"ExpertPlus",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.496,paritySummary:{errors:63,warns:97,resets:4}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f819a2f44993ed7ea1630e103a106b2d1f7808ac.zip",coverURL:"https://cdn.beatsaver.com/f819a2f44993ed7ea1630e103a106b2d1f7808ac.jpg",previewURL:"https://cdn.beatsaver.com/f819a2f44993ed7ea1630e103a106b2d1f7808ac.mp3"}],createdAt:"2019-04-25T19:03:46Z",updatedAt:"2019-04-25T19:03:46Z",lastPublishedAt:"2019-04-25T19:03:46Z"},{id:"19ca",name:"Bubble Pop - Hyuna",description:"Made for Nichole!\r\nCheck her out on twitch: https://www.twitch.tv/lovingwaifuu\r\n\r\nSee it in action: https://www.youtube.com/watch?v=U2-JYSybh9Y\r\n\r\nThank you to my playtesters:\r\n\r\nQTpop (https://www.twitch.tv/qtpop)\r\nDuovr (https://www.twitch.tv/duovr)\r\nXypherorion (https://www.twitch.tv/Xypherorion)\r\n\r\nI stream playing and making maps for beat saber: https://www.twitch.tv/fafurion",uploader:{id:38202,name:"fafurion",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f945",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f945?d=retro",type:"SIMPLE"},metadata:{bpm:146,duration:214,songName:"Bubble Pop",songSubName:"Hyuna",songAuthorName:"Fafurion",levelAuthorName:"fafurion"},stats:{plays:0,downloads:8139,upvotes:2698,downvotes:100,score:.9217},uploaded:"2018-10-12T03:28:19Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"e8ed13a78cd1e566f754d0cb47d4b5cde8918abe",key:"19ca",state:"Published",createdAt:"2018-10-12T03:28:19Z",sageScore:6,diffs:[{njs:10,offset:0,notes:355,bombs:0,obstacles:2,nps:1.695,length:509.719,characteristic:"Standard",difficulty:"Easy",events:1211,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.473,paritySummary:{errors:15,warns:2,resets:0},stars:.91},{njs:10,offset:0,notes:497,bombs:0,obstacles:2,nps:2.373,length:509.719,characteristic:"Standard",difficulty:"Normal",events:1211,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.473,paritySummary:{errors:28,warns:3,resets:0}},{njs:10,offset:0,notes:677,bombs:0,obstacles:87,nps:3.232,length:509.719,characteristic:"Standard",difficulty:"Hard",events:1211,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.473,paritySummary:{errors:51,warns:47,resets:0},stars:2.17},{njs:13,offset:0,notes:791,bombs:0,obstacles:118,nps:3.776,length:509.719,characteristic:"Standard",difficulty:"Expert",events:1211,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.473,paritySummary:{errors:70,warns:64,resets:0},stars:2.8}],downloadURL:"https://cdn.beatsaver.com/e8ed13a78cd1e566f754d0cb47d4b5cde8918abe.zip",coverURL:"https://cdn.beatsaver.com/e8ed13a78cd1e566f754d0cb47d4b5cde8918abe.jpg",previewURL:"https://cdn.beatsaver.com/e8ed13a78cd1e566f754d0cb47d4b5cde8918abe.mp3"}],createdAt:"2018-10-12T03:28:19Z",updatedAt:"2018-10-12T03:28:19Z",lastPublishedAt:"2018-10-12T03:28:19Z"},{id:"3a4",name:"Boulevard of Broken Dreams - Green Day",description:"Expert - Hard - Normal\n1000+ Notes on Expert\nLighting Events\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:167,duration:266,songName:"Boulevard of Broken Dreams",songSubName:"Green Day",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:6999,upvotes:6552,downvotes:321,score:.9216},uploaded:"2018-06-04T08:30:49Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fa36428f6eed2648dade2fe320156adfaabe07b5",key:"3a4",state:"Published",createdAt:"2018-06-04T08:30:49Z",sageScore:5,diffs:[{njs:10,offset:0,notes:474,bombs:0,obstacles:0,nps:1.932,length:683,characteristic:"Standard",difficulty:"Normal",events:1076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.389,paritySummary:{errors:182,warns:9,resets:0}},{njs:10,offset:0,notes:747,bombs:0,obstacles:0,nps:3.044,length:683,characteristic:"Standard",difficulty:"Hard",events:1076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.389,paritySummary:{errors:97,warns:30,resets:0}},{njs:10,offset:0,notes:1049,bombs:0,obstacles:0,nps:4.275,length:683,characteristic:"Standard",difficulty:"Expert",events:1076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.389,paritySummary:{errors:91,warns:73,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fa36428f6eed2648dade2fe320156adfaabe07b5.zip",coverURL:"https://cdn.beatsaver.com/fa36428f6eed2648dade2fe320156adfaabe07b5.jpg",previewURL:"https://cdn.beatsaver.com/fa36428f6eed2648dade2fe320156adfaabe07b5.mp3"}],createdAt:"2018-06-04T08:30:49Z",updatedAt:"2018-06-04T08:30:49Z",lastPublishedAt:"2018-06-04T08:30:49Z"},{id:"10fe4",name:"We Like To Party (on the train tracks)",description:"Don't play on the tracks.\n\n\n\n\n\n\n\n\n\n\n\n\n(account definitely isn't a Mawntee alt account no sir)",uploader:{id:1602,name:"chief-queef",uniqueSet:!0,hash:"5f9a4d2a030219000627c2bf",avatar:"https://cdn.beatsaver.com/avatar/1602.jpg",type:"SIMPLE"},metadata:{bpm:136,duration:34,songName:"We Like To Party",songSubName:"",songAuthorName:"CHURCH OF LEL",levelAuthorName:"Chief Queef"},stats:{plays:0,downloads:2345,upvotes:1022,downvotes:20,score:.9215},uploaded:"2020-11-15T18:12:41.227Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d004ad1ee631ae38ba7f0d336a039da8beb0b552",key:"10fe4",state:"Published",createdAt:"2020-11-15T18:12:41.227Z",sageScore:5,diffs:[{njs:69,offset:0,notes:781,bombs:0,obstacles:0,nps:23.922,length:73.984,characteristic:"Lawless",difficulty:"Easy",events:939,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:32.64,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d004ad1ee631ae38ba7f0d336a039da8beb0b552.zip",coverURL:"https://cdn.beatsaver.com/d004ad1ee631ae38ba7f0d336a039da8beb0b552.jpg",previewURL:"https://cdn.beatsaver.com/d004ad1ee631ae38ba7f0d336a039da8beb0b552.mp3"}],createdAt:"2020-11-15T18:12:41.227Z",updatedAt:"2020-11-15T18:12:41.227Z",lastPublishedAt:"2020-11-15T18:12:41.227Z"},{id:"a72f",name:"The World of Tune - Onoken feat. GaQdan",description:"88-2",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:108,duration:217,songName:"The World of Tune",songSubName:"Tones and Souls",songAuthorName:"Onoken feat. GaQdan",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:814,upvotes:597,downvotes:4,score:.9215},uploaded:"2020-05-17T11:49:56.405Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"750910ebc1b4e958ed2266ba31786ba52569c6a5",key:"a72f",state:"Published",createdAt:"2020-05-17T11:49:56.405Z",sageScore:6,diffs:[{njs:13,offset:-.3,notes:400,bombs:0,obstacles:65,nps:1.893,length:380.393,characteristic:"Standard",difficulty:"Hard",events:1813,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.329,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:-.6,notes:761,bombs:0,obstacles:56,nps:3.601,length:380.393,characteristic:"Standard",difficulty:"Expert",events:1813,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.329,paritySummary:{errors:5,warns:5,resets:0}},{njs:17,offset:.2,notes:948,bombs:0,obstacles:57,nps:4.486,length:380.393,characteristic:"Standard",difficulty:"ExpertPlus",events:1813,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.329,paritySummary:{errors:3,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/750910ebc1b4e958ed2266ba31786ba52569c6a5.zip",coverURL:"https://cdn.beatsaver.com/750910ebc1b4e958ed2266ba31786ba52569c6a5.jpg",previewURL:"https://cdn.beatsaver.com/750910ebc1b4e958ed2266ba31786ba52569c6a5.mp3"}],createdAt:"2020-05-17T11:49:56.405Z",updatedAt:"2020-05-17T11:49:56.405Z",lastPublishedAt:"2020-05-17T11:49:56.405Z"},{id:"3b6c",name:"Happatai - YATTA!",description:"edited: fixed a mistake in the Hard mode\r\n\r\nG-R-EE-N LEAVES! Japanese YMCA tbh\r\nIf you know this song, you a legend\r\n\r\nYoutube Preview: coming soon\r\n\r\nBPM 133\r\nHard, Expert\r\n\r\nHave fun!\r\n\r\ncontact me on discord\r\nDiscord: ETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:133,duration:237,songName:"YATTA!",songSubName:"Happatai",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:1630,upvotes:874,downvotes:14,score:.9215},uploaded:"2019-03-04T07:04:15Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9a7a73b32c7ffbc48a352963eb7298a918269458",key:"3b6c",state:"Published",createdAt:"2019-03-04T07:04:15Z",sageScore:6,diffs:[{njs:12,offset:0,notes:729,bombs:14,obstacles:8,nps:3.192,length:506.25,characteristic:"Standard",difficulty:"Hard",events:1354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228.383,paritySummary:{errors:83,warns:23,resets:2}},{njs:12,offset:0,notes:833,bombs:14,obstacles:8,nps:3.647,length:506.25,characteristic:"Standard",difficulty:"Expert",events:1354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228.383,paritySummary:{errors:75,warns:27,resets:2}}],downloadURL:"https://cdn.beatsaver.com/9a7a73b32c7ffbc48a352963eb7298a918269458.zip",coverURL:"https://cdn.beatsaver.com/9a7a73b32c7ffbc48a352963eb7298a918269458.jpg",previewURL:"https://cdn.beatsaver.com/9a7a73b32c7ffbc48a352963eb7298a918269458.mp3"}],createdAt:"2019-03-04T07:04:15Z",updatedAt:"2019-03-04T07:04:15Z",lastPublishedAt:"2019-03-04T07:04:15Z"},{id:"d411",name:"[FUTURE FUNK PACK] SUPER RISER! (Short Ver.) - Nanidato",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\n"SUPER RISER!" by Nanidato was sampled from Chieri Ito\'s "Merry Christmas" \n\nThis version of "SUPER RISER!" is a short edit I made to reduce the repetitive sections of the song near the end\n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:141,duration:155,songName:"SUPER RISER!",songSubName:"(Short Ver.)",songAuthorName:"Nanidato",levelAuthorName:"ETAN"},stats:{plays:0,downloads:3828,upvotes:766,downvotes:10,score:.9214},uploaded:"2020-08-11T17:47:02.338Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c6b7136536ef5647374198769b3211b2b2e4ee17",key:"d411",state:"Published",createdAt:"2020-08-11T17:47:02.338Z",sageScore:7,diffs:[{njs:10,offset:0,notes:158,bombs:0,obstacles:14,nps:1.066,length:347.5,characteristic:"Standard",difficulty:"Easy",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:147.872,paritySummary:{errors:57,warns:10,resets:0}},{njs:11,offset:1,notes:218,bombs:0,obstacles:14,nps:1.454,length:351.5,characteristic:"Standard",difficulty:"Normal",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.574,paritySummary:{errors:14,warns:2,resets:0}},{njs:13,offset:1,notes:398,bombs:0,obstacles:16,nps:2.654,length:351.5,characteristic:"Standard",difficulty:"Hard",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.574,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:.1,notes:578,bombs:0,obstacles:16,nps:3.854,length:351.5,characteristic:"Standard",difficulty:"Expert",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.574,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:-.4,notes:781,bombs:0,obstacles:15,nps:5.207,length:351.5,characteristic:"Standard",difficulty:"ExpertPlus",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.574,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c6b7136536ef5647374198769b3211b2b2e4ee17.zip",coverURL:"https://cdn.beatsaver.com/c6b7136536ef5647374198769b3211b2b2e4ee17.jpg",previewURL:"https://cdn.beatsaver.com/c6b7136536ef5647374198769b3211b2b2e4ee17.mp3"}],createdAt:"2020-08-11T17:47:02.338Z",updatedAt:"2020-08-11T17:47:02.338Z",lastPublishedAt:"2020-08-11T17:47:02.338Z"},{id:"6e6e",name:"The Pretender - Foo Fighters",description:"Shoutout to twitch.tv/whipstickgostop for playtesting!",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:173,duration:271,songName:"The Pretender",songSubName:"",songAuthorName:"Foo Fighters",levelAuthorName:"Ris"},stats:{plays:0,downloads:6031,upvotes:2032,downvotes:67,score:.9213},uploaded:"2019-11-05T23:48:37.168Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"aa64d183dbdfd111f578e3ab80beeca2f61d13eb",key:"6e6e",state:"Published",createdAt:"2019-11-05T23:48:37.168Z",sageScore:2,diffs:[{njs:10,offset:0,notes:427,bombs:0,obstacles:6,nps:1.612,length:764,characteristic:"Standard",difficulty:"Normal",events:471,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:264.971,paritySummary:{errors:70,warns:44,resets:0}},{njs:12,offset:0,notes:641,bombs:0,obstacles:6,nps:2.418,length:764.5,characteristic:"Standard",difficulty:"Hard",events:471,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.145,paritySummary:{errors:78,warns:64,resets:0}},{njs:16,offset:.7,notes:958,bombs:4,obstacles:6,nps:3.613,length:764.5,characteristic:"Standard",difficulty:"Expert",events:471,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.145,paritySummary:{errors:64,warns:63,resets:2}}],downloadURL:"https://cdn.beatsaver.com/aa64d183dbdfd111f578e3ab80beeca2f61d13eb.zip",coverURL:"https://cdn.beatsaver.com/aa64d183dbdfd111f578e3ab80beeca2f61d13eb.jpg",previewURL:"https://cdn.beatsaver.com/aa64d183dbdfd111f578e3ab80beeca2f61d13eb.mp3"}],createdAt:"2019-11-05T23:48:37.168Z",updatedAt:"2019-11-05T23:48:37.168Z",lastPublishedAt:"2019-11-05T23:48:37.168Z"},{id:"68c5",name:"Sky Fracture VIP (ft. Miss Lina) - Getsix",description:"Ever wondered how one song would look like when mapped by several different mappers in their own mapping style? Then this map is for you! A big collaboration project started by Sykes19, it features a total of 17 maps and 6 unique lightshows, made by 15 mappers and 5 lighters. Special thanks to Getsix for making a Beat Saber edit of his song Sky Fracture VIP ft. Miss Lina!\n\nMapping Extensions mod required for some difficulties (see below).\nChromaLite mod highly recommended for Chroma colored lights.\nSongCore mod highly recommended for custom colors.\n\nStandard:\n1. techbutterfly (794 notes)\n2. Helen Carnate (833 notes)\n3. Bloodcloak (845 notes)\n4. Teuflum (1327 notes)\n5. Skyler Wallace (1329 notes)\n6. Raxan (1444 notes [found in No Arrows])\n7. LEh4nnes (1725 notes [found in No Arrows])\n\nLawless:\n1. Aeroluna (1355 notes)\n2. EncodeRed (1390 notes)\n3. xScaramouche (1585 notes)\n4. CyanSnow (1361 notes [Mapping Extensions])\n5. spooky ghost & Skyler Wallace (633 notes [Mapping Extensions])\n\nOne Saber:\n1. Skyler Wallace (775 notes)\n2. Kolezan (793 notes)\n3. 219278 (968 notes)\n4. 219278 (1104 notes)\n5. thelitlewiseowl (1347 notes)\n\nLightshows:\n1. Halcyon12 (17,993 lighting events)\n2. 219278 - (23,157 lighting events)\n3. Skeelie (26,500 lighting events)\n4. Aeroluna (29,982 lighting events)\n5. spooky ghost (27,387 lighting events, 26,047 walls [Mapping Extensions])\n6. 125K Lightshow (125,038 lighting events [found in No Arrows])",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:176,duration:219,songName:"Sky Fracture VIP",songSubName:"ft. Miss Lina",songAuthorName:"Getsix",levelAuthorName:"Various Mappers"},stats:{plays:0,downloads:4504,upvotes:2272,downvotes:79,score:.9213},uploaded:"2019-10-09T06:45:54.603Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"499e94f2ffb162dba02d4e499163a9cde3b925e5",key:"68c5",state:"Published",createdAt:"2019-10-09T06:45:54.603Z",sageScore:7,diffs:[{njs:16,offset:1,notes:794,bombs:0,obstacles:122,nps:2.019,length:1153.797,characteristic:"Standard",difficulty:"Easy",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:393.34,paritySummary:{errors:49,warns:43,resets:0}},{njs:15,offset:1,notes:833,bombs:34,obstacles:10,nps:3.858,length:633.356,characteristic:"Standard",difficulty:"Normal",events:29982,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:62,warns:52,resets:2}},{njs:16,offset:.75,notes:845,bombs:24,obstacles:64,nps:3.913,length:633.419,characteristic:"Standard",difficulty:"Hard",events:26500,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.938,paritySummary:{errors:12,warns:4,resets:8}},{njs:19,offset:0,notes:1327,bombs:84,obstacles:74,nps:6.146,length:633.356,characteristic:"Standard",difficulty:"Expert",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:18,warns:19,resets:11}},{njs:20,offset:0,notes:1329,bombs:29,obstacles:153,nps:6.155,length:633.356,characteristic:"Standard",difficulty:"ExpertPlus",events:27387,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:90,warns:100,resets:10}},{njs:16,offset:.75,notes:775,bombs:25,obstacles:215,nps:3.589,length:633.356,characteristic:"OneSaber",difficulty:"Easy",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:37,warns:62,resets:2}},{njs:16,offset:.75,notes:793,bombs:72,obstacles:54,nps:3.673,length:633.356,characteristic:"OneSaber",difficulty:"Normal",events:26500,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:32,warns:94,resets:3}},{njs:17,offset:.25,notes:968,bombs:0,obstacles:58,nps:4.483,length:633.356,characteristic:"OneSaber",difficulty:"Hard",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:8,warns:4,resets:0}},{njs:17,offset:.25,notes:1104,bombs:0,obstacles:58,nps:5.113,length:633.356,characteristic:"OneSaber",difficulty:"Expert",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:27,warns:23,resets:0}},{njs:19,offset:.125,notes:1347,bombs:26,obstacles:22,nps:6.236,length:633.656,characteristic:"OneSaber",difficulty:"ExpertPlus",events:27387,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.019,paritySummary:{errors:38,warns:85,resets:3}},{njs:22,offset:0,notes:1444,bombs:0,obstacles:37,nps:6.688,length:633.356,characteristic:"NoArrows",difficulty:"Hard",events:29982,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:9,warns:20,resets:0}},{njs:22,offset:0,notes:1725,bombs:118,obstacles:104,nps:7.989,length:633.356,characteristic:"NoArrows",difficulty:"Expert",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:10,warns:4,resets:13}},{njs:100,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"NoArrows",difficulty:"ExpertPlus",events:125018,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Normal",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Hard",events:26500,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Expert",events:29982,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:0,bombs:0,obstacles:26047,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:27387,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:1355,bombs:18,obstacles:0,nps:6.276,length:633.356,characteristic:"Lawless",difficulty:"Easy",events:29982,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:26,warns:28,resets:0}},{njs:17,offset:1,notes:1390,bombs:46,obstacles:65,nps:6.437,length:633.419,characteristic:"Lawless",difficulty:"Normal",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.938,paritySummary:{errors:32,warns:18,resets:0}},{njs:19,offset:0,notes:1585,bombs:46,obstacles:25,nps:7.341,length:633.356,characteristic:"Lawless",difficulty:"Hard",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:16,warns:14,resets:0}},{njs:21,offset:0,notes:1361,bombs:46,obstacles:1,nps:6.303,length:633.356,characteristic:"Lawless",difficulty:"Expert",events:26083,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:633,bombs:0,obstacles:26047,nps:3.077,length:603.356,characteristic:"Lawless",difficulty:"ExpertPlus",events:27387,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:205.69,paritySummary:{errors:64,warns:39,resets:0}}],downloadURL:"https://cdn.beatsaver.com/499e94f2ffb162dba02d4e499163a9cde3b925e5.zip",coverURL:"https://cdn.beatsaver.com/499e94f2ffb162dba02d4e499163a9cde3b925e5.jpg",previewURL:"https://cdn.beatsaver.com/499e94f2ffb162dba02d4e499163a9cde3b925e5.mp3"}],createdAt:"2019-10-09T06:45:54.603Z",updatedAt:"2019-10-09T06:45:54.603Z",lastPublishedAt:"2019-10-09T06:45:54.603Z"},{id:"612d",name:"[Anniversary] Overkill - RIOT [Heisenberg & Skyler Wallace]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:174,duration:310,songName:"Overkill",songSubName:"",songAuthorName:"RIOT",levelAuthorName:"Heisenberg & Skyler Wallace"},stats:{plays:0,downloads:2777,upvotes:1933,downvotes:62,score:.9213},uploaded:"2019-09-04T02:20:01.432Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8af36a369b051a4a82348dccd2051ee64530d12d",key:"612d",state:"Published",createdAt:"2019-09-04T02:20:01.432Z",sageScore:6,diffs:[{njs:15,offset:.75,notes:826,bombs:664,obstacles:25,nps:2.79,length:858.5,characteristic:"Standard",difficulty:"Hard",events:12607,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296.035,paritySummary:{errors:58,warns:88,resets:16}},{njs:17,offset:.25,notes:1114,bombs:668,obstacles:27,nps:3.763,length:858.5,characteristic:"Standard",difficulty:"Expert",events:12190,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296.034,paritySummary:{errors:60,warns:107,resets:16}},{njs:19,offset:.25,notes:1925,bombs:462,obstacles:1e3,nps:6.503,length:858.5,characteristic:"Standard",difficulty:"ExpertPlus",events:12513,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:296.035,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8af36a369b051a4a82348dccd2051ee64530d12d.zip",coverURL:"https://cdn.beatsaver.com/8af36a369b051a4a82348dccd2051ee64530d12d.jpg",previewURL:"https://cdn.beatsaver.com/8af36a369b051a4a82348dccd2051ee64530d12d.mp3"}],createdAt:"2019-09-04T02:20:01.432Z",updatedAt:"2019-09-04T02:20:01.432Z",lastPublishedAt:"2019-09-04T02:20:01.432Z"},{id:"5222",name:"To see the future [Sword Art Online Alternative: Gun Gale Online Ending]",description:"Preview:\r\nhttps://www.youtube.com/watch?v=DEp-eEgl1_w\r\n\r\nMAPPING EXTENSIONS REQUIRED for walls and such\r\nThis took forever but it was SOOO worth it\r\n\r\nThanks to Sehria_K for playtesting!\r\n\r\nSAO Alternative: GGO ED by LLENN (Tomori Kusunoki)\r\n\r\nPlease enjoy\r\ngimme feedback on Discord\r\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:137,duration:256,songName:"To see the future",songSubName:"Tomori Kusunoki",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:3227,upvotes:940,downvotes:17,score:.9212},uploaded:"2019-06-07T21:47:12Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7e33f5491f94b5b3590864629579ed59f3f8fc90",key:"5222",state:"Published",createdAt:"2019-06-07T21:47:12Z",sageScore:6,diffs:[{njs:13,offset:0,notes:622,bombs:111,obstacles:692,nps:2.479,length:573,characteristic:"Standard",difficulty:"Hard",events:3793,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:250.949,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:924,bombs:92,obstacles:692,nps:3.68,length:573.25,characteristic:"Standard",difficulty:"Expert",events:3793,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:251.058,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7e33f5491f94b5b3590864629579ed59f3f8fc90.zip",coverURL:"https://cdn.beatsaver.com/7e33f5491f94b5b3590864629579ed59f3f8fc90.jpg",previewURL:"https://cdn.beatsaver.com/7e33f5491f94b5b3590864629579ed59f3f8fc90.mp3"}],createdAt:"2019-06-07T21:47:12Z",updatedAt:"2019-06-07T21:47:12Z",lastPublishedAt:"2019-06-07T21:47:12Z"},{id:"2ece",name:"#CookieJar - Red Velvet",description:"I love Nichole (LovingWaifuu) I made this chart for her\r\nFollow her twitch: https://www.twitch.tv/lovingwaifuu\r\nAlso follow me on twitch: https://www.twitch.tv/rinkusenpai\r\nThank you Redmagi and Don for the testplays!\r\nEdit: I fixed some weird stuff that happened with copy/paste and my stupidity, sorry about leaderboards",uploader:{id:16388,name:"rinkusenpai",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f6cc",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f6cc?d=retro",type:"SIMPLE"},metadata:{bpm:159,duration:214,songName:"#Cookie Jar",songSubName:"Red Velvet",songAuthorName:"RinkuSenpai",levelAuthorName:"rinkusenpai"},stats:{plays:0,downloads:2705,upvotes:1202,downvotes:28,score:.9212},uploaded:"2019-01-19T01:42:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ae11541d849b9126469c79f5ab61b088def692c1",key:"2ece",state:"Published",createdAt:"2019-01-19T01:42:07Z",sageScore:5,diffs:[{njs:12,offset:0,notes:821,bombs:0,obstacles:20,nps:4.029,length:540,characteristic:"Standard",difficulty:"Expert",events:2173,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.774,paritySummary:{errors:43,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ae11541d849b9126469c79f5ab61b088def692c1.zip",coverURL:"https://cdn.beatsaver.com/ae11541d849b9126469c79f5ab61b088def692c1.jpg",previewURL:"https://cdn.beatsaver.com/ae11541d849b9126469c79f5ab61b088def692c1.mp3"}],createdAt:"2019-01-19T01:42:07Z",updatedAt:"2019-01-19T01:42:07Z",lastPublishedAt:"2019-01-19T01:42:07Z"},{id:"83b",name:"Otter Pop (feat. Hollis) - Shawn Wasabi",description:"Difficulties: Expert+ Only\r\nMore Benny Originals: https://beatsaver.com/searchhtml.php?q=bennydabeast",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:93,duration:170,songName:"Otter Pop (feat. Hollis)",songSubName:"Shawn Wasabi",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:3164,upvotes:2048,downvotes:68,score:.9212},uploaded:"2018-07-06T21:44:56Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c7e15a9eaeaae0fe9dd8e4ad62cfd849e3cc6cc7",key:"83b",state:"Published",createdAt:"2018-07-06T21:44:56Z",sageScore:5,diffs:[{njs:10,offset:0,notes:706,bombs:2,obstacles:36,nps:4.275,length:256,characteristic:"Standard",difficulty:"ExpertPlus",events:235,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.161,paritySummary:{errors:89,warns:89,resets:1}}],downloadURL:"https://cdn.beatsaver.com/c7e15a9eaeaae0fe9dd8e4ad62cfd849e3cc6cc7.zip",coverURL:"https://cdn.beatsaver.com/c7e15a9eaeaae0fe9dd8e4ad62cfd849e3cc6cc7.jpg",previewURL:"https://cdn.beatsaver.com/c7e15a9eaeaae0fe9dd8e4ad62cfd849e3cc6cc7.mp3"}],createdAt:"2018-07-06T21:44:56Z",updatedAt:"2018-07-06T21:44:56Z",lastPublishedAt:"2018-07-06T21:44:56Z"},{id:"dd1d",name:"yasuoP - Electric Angel/えれくとりっく・えんじぇぅ - Kagamine Rin Kagamine Ren - ArrangeCover 【Wall Map】(Fixed)",description:"Fixed\n\n【Preview】\nhttps://youtu.be/RI2jxRwj6WY",uploader:{id:4285467,name:"fefy",uniqueSet:!0,hash:"5cff0b7798cc5a672c856908",avatar:"https://cdn.beatsaver.com/avatar/380656936460484620.png",type:"DISCORD"},metadata:{bpm:150,duration:192,songName:"えれくとりっく・えんじぇぅ",songSubName:"鏡音リン・鏡音レンアレンジカバー",songAuthorName:"ヤスオ",levelAuthorName:"Fefy〈ふぇふぃー〉"},stats:{plays:0,downloads:1627,upvotes:963,downvotes:18,score:.9211},uploaded:"2020-08-24T09:58:50.214Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bba2b6d3af3dc614c65c4b87b6a50f118ed181a8",key:"dd1d",state:"Published",createdAt:"2020-08-24T09:58:50.214Z",sageScore:3,diffs:[{njs:16,offset:0,notes:639,bombs:0,obstacles:39988,nps:3.41,length:468.5,characteristic:"Standard",difficulty:"Hard",events:5,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:187.4,paritySummary:{errors:14,warns:15,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bba2b6d3af3dc614c65c4b87b6a50f118ed181a8.zip",coverURL:"https://cdn.beatsaver.com/bba2b6d3af3dc614c65c4b87b6a50f118ed181a8.jpg",previewURL:"https://cdn.beatsaver.com/bba2b6d3af3dc614c65c4b87b6a50f118ed181a8.mp3"}],createdAt:"2020-08-24T09:58:50.214Z",updatedAt:"2020-08-24T09:58:50.214Z",lastPublishedAt:"2020-08-24T09:58:50.214Z"},{id:"86e9",name:"Best Day Of My Life - American Authors",description:'"Best Day of My Life" is a song by American pop rock band American Authors. The song was written by band members Zac Barnett, Dave Rublin, Matt Sanchez, and James Adam Shelley, along with producers Aaron Accetta and Shep Goodman. "Best Day of My Life" was originally recorded for release as a single by Mercury Records and Island Records on March 19, 2013.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:100,duration:194,songName:"Best Day Of My Life",songSubName:"",songAuthorName:"American Authors",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2731,upvotes:863,downvotes:14,score:.9211},uploaded:"2020-02-14T16:59:24.776Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6b253cbb5a2a81c2575e0778614bf009d7954834",key:"86e9",state:"Published",createdAt:"2020-02-14T16:59:24.776Z",sageScore:9,diffs:[{njs:8,offset:.4,notes:194,bombs:0,obstacles:4,nps:1.017,length:318,characteristic:"Standard",difficulty:"Easy",events:3091,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:28,warns:5,resets:0}},{njs:10,offset:.2,notes:399,bombs:0,obstacles:4,nps:2.091,length:318,characteristic:"Standard",difficulty:"Normal",events:3091,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:25,warns:24,resets:0}},{njs:12,offset:0,notes:634,bombs:0,obstacles:4,nps:3.323,length:318,characteristic:"Standard",difficulty:"Hard",events:3091,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:4,warns:5,resets:0}},{njs:14,offset:0,notes:837,bombs:0,obstacles:11,nps:4.387,length:318,characteristic:"Standard",difficulty:"Expert",events:3091,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:20,warns:20,resets:0}},{njs:16,offset:.4,notes:948,bombs:0,obstacles:11,nps:4.969,length:318,characteristic:"Standard",difficulty:"ExpertPlus",events:3095,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:15,warns:15,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6b253cbb5a2a81c2575e0778614bf009d7954834.zip",coverURL:"https://cdn.beatsaver.com/6b253cbb5a2a81c2575e0778614bf009d7954834.jpg",previewURL:"https://cdn.beatsaver.com/6b253cbb5a2a81c2575e0778614bf009d7954834.mp3"}],createdAt:"2020-02-14T16:59:24.776Z",updatedAt:"2020-02-14T16:59:24.776Z",lastPublishedAt:"2020-02-14T16:59:24.776Z"},{id:"5335",name:"David Guetta, Martin Garrix & Brooks - Like I Do",description:"This map - trust me - is sensational..\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:99,songName:"Like I Do",songSubName:"",songAuthorName:"David Guetta, Martin Garrix, Brooks",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:2486,upvotes:1153,downvotes:26,score:.9211},uploaded:"2019-06-16T19:05:31.814Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"59e1b8fa392e26bbcc528dcea08b80699efdbeb6",key:"5335",state:"Published",createdAt:"2019-06-16T19:05:31.814Z",sageScore:3,diffs:[{njs:11,offset:1,notes:171,bombs:0,obstacles:1,nps:1.91,length:191,characteristic:"Standard",difficulty:"Normal",events:4711,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.531,paritySummary:{errors:16,warns:3,resets:0}},{njs:13,offset:1,notes:234,bombs:0,obstacles:3,nps:2.6,length:192,characteristic:"Standard",difficulty:"Hard",events:4711,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:7,warns:0,resets:0}},{njs:15,offset:0,notes:305,bombs:4,obstacles:7,nps:3.407,length:191,characteristic:"Standard",difficulty:"Expert",events:4711,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.531,paritySummary:{errors:9,warns:6,resets:0}},{njs:17,offset:0,notes:397,bombs:12,obstacles:10,nps:4.411,length:192,characteristic:"Standard",difficulty:"ExpertPlus",events:4764,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:3,warns:2,resets:3}}],downloadURL:"https://cdn.beatsaver.com/59e1b8fa392e26bbcc528dcea08b80699efdbeb6.zip",coverURL:"https://cdn.beatsaver.com/59e1b8fa392e26bbcc528dcea08b80699efdbeb6.jpg",previewURL:"https://cdn.beatsaver.com/59e1b8fa392e26bbcc528dcea08b80699efdbeb6.mp3"}],createdAt:"2019-06-16T19:05:31.814Z",updatedAt:"2019-06-16T19:05:31.814Z",lastPublishedAt:"2019-06-16T19:05:31.814Z"},{id:"e44",name:"Big Girl (You Are Beautiful) - MIKA",description:"Prepare yourself for some big moves!\r\nPlaythrough : https://youtu.be/hzGaITR-648",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:116,duration:241,songName:"Big Girl (You Are Beatiful)",songSubName:"MIKA",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:3095,upvotes:1222,downvotes:29,score:.9211},uploaded:"2018-08-07T12:02:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6c4f86a126cd7465ec536837f3e73874e07068ef",key:"e44",state:"Published",createdAt:"2018-08-07T12:02:28Z",sageScore:5,diffs:[{njs:10,offset:0,notes:855,bombs:0,obstacles:18,nps:3.723,length:444,characteristic:"Standard",difficulty:"Expert",events:645,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.655,paritySummary:{errors:56,warns:63,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6c4f86a126cd7465ec536837f3e73874e07068ef.zip",coverURL:"https://cdn.beatsaver.com/6c4f86a126cd7465ec536837f3e73874e07068ef.jpg",previewURL:"https://cdn.beatsaver.com/6c4f86a126cd7465ec536837f3e73874e07068ef.mp3"}],createdAt:"2018-08-07T12:02:28Z",updatedAt:"2018-08-07T12:02:28Z",lastPublishedAt:"2018-08-07T12:02:28Z"},{id:"6bfa",name:"Approaching Nirvana - Alone",description:"https://www.youtube.com/watch?v=lZvGn7RUC7c",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:170,songName:"Alone",songSubName:"",songAuthorName:"Approaching Nirvana",levelAuthorName:"Rustic"},stats:{plays:0,downloads:1796,upvotes:1032,downvotes:21,score:.921},uploaded:"2019-10-24T19:54:05.671Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ccf70e940a4ec45c70a8f3ae7be18a2ea771461d",key:"6bfa",state:"Published",createdAt:"2019-10-24T19:54:05.671Z",sageScore:6,diffs:[{njs:18,offset:0,notes:416,bombs:0,obstacles:1689,nps:2.558,length:347,characteristic:"Standard",difficulty:"Expert",events:3383,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:162.656,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ccf70e940a4ec45c70a8f3ae7be18a2ea771461d.zip",coverURL:"https://cdn.beatsaver.com/ccf70e940a4ec45c70a8f3ae7be18a2ea771461d.jpg",previewURL:"https://cdn.beatsaver.com/ccf70e940a4ec45c70a8f3ae7be18a2ea771461d.mp3"}],createdAt:"2019-10-24T19:54:05.671Z",updatedAt:"2019-10-24T19:54:05.671Z",lastPublishedAt:"2019-10-24T19:54:05.671Z"},{id:"6330",name:"dj-Jo - The Legend of Zelda Ocarina of Time Title Theme Remix",description:"Ocarina of Time is one of my favorites games for the N64. Hope you guys enjoy it as much as I did",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:165,duration:249,songName:"The Legend of Zelda Ocarina of Time Title Theme Remix",songSubName:"",songAuthorName:"dj-Jo",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:2252,upvotes:670,downvotes:7,score:.9209},uploaded:"2019-09-13T19:15:16.984Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"35dffa3cbcaca2261d3bdd7306df9503fd9adc0f",key:"6330",state:"Published",createdAt:"2019-09-13T19:15:16.984Z",sageScore:6,diffs:[{njs:14,offset:0,notes:745,bombs:0,obstacles:28,nps:3.242,length:632,characteristic:"Standard",difficulty:"Expert",events:890,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:229.818,paritySummary:{errors:18,warns:7,resets:0}},{njs:16,offset:0,notes:955,bombs:0,obstacles:30,nps:4.155,length:632,characteristic:"Standard",difficulty:"ExpertPlus",events:1030,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:229.818,paritySummary:{errors:21,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/35dffa3cbcaca2261d3bdd7306df9503fd9adc0f.zip",coverURL:"https://cdn.beatsaver.com/35dffa3cbcaca2261d3bdd7306df9503fd9adc0f.jpg",previewURL:"https://cdn.beatsaver.com/35dffa3cbcaca2261d3bdd7306df9503fd9adc0f.mp3"}],createdAt:"2019-09-13T19:15:16.984Z",updatedAt:"2019-09-13T19:15:16.984Z",lastPublishedAt:"2019-09-13T19:15:16.984Z"},{id:"217",name:"Beat it - Michael Jackson",description:"Easy/Normal/Hard/Expert - Obstacles and mines purely for dance moves! 100% Expert Playthrough: https://bit.ly/2IKzCp3\r\n\r\n- Freeek =)",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:139,duration:143,songName:"Beat it",songSubName:"Michael Jackson",songAuthorName:"Freeek",levelAuthorName:"freeek"},stats:{plays:0,downloads:19417,upvotes:15233,downvotes:887,score:.9209},uploaded:"2018-05-25T14:20:19Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"4b2da842b687ec4cfbc948c583c21c79d4120de0",key:"217",state:"Published",createdAt:"2018-05-25T14:20:19Z",sageScore:5,diffs:[{njs:10,offset:0,notes:188,bombs:0,obstacles:84,nps:1.431,length:303.875,characteristic:"Standard",difficulty:"Easy",events:878,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:131.169,paritySummary:{errors:0,warns:0,resets:0},stars:.39},{njs:10,offset:0,notes:219,bombs:40,obstacles:70,nps:1.667,length:304,characteristic:"Standard",difficulty:"Normal",events:878,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:131.223,paritySummary:{errors:29,warns:8,resets:1},stars:.64},{njs:10,offset:0,notes:386,bombs:42,obstacles:72,nps:2.937,length:304,characteristic:"Standard",difficulty:"Hard",events:878,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:131.223,paritySummary:{errors:80,warns:49,resets:4},stars:1.7},{njs:10,offset:0,notes:623,bombs:46,obstacles:69,nps:4.741,length:304,characteristic:"Standard",difficulty:"Expert",events:878,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:131.223,paritySummary:{errors:87,warns:31,resets:2}}],downloadURL:"https://cdn.beatsaver.com/4b2da842b687ec4cfbc948c583c21c79d4120de0.zip",coverURL:"https://cdn.beatsaver.com/4b2da842b687ec4cfbc948c583c21c79d4120de0.jpg",previewURL:"https://cdn.beatsaver.com/4b2da842b687ec4cfbc948c583c21c79d4120de0.mp3"}],createdAt:"2018-05-25T14:20:19Z",updatedAt:"2018-05-25T14:20:19Z",lastPublishedAt:"2018-05-25T14:20:19Z"},{id:"bb4",name:"Octopath Traveler Main Theme - Yasunori Nishiki",description:"SS Full Combo: https://www.youtube.com/watch?v=zhwpW6ZfBqo",uploader:{id:41168,name:"edzo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f56a",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f56a?d=retro",type:"SIMPLE"},metadata:{bpm:264,duration:150,songName:"Octopath Traveler Main Theme",songSubName:"Yasunori Nishiki",songAuthorName:"Edzo",levelAuthorName:"edzo"},stats:{plays:0,downloads:1163,upvotes:518,downvotes:2,score:.9207},uploaded:"2018-07-25T01:41:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4ba6575e63038cc8bb747f7c1e56bf2202d551be",key:"bb4",state:"Published",createdAt:"2018-07-25T01:41:47Z",sageScore:4,diffs:[{njs:10,offset:0,notes:505,bombs:0,obstacles:5,nps:3.45,length:644,characteristic:"Standard",difficulty:"Expert",events:666,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.364,paritySummary:{errors:46,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4ba6575e63038cc8bb747f7c1e56bf2202d551be.zip",coverURL:"https://cdn.beatsaver.com/4ba6575e63038cc8bb747f7c1e56bf2202d551be.jpg",previewURL:"https://cdn.beatsaver.com/4ba6575e63038cc8bb747f7c1e56bf2202d551be.mp3"}],createdAt:"2018-07-25T01:41:47Z",updatedAt:"2018-07-25T01:41:47Z",lastPublishedAt:"2018-07-25T01:41:47Z"},{id:"94cb",name:"Buttercup | By Jack Stauber | Charted By StyngMe |",description:"Difficulties: Hard\nEnjoy! <3",uploader:{id:30754,name:"styngme",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9cd",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9cd?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:202,songName:"Buttercup",songSubName:"",songAuthorName:"Jack Stauber",levelAuthorName:"StyngMe"},stats:{plays:0,downloads:1776,upvotes:692,downvotes:8,score:.9206},uploaded:"2020-03-29T01:21:28.921Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eb750f2dcec62ac3a816583854dbdee4514d8581",key:"94cb",state:"Published",createdAt:"2020-03-29T01:21:28.921Z",sageScore:2,diffs:[{njs:14,offset:0,notes:441,bombs:112,obstacles:41,nps:2.297,length:384,characteristic:"Standard",difficulty:"Hard",events:658,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:32,warns:19,resets:8}}],downloadURL:"https://cdn.beatsaver.com/eb750f2dcec62ac3a816583854dbdee4514d8581.zip",coverURL:"https://cdn.beatsaver.com/eb750f2dcec62ac3a816583854dbdee4514d8581.jpg",previewURL:"https://cdn.beatsaver.com/eb750f2dcec62ac3a816583854dbdee4514d8581.mp3"}],createdAt:"2020-03-29T01:21:28.921Z",updatedAt:"2020-03-29T01:21:28.921Z",lastPublishedAt:"2020-03-29T01:21:28.921Z"},{id:"a3a",name:"Platinum Disco - Yuka Iguchi",description:"One of the OPs in Nisemonogatari\r\nI know its a bit easy for an expert map. tried to keep it's flow mostly.\r\nBPM : 117, Duration 4:14\r\nDifficulties: Easy, Normal, Hard, Expert\r\n\r\nDemo : https://youtu.be/EV07KuV_DrA",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:117,duration:254,songName:"Platinum Disco",songSubName:"Yuka Iguchi",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:3105,upvotes:1914,downvotes:63,score:.9205},uploaded:"2018-07-18T00:14:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a372fee60c26b5e35861c71d9c38b4ef60974e93",key:"a3a",state:"Published",createdAt:"2018-07-18T00:14:28Z",sageScore:5,diffs:[{njs:10,offset:0,notes:264,bombs:0,obstacles:27,nps:1.059,length:486,characteristic:"Standard",difficulty:"Easy",events:605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.231,paritySummary:{errors:73,warns:54,resets:0}},{njs:10,offset:0,notes:483,bombs:0,obstacles:27,nps:1.938,length:486,characteristic:"Standard",difficulty:"Normal",events:605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.231,paritySummary:{errors:82,warns:100,resets:0}},{njs:10,offset:0,notes:738,bombs:0,obstacles:27,nps:2.961,length:486,characteristic:"Standard",difficulty:"Hard",events:605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.231,paritySummary:{errors:107,warns:118,resets:0}},{njs:10,offset:0,notes:845,bombs:0,obstacles:27,nps:3.39,length:486,characteristic:"Standard",difficulty:"Expert",events:604,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.231,paritySummary:{errors:128,warns:111,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a372fee60c26b5e35861c71d9c38b4ef60974e93.zip",coverURL:"https://cdn.beatsaver.com/a372fee60c26b5e35861c71d9c38b4ef60974e93.jpg",previewURL:"https://cdn.beatsaver.com/a372fee60c26b5e35861c71d9c38b4ef60974e93.mp3"}],createdAt:"2018-07-18T00:14:28Z",updatedAt:"2018-07-18T00:14:28Z",lastPublishedAt:"2018-07-18T00:14:28Z"},{id:"b8d7",name:"Contradiction [The God of High School Opening] - KSUKE ft. Tyler Carter",description:'Everyone step to the left. Wait, wrong song xD but it does have walls that make you go left right down up.\n\n"Contradiction" is KSUKE\'s latest Single featuring American singer Tyler Carter. It is used as the opening song in the upcoming Crunchyroll anime adaption of The God of High School.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:130,duration:200,songName:"Contradiction",songSubName:"ft. Tyler Carter",songAuthorName:"KSUKE",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:9869,upvotes:1479,downvotes:42,score:.9204},uploaded:"2020-07-03T04:53:48.515Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"980cf4979240c9d2b1107a24d6143dd9b85f8098",key:"b8d7",state:"Published",createdAt:"2020-07-03T04:53:48.515Z",sageScore:4,diffs:[{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:13893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:.35,notes:711,bombs:0,obstacles:70,nps:3.633,length:424,characteristic:"Standard",difficulty:"Hard",events:13893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.692,paritySummary:{errors:4,warns:2,resets:0}},{njs:16,offset:-.25,notes:1075,bombs:0,obstacles:110,nps:5.493,length:424,characteristic:"Standard",difficulty:"Expert",events:13893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.692,paritySummary:{errors:3,warns:4,resets:0}},{njs:20,offset:.4,notes:1219,bombs:0,obstacles:102,nps:6.229,length:424,characteristic:"Standard",difficulty:"ExpertPlus",events:13893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.692,paritySummary:{errors:0,warns:10,resets:0}}],downloadURL:"https://cdn.beatsaver.com/980cf4979240c9d2b1107a24d6143dd9b85f8098.zip",coverURL:"https://cdn.beatsaver.com/980cf4979240c9d2b1107a24d6143dd9b85f8098.jpg",previewURL:"https://cdn.beatsaver.com/980cf4979240c9d2b1107a24d6143dd9b85f8098.mp3"}],createdAt:"2020-07-03T04:53:48.515Z",updatedAt:"2020-07-03T04:53:48.515Z",lastPublishedAt:"2020-07-03T04:53:48.515Z"},{id:"d565",name:"[FUTURE FUNK PACK] Idolstep Dreaming - Mikazuki BIGWAVE",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\n"Idolstep 夢見" by ミカヅキBIGWAVE was sampled from Hidemi Ishikawa\'s "めざめ" (Mezame). \n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:105,duration:178,songName:"Idolstep Dreaming",songSubName:"",songAuthorName:"Mikazuki BIGWAVE",levelAuthorName:"ETAN"},stats:{plays:0,downloads:3733,upvotes:816,downvotes:13,score:.9203},uploaded:"2020-08-13T18:37:52.866Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"44bd3be82800591c926b63f16b02f34c85730130",key:"d565",state:"Published",createdAt:"2020-08-13T18:37:52.866Z",sageScore:6,diffs:[{njs:10,offset:1,notes:192,bombs:21,obstacles:37,nps:1.135,length:296,characteristic:"Standard",difficulty:"Easy",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.143,paritySummary:{errors:4,warns:2,resets:2}},{njs:12,offset:.5,notes:224,bombs:21,obstacles:37,nps:1.324,length:296,characteristic:"Standard",difficulty:"Normal",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.143,paritySummary:{errors:1,warns:0,resets:3}},{njs:12,offset:0,notes:361,bombs:19,obstacles:38,nps:2.134,length:296,characteristic:"Standard",difficulty:"Hard",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.143,paritySummary:{errors:0,warns:0,resets:1}},{njs:14,offset:-.2,notes:570,bombs:19,obstacles:38,nps:3.347,length:298,characteristic:"Standard",difficulty:"Expert",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.286,paritySummary:{errors:0,warns:0,resets:1}},{njs:16,offset:.5,notes:695,bombs:17,obstacles:34,nps:4.081,length:298,characteristic:"Standard",difficulty:"ExpertPlus",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.286,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/44bd3be82800591c926b63f16b02f34c85730130.zip",coverURL:"https://cdn.beatsaver.com/44bd3be82800591c926b63f16b02f34c85730130.jpg",previewURL:"https://cdn.beatsaver.com/44bd3be82800591c926b63f16b02f34c85730130.mp3"}],createdAt:"2020-08-13T18:37:52.866Z",updatedAt:"2020-08-13T18:37:52.866Z",lastPublishedAt:"2020-08-13T18:37:52.866Z"},{id:"7b9a",name:"League of Legends - RISE (ft. The Glitch Mob, Mako, and The Word Alive)",description:"Prove yourself and RISE! Normal to Expert, custom lighting.\n\nExpert - 719 notes | 15 NJS | 0 bombs | 6 walls\nHard - 575 notes | 12 NJS | 0 bombs | 6 walls\nNormal - 411 notes | 10 NJS | 0 bombs | 6 walls",uploader:{id:30,name:"cookiesaber",uniqueSet:!0,hash:"5d1356c9f8b4040007dcb9fd",avatar:"https://www.gravatar.com/avatar/5d1356c9f8b4040007dcb9fd?d=retro",type:"SIMPLE"},metadata:{bpm:177,duration:194,songName:"RISE (ft. The Glitch Mob, Mako, and The Word Alive)",songSubName:"",songAuthorName:"League Of Legends",levelAuthorName:"cookie"},stats:{plays:0,downloads:4858,upvotes:1257,downvotes:32,score:.9202},uploaded:"2020-01-01T19:07:55.492Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0c296f8b51f4d7669987117f7b3fa68a1fd7d6b1",key:"7b9a",state:"Published",createdAt:"2020-01-01T19:07:55.492Z",sageScore:3,diffs:[{njs:10,offset:0,notes:411,bombs:0,obstacles:9,nps:2.323,length:522,characteristic:"Standard",difficulty:"Normal",events:874,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:176.949,paritySummary:{errors:14,warns:7,resets:0}},{njs:12,offset:0,notes:575,bombs:0,obstacles:6,nps:3.225,length:526,characteristic:"Standard",difficulty:"Hard",events:874,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.305,paritySummary:{errors:6,warns:6,resets:0}},{njs:15,offset:1,notes:719,bombs:0,obstacles:6,nps:4.032,length:526,characteristic:"Standard",difficulty:"Expert",events:875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.305,paritySummary:{errors:19,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0c296f8b51f4d7669987117f7b3fa68a1fd7d6b1.zip",coverURL:"https://cdn.beatsaver.com/0c296f8b51f4d7669987117f7b3fa68a1fd7d6b1.jpg",previewURL:"https://cdn.beatsaver.com/0c296f8b51f4d7669987117f7b3fa68a1fd7d6b1.mp3"}],createdAt:"2020-01-01T19:07:55.492Z",updatedAt:"2020-01-01T19:07:55.492Z",lastPublishedAt:"2020-01-01T19:07:55.492Z"},{id:"65e6",name:"Kamado Tanjiro no Uta - Kimetsu no Yaiba EP 19 ED",description:"Video https://youtu.be/szYb7faqnkQ\nVideo by Monteblanco: https://www.youtube.com/watch?v=aI7nCWuC-dc\nVideo by Rigid (PogU): https://youtu.be/pnETOIkHv-o",uploader:{id:14262,name:"suzuki.dll",uniqueSet:!0,hash:"5d664fb90a981e00064ede12",avatar:"https://cdn.beatsaver.com/avatar/14262.jpg",type:"SIMPLE"},metadata:{bpm:152,duration:329,songName:"Kamado Tanjiro no Uta",songSubName:"ft. Nami Nakagawa",songAuthorName:"Go Shiina",levelAuthorName:"Suzuki.DLL"},stats:{plays:0,downloads:2575,upvotes:1259,downvotes:32,score:.9202},uploaded:"2019-09-26T02:31:39.964Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"746847c0026657a7235d845b7d014335c47972da",key:"65e6",state:"Published",createdAt:"2019-09-26T02:31:39.964Z",sageScore:5,diffs:[{njs:12,offset:.5,notes:561,bombs:0,obstacles:173,nps:1.752,length:811,characteristic:"Standard",difficulty:"Hard",events:806,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:320.132,paritySummary:{errors:45,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/746847c0026657a7235d845b7d014335c47972da.zip",coverURL:"https://cdn.beatsaver.com/746847c0026657a7235d845b7d014335c47972da.jpg",previewURL:"https://cdn.beatsaver.com/746847c0026657a7235d845b7d014335c47972da.mp3"}],createdAt:"2019-09-26T02:31:39.964Z",updatedAt:"2019-09-26T02:31:39.964Z",lastPublishedAt:"2019-09-26T02:31:39.964Z"},{id:"56b3",name:"Caravan Palace - Wonderland",description:"Easy, Normal, Hard, Expert, Expert+",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:104,duration:175,songName:"Wonderland",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:4852,upvotes:2516,downvotes:95,score:.9202},uploaded:"2019-07-13T05:01:13.826Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5bdd8ddebcce1e19bcd10ca8921b0d1ab7624506",key:"56b3",state:"Published",createdAt:"2019-07-13T05:01:13.826Z",sageScore:7,diffs:[{njs:12,offset:1,notes:182,bombs:0,obstacles:0,nps:1.088,length:290,characteristic:"Standard",difficulty:"Easy",events:219,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:167.308,paritySummary:{errors:56,warns:7,resets:0}},{njs:12,offset:1,notes:255,bombs:0,obstacles:0,nps:1.524,length:290,characteristic:"Standard",difficulty:"Normal",events:292,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:167.308,paritySummary:{errors:29,warns:17,resets:0}},{njs:14,offset:0,notes:450,bombs:0,obstacles:0,nps:2.685,length:290.5,characteristic:"Standard",difficulty:"Hard",events:499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:167.596,paritySummary:{errors:5,warns:4,resets:0}},{njs:15,offset:0,notes:487,bombs:0,obstacles:0,nps:2.906,length:290.5,characteristic:"Standard",difficulty:"Expert",events:525,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:167.596,paritySummary:{errors:4,warns:4,resets:0}},{njs:17,offset:.5,notes:713,bombs:5,obstacles:0,nps:4.243,length:291.25,characteristic:"Standard",difficulty:"ExpertPlus",events:797,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.029,paritySummary:{errors:8,warns:5,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5bdd8ddebcce1e19bcd10ca8921b0d1ab7624506.zip",coverURL:"https://cdn.beatsaver.com/5bdd8ddebcce1e19bcd10ca8921b0d1ab7624506.jpg",previewURL:"https://cdn.beatsaver.com/5bdd8ddebcce1e19bcd10ca8921b0d1ab7624506.mp3"}],createdAt:"2019-07-13T05:01:13.826Z",updatedAt:"2019-07-13T05:01:13.826Z",lastPublishedAt:"2019-07-13T05:01:13.826Z"},{id:"4131",name:"Nevada feat. Cozi Zuehlsdorff - Vicetone",description:"YouTube Preview: https://youtu.be/3gb2gH8eueI",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:124,duration:209,songName:"Nevada (feat. Cozi Zuehlsdorff)",songSubName:"Vicetone",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:2091,upvotes:1257,downvotes:32,score:.9202},uploaded:"2019-03-27T18:42:01Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5e847d92de6e01dfd5ce3491969b3939b4374699",key:"4131",state:"Published",createdAt:"2019-03-27T18:42:01Z",sageScore:6,diffs:[{njs:10,offset:0,notes:387,bombs:0,obstacles:54,nps:1.932,length:414,characteristic:"Standard",difficulty:"Hard",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.323,paritySummary:{errors:70,warns:23,resets:0}},{njs:12,offset:0,notes:616,bombs:0,obstacles:54,nps:3.075,length:414,characteristic:"Standard",difficulty:"Expert",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.323,paritySummary:{errors:84,warns:55,resets:0}},{njs:14,offset:0,notes:868,bombs:0,obstacles:57,nps:4.333,length:414,characteristic:"Standard",difficulty:"ExpertPlus",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.323,paritySummary:{errors:74,warns:61,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5e847d92de6e01dfd5ce3491969b3939b4374699.zip",coverURL:"https://cdn.beatsaver.com/5e847d92de6e01dfd5ce3491969b3939b4374699.jpg",previewURL:"https://cdn.beatsaver.com/5e847d92de6e01dfd5ce3491969b3939b4374699.mp3"}],createdAt:"2019-03-27T18:42:01Z",updatedAt:"2019-03-27T18:42:01Z",lastPublishedAt:"2019-03-27T18:42:01Z"},{id:"8b21",name:"Invaders Must Die - Prodigy",description:"It's time to get ready for some pumping beats and dancy moves with a beat map for a Prodigy song. With the full spread of skill levels, get ready to move and in the swing of the rhythm of this great track.\n\nThanks to Kival Evan and Sorukun for testing.",uploader:{id:32141,name:"amstradhero",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551be",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8551be?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:266,songName:"Invaders Must Die",songSubName:"",songAuthorName:"Prodigy",levelAuthorName:"AmstradHero"},stats:{plays:0,downloads:3044,upvotes:1276,downvotes:33,score:.9201},uploaded:"2020-02-27T09:40:25.643Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eaa2d06cfed4d6cd5b9e0b89d5860c88c7ca8be5",key:"8b21",state:"Published",createdAt:"2020-02-27T09:40:25.643Z",sageScore:7,diffs:[{njs:10,offset:0,notes:326,bombs:16,obstacles:28,nps:1.248,length:609.5,characteristic:"Standard",difficulty:"Easy",events:8086,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:17,warns:18,resets:7}},{njs:12,offset:1.35,notes:468,bombs:16,obstacles:31,nps:1.792,length:609.5,characteristic:"Standard",difficulty:"Normal",events:8084,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:26,warns:20,resets:8}},{njs:13,offset:1.125,notes:660,bombs:12,obstacles:31,nps:2.527,length:609.5,characteristic:"Standard",difficulty:"Hard",events:8084,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:36,warns:45,resets:5}},{njs:14,offset:1,notes:1102,bombs:8,obstacles:15,nps:4.219,length:609.5,characteristic:"Standard",difficulty:"Expert",events:8084,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:44,warns:69,resets:4}},{njs:16,offset:.5,notes:1141,bombs:4,obstacles:15,nps:4.368,length:609.5,characteristic:"Standard",difficulty:"ExpertPlus",events:8084,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:35,warns:57,resets:2}}],downloadURL:"https://cdn.beatsaver.com/eaa2d06cfed4d6cd5b9e0b89d5860c88c7ca8be5.zip",coverURL:"https://cdn.beatsaver.com/eaa2d06cfed4d6cd5b9e0b89d5860c88c7ca8be5.jpg",previewURL:"https://cdn.beatsaver.com/eaa2d06cfed4d6cd5b9e0b89d5860c88c7ca8be5.mp3"}],createdAt:"2020-02-27T09:40:25.643Z",updatedAt:"2020-02-27T09:40:25.643Z",lastPublishedAt:"2020-02-27T09:40:25.643Z"},{id:"57f1",name:"Impossible Geometry - The Stupendium ft. Chi-chi",description:"Watch the video here: https://www.youtube.com/watch?v=PnKxhbRqqx0",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:150,duration:211,songName:"Impossible Geometry",songSubName:"",songAuthorName:"The Stupendium ft. Chi-chi",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1475,upvotes:1166,downvotes:28,score:.9201},uploaded:"2019-07-19T18:24:56.241Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"84b16b7e9fe6e3b8f356be4f2dc0edc0a4178228",key:"57f1",state:"Published",createdAt:"2019-07-19T18:24:56.241Z",sageScore:5,diffs:[{njs:14,offset:0,notes:628,bombs:12,obstacles:42,nps:3.244,length:484,characteristic:"Standard",difficulty:"Expert",events:5545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.6,paritySummary:{errors:53,warns:61,resets:0}}],downloadURL:"https://cdn.beatsaver.com/84b16b7e9fe6e3b8f356be4f2dc0edc0a4178228.zip",coverURL:"https://cdn.beatsaver.com/84b16b7e9fe6e3b8f356be4f2dc0edc0a4178228.jpg",previewURL:"https://cdn.beatsaver.com/84b16b7e9fe6e3b8f356be4f2dc0edc0a4178228.mp3"}],createdAt:"2019-07-19T18:24:56.241Z",updatedAt:"2019-07-19T18:24:56.241Z",lastPublishedAt:"2019-07-19T18:24:56.241Z"},{id:"53f0",name:"Panini - Lil Nas X",description:"“Panini” is the second single from Lil Nas X’s debut EP, 7, following his hit song, “Old Town Road. In this song, Lil Nas talks about his old fanbase and compares them to Panini, a character from the popular TV Series Chowder.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:77,duration:116,songName:"Panini",songSubName:"",songAuthorName:"Lil Nas X",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3360,upvotes:1212,downvotes:30,score:.9201},uploaded:"2019-06-22T05:07:06.657Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6bb8e702d51055767fbc89df9ec81517e1d0e74c",key:"53f0",state:"Published",createdAt:"2019-06-22T05:07:06.657Z",sageScore:6,diffs:[{njs:14,offset:0,notes:388,bombs:0,obstacles:0,nps:3.482,length:143,characteristic:"Standard",difficulty:"Expert",events:1247,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:111.429,paritySummary:{errors:17,warns:21,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6bb8e702d51055767fbc89df9ec81517e1d0e74c.zip",coverURL:"https://cdn.beatsaver.com/6bb8e702d51055767fbc89df9ec81517e1d0e74c.jpg",previewURL:"https://cdn.beatsaver.com/6bb8e702d51055767fbc89df9ec81517e1d0e74c.mp3"}],createdAt:"2019-06-22T05:07:06.657Z",updatedAt:"2019-06-22T05:07:06.657Z",lastPublishedAt:"2019-06-22T05:07:06.657Z"},{id:"1060",name:"X Gon' Give It To Ya Maybe",description:"Preview: \r\nhttps://www.youtube.com/watch?v=Q71NI5ohXhI\r\n\r\nOriginal mashup: https://www.youtube.com/watch?v=Fegs-XVKgnM",uploader:{id:4286278,name:"ruckus",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1d8",avatar:"https://cdn.beatsaver.com/avatar/239082462083284992.png",type:"DISCORD"},metadata:{bpm:120,duration:205,songName:"X Gon' Give It To Ya Maybe",songSubName:"oneboredjeu, Carly Rae Jepsen, DMX",songAuthorName:"Ruckus",levelAuthorName:"ruckus"},stats:{plays:0,downloads:4370,upvotes:2151,downvotes:76,score:.9201},uploaded:"2018-08-18T01:59:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b86e27ad9149c123b3a4f90b2bce62f656083b01",key:"1060",state:"Published",createdAt:"2018-08-18T01:59:54Z",sageScore:4,diffs:[{njs:14,offset:0,notes:815,bombs:0,obstacles:0,nps:4.163,length:391.5,characteristic:"Standard",difficulty:"Expert",events:1511,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.75,paritySummary:{errors:91,warns:118,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b86e27ad9149c123b3a4f90b2bce62f656083b01.zip",coverURL:"https://cdn.beatsaver.com/b86e27ad9149c123b3a4f90b2bce62f656083b01.jpg",previewURL:"https://cdn.beatsaver.com/b86e27ad9149c123b3a4f90b2bce62f656083b01.mp3"}],createdAt:"2018-08-18T01:59:54Z",updatedAt:"2018-08-18T01:59:54Z",lastPublishedAt:"2018-08-18T01:59:54Z"},{id:"5fc",name:"Waiting For Love - Avicii",description:"Avicii Waiting for love\r\nEasy, Normal, Hard, Expert\r\nRun Time : 3m 50s\r\nBPM 128.15\r\n\r\nFeedback would be greatly appreciated :)",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:230,songName:"Waiting For Love",songSubName:"Avicii",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:12913,upvotes:5636,downvotes:276,score:.9201},uploaded:"2018-06-20T23:44:52Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"4b7cdfcf558f66acc4b7a506c2dd50fbd9a76354",key:"5fc",state:"Published",createdAt:"2018-06-20T23:44:52Z",sageScore:6,diffs:[{njs:10,offset:0,notes:266,bombs:8,obstacles:8,nps:1.184,length:480,characteristic:"Standard",difficulty:"Easy",events:1179,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:62,warns:23,resets:0},stars:1.1},{njs:10,offset:0,notes:485,bombs:6,obstacles:8,nps:2.158,length:480,characteristic:"Standard",difficulty:"Normal",events:1181,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:121,warns:51,resets:0},stars:1.54},{njs:10,offset:0,notes:742,bombs:14,obstacles:8,nps:3.302,length:479.966,characteristic:"Standard",difficulty:"Hard",events:1177,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.984,paritySummary:{errors:130,warns:53,resets:0}},{njs:10,offset:0,notes:875,bombs:11,obstacles:8,nps:3.893,length:480,characteristic:"Standard",difficulty:"Expert",events:1190,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:125,warns:100,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4b7cdfcf558f66acc4b7a506c2dd50fbd9a76354.zip",coverURL:"https://cdn.beatsaver.com/4b7cdfcf558f66acc4b7a506c2dd50fbd9a76354.jpg",previewURL:"https://cdn.beatsaver.com/4b7cdfcf558f66acc4b7a506c2dd50fbd9a76354.mp3"}],createdAt:"2018-06-20T23:44:52Z",updatedAt:"2018-06-20T23:44:52Z",lastPublishedAt:"2018-06-20T23:44:52Z"},{id:"a233",name:"[NoodleJams Vol.1] 5 Seconds of Summer - Teeth",description:"Coming down with the isolation blues? Why not check out my new release! This one includes my first time playing around with Chroma lighting, so make sure you download Chroma 2.0 from Mod Assistant! The lights were inspired by the music video for this track, including re-creating some of the effects shown in the video. A Lightshow is included if you'd like to just check them out separately.\n\nThanks to qwasyx, Dat360NoScope, Sorukun, helencarnate, Shutforever, Pyrowarfare, and ethan_mp4 for playtesting.\n\nAnd a special thanks to AaltopahWi for advice on using Chroma, Aeroluna for Chroma 2.0, and CyanSnow for Chroma conversion help!\n\nAnd now some song details:\nBPM: 139\nNotes: Ez - 401 ; N - 514 ; H - 630 ; Ex - 868 ; Ex+ - 946\nNPS: Ez - 1.93 ; N - 2.48 ; H - 3.04 ; Ex - 4.18 ; Ex+ - 4.56\nBombs: None!\nWalls: Ez - 55 ; N - 44 ; H - 34 ; Ex - 22 ; Ex+ - 28",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:139,duration:207,songName:"Teeth",songSubName:"",songAuthorName:"5 Seconds of Summer",levelAuthorName:"fruhead"},stats:{plays:0,downloads:4256,upvotes:884,downvotes:16,score:.92},uploaded:"2020-05-04T04:13:11.364Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0986c659b17b62f13098ff3598d781942eac9092",key:"a233",state:"Published",createdAt:"2020-05-04T04:13:11.364Z",sageScore:7,diffs:[{njs:10,offset:-.5,notes:401,bombs:0,obstacles:55,nps:2.002,length:464,characteristic:"Standard",difficulty:"Easy",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.288,paritySummary:{errors:49,warns:8,resets:0}},{njs:12,offset:.7,notes:514,bombs:0,obstacles:44,nps:2.566,length:464,characteristic:"Standard",difficulty:"Normal",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.288,paritySummary:{errors:8,warns:4,resets:0}},{njs:14,offset:.3,notes:630,bombs:0,obstacles:34,nps:3.145,length:464,characteristic:"Standard",difficulty:"Hard",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.288,paritySummary:{errors:5,warns:4,resets:0}},{njs:15,offset:.2,notes:868,bombs:0,obstacles:24,nps:4.334,length:464,characteristic:"Standard",difficulty:"Expert",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.288,paritySummary:{errors:4,warns:2,resets:0}},{njs:17,offset:0,notes:946,bombs:0,obstacles:28,nps:4.723,length:464.063,characteristic:"Standard",difficulty:"ExpertPlus",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.315,paritySummary:{errors:4,warns:2,resets:0}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0986c659b17b62f13098ff3598d781942eac9092.zip",coverURL:"https://cdn.beatsaver.com/0986c659b17b62f13098ff3598d781942eac9092.jpg",previewURL:"https://cdn.beatsaver.com/0986c659b17b62f13098ff3598d781942eac9092.mp3"}],createdAt:"2020-05-04T04:13:11.364Z",updatedAt:"2020-05-04T04:13:11.364Z",lastPublishedAt:"2020-05-04T04:13:11.364Z"},{id:"cb19",name:"[Extra Sensory] Mick Gordon - At DOOM's Gate",description:'Rip and tear\n\n\nExtra super huge thank you to the following people for making this possible\nAeroluna- For making Noodle Extensions and updating Chroma\nReaxt- For helping with making the scripts used to create this map and for inspiring us to continue through with this project.\nArti- For making the core mod that allowed Noodle Extensions and Chroma to support the new values\n\nAnd thank you for putting up with my shit during this (again) :)\n\nThis map was released as a part of the "Extra Sensory" event.\n\nVideo: https://www.youtube.com/watch?v=21JWpIWhqjg',uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:161,duration:72,songName:"At DOOM's Gate",songSubName:"",songAuthorName:"Mick Gordon",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:7731,upvotes:2500,downvotes:95,score:.9199},uploaded:"2020-07-31T01:44:50.965Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b0ea07691e483e7f5b2d9a2daf6774b512a68855",key:"cb19",state:"Published",createdAt:"2020-07-31T01:44:50.965Z",sageScore:3,diffs:[{njs:19,offset:0,notes:342,bombs:0,obstacles:4190,nps:5.305,length:173,characteristic:"Standard",difficulty:"ExpertPlus",events:261,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:64.472,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b0ea07691e483e7f5b2d9a2daf6774b512a68855.zip",coverURL:"https://cdn.beatsaver.com/b0ea07691e483e7f5b2d9a2daf6774b512a68855.jpg",previewURL:"https://cdn.beatsaver.com/b0ea07691e483e7f5b2d9a2daf6774b512a68855.mp3"}],createdAt:"2020-07-31T01:44:50.965Z",updatedAt:"2020-07-31T01:44:50.965Z",lastPublishedAt:"2020-07-31T01:44:50.965Z"},{id:"570d",name:"Duel of the Fates (Techno Remix) - Star Wars",description:'|-o-| *Mapping Extensions Required* |-o-|\n"Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering."\nA Collab Between myself and EpicEwok. Audio Edit by Kolezan <3\nNotes Per Second:\nEasy / 1.2\nNormal / 1.5\nHard / 2.6\nExpert / 3.3\nExpert+ / 4.7\nSingle Saber (Expert) / 3.0\nFor Quest Users, we have a version without the walls for you here: https://beatsaver.com/beatmap/570c\nExpert+ Playthrough: https://streamable.com/3sftt\n',uploader:{id:11373,name:"redmagi",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e9d2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9d2?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:252,songName:"Duel of the Fates ",songSubName:"",songAuthorName:"Techno Remix",levelAuthorName:"Sha3dy D3stiny"},stats:{plays:0,downloads:9452,upvotes:2313,downvotes:85,score:.9199},uploaded:"2019-07-14T20:18:06.134Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"65c578117df8bae1c83c98b43e4218b23a8de3f3",key:"570d",state:"Published",createdAt:"2019-07-14T20:18:06.134Z",sageScore:7,diffs:[{njs:12,offset:0,notes:307,bombs:0,obstacles:190,nps:1.282,length:558.755,characteristic:"Standard",difficulty:"Easy",events:6138,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.466,paritySummary:{errors:32,warns:6,resets:0}},{njs:12,offset:0,notes:376,bombs:0,obstacles:190,nps:1.571,length:558.63,characteristic:"Standard",difficulty:"Normal",events:1272,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.413,paritySummary:{errors:14,warns:10,resets:0}},{njs:14,offset:0,notes:669,bombs:0,obstacles:190,nps:2.794,length:558.797,characteristic:"Standard",difficulty:"Hard",events:1272,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.484,paritySummary:{errors:15,warns:21,resets:0}},{njs:15,offset:0,notes:832,bombs:0,obstacles:190,nps:3.474,length:558.792,characteristic:"Standard",difficulty:"Expert",events:6138,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.482,paritySummary:{errors:33,warns:39,resets:0}},{njs:16,offset:0,notes:1191,bombs:0,obstacles:190,nps:4.97,length:559.125,characteristic:"Standard",difficulty:"ExpertPlus",events:6138,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.625,paritySummary:{errors:49,warns:67,resets:0}},{njs:15,offset:0,notes:750,bombs:0,obstacles:190,nps:3.131,length:558.917,characteristic:"OneSaber",difficulty:"Expert",events:6138,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.536,paritySummary:{errors:48,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/65c578117df8bae1c83c98b43e4218b23a8de3f3.zip",coverURL:"https://cdn.beatsaver.com/65c578117df8bae1c83c98b43e4218b23a8de3f3.jpg",previewURL:"https://cdn.beatsaver.com/65c578117df8bae1c83c98b43e4218b23a8de3f3.mp3"}],createdAt:"2019-07-14T20:18:06.134Z",updatedAt:"2019-07-14T20:18:06.134Z",lastPublishedAt:"2019-07-14T20:18:06.134Z"},{id:"4fe8",name:"Red Like Roses [One Saber] (RWBY: Volume 1 Soundtrack) - Jeff Williams ft. Casey Lee Williams",description:"Red like roses in one saber! Finally y'all can play this with a custom crescent rose saber and not look weird holding two! Further improved the sync on this from the original v2 of red like roses. Not all beats were mapped because its hard to hit consistent non stop 1/4s with only one saber but the ending section is still pretty tiring so prepare your arm :P. Map comes in two shades of Crescent Red.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:200,duration:194,songName:"Red Like Roses (One Saber)",songSubName:"Jeff Williams ft. Casey Lee Williams",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3763,upvotes:648,downvotes:7,score:.9199},uploaded:"2019-05-30T13:34:51Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0fdfb6fb8788f52b78c981c85cf9f316e4b6f232",key:"4fe8",state:"Published",createdAt:"2019-05-30T13:34:51Z",sageScore:5,diffs:[{njs:14,offset:0,notes:463,bombs:2,obstacles:22,nps:2.47,length:627.987,characteristic:"OneSaber",difficulty:"Expert",events:641,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.396,paritySummary:{errors:18,warns:18,resets:1}}],downloadURL:"https://cdn.beatsaver.com/0fdfb6fb8788f52b78c981c85cf9f316e4b6f232.zip",coverURL:"https://cdn.beatsaver.com/0fdfb6fb8788f52b78c981c85cf9f316e4b6f232.jpg",previewURL:"https://cdn.beatsaver.com/0fdfb6fb8788f52b78c981c85cf9f316e4b6f232.mp3"}],createdAt:"2019-05-30T13:34:51Z",updatedAt:"2019-05-30T13:34:51Z",lastPublishedAt:"2019-05-30T13:34:51Z"},{id:"1bf",name:"Caravan Palace - Lone Digger",description:"Caravan Palace - Lone Digger\r\nEasy | Normal | Hard | Expert\r\nThis is a re-upload of my previous map, with improvements for hard, and a new, harder expert difficulty mapped by Squeaksies, as well as lower difficulties as iterations on my original map.\r\n\r\nBPM: 124\r\nDuration: 2:49\r\nNotes (Hard): 730\r\nNotes (Expert): 735\r\nPreview (Hard): https://youtu.be/NExvLUyeBUU\r\nPreview (Expert): https://youtu.be/NYmExXlpB0k",uploader:{id:45732,name:"calijor",uniqueSet:!1,hash:"5cff0b7298cc5a672c84ebb1",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ebb1?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:170,songName:"Lone Digger",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"calijor"},stats:{plays:0,downloads:13174,upvotes:16427,downvotes:987,score:.9199},uploaded:"2018-05-23T00:15:19Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"906160fd1f808e2f34f33c2ca5920118855c065d",key:"1bf",state:"Published",createdAt:"2018-05-23T00:15:19Z",sageScore:5,diffs:[{njs:10,offset:0,notes:313,bombs:0,obstacles:27,nps:1.931,length:334.938,characteristic:"Standard",difficulty:"Easy",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.067,paritySummary:{errors:80,warns:32,resets:0},stars:1.2},{njs:10,offset:0,notes:480,bombs:0,obstacles:27,nps:2.953,length:335.938,characteristic:"Standard",difficulty:"Normal",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.55,paritySummary:{errors:56,warns:112,resets:0}},{njs:10,offset:0,notes:730,bombs:0,obstacles:27,nps:4.491,length:335.938,characteristic:"Standard",difficulty:"Hard",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.55,paritySummary:{errors:157,warns:122,resets:0}},{njs:10,offset:0,notes:735,bombs:11,obstacles:2,nps:4.555,length:333.5,characteristic:"Standard",difficulty:"Expert",events:1198,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:161.371,paritySummary:{errors:163,warns:131,resets:5}}],downloadURL:"https://cdn.beatsaver.com/906160fd1f808e2f34f33c2ca5920118855c065d.zip",coverURL:"https://cdn.beatsaver.com/906160fd1f808e2f34f33c2ca5920118855c065d.jpg",previewURL:"https://cdn.beatsaver.com/906160fd1f808e2f34f33c2ca5920118855c065d.mp3"}],createdAt:"2018-05-23T00:15:19Z",updatedAt:"2018-05-23T00:15:19Z",lastPublishedAt:"2018-05-23T00:15:19Z"},{id:"17195",name:"Ayunda Risu - KING",description:"There's a lotta covers of KING, but Risu's definitely takes the cake\n\nThis was a special request from a good friend of mine\n\nDifficulties |\nExpert+\nExpert\nHard\nNormal\nEasy\n\nThank you for playing\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:166,duration:137,songName:"KING",songSubName:"",songAuthorName:"Ayunda Risu",levelAuthorName:"ETAN"},stats:{plays:0,downloads:3066,upvotes:829,downvotes:14,score:.9198},uploaded:"2021-04-24T01:55:50.843Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0d191cd2dfe9404e4f58b5520bbc9b7b9cafa8c7",key:"17195",state:"Published",createdAt:"2021-04-24T01:55:50.843Z",sageScore:6,diffs:[{njs:10,offset:0,notes:158,bombs:0,obstacles:11,nps:1.228,length:356,characteristic:"Standard",difficulty:"Easy",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:128.675,paritySummary:{errors:16,warns:2,resets:0}},{njs:12,offset:0,notes:206,bombs:0,obstacles:11,nps:1.601,length:356,characteristic:"Standard",difficulty:"Normal",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:128.675,paritySummary:{errors:26,warns:0,resets:0}},{njs:13,offset:.75,notes:397,bombs:0,obstacles:11,nps:3.06,length:359,characteristic:"Standard",difficulty:"Hard",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:129.759,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:.2,notes:528,bombs:0,obstacles:11,nps:3.98,length:367,characteristic:"Standard",difficulty:"Expert",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:132.651,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.2,notes:716,bombs:0,obstacles:11,nps:5.398,length:367,characteristic:"Standard",difficulty:"ExpertPlus",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:132.651,paritySummary:{errors:0,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0d191cd2dfe9404e4f58b5520bbc9b7b9cafa8c7.zip",coverURL:"https://cdn.beatsaver.com/0d191cd2dfe9404e4f58b5520bbc9b7b9cafa8c7.jpg",previewURL:"https://cdn.beatsaver.com/0d191cd2dfe9404e4f58b5520bbc9b7b9cafa8c7.mp3"}],createdAt:"2021-04-24T01:55:50.843Z",updatedAt:"2021-04-24T01:55:50.843Z",lastPublishedAt:"2021-04-24T01:55:50.843Z"},{id:"142ea",name:"K/DA - VILLAIN (ft. Madison Beer, Kim Petras)",description:"From the unofficial music pack (K/DA ALL OUT) on BSaber.com\nPack: https://bsaber.com/kda-all-out/\nTrailer: https://youtu.be/e1ry_H86zqg\nPreview (Expert+): https://youtu.be/hrNAqEg6XPo\nLightshow: https://youtu.be/ZIqbGM4GjPc\n__________\nCredits🤍\nMapper: Sotarks\nLighter: Sotarks\nCurators: Pixelguy, JohnnyDee & joey\nSpecial Thanks: eliotttate & Belaya\nTrailer: Tuffiii\n__________\nCheck out K/DA🤍\nhttps://twitter.com/kda_music\nhttps://linktr.ee/kda_music\nProduced by Riot Games",uploader:{id:2523,name:"sotarks",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541fd",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8541fd?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:201,songName:"VILLAIN",songSubName:"",songAuthorName:"K/DA",levelAuthorName:"Sotarks"},stats:{plays:0,downloads:12713,upvotes:1439,downvotes:41,score:.9198},uploaded:"2021-02-17T18:04:42.442Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d0c3395e0cce21f1e03ea9352543e4aaef74b902",key:"142ea",state:"Published",createdAt:"2021-02-17T18:04:42.442Z",sageScore:7,diffs:[{njs:12,offset:-1.4371349,notes:225,bombs:0,obstacles:179,nps:1.174,length:511,characteristic:"Standard",difficulty:"Easy",events:2930,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.625,paritySummary:{errors:39,warns:1,resets:0}},{njs:12,offset:-1.4361658,notes:303,bombs:0,obstacles:139,nps:1.581,length:511,characteristic:"Standard",difficulty:"Normal",events:2930,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.625,paritySummary:{errors:3,warns:0,resets:0}},{njs:14,offset:.19046581,notes:526,bombs:0,obstacles:170,nps:2.667,length:526,characteristic:"Standard",difficulty:"Hard",events:2930,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:5,warns:0,resets:0}},{njs:16,offset:-.0027478295,notes:738,bombs:4,obstacles:177,nps:3.741,length:526,characteristic:"Standard",difficulty:"Expert",events:2930,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:2,warns:0,resets:1}},{njs:18,offset:-.3,notes:900,bombs:156,obstacles:121,nps:4.563,length:526,characteristic:"Standard",difficulty:"ExpertPlus",events:2985,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:2,warns:11,resets:9}}],downloadURL:"https://cdn.beatsaver.com/d0c3395e0cce21f1e03ea9352543e4aaef74b902.zip",coverURL:"https://cdn.beatsaver.com/d0c3395e0cce21f1e03ea9352543e4aaef74b902.jpg",previewURL:"https://cdn.beatsaver.com/d0c3395e0cce21f1e03ea9352543e4aaef74b902.mp3"}],createdAt:"2021-02-17T18:04:42.442Z",updatedAt:"2021-02-17T18:04:42.442Z",lastPublishedAt:"2021-02-17T18:04:42.442Z"},{id:"850a",name:"Ellie Goulding - Lights",description:"Wanted to map this for a little while, really fun song that I know should make for a fun map (hopefully I was able to deliver that)\n\nThanks to Sorukun and Eku for feedback and testing\n\nEnjoy!",uploader:{id:4286161,name:"amuga",uniqueSet:!0,hash:"5e0a61e546a0710006590f49",avatar:"https://cdn.beatsaver.com/avatar/92425939555713024.png",type:"DISCORD"},metadata:{bpm:120,duration:213,songName:"Lights",songSubName:"",songAuthorName:"Ellie Goulding",levelAuthorName:"Amuga"},stats:{plays:0,downloads:2383,upvotes:752,downvotes:11,score:.9198},uploaded:"2020-02-08T00:21:39.641Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3b3ef5f5438e7928fdb747004308e8a8d6a23dc8",key:"850a",state:"Published",createdAt:"2020-02-08T00:21:39.641Z",sageScore:4,diffs:[{njs:16,offset:-.25,notes:921,bombs:0,obstacles:13,nps:4.433,length:415.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2299,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.75,paritySummary:{errors:1,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3b3ef5f5438e7928fdb747004308e8a8d6a23dc8.zip",coverURL:"https://cdn.beatsaver.com/3b3ef5f5438e7928fdb747004308e8a8d6a23dc8.jpg",previewURL:"https://cdn.beatsaver.com/3b3ef5f5438e7928fdb747004308e8a8d6a23dc8.mp3"}],createdAt:"2020-02-08T00:21:39.641Z",updatedAt:"2020-02-08T00:21:39.641Z",lastPublishedAt:"2020-02-08T00:21:39.641Z"},{id:"332f",name:"Spin Me Around (Spin Edition) - Dead or Alive",description:'*DISCLAIMER*\r\nThere are optional Dot "Freestyle" Sections in this one! Be careful when attempting spins!\r\n*YOU HAVE BEEN WARNED!*\r\n\r\nExpert+ has a few 1/4 beat hits, but is otherwise the same as Expert. Both Expert and Expert+ have the Dot Freestyle sections.\r\n\r\nNotes per Second / Video Play-through:\r\nEasy: 1.7 / https://streamable.com/t95t1\r\nNormal: 2 / https://streamable.com/al3de\r\nHard: 2.5 / https://streamable.com/5z1h5\r\nExpert: 3.9 / https://streamable.com/lq07e\r\nExpert+: 4.2 / https://streamable.com/dfygc (With FREESTYLE Moves!)\r\n\r\nMany Thanks to Aggro for the inspiration for this VERY SILLY spin move and Fromen for letting me use his map as a baseline for this!',uploader:{id:11373,name:"redmagi",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e9d2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9d2?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:188,songName:"Spin Me Round (Spin Edition)",songSubName:"Dead or Alive",songAuthorName:"Redmagi",levelAuthorName:"redmagi"},stats:{plays:0,downloads:4271,upvotes:1418,downvotes:40,score:.9198},uploaded:"2019-02-03T02:19:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1274bb0c32bb9e5bdb677ca7eca18a45d454aaf7",key:"332f",state:"Published",createdAt:"2019-02-03T02:19:40Z",sageScore:7,diffs:[{njs:10,offset:0,notes:318,bombs:0,obstacles:0,nps:1.732,length:392,characteristic:"Standard",difficulty:"Easy",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:38,warns:25,resets:0}},{njs:10,offset:0,notes:370,bombs:0,obstacles:2,nps:2.016,length:392,characteristic:"Standard",difficulty:"Normal",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:30,warns:15,resets:0}},{njs:10,offset:0,notes:479,bombs:0,obstacles:1,nps:2.609,length:392,characteristic:"Standard",difficulty:"Hard",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:43,warns:89,resets:0}},{njs:12,offset:0,notes:743,bombs:0,obstacles:0,nps:4.047,length:392,characteristic:"Standard",difficulty:"Expert",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:32,warns:56,resets:0}},{njs:14,offset:0,notes:792,bombs:0,obstacles:0,nps:4.314,length:392,characteristic:"Standard",difficulty:"ExpertPlus",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:35,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1274bb0c32bb9e5bdb677ca7eca18a45d454aaf7.zip",coverURL:"https://cdn.beatsaver.com/1274bb0c32bb9e5bdb677ca7eca18a45d454aaf7.jpg",previewURL:"https://cdn.beatsaver.com/1274bb0c32bb9e5bdb677ca7eca18a45d454aaf7.mp3"}],createdAt:"2019-02-03T02:19:40Z",updatedAt:"2019-02-03T02:19:40Z",lastPublishedAt:"2019-02-03T02:19:40Z"},{id:"9bdb",name:"Everything Black (feat. Mike Taylor) - Unlike Pluto",description:"This song is special to me :) Hope you enjoy!\n\nMaul-map by Trolav. Check out his other fantastic maps here -> https://beatsaver.com/uploader/5cff0b7598cc5a672c85368e\nExpert by Checkthepan. Check out his other awesome maps here -> https://beatsaver.com/uploader/5cff0b7398cc5a672c84f3d5\nExpert+ by me.\n\nPreviews:\n\nExpert+: https://youtu.be/gO2pLki8Hic\n\nExpert: https://youtu.be/oTF1tW2AKtg\n\nWann give some feedback? Hit me up on discord -> JohnnyDee#0002",uploader:{id:1991,name:"johnnydee",uniqueSet:!0,hash:"5d3e1593130e0e00069019f7",avatar:"https://www.gravatar.com/avatar/5d3e1593130e0e00069019f7?d=retro",type:"SIMPLE"},metadata:{bpm:98,duration:230,songName:"Everything Black",songSubName:"(feat. Mike Taylor)",songAuthorName:"Unlike Pluto",levelAuthorName:"Ramen Noodle"},stats:{plays:0,downloads:1934,upvotes:1017,downvotes:22,score:.9197},uploaded:"2020-04-17T07:02:17.945Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0d005c0ae0b1e3ff7c43aef0dbc7d40fdb02d8fb",key:"9bdb",state:"Published",createdAt:"2020-04-17T07:02:17.945Z",sageScore:5,diffs:[{njs:15,offset:.4,notes:714,bombs:0,obstacles:6,nps:3.167,length:368.188,characteristic:"Standard",difficulty:"Expert",events:2661,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.421,paritySummary:{errors:1,warns:1,resets:0}},{njs:17,offset:.4,notes:767,bombs:0,obstacles:122,nps:3.403,length:368.094,characteristic:"Standard",difficulty:"ExpertPlus",events:2250,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.364,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:.2,notes:717,bombs:0,obstacles:122,nps:3.182,length:368,characteristic:"NoArrows",difficulty:"Expert",events:2248,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.306,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0d005c0ae0b1e3ff7c43aef0dbc7d40fdb02d8fb.zip",coverURL:"https://cdn.beatsaver.com/0d005c0ae0b1e3ff7c43aef0dbc7d40fdb02d8fb.jpg",previewURL:"https://cdn.beatsaver.com/0d005c0ae0b1e3ff7c43aef0dbc7d40fdb02d8fb.mp3"}],createdAt:"2020-04-17T07:02:17.945Z",updatedAt:"2020-04-17T07:02:17.945Z",lastPublishedAt:"2020-04-17T07:02:17.945Z"},{id:"fc05",name:"EVERGLOW - LA DI DA",description:"This is a map, there's 3 difficulties which are respectively pretty hard for what they should be. \nExpert+ Preview: https://youtu.be/W8JN3NSaX9A\nRequests or complaints - Discord: SimplyMarvellous#0290 ",uploader:{id:4285134,name:"simplymarvellous",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f7a8",avatar:"https://cdn.beatsaver.com/avatar/189618441429319680.png",type:"DISCORD"},metadata:{bpm:164,duration:213,songName:"LA DI DA",songSubName:"",songAuthorName:"EVERGLOW",levelAuthorName:"simplymarvellous"},stats:{plays:0,downloads:7650,upvotes:825,downvotes:14,score:.9196},uploaded:"2020-10-09T07:03:45.316Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"000fbcb46c41cd0c363a80ae389333f7625e0921",key:"fc05",state:"Published",createdAt:"2020-10-09T07:03:45.316Z",sageScore:4,diffs:[{njs:14,offset:.4,notes:651,bombs:36,obstacles:166,nps:3.138,length:567,characteristic:"Standard",difficulty:"Hard",events:9456,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.439,paritySummary:{errors:1,warns:0,resets:12}},{njs:16,offset:0,notes:811,bombs:36,obstacles:172,nps:3.91,length:567,characteristic:"Standard",difficulty:"Expert",events:9456,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.439,paritySummary:{errors:0,warns:0,resets:9}},{njs:18,offset:-.4,notes:934,bombs:26,obstacles:172,nps:4.503,length:567,characteristic:"Standard",difficulty:"ExpertPlus",events:9456,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.439,paritySummary:{errors:0,warns:4,resets:6}}],downloadURL:"https://cdn.beatsaver.com/000fbcb46c41cd0c363a80ae389333f7625e0921.zip",coverURL:"https://cdn.beatsaver.com/000fbcb46c41cd0c363a80ae389333f7625e0921.jpg",previewURL:"https://cdn.beatsaver.com/000fbcb46c41cd0c363a80ae389333f7625e0921.mp3"}],createdAt:"2020-10-09T07:03:45.316Z",updatedAt:"2020-10-09T07:03:45.316Z",lastPublishedAt:"2020-10-09T07:03:45.316Z"},{id:"2b13",name:"Viva La Vida - Coldplay",description:"Love Viva La Vida, was one of my favorite childhood songs from Coldplay. 9 Years later, this song ages like fine wine. Just like Grenade, I brought this song off itunes so its the highest quality file you can get :)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:138,duration:243,songName:"Viva La Vida",songSubName:"Coldplay",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:5911,upvotes:1934,downvotes:66,score:.9196},uploaded:"2019-01-05T06:02:16Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"023f19dd2ae57e43b99d62c837d1c708020f635d",key:"2b13",state:"Published",createdAt:"2019-01-05T06:02:16Z",sageScore:5,diffs:[{njs:14,offset:0,notes:919,bombs:0,obstacles:41,nps:4.136,length:511,characteristic:"Standard",difficulty:"Hard",events:714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.174,paritySummary:{errors:41,warns:35,resets:0}}],downloadURL:"https://cdn.beatsaver.com/023f19dd2ae57e43b99d62c837d1c708020f635d.zip",coverURL:"https://cdn.beatsaver.com/023f19dd2ae57e43b99d62c837d1c708020f635d.jpg",previewURL:"https://cdn.beatsaver.com/023f19dd2ae57e43b99d62c837d1c708020f635d.mp3"}],createdAt:"2019-01-05T06:02:16Z",updatedAt:"2019-01-05T06:02:16Z",lastPublishedAt:"2019-01-05T06:02:16Z"},{id:"21",name:"REOL feat. nqrse - LUVORATORRRRRY!",description:"Hard (353 notes) / Hard+ (455 notes) / Expert (526 notes) / 15 Obstacles / Video Demonstration: https://streamable.com/23ayv / Part 1 of the J-EDM Graduation series! Use this song pack to level up your game!",uploader:{id:48853,name:"datkami",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8a3",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8a3?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:139,songName:"LUVORATORRRRRY!",songSubName:"feat.nqrse",songAuthorName:"Reol",levelAuthorName:"datkami"},stats:{plays:0,downloads:4483,upvotes:4237,downvotes:195,score:.9196},uploaded:"2018-05-10T02:24:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c807689fefdae82aa79ba9c7f861118fb426b4cc",key:"21",state:"Published",createdAt:"2018-05-10T02:24:36Z",sageScore:5,diffs:[{njs:10,offset:0,notes:353,bombs:4,obstacles:15,nps:2.624,length:287,characteristic:"Standard",difficulty:"Normal",events:6e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.531,paritySummary:{errors:61,warns:33,resets:0}},{njs:10,offset:0,notes:455,bombs:4,obstacles:15,nps:3.382,length:287,characteristic:"Standard",difficulty:"Hard",events:6e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.531,paritySummary:{errors:75,warns:74,resets:0}},{njs:10,offset:0,notes:526,bombs:10,obstacles:15,nps:3.91,length:287,characteristic:"Standard",difficulty:"Expert",events:1e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.531,paritySummary:{errors:72,warns:78,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c807689fefdae82aa79ba9c7f861118fb426b4cc.zip",coverURL:"https://cdn.beatsaver.com/c807689fefdae82aa79ba9c7f861118fb426b4cc.jpg",previewURL:"https://cdn.beatsaver.com/c807689fefdae82aa79ba9c7f861118fb426b4cc.mp3"}],createdAt:"2018-05-10T02:24:36Z",updatedAt:"2018-05-10T02:24:36Z",lastPublishedAt:"2018-05-10T02:24:36Z"},{id:"6a14",name:"Sweet But Psycho - Ava Max",description:"Mapped by Drunkdwarf. Fun upbeat tune that's great for dancing. Any feedback is appreciated ",uploader:{id:36873,name:"drunkdwarf",uniqueSet:!0,hash:"5d9eea1e048dff0006e87333",avatar:"https://www.gravatar.com/avatar/5d9eea1e048dff0006e87333?d=retro",type:"SIMPLE"},metadata:{bpm:133,duration:189,songName:"Sweet But Psycho",songSubName:"",songAuthorName:"Ava Max",levelAuthorName:"Drunkdwarf"},stats:{plays:0,downloads:1850,upvotes:746,downvotes:11,score:.9195},uploaded:"2019-10-16T05:39:20.052Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eed9239c036bce71b6d23cf90a3886fc88adb6ee",key:"6a14",state:"Published",createdAt:"2019-10-16T05:39:20.052Z",sageScore:4,diffs:[{njs:14,offset:0,notes:661,bombs:0,obstacles:23,nps:3.672,length:399,characteristic:"Standard",difficulty:"Expert",events:952,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:55,warns:49,resets:0}}],downloadURL:"https://cdn.beatsaver.com/eed9239c036bce71b6d23cf90a3886fc88adb6ee.zip",coverURL:"https://cdn.beatsaver.com/eed9239c036bce71b6d23cf90a3886fc88adb6ee.jpg",previewURL:"https://cdn.beatsaver.com/eed9239c036bce71b6d23cf90a3886fc88adb6ee.mp3"}],createdAt:"2019-10-16T05:39:20.052Z",updatedAt:"2019-10-16T05:39:20.052Z",lastPublishedAt:"2019-10-16T05:39:20.052Z"},{id:"11b01",name:"Merry Go Round of Life - Howl's Moving Castle (Joe Hisaishi)",description:"#302\n\nYoutube Preview : https://www.youtube.com/watch?v=q45z-XvFGeI\n\nDiscord Server : https://discord.gg/3ZSWSTh\nTwitch: https://www.twitch.tv/rigiiid\nTwitter: https://twitter.com/Rigid_bs\nYoutube : https://www.youtube.com/channel/UC36LRBThDdVFjCr-ZXOj-Uw",uploader:{id:4284588,name:"rigid",uniqueSet:!0,hash:"5cff0b7598cc5a672c852224",avatar:"https://cdn.beatsaver.com/avatar/295613108947386368.png",type:"DISCORD"},metadata:{bpm:165,duration:309,songName:"Merry-Go Round Of Life",songSubName:"",songAuthorName:"Joe Hisaishi",levelAuthorName:"Rigid"},stats:{plays:0,downloads:2060,upvotes:818,downvotes:14,score:.9194},uploaded:"2020-12-03T23:32:31.283Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d93e9ef74098ff490d0cd05e492f20c2be750ce2",key:"11b01",state:"Published",createdAt:"2020-12-03T23:32:31.283Z",sageScore:1,diffs:[{njs:17,offset:-.2,notes:1020,bombs:41,obstacles:18,nps:3.42,length:820.105,characteristic:"Standard",difficulty:"ExpertPlus",events:3102,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:298.22,paritySummary:{errors:1,warns:0,resets:3}}],downloadURL:"https://cdn.beatsaver.com/d93e9ef74098ff490d0cd05e492f20c2be750ce2.zip",coverURL:"https://cdn.beatsaver.com/d93e9ef74098ff490d0cd05e492f20c2be750ce2.jpg",previewURL:"https://cdn.beatsaver.com/d93e9ef74098ff490d0cd05e492f20c2be750ce2.mp3"}],createdAt:"2020-12-03T23:32:31.283Z",updatedAt:"2020-12-03T23:32:31.283Z",lastPublishedAt:"2020-12-03T23:32:31.283Z"},{id:"618a",name:"Teminite - Party Time",description:"Expert only\r\n",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:271,songName:"Party Time",songSubName:"",songAuthorName:"Teminite",levelAuthorName:"Rustic"},stats:{plays:0,downloads:1898,upvotes:1056,downvotes:24,score:.9194},uploaded:"2019-09-05T20:33:35.424Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"05aa128214d1adc3ca599a0475b6c422debc08e0",key:"618a",state:"Published",createdAt:"2019-09-05T20:33:35.424Z",sageScore:6,diffs:[{njs:18,offset:0,notes:953,bombs:112,obstacles:1389,nps:3.65,length:544,characteristic:"Standard",difficulty:"Expert",events:7206,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:261.12,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/05aa128214d1adc3ca599a0475b6c422debc08e0.zip",coverURL:"https://cdn.beatsaver.com/05aa128214d1adc3ca599a0475b6c422debc08e0.jpg",previewURL:"https://cdn.beatsaver.com/05aa128214d1adc3ca599a0475b6c422debc08e0.mp3"}],createdAt:"2019-09-05T20:33:35.424Z",updatedAt:"2019-09-05T20:33:35.424Z",lastPublishedAt:"2019-09-05T20:33:35.424Z"},{id:"3b82",name:"DJ Got Us Fallin In Love - Usher ft. Pitbull",description:'"DJ Got Us Fallin\' in Love" is a song by American R&B recording artist Usher featuring guest vocals from American rapper Pitbull.\r\n\r\nSong is brought from iTunes for the highest quality sound file :)',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:120,duration:222,songName:"DJ Got Us Fallin In Love",songSubName:"Usher ft. Pitbull",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2910,upvotes:819,downvotes:14,score:.9194},uploaded:"2019-03-04T16:58:43Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"96b8df29da4271f56c6777f11e69cd06669055fe",key:"3b82",state:"Published",createdAt:"2019-03-04T16:58:43Z",sageScore:5,diffs:[{njs:14,offset:0,notes:856,bombs:0,obstacles:5,nps:3.963,length:432,characteristic:"Standard",difficulty:"Expert",events:2006,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216,paritySummary:{errors:82,warns:85,resets:0}}],downloadURL:"https://cdn.beatsaver.com/96b8df29da4271f56c6777f11e69cd06669055fe.zip",coverURL:"https://cdn.beatsaver.com/96b8df29da4271f56c6777f11e69cd06669055fe.jpg",previewURL:"https://cdn.beatsaver.com/96b8df29da4271f56c6777f11e69cd06669055fe.mp3"}],createdAt:"2019-03-04T16:58:43Z",updatedAt:"2019-03-04T16:58:43Z",lastPublishedAt:"2019-03-04T16:58:43Z"},{id:"2649",name:"[Aurora Theory] Erik McClure - Soar",description:"The first map of the start of a new project for me :)\r\n\r\nA peaceful and comfy map, not intended to be super hard at all (unlike most of my other maps) but might be on the harder side of Expert.\r\nPeople need to give Erik McClure more recognition!\r\n\r\nDiscord: discord.gg/EVU9At2 (For updates regarding my maps, notifications for my streams, and a way to contact me)",uploader:{id:4288620,name:"hexagonial",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f2fb",avatar:"https://cdn.beatsaver.com/avatar/221442943045599232.png",type:"DISCORD"},metadata:{bpm:160,duration:350,songName:"Soar",songSubName:"Erik McClure",songAuthorName:"Hexagonial",levelAuthorName:"hexagonial"},stats:{plays:0,downloads:1468,upvotes:1099,downvotes:26,score:.9194},uploaded:"2018-12-16T21:04:48Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"087cedeab4b9e4c3a4b9c594c97bee6f446f0a77",key:"2649",state:"Published",createdAt:"2018-12-16T21:04:48Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1337,bombs:0,obstacles:71,nps:3.961,length:900,characteristic:"Standard",difficulty:"Expert",events:3056,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:337.5,paritySummary:{errors:26,warns:7,resets:0},stars:3.3}],downloadURL:"https://cdn.beatsaver.com/087cedeab4b9e4c3a4b9c594c97bee6f446f0a77.zip",coverURL:"https://cdn.beatsaver.com/087cedeab4b9e4c3a4b9c594c97bee6f446f0a77.jpg",previewURL:"https://cdn.beatsaver.com/087cedeab4b9e4c3a4b9c594c97bee6f446f0a77.mp3"}],createdAt:"2018-12-16T21:04:48Z",updatedAt:"2018-12-16T21:04:48Z",lastPublishedAt:"2018-12-16T21:04:48Z"},{id:"dfc3",name:"K/DA - THE BADDEST ft. (G)I-DLE, Bea Miller, Wolftyla",description:"Collab with ConnorJC. check out his maps! He did the 360 map",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:150,duration:162,songName:"Baddest",songSubName:"",songAuthorName:"KDA",levelAuthorName:"KikaeAeon & ConnorJC"},stats:{plays:0,downloads:4890,upvotes:2449,downvotes:94,score:.9193},uploaded:"2020-08-29T05:50:22.494Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c2a6c6aa907994353fef68370ebbda4da4ea4cc8",key:"dfc3",state:"Published",createdAt:"2020-08-29T05:50:22.494Z",sageScore:5,diffs:[{njs:10,offset:0,notes:274,bombs:0,obstacles:54,nps:1.713,length:400,characteristic:"Standard",difficulty:"Easy",events:901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:11,warns:2,resets:0}},{njs:10,offset:0,notes:321,bombs:0,obstacles:54,nps:2.006,length:400,characteristic:"Standard",difficulty:"Normal",events:1004,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:3,warns:0,resets:0}},{njs:12,offset:0,notes:464,bombs:0,obstacles:61,nps:2.9,length:400,characteristic:"Standard",difficulty:"Hard",events:1347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:13,warns:13,resets:0}},{njs:14,offset:0,notes:608,bombs:0,obstacles:65,nps:3.8,length:400,characteristic:"Standard",difficulty:"Expert",events:1614,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:17,warns:23,resets:0}},{njs:16,offset:0,notes:851,bombs:0,obstacles:96,nps:5.319,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:2480,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:19,warns:41,resets:0}},{njs:19,offset:0,notes:944,bombs:6,obstacles:305,nps:5.9,length:400,characteristic:"360Degree",difficulty:"ExpertPlus",events:3408,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c2a6c6aa907994353fef68370ebbda4da4ea4cc8.zip",coverURL:"https://cdn.beatsaver.com/c2a6c6aa907994353fef68370ebbda4da4ea4cc8.jpg",previewURL:"https://cdn.beatsaver.com/c2a6c6aa907994353fef68370ebbda4da4ea4cc8.mp3"}],createdAt:"2020-08-29T05:50:22.494Z",updatedAt:"2020-08-29T05:50:22.494Z",lastPublishedAt:"2020-08-29T05:50:22.494Z"},{id:"5893",name:"Crypt of the NecroDancer - King Conga",description:"Hope you like this remap :) \n\n- ORYGINAL",uploader:{id:34774,name:"oryginal",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551e0",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8551e0?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:107,songName:"King Conga",songSubName:"",songAuthorName:"Danny Baranowsky",levelAuthorName:"ORYGINAL"},stats:{plays:0,downloads:1592,upvotes:741,downvotes:11,score:.9193},uploaded:"2019-07-23T14:43:05.570Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d0b4c5fcc3522f5b58d1ff2da7cfdd8086651078",key:"5893",state:"Published",createdAt:"2019-07-23T14:43:05.570Z",sageScore:4,diffs:[{njs:12,offset:0,notes:311,bombs:104,obstacles:30,nps:3.019,length:206,characteristic:"Standard",difficulty:"Hard",events:1160,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:103,paritySummary:{errors:15,warns:21,resets:4}},{njs:12,offset:0,notes:387,bombs:118,obstacles:23,nps:3.757,length:206,characteristic:"Standard",difficulty:"Expert",events:1160,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:103,paritySummary:{errors:9,warns:19,resets:4}}],downloadURL:"https://cdn.beatsaver.com/d0b4c5fcc3522f5b58d1ff2da7cfdd8086651078.zip",coverURL:"https://cdn.beatsaver.com/d0b4c5fcc3522f5b58d1ff2da7cfdd8086651078.jpg",previewURL:"https://cdn.beatsaver.com/d0b4c5fcc3522f5b58d1ff2da7cfdd8086651078.mp3"}],createdAt:"2019-07-23T14:43:05.570Z",updatedAt:"2019-07-23T14:43:05.570Z",lastPublishedAt:"2019-07-23T14:43:05.570Z"},{id:"3821",name:"Le Perv - Carpenter Brut (Hotline Miami 2 Soundtrack)",description:"Shoutouts to twitch.tv/lexington64 and twitch.tv/whipstickgostop for playtesting!",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:120,duration:259,songName:"Le Perv",songSubName:"Carpenter Brut",songAuthorName:"Ris",levelAuthorName:"Ris"},stats:{plays:0,downloads:1655,upvotes:983,downvotes:21,score:.9193},uploaded:"2019-02-21T02:57:32Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"57ad431c662057d428e920a8cd225bae5ab3d2c3",key:"3821",state:"Published",createdAt:"2019-02-21T02:57:32Z",sageScore:3,diffs:[{njs:10,offset:0,notes:488,bombs:0,obstacles:0,nps:1.91,length:511,characteristic:"Standard",difficulty:"Normal",events:369,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.5,paritySummary:{errors:109,warns:46,resets:0}},{njs:10,offset:0,notes:922,bombs:0,obstacles:0,nps:3.609,length:511,characteristic:"Standard",difficulty:"Hard",events:369,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.5,paritySummary:{errors:99,warns:85,resets:0}},{njs:12,offset:0,notes:1176,bombs:0,obstacles:0,nps:4.603,length:511,characteristic:"Standard",difficulty:"Expert",events:369,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.5,paritySummary:{errors:104,warns:99,resets:0}}],downloadURL:"https://cdn.beatsaver.com/57ad431c662057d428e920a8cd225bae5ab3d2c3.zip",coverURL:"https://cdn.beatsaver.com/57ad431c662057d428e920a8cd225bae5ab3d2c3.jpg",previewURL:"https://cdn.beatsaver.com/57ad431c662057d428e920a8cd225bae5ab3d2c3.mp3"}],createdAt:"2019-02-21T02:57:32Z",updatedAt:"2019-02-21T02:57:32Z",lastPublishedAt:"2019-02-21T02:57:32Z"},{id:"623c",name:"Lil Tecca - Ransom",description:"",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:180,duration:133,songName:"Ransom",songSubName:"",songAuthorName:"Lil Tecca",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:2213,upvotes:1476,downvotes:44,score:.9192},uploaded:"2019-09-08T17:05:01.320Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ebdaaafecece7859d28ee1d80a94fa8b2b9992a3",key:"623c",state:"Published",createdAt:"2019-09-08T17:05:01.320Z",sageScore:5,diffs:[{njs:12,offset:0,notes:358,bombs:0,obstacles:31,nps:2.834,length:379,characteristic:"Standard",difficulty:"Expert",events:914,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:126.333,paritySummary:{errors:11,warns:13,resets:0}},{njs:16,offset:0,notes:571,bombs:0,obstacles:24,nps:4.52,length:379,characteristic:"Standard",difficulty:"ExpertPlus",events:684,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:126.333,paritySummary:{errors:12,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ebdaaafecece7859d28ee1d80a94fa8b2b9992a3.zip",coverURL:"https://cdn.beatsaver.com/ebdaaafecece7859d28ee1d80a94fa8b2b9992a3.jpg",previewURL:"https://cdn.beatsaver.com/ebdaaafecece7859d28ee1d80a94fa8b2b9992a3.mp3"}],createdAt:"2019-09-08T17:05:01.320Z",updatedAt:"2019-09-08T17:05:01.320Z",lastPublishedAt:"2019-09-08T17:05:01.320Z"},{id:"2b56",name:"Pitbull Ft. Ke$ha - Timber",description:"Happy New Year! Here is a song I've been working on for a long time (With A LOT of procrastination). It didn't quite feel right with the notes being on beat so I extended them 1/16th off beat and it sounded a little better. Enjoy!\r\n\r\nVideo Preview of expert: https://youtu.be/ntGqRvV5hX4",uploader:{id:1974,name:"scottie2pottie",uniqueSet:!0,hash:"5cff0b7598cc5a672c85329f",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c85329f?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:204,songName:"Timber",songSubName:"Pitbull",songAuthorName:"Scottie2Pottie",levelAuthorName:"scottie2pottie"},stats:{plays:0,downloads:4086,upvotes:1223,downvotes:32,score:.9191},uploaded:"2019-01-06T03:24:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ca709a09209760e19d9b63952aa208efc4663aef",key:"2b56",state:"Published",createdAt:"2019-01-06T03:24:10Z",sageScore:5,diffs:[{njs:10,offset:0,notes:721,bombs:4,obstacles:0,nps:3.616,length:432,characteristic:"Standard",difficulty:"Hard",events:1003,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.385,paritySummary:{errors:34,warns:15,resets:0}},{njs:10,offset:0,notes:932,bombs:4,obstacles:0,nps:4.674,length:432,characteristic:"Standard",difficulty:"Expert",events:1124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.385,paritySummary:{errors:29,warns:31,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ca709a09209760e19d9b63952aa208efc4663aef.zip",coverURL:"https://cdn.beatsaver.com/ca709a09209760e19d9b63952aa208efc4663aef.jpg",previewURL:"https://cdn.beatsaver.com/ca709a09209760e19d9b63952aa208efc4663aef.mp3"}],createdAt:"2019-01-06T03:24:10Z",updatedAt:"2019-01-06T03:24:10Z",lastPublishedAt:"2019-01-06T03:24:10Z"},{id:"12db3",name:"Lindsey Sterling - Artemis ",description:"Made this a couple of months ago and totally didn't forget to upload it.\n\nThis was a special request by--I don't even know. I forgot. It's that old.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:190,duration:228,songName:"Artemis",songSubName:"",songAuthorName:"Lindsey Stirling",levelAuthorName:"Ab"},stats:{plays:0,downloads:1518,upvotes:602,downvotes:6,score:.919},uploaded:"2021-01-18T06:05:51.386Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a8df2df28d239a14b18f40855045eaca88a0c8e5",key:"12db3",state:"Published",createdAt:"2021-01-18T06:05:51.386Z",sageScore:3,diffs:[{njs:21,offset:0,notes:975,bombs:0,obstacles:2,nps:4.358,length:708.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1159,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.737,paritySummary:{errors:6,warns:5,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a8df2df28d239a14b18f40855045eaca88a0c8e5.zip",coverURL:"https://cdn.beatsaver.com/a8df2df28d239a14b18f40855045eaca88a0c8e5.jpg",previewURL:"https://cdn.beatsaver.com/a8df2df28d239a14b18f40855045eaca88a0c8e5.mp3"}],createdAt:"2021-01-18T06:05:51.386Z",updatedAt:"2021-01-18T06:05:51.386Z",lastPublishedAt:"2021-01-18T06:05:51.386Z"},{id:"2db1",name:"Huey Lewis - The Power of Love",description:"Here is my first map of 2019 covering 'The power of love' by Huey Lewis!\r\nAll difficulties are included from easy to expert, enjoy ;)\r\n\r\nBeastsaber: https://bsaber.com/members/stumi/\r\nVideo: https://www.youtube.com/watch?v=7aHevt6DVkc",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:119,duration:226,songName:"The power of love",songSubName:"Huey Lewis",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:6882,upvotes:1088,downvotes:26,score:.919},uploaded:"2019-01-14T18:26:26Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bf261b573d7c649150ea1c23ec504130904b6aa2",key:"2db1",state:"Published",createdAt:"2019-01-14T18:26:26Z",sageScore:6,diffs:[{njs:10,offset:0,notes:311,bombs:0,obstacles:17,nps:1.449,length:425,characteristic:"Standard",difficulty:"Easy",events:1830,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.286,paritySummary:{errors:29,warns:22,resets:0}},{njs:10,offset:0,notes:489,bombs:0,obstacles:20,nps:2.278,length:425,characteristic:"Standard",difficulty:"Normal",events:1830,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.286,paritySummary:{errors:37,warns:55,resets:0}},{njs:11,offset:0,notes:697,bombs:0,obstacles:1,nps:3.247,length:425,characteristic:"Standard",difficulty:"Hard",events:1831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.286,paritySummary:{errors:41,warns:40,resets:0}},{njs:12,offset:0,notes:920,bombs:0,obstacles:0,nps:4.287,length:424.875,characteristic:"Standard",difficulty:"Expert",events:1831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.223,paritySummary:{errors:59,warns:68,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bf261b573d7c649150ea1c23ec504130904b6aa2.zip",coverURL:"https://cdn.beatsaver.com/bf261b573d7c649150ea1c23ec504130904b6aa2.jpg",previewURL:"https://cdn.beatsaver.com/bf261b573d7c649150ea1c23ec504130904b6aa2.mp3"}],createdAt:"2019-01-14T18:26:26Z",updatedAt:"2019-01-14T18:26:26Z",lastPublishedAt:"2019-01-14T18:26:26Z"},{id:"10377",name:"Marnik - Hocus Pocus (Original Mix)",description:"use CHROMA mod for\n - PanicEnvironment environment removal\n - Cool lights\n - to gain superpowers\n\nHappy Halloween!\n\nBPM | 130\nExpert+\nExpert\nHard\nNormal\nEasy\n\npreview: https://www.youtube.com/watch?v=DfzD_Ca4fp4\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:130,duration:242,songName:"Hocus Pocus",songSubName:"(Original Mix)",songAuthorName:"Marnik",levelAuthorName:"ETAN"},stats:{plays:0,downloads:7135,upvotes:1324,downvotes:37,score:.919},uploaded:"2020-10-25T22:28:11.819Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4e37c7070b9049ebbbf11ceab644d4ec4a01ca13",key:"10377",state:"Published",createdAt:"2020-10-25T22:28:11.819Z",sageScore:6,diffs:[{njs:9,offset:0,notes:232,bombs:0,obstacles:34,nps:.99,length:508,characteristic:"Standard",difficulty:"Easy",events:21660,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:40,warns:0,resets:0}},{njs:11,offset:1,notes:493,bombs:0,obstacles:34,nps:2.103,length:508,characteristic:"Standard",difficulty:"Normal",events:21660,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:0,warns:0,resets:0}},{njs:13,offset:.5,notes:693,bombs:0,obstacles:34,nps:2.956,length:508,characteristic:"Standard",difficulty:"Hard",events:21660,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:966,bombs:0,obstacles:34,nps:4.12,length:508,characteristic:"Standard",difficulty:"Expert",events:21660,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:0,warns:0,resets:0}},{njs:21,offset:.4,notes:1172,bombs:80,obstacles:34,nps:4.999,length:508,characteristic:"Standard",difficulty:"ExpertPlus",events:21661,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:6,warns:3,resets:34}}],downloadURL:"https://cdn.beatsaver.com/4e37c7070b9049ebbbf11ceab644d4ec4a01ca13.zip",coverURL:"https://cdn.beatsaver.com/4e37c7070b9049ebbbf11ceab644d4ec4a01ca13.jpg",previewURL:"https://cdn.beatsaver.com/4e37c7070b9049ebbbf11ceab644d4ec4a01ca13.mp3"}],createdAt:"2020-10-25T22:28:11.819Z",updatedAt:"2020-10-25T22:28:11.819Z",lastPublishedAt:"2020-10-25T22:28:11.819Z"},{id:"8367",name:"Martin Garrix & Dua Lipa - Scared To Be Lonely (Brooks Remix)",description:"Brooks does amazing remixes and this is probably one of my favourite ones\n\nVideo: https://youtu.be/OgmhqC5e9m8\n\nEasy: Notes: 132 NPS: 1.47 NJS: 10\nNormal: Notes: 164 NPS: 1.8 NJS: 12\nHard: Notes: 256 NPS: 2.82 NJS: 14\nExpert: Notes: 351 NPS: 3.86 NJS: 16\nExpert+: Notes: 417 NPS: 4.59 NJS: 18\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:104,songName:"Scared To Be Lonely",songSubName:"Brooks Remix",songAuthorName:"Martin Garrix ft. Dua Lipa",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:3240,upvotes:1111,downvotes:27,score:.919},uploaded:"2020-02-02T01:20:18.328Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"60dac314035b8f9da649286c587aa6377abf1f16",key:"8367",state:"Published",createdAt:"2020-02-02T01:20:18.328Z",sageScore:7,diffs:[{njs:10,offset:1,notes:132,bombs:0,obstacles:2,nps:1.467,length:192,characteristic:"Standard",difficulty:"Easy",events:2499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:8,warns:0,resets:0}},{njs:12,offset:.5,notes:164,bombs:0,obstacles:2,nps:1.803,length:194,characteristic:"Standard",difficulty:"Normal",events:2499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90.938,paritySummary:{errors:10,warns:2,resets:0}},{njs:14,offset:0,notes:256,bombs:0,obstacles:8,nps:2.815,length:194,characteristic:"Standard",difficulty:"Hard",events:2499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90.938,paritySummary:{errors:1,warns:1,resets:0}},{njs:16,offset:-.25,notes:351,bombs:0,obstacles:16,nps:3.86,length:194,characteristic:"Standard",difficulty:"Expert",events:2499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90.938,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.5,notes:417,bombs:0,obstacles:34,nps:4.586,length:194,characteristic:"Standard",difficulty:"ExpertPlus",events:2498,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90.938,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/60dac314035b8f9da649286c587aa6377abf1f16.zip",coverURL:"https://cdn.beatsaver.com/60dac314035b8f9da649286c587aa6377abf1f16.jpg",previewURL:"https://cdn.beatsaver.com/60dac314035b8f9da649286c587aa6377abf1f16.mp3"}],createdAt:"2020-02-02T01:20:18.328Z",updatedAt:"2020-02-02T01:20:18.328Z",lastPublishedAt:"2020-02-02T01:20:18.328Z"},{id:"a90b",name:"[TheFatRat Pack] Xenogenesis - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nXenogenesis Stats:\nExpert+ - 955 Notes | 4.17 NPS\nExpert - 863 Notes | 3.77 NPS\nHard - 649 Notes | 2.84 NPS\nNormal - 439 Notes | 1.92 NPS\nEasy - 347 Notes | 1.52 NPS\n\nRoughly 7-8 Hours of work\nGameplay: https://youtu.be/YA0zBFQcLnc\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:145,duration:228,songName:"Xenogenesis",songSubName:"",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:4735,upvotes:1216,downvotes:32,score:.9189},uploaded:"2020-05-22T13:28:50.525Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"15ab8f50a6b1a7ff95955ba236426ab4edf9cb15",key:"a90b",state:"Published",createdAt:"2020-05-22T13:28:50.525Z",sageScore:5,diffs:[{njs:10,offset:0,notes:347,bombs:0,obstacles:53,nps:1.55,length:541,characteristic:"Standard",difficulty:"Easy",events:5971,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:54,warns:35,resets:0}},{njs:10,offset:0,notes:439,bombs:0,obstacles:97,nps:1.961,length:541,characteristic:"Standard",difficulty:"Normal",events:5971,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:30,warns:12,resets:0}},{njs:12.5,offset:1,notes:649,bombs:0,obstacles:121,nps:2.899,length:541,characteristic:"Standard",difficulty:"Hard",events:5971,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:6,warns:4,resets:0}},{njs:15,offset:.5,notes:863,bombs:0,obstacles:137,nps:3.855,length:541,characteristic:"Standard",difficulty:"Expert",events:6162,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:2,warns:1,resets:0}},{njs:17,offset:0,notes:955,bombs:0,obstacles:169,nps:4.266,length:541,characteristic:"Standard",difficulty:"ExpertPlus",events:6160,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:4,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/15ab8f50a6b1a7ff95955ba236426ab4edf9cb15.zip",coverURL:"https://cdn.beatsaver.com/15ab8f50a6b1a7ff95955ba236426ab4edf9cb15.jpg",previewURL:"https://cdn.beatsaver.com/15ab8f50a6b1a7ff95955ba236426ab4edf9cb15.mp3"}],createdAt:"2020-05-22T13:28:50.525Z",updatedAt:"2020-05-22T13:28:50.525Z",lastPublishedAt:"2020-05-22T13:28:50.525Z"},{id:"9b41",name:"Diving In Too Deep - NerdOut",description:"Diving In Too Deep, a Subnautica song created by NerdOut! All I can say is expect W A L L S ! ! !\n(Mapping Extensions required)",uploader:{id:23150,name:"kuritsadbs",uniqueSet:!0,hash:"5cff0b7698cc5a672c8537ef",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8537ef?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:195,songName:"Diving In Too Deep",songSubName:"",songAuthorName:"NerdOut",levelAuthorName:"KuritsaDBS"},stats:{plays:0,downloads:779,upvotes:512,downvotes:3,score:.9188},uploaded:"2020-04-15T11:53:14.568Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fe10d96acbb9a6416e1e7710270e12032b642288",key:"9b41",state:"Published",createdAt:"2020-04-15T11:53:14.568Z",sageScore:4,diffs:[{njs:16,offset:0,notes:481,bombs:0,obstacles:1919,nps:2.736,length:395.5,characteristic:"Standard",difficulty:"Expert",events:7541,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:175.778,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fe10d96acbb9a6416e1e7710270e12032b642288.zip",coverURL:"https://cdn.beatsaver.com/fe10d96acbb9a6416e1e7710270e12032b642288.jpg",previewURL:"https://cdn.beatsaver.com/fe10d96acbb9a6416e1e7710270e12032b642288.mp3"}],createdAt:"2020-04-15T11:53:14.568Z",updatedAt:"2020-04-15T11:53:14.568Z",lastPublishedAt:"2020-04-15T11:53:14.568Z"},{id:"7ba4",name:"Say So - Doja Cat",description:"Based on the Tik Tok dance meme song, Say So by Doja Cat.",uploader:{id:34446,name:"cartwheels",uniqueSet:!0,hash:"5e0cf5fbbe3a060006a86875",avatar:"https://www.gravatar.com/avatar/5e0cf5fbbe3a060006a86875?d=retro",type:"SIMPLE"},metadata:{bpm:111,duration:238,songName:"Say So",songSubName:"",songAuthorName:"Doja Cat",levelAuthorName:"mikey f"},stats:{plays:0,downloads:5177,upvotes:1523,downvotes:47,score:.9188},uploaded:"2020-01-02T00:07:45.673Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e931eac117453cea276351917c1af2b5f0a1c7df",key:"7ba4",state:"Published",createdAt:"2020-01-02T00:07:45.673Z",sageScore:5,diffs:[{njs:12,offset:0,notes:464,bombs:54,obstacles:11,nps:2.07,length:414.75,characteristic:"Standard",difficulty:"Normal",events:1366,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.189,paritySummary:{errors:49,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e931eac117453cea276351917c1af2b5f0a1c7df.zip",coverURL:"https://cdn.beatsaver.com/e931eac117453cea276351917c1af2b5f0a1c7df.jpg",previewURL:"https://cdn.beatsaver.com/e931eac117453cea276351917c1af2b5f0a1c7df.mp3"}],createdAt:"2020-01-02T00:07:45.673Z",updatedAt:"2020-01-02T00:07:45.673Z",lastPublishedAt:"2020-01-02T00:07:45.673Z"},{id:"500d",name:"Thunder - Imagine Dragons",description:"168 BPM / 3:00 Runtime\r\nEasy / 202 Notes\r\nNormal / 270 Notes\r\nHard / 400 Notes\r\nExpert / 505 Notes\r\nExpert+ / 660 Notes\r\n\r\nGameplay: Coming Soon",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:168,duration:180,songName:"Thunder",songSubName:"Imagine Dragons",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:8953,upvotes:3133,downvotes:134,score:.9188},uploaded:"2019-05-31T04:43:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1374613734d2d110f06783c7b7c32579e7a2808f",key:"500d",state:"Published",createdAt:"2019-05-31T04:43:45Z",sageScore:8,diffs:[{njs:10,offset:0,notes:202,bombs:0,obstacles:5,nps:1.178,length:480,characteristic:"Standard",difficulty:"Easy",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:38,warns:28,resets:0}},{njs:10,offset:0,notes:270,bombs:0,obstacles:7,nps:1.575,length:480,characteristic:"Standard",difficulty:"Normal",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:33,warns:31,resets:0}},{njs:10,offset:0,notes:400,bombs:0,obstacles:10,nps:2.333,length:480,characteristic:"Standard",difficulty:"Hard",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:55,warns:81,resets:0}},{njs:12,offset:0,notes:505,bombs:0,obstacles:13,nps:2.946,length:480,characteristic:"Standard",difficulty:"Expert",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:47,warns:64,resets:0}},{njs:14,offset:1,notes:660,bombs:4,obstacles:14,nps:3.85,length:480,characteristic:"Standard",difficulty:"ExpertPlus",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:39,warns:64,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1374613734d2d110f06783c7b7c32579e7a2808f.zip",coverURL:"https://cdn.beatsaver.com/1374613734d2d110f06783c7b7c32579e7a2808f.jpg",previewURL:"https://cdn.beatsaver.com/1374613734d2d110f06783c7b7c32579e7a2808f.mp3"}],createdAt:"2019-05-31T04:43:45Z",updatedAt:"2019-05-31T04:43:45Z",lastPublishedAt:"2019-05-31T04:43:45Z"},{id:"4211",name:"Overkill - RIOT",description:"Thank you Everyone for the massive amount of support on this map. I'm very happy to release this as a V2 and hopefully you can all get some enjoyment like the first one did but with some very large QOL updates to the map as well that'll make the map in turn play much smoother and a ton of pattern changes that gives the map some more life! :D\r\n\r\nBig Thanks to RedMagi and Saut for modding and playtesting! :D",uploader:{id:408,name:"nuketime",uniqueSet:!0,hash:"5cff0b7498cc5a672c8507f7",avatar:"https://cdn.beatsaver.com/avatar/175811186007343104.png",type:"DISCORD"},metadata:{bpm:174,duration:308,songName:"Overkill",songSubName:"RIOT",songAuthorName:"Nuketime",levelAuthorName:"Nuketime"},stats:{plays:0,downloads:1444,upvotes:1211,downvotes:32,score:.9187},uploaded:"2019-03-30T19:12:13Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"aa94aeef877eecea90e4cf3795a84799056042e3",key:"4211",state:"Published",createdAt:"2019-03-30T19:12:13Z",sageScore:5,diffs:[{njs:19,offset:0,notes:1914,bombs:108,obstacles:368,nps:6.465,length:858.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3602,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296.035,paritySummary:{errors:56,warns:53,resets:0}}],downloadURL:"https://cdn.beatsaver.com/aa94aeef877eecea90e4cf3795a84799056042e3.zip",coverURL:"https://cdn.beatsaver.com/aa94aeef877eecea90e4cf3795a84799056042e3.jpg",previewURL:"https://cdn.beatsaver.com/aa94aeef877eecea90e4cf3795a84799056042e3.mp3"}],createdAt:"2019-03-30T19:12:13Z",updatedAt:"2019-03-30T19:12:13Z",lastPublishedAt:"2019-03-30T19:12:13Z"},{id:"827d",name:"Robin Hustin x TobiMorrow - Light It Up (feat. Jex)",description:"Brings me back to when I made lights for this a long time ago. \n\nVideo: https://youtu.be/ttzkzmB39Bs\n\nEasy: Notes: 117 NPS: 1.31 NJS: 10\nNormal: Notes: 169 NPS: 1.9 NJS: 12\nHard: Notes: 237 NPS: 2.66 NJS: 14\nExpert: Notes: 325 NPS: 3.61 NJS: 16\nExpert+: Notes: 452 NPS: 5.02 NJS: 18\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:102,songName:"Light It Up",songSubName:"ft. Jex",songAuthorName:"Robin Hustin, TobiMorrow",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:5922,upvotes:1375,downvotes:40,score:.9186},uploaded:"2020-01-29T22:25:19.574Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"22da796f08f777c437d4996d52ea1778e8e762ae",key:"827d",state:"Published",createdAt:"2020-01-29T22:25:19.574Z",sageScore:7,diffs:[{njs:10,offset:1,notes:117,bombs:0,obstacles:9,nps:1.312,length:190.25,characteristic:"Standard",difficulty:"Easy",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.18,paritySummary:{errors:2,warns:2,resets:0}},{njs:12,offset:.5,notes:169,bombs:0,obstacles:8,nps:1.895,length:190.25,characteristic:"Standard",difficulty:"Normal",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.18,paritySummary:{errors:4,warns:1,resets:0}},{njs:14,offset:0,notes:237,bombs:0,obstacles:17,nps:2.658,length:190.25,characteristic:"Standard",difficulty:"Hard",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.18,paritySummary:{errors:1,warns:0,resets:0}},{njs:16,offset:-.25,notes:325,bombs:0,obstacles:6,nps:3.611,length:192,characteristic:"Standard",difficulty:"Expert",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.5,notes:452,bombs:0,obstacles:16,nps:5.022,length:192,characteristic:"Standard",difficulty:"ExpertPlus",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/22da796f08f777c437d4996d52ea1778e8e762ae.zip",coverURL:"https://cdn.beatsaver.com/22da796f08f777c437d4996d52ea1778e8e762ae.jpg",previewURL:"https://cdn.beatsaver.com/22da796f08f777c437d4996d52ea1778e8e762ae.mp3"}],createdAt:"2020-01-29T22:25:19.574Z",updatedAt:"2020-01-29T22:25:19.574Z",lastPublishedAt:"2020-01-29T22:25:19.574Z"},{id:"105f5",name:"Porter Robinson & Madeon - Shelter",description:"A map that doesnt mess with chroma, but with boost lights\n\nBPM 100\nWonder (Expert)\n\nThis map was a special request from Lukken\n\npreview: https://www.youtube.com/watch?v=T1NscB2M4zI\n\nPlease enjoy\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:100,duration:221,songName:"Shelter",songSubName:"",songAuthorName:"Porter Robinson & Madeon",levelAuthorName:"ETAN"},stats:{plays:0,downloads:6551,upvotes:893,downvotes:18,score:.9185},uploaded:"2020-10-29T23:59:50.753Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1b3a2fa722e093cae37b52ba5d412496b3a20b82",key:"105f5",state:"Published",createdAt:"2020-10-29T23:59:50.753Z",sageScore:5,diffs:[{njs:16,offset:.4,notes:707,bombs:46,obstacles:13,nps:3.272,length:360.078,characteristic:"Standard",difficulty:"Expert",events:6858,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.047,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1b3a2fa722e093cae37b52ba5d412496b3a20b82.zip",coverURL:"https://cdn.beatsaver.com/1b3a2fa722e093cae37b52ba5d412496b3a20b82.jpg",previewURL:"https://cdn.beatsaver.com/1b3a2fa722e093cae37b52ba5d412496b3a20b82.mp3"}],createdAt:"2020-10-29T23:59:50.753Z",updatedAt:"2020-10-29T23:59:50.753Z",lastPublishedAt:"2020-10-29T23:59:50.753Z"},{id:"8b48",name:"Doja Cat - Boss Bitch",description:"This is my first Beat Saber map. Thank you to CheckThePan, PlusOneRabbit, CyanSnow, Aeroluna and everyone in Noodle for helping me get started. You are all great wonderful people I am honored to call friends. <3\nDuration: 2:14\nBPM: 126\nMapped NPS: 2.96\nNotes: 371",uploader:{id:4543,name:"dat360noscope",uniqueSet:!0,hash:"5e58387f521acf00068f9ad4",avatar:"https://www.gravatar.com/avatar/5e58387f521acf00068f9ad4?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:134,songName:"Boss Bitch",songSubName:"",songAuthorName:"Doja Cat",levelAuthorName:"Dat360NoScope"},stats:{plays:0,downloads:2843,upvotes:868,downvotes:17,score:.9185},uploaded:"2020-02-27T21:53:18.919Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2105facb044e1289ce1b84a9377bdd2a982f73e1",key:"8b48",state:"Published",createdAt:"2020-02-27T21:53:18.919Z",sageScore:4,diffs:[{njs:12,offset:0,notes:371,bombs:0,obstacles:87,nps:2.957,length:263.5,characteristic:"Standard",difficulty:"Hard",events:901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:125.476,paritySummary:{errors:7,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2105facb044e1289ce1b84a9377bdd2a982f73e1.zip",coverURL:"https://cdn.beatsaver.com/2105facb044e1289ce1b84a9377bdd2a982f73e1.jpg",previewURL:"https://cdn.beatsaver.com/2105facb044e1289ce1b84a9377bdd2a982f73e1.mp3"}],createdAt:"2020-02-27T21:53:18.919Z",updatedAt:"2020-02-27T21:53:18.919Z",lastPublishedAt:"2020-02-27T21:53:18.919Z"},{id:"7067",name:"Sorairo Days (TV Size) [Gurren Lagann Opening] - Shoko Nakagawa",description:"This map was converted from one of my old maps.\n\nFeel free to DM me on discord @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:174,duration:93,songName:"Sorairo Days (TV Size)",songSubName:"",songAuthorName:"Shoko Nakagawa",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2600,upvotes:940,downvotes:20,score:.9185},uploaded:"2019-11-17T06:13:49.456Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5a5f6a419abfcc998262b28f1fe4e3baa7d3d1bc",key:"7067",state:"Published",createdAt:"2019-11-17T06:13:49.456Z",sageScore:2,diffs:[{njs:10,offset:0,notes:212,bombs:0,obstacles:0,nps:2.726,length:225.5,characteristic:"Standard",difficulty:"Normal",events:1518,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:77.759,paritySummary:{errors:22,warns:13,resets:0}},{njs:11,offset:0,notes:290,bombs:0,obstacles:0,nps:3.729,length:225.5,characteristic:"Standard",difficulty:"Hard",events:1518,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:77.759,paritySummary:{errors:16,warns:7,resets:0}},{njs:13,offset:0,notes:332,bombs:0,obstacles:0,nps:4.27,length:225.5,characteristic:"Standard",difficulty:"Expert",events:1518,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:77.759,paritySummary:{errors:9,warns:11,resets:0}},{njs:15,offset:0,notes:469,bombs:0,obstacles:0,nps:5.978,length:227.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1543,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:78.448,paritySummary:{errors:22,warns:33,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5a5f6a419abfcc998262b28f1fe4e3baa7d3d1bc.zip",coverURL:"https://cdn.beatsaver.com/5a5f6a419abfcc998262b28f1fe4e3baa7d3d1bc.jpg",previewURL:"https://cdn.beatsaver.com/5a5f6a419abfcc998262b28f1fe4e3baa7d3d1bc.mp3"}],createdAt:"2019-11-17T06:13:49.456Z",updatedAt:"2019-11-17T06:13:49.456Z",lastPublishedAt:"2019-11-17T06:13:49.456Z"},{id:"19a",name:"NSP - Cool Patrol",description:"Normal, Hard, and Expert difficulties available. Relatively close to vanilla balancing.\r\n\r\nPreview: https://youtu.be/e5W5EhEE0V4\r\n\r\nBPM: 130\r\nNotes: 651 (Expert)\r\nDuration: 3:09",uploader:{id:45732,name:"calijor",uniqueSet:!1,hash:"5cff0b7298cc5a672c84ebb1",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ebb1?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:189,songName:"Cool Patrol",songSubName:"",songAuthorName:"Ninja Sex Party",levelAuthorName:"calijor"},stats:{plays:0,downloads:1119,upvotes:1325,downvotes:38,score:.9184},uploaded:"2018-05-22T04:53:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c87de9a5e4e8aa91d57403bde711033770b3c4a8",key:"19a",state:"Published",createdAt:"2018-05-22T04:53:18Z",sageScore:5,diffs:[{njs:10,offset:0,notes:434,bombs:0,obstacles:6,nps:2.351,length:399.938,characteristic:"Standard",difficulty:"Normal",events:1533,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.587,paritySummary:{errors:79,warns:32,resets:0}},{njs:10,offset:0,notes:560,bombs:0,obstacles:6,nps:3.034,length:399.938,characteristic:"Standard",difficulty:"Hard",events:1533,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.587,paritySummary:{errors:145,warns:31,resets:0}},{njs:10,offset:0,notes:651,bombs:0,obstacles:8,nps:3.527,length:399.938,characteristic:"Standard",difficulty:"Expert",events:1533,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.587,paritySummary:{errors:136,warns:48,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c87de9a5e4e8aa91d57403bde711033770b3c4a8.zip",coverURL:"https://cdn.beatsaver.com/c87de9a5e4e8aa91d57403bde711033770b3c4a8.jpg",previewURL:"https://cdn.beatsaver.com/c87de9a5e4e8aa91d57403bde711033770b3c4a8.mp3"}],createdAt:"2018-05-22T04:53:18Z",updatedAt:"2018-05-22T04:53:18Z",lastPublishedAt:"2018-05-22T04:53:18Z"},{id:"3c89",name:"99.9 // Mob Choir feat. Sajou no Hana",description:"99.9, the OP Mob Psycho 100 Season 2\r\nBy Mob Choir feat. Sajou no Hana\r\nVideo: https://youtu.be/Qbk-0-p60WY\r\n\r\nShoutout to Testers:\r\nRedMagi\r\nTrolav",uploader:{id:39365,name:"todokete",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee70",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee70?d=retro",type:"SIMPLE"},metadata:{bpm:168,duration:98,songName:"99.9",songSubName:"MOB CHOIR feat. sajou no hana",songAuthorName:"Todokete",levelAuthorName:"todokete"},stats:{plays:0,downloads:3540,upvotes:1704,downvotes:57,score:.9183},uploaded:"2019-03-08T16:51:17Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"15ba13d183c824f46d2fc68ff5d6ba52ced1fad5",key:"3c89",state:"Published",createdAt:"2019-03-08T16:51:17Z",sageScore:3,diffs:[{njs:10,offset:0,notes:175,bombs:0,obstacles:0,nps:1.976,length:248,characteristic:"Standard",difficulty:"Normal",events:3251,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.571,paritySummary:{errors:17,warns:14,resets:0},stars:1.03},{njs:11,offset:0,notes:274,bombs:0,obstacles:0,nps:3.094,length:248,characteristic:"Standard",difficulty:"Hard",events:3251,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.571,paritySummary:{errors:17,warns:5,resets:0},stars:1.73},{njs:13,offset:0,notes:376,bombs:0,obstacles:0,nps:4.245,length:248,characteristic:"Standard",difficulty:"Expert",events:3251,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.571,paritySummary:{errors:22,warns:35,resets:0}},{njs:16,offset:0,notes:482,bombs:0,obstacles:0,nps:5.442,length:248,characteristic:"Standard",difficulty:"ExpertPlus",events:3251,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.571,paritySummary:{errors:20,warns:35,resets:0}}],downloadURL:"https://cdn.beatsaver.com/15ba13d183c824f46d2fc68ff5d6ba52ced1fad5.zip",coverURL:"https://cdn.beatsaver.com/15ba13d183c824f46d2fc68ff5d6ba52ced1fad5.jpg",previewURL:"https://cdn.beatsaver.com/15ba13d183c824f46d2fc68ff5d6ba52ced1fad5.mp3"}],createdAt:"2019-03-08T16:51:17Z",updatedAt:"2019-03-08T16:51:17Z",lastPublishedAt:"2019-03-08T16:51:17Z"},{id:"1a0b7",name:"[Electro Swing Pack] Jamie Berry - Lost In The Rhythm (ft. Octavia Rose)",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/4O8l7rq4eHI\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:121,duration:186,songName:"Lost In The Rhythm",songSubName:"(ft. Octavia Rose)",songAuthorName:"Jamie Berry",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:13219,upvotes:666,downvotes:9,score:.9182},uploaded:"2021-07-08T15:24:57.679Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6d006d47880a45a134844f3787f3c184881d4673",key:"1a0b7",state:"Published",createdAt:"2021-07-08T15:24:57.679Z",sageScore:5,diffs:[{njs:16,offset:-.25,notes:591,bombs:0,obstacles:8,nps:3.274,length:364,characteristic:"Standard",difficulty:"Expert",events:3271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.496,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:821,bombs:0,obstacles:8,nps:4.549,length:364,characteristic:"Standard",difficulty:"ExpertPlus",events:3271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.496,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6d006d47880a45a134844f3787f3c184881d4673.zip",coverURL:"https://cdn.beatsaver.com/6d006d47880a45a134844f3787f3c184881d4673.jpg",previewURL:"https://cdn.beatsaver.com/6d006d47880a45a134844f3787f3c184881d4673.mp3"}],createdAt:"2021-07-08T15:24:57.679Z",updatedAt:"2021-07-08T15:24:57.679Z",lastPublishedAt:"2021-07-08T15:24:57.679Z"},{id:"84d6",name:"drop pop candy - Reol ft. Giga-P (+ Luka & Rin) [Std, 360 & 90]",description:"Another song by the amazing duo Reol and Giga-P, drop pop candy entered Hall of Fame just seven days after release!\n\nExpert+ guest difficulty by AaltopahWi! Everything else (Expert-Easy, 360, 90 and lighting) by me, Kolezan.\n\nThe Vocaloid song version with Megurine Luka and Kagamine Rin is also included!\nTo use this version do a file search in your Beat Saber_data/CustomLevels folder for “Reol_drop_pop_candy.egg”, open the folder which that file resides in, then rename “Reol_drop_pop_candy.egg” to “Reol_drop_pop_candy_Reol_and_Giga.egg”, and then rename “Reol_drop_pop_candy_Luka_and_Rin.egg” to “Reol_drop_pop_candy.egg”. Done!\n\nThanks to Maralade for pushing me to map this song sooner than later!\n\nMap is a tad harder than average, mostly to keep up with all the interesting points in the song. Map also contains custom map colors based on the music video.\n\nNo map video preview.\n\nBPM: 130\nDuration: 3:44\n\n== Standard mode: ==\nEasy:\nNPS 1.36, 306 notes, 50 walls, 0 bombs\n\nNormal:\nNPS 2.10, 470 notes, 16 walls, 0 bombs\n\nHard:\nNPS 2.86, 641 notes, 5 walls, 0 bombs\n\nExpert:\nNPS 3.85, 863 notes, 5 walls, 0 bombs\n\nExpert+ (by AaltopahWi):\nNPS 4.61, 1035 notes, 7 walls, 0 bombs\n\n== 360 degree mode: ==\nExpert:\nNPS 3.89, 873 notes, 39 walls, 0 bombs\n\n== 90 degree mode: ==\nExpert:\nNPS 3.89, 873 notes, 38 walls, 0 bombs\n\nThanks to Sorukun, fruhead, Checkthepan and Helen Carnate for playtesting!\n\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:130,duration:224,songName:"drop pop candy",songSubName:"ft. GigaP",songAuthorName:"Reol",levelAuthorName:"Kolezan (E+ by AaltopahWi)"},stats:{plays:0,downloads:2815,upvotes:1257,downvotes:35,score:.9182},uploaded:"2020-02-07T07:19:14.938Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"50e4c2101cc079a98f88e80aa7091e60bb6d1d31",key:"84d6",state:"Published",createdAt:"2020-02-07T07:19:14.938Z",sageScore:6,diffs:[{njs:9,offset:0,notes:306,bombs:0,obstacles:50,nps:1.42,length:467,characteristic:"Standard",difficulty:"Easy",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.538,paritySummary:{errors:80,warns:21,resets:0}},{njs:11,offset:1,notes:470,bombs:0,obstacles:16,nps:2.164,length:470.5,characteristic:"Standard",difficulty:"Normal",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.154,paritySummary:{errors:67,warns:51,resets:0}},{njs:14,offset:.5,notes:641,bombs:0,obstacles:5,nps:2.927,length:474.5,characteristic:"Standard",difficulty:"Hard",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:33,warns:21,resets:0}},{njs:17,offset:.125,notes:863,bombs:0,obstacles:5,nps:3.941,length:474.5,characteristic:"Standard",difficulty:"Expert",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:21,warns:36,resets:0}},{njs:19,offset:-.25,notes:1035,bombs:0,obstacles:7,nps:4.726,length:474.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:3,warns:6,resets:0}},{njs:15,offset:.25,notes:873,bombs:0,obstacles:38,nps:3.986,length:474.5,characteristic:"90Degree",difficulty:"Expert",events:2464,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:26,warns:37,resets:0}},{njs:15,offset:.25,notes:873,bombs:0,obstacles:39,nps:3.986,length:474.5,characteristic:"360Degree",difficulty:"Expert",events:2467,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:26,warns:37,resets:0}}],downloadURL:"https://cdn.beatsaver.com/50e4c2101cc079a98f88e80aa7091e60bb6d1d31.zip",coverURL:"https://cdn.beatsaver.com/50e4c2101cc079a98f88e80aa7091e60bb6d1d31.jpg",previewURL:"https://cdn.beatsaver.com/50e4c2101cc079a98f88e80aa7091e60bb6d1d31.mp3"}],createdAt:"2020-02-07T07:19:14.938Z",updatedAt:"2020-02-07T07:19:14.938Z",lastPublishedAt:"2020-02-07T07:19:14.938Z"},{id:"68bb",name:"FREEDOM DiVE (ZipperKim Remix)",description:"Remixer: https://youtu.be/IQ7KvbSrm7M\n\nPreview: https://youtu.be/L2cs_elU7rE\n\n\nTwitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:140,duration:160,songName:"FREEDOM DiVE",songSubName:"(ZipperKim Remix)",songAuthorName:"xi",levelAuthorName:"Dack"},stats:{plays:0,downloads:4015,upvotes:1940,downvotes:70,score:.9181},uploaded:"2019-10-08T23:40:00.119Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"f1591bf3f2d821a48bb86214c9da47d8cff24046",key:"68bb",state:"Published",createdAt:"2019-10-08T23:40:00.119Z",sageScore:6,diffs:[{njs:14.5,offset:0,notes:529,bombs:4,obstacles:2,nps:3.547,length:348,characteristic:"Standard",difficulty:"Hard",events:3703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.143,paritySummary:{errors:0,warns:0,resets:1},stars:2.14},{njs:16,offset:0,notes:643,bombs:4,obstacles:0,nps:4.311,length:348,characteristic:"Standard",difficulty:"Expert",events:3703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.143,paritySummary:{errors:7,warns:4,resets:1},stars:2.84},{njs:18,offset:0,notes:752,bombs:4,obstacles:0,nps:5.042,length:348,characteristic:"Standard",difficulty:"ExpertPlus",events:3703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.143,paritySummary:{errors:9,warns:11,resets:1},stars:4.16}],downloadURL:"https://cdn.beatsaver.com/f1591bf3f2d821a48bb86214c9da47d8cff24046.zip",coverURL:"https://cdn.beatsaver.com/f1591bf3f2d821a48bb86214c9da47d8cff24046.jpg",previewURL:"https://cdn.beatsaver.com/f1591bf3f2d821a48bb86214c9da47d8cff24046.mp3"}],createdAt:"2019-10-08T23:40:00.119Z",updatedAt:"2019-10-08T23:40:00.119Z",lastPublishedAt:"2019-10-08T23:40:00.119Z"},{id:"456d",name:"Wiz Khalifa - Black and Yellow",description:"Yeah, uh huh, you know what it is! It's a new map! Black and Yellow by Wiz Khalifa. The colors? Black and yellow, black and yellow, black and yellow, black and yellow.\r\nI think it's a fun map, so I hope you enjoy as well!\r\n\r\nAs always, you can give me feedback on Beast Saber or in Discord @Maarten#9596.\r\n\r\nPreview video: https://www.youtube.com/watch?v=fla0VfHh3WE",uploader:{id:57657,name:"pixelguymm",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541a8",avatar:"https://cdn.beatsaver.com/avatar/434386941547511818.png",type:"DISCORD"},metadata:{bpm:164,duration:102,songName:"Black and Yellow",songSubName:"Wiz Khalifa",songAuthorName:"Pixelguy",levelAuthorName:"pixelguymm"},stats:{plays:0,downloads:2927,upvotes:1171,downvotes:31,score:.9181},uploaded:"2019-04-13T08:58:48Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b03042e8647cca08cdc5b80e23ed569ef3dbc201",key:"456d",state:"Published",createdAt:"2019-04-13T08:58:48Z",sageScore:6,diffs:[{njs:12,offset:0,notes:144,bombs:0,obstacles:0,nps:1.55,length:254,characteristic:"Standard",difficulty:"Easy",events:1062,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:92.927,paritySummary:{errors:7,warns:0,resets:0}},{njs:12,offset:0,notes:208,bombs:0,obstacles:0,nps:2.23,length:255,characteristic:"Standard",difficulty:"Normal",events:1062,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:93.293,paritySummary:{errors:8,warns:8,resets:0}},{njs:14,offset:0,notes:293,bombs:16,obstacles:0,nps:3.135,length:255.5,characteristic:"Standard",difficulty:"Hard",events:1062,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:93.476,paritySummary:{errors:18,warns:14,resets:3}},{njs:16,offset:0,notes:402,bombs:20,obstacles:0,nps:4.301,length:255.5,characteristic:"Standard",difficulty:"Expert",events:1062,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:93.476,paritySummary:{errors:18,warns:16,resets:8}}],downloadURL:"https://cdn.beatsaver.com/b03042e8647cca08cdc5b80e23ed569ef3dbc201.zip",coverURL:"https://cdn.beatsaver.com/b03042e8647cca08cdc5b80e23ed569ef3dbc201.jpg",previewURL:"https://cdn.beatsaver.com/b03042e8647cca08cdc5b80e23ed569ef3dbc201.mp3"}],createdAt:"2019-04-13T08:58:48Z",updatedAt:"2019-04-13T08:58:48Z",lastPublishedAt:"2019-04-13T08:58:48Z"},{id:"6554",name:"Windows Down - Nightcore",description:"Youtube Preview: https://youtu.be/z-Iaze8Ac60",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:159,duration:159,songName:"Windows Down - Nightcore",songSubName:"",songAuthorName:"Nightcore Reality",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:697,upvotes:786,downvotes:14,score:.918},uploaded:"2019-09-23T01:31:55.127Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4bec5881a2090ab3e655fecdec1eed5324703c94",key:"6554",state:"Published",createdAt:"2019-09-23T01:31:55.127Z",sageScore:4,diffs:[{njs:15,offset:0,notes:518,bombs:20,obstacles:27,nps:3.348,length:410,characteristic:"Standard",difficulty:"Expert",events:646,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.717,paritySummary:{errors:0,warns:0,resets:6}}],downloadURL:"https://cdn.beatsaver.com/4bec5881a2090ab3e655fecdec1eed5324703c94.zip",coverURL:"https://cdn.beatsaver.com/4bec5881a2090ab3e655fecdec1eed5324703c94.jpg",previewURL:"https://cdn.beatsaver.com/4bec5881a2090ab3e655fecdec1eed5324703c94.mp3"}],createdAt:"2019-09-23T01:31:55.127Z",updatedAt:"2019-09-23T01:31:55.127Z",lastPublishedAt:"2019-09-23T01:31:55.127Z"},{id:"2bb7",name:"Join Us for a Bite (FNAF Sister Location) - JT Music feat. Andrea Storm Kaden",description:"BPM: 86 (172 at points)\r\nNotes: Hard - 628 , Expert - 745\r\nWalls: 14\r\n\r\nThanks to Redmagi for playtesting, and AaltopahWi for lighting advice.",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:86,duration:225,songName:"Join Us for a Bite (FNAF Sister Location)",songSubName:"JT Music feat. Andrea Storm Kaden",songAuthorName:"fruhead",levelAuthorName:"fruhead"},stats:{plays:0,downloads:1667,upvotes:993,downvotes:23,score:.918},uploaded:"2019-01-07T06:04:31Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7974c174533415ccc43dcd75678aedd1aec44f96",key:"2bb7",state:"Published",createdAt:"2019-01-07T06:04:31Z",sageScore:6,diffs:[{njs:12,offset:0,notes:628,bombs:0,obstacles:14,nps:2.867,length:314,characteristic:"Standard",difficulty:"Hard",events:1759,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.07,paritySummary:{errors:43,warns:22,resets:0}},{njs:13,offset:0,notes:745,bombs:0,obstacles:14,nps:3.401,length:314,characteristic:"Standard",difficulty:"Expert",events:1760,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.07,paritySummary:{errors:30,warns:24,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7974c174533415ccc43dcd75678aedd1aec44f96.zip",coverURL:"https://cdn.beatsaver.com/7974c174533415ccc43dcd75678aedd1aec44f96.jpg",previewURL:"https://cdn.beatsaver.com/7974c174533415ccc43dcd75678aedd1aec44f96.mp3"}],createdAt:"2019-01-07T06:04:31Z",updatedAt:"2019-01-07T06:04:31Z",lastPublishedAt:"2019-01-07T06:04:31Z"},{id:"e4",name:"Every Time We Touch - Cascada",description:"Expert Only\r\nTime - 3:19\r\nBPM - 142\r\nNotes- 564",uploader:{id:49373,name:"purphoros",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea98",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea98?d=retro",type:"SIMPLE"},metadata:{bpm:142,duration:199,songName:"Every Time We Touch",songSubName:"",songAuthorName:"Cascada",levelAuthorName:"purphoros"},stats:{plays:0,downloads:15282,upvotes:10721,downvotes:627,score:.918},uploaded:"2018-05-18T03:51:03Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"bc6c7ef1385db4c11c59736d2b32eacf48c95bd9",key:"e4",state:"Published",createdAt:"2018-05-18T03:51:03Z",sageScore:4,diffs:[{njs:10,offset:0,notes:564,bombs:0,obstacles:0,nps:3.178,length:420,characteristic:"Standard",difficulty:"Expert",events:10,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.465,paritySummary:{errors:108,warns:44,resets:0},stars:2.13}],downloadURL:"https://cdn.beatsaver.com/bc6c7ef1385db4c11c59736d2b32eacf48c95bd9.zip",coverURL:"https://cdn.beatsaver.com/bc6c7ef1385db4c11c59736d2b32eacf48c95bd9.jpg",previewURL:"https://cdn.beatsaver.com/bc6c7ef1385db4c11c59736d2b32eacf48c95bd9.mp3"}],createdAt:"2018-05-18T03:51:03Z",updatedAt:"2018-05-18T03:51:03Z",lastPublishedAt:"2018-05-18T03:51:03Z"},{id:"3519",name:"Happier Sunflower - Marshmello, Post Malone, Swae Lee, Bastille [Mashup by Dj Pyromania]",description:"Preview:\r\nhttps://www.youtube.com/watch?v=eRwvvhMrkcQ",uploader:{id:4286278,name:"ruckus",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1d8",avatar:"https://cdn.beatsaver.com/avatar/239082462083284992.png",type:"DISCORD"},metadata:{bpm:100,duration:205,songName:"Happier Sunflower",songSubName:"Dj Pyromania, Marshmello, Post Malone, Bastille, Swae Lee",songAuthorName:"Ruckus",levelAuthorName:"ruckus"},stats:{plays:0,downloads:5342,upvotes:1788,downvotes:62,score:.918},uploaded:"2019-02-10T18:46:16Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ec8dc26331e1eff4d4fabeed45b927c49a61f8ca",key:"3519",state:"Published",createdAt:"2019-02-10T18:46:16Z",sageScore:5,diffs:[{njs:14,offset:0,notes:348,bombs:0,obstacles:24,nps:1.747,length:332,characteristic:"Standard",difficulty:"Normal",events:2700,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.2,paritySummary:{errors:24,warns:16,resets:0}},{njs:14,offset:0,notes:718,bombs:0,obstacles:31,nps:3.604,length:332.063,characteristic:"Standard",difficulty:"Expert",events:2700,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.238,paritySummary:{errors:47,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ec8dc26331e1eff4d4fabeed45b927c49a61f8ca.zip",coverURL:"https://cdn.beatsaver.com/ec8dc26331e1eff4d4fabeed45b927c49a61f8ca.jpg",previewURL:"https://cdn.beatsaver.com/ec8dc26331e1eff4d4fabeed45b927c49a61f8ca.mp3"}],createdAt:"2019-02-10T18:46:16Z",updatedAt:"2019-02-10T18:46:16Z",lastPublishedAt:"2019-02-10T18:46:16Z"},{id:"c767",name:"We'll Meet Again",description:"Decided to wall map this beautiful song, hope you all love it!\n---------------------------------------------\n\nQuestions? Feedback? Map not working? \nmessage me on discord: Reddek#5864",uploader:{id:4233941,name:"reddek",uniqueSet:!0,hash:"5dbfb4426dea0b0006bd328d",avatar:"https://cdn.beatsaver.com/avatar/177436487086768129.png",type:"DISCORD"},metadata:{bpm:192,duration:196,songName:"We'll Meet Again",songSubName:"",songAuthorName:"TheFatRat & Laura Brehm",levelAuthorName:"Reddek"},stats:{plays:0,downloads:1398,upvotes:758,downvotes:13,score:.9179},uploaded:"2020-07-25T12:21:48.657Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4e3bc64c9aca00a925848905caccd27b5f390573",key:"c767",state:"Published",createdAt:"2020-07-25T12:21:48.657Z",sageScore:3,diffs:[{njs:18,offset:0,notes:721,bombs:34,obstacles:17842,nps:4.006,length:576,characteristic:"Standard",difficulty:"ExpertPlus",events:2009,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:180,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/4e3bc64c9aca00a925848905caccd27b5f390573.zip",coverURL:"https://cdn.beatsaver.com/4e3bc64c9aca00a925848905caccd27b5f390573.jpg",previewURL:"https://cdn.beatsaver.com/4e3bc64c9aca00a925848905caccd27b5f390573.mp3"}],createdAt:"2020-07-25T12:21:48.657Z",updatedAt:"2020-07-25T12:21:48.657Z",lastPublishedAt:"2020-07-25T12:21:48.657Z"},{id:"b99e",name:"How You Like That - Blackpink",description:"All difficulties available.\n\nExpert+ preview (pre-release version): https://youtu.be/seIKt_PR7hg\n\nSpecial thanks to lilqbunny for setting up the audio.\n\nFollow me on Twitter u won't: https://twitter.com/aggrogahu\nCatch me live on Twitch: https://www.twitch.tv/aggrogahu\nJoin the KPOP Beat Saber discord: https://discord.gg/c9uHGYP",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:130,duration:181,songName:"How You Like That",songSubName:"",songAuthorName:"Blackpink",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:11418,upvotes:1451,downvotes:45,score:.9179},uploaded:"2020-07-05T06:16:58.371Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"54f993f61f0ea48ddbb764f13936cc78799046a5",key:"b99e",state:"Published",createdAt:"2020-07-05T06:16:58.371Z",sageScore:7,diffs:[{njs:10,offset:1,notes:216,bombs:6,obstacles:16,nps:1.286,length:364,characteristic:"Standard",difficulty:"Easy",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168,paritySummary:{errors:37,warns:12,resets:4}},{njs:10,offset:1,notes:276,bombs:14,obstacles:19,nps:1.643,length:364,characteristic:"Standard",difficulty:"Normal",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168,paritySummary:{errors:38,warns:26,resets:7}},{njs:12,offset:1,notes:430,bombs:32,obstacles:19,nps:2.56,length:364,characteristic:"Standard",difficulty:"Hard",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168,paritySummary:{errors:34,warns:46,resets:9}},{njs:14,offset:.7,notes:631,bombs:30,obstacles:21,nps:3.749,length:364.667,characteristic:"Standard",difficulty:"Expert",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.308,paritySummary:{errors:18,warns:28,resets:8}},{njs:19,offset:-.3,notes:692,bombs:30,obstacles:30,nps:4.112,length:364.667,characteristic:"Standard",difficulty:"ExpertPlus",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.308,paritySummary:{errors:16,warns:22,resets:8}}],downloadURL:"https://cdn.beatsaver.com/54f993f61f0ea48ddbb764f13936cc78799046a5.zip",coverURL:"https://cdn.beatsaver.com/54f993f61f0ea48ddbb764f13936cc78799046a5.jpg",previewURL:"https://cdn.beatsaver.com/54f993f61f0ea48ddbb764f13936cc78799046a5.mp3"}],createdAt:"2020-07-05T06:16:58.371Z",updatedAt:"2020-07-05T06:16:58.371Z",lastPublishedAt:"2020-07-05T06:16:58.371Z"},{id:"8647",name:"Pursuing My True Self - Persona 4",description:"80",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:119,duration:183,songName:"Pursuing My True Self",songSubName:"",songAuthorName:"Persona 4",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:5195,upvotes:1185,downvotes:32,score:.9179},uploaded:"2020-02-12T11:59:55.125Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"990f576d9b1045bc6aa4f7ab7a2231a1bd05e6fe",key:"8647",state:"Published",createdAt:"2020-02-12T11:59:55.125Z",sageScore:4,diffs:[{njs:12,offset:0,notes:605,bombs:0,obstacles:59,nps:3.354,length:357.75,characteristic:"Standard",difficulty:"Hard",events:1318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.378,paritySummary:{errors:11,warns:12,resets:0}},{njs:15,offset:-.4,notes:812,bombs:0,obstacles:47,nps:4.499,length:358,characteristic:"Standard",difficulty:"Expert",events:1318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.504,paritySummary:{errors:9,warns:23,resets:0}},{njs:17,offset:-.6,notes:921,bombs:0,obstacles:81,nps:5.102,length:358,characteristic:"Standard",difficulty:"ExpertPlus",events:1318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.504,paritySummary:{errors:49,warns:77,resets:0}}],downloadURL:"https://cdn.beatsaver.com/990f576d9b1045bc6aa4f7ab7a2231a1bd05e6fe.zip",coverURL:"https://cdn.beatsaver.com/990f576d9b1045bc6aa4f7ab7a2231a1bd05e6fe.jpg",previewURL:"https://cdn.beatsaver.com/990f576d9b1045bc6aa4f7ab7a2231a1bd05e6fe.mp3"}],createdAt:"2020-02-12T11:59:55.125Z",updatedAt:"2020-02-12T11:59:55.125Z",lastPublishedAt:"2020-02-12T11:59:55.125Z"},{id:"5911",name:"Stars Tonight - Zeds Dead x DROELOE (collab w/ Rexxz & StyngMe)",description:"155 BPM - 2:47 Runtime\n\nStandard:\nEasy - 245 Notes\nNormal - 369 Notes\nHard - 442 Notes\nExpert - 535 Notes\nExpert+ - 700 Notes\n\nSingle Saber:\nHard - 346 Notes\nExpert - 415 Notes\nExpert+ - 556 Notes\n\nSkyler Wallace: Expert+, Easy - Hard, Single Saber\nStyngMe: Expert+\nRexxz: Lighting",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:155,duration:167,songName:"Stars Tonight",songSubName:"",songAuthorName:"Zeds Dead x Droeloe",levelAuthorName:"Skyler, StyngMe, & Rexxz"},stats:{plays:0,downloads:2895,upvotes:1490,downvotes:47,score:.9179},uploaded:"2019-07-27T04:11:18.419Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e9fe30a5d1c3d1f1ed1d1d0af33e83f52a22c2cb",key:"5911",state:"Published",createdAt:"2019-07-27T04:11:18.419Z",sageScore:8,diffs:[{njs:10,offset:0,notes:245,bombs:0,obstacles:14,nps:1.582,length:400,characteristic:"Standard",difficulty:"Easy",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:89,warns:16,resets:0}},{njs:10,offset:0,notes:369,bombs:0,obstacles:14,nps:2.383,length:400,characteristic:"Standard",difficulty:"Normal",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:97,warns:22,resets:0}},{njs:12,offset:1,notes:442,bombs:2,obstacles:16,nps:2.855,length:400,characteristic:"Standard",difficulty:"Hard",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:65,warns:28,resets:3}},{njs:14,offset:1,notes:535,bombs:6,obstacles:16,nps:3.455,length:400,characteristic:"Standard",difficulty:"Expert",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:22,warns:16,resets:5}},{njs:18,offset:.1,notes:700,bombs:6,obstacles:43,nps:4.521,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:39,warns:65,resets:0}},{njs:12,offset:1,notes:346,bombs:0,obstacles:14,nps:2.235,length:400,characteristic:"OneSaber",difficulty:"Hard",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:44,warns:16,resets:0}},{njs:14,offset:1,notes:415,bombs:2,obstacles:16,nps:2.68,length:400,characteristic:"OneSaber",difficulty:"Expert",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:31,warns:24,resets:2}},{njs:16,offset:.25,notes:556,bombs:6,obstacles:16,nps:3.591,length:400,characteristic:"OneSaber",difficulty:"ExpertPlus",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:34,warns:108,resets:1}}],downloadURL:"https://cdn.beatsaver.com/e9fe30a5d1c3d1f1ed1d1d0af33e83f52a22c2cb.zip",coverURL:"https://cdn.beatsaver.com/e9fe30a5d1c3d1f1ed1d1d0af33e83f52a22c2cb.jpg",previewURL:"https://cdn.beatsaver.com/e9fe30a5d1c3d1f1ed1d1d0af33e83f52a22c2cb.mp3"}],createdAt:"2019-07-27T04:11:18.419Z",updatedAt:"2019-07-27T04:11:18.419Z",lastPublishedAt:"2019-07-27T04:11:18.419Z"},{id:"5395",name:"Alestorm - Mexico",description:"My first map, this song felt good to map because it's structurally simple and catchy. Beat Saber needs more metal and I want to make more maps so any feedback is appreciated :). \n\nExpert and Hard are mapped to be significantly easier than Expert+, so that more people can enjoy it. Here's a video of Expert+ playthrough: https://youtu.be/Y-0cYyZwxIY",uploader:{id:1207,name:"wyxi",uniqueSet:!0,hash:"5d0abf96b8c469000699075f",avatar:"https://www.gravatar.com/avatar/5d0abf96b8c469000699075f?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:192,songName:"Mexico",songSubName:"",songAuthorName:"Alestorm",levelAuthorName:"Wyxi"},stats:{plays:0,downloads:1445,upvotes:873,downvotes:18,score:.9177},uploaded:"2019-06-19T23:52:29.181Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fb5cda4446fdd4dd02cfb5510d00244842e4c392",key:"5395",state:"Published",createdAt:"2019-06-19T23:52:29.181Z",sageScore:6,diffs:[{njs:11,offset:1,notes:435,bombs:70,obstacles:23,nps:2.376,length:390.5,characteristic:"Standard",difficulty:"Hard",events:1282,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.047,paritySummary:{errors:76,warns:16,resets:0}},{njs:13,offset:1,notes:560,bombs:70,obstacles:23,nps:3.059,length:390.5,characteristic:"Standard",difficulty:"Expert",events:1282,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.047,paritySummary:{errors:55,warns:15,resets:0}},{njs:15,offset:0,notes:975,bombs:76,obstacles:23,nps:5.327,length:390.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1280,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.047,paritySummary:{errors:65,warns:64,resets:1}}],downloadURL:"https://cdn.beatsaver.com/fb5cda4446fdd4dd02cfb5510d00244842e4c392.zip",coverURL:"https://cdn.beatsaver.com/fb5cda4446fdd4dd02cfb5510d00244842e4c392.jpg",previewURL:"https://cdn.beatsaver.com/fb5cda4446fdd4dd02cfb5510d00244842e4c392.mp3"}],createdAt:"2019-06-19T23:52:29.181Z",updatedAt:"2019-06-19T23:52:29.181Z",lastPublishedAt:"2019-06-19T23:52:29.181Z"},{id:"4e8d",name:"Centipede (Visual Representation) - Knife Party",description:"Make sure you have SFX turned off and NoFail turned on!\r\nThis map is not intended to be passed, just sit back and enjoy the show! :)",uploader:{id:11127,name:"nicetomeetyou",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f5d1",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f5d1?d=retro",type:"SIMPLE"},metadata:{bpm:280,duration:145,songName:"Centipede (VISUAL)",songSubName:"Knife Party",songAuthorName:"NiceToMeetYou",levelAuthorName:"nicetomeetyou"},stats:{plays:0,downloads:2652,upvotes:1363,downvotes:41,score:.9177},uploaded:"2019-05-22T21:23:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8061055d363292dda7b055eefc1c5dbebb13e616",key:"4e8d",state:"Published",createdAt:"2019-05-22T21:23:54Z",sageScore:5,diffs:[{njs:23,offset:0,notes:9189,bombs:0,obstacles:0,nps:95.719,length:448,characteristic:"Standard",difficulty:"ExpertPlus",events:2178,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:96,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8061055d363292dda7b055eefc1c5dbebb13e616.zip",coverURL:"https://cdn.beatsaver.com/8061055d363292dda7b055eefc1c5dbebb13e616.jpg",previewURL:"https://cdn.beatsaver.com/8061055d363292dda7b055eefc1c5dbebb13e616.mp3"}],createdAt:"2019-05-22T21:23:54Z",updatedAt:"2019-05-22T21:23:54Z",lastPublishedAt:"2019-05-22T21:23:54Z"},{id:"4445",name:"Runaway Baby - Bruno Mars (V2)",description:"45\r\nremap https://beatsaver.com/browse/detail/2208-1528",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:164,duration:149,songName:"Runaway Baby V2",songSubName:"Bruno Mars",songAuthorName:"ejiejidayo",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:3375,upvotes:1030,downvotes:25,score:.9177},uploaded:"2019-04-08T07:32:15Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6ae2ff433fb5a570eeb0801f30a01b446bde2c15",key:"4445",state:"Published",createdAt:"2019-04-08T07:32:15Z",sageScore:5,diffs:[{njs:11,offset:0,notes:614,bombs:0,obstacles:50,nps:4.463,length:376,characteristic:"Standard",difficulty:"Expert",events:1e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.561,paritySummary:{errors:60,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6ae2ff433fb5a570eeb0801f30a01b446bde2c15.zip",coverURL:"https://cdn.beatsaver.com/6ae2ff433fb5a570eeb0801f30a01b446bde2c15.jpg",previewURL:"https://cdn.beatsaver.com/6ae2ff433fb5a570eeb0801f30a01b446bde2c15.mp3"}],createdAt:"2019-04-08T07:32:15Z",updatedAt:"2019-04-08T07:32:15Z",lastPublishedAt:"2019-04-08T07:32:15Z"},{id:"46b1",name:"Bad Guy - Billie Eilish",description:"Lighting done by Rexxz",uploader:{id:21050,name:"dgrj4life",uniqueSet:!0,hash:"5cff0b7298cc5a672c84eaa1",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84eaa1?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:194,songName:"Bad Guy",songSubName:"Billie Eilish",songAuthorName:"DGRJ 4 Life & Rexxz",levelAuthorName:"dgrj4life"},stats:{plays:0,downloads:6662,upvotes:5055,downvotes:256,score:.9176},uploaded:"2019-04-17T23:25:17Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a6a8f5c9146321b609645eefb109197e301bfe71",key:"46b1",state:"Published",createdAt:"2019-04-17T23:25:17Z",sageScore:5,diffs:[{njs:14,offset:0,notes:761,bombs:8,obstacles:36,nps:4.003,length:427.766,characteristic:"Standard",difficulty:"Expert",events:7645,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.118,paritySummary:{errors:33,warns:49,resets:0}},{njs:16,offset:0,notes:918,bombs:8,obstacles:36,nps:4.829,length:427.766,characteristic:"Standard",difficulty:"ExpertPlus",events:7645,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.118,paritySummary:{errors:32,warns:67,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a6a8f5c9146321b609645eefb109197e301bfe71.zip",coverURL:"https://cdn.beatsaver.com/a6a8f5c9146321b609645eefb109197e301bfe71.jpg",previewURL:"https://cdn.beatsaver.com/a6a8f5c9146321b609645eefb109197e301bfe71.mp3"}],createdAt:"2019-04-17T23:25:17Z",updatedAt:"2019-04-17T23:25:17Z",lastPublishedAt:"2019-04-17T23:25:17Z"},{id:"431d",name:"PewDiePie - Congratulations",description:"UPDATED OFFSET PROBLEMS\r\n\r\nIt's time to 'slice' T-Series! Presenting PewDiePie's latest diss track \"Congratulations\" featuring David Paul Brown and Joel Gustaf “Roomie” Berghult. I hope you enjoy!\r\n\r\nPewDiePie's original video: https://www.youtube.com/watch?v=PHgc8Q6qTjc",uploader:{id:42921,name:"pianoluigi",uniqueSet:!0,hash:"5cff0b7698cc5a672c854076",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c854076?d=retro",type:"SIMPLE"},metadata:{bpm:136,duration:252,songName:"Congratulations",songSubName:"PewDiePie",songAuthorName:"PianoLuigi",levelAuthorName:"PianoLuigi"},stats:{plays:0,downloads:1157,upvotes:937,downvotes:21,score:.9176},uploaded:"2019-04-03T09:04:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"768776b15afc801f67a2244439938740349cbc74",key:"431d",state:"Published",createdAt:"2019-04-03T09:04:34Z",sageScore:5,diffs:[{njs:16,offset:0,notes:1099,bombs:32,obstacles:64,nps:4.488,length:555,characteristic:"Standard",difficulty:"ExpertPlus",events:2728,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.853,paritySummary:{errors:40,warns:33,resets:16}}],downloadURL:"https://cdn.beatsaver.com/768776b15afc801f67a2244439938740349cbc74.zip",coverURL:"https://cdn.beatsaver.com/768776b15afc801f67a2244439938740349cbc74.jpg",previewURL:"https://cdn.beatsaver.com/768776b15afc801f67a2244439938740349cbc74.mp3"}],createdAt:"2019-04-03T09:04:34Z",updatedAt:"2019-04-03T09:04:34Z",lastPublishedAt:"2019-04-03T09:04:34Z"},{id:"b7f8",name:"Sabaton - Swedish Pagans",description:"Nice song by Sabaton. Mapped Expert+, Expert, Hard.\n\nGenre: Power metal\nBPM: 135\nNPS: 4.41 / 3.63 / 2.78\nExpert+ playthrough: https://youtu.be/Yx3WPwvZ8wE\n\nCome root for Sweden in the beat saber world cup! :D\n\nSpecial thanks to SatanClaus for playtesting\n\nFeedback/complaints/anything: Wyxi#5211 on discord.\n\n\n",uploader:{id:1207,name:"wyxi",uniqueSet:!0,hash:"5d0abf96b8c469000699075f",avatar:"https://www.gravatar.com/avatar/5d0abf96b8c469000699075f?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:246,songName:"Swedish Pagans",songSubName:"",songAuthorName:"Sabaton",levelAuthorName:"Wyxi"},stats:{plays:0,downloads:1342,upvotes:572,downvotes:6,score:.9175},uploaded:"2020-06-30T14:44:54.069Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6e0fb56882443e1fc41c79dde364d4456828b328",key:"b7f8",state:"Published",createdAt:"2020-06-30T14:44:54.069Z",sageScore:4,diffs:[{njs:13,offset:.5,notes:685,bombs:0,obstacles:4,nps:2.97,length:519,characteristic:"Standard",difficulty:"Hard",events:2174,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.667,paritySummary:{errors:15,warns:17,resets:0}},{njs:16,offset:0,notes:894,bombs:0,obstacles:4,nps:3.876,length:519,characteristic:"Standard",difficulty:"Expert",events:2174,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.667,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.25,notes:1086,bombs:0,obstacles:4,nps:4.708,length:519,characteristic:"Standard",difficulty:"ExpertPlus",events:2174,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.667,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6e0fb56882443e1fc41c79dde364d4456828b328.zip",coverURL:"https://cdn.beatsaver.com/6e0fb56882443e1fc41c79dde364d4456828b328.jpg",previewURL:"https://cdn.beatsaver.com/6e0fb56882443e1fc41c79dde364d4456828b328.mp3"}],createdAt:"2020-06-30T14:44:54.069Z",updatedAt:"2020-06-30T14:44:54.069Z",lastPublishedAt:"2020-06-30T14:44:54.069Z"},{id:"6713",name:"A Bloody Beginning",description:"Get down with some Castlevania vibes with the first Halloween themed map to be released 1 day before October!\r\n\r\nLots of trial and edits have been done to make this map as perfect as possible for release! So we all hope you enjoy the Walls and the Lighting alongside the notes!\r\n\r\nCredits for such wonderful creations:\r\n\r\nYume - New Wall Mapper that's been sweeping the scene!\r\n\r\nKnowledge - A heavy hitting experienced light mapper\r\n\r\n219278 - Yeah i have no idea why their name is like this but they helped light the map so it doesn't matter!",uploader:{id:4289111,name:"blackblazon",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ef34",avatar:"https://cdn.beatsaver.com/avatar/127162370538733568.png",type:"DISCORD"},metadata:{bpm:126,duration:215,songName:"A Bloody Beginning",songSubName:"",songAuthorName:"Nokbient & bLiNd",levelAuthorName:"BlackBlazon"},stats:{plays:0,downloads:1748,upvotes:1023,downvotes:25,score:.9175},uploaded:"2019-09-30T23:49:36.638Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fc182c48abfc4750046eaed4dd6fe57ac8dd99fc",key:"6713",state:"Published",createdAt:"2019-09-30T23:49:36.638Z",sageScore:5,diffs:[{njs:18,offset:0,notes:959,bombs:0,obstacles:4567,nps:4.658,length:432.313,characteristic:"Standard",difficulty:"ExpertPlus",events:9945,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:205.863,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fc182c48abfc4750046eaed4dd6fe57ac8dd99fc.zip",coverURL:"https://cdn.beatsaver.com/fc182c48abfc4750046eaed4dd6fe57ac8dd99fc.jpg",previewURL:"https://cdn.beatsaver.com/fc182c48abfc4750046eaed4dd6fe57ac8dd99fc.mp3"}],createdAt:"2019-09-30T23:49:36.638Z",updatedAt:"2019-09-30T23:49:36.638Z",lastPublishedAt:"2019-09-30T23:49:36.638Z"},{id:"5223",name:"Gloryhammer - Rise Of The Chaos Wizards",description:"I said it once, I'll say it again: Beat Saber needs more Metal \\m/\r\nTherefore - again with *all* difficulties - I present to you:\r\n\r\nExpertPlus-Playthrough: https://vimeo.com/341011795",uploader:{id:40721,name:"dunklerturm",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fd7c",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84fd7c?d=retro",type:"SIMPLE"},metadata:{bpm:180,duration:235,songName:"Rise Of The Chaos Wizards",songSubName:"Gloryhammer",songAuthorName:"DunklerTurm",levelAuthorName:"DunklerTurm"},stats:{plays:0,downloads:1469,upvotes:844,downvotes:17,score:.9175},uploaded:"2019-06-07T22:14:16Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8e46e96da31b6224ae62b6d9eb9434ff93f791da",key:"5223",state:"Published",createdAt:"2019-06-07T22:14:16Z",sageScore:7,diffs:[{njs:12,offset:0,notes:211,bombs:4,obstacles:152,nps:.961,length:659,characteristic:"Standard",difficulty:"Easy",events:2944,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.667,paritySummary:{errors:31,warns:8,resets:0}},{njs:12,offset:0,notes:309,bombs:41,obstacles:136,nps:1.373,length:675,characteristic:"Standard",difficulty:"Normal",events:2944,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:59,warns:28,resets:3}},{njs:12,offset:0,notes:545,bombs:32,obstacles:84,nps:2.422,length:675,characteristic:"Standard",difficulty:"Hard",events:2944,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:56,warns:71,resets:0}},{njs:14,offset:0,notes:782,bombs:86,obstacles:84,nps:3.476,length:675,characteristic:"Standard",difficulty:"Expert",events:2944,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:55,warns:54,resets:0}},{njs:18,offset:0,notes:1106,bombs:95,obstacles:84,nps:4.916,length:675,characteristic:"Standard",difficulty:"ExpertPlus",events:5435,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:70,warns:75,resets:1}}],downloadURL:"https://cdn.beatsaver.com/8e46e96da31b6224ae62b6d9eb9434ff93f791da.zip",coverURL:"https://cdn.beatsaver.com/8e46e96da31b6224ae62b6d9eb9434ff93f791da.jpg",previewURL:"https://cdn.beatsaver.com/8e46e96da31b6224ae62b6d9eb9434ff93f791da.mp3"}],createdAt:"2019-06-07T22:14:16Z",updatedAt:"2019-06-07T22:14:16Z",lastPublishedAt:"2019-06-07T22:14:16Z"},{id:"dc68",name:"Fallguys - Survive the fall",description:"f change BPM",uploader:{id:4284894,name:"emir",uniqueSet:!0,hash:"5d3dac6586729100069260cc",avatar:"https://cdn.beatsaver.com/avatar/331480642699395073.png",type:"DISCORD"},metadata:{bpm:165,duration:205,songName:"Fallguys - Survive the fall",songSubName:"",songAuthorName:"Fallguys",levelAuthorName:"Emir"},stats:{plays:0,downloads:1078,upvotes:889,downvotes:19,score:.9174},uploaded:"2020-08-23T10:11:49.857Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0c9598eefeed825dd9a6d9012d842d473ffb9b38",key:"dc68",state:"Published",createdAt:"2020-08-23T10:11:49.857Z",sageScore:6,diffs:[{njs:12,offset:0,notes:693,bombs:0,obstacles:17,nps:3.458,length:551.192,characteristic:"Standard",difficulty:"Hard",events:1367,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.433,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:884,bombs:0,obstacles:374,nps:4.41,length:551.192,characteristic:"Standard",difficulty:"Expert",events:1367,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.433,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.3,notes:1175,bombs:24,obstacles:10,nps:5.862,length:551.192,characteristic:"Standard",difficulty:"ExpertPlus",events:1367,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.433,paritySummary:{errors:0,warns:0,resets:12}}],downloadURL:"https://cdn.beatsaver.com/0c9598eefeed825dd9a6d9012d842d473ffb9b38.zip",coverURL:"https://cdn.beatsaver.com/0c9598eefeed825dd9a6d9012d842d473ffb9b38.jpg",previewURL:"https://cdn.beatsaver.com/0c9598eefeed825dd9a6d9012d842d473ffb9b38.mp3"}],createdAt:"2020-08-23T10:11:49.857Z",updatedAt:"2020-08-23T10:11:49.857Z",lastPublishedAt:"2020-08-23T10:11:49.857Z"},{id:"b7b1",name:"No Rain - Blind Melon",description:"I still think of this song as recent, even though - wait for it - it's 28 years old this year. It's Blind Melon's 1992 hit, No Rain! I love the jazzy beat and dramatic moments in this song!\n\nNormal, Hard, Expert, ExpertPlus 360 and Expert 90 as well.\n\nBig thanks to my playtesters, MajorPickle, Maybeemae, and Brentastic! Couldn't do it without you guys - well, I could, just not as well!\n\n\nhttps://youtu.be/ZuLsxtvooCM",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:149,duration:216,songName:"No Rain",songSubName:"",songAuthorName:"Blind Melon",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:3758,upvotes:624,downvotes:8,score:.9174},uploaded:"2020-06-29T19:22:10.964Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c222e31735f0c61b7781c8f41864b8033e054d40",key:"b7b1",state:"Published",createdAt:"2020-06-29T19:22:10.964Z",sageScore:3,diffs:[{njs:10,offset:-.5,notes:333,bombs:0,obstacles:32,nps:1.613,length:511,characteristic:"Standard",difficulty:"Normal",events:529,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.772,paritySummary:{errors:31,warns:41,resets:0}},{njs:13,offset:.3,notes:601,bombs:0,obstacles:32,nps:2.905,length:512,characteristic:"Standard",difficulty:"Hard",events:529,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.175,paritySummary:{errors:19,warns:34,resets:0}},{njs:14,offset:.2,notes:704,bombs:0,obstacles:32,nps:3.403,length:512,characteristic:"Standard",difficulty:"Expert",events:529,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.175,paritySummary:{errors:40,warns:37,resets:0}},{njs:13,offset:.3,notes:601,bombs:0,obstacles:30,nps:2.905,length:512.001,characteristic:"90Degree",difficulty:"Expert",events:689,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.175,paritySummary:{errors:19,warns:34,resets:0}},{njs:13,offset:.3,notes:704,bombs:0,obstacles:32,nps:3.403,length:512.001,characteristic:"360Degree",difficulty:"ExpertPlus",events:708,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.175,paritySummary:{errors:40,warns:37,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c222e31735f0c61b7781c8f41864b8033e054d40.zip",coverURL:"https://cdn.beatsaver.com/c222e31735f0c61b7781c8f41864b8033e054d40.jpg",previewURL:"https://cdn.beatsaver.com/c222e31735f0c61b7781c8f41864b8033e054d40.mp3"}],createdAt:"2020-06-29T19:22:10.964Z",updatedAt:"2020-06-29T19:22:10.964Z",lastPublishedAt:"2020-06-29T19:22:10.964Z"},{id:"3c10",name:"Sword Art Online Opening Compilation",description:'So what do you do when you\'ve mapped every single SAO opening? You make a compilation of them of course! I originally wanted to combine the full version of all the songs which would result in a 40+ minute map but since Beat Saver has a size limit I decided to combine the TV edit versions of them instead.\r\n\r\nSongs are ordered in released date:\r\n\r\n1. "crossing field" by LiSA\r\n2. "INNOCENCE" by Aoi Eir\r\n3. "IGNITE" by Eir Aoi\r\n4. "courage" by Haruka Tomatsu \r\n5. "Catch the Moment" by LiSA\r\n6. "Thrill, Risk, Heartless" by LiSA\r\n7. "Ryuusei" by Aoi EiR\r\n8. "ADAMAS" by LiSA\r\n9. "RESISTER" by ASCA\r\n\r\nWhile most of the patterns are recycled from my own maps, I did remap/resync some of the older ones so they are on the same quality as my newer maps.\r\n\r\nMostly expert level but has some streams and technical sections which combined with the song\'s length I decided to put this as expert plus just to be safe.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:120,duration:841,songName:"Sword Art Online Opening Compilation",songSubName:"Various Artists",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4936,upvotes:1986,downvotes:74,score:.9174},uploaded:"2019-03-06T11:49:32Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e7ff277fbad063337af1e18bb273b0eb6fc03557",key:"3c10",state:"Published",createdAt:"2019-03-06T11:49:32Z",sageScore:1,diffs:[{njs:15,offset:0,notes:3814,bombs:44,obstacles:37,nps:4.553,length:1675.338,characteristic:"Standard",difficulty:"ExpertPlus",events:3960,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:837.669,paritySummary:{errors:327,warns:301,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e7ff277fbad063337af1e18bb273b0eb6fc03557.zip",coverURL:"https://cdn.beatsaver.com/e7ff277fbad063337af1e18bb273b0eb6fc03557.jpg",previewURL:"https://cdn.beatsaver.com/e7ff277fbad063337af1e18bb273b0eb6fc03557.mp3"}],createdAt:"2019-03-06T11:49:32Z",updatedAt:"2019-03-06T11:49:32Z",lastPublishedAt:"2019-03-06T11:49:32Z"},{id:"34a5",name:"Check Yes, Juliet - We The Kings",description:"Run Baby Run! Check Yes, Juliet by We The Kings, song is brought from Itunes so it's the highest quality sound file you can get.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:167,duration:217,songName:"Check Yes, Juliet",songSubName:"We The Kings",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1453,upvotes:597,downvotes:7,score:.9174},uploaded:"2019-02-09T08:16:38Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a6fff4353d6c0657fb6a3de381dd48458c563dcf",key:"34a5",state:"Published",createdAt:"2019-02-09T08:16:38Z",sageScore:6,diffs:[{njs:15,offset:0,notes:905,bombs:0,obstacles:0,nps:4.443,length:566.959,characteristic:"Standard",difficulty:"Expert",events:3427,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.698,paritySummary:{errors:61,warns:71,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a6fff4353d6c0657fb6a3de381dd48458c563dcf.zip",coverURL:"https://cdn.beatsaver.com/a6fff4353d6c0657fb6a3de381dd48458c563dcf.jpg",previewURL:"https://cdn.beatsaver.com/a6fff4353d6c0657fb6a3de381dd48458c563dcf.mp3"}],createdAt:"2019-02-09T08:16:38Z",updatedAt:"2019-02-09T08:16:38Z",lastPublishedAt:"2019-02-09T08:16:38Z"},{id:"78e",name:"Numb - Linkin Park",description:"Expert - Hard - Normal Charts\nCustom Lighting\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:110,duration:188,songName:"Numb",songSubName:"Linkin Park",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:11541,upvotes:7092,downvotes:389,score:.9174},uploaded:"2018-07-02T13:44:43Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2e6f858088c6d67e930e1bb357bd7455101b6626",key:"78e",state:"Published",createdAt:"2018-07-02T13:44:43Z",sageScore:6,diffs:[{njs:10,offset:0,notes:367,bombs:0,obstacles:39,nps:2.049,length:328.5,characteristic:"Standard",difficulty:"Normal",events:1134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.182,paritySummary:{errors:45,warns:26,resets:0},stars:.93},{njs:10,offset:0,notes:653,bombs:0,obstacles:50,nps:3.602,length:332.499,characteristic:"Standard",difficulty:"Hard",events:1134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.363,paritySummary:{errors:57,warns:43,resets:0},stars:1.86},{njs:10,offset:0,notes:899,bombs:0,obstacles:50,nps:4.958,length:332.5,characteristic:"Standard",difficulty:"Expert",events:1134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.364,paritySummary:{errors:58,warns:58,resets:0},stars:2.59}],downloadURL:"https://cdn.beatsaver.com/2e6f858088c6d67e930e1bb357bd7455101b6626.zip",coverURL:"https://cdn.beatsaver.com/2e6f858088c6d67e930e1bb357bd7455101b6626.jpg",previewURL:"https://cdn.beatsaver.com/2e6f858088c6d67e930e1bb357bd7455101b6626.mp3"}],createdAt:"2018-07-02T13:44:43Z",updatedAt:"2018-07-02T13:44:43Z",lastPublishedAt:"2018-07-02T13:44:43Z"},{id:"13b20",name:"Pika Girl - S3RL",description:'did a slightly more "dancey" style of mapping with this one\n\nMap Preview: https://youtu.be/_lrXOS7a7Cs\n\nDifficulties: \nExpert+(6.53 NPS),\nExpert(4.5 NPS),\nHard(3.7 NPS). \n\nCustom lights, I used lolighter for the chorus, hand lit everything else. \n\nThanks to eZconfirmed and nuggie for playtesting! \n\nAny and all feedback appreciated:\nMeezoNugget#8186\n\nEnjoy! :)\n',uploader:{id:57121,name:"meezonugget",uniqueSet:!0,hash:"5e6b793f7abb0000068073d7",avatar:"https://cdn.beatsaver.com/avatar/146287428875976704.png",type:"DISCORD"},metadata:{bpm:175,duration:226,songName:"Pika Girl",songSubName:"",songAuthorName:"S3RL",levelAuthorName:"MeezoNugget"},stats:{plays:0,downloads:3445,upvotes:1105,downvotes:29,score:.9173},uploaded:"2021-02-07T00:20:32.184Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a30818f752cce3c87664570826bbf7b12b848a30",key:"13b20",state:"Published",createdAt:"2021-02-07T00:20:32.184Z",sageScore:4,diffs:[{njs:18,offset:.1,notes:837,bombs:0,obstacles:56,nps:3.817,length:639.5,characteristic:"Standard",difficulty:"Hard",events:5273,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.257,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:-.1,notes:1021,bombs:0,obstacles:54,nps:4.657,length:639.5,characteristic:"Standard",difficulty:"Expert",events:5273,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.257,paritySummary:{errors:0,warns:0,resets:0}},{njs:22,offset:-.3,notes:1482,bombs:7,obstacles:78,nps:6.759,length:639.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5273,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.257,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/a30818f752cce3c87664570826bbf7b12b848a30.zip",coverURL:"https://cdn.beatsaver.com/a30818f752cce3c87664570826bbf7b12b848a30.jpg",previewURL:"https://cdn.beatsaver.com/a30818f752cce3c87664570826bbf7b12b848a30.mp3"}],createdAt:"2021-02-07T00:20:32.184Z",updatedAt:"2021-02-07T00:20:32.184Z",lastPublishedAt:"2021-02-07T00:20:32.184Z"},{id:"7288",name:"Megalovania - Camellia Remix (Kole Edit) [One saber]",description:"I don’t know much about Undertale nor Camellia, but when making this shorter edit of Camellia’s remix of Megalovania by Toby Fox I felt like mapping it, and as with any popular song I’m gonna make it in One Saber instead since there can never be enough One Saber. I also asked Skeelie if he wanted to make some fancy lighting, just like he did for Overkill, and he did! So here it is, Megalovania Remix by Camellia, as One Saber!\n\nChromaLite mod recommended for best lighting effects.\n\nNo map preview video. (Yet?)\n\nLighting (by Skeelie) preview:\nhttps://youtu.be/6b88SRuQaSQ\n\nBPM: 259\nDuration: 4:27\nEasy, Normal, Hard, Expert and Expert+ difficulties:\n\nEasy:\nNPS 1.32, 356 notes, 26 walls, 0 bombs\n\nNormal:\nNPS 1.66, 446 notes, 29 walls, 17 bombs\n\nHard:\nNPS 2.12, 568 notes, 30 walls, 53 bombs\n\nExpert:\nNPS 3.34, 895 notes, 25 walls, 51 bombs\n\nExpert+:\nNPS 4.65, 1247 notes, 20 walls, 48 bombs\n\nThanks to Redmagi and Skeelie for playtesting!\n\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:242,duration:267,songName:"Megalovania",songSubName:"Remix (Kole Edit)",songAuthorName:"Camellia",levelAuthorName:"Kolezan (Lighting by Skeelie)"},stats:{plays:0,downloads:6279,upvotes:1738,downvotes:61,score:.9173},uploaded:"2019-11-29T07:42:50.058Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ac6eb8bb6ce09461d164dcfe2ae24606bbdfa967",key:"7288",state:"Published",createdAt:"2019-11-29T07:42:50.058Z",sageScore:6,diffs:[{njs:11,offset:1,notes:356,bombs:0,obstacles:26,nps:1.392,length:1031.5,characteristic:"OneSaber",difficulty:"Easy",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.744,paritySummary:{errors:37,warns:45,resets:0}},{njs:13,offset:1,notes:446,bombs:17,obstacles:29,nps:1.744,length:1031.5,characteristic:"OneSaber",difficulty:"Normal",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.744,paritySummary:{errors:42,warns:49,resets:0}},{njs:15,offset:.7,notes:568,bombs:53,obstacles:30,nps:2.221,length:1031.5,characteristic:"OneSaber",difficulty:"Hard",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.744,paritySummary:{errors:34,warns:75,resets:10}},{njs:18,offset:0,notes:895,bombs:51,obstacles:25,nps:3.5,length:1031.5,characteristic:"OneSaber",difficulty:"Expert",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.744,paritySummary:{errors:28,warns:84,resets:3}},{njs:20,offset:1.2,notes:1247,bombs:48,obstacles:20,nps:4.857,length:1035.5,characteristic:"OneSaber",difficulty:"ExpertPlus",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256.736,paritySummary:{errors:27,warns:61,resets:5}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ac6eb8bb6ce09461d164dcfe2ae24606bbdfa967.zip",coverURL:"https://cdn.beatsaver.com/ac6eb8bb6ce09461d164dcfe2ae24606bbdfa967.jpg",previewURL:"https://cdn.beatsaver.com/ac6eb8bb6ce09461d164dcfe2ae24606bbdfa967.mp3"}],createdAt:"2019-11-29T07:42:50.058Z",updatedAt:"2019-11-29T07:42:50.058Z",lastPublishedAt:"2019-11-29T07:42:50.058Z"},{id:"709",name:"Weak - AJR",description:"Expert only but not really that hard. My third beat map.",uploader:{id:51936,name:"ryuk845",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f1fe",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1fe?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:205,songName:"Weak - AJR",songSubName:"",songAuthorName:"Arcanthia",levelAuthorName:"ryuk845"},stats:{plays:0,downloads:4258,upvotes:1997,downvotes:75,score:.9173},uploaded:"2018-06-29T00:27:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e4e6311258b1caae45341d87470d0c0145ce3910",key:"709",state:"Published",createdAt:"2018-06-29T00:27:10Z",sageScore:4,diffs:[{njs:10,offset:0,notes:540,bombs:0,obstacles:5,nps:2.742,length:407,characteristic:"Standard",difficulty:"Expert",events:471,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.935,paritySummary:{errors:101,warns:65,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e4e6311258b1caae45341d87470d0c0145ce3910.zip",coverURL:"https://cdn.beatsaver.com/e4e6311258b1caae45341d87470d0c0145ce3910.jpg",previewURL:"https://cdn.beatsaver.com/e4e6311258b1caae45341d87470d0c0145ce3910.mp3"}],createdAt:"2018-06-29T00:27:10Z",updatedAt:"2018-06-29T00:27:10Z",lastPublishedAt:"2018-06-29T00:27:10Z"},{id:"8266",name:"Domino's Pizza Fresh Hack",description:"I dont know why I made this lol\n\nVideo links:\nhttps://www.youtube.com/watch?v=2-ifY2LPX_0&feature=youtu.be\nhttps://twitter.com/Dont_Shoot_MEE/status/1222536916601577472",uploader:{id:26973,name:"dontshootme",uniqueSet:!0,hash:"5dc4d17566e48d0006f882fc",avatar:"https://www.gravatar.com/avatar/5dc4d17566e48d0006f882fc?d=retro",type:"SIMPLE"},metadata:{bpm:107,duration:112,songName:"Domino's Pizza Fresh Hack",songSubName:"",songAuthorName:"Danny Fresh",levelAuthorName:"Dont-Shoot-ME"},stats:{plays:0,downloads:815,upvotes:882,downvotes:19,score:.9172},uploaded:"2020-01-29T15:07:20.809Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cb3069aeef3d13478f2ee5321a18e35e673c9691",key:"8266",state:"Published",createdAt:"2020-01-29T15:07:20.809Z",sageScore:1,diffs:[{njs:20,offset:0,notes:759,bombs:72,obstacles:4,nps:6.896,length:196.281,characteristic:"Standard",difficulty:"ExpertPlus",events:1569,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:110.064,paritySummary:{errors:4,warns:0,resets:5}}],downloadURL:"https://cdn.beatsaver.com/cb3069aeef3d13478f2ee5321a18e35e673c9691.zip",coverURL:"https://cdn.beatsaver.com/cb3069aeef3d13478f2ee5321a18e35e673c9691.jpg",previewURL:"https://cdn.beatsaver.com/cb3069aeef3d13478f2ee5321a18e35e673c9691.mp3"}],createdAt:"2020-01-29T15:07:20.809Z",updatedAt:"2020-01-29T15:07:20.809Z",lastPublishedAt:"2020-01-29T15:07:20.809Z"},{id:"653f",name:"Wolf In Sheep's Clothing [Nightcore] - Set It Off",description:"I actually like this song better in Nightcore. Plus it's quite a popular nightcore song on youtube with over 16 million views https://www.youtube.com/watch?v=Jvl2e6X6PA4",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:192.059,duration:163,songName:"Wolf In Sheep's Clothing (Nightcore)",songSubName:"",songAuthorName:"Set It Off",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1291,upvotes:884,downvotes:19,score:.9172},uploaded:"2019-09-22T18:58:41.682Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"410712794d58df7bc6249fed7fef50cf5e4391d6",key:"653f",state:"Published",createdAt:"2019-09-22T18:58:41.682Z",sageScore:5,diffs:[{njs:19,offset:0,notes:710,bombs:12,obstacles:2,nps:4.474,length:508,characteristic:"Standard",difficulty:"ExpertPlus",events:2207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.701,paritySummary:{errors:45,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/410712794d58df7bc6249fed7fef50cf5e4391d6.zip",coverURL:"https://cdn.beatsaver.com/410712794d58df7bc6249fed7fef50cf5e4391d6.jpg",previewURL:"https://cdn.beatsaver.com/410712794d58df7bc6249fed7fef50cf5e4391d6.mp3"}],createdAt:"2019-09-22T18:58:41.682Z",updatedAt:"2019-09-22T18:58:41.682Z",lastPublishedAt:"2019-09-22T18:58:41.682Z"},{id:"6078",name:"Youngblood - 5 Seconds of Summer",description:"Just an Expert level.",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:120,duration:204,songName:"Youngblood",songSubName:"",songAuthorName:"5 Seconds of Summer",levelAuthorName:"BennyDabeast"},stats:{plays:0,downloads:2815,upvotes:991,downvotes:24,score:.9171},uploaded:"2019-08-31T21:49:30.872Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"182e88e0e80450dd02bdcd6ac4924e3cc00d8673",key:"6078",state:"Published",createdAt:"2019-08-31T21:49:30.872Z",sageScore:4,diffs:[{njs:12,offset:1,notes:609,bombs:8,obstacles:41,nps:3.045,length:400,characteristic:"Standard",difficulty:"Hard",events:726,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200,paritySummary:{errors:86,warns:74,resets:3}},{njs:12,offset:0,notes:614,bombs:8,obstacles:41,nps:3.07,length:400,characteristic:"Standard",difficulty:"Expert",events:726,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200,paritySummary:{errors:91,warns:74,resets:3}}],downloadURL:"https://cdn.beatsaver.com/182e88e0e80450dd02bdcd6ac4924e3cc00d8673.zip",coverURL:"https://cdn.beatsaver.com/182e88e0e80450dd02bdcd6ac4924e3cc00d8673.jpg",previewURL:"https://cdn.beatsaver.com/182e88e0e80450dd02bdcd6ac4924e3cc00d8673.mp3"}],createdAt:"2019-08-31T21:49:30.872Z",updatedAt:"2019-08-31T21:49:30.872Z",lastPublishedAt:"2019-08-31T21:49:30.872Z"},{id:"318f",name:"Awaken [League of Legends Season 2019 Soundtrack] - Valerie Broussard",description:"Made 4 versions of this map each with a different time signature but I think have I found the one I'm happy with. Awaken featuring Valerie Broussard, the soundtrack for League of Legends' 2019 Season Cinematic. Difficulty is a really easy expert but complex enough to not be put in hard. I brought the song off iTunes so it's the highest quality file you can get ;)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:160,duration:194,songName:"Awaken",songSubName:"Valerie Broussard",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1940,upvotes:1731,downvotes:61,score:.9171},uploaded:"2019-01-27T08:19:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f2481180576b33bdc23e4f4f1a26eaf4e0e09aec",key:"318f",state:"Published",createdAt:"2019-01-27T08:19:46Z",sageScore:5,diffs:[{njs:15,offset:0,notes:519,bombs:30,obstacles:2,nps:2.836,length:488.09,characteristic:"Standard",difficulty:"Expert",events:872,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.034,paritySummary:{errors:40,warns:38,resets:2}}],downloadURL:"https://cdn.beatsaver.com/f2481180576b33bdc23e4f4f1a26eaf4e0e09aec.zip",coverURL:"https://cdn.beatsaver.com/f2481180576b33bdc23e4f4f1a26eaf4e0e09aec.jpg",previewURL:"https://cdn.beatsaver.com/f2481180576b33bdc23e4f4f1a26eaf4e0e09aec.mp3"}],createdAt:"2019-01-27T08:19:46Z",updatedAt:"2019-01-27T08:19:46Z",lastPublishedAt:"2019-01-27T08:19:46Z"},{id:"248e",name:"Dance, Dance - Fall Out Boy",description:"114.5 BPM / 3:01 Runtime\r\nEasy / 233 Notes\r\nNormal / 370 Notes\r\nHard / 495 Notes\r\nExpert / 726 Notes\r\n\r\nGameplay:\r\nhttps://youtu.be/fyj_fjaGpd8\r\nSong:\r\nhttps://www.youtube.com/watch?v=C6MOKXm8x50",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:114,duration:182,songName:"Dance, Dance",songSubName:"Fall Out Boy",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:5632,upvotes:2351,downvotes:95,score:.9171},uploaded:"2018-12-08T06:20:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"142d2cc083037d25dce744ef747eb3eb0f30ab72",key:"248e",state:"Published",createdAt:"2018-12-08T06:20:28Z",sageScore:5,diffs:[{njs:10,offset:0,notes:233,bombs:2,obstacles:15,nps:1.312,length:339,characteristic:"Standard",difficulty:"Easy",events:0,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:49,warns:18,resets:2}},{njs:10,offset:0,notes:370,bombs:8,obstacles:19,nps:2.083,length:339,characteristic:"Standard",difficulty:"Normal",events:3172,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:58,warns:16,resets:0}},{njs:10,offset:0,notes:495,bombs:0,obstacles:8,nps:2.787,length:339,characteristic:"Standard",difficulty:"Hard",events:3172,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:57,warns:32,resets:0}},{njs:12,offset:0,notes:726,bombs:34,obstacles:0,nps:4.087,length:339,characteristic:"Standard",difficulty:"Expert",events:3180,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:40,warns:27,resets:4}}],downloadURL:"https://cdn.beatsaver.com/142d2cc083037d25dce744ef747eb3eb0f30ab72.zip",coverURL:"https://cdn.beatsaver.com/142d2cc083037d25dce744ef747eb3eb0f30ab72.jpg",previewURL:"https://cdn.beatsaver.com/142d2cc083037d25dce744ef747eb3eb0f30ab72.mp3"}],createdAt:"2018-12-08T06:20:28Z",updatedAt:"2018-12-08T06:20:28Z",lastPublishedAt:"2018-12-08T06:20:28Z"},{id:"177e8",name:"{Modchart} Duumu & Slyleaf - Illuminate",description:"## IMPORTANT: This map will most likely be broken if you just hop into it. Please take the time to configure your game properly if you want to see it how it was intended. I know, it's super annoying, but there's nothing I can do about it. There's no better system. Basically if the intro to the map is white for like more than a second, you see the BTS logo, or if your walls look +'s than it's broken.\n\n!! WARNINGS !!\n- Use the newest versions of Chroma and NE (Available on ModAssistant), they'll allow for you to actually use the new environment enhancements. New NE will also SIGNIFICANTLY increase performance. I have not tested if this is playable on previous versions of NE.\n- Use all effects on lights. Remember this is expert not E+ so you need to adjust the \"Environment Effects\" setting. This map is by no means intense, but no flickering wasn't built for chroma and will break the lighting.\n- Turn off shockwave, as there's a bug where it cuts off distortion effects on walls that are under you\n- Turn on bloom, Beat Saber tries to make baked lighting on walls and they break on Noodle walls. You can ignore this if you have the mod that fixes this, although I don't know how the look will change.\n- Please disable NJSFixer, as this completely breaks the walls :(\n\nI've spent equal, if not, MORE time on this than Homesick. This map utilizes the new Chroma environment enhancements. I really went all out with it. I think this map is really unique and there are few, if not NO other maps so far that offer the experience this map gives right now. \n\nThis song means a lot to me. I've had this song added since summer 2019, it came up in my recommended and I fell in love with it. It's such an incredible vibe and it makes me feel super comfy. Duumu or Slyleaf, if you're reading this, you're incredible. I am yet to find any other song that makes me feel like this. I really hope you enjoy seeing what I imagine when listening to it.\n\nEnjoy.\n\nVideo: https://youtu.be/lFL3Gjy15oc",uploader:{id:4284246,name:"swifter1243",uniqueSet:!0,hash:"5dcf3af29eccad0006a0b45f",avatar:"https://cdn.beatsaver.com/avatar/166644275793100801.png",type:"DISCORD"},metadata:{bpm:100,duration:240,songName:"Illuminate",songSubName:"",songAuthorName:"Duumu, Slyleaf",levelAuthorName:"Swifter1243"},stats:{plays:0,downloads:1794,upvotes:900,downvotes:20,score:.917},uploaded:"2021-05-03T15:44:55.957Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f5f56ebdee279caae376daf1a6a703576aa08bcd",key:"177e8",state:"Published",createdAt:"2021-05-03T15:44:55.957Z",sageScore:3,diffs:[{njs:18,offset:-.4,notes:581,bombs:8,obstacles:0,nps:2.591,length:373.75,characteristic:"Standard",difficulty:"Hard",events:1367,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:224.25,paritySummary:{errors:0,warns:0,resets:3}},{njs:16,offset:1,notes:581,bombs:8,obstacles:8102,nps:2.591,length:373.75,characteristic:"Standard",difficulty:"Expert",events:2183,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:224.25,paritySummary:{errors:0,warns:0,resets:3}}],downloadURL:"https://cdn.beatsaver.com/f5f56ebdee279caae376daf1a6a703576aa08bcd.zip",coverURL:"https://cdn.beatsaver.com/f5f56ebdee279caae376daf1a6a703576aa08bcd.jpg",previewURL:"https://cdn.beatsaver.com/f5f56ebdee279caae376daf1a6a703576aa08bcd.mp3"}],createdAt:"2021-05-03T15:44:55.957Z",updatedAt:"2021-05-03T15:44:55.957Z",lastPublishedAt:"2021-05-03T15:44:55.957Z"},{id:"907f",name:"Alan Walker - Faded",description:"This will likely be my final map.\n\nThanks to the people who played my maps and thanks to the mapping community for the support.\n\nadieu.",uploader:{id:31355,name:"wonderfulsnowball",uniqueSet:!0,hash:"5d5be38aa959f6000650d725",avatar:"https://www.gravatar.com/avatar/5d5be38aa959f6000650d725?d=retro",type:"SIMPLE"},metadata:{bpm:90,duration:113,songName:"Faded",songSubName:"(Short Ver.)",songAuthorName:"Alan Walker",levelAuthorName:"WonderfulSnowball"},stats:{plays:0,downloads:6805,upvotes:2077,downvotes:80,score:.917},uploaded:"2020-03-15T23:33:05.468Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"72808dcf1d5e2f3b4d08ba98cec32d39d696ba91",key:"907f",state:"Published",createdAt:"2020-03-15T23:33:05.468Z",sageScore:7,diffs:[{njs:12,offset:0,notes:139,bombs:0,obstacles:0,nps:1.313,length:158.75,characteristic:"Standard",difficulty:"Easy",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:2,warns:2,resets:0}},{njs:12,offset:-.25,notes:212,bombs:0,obstacles:0,nps:2.003,length:158.75,characteristic:"Standard",difficulty:"Normal",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:2,warns:0,resets:0}},{njs:13,offset:-.5,notes:281,bombs:0,obstacles:2,nps:2.655,length:158.75,characteristic:"Standard",difficulty:"Hard",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:.25,notes:347,bombs:0,obstacles:2,nps:3.279,length:158.75,characteristic:"Standard",difficulty:"Expert",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:.25,notes:367,bombs:0,obstacles:3,nps:3.468,length:158.75,characteristic:"Standard",difficulty:"ExpertPlus",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/72808dcf1d5e2f3b4d08ba98cec32d39d696ba91.zip",coverURL:"https://cdn.beatsaver.com/72808dcf1d5e2f3b4d08ba98cec32d39d696ba91.jpg",previewURL:"https://cdn.beatsaver.com/72808dcf1d5e2f3b4d08ba98cec32d39d696ba91.mp3"}],createdAt:"2020-03-15T23:33:05.468Z",updatedAt:"2020-03-15T23:33:05.468Z",lastPublishedAt:"2020-03-15T23:33:05.468Z"},{id:"6666",name:"Mick Gordon - Cyberdemon",description:"Rip and tear\r\n\r\nVideo: https://www.youtube.com/watch?v=pcqmDzUobEc",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:179.921,duration:224,songName:"Cyberdemon",songSubName:"",songAuthorName:"Mick Gordon",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:5676,upvotes:3668,downvotes:173,score:.917},uploaded:"2019-09-28T15:49:27.681Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"aaaa68fdb4e7ddb5634ee3afd80cb0b5dda2260c",key:"6666",state:"Published",createdAt:"2019-09-28T15:49:27.681Z",sageScore:6,diffs:[{njs:19,offset:.5,notes:1494,bombs:666,obstacles:3666,nps:6.829,length:656,characteristic:"Lawless",difficulty:"ExpertPlus",events:33666,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:218.763,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/aaaa68fdb4e7ddb5634ee3afd80cb0b5dda2260c.zip",coverURL:"https://cdn.beatsaver.com/aaaa68fdb4e7ddb5634ee3afd80cb0b5dda2260c.jpg",previewURL:"https://cdn.beatsaver.com/aaaa68fdb4e7ddb5634ee3afd80cb0b5dda2260c.mp3"}],createdAt:"2019-09-28T15:49:27.681Z",updatedAt:"2019-09-28T15:49:27.681Z",lastPublishedAt:"2019-09-28T15:49:27.681Z"},{id:"fb0f",name:"Michael Jackson - Thriller (James Egbert Dubstep Remix)",description:"Yet another great and dancy Dubstep mix of an MJ song.\nYou can follow me on twitch for more awesomeness at https://www.twitch.tv/pkdan\nVideo preview of the map: https://www.youtube.com/watch?v=ZuHcfSSPtig\n\nLength: 3:15\nNotes: 668 (Expert) / 991 (Expert+)\nNJS: 16 (Expert) / 20 (Expert+)\nBPM: 128",uploader:{id:4284639,name:"pkdan",uniqueSet:!0,hash:"5e6d07927abb00000681e8ee",avatar:"https://cdn.beatsaver.com/avatar/315553265091739650.png",type:"DISCORD"},metadata:{bpm:128,duration:195,songName:"Thriller (James Egbert Dubstep Remix)",songSubName:"",songAuthorName:"Michael Jackson",levelAuthorName:"pkdan"},stats:{plays:0,downloads:6967,upvotes:850,downvotes:18,score:.9168},uploaded:"2020-10-07T15:04:12.225Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5d5df852651bb568012635ff3a356efdd9372b80",key:"fb0f",state:"Published",createdAt:"2020-10-07T15:04:12.225Z",sageScore:4,diffs:[{njs:16,offset:-.2,notes:668,bombs:33,obstacles:8,nps:3.591,length:396.875,characteristic:"Standard",difficulty:"Expert",events:2296,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.035,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:.3,notes:991,bombs:33,obstacles:8,nps:5.327,length:396.875,characteristic:"Standard",difficulty:"ExpertPlus",events:2296,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.035,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5d5df852651bb568012635ff3a356efdd9372b80.zip",coverURL:"https://cdn.beatsaver.com/5d5df852651bb568012635ff3a356efdd9372b80.jpg",previewURL:"https://cdn.beatsaver.com/5d5df852651bb568012635ff3a356efdd9372b80.mp3"}],createdAt:"2020-10-07T15:04:12.225Z",updatedAt:"2020-10-07T15:04:12.225Z",lastPublishedAt:"2020-10-07T15:04:12.225Z"},{id:"ed2a",name:"NULCTRL (Meiso FLIP)",description:"POTENTIAL SEIZURE WARNING\n\nANTI-QUEST REUPLOAD\n\nIT IS HIGHLY RECCOMENDED TO PLAY WITH THE FOLLOWING ADVANCED GRAPHICS SETTINGS SET AS SUCH\n-BLOOM ON\n-DISTORTION ON\n-0 MAX SHOCKWAVE PARTICLES\n\nVideo: https://youtu.be/xGICwOKNa9Y\n\nSpecial thanks to https://i.imgur.com/VbKV9AX.jpg for feedback to make sure things weɹe actually good.\n\n",uploader:{id:4235136,name:"reaxt",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ab",avatar:"https://cdn.beatsaver.com/avatar/163052863038291970.png",type:"DISCORD"},metadata:{bpm:200,duration:215,songName:"NULCTRL MEISO FLIP",songSubName:"",songAuthorName:"Meiso",levelAuthorName:"Reaxt"},stats:{plays:0,downloads:1769,upvotes:1941,downvotes:73,score:.9168},uploaded:"2020-09-17T21:26:11.811Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"89b1de26baad93c63a6bdb3d9dbae7dc4972897b",key:"ed2a",state:"Published",createdAt:"2020-09-17T21:26:11.811Z",sageScore:3,diffs:[{njs:19,offset:.37,notes:2984,bombs:0,obstacles:1570,nps:14.22,length:699.5,characteristic:"Lawless",difficulty:"ExpertPlus",events:3557,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:209.85,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/89b1de26baad93c63a6bdb3d9dbae7dc4972897b.zip",coverURL:"https://cdn.beatsaver.com/89b1de26baad93c63a6bdb3d9dbae7dc4972897b.jpg",previewURL:"https://cdn.beatsaver.com/89b1de26baad93c63a6bdb3d9dbae7dc4972897b.mp3"}],createdAt:"2020-09-17T21:26:11.811Z",updatedAt:"2020-09-17T21:26:11.811Z",lastPublishedAt:"2020-09-17T21:26:11.811Z"},{id:"658e",name:"Take Back the Night - CaptainSparklez ft. TryHardNinja",description:"Take Back the Night, Written and Performed by TryHardNinja, Original Animation Produced and Directed by CaptainSparklez.\n\nCheck out the gameplay video here! https://www.youtube.com/watch?v=47Fnh08AEy4",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:126,duration:317,songName:"Take Back the Night",songSubName:"",songAuthorName:"CaptainSparklez ft. TryHardNinja",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1693,upvotes:611,downvotes:8,score:.9168},uploaded:"2019-09-24T02:56:43.768Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0361c056cd4247d639eda648bf21e4eae4454f3e",key:"658e",state:"Published",createdAt:"2019-09-24T02:56:43.768Z",sageScore:6,diffs:[{njs:12,offset:0,notes:652,bombs:0,obstacles:62,nps:2.126,length:644,characteristic:"Standard",difficulty:"Hard",events:4659,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:306.667,paritySummary:{errors:56,warns:49,resets:0}},{njs:14,offset:0,notes:923,bombs:0,obstacles:85,nps:3.01,length:644,characteristic:"Standard",difficulty:"Expert",events:4659,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:306.667,paritySummary:{errors:52,warns:29,resets:0}},{njs:16,offset:0,notes:1051,bombs:0,obstacles:87,nps:3.427,length:644,characteristic:"Standard",difficulty:"ExpertPlus",events:4669,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:306.667,paritySummary:{errors:45,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0361c056cd4247d639eda648bf21e4eae4454f3e.zip",coverURL:"https://cdn.beatsaver.com/0361c056cd4247d639eda648bf21e4eae4454f3e.jpg",previewURL:"https://cdn.beatsaver.com/0361c056cd4247d639eda648bf21e4eae4454f3e.mp3"}],createdAt:"2019-09-24T02:56:43.768Z",updatedAt:"2019-09-24T02:56:43.768Z",lastPublishedAt:"2019-09-24T02:56:43.768Z"},{id:"64c9",name:"You Don't Want Me (Crystal Skies Remix)",description:"My first wall map! On top of having walls, it also has Chroma lights!\n\nYou have a few options for playing, you can view the lightshow with or without walls, and you can play the map with or without walls. \n\nHere's a video of the walls and the lights :D https://www.youtube.com/watch?v=DkRDF8bbNjQ\n\nI did the whole map myself, but of course, I had some help from the lovely people on the BSMG. Thanks Kival Evan, Dni0, JENNAexe, Aeroluna and necrospook_ for the testplays! And also, another thanks to Aeroluna for helping me fix any bugs with the metadata for my map :)\n\nPS.: Beatcore, one of the song's artists, also released a new EP today that is really good! He's super unknown so go check it out on YouTube and Spotify if you get a chance. He's really talented :D\n\nYou Don't Want Me (Crystal Skies Remix) - Beatcore, Ashley Apollodor | 130 BPM | Expert+ Only (With and without walls) along with Lightshow and Lightshow/Wallshow | Fully mapped with custom lights and walls\n\n<3\n\n",uploader:{id:17131,name:"tranquillizeme",uniqueSet:!0,hash:"5cff0b7798cc5a672c85609e",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c85609e?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:233,songName:"You Don't Want Me",songSubName:"Crystal Skies Remix",songAuthorName:"Beatcore, Ashley Apollodor, Crystal Skies",levelAuthorName:"TranquillizeMe"},stats:{plays:0,downloads:1743,upvotes:851,downvotes:18,score:.9168},uploaded:"2019-09-20T22:30:43.842Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fbf6f4775ff824facf83ad4a27f48d220466f21e",key:"64c9",state:"Published",createdAt:"2019-09-20T22:30:43.842Z",sageScore:8,diffs:[{njs:18,offset:0,notes:782,bombs:22,obstacles:0,nps:3.597,length:471,characteristic:"Standard",difficulty:"Expert",events:16275,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:217.385,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:782,bombs:22,obstacles:5003,nps:3.597,length:471,characteristic:"Standard",difficulty:"ExpertPlus",events:16275,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:217.385,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:16275,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:0,bombs:0,obstacles:5003,nps:0,length:0,characteristic:"Lightshow",difficulty:"Normal",events:16275,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fbf6f4775ff824facf83ad4a27f48d220466f21e.zip",coverURL:"https://cdn.beatsaver.com/fbf6f4775ff824facf83ad4a27f48d220466f21e.jpg",previewURL:"https://cdn.beatsaver.com/fbf6f4775ff824facf83ad4a27f48d220466f21e.mp3"}],createdAt:"2019-09-20T22:30:43.842Z",updatedAt:"2019-09-20T22:30:43.842Z",lastPublishedAt:"2019-09-20T22:30:43.842Z"},{id:"431c",name:"Shine (RWBY: Volume 2 Soundtrack) - Jeff Williams ft. Casey Lee Williams",description:'"Shine" is a single that was featured prominently in the episode: "Dance Dance Infiltration", where Team JNPR performed a synchronized dance routine to the song.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:122,duration:260,songName:"Shine",songSubName:"Jeff Williams ft. Casey Lee Williams",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2411,upvotes:661,downvotes:10,score:.9168},uploaded:"2019-04-03T08:52:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f95bfca25401b117bd9bec202c741bd75f44141b",key:"431c",state:"Published",createdAt:"2019-04-03T08:52:47Z",sageScore:6,diffs:[{njs:14,offset:0,notes:969,bombs:0,obstacles:7,nps:3.818,length:516,characteristic:"Standard",difficulty:"Expert",events:1070,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:253.77,paritySummary:{errors:28,warns:33,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f95bfca25401b117bd9bec202c741bd75f44141b.zip",coverURL:"https://cdn.beatsaver.com/f95bfca25401b117bd9bec202c741bd75f44141b.jpg",previewURL:"https://cdn.beatsaver.com/f95bfca25401b117bd9bec202c741bd75f44141b.mp3"}],createdAt:"2019-04-03T08:52:47Z",updatedAt:"2019-04-03T08:52:47Z",lastPublishedAt:"2019-04-03T08:52:47Z"},{id:"3436",name:"Christopher Tin - Baba Yetu",description:"This song was recommended to me. Baba Yetu is theme song Civilization IV.",uploader:{id:4285018,name:"majorpickle",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f792",avatar:"https://cdn.beatsaver.com/avatar/450358937657671680.png",type:"DISCORD"},metadata:{bpm:92,duration:210,songName:"Baba Yetu",songSubName:"Christopher Tin",songAuthorName:"Majorpickle",levelAuthorName:"majorpickle"},stats:{plays:0,downloads:2763,upvotes:1090,downvotes:29,score:.9168},uploaded:"2019-02-07T03:44:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"60c7f5c08d38ad3664ad42874b874675a03da14a",key:"3436",state:"Published",createdAt:"2019-02-07T03:44:18Z",sageScore:4,diffs:[{njs:10,offset:0,notes:681,bombs:0,obstacles:86,nps:3.638,length:287,characteristic:"Standard",difficulty:"Expert",events:535,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.174,paritySummary:{errors:33,warns:19,resets:0}}],downloadURL:"https://cdn.beatsaver.com/60c7f5c08d38ad3664ad42874b874675a03da14a.zip",coverURL:"https://cdn.beatsaver.com/60c7f5c08d38ad3664ad42874b874675a03da14a.jpg",previewURL:"https://cdn.beatsaver.com/60c7f5c08d38ad3664ad42874b874675a03da14a.mp3"}],createdAt:"2019-02-07T03:44:18Z",updatedAt:"2019-02-07T03:44:18Z",lastPublishedAt:"2019-02-07T03:44:18Z"},{id:"2c5d",name:"Stay Frosty Royal Milk Tea - Fall Out Boy",description:"Expert Playthrough : https://youtu.be/mzmD9PYtW3I",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:146,duration:174,songName:"Stay Frosty Royal Milk Tea",songSubName:"Fall Out Boy",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:1134,upvotes:447,downvotes:2,score:.9168},uploaded:"2019-01-09T20:30:52Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c5b540769ac513b9ebf2f59f465823a9b73f6032",key:"2c5d",state:"Published",createdAt:"2019-01-09T20:30:52Z",sageScore:5,diffs:[{njs:10,offset:0,notes:296,bombs:6,obstacles:13,nps:1.801,length:400,characteristic:"Standard",difficulty:"Normal",events:855,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.384,paritySummary:{errors:38,warns:22,resets:0}},{njs:11,offset:0,notes:401,bombs:6,obstacles:13,nps:2.439,length:400,characteristic:"Standard",difficulty:"Hard",events:855,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.384,paritySummary:{errors:43,warns:31,resets:0}},{njs:13,offset:0,notes:512,bombs:8,obstacles:13,nps:3.115,length:400,characteristic:"Standard",difficulty:"Expert",events:855,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.384,paritySummary:{errors:46,warns:75,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c5b540769ac513b9ebf2f59f465823a9b73f6032.zip",coverURL:"https://cdn.beatsaver.com/c5b540769ac513b9ebf2f59f465823a9b73f6032.jpg",previewURL:"https://cdn.beatsaver.com/c5b540769ac513b9ebf2f59f465823a9b73f6032.mp3"}],createdAt:"2019-01-09T20:30:52Z",updatedAt:"2019-01-09T20:30:52Z",lastPublishedAt:"2019-01-09T20:30:52Z"},{id:"446",name:"Simple and Clean - PLANITb Remix - Kingdom Hearts",description:"Normal / Hard / Expert\r\nLight show\r\n\r\nhttps://youtu.be/rYrIFjxeY0k",uploader:{id:52578,name:"xroninbladex",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea58",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea58?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:131,songName:"Simple and Clean",songSubName:"-PLANITb Remix-",songAuthorName:"xroninbladex",levelAuthorName:"xroninbladex"},stats:{plays:0,downloads:2370,upvotes:1567,downvotes:53,score:.9168},uploaded:"2018-06-08T14:55:59Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8390e3f33ef12a395602c4ae12df9250a730a629",key:"446",state:"Published",createdAt:"2018-06-08T14:55:59Z",sageScore:5,diffs:[{njs:10,offset:0,notes:198,bombs:2,obstacles:1,nps:1.89,length:227,characteristic:"Standard",difficulty:"Normal",events:525,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.769,paritySummary:{errors:11,warns:28,resets:0}},{njs:10,offset:0,notes:310,bombs:2,obstacles:1,nps:2.959,length:227,characteristic:"Standard",difficulty:"Hard",events:525,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.769,paritySummary:{errors:33,warns:74,resets:0}},{njs:10,offset:0,notes:376,bombs:2,obstacles:1,nps:3.589,length:227,characteristic:"Standard",difficulty:"Expert",events:525,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.769,paritySummary:{errors:49,warns:56,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8390e3f33ef12a395602c4ae12df9250a730a629.zip",coverURL:"https://cdn.beatsaver.com/8390e3f33ef12a395602c4ae12df9250a730a629.jpg",previewURL:"https://cdn.beatsaver.com/8390e3f33ef12a395602c4ae12df9250a730a629.mp3"}],createdAt:"2018-06-08T14:55:59Z",updatedAt:"2018-06-08T14:55:59Z",lastPublishedAt:"2018-06-08T14:55:59Z"},{id:"41b",name:"30 Seconds to Mars | Dangerous Night",description:"Normal/Hard/Expert\r\nExpert map is not that tough. Its a fairly slower song that flows nicely.",uploader:{id:41378,name:"greatyazer",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea71",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea71?d=retro",type:"SIMPLE"},metadata:{bpm:132,duration:200,songName:"Dangerous Night",songSubName:"30 Seconds to Mars",songAuthorName:"GreatYazer",levelAuthorName:"greatyazer"},stats:{plays:0,downloads:9071,upvotes:2404,downvotes:99,score:.9168},uploaded:"2018-06-07T17:49:47Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"85a675da674fb13e576f2ac9b61a5adc767b060a",key:"41b",state:"Published",createdAt:"2018-06-07T17:49:47Z",sageScore:5,diffs:[{njs:10,offset:0,notes:227,bombs:0,obstacles:53,nps:1.202,length:415.5,characteristic:"Standard",difficulty:"Normal",events:463,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.864,paritySummary:{errors:130,warns:10,resets:0},stars:.78},{njs:10,offset:0,notes:365,bombs:0,obstacles:59,nps:1.933,length:415.5,characteristic:"Standard",difficulty:"Hard",events:463,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.864,paritySummary:{errors:81,warns:31,resets:0},stars:1.2},{njs:10,offset:0,notes:520,bombs:0,obstacles:60,nps:2.753,length:415.5,characteristic:"Standard",difficulty:"Expert",events:463,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.864,paritySummary:{errors:60,warns:53,resets:0},stars:1.7}],downloadURL:"https://cdn.beatsaver.com/85a675da674fb13e576f2ac9b61a5adc767b060a.zip",coverURL:"https://cdn.beatsaver.com/85a675da674fb13e576f2ac9b61a5adc767b060a.jpg",previewURL:"https://cdn.beatsaver.com/85a675da674fb13e576f2ac9b61a5adc767b060a.mp3"}],createdAt:"2018-06-07T17:49:47Z",updatedAt:"2018-06-07T17:49:47Z",lastPublishedAt:"2018-06-07T17:49:47Z"},{id:"4f0f",name:"MOMOLAND - BAAM",description:'Whoot whoot, first map! Please enjoy and have fun!\nExpert+ is named "Alternate Expert" in game and is largely the same as Expert. The differences are at 1:05-1:24, 2:20-2:39, and 2:54-3:09 with Alt Expert being a little more intense and fun in my opinion. Still I found myself playing both Experts interchangeably so think of it as a little experimentation as I continue to learn.\n\nNEW! Expert Preview Video: https://www.youtube.com/watch?v=qA1811Z-uVo\nMirror: https://streamable.com/p634s\n\n1 Year Mapping Anniversary Remaster: https://beatsaver.com/beatmap/aa5c',uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:127,duration:208,songName:"BAAM",songSubName:"MOMOLAND",songAuthorName:"Bloodcloak",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:2222,upvotes:709,downvotes:12,score:.9167},uploaded:"2019-05-26T01:22:06Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d54ad194fe09598964d1c065887e52f2c4248b30",key:"4f0f",state:"Published",createdAt:"2019-05-26T01:22:06Z",sageScore:5,diffs:[{njs:10,offset:0,notes:576,bombs:0,obstacles:68,nps:2.91,length:419,characteristic:"Standard",difficulty:"Hard",events:1357,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.953,paritySummary:{errors:64,warns:46,resets:0}},{njs:12,offset:0,notes:783,bombs:0,obstacles:61,nps:3.955,length:419,characteristic:"Standard",difficulty:"Expert",events:1350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.953,paritySummary:{errors:83,warns:69,resets:0}},{njs:12,offset:0,notes:819,bombs:0,obstacles:67,nps:4.137,length:419,characteristic:"Standard",difficulty:"ExpertPlus",events:1350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.953,paritySummary:{errors:89,warns:52,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d54ad194fe09598964d1c065887e52f2c4248b30.zip",coverURL:"https://cdn.beatsaver.com/d54ad194fe09598964d1c065887e52f2c4248b30.jpg",previewURL:"https://cdn.beatsaver.com/d54ad194fe09598964d1c065887e52f2c4248b30.mp3"}],createdAt:"2019-05-26T01:22:06Z",updatedAt:"2019-05-26T01:22:06Z",lastPublishedAt:"2019-05-26T01:22:06Z"},{id:"3714",name:"To The Stars - Braken (Monstercat Release)",description:"https://www.youtube.com/watch?v=105NIrAR4a4\r\nExpert+ only",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:175,duration:202,songName:"To The Stars",songSubName:"Braken",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:2451,upvotes:958,downvotes:23,score:.9167},uploaded:"2019-02-17T12:03:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"58fd2a28e6c3d6862084da1ec1b92c99090c5cd5",key:"3714",state:"Published",createdAt:"2019-02-17T12:03:07Z",sageScore:5,diffs:[{njs:14,offset:0,notes:996,bombs:0,obstacles:33,nps:5.34,length:544,characteristic:"Standard",difficulty:"ExpertPlus",events:2145,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.514,paritySummary:{errors:16,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/58fd2a28e6c3d6862084da1ec1b92c99090c5cd5.zip",coverURL:"https://cdn.beatsaver.com/58fd2a28e6c3d6862084da1ec1b92c99090c5cd5.jpg",previewURL:"https://cdn.beatsaver.com/58fd2a28e6c3d6862084da1ec1b92c99090c5cd5.mp3"}],createdAt:"2019-02-17T12:03:07Z",updatedAt:"2019-02-17T12:03:07Z",lastPublishedAt:"2019-02-17T12:03:07Z"},{id:"645a",name:"1788-L - A B Y S S",description:"",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:177,duration:179,songName:"A B Y S S",songSubName:"",songAuthorName:"1788-L",levelAuthorName:"Rustic"},stats:{plays:0,downloads:1417,upvotes:981,downvotes:24,score:.9167},uploaded:"2019-09-18T18:07:03.444Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5f85d131f63c7415967ba4414abef741686ece9c",key:"645a",state:"Published",createdAt:"2019-09-18T18:07:03.444Z",sageScore:6,diffs:[{njs:20,offset:0,notes:553,bombs:0,obstacles:3106,nps:3.224,length:506,characteristic:"Standard",difficulty:"ExpertPlus",events:9089,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:171.525,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5f85d131f63c7415967ba4414abef741686ece9c.zip",coverURL:"https://cdn.beatsaver.com/5f85d131f63c7415967ba4414abef741686ece9c.jpg",previewURL:"https://cdn.beatsaver.com/5f85d131f63c7415967ba4414abef741686ece9c.mp3"}],createdAt:"2019-09-18T18:07:03.444Z",updatedAt:"2019-09-18T18:07:03.444Z",lastPublishedAt:"2019-09-18T18:07:03.444Z"},{id:"5bc1",name:"Propaganda - Muse",description:"Please note that this track will get blocked automatically on YouTube.\n\nExpert Playthrough : https://vimeo.com/353093204",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:190,duration:182,songName:"Propaganda",songSubName:"",songAuthorName:"Muse",levelAuthorName:"NovaShaft"},stats:{plays:0,downloads:1728,upvotes:660,downvotes:10,score:.9167},uploaded:"2019-08-10T12:59:56.399Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"99738852493b819152a7651583f40b63bba70188",key:"5bc1",state:"Published",createdAt:"2019-08-10T12:59:56.399Z",sageScore:5,diffs:[{njs:11,offset:0,notes:366,bombs:0,obstacles:23,nps:2.093,length:553.75,characteristic:"Standard",difficulty:"Normal",events:900,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.868,paritySummary:{errors:32,warns:6,resets:0}},{njs:12,offset:0,notes:492,bombs:0,obstacles:24,nps:2.814,length:553.75,characteristic:"Standard",difficulty:"Hard",events:900,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.868,paritySummary:{errors:15,warns:8,resets:0}},{njs:14,offset:0,notes:620,bombs:0,obstacles:26,nps:3.546,length:553.75,characteristic:"Standard",difficulty:"Expert",events:900,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.868,paritySummary:{errors:19,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/99738852493b819152a7651583f40b63bba70188.zip",coverURL:"https://cdn.beatsaver.com/99738852493b819152a7651583f40b63bba70188.jpg",previewURL:"https://cdn.beatsaver.com/99738852493b819152a7651583f40b63bba70188.mp3"}],createdAt:"2019-08-10T12:59:56.399Z",updatedAt:"2019-08-10T12:59:56.399Z",lastPublishedAt:"2019-08-10T12:59:56.399Z"},{id:"f003",name:"Calliope Mori - Excuse My Rudeness, But Could You Please RIP?",description:"Expert+ Preview: https://www.youtube.com/watch?v=XCZMtdvz91g\n\nYo, fellow Dead Beats, this has been stuck in my head ever since it came out. The original songs by Calliope are absolute fire. The others in HoloMyth as well as the rest of Hololive are amazing and you should expect more maps from this realm. \n\nI totally did not fall into the rabbit hole... If you have any issues with that then, 失礼しますが、RIP♡\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725 !",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:124,duration:186,songName:"Excuse My Rudeness, But Could You Please RIP?",songSubName:"",songAuthorName:"Calliope Mori",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:6752,upvotes:1803,downvotes:66,score:.9166},uploaded:"2020-09-21T22:48:02.152Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4b2a227ddb923ce3e6a3060530037014966037e2",key:"f003",state:"Published",createdAt:"2020-09-21T22:48:02.152Z",sageScore:2,diffs:[{njs:12,offset:.4,notes:361,bombs:0,obstacles:139,nps:1.992,length:374.5,characteristic:"Standard",difficulty:"Normal",events:2716,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.21,paritySummary:{errors:3,warns:0,resets:0}},{njs:12,offset:.4,notes:652,bombs:0,obstacles:105,nps:3.598,length:374.5,characteristic:"Standard",difficulty:"Hard",events:2716,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.21,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.2,notes:948,bombs:0,obstacles:72,nps:5.232,length:374.5,characteristic:"Standard",difficulty:"Expert",events:2716,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.21,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.4,notes:1105,bombs:0,obstacles:60,nps:6.098,length:374.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2716,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.21,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4b2a227ddb923ce3e6a3060530037014966037e2.zip",coverURL:"https://cdn.beatsaver.com/4b2a227ddb923ce3e6a3060530037014966037e2.jpg",previewURL:"https://cdn.beatsaver.com/4b2a227ddb923ce3e6a3060530037014966037e2.mp3"}],createdAt:"2020-09-21T22:48:02.152Z",updatedAt:"2020-09-21T22:48:02.152Z",lastPublishedAt:"2020-09-21T22:48:02.152Z"},{id:"a90a",name:"[TheFatRat Pack] Windfall - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nWindfall Stats:\nExpert+ - 1031 Notes | 4.53 NPS\nExpert - 826 Notes | 3.63 NPS\nHard - 683 Notes | 3.00 NPS\nNormal - 421 Notes | 1.85 NPS\nEasy - 277 Notes | 1.22 NPS\n\nRoughly 9 Hours of work\nGameplay: https://youtu.be/RW5Y6GifdDA\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:102,duration:227,songName:"Windfall",songSubName:"",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:4210,upvotes:1147,downvotes:32,score:.9166},uploaded:"2020-05-22T13:28:49.981Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"29677eb4f5cb04e2698b16923eee804abce90f76",key:"a90a",state:"Published",createdAt:"2020-05-22T13:28:49.981Z",sageScore:5,diffs:[{njs:10,offset:1,notes:277,bombs:0,obstacles:39,nps:1.28,length:368,characteristic:"Standard",difficulty:"Easy",events:4238,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.471,paritySummary:{errors:40,warns:28,resets:0}},{njs:10,offset:1,notes:421,bombs:0,obstacles:41,nps:1.945,length:368,characteristic:"Standard",difficulty:"Normal",events:4238,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.471,paritySummary:{errors:59,warns:27,resets:0}},{njs:12,offset:.25,notes:683,bombs:0,obstacles:66,nps:3.096,length:375,characteristic:"Standard",difficulty:"Hard",events:4238,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.588,paritySummary:{errors:3,warns:0,resets:0}},{njs:14,offset:-.25,notes:826,bombs:0,obstacles:67,nps:3.735,length:376,characteristic:"Standard",difficulty:"Expert",events:4240,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.176,paritySummary:{errors:2,warns:0,resets:0}},{njs:18,offset:.325,notes:1031,bombs:0,obstacles:65,nps:4.618,length:379.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4238,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.235,paritySummary:{errors:0,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/29677eb4f5cb04e2698b16923eee804abce90f76.zip",coverURL:"https://cdn.beatsaver.com/29677eb4f5cb04e2698b16923eee804abce90f76.jpg",previewURL:"https://cdn.beatsaver.com/29677eb4f5cb04e2698b16923eee804abce90f76.mp3"}],createdAt:"2020-05-22T13:28:49.981Z",updatedAt:"2020-05-22T13:28:49.981Z",lastPublishedAt:"2020-05-22T13:28:49.981Z"},{id:"5270",name:"Gurenge - LiSA",description:"Kimetsuno Yaiba OP\r\n\r\nPreview : https://youtu.be/6AznmNIg68Y\r\nNJS : 14(Expert), 13(Hard)",uploader:{id:31044,name:"digiracko",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ed32",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ed32?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:238,songName:"Gurenge",songSubName:"LiSA",songAuthorName:"DigiRacko",levelAuthorName:"digiracko"},stats:{plays:0,downloads:5415,upvotes:3174,downvotes:145,score:.9166},uploaded:"2019-06-09T00:26:20Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9c71e86622967891482bf18c536ff3d03eb5af3f",key:"5270",state:"Published",createdAt:"2019-06-09T00:26:20Z",sageScore:4,diffs:[{njs:13,offset:1,notes:703,bombs:0,obstacles:0,nps:3.045,length:519.5,characteristic:"Standard",difficulty:"Hard",events:592,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.889,paritySummary:{errors:43,warns:33,resets:0}},{njs:14,offset:1,notes:974,bombs:0,obstacles:0,nps:4.218,length:519.5,characteristic:"Standard",difficulty:"Expert",events:593,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.889,paritySummary:{errors:79,warns:66,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9c71e86622967891482bf18c536ff3d03eb5af3f.zip",coverURL:"https://cdn.beatsaver.com/9c71e86622967891482bf18c536ff3d03eb5af3f.jpg",previewURL:"https://cdn.beatsaver.com/9c71e86622967891482bf18c536ff3d03eb5af3f.mp3"}],createdAt:"2019-06-09T00:26:20Z",updatedAt:"2019-06-09T00:26:20Z",lastPublishedAt:"2019-06-09T00:26:20Z"},{id:"2394",name:"Are You Gonna Be My Girl? - Jet",description:"All 5 difficulties. Had a lot of fun with this one :)\r\nAll charts down to normal are uniquely built.\r\n\r\nExpert+ Playthrough: https://youtu.be/5FhrP79pfVc",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:105,duration:218,songName:"Are you gonna be my Girl",songSubName:"Jet",songAuthorName:"Freeek",levelAuthorName:"freeek"},stats:{plays:0,downloads:5652,upvotes:2217,downvotes:89,score:.9166},uploaded:"2018-12-03T18:23:49Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"399b2bd6630fe3dcc7631f89ae391e6684fd6a07",key:"2394",state:"Published",createdAt:"2018-12-03T18:23:49Z",sageScore:7,diffs:[{njs:10,offset:0,notes:286,bombs:0,obstacles:36,nps:1.472,length:340,characteristic:"Standard",difficulty:"Easy",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:10,warns:1,resets:0}},{njs:10,offset:0,notes:369,bombs:0,obstacles:29,nps:1.899,length:340,characteristic:"Standard",difficulty:"Normal",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:36,warns:31,resets:0}},{njs:10,offset:0,notes:510,bombs:0,obstacles:25,nps:2.625,length:340,characteristic:"Standard",difficulty:"Hard",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:45,warns:49,resets:0}},{njs:12,offset:0,notes:757,bombs:0,obstacles:17,nps:3.896,length:340,characteristic:"Standard",difficulty:"Expert",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:37,warns:43,resets:0}},{njs:15,offset:0,notes:927,bombs:0,obstacles:13,nps:4.771,length:340,characteristic:"Standard",difficulty:"ExpertPlus",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:42,warns:65,resets:0}}],downloadURL:"https://cdn.beatsaver.com/399b2bd6630fe3dcc7631f89ae391e6684fd6a07.zip",coverURL:"https://cdn.beatsaver.com/399b2bd6630fe3dcc7631f89ae391e6684fd6a07.jpg",previewURL:"https://cdn.beatsaver.com/399b2bd6630fe3dcc7631f89ae391e6684fd6a07.mp3"}],createdAt:"2018-12-03T18:23:49Z",updatedAt:"2018-12-03T18:23:49Z",lastPublishedAt:"2018-12-03T18:23:49Z"},{id:"451b",name:"Orion - Getsix",description:"Get your hunting instinct ready; let’s hunt some bloqs to this dynamic and emotional trip of a track. Think you have what it takes to keep up?\r\n\r\nHUGE thanks to Getsix for taking the time to make a new specific edit and mix of the song for this map! The edits include shortened intro, shorter synth lead parts and louder tribal drums, all for a better Beat Saber experience.\r\n\r\nPreview video:\r\nhttps://youtu.be/s6st6WoBd7k\r\n\r\nBPM: 130\r\nDuration: 3:58\r\nEasy, Normal, Hard, Expert and Expert+ difficulties.\r\n\r\nEasy: 253, 1 obstacles, 2 mines\r\nNormal: 365 notes, 1 obstacles, 4 mines\r\nHard: 556 notes, 1 obstacles, 8 mines\r\nExpert: 979 notes, 1 obstacles, 8 mines\r\nExpert+: 1048 notes, 1 obstacles, 8 mines\r\n\r\nThanks to Redmagi, Malakite and Helencarnate for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:130,duration:231,songName:"Orion (Beat Saber Edit)",songSubName:"Getsix",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:3346,upvotes:1205,downvotes:35,score:.9165},uploaded:"2019-04-12T05:54:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c86e3d35feeb08e4569dabe2389558ba40fa5bf7",key:"451b",state:"Published",createdAt:"2019-04-12T05:54:28Z",sageScore:7,diffs:[{njs:9,offset:0,notes:253,bombs:2,obstacles:1,nps:1.133,length:484,characteristic:"Standard",difficulty:"Easy",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.385,paritySummary:{errors:80,warns:17,resets:0}},{njs:10,offset:1,notes:365,bombs:4,obstacles:1,nps:1.634,length:484,characteristic:"Standard",difficulty:"Normal",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.385,paritySummary:{errors:74,warns:41,resets:0}},{njs:14,offset:0,notes:556,bombs:8,obstacles:1,nps:2.494,length:483,characteristic:"Standard",difficulty:"Hard",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.923,paritySummary:{errors:75,warns:61,resets:4}},{njs:17,offset:0,notes:979,bombs:8,obstacles:1,nps:4.392,length:483,characteristic:"Standard",difficulty:"Expert",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.923,paritySummary:{errors:76,warns:108,resets:2}},{njs:19,offset:0,notes:1048,bombs:8,obstacles:1,nps:4.701,length:483,characteristic:"Standard",difficulty:"ExpertPlus",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.923,paritySummary:{errors:97,warns:112,resets:2}}],downloadURL:"https://cdn.beatsaver.com/c86e3d35feeb08e4569dabe2389558ba40fa5bf7.zip",coverURL:"https://cdn.beatsaver.com/c86e3d35feeb08e4569dabe2389558ba40fa5bf7.jpg",previewURL:"https://cdn.beatsaver.com/c86e3d35feeb08e4569dabe2389558ba40fa5bf7.mp3"}],createdAt:"2019-04-12T05:54:28Z",updatedAt:"2019-04-12T05:54:28Z",lastPublishedAt:"2019-04-12T05:54:28Z"},{id:"c209",name:"[Alphabeat - Pegboard Nerds Pack] Pegboard Nerds - Luigi's Mansion",description:"Part of the Pegboard Nerds Music Pack - Presented by the Alphabeat Mapping Group.\n\nAlphabeat is a mapping group that currently consists of 6 members, 4 of which have made this pack. This Pegboard Nerds pack is brought to you by Timeweaver, Rayman, KuritsaDVR & FireStrike!\n\nCheck out the other mappers' profiles here:\nTimeweaver - https://beatsaver.com/uploader/5d47d586c5301900060b2f6c\nFirestrike - https://beatsaver.com/uploader/5cff0b7698cc5a672c85479f\nKuritsaDVR - https://beatsaver.com/uploader/5cff0b7698cc5a672c8537ef\n\nThis map uses a custom platform made by Rayman (me!)! Download it here: https://modelsaber.com/Platforms/?id=1594988870\n\nAll songs included in this pack:\n- Gunslinga (Mapped by Rayman)\n- Coffins (Mapped by Rayman)\n- Superstar (Mapped by Timeweaver & Firestrike)\n- Razor Sharp (Mapped by Firestrike)\n- Luigi’s Mansion (Mapped by Rayman)\n- Try This (Mapped by Timeweaver & Firestrike)\n- Swamp Thing (Mapped by Rayman & KuritsaDVR)\n- Exterminate (Mapped by Timeweaver)\n- Disconnected (Mapped by Timeweaver & Firestrike)\n- Here it Comes (Mapped by KuritsaDVR & Timeweaver)\n\nGet the playlist here:\nhttps://bsaber.com/pegboard-nerds-pack/\n\nView the trailer here:\nhttps://youtu.be/b0fU5Rv_Zf0\n\nIncludes\n- 5 Standard Difficulties\n- 1 One Saber Difficulty\n- 1 360 Degree Difficulty\n- 1 90 Degree Difficulty",uploader:{id:4284994,name:"rayman9515",uniqueSet:!0,hash:"5dc6edac6dea0b0006c18486",avatar:"https://cdn.beatsaver.com/avatar/439017353892724736.png",type:"DISCORD"},metadata:{bpm:99,duration:229,songName:"Luigi's Mansion",songSubName:"",songAuthorName:"Pegboard Nerds",levelAuthorName:"Rayman9515"},stats:{plays:0,downloads:2446,upvotes:797,downvotes:16,score:.9164},uploaded:"2020-07-17T13:00:46.645Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e7cdcc86e136da49cce9747233131e819cabe951",key:"c209",state:"Published",createdAt:"2020-07-17T13:00:46.645Z",sageScore:4,diffs:[{njs:11,offset:.2,notes:332,bombs:0,obstacles:45,nps:1.491,length:365.803,characteristic:"Standard",difficulty:"Easy",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:10,warns:1,resets:0}},{njs:11,offset:.2,notes:471,bombs:0,obstacles:68,nps:2.115,length:365.803,characteristic:"Standard",difficulty:"Normal",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:20,warns:2,resets:0}},{njs:13,offset:0,notes:682,bombs:4,obstacles:67,nps:3.063,length:365.803,characteristic:"Standard",difficulty:"Hard",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:6,warns:0,resets:0}},{njs:16,offset:.5,notes:877,bombs:0,obstacles:71,nps:3.939,length:365.803,characteristic:"Standard",difficulty:"Expert",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:1184,bombs:0,obstacles:111,nps:5.318,length:365.803,characteristic:"Standard",difficulty:"ExpertPlus",events:3637,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:825,bombs:35,obstacles:136,nps:3.705,length:365.803,characteristic:"OneSaber",difficulty:"ExpertPlus",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:2,warns:24,resets:0}},{njs:11,offset:.2,notes:471,bombs:0,obstacles:63,nps:2.115,length:365.803,characteristic:"90Degree",difficulty:"Normal",events:3875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:20,warns:2,resets:0}},{njs:11,offset:.2,notes:471,bombs:0,obstacles:63,nps:2.115,length:365.803,characteristic:"360Degree",difficulty:"Normal",events:3875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:20,warns:2,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e7cdcc86e136da49cce9747233131e819cabe951.zip",coverURL:"https://cdn.beatsaver.com/e7cdcc86e136da49cce9747233131e819cabe951.jpg",previewURL:"https://cdn.beatsaver.com/e7cdcc86e136da49cce9747233131e819cabe951.mp3"}],createdAt:"2020-07-17T13:00:46.645Z",updatedAt:"2020-07-17T13:00:46.645Z",lastPublishedAt:"2020-07-17T13:00:46.645Z"},{id:"d8",name:"Undertale - Megalovania (Cement City Remix) v.2",description:"I uploaded this song earlier today, but unfortunately not realizing an issue that I had made with the placement of 2 blocks that were near impossible to hit. Fixed and re-uploaded!\r\n\r\nDue to issues with EditSaber, I was unable to create any difficulties beyond Expert, as any changes made on one difficulty would carry over to the others.\r\n\r\nAlso this is my first beat map. Go easy. ;)",uploader:{id:48522,name:"kryptikos",uniqueSet:!0,hash:"5cff0b7298cc5a672c84eab4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84eab4?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:164,songName:"Megalovania (Cement City Remix)",songSubName:"Undertale",songAuthorName:"Kryptikos",levelAuthorName:"kryptikos"},stats:{plays:0,downloads:4306,upvotes:3e3,downvotes:135,score:.9164},uploaded:"2018-05-17T21:38:37Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2ee2deee264648432035f4abefa69b9dac86bd95",key:"d8",state:"Published",createdAt:"2018-05-17T21:38:37Z",sageScore:5,diffs:[{njs:10,offset:0,notes:566,bombs:32,obstacles:167,nps:3.631,length:327.313,characteristic:"Standard",difficulty:"Expert",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.863,paritySummary:{errors:82,warns:57,resets:2}}],downloadURL:"https://cdn.beatsaver.com/2ee2deee264648432035f4abefa69b9dac86bd95.zip",coverURL:"https://cdn.beatsaver.com/2ee2deee264648432035f4abefa69b9dac86bd95.jpg",previewURL:"https://cdn.beatsaver.com/2ee2deee264648432035f4abefa69b9dac86bd95.mp3"}],createdAt:"2018-05-17T21:38:37Z",updatedAt:"2018-05-17T21:38:37Z",lastPublishedAt:"2018-05-17T21:38:37Z"},{id:"1a0be",name:"[Electro Swing Pack] Caravan Palace - Wonderland",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/uFiLQLooDpQ\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:104,duration:188,songName:"Wonderland",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:14872,upvotes:794,downvotes:16,score:.9163},uploaded:"2021-07-08T15:26:38.489Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9752f2de4dd434c589ced6d89358b1fda6902d3f",key:"1a0be",state:"Published",createdAt:"2021-07-08T15:26:38.489Z",sageScore:3,diffs:[{njs:16,offset:.25,notes:671,bombs:0,obstacles:0,nps:3.779,length:307.75,characteristic:"Standard",difficulty:"Expert",events:1588,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.548,paritySummary:{errors:0,warns:0,resets:0}},{njs:21,offset:0,notes:837,bombs:0,obstacles:10,nps:4.714,length:307.75,characteristic:"Standard",difficulty:"ExpertPlus",events:1588,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.548,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9752f2de4dd434c589ced6d89358b1fda6902d3f.zip",coverURL:"https://cdn.beatsaver.com/9752f2de4dd434c589ced6d89358b1fda6902d3f.jpg",previewURL:"https://cdn.beatsaver.com/9752f2de4dd434c589ced6d89358b1fda6902d3f.mp3"}],createdAt:"2021-07-08T15:26:38.489Z",updatedAt:"2021-07-08T15:26:38.489Z",lastPublishedAt:"2021-07-08T15:26:38.489Z"},{id:"d191",name:"Seven Lions - Silent Skies (ft. Karra) | [Chroma RGB]",description:"Was only a lightshow at first but felt like mapping it too. \nSo here is Hard, Expert and Expert+ with my best lightshow so far (imo).\nhope you like it.\n\ntalk shit on discord: nitronik.exe#7974\n\nlightshow preview: https://www.youtube.com/watch?v=vpi-VG_nZg8&t=19s",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:140,duration:234,songName:"Silent Skies",songSubName:"(ft. Karra)",songAuthorName:"Seven Lions",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:4892,upvotes:725,downvotes:13,score:.9163},uploaded:"2020-08-08T18:33:55.424Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8434f521be275ae476b82c00201570ece88b395f",key:"d191",state:"Published",createdAt:"2020-08-08T18:33:55.424Z",sageScore:7,diffs:[{njs:12,offset:1,notes:491,bombs:6,obstacles:59,nps:2.238,length:512,characteristic:"Standard",difficulty:"Hard",events:8199,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.429,paritySummary:{errors:0,warns:0,resets:2}},{njs:16,offset:0,notes:813,bombs:6,obstacles:33,nps:3.704,length:512.083,characteristic:"Standard",difficulty:"Expert",events:8199,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.464,paritySummary:{errors:0,warns:0,resets:2}},{njs:20,offset:-.5,notes:1113,bombs:6,obstacles:32,nps:5.071,length:512.125,characteristic:"Standard",difficulty:"ExpertPlus",events:8199,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.482,paritySummary:{errors:0,warns:0,resets:2}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:8199,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8434f521be275ae476b82c00201570ece88b395f.zip",coverURL:"https://cdn.beatsaver.com/8434f521be275ae476b82c00201570ece88b395f.jpg",previewURL:"https://cdn.beatsaver.com/8434f521be275ae476b82c00201570ece88b395f.mp3"}],createdAt:"2020-08-08T18:33:55.424Z",updatedAt:"2020-08-08T18:33:55.424Z",lastPublishedAt:"2020-08-08T18:33:55.424Z"},{id:"6b96",name:"COALAMODE. - Nanairo Symphony [Your Lie in April Opening 2]",description:"You think it reached her?\n\nBPM 155 | Length 2:01\nExpert\nHard\nNormal\n\nplease enjoy\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:155,duration:122,songName:"Nanairo Symphony",songSubName:"",songAuthorName:"COALAMODE.",levelAuthorName:"ETAN"},stats:{plays:0,downloads:2462,upvotes:602,downvotes:8,score:.9163},uploaded:"2019-10-22T23:22:04.194Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cc3b824dcb605eb76fce944623758578094cd77d",key:"6b96",state:"Published",createdAt:"2019-10-22T23:22:04.194Z",sageScore:6,diffs:[{njs:11,offset:0,notes:207,bombs:0,obstacles:1,nps:1.857,length:288,characteristic:"Standard",difficulty:"Normal",events:3796,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:111.484,paritySummary:{errors:2,warns:2,resets:0}},{njs:12,offset:1,notes:282,bombs:0,obstacles:1,nps:2.53,length:288,characteristic:"Standard",difficulty:"Hard",events:3796,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:111.484,paritySummary:{errors:0,warns:1,resets:0}},{njs:16,offset:.5,notes:411,bombs:0,obstacles:1,nps:3.687,length:288,characteristic:"Standard",difficulty:"Expert",events:3796,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:111.484,paritySummary:{errors:4,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cc3b824dcb605eb76fce944623758578094cd77d.zip",coverURL:"https://cdn.beatsaver.com/cc3b824dcb605eb76fce944623758578094cd77d.jpg",previewURL:"https://cdn.beatsaver.com/cc3b824dcb605eb76fce944623758578094cd77d.mp3"}],createdAt:"2019-10-22T23:22:04.194Z",updatedAt:"2019-10-22T23:22:04.194Z",lastPublishedAt:"2019-10-22T23:22:04.194Z"},{id:"42de",name:"Kamikaze - WALK THE MOON",description:"An older map that I have no idea why I never published. So here it is!",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:155,duration:198,songName:"Kamikaze",songSubName:"WALK THE MOON",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:3218,upvotes:950,downvotes:23,score:.9163},uploaded:"2019-04-01T22:12:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"63d2d5920e6676f63bf997ae606b6d1590cd8c8d",key:"42de",state:"Published",createdAt:"2019-04-01T22:12:10Z",sageScore:5,diffs:[{njs:10,offset:0,notes:231,bombs:0,obstacles:8,nps:1.203,length:496,characteristic:"Standard",difficulty:"Easy",events:266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:71,warns:20,resets:0}},{njs:10,offset:0,notes:259,bombs:0,obstacles:8,nps:1.349,length:496,characteristic:"Standard",difficulty:"Normal",events:266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:39,warns:23,resets:0}},{njs:10,offset:0,notes:442,bombs:0,obstacles:8,nps:2.302,length:496,characteristic:"Standard",difficulty:"Hard",events:266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:84,warns:55,resets:0}},{njs:12,offset:0,notes:487,bombs:0,obstacles:8,nps:2.536,length:496,characteristic:"Standard",difficulty:"Expert",events:266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:87,warns:68,resets:0}}],downloadURL:"https://cdn.beatsaver.com/63d2d5920e6676f63bf997ae606b6d1590cd8c8d.zip",coverURL:"https://cdn.beatsaver.com/63d2d5920e6676f63bf997ae606b6d1590cd8c8d.jpg",previewURL:"https://cdn.beatsaver.com/63d2d5920e6676f63bf997ae606b6d1590cd8c8d.mp3"}],createdAt:"2019-04-01T22:12:10Z",updatedAt:"2019-04-01T22:12:10Z",lastPublishedAt:"2019-04-01T22:12:10Z"},{id:"18a6",name:"DJ Fresh - Louder (Doctor P & Flux Pavilion Remix)",description:"Expert / Hard / Normal\r\nhttps://www.youtube.com/watch?v=rfR4cbnB7T8",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:128,songName:"Louder (Doctor P & Flux Pavilion Remix)",songSubName:"DJ Fresh",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:2475,upvotes:1159,downvotes:33,score:.9163},uploaded:"2018-10-04T12:37:14Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6b2cdc3638c97881753d83308c13eda1a490f0b2",key:"18a6",state:"Published",createdAt:"2018-10-04T12:37:14Z",sageScore:6,diffs:[{njs:10,offset:0,notes:249,bombs:0,obstacles:1,nps:2.06,length:282,characteristic:"Standard",difficulty:"Normal",events:2076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:120.857,paritySummary:{errors:10,warns:27,resets:0}},{njs:12,offset:0,notes:305,bombs:0,obstacles:2,nps:2.524,length:282,characteristic:"Standard",difficulty:"Hard",events:2076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:120.857,paritySummary:{errors:10,warns:39,resets:0}},{njs:14,offset:0,notes:380,bombs:0,obstacles:14,nps:3.144,length:282,characteristic:"Standard",difficulty:"Expert",events:2364,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:120.857,paritySummary:{errors:11,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6b2cdc3638c97881753d83308c13eda1a490f0b2.zip",coverURL:"https://cdn.beatsaver.com/6b2cdc3638c97881753d83308c13eda1a490f0b2.jpg",previewURL:"https://cdn.beatsaver.com/6b2cdc3638c97881753d83308c13eda1a490f0b2.mp3"}],createdAt:"2018-10-04T12:37:14Z",updatedAt:"2018-10-04T12:37:14Z",lastPublishedAt:"2018-10-04T12:37:14Z"},{id:"2529",name:"Back From The Dead - Skillet",description:"Song: Back From The Dead - Skillet\r\nMapper: KuritsaDBS\r\nAvailable difficulties: Expert\r\nPreview: Not available",uploader:{id:23150,name:"kuritsadbs",uniqueSet:!0,hash:"5cff0b7698cc5a672c8537ef",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8537ef?d=retro",type:"SIMPLE"},metadata:{bpm:162,duration:215,songName:"Back From The Dead",songSubName:"Skillet",songAuthorName:"KuritsaDBS",levelAuthorName:"KuritsaDBS"},stats:{plays:0,downloads:844,upvotes:601,downvotes:8,score:.9162},uploaded:"2018-12-11T14:24:33Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"baa01d357ac94cdca55972aa6c925709e4595850",key:"2529",state:"Published",createdAt:"2018-12-11T14:24:33Z",sageScore:4,diffs:[{njs:14,offset:0,notes:593,bombs:44,obstacles:107,nps:2.911,length:550,characteristic:"Standard",difficulty:"Expert",events:754,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.704,paritySummary:{errors:33,warns:51,resets:0}}],downloadURL:"https://cdn.beatsaver.com/baa01d357ac94cdca55972aa6c925709e4595850.zip",coverURL:"https://cdn.beatsaver.com/baa01d357ac94cdca55972aa6c925709e4595850.jpg",previewURL:"https://cdn.beatsaver.com/baa01d357ac94cdca55972aa6c925709e4595850.mp3"}],createdAt:"2018-12-11T14:24:33Z",updatedAt:"2018-12-11T14:24:33Z",lastPublishedAt:"2018-12-11T14:24:33Z"},{id:"1897",name:"Song of the Ancients / Fate - NieR Gestalt & Replicant Original Soundtrack",description:"\"It's like I just found something special. Something very special.\"\r\n\r\n128BPM / 4:52 Runtime\r\nHard / 758 Notes\r\nExpert / 994 Notes\r\nExpert+ / 1108 Notes\r\n\r\nGameplay:\r\nhttps://youtu.be/0r-UkakLCwU\r\nListen to the song:\r\nhttps://www.youtube.com/watch?v=ady--PNMsfI\r\n\r\nI thought the amazing game, NieR Gestalt/Replicant, needed an amazing beat map to go with it. This song was a perfect fit :)\r\n[UPDATE]\r\nSomebody pointed out there was a mapping error during the acoustic guitar section. It's fixed.",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:128,duration:292,songName:"Song of the Ancients / Fate",songSubName:"NieR OST",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:1672,upvotes:860,downvotes:19,score:.9162},uploaded:"2018-10-04T00:33:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4638d271b9974ec5bb851bb8629976078e781c97",key:"1897",state:"Published",createdAt:"2018-10-04T00:33:41Z",sageScore:6,diffs:[{njs:10,offset:0,notes:758,bombs:0,obstacles:16,nps:2.622,length:616,characteristic:"Standard",difficulty:"Hard",events:3742,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.75,paritySummary:{errors:81,warns:73,resets:0}},{njs:12,offset:0,notes:994,bombs:8,obstacles:32,nps:3.439,length:616,characteristic:"Standard",difficulty:"Expert",events:3742,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.75,paritySummary:{errors:55,warns:40,resets:0}},{njs:12,offset:0,notes:1108,bombs:8,obstacles:32,nps:3.833,length:616,characteristic:"Standard",difficulty:"ExpertPlus",events:3742,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.75,paritySummary:{errors:65,warns:47,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4638d271b9974ec5bb851bb8629976078e781c97.zip",coverURL:"https://cdn.beatsaver.com/4638d271b9974ec5bb851bb8629976078e781c97.jpg",previewURL:"https://cdn.beatsaver.com/4638d271b9974ec5bb851bb8629976078e781c97.mp3"}],createdAt:"2018-10-04T00:33:41Z",updatedAt:"2018-10-04T00:33:41Z",lastPublishedAt:"2018-10-04T00:33:41Z"},{id:"9a36",name:"[Tokyo Machine Pack] Tokyo Machine - PLAY",description:"4/6\nPart of the Tokyo Machine Pack, a collab between Firestrike, Cyansnow and I.\nMap by me, lights by FireStrike.\n\nFireStrike's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c85479f\nCyanSnow's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c8543ac\n\nPlaylist: https://bsaber.com/tokyo-machine-pack/\n\nCheck out the trailer for the pack here: https://www.youtube.com/watch?v=lStPUnecsD8",uploader:{id:57657,name:"pixelguymm",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541a8",avatar:"https://cdn.beatsaver.com/avatar/434386941547511818.png",type:"DISCORD"},metadata:{bpm:128,duration:185,songName:"PLAY",songSubName:"",songAuthorName:"Tokyo Machine",levelAuthorName:"FireStrike & Pixel"},stats:{plays:0,downloads:1813,upvotes:598,downvotes:8,score:.9161},uploaded:"2020-04-12T18:07:52.070Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a9e447b8ea158c2b68f546935f704b270277f7f8",key:"9a36",state:"Published",createdAt:"2020-04-12T18:07:52.070Z",sageScore:5,diffs:[{njs:16,offset:-.3,notes:754,bombs:43,obstacles:0,nps:4.189,length:384,characteristic:"Standard",difficulty:"ExpertPlus",events:4444,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a9e447b8ea158c2b68f546935f704b270277f7f8.zip",coverURL:"https://cdn.beatsaver.com/a9e447b8ea158c2b68f546935f704b270277f7f8.jpg",previewURL:"https://cdn.beatsaver.com/a9e447b8ea158c2b68f546935f704b270277f7f8.mp3"}],createdAt:"2020-04-12T18:07:52.070Z",updatedAt:"2020-04-12T18:07:52.070Z",lastPublishedAt:"2020-04-12T18:07:52.070Z"},{id:"8108",name:"[Noodlegames] Ephixa - Wisdom (Zelda's Lullaby)",description:"The Ramen Noodle group is here to bring you a map pack full of our favorite video game soundtracks and game-inspired music! Ephixa's wonderful remix of Zelda's Lullaby is iconic, and a fantastic way to honor the beautiful rhythms in Ocarina of Time.",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:140,duration:241,songName:"Wisdom (Zelda's Lullaby Link to the Future) ",songSubName:"[feat. Will & Tim] [From Legend of Zelda: Ocarina of Time]",songAuthorName:"Ephixa",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:2384,upvotes:696,downvotes:12,score:.9161},uploaded:"2020-01-24T23:15:35.818Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a603656eb8cdadcb6eda85ef408902c1f6125a8f",key:"8108",state:"Published",createdAt:"2020-01-24T23:15:35.818Z",sageScore:3,diffs:[{njs:11,offset:.25,notes:331,bombs:0,obstacles:28,nps:1.43,length:540.031,characteristic:"Standard",difficulty:"Normal",events:13016,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.442,paritySummary:{errors:77,warns:4,resets:0}},{njs:13,offset:.25,notes:560,bombs:16,obstacles:26,nps:2.42,length:540.031,characteristic:"Standard",difficulty:"Hard",events:13016,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.442,paritySummary:{errors:1,warns:1,resets:3}},{njs:16,offset:0,notes:769,bombs:24,obstacles:26,nps:3.323,length:540.031,characteristic:"Standard",difficulty:"Expert",events:13016,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.442,paritySummary:{errors:1,warns:0,resets:3}},{njs:19,offset:-.25,notes:930,bombs:65,obstacles:26,nps:4.018,length:540.031,characteristic:"Standard",difficulty:"ExpertPlus",events:13016,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.442,paritySummary:{errors:1,warns:0,resets:13}}],downloadURL:"https://cdn.beatsaver.com/a603656eb8cdadcb6eda85ef408902c1f6125a8f.zip",coverURL:"https://cdn.beatsaver.com/a603656eb8cdadcb6eda85ef408902c1f6125a8f.jpg",previewURL:"https://cdn.beatsaver.com/a603656eb8cdadcb6eda85ef408902c1f6125a8f.mp3"}],createdAt:"2020-01-24T23:15:35.818Z",updatedAt:"2020-01-24T23:15:35.818Z",lastPublishedAt:"2020-01-24T23:15:35.818Z"},{id:"4227",name:"Aladdin - A Whole New World",description:"This song makes me smile. Such a classic Disney song.\r\nAdded easy and normal difficulties. Hard is a bit slower now . Expert is the same speed as the previous upload.",uploader:{id:4285018,name:"majorpickle",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f792",avatar:"https://cdn.beatsaver.com/avatar/450358937657671680.png",type:"DISCORD"},metadata:{bpm:123,duration:162,songName:"A Whole New World (From Disney's ''Aladdin'')",songSubName:"Lea Salonga & Brad Kane",songAuthorName:"Majorpickle",levelAuthorName:"majorpickle"},stats:{plays:0,downloads:5615,upvotes:1291,downvotes:40,score:.9161},uploaded:"2019-03-30T22:52:43Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"882f3fd9b97b4ce107c1e9e1f944c491b86c47fe",key:"4227",state:"Published",createdAt:"2019-03-30T22:52:43Z",sageScore:5,diffs:[{njs:10,offset:0,notes:236,bombs:0,obstacles:118,nps:1.591,length:304,characteristic:"Standard",difficulty:"Easy",events:540,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.293,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:242,bombs:0,obstacles:117,nps:1.631,length:304,characteristic:"Standard",difficulty:"Normal",events:540,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.293,paritySummary:{errors:22,warns:0,resets:0}},{njs:10,offset:0,notes:420,bombs:0,obstacles:85,nps:2.83,length:304.125,characteristic:"Standard",difficulty:"Hard",events:539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.354,paritySummary:{errors:12,warns:11,resets:0}},{njs:11,offset:0,notes:420,bombs:0,obstacles:85,nps:2.83,length:304.125,characteristic:"Standard",difficulty:"Expert",events:539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.354,paritySummary:{errors:12,warns:11,resets:0}}],downloadURL:"https://cdn.beatsaver.com/882f3fd9b97b4ce107c1e9e1f944c491b86c47fe.zip",coverURL:"https://cdn.beatsaver.com/882f3fd9b97b4ce107c1e9e1f944c491b86c47fe.jpg",previewURL:"https://cdn.beatsaver.com/882f3fd9b97b4ce107c1e9e1f944c491b86c47fe.mp3"}],createdAt:"2019-03-30T22:52:43Z",updatedAt:"2019-03-30T22:52:43Z",lastPublishedAt:"2019-03-30T22:52:43Z"},{id:"2569",name:"Celtic Woman - Carol Of The Bells",description:"Hard/Expert | BPM: 190 | Length: 2:18 | Notes: 333/560\r\n\r\nMerry Christmas and Happy Holidays! \r\nHad fun charting this one, I hope you have fun playing it :D\r\n\r\n16th Map.\r\n\r\nPreview:\r\nhttps://www.youtube.com/watch?v=zh9-XC1D5aU",uploader:{id:4285825,name:"fefeland",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3bb",avatar:"https://cdn.beatsaver.com/avatar/119360573191225344.png",type:"DISCORD"},metadata:{bpm:190,duration:139,songName:"Carol Of The Bells",songSubName:"Celtic Woman",songAuthorName:"FEFELAND",levelAuthorName:"fefeland"},stats:{plays:0,downloads:1307,upvotes:598,downvotes:8,score:.9161},uploaded:"2018-12-13T02:40:05Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1df1374196f03c9bba1aed018e3de2595f79dce1",key:"2569",state:"Published",createdAt:"2018-12-13T02:40:05Z",sageScore:5,diffs:[{njs:12,offset:0,notes:333,bombs:0,obstacles:101,nps:2.491,length:423.375,characteristic:"Standard",difficulty:"Hard",events:790,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:133.697,paritySummary:{errors:20,warns:18,resets:0}},{njs:15,offset:0,notes:560,bombs:0,obstacles:105,nps:4.189,length:423.375,characteristic:"Standard",difficulty:"Expert",events:790,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:133.697,paritySummary:{errors:15,warns:9,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1df1374196f03c9bba1aed018e3de2595f79dce1.zip",coverURL:"https://cdn.beatsaver.com/1df1374196f03c9bba1aed018e3de2595f79dce1.jpg",previewURL:"https://cdn.beatsaver.com/1df1374196f03c9bba1aed018e3de2595f79dce1.mp3"}],createdAt:"2018-12-13T02:40:05Z",updatedAt:"2018-12-13T02:40:05Z",lastPublishedAt:"2018-12-13T02:40:05Z"},{id:"16894",name:"Joe Hisaishi - Merry-Go-Round (from 'Howl's Moving Castle')",description:"The popular theme from Studio Ghibli's 'Howl's Moving Castle'. Version from Joe Hisaishi's 'Dream Songs' album.\n\nThanks to Cyrix and vaser888 for early testplays, Timbo and Uninstaller for the excellent mods, and Qwasyx for further suggestions for improvement.\n\nZelazowa#3625",uploader:{id:4284834,name:"zelazowa",uniqueSet:!0,hash:"5ea5367d16c968000632663c",avatar:"https://cdn.beatsaver.com/avatar/94962140443578368.png",type:"DISCORD"},metadata:{bpm:160,duration:312,songName:"Merry-Go-Round",songSubName:"(from 'Howl's Moving Castle')",songAuthorName:"Joe Hisaishi",levelAuthorName:"Zelazowa"},stats:{plays:0,downloads:5833,upvotes:813,downvotes:17,score:.9161},uploaded:"2021-04-11T02:32:37.687Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"d30db93f2c3c5a152b84ca364a691ef10c4efdb9",key:"16894",state:"Published",createdAt:"2021-04-11T02:32:37.687Z",sageScore:5,diffs:[{njs:10,offset:0,notes:441,bombs:0,obstacles:94,nps:1.459,length:806.257,characteristic:"Standard",difficulty:"Easy",events:1833,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.346,paritySummary:{errors:169,warns:8,resets:0},stars:.91},{njs:12,offset:-.75,notes:594,bombs:0,obstacles:83,nps:1.964,length:806.324,characteristic:"Standard",difficulty:"Normal",events:1833,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.372,paritySummary:{errors:9,warns:4,resets:0},stars:1.22},{njs:14,offset:.75,notes:847,bombs:0,obstacles:34,nps:2.801,length:806.324,characteristic:"Standard",difficulty:"Hard",events:1834,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.372,paritySummary:{errors:0,warns:0,resets:0},stars:1.71},{njs:16,offset:.25,notes:1075,bombs:0,obstacles:30,nps:3.555,length:806.392,characteristic:"Standard",difficulty:"Expert",events:1834,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.397,paritySummary:{errors:0,warns:0,resets:0},stars:2.47},{njs:18,offset:-.1,notes:1236,bombs:0,obstacles:18,nps:4.088,length:806.257,characteristic:"Standard",difficulty:"ExpertPlus",events:1833,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.346,paritySummary:{errors:0,warns:0,resets:0},stars:5}],downloadURL:"https://cdn.beatsaver.com/d30db93f2c3c5a152b84ca364a691ef10c4efdb9.zip",coverURL:"https://cdn.beatsaver.com/d30db93f2c3c5a152b84ca364a691ef10c4efdb9.jpg",previewURL:"https://cdn.beatsaver.com/d30db93f2c3c5a152b84ca364a691ef10c4efdb9.mp3"}],createdAt:"2021-04-11T02:32:37.687Z",updatedAt:"2021-04-11T02:32:37.687Z",lastPublishedAt:"2021-04-11T02:32:37.687Z"},{id:"c213",name:"Pegboard Nerds - Rhythm Is A Dancer (ft. Tia Simone)",description:"The Pegboard Nerds Pack was planned months before I joined AlphaBeat, so obviously I wasn't planned in for it. \n\nI still felt like mapping a Pegboard Nerds song and the new track from the Monstercat Anniversary seemed like a good fit. You could see this as some kind of bonus map for the Pack, but it wont be included in the Playlist, because having 11 songs instead of 10 feels weird. \n\nIt's not as fleshed out as the maps in the Pack because I only joined a few days ago and wanted to release this around the same time the Pack comes out.\n\nI hope you enjoy it nevertheless!\n\nPreview: https://youtu.be/HEr8pkcDM7M\n\nFeedback on Discord: nitronik.exe#7974",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:128,duration:225,songName:"Rhythm Is A Dancer",songSubName:"(ft. Tia Simone)",songAuthorName:"Pegboard Nerds",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:2515,upvotes:942,downvotes:23,score:.916},uploaded:"2020-07-17T14:05:23.854Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3255f65dd6a7d4dd3c9c1cb800e854d58f5d2e88",key:"c213",state:"Published",createdAt:"2020-07-17T14:05:23.854Z",sageScore:6,diffs:[{njs:10,offset:1,notes:185,bombs:0,obstacles:0,nps:.851,length:464,characteristic:"Standard",difficulty:"Easy",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:217.5,paritySummary:{errors:69,warns:10,resets:0}},{njs:12,offset:.5,notes:328,bombs:0,obstacles:0,nps:1.508,length:464,characteristic:"Standard",difficulty:"Normal",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:217.5,paritySummary:{errors:6,warns:0,resets:0}},{njs:14,offset:0,notes:561,bombs:0,obstacles:0,nps:2.561,length:467.25,characteristic:"Standard",difficulty:"Hard",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.023,paritySummary:{errors:4,warns:0,resets:0}},{njs:16,offset:0,notes:812,bombs:0,obstacles:0,nps:3.707,length:467.25,characteristic:"Standard",difficulty:"Expert",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.023,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:-.5,notes:1150,bombs:0,obstacles:2,nps:5.251,length:467.25,characteristic:"Standard",difficulty:"ExpertPlus",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.023,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3255f65dd6a7d4dd3c9c1cb800e854d58f5d2e88.zip",coverURL:"https://cdn.beatsaver.com/3255f65dd6a7d4dd3c9c1cb800e854d58f5d2e88.jpg",previewURL:"https://cdn.beatsaver.com/3255f65dd6a7d4dd3c9c1cb800e854d58f5d2e88.mp3"}],createdAt:"2020-07-17T14:05:23.854Z",updatedAt:"2020-07-17T14:05:23.854Z",lastPublishedAt:"2020-07-17T14:05:23.854Z"},{id:"6e1f",name:"Good Times Roll - GRiZ x Big Gigantic",description:"Huge thanks to Awfulnaut for letting me use his existing Good Times Roll map to create this updated version. <3",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:200,duration:146,songName:"Good Times Roll",songSubName:"",songAuthorName:"Griz x Big Gigantic",levelAuthorName:"Awfulnaut, Ryger"},stats:{plays:0,downloads:639,upvotes:434,downvotes:2,score:.916},uploaded:"2019-11-04T02:30:11.352Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6cb7b184a496b917739bc59a9012029ebb9e340c",key:"6e1f",state:"Published",createdAt:"2019-11-04T02:30:11.352Z",sageScore:4,diffs:[{njs:10,offset:0,notes:354,bombs:0,obstacles:11,nps:2.551,length:462.5,characteristic:"Standard",difficulty:"Hard",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:13,warns:6,resets:0}},{njs:14,offset:0,notes:518,bombs:0,obstacles:12,nps:3.733,length:462.5,characteristic:"Standard",difficulty:"Expert",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:10,warns:21,resets:0}},{njs:15,offset:.5,notes:652,bombs:0,obstacles:10,nps:4.679,length:464.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:139.35,paritySummary:{errors:33,warns:19,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6cb7b184a496b917739bc59a9012029ebb9e340c.zip",coverURL:"https://cdn.beatsaver.com/6cb7b184a496b917739bc59a9012029ebb9e340c.jpg",previewURL:"https://cdn.beatsaver.com/6cb7b184a496b917739bc59a9012029ebb9e340c.mp3"}],createdAt:"2019-11-04T02:30:11.352Z",updatedAt:"2019-11-04T02:30:11.352Z",lastPublishedAt:"2019-11-04T02:30:11.352Z"},{id:"5b95",name:"The Living Tombstone - I Can't Fix You",description:"This is probably on the easier end of Expert+ so it should be enjoyable for those looking to step up from Expert after a little practice. This song has officially been tested to oblivion, but I am happy to hear any feedback.\n\nDifficulty: Expert+\nBPM: 174\nNotes: 1212\nNJS: 15\nNPS: 4.65\nSong Duration: 4:21\n\nPreview video can be found here: https://youtu.be/EkcKRlikwMY\n\nSpecial Thanks to Kival Evan for their playtesting and feedback!",uploader:{id:34679,name:"lukemortora",uniqueSet:!0,hash:"5cff0b7798cc5a672c855c16",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855c16?d=retro",type:"SIMPLE"},metadata:{bpm:174,duration:261,songName:"I Can't Fix You",songSubName:"",songAuthorName:"The Living Tombstone",levelAuthorName:"LukeMortora"},stats:{plays:0,downloads:1353,upvotes:1043,downvotes:28,score:.9159},uploaded:"2019-08-09T15:10:13.751Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d074bc64340208a777eea440ba5e5a24f9d65d54",key:"5b95",state:"Published",createdAt:"2019-08-09T15:10:13.751Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1212,bombs:117,obstacles:26,nps:4.971,length:707,characteristic:"Standard",difficulty:"ExpertPlus",events:2214,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.793,paritySummary:{errors:114,warns:78,resets:11}}],downloadURL:"https://cdn.beatsaver.com/d074bc64340208a777eea440ba5e5a24f9d65d54.zip",coverURL:"https://cdn.beatsaver.com/d074bc64340208a777eea440ba5e5a24f9d65d54.jpg",previewURL:"https://cdn.beatsaver.com/d074bc64340208a777eea440ba5e5a24f9d65d54.mp3"}],createdAt:"2019-08-09T15:10:13.751Z",updatedAt:"2019-08-09T15:10:13.751Z",lastPublishedAt:"2019-08-09T15:10:13.751Z"},{id:"3c1d",name:"Sound of an Orchestra - MIKA",description:"Expert Playthrough : https://youtu.be/Ql0bAjfNQ5M",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:180,songName:"Sound Of An Orchestra",songSubName:"MIKA",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:2681,upvotes:693,downvotes:12,score:.9159},uploaded:"2019-03-06T16:56:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ab5ec7d8c0976c8acb1ed48889fce51666fabf45",key:"3c1d",state:"Published",createdAt:"2019-03-06T16:56:54Z",sageScore:5,diffs:[{njs:11,offset:0,notes:325,bombs:0,obstacles:24,nps:1.869,length:368,characteristic:"Standard",difficulty:"Normal",events:869,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.858,paritySummary:{errors:18,warns:7,resets:0}},{njs:13,offset:0,notes:386,bombs:0,obstacles:24,nps:2.22,length:368,characteristic:"Standard",difficulty:"Hard",events:869,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.858,paritySummary:{errors:36,warns:32,resets:0}},{njs:15,offset:0,notes:482,bombs:0,obstacles:24,nps:2.772,length:368,characteristic:"Standard",difficulty:"Expert",events:869,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.858,paritySummary:{errors:40,warns:45,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ab5ec7d8c0976c8acb1ed48889fce51666fabf45.zip",coverURL:"https://cdn.beatsaver.com/ab5ec7d8c0976c8acb1ed48889fce51666fabf45.jpg",previewURL:"https://cdn.beatsaver.com/ab5ec7d8c0976c8acb1ed48889fce51666fabf45.mp3"}],createdAt:"2019-03-06T16:56:54Z",updatedAt:"2019-03-06T16:56:54Z",lastPublishedAt:"2019-03-06T16:56:54Z"},{id:"ae9d",name:"A Cruel Angel's Thesis [22/7 Soundtrack] - Sakura Fujima",description:"A Cruel Angel's Thesis (Zankoku na Tenshi no Thesis) as covered by Sakura Fujima (CV: Sally Amaki.) from 22/7. It was originally sung by Takahashi Yoko as the opening of the anime Neon Genesis Evangelion. ",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:128,duration:92,songName:"A Cruel Angel's Thesis",songSubName:"",songAuthorName:"Sakura Fujima",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4289,upvotes:1204,downvotes:36,score:.9158},uploaded:"2020-06-05T07:07:17.017Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"40e47564d01e50840b0aa9a3191ff09a2e5b56a1",key:"ae9d",state:"Published",createdAt:"2020-06-05T07:07:17.017Z",sageScore:4,diffs:[{njs:12,offset:0,notes:222,bombs:0,obstacles:32,nps:2.536,length:186.75,characteristic:"Standard",difficulty:"Hard",events:2286,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.539,paritySummary:{errors:2,warns:2,resets:0}},{njs:14,offset:0,notes:347,bombs:0,obstacles:32,nps:3.932,length:188.25,characteristic:"Standard",difficulty:"Expert",events:2286,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.242,paritySummary:{errors:0,warns:2,resets:0}},{njs:16,offset:-.2,notes:413,bombs:0,obstacles:22,nps:4.68,length:188.25,characteristic:"Standard",difficulty:"ExpertPlus",events:2280,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.242,paritySummary:{errors:0,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/40e47564d01e50840b0aa9a3191ff09a2e5b56a1.zip",coverURL:"https://cdn.beatsaver.com/40e47564d01e50840b0aa9a3191ff09a2e5b56a1.jpg",previewURL:"https://cdn.beatsaver.com/40e47564d01e50840b0aa9a3191ff09a2e5b56a1.mp3"}],createdAt:"2020-06-05T07:07:17.017Z",updatedAt:"2020-06-05T07:07:17.017Z",lastPublishedAt:"2020-06-05T07:07:17.017Z"},{id:"65b7",name:"My First Kiss - Nightcore",description:"Youtube Preview: https://youtu.be/KxdCEgDG-AI",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:174.803,duration:156,songName:"My First Kiss - Nightcore",songSubName:"",songAuthorName:"Nightcore",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:709,upvotes:713,downvotes:13,score:.9158},uploaded:"2019-09-25T01:39:37.237Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5723e29f0a39dcec76926c1fa8baf6e9a32c185b",key:"65b7",state:"Published",createdAt:"2019-09-25T01:39:37.237Z",sageScore:4,diffs:[{njs:15,offset:0,notes:623,bombs:4,obstacles:48,nps:4.134,length:439,characteristic:"Standard",difficulty:"Expert",events:743,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.684,paritySummary:{errors:0,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/5723e29f0a39dcec76926c1fa8baf6e9a32c185b.zip",coverURL:"https://cdn.beatsaver.com/5723e29f0a39dcec76926c1fa8baf6e9a32c185b.jpg",previewURL:"https://cdn.beatsaver.com/5723e29f0a39dcec76926c1fa8baf6e9a32c185b.mp3"}],createdAt:"2019-09-25T01:39:37.237Z",updatedAt:"2019-09-25T01:39:37.237Z",lastPublishedAt:"2019-09-25T01:39:37.237Z"},{id:"4a4c",name:"[Anniversary] The Thrill - Nero, Porter Robinson [Ruckus]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:204,songName:"The Thrill (Porter Robinson Remix)",songSubName:"NERO, Porter Robinson",songAuthorName:"Ruckus",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:2144,upvotes:1321,downvotes:42,score:.9158},uploaded:"2019-05-03T14:13:21Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"68496811309fe62303edde686eb160f8e45aa9ce",key:"4a4c",state:"Published",createdAt:"2019-05-03T14:13:21Z",sageScore:7,diffs:[{njs:10,offset:0,notes:232,bombs:0,obstacles:70,nps:1.197,length:516.688,characteristic:"Standard",difficulty:"Easy",events:9122,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.758,paritySummary:{errors:17,warns:7,resets:0}},{njs:12,offset:0,notes:489,bombs:0,obstacles:60,nps:2.524,length:516.692,characteristic:"Standard",difficulty:"Normal",events:9127,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.76,paritySummary:{errors:29,warns:20,resets:0}},{njs:13,offset:0,notes:635,bombs:0,obstacles:64,nps:3.274,length:517.188,characteristic:"Standard",difficulty:"Hard",events:9117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.945,paritySummary:{errors:34,warns:35,resets:0}},{njs:18,offset:0,notes:1128,bombs:0,obstacles:36,nps:5.816,length:517.188,characteristic:"Standard",difficulty:"Expert",events:9117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.945,paritySummary:{errors:36,warns:35,resets:0}},{njs:20,offset:0,notes:1115,bombs:0,obstacles:46,nps:5.749,length:517.188,characteristic:"Standard",difficulty:"ExpertPlus",events:9117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.945,paritySummary:{errors:49,warns:73,resets:0}}],downloadURL:"https://cdn.beatsaver.com/68496811309fe62303edde686eb160f8e45aa9ce.zip",coverURL:"https://cdn.beatsaver.com/68496811309fe62303edde686eb160f8e45aa9ce.jpg",previewURL:"https://cdn.beatsaver.com/68496811309fe62303edde686eb160f8e45aa9ce.mp3"}],createdAt:"2019-05-03T14:13:21Z",updatedAt:"2019-05-03T14:13:21Z",lastPublishedAt:"2019-05-03T14:13:21Z"},{id:"a692",name:"[Noodle Touhou] Tare - VOLUPTE",description:"Easy, normal, hard, expert, expert+\r\n\r\nThis map is part of the first Touhou map pack brought to you by the Ramen Noodle mapper group! It contains all sorts of covers, arrangements and remix of the original Touhou soundtrack. We hope you enjoy it a lot!",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:128,duration:184,songName:"VOLUPTE",songSubName:"",songAuthorName:"Tare",levelAuthorName:"Aeroluna & CyanSnow"},stats:{plays:0,downloads:2792,upvotes:638,downvotes:10,score:.9156},uploaded:"2020-05-15T18:20:58.233Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"01ce5a3adc19e360ba0ffd8347f91b5dc974eb7c",key:"a692",state:"Published",createdAt:"2020-05-15T18:20:58.233Z",sageScore:6,diffs:[{njs:12,offset:.5,notes:254,bombs:0,obstacles:0,nps:1.411,length:384,characteristic:"Standard",difficulty:"Easy",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:6,warns:0,resets:0}},{njs:12,offset:.5,notes:404,bombs:0,obstacles:0,nps:2.244,length:384,characteristic:"Standard",difficulty:"Normal",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:1,warns:0,resets:0}},{njs:13,offset:.25,notes:541,bombs:0,obstacles:0,nps:3.006,length:384,characteristic:"Standard",difficulty:"Hard",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.25,notes:763,bombs:0,obstacles:0,nps:4.236,length:384.25,characteristic:"Standard",difficulty:"Expert",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180.117,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.5,notes:1009,bombs:0,obstacles:0,nps:5.602,length:384.25,characteristic:"Standard",difficulty:"ExpertPlus",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180.117,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/01ce5a3adc19e360ba0ffd8347f91b5dc974eb7c.zip",coverURL:"https://cdn.beatsaver.com/01ce5a3adc19e360ba0ffd8347f91b5dc974eb7c.jpg",previewURL:"https://cdn.beatsaver.com/01ce5a3adc19e360ba0ffd8347f91b5dc974eb7c.mp3"}],createdAt:"2020-05-15T18:20:58.233Z",updatedAt:"2020-05-15T18:20:58.233Z",lastPublishedAt:"2020-05-15T18:20:58.233Z"},{id:"9fab",name:"Doom Crossing: Eternal Horizons",description:"3 Difficulties Included! \n\nAnother side release of mine! This song's chorus is so catchy, it got stuck in my head for days! Also I've been playing a ton of Animal Crossing ^^ \n\nDoom Crossing: Eternal Horizons by The Chalkeaters ft. Natalia Natchan\n\nBPM: 160\n\nLights by Loloppe's autolighter, Lolighter! With some manual touch ups!",uploader:{id:4289037,name:"mystikmol",uniqueSet:!0,hash:"5cff0b7298cc5a672c84eb52",avatar:"https://cdn.beatsaver.com/avatar/67941140636114944.png",type:"DISCORD"},metadata:{bpm:160,duration:83,songName:"Doom Crossing: Eternal Horizons",songSubName:"Short ver.",songAuthorName:"The Chalkeaters ft. Natalia Natchan",levelAuthorName:"Mystikmol"},stats:{plays:0,downloads:3574,upvotes:1563,downvotes:55,score:.9156},uploaded:"2020-04-27T15:22:22.520Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f8b391a5fd0922062f7e3c10ccc1967f91da20a2",key:"9fab",state:"Published",createdAt:"2020-04-27T15:22:22.520Z",sageScore:3,diffs:[{njs:12,offset:0,notes:153,bombs:0,obstacles:0,nps:2.082,length:196,characteristic:"Standard",difficulty:"Normal",events:1926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:73.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:261,bombs:0,obstacles:1,nps:3.551,length:196,characteristic:"Standard",difficulty:"Hard",events:1926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:73.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:491,bombs:0,obstacles:0,nps:6.68,length:196,characteristic:"Standard",difficulty:"ExpertPlus",events:1927,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:73.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f8b391a5fd0922062f7e3c10ccc1967f91da20a2.zip",coverURL:"https://cdn.beatsaver.com/f8b391a5fd0922062f7e3c10ccc1967f91da20a2.jpg",previewURL:"https://cdn.beatsaver.com/f8b391a5fd0922062f7e3c10ccc1967f91da20a2.mp3"}],createdAt:"2020-04-27T15:22:22.520Z",updatedAt:"2020-04-27T15:22:22.520Z",lastPublishedAt:"2020-04-27T15:22:22.520Z"},{id:"12377",name:"Sangatsu no Phantasia - Pastel Rain",description:"use CHROMA mod for\n- cool lights\n- if you dont have chroma it'll just be greyed out PepeLaugh\n\nHappy New Years\n\nBPM | 135\nExpert+\nExpert\nHard\n\nThanks JohnnyDee for the playtest, what a qt\n\npreview: https://www.youtube.com/watch?v=hGq0EEsqgQQ\n\nthank you for playing\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:135,duration:212,songName:"Pastel Rain",songSubName:"",songAuthorName:"Sangatsu no Phantasia",levelAuthorName:"ETAN"},stats:{plays:0,downloads:4912,upvotes:776,downvotes:16,score:.9155},uploaded:"2021-01-03T08:08:53.577Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2c01774fdb9c4bcc53df1707ade85cea6f043477",key:"12377",state:"Published",createdAt:"2021-01-03T08:08:53.577Z",sageScore:5,diffs:[{njs:12,offset:.5,notes:576,bombs:0,obstacles:58,nps:2.775,length:467,characteristic:"Standard",difficulty:"Hard",events:16659,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:207.556,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:882,bombs:0,obstacles:58,nps:4.249,length:467,characteristic:"Standard",difficulty:"Expert",events:16659,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:207.556,paritySummary:{errors:0,warns:1,resets:0}},{njs:19,offset:-.5,notes:1180,bombs:0,obstacles:57,nps:5.685,length:467,characteristic:"Standard",difficulty:"ExpertPlus",events:16659,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:207.556,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2c01774fdb9c4bcc53df1707ade85cea6f043477.zip",coverURL:"https://cdn.beatsaver.com/2c01774fdb9c4bcc53df1707ade85cea6f043477.jpg",previewURL:"https://cdn.beatsaver.com/2c01774fdb9c4bcc53df1707ade85cea6f043477.mp3"}],createdAt:"2021-01-03T08:08:53.577Z",updatedAt:"2021-01-03T08:08:53.577Z",lastPublishedAt:"2021-01-03T08:08:53.577Z"},{id:"1814",name:"Ghost",description:"???? ???? ? ????? ???? ?????????~\r\n\r\nEDIT: Fixed a double-down note.",uploader:{id:10509,name:"krydar",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fe84",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84fe84?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:262,songName:"Ghost",songSubName:"Mystery Skulls",songAuthorName:"Kry",levelAuthorName:"Krydar"},stats:{plays:0,downloads:509,upvotes:1012,downvotes:27,score:.9155},uploaded:"2018-09-30T15:03:57Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9430ecb46ce581ac51481d3a61e6fe3356dd4e61",key:"1814",state:"Published",createdAt:"2018-09-30T15:03:57Z",sageScore:5,diffs:[{njs:14,offset:0,notes:847,bombs:0,obstacles:138,nps:3.785,length:447.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2331,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.75,paritySummary:{errors:35,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9430ecb46ce581ac51481d3a61e6fe3356dd4e61.zip",coverURL:"https://cdn.beatsaver.com/9430ecb46ce581ac51481d3a61e6fe3356dd4e61.jpg",previewURL:"https://cdn.beatsaver.com/9430ecb46ce581ac51481d3a61e6fe3356dd4e61.mp3"}],createdAt:"2018-09-30T15:03:57Z",updatedAt:"2018-09-30T15:03:57Z",lastPublishedAt:"2018-09-30T15:03:57Z"},{id:"6773",name:"Survive Said The Prophet - MUKANJYO - Vinland Saga OP song",description:"Youtube Preview: https://youtu.be/EHrf40IwTR8",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:190,duration:188,songName:"Survive Said The Prophet",songSubName:"",songAuthorName:"MUKANJYO",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:924,upvotes:561,downvotes:7,score:.9154},uploaded:"2019-10-03T00:15:52.884Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cee8a59f1ec8c8cd4672c5428dda6999777870ff",key:"6773",state:"Published",createdAt:"2019-10-03T00:15:52.884Z",sageScore:5,diffs:[{njs:16,offset:0,notes:975,bombs:8,obstacles:6,nps:5.305,length:582,characteristic:"Standard",difficulty:"ExpertPlus",events:1135,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.789,paritySummary:{errors:0,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/cee8a59f1ec8c8cd4672c5428dda6999777870ff.zip",coverURL:"https://cdn.beatsaver.com/cee8a59f1ec8c8cd4672c5428dda6999777870ff.jpg",previewURL:"https://cdn.beatsaver.com/cee8a59f1ec8c8cd4672c5428dda6999777870ff.mp3"}],createdAt:"2019-10-03T00:15:52.884Z",updatedAt:"2019-10-03T00:15:52.884Z",lastPublishedAt:"2019-10-03T00:15:52.884Z"},{id:"5281",name:"TheFatRat & Phaera - Sunlight",description:"Aww Yeah, it's glitch-hop baby! Colors of the map are Orange(ish) and Dark Blue (similar to the cover image). I had a lot of fun making this map and I hope you enjoy as well!\r\n\r\nPreview: https://www.youtube.com/watch?v=MLAjVcqpBlY",uploader:{id:57657,name:"pixelguymm",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541a8",avatar:"https://cdn.beatsaver.com/avatar/434386941547511818.png",type:"DISCORD"},metadata:{bpm:106,duration:171,songName:"Sunlight",songSubName:"TheFatRat & Phaera",songAuthorName:"Pixelguy",levelAuthorName:"pixelguymm"},stats:{plays:0,downloads:701,upvotes:586,downvotes:8,score:.9154},uploaded:"2019-06-09T06:35:30Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2d0ba779b5c8217f06a4c1267e8d872d4b46a4bb",key:"5281",state:"Published",createdAt:"2019-06-09T06:35:30Z",sageScore:4,diffs:[{njs:14,offset:0,notes:644,bombs:8,obstacles:36,nps:3.954,length:287.75,characteristic:"Standard",difficulty:"Expert",events:814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.877,paritySummary:{errors:2,warns:2,resets:4}}],downloadURL:"https://cdn.beatsaver.com/2d0ba779b5c8217f06a4c1267e8d872d4b46a4bb.zip",coverURL:"https://cdn.beatsaver.com/2d0ba779b5c8217f06a4c1267e8d872d4b46a4bb.jpg",previewURL:"https://cdn.beatsaver.com/2d0ba779b5c8217f06a4c1267e8d872d4b46a4bb.mp3"}],createdAt:"2019-06-09T06:35:30Z",updatedAt:"2019-06-09T06:35:30Z",lastPublishedAt:"2019-06-09T06:35:30Z"},{id:"553e",name:"Happy Together (V2)",description:"Old map was borked since the last update, so here is a remade version, some patterns changed for more smooth, hard difficulty added.\n\nLights will feel old compare to what I do now",uploader:{id:4235153,name:"skeelie",uniqueSet:!0,hash:"5cff0b7698cc5a672c85507f",avatar:"https://cdn.beatsaver.com/avatar/119467937928052748.png",type:"DISCORD"},metadata:{bpm:121.2,duration:173,songName:"Happy Together",songSubName:"",songAuthorName:"The Turtles",levelAuthorName:"Skeelie"},stats:{plays:0,downloads:3463,upvotes:656,downvotes:11,score:.9153},uploaded:"2019-07-01T16:58:53.827Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"99d1d214dde61f736d5efd47da936476a5bd1e4e",key:"553e",state:"Published",createdAt:"2019-07-01T16:58:53.827Z",sageScore:3,diffs:[{njs:11,offset:0,notes:412,bombs:0,obstacles:0,nps:2.515,length:330.966,characteristic:"Standard",difficulty:"Hard",events:2137,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.845,paritySummary:{errors:32,warns:17,resets:0}},{njs:13,offset:0,notes:580,bombs:0,obstacles:0,nps:3.54,length:330.966,characteristic:"Standard",difficulty:"Expert",events:2137,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.845,paritySummary:{errors:52,warns:26,resets:0}}],downloadURL:"https://cdn.beatsaver.com/99d1d214dde61f736d5efd47da936476a5bd1e4e.zip",coverURL:"https://cdn.beatsaver.com/99d1d214dde61f736d5efd47da936476a5bd1e4e.jpg",previewURL:"https://cdn.beatsaver.com/99d1d214dde61f736d5efd47da936476a5bd1e4e.mp3"}],createdAt:"2019-07-01T16:58:53.827Z",updatedAt:"2019-07-01T16:58:53.827Z",lastPublishedAt:"2019-07-01T16:58:53.827Z"},{id:"540b",name:"Keep The Rave Alive - Jauz x Laser Laser Laser (collab w/Heisenberg)",description:"Requires Mapping Extensions Mod. Do not use Left-Handed/Mirror mode!\n\n128 BPM / 5:00 Runtime\nHard - 488 Notes\nExpert - 794 Notes\nExpert+ - 1157 Notes\n\nGameplay: https://youtu.be/lxfCwV_NZCA",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:128,duration:300,songName:"Keep The Rave Alive",songSubName:"Lazer Lazer Lazer",songAuthorName:"Jauz",levelAuthorName:"Skyler Wallace & Heisenberg"},stats:{plays:0,downloads:2589,upvotes:1571,downvotes:56,score:.9153},uploaded:"2019-06-22T18:12:49.515Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"511bfb7e192faa0615691c4e4e8d21bc162a84cf",key:"540b",state:"Published",createdAt:"2019-06-22T18:12:49.515Z",sageScore:8,diffs:[{njs:12,offset:1,notes:488,bombs:0,obstacles:1105,nps:1.712,length:608,characteristic:"Standard",difficulty:"Hard",events:16325,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:285,paritySummary:{errors:74,warns:77,resets:0}},{njs:16,offset:0,notes:794,bombs:8,obstacles:1105,nps:2.786,length:608,characteristic:"Standard",difficulty:"Expert",events:16325,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:285,paritySummary:{errors:51,warns:62,resets:4}},{njs:16,offset:0,notes:1157,bombs:0,obstacles:1105,nps:4.06,length:608,characteristic:"Standard",difficulty:"ExpertPlus",events:16325,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:285,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:16325,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:0,notes:0,bombs:0,obstacles:1105,nps:0,length:0,characteristic:"Lightshow",difficulty:"Normal",events:16325,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/511bfb7e192faa0615691c4e4e8d21bc162a84cf.zip",coverURL:"https://cdn.beatsaver.com/511bfb7e192faa0615691c4e4e8d21bc162a84cf.jpg",previewURL:"https://cdn.beatsaver.com/511bfb7e192faa0615691c4e4e8d21bc162a84cf.mp3"}],createdAt:"2019-06-22T18:12:49.515Z",updatedAt:"2019-06-22T18:12:49.515Z",lastPublishedAt:"2019-06-22T18:12:49.515Z"},{id:"321d",name:"Black Bullet [Black Bullet Opening] - fripSide",description:"Black Bullet, the opening song for the anime of the same name by Fripside!",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:155,duration:262,songName:"Black Bullet",songSubName:"FripSide",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1907,upvotes:880,downvotes:21,score:.9152},uploaded:"2019-01-29T15:26:42Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9e25062d995e1e0958b4eba4e7ba56f053e00b2c",key:"321d",state:"Published",createdAt:"2019-01-29T15:26:42Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1252,bombs:0,obstacles:44,nps:4.878,length:663,characteristic:"Standard",difficulty:"Expert",events:3992,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256.645,paritySummary:{errors:80,warns:87,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9e25062d995e1e0958b4eba4e7ba56f053e00b2c.zip",coverURL:"https://cdn.beatsaver.com/9e25062d995e1e0958b4eba4e7ba56f053e00b2c.jpg",previewURL:"https://cdn.beatsaver.com/9e25062d995e1e0958b4eba4e7ba56f053e00b2c.mp3"}],createdAt:"2019-01-29T15:26:42Z",updatedAt:"2019-01-29T15:26:42Z",lastPublishedAt:"2019-01-29T15:26:42Z"},{id:"1e9b",name:"Du Hast by Rammstein (Kole Edit) [One Saber]",description:"UPDATED 6th november 2018: There were some misdirected notes and some minor flow issues that has now been corrected.You should now be able to get Full Combo much more intuitively! Please download again if you've played the map before as the scoreboards are reset. Sorry for the trouble!\r\n\r\nCan't have enough of Du Hast by Rammstein? Good! Cause here is a One Saber version of that song! If you play the regular (Dual Saber) version of this map then you'll find it familiar to that version.\r\n\r\nSong has been edited (shortened) to be tighter and not too repetitive.\r\n\r\n!! ONE SABER MODE MAP, start it from the ONE SABER MENU for best experience! !!\r\n\r\nPreview:\r\nhttps://youtu.be/wTAUDviTUcQ\r\n\r\nBPM: 125.09\r\nDuration: 2:57\r\nHard, Expert and Expert+ difficulties.\r\n\r\nHard: 331 notes, 0 obstacles, 0 mines\r\nExpert: 502 notes, 0 obstacles, 0 mines\r\nExpert+: 646 notes, 0 obstacles, 0 mines\r\n\r\nThanks to Hen Tie, ManDynasty, Red Magi and Civ for playtesting!\r\n\r\nRegular (Dual Saber) version here:\r\nhttps://beatsaver.com/browse/detail/6707-6348\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:125,duration:177,songName:"Du Hast (One Saber)",songSubName:"Rammstein",songAuthorName:"Level by Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:2751,upvotes:879,downvotes:21,score:.9152},uploaded:"2018-11-06T21:46:57Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e6cb01196d2256586c805df1baf910f8036005a7",key:"1e9b",state:"Published",createdAt:"2018-11-06T21:46:57Z",sageScore:4,diffs:[{njs:12,offset:0,notes:331,bombs:0,obstacles:0,nps:1.96,length:352,characteristic:"OneSaber",difficulty:"Hard",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:40,warns:38,resets:0}},{njs:12,offset:0,notes:501,bombs:0,obstacles:0,nps:2.967,length:352,characteristic:"OneSaber",difficulty:"Expert",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:42,warns:50,resets:0}},{njs:12,offset:0,notes:643,bombs:0,obstacles:0,nps:3.808,length:352,characteristic:"OneSaber",difficulty:"ExpertPlus",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:47,warns:51,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e6cb01196d2256586c805df1baf910f8036005a7.zip",coverURL:"https://cdn.beatsaver.com/e6cb01196d2256586c805df1baf910f8036005a7.jpg",previewURL:"https://cdn.beatsaver.com/e6cb01196d2256586c805df1baf910f8036005a7.mp3"}],createdAt:"2018-11-06T21:46:57Z",updatedAt:"2018-11-06T21:46:57Z",lastPublishedAt:"2018-11-06T21:46:57Z"},{id:"68a4",name:"Paramore - Misery Business",description:"A true story about the hardships of young love, from one of the leading pioneers of alternative rock. The patterns aim to capture the same fiery energy and jumpiness from its prime. Cheers!\n\nINFO:\nBPM: 173.01\nLength: 3:19\nAll Standard Difficulties\n\nCONTRIBUTORS:\nKival Evan - Tester (Expert+)\nHelenCarnate - Tester (Expert)\nCyanSnow - Tester (Expert+)\nLaser Wrath - Tester (All Standard Difficulties)",uploader:{id:4284238,name:"officialMECH",uniqueSet:!0,hash:"5d51c536c53019000612f266",avatar:"https://cdn.beatsaver.com/avatar/386290335401246721.png",type:"DISCORD"},metadata:{bpm:173.01,duration:200,songName:"Misery Business",songSubName:"",songAuthorName:"Paramore",levelAuthorName:"officialMECH"},stats:{plays:0,downloads:5443,upvotes:1673,downvotes:62,score:.9151},uploaded:"2019-10-08T16:59:29.069Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a46e07bb84c22dd1f371df0876fd828195b2c8ef",key:"68a4",state:"Published",createdAt:"2019-10-08T16:59:29.069Z",sageScore:8,diffs:[{njs:11,offset:0,notes:272,bombs:0,obstacles:38,nps:1.406,length:558,characteristic:"Standard",difficulty:"Easy",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:20,warns:13,resets:0}},{njs:11,offset:0,notes:360,bombs:0,obstacles:38,nps:1.86,length:558,characteristic:"Standard",difficulty:"Normal",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:54,warns:45,resets:0}},{njs:12,offset:0,notes:572,bombs:0,obstacles:38,nps:2.956,length:558,characteristic:"Standard",difficulty:"Hard",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:12,warns:8,resets:0}},{njs:15,offset:1,notes:946,bombs:2,obstacles:38,nps:4.889,length:558,characteristic:"Standard",difficulty:"Expert",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:6,warns:0,resets:0}},{njs:18,offset:.5,notes:1240,bombs:4,obstacles:38,nps:6.408,length:558,characteristic:"Standard",difficulty:"ExpertPlus",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:2,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a46e07bb84c22dd1f371df0876fd828195b2c8ef.zip",coverURL:"https://cdn.beatsaver.com/a46e07bb84c22dd1f371df0876fd828195b2c8ef.jpg",previewURL:"https://cdn.beatsaver.com/a46e07bb84c22dd1f371df0876fd828195b2c8ef.mp3"}],createdAt:"2019-10-08T16:59:29.069Z",updatedAt:"2019-10-08T16:59:29.069Z",lastPublishedAt:"2019-10-08T16:59:29.069Z"},{id:"225",name:"Clint Eastwood - Gorillaz",description:"Easy/Normal/Hard/Expert - Audio is as loud without clipping I swear! 100% Expert Playthrough: https://bit.ly/2LuFcxq\r\n\r\nHave fun! =D\r\n\r\n- Freeek =)",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:84,duration:200,songName:"Clint Eastwood",songSubName:"Gorillaz",songAuthorName:"unknow",levelAuthorName:"freeek"},stats:{plays:0,downloads:7585,upvotes:7017,downvotes:404,score:.9151},uploaded:"2018-05-25T20:58:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"507f0e09326d37e09dca08e3c2597f027dbe1940",key:"225",state:"Published",createdAt:"2018-05-25T20:58:36Z",sageScore:6,diffs:[{njs:10,offset:0,notes:297,bombs:0,obstacles:57,nps:1.575,length:264,characteristic:"Standard",difficulty:"Easy",events:1281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.571,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:358,bombs:0,obstacles:62,nps:1.906,length:263,characteristic:"Standard",difficulty:"Normal",events:1281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.857,paritySummary:{errors:37,warns:18,resets:0}},{njs:10,offset:0,notes:514,bombs:0,obstacles:67,nps:2.721,length:264.5,characteristic:"Standard",difficulty:"Hard",events:1281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.929,paritySummary:{errors:65,warns:85,resets:0}},{njs:10,offset:0,notes:681,bombs:0,obstacles:67,nps:3.473,length:274.5,characteristic:"Standard",difficulty:"Expert",events:1281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.071,paritySummary:{errors:97,warns:102,resets:0}}],downloadURL:"https://cdn.beatsaver.com/507f0e09326d37e09dca08e3c2597f027dbe1940.zip",coverURL:"https://cdn.beatsaver.com/507f0e09326d37e09dca08e3c2597f027dbe1940.jpg",previewURL:"https://cdn.beatsaver.com/507f0e09326d37e09dca08e3c2597f027dbe1940.mp3"}],createdAt:"2018-05-25T20:58:36Z",updatedAt:"2018-05-25T20:58:36Z",lastPublishedAt:"2018-05-25T20:58:36Z"},{id:"3dd6",name:"Saeed - Infected Mushroom",description:"Collab between Bomb, Heisenberg, Rexxz and Ruckus\r\nBomb: 0 - 1:32\r\nHeisenberg: 1:32 - 3:03\r\nRexxz: 3:03 - 5:22\r\nRuckus: 5:22 ->",uploader:{id:4284846,name:"rexxz",uniqueSet:!0,hash:"5cff0b7598cc5a672c85311e",avatar:"https://cdn.beatsaver.com/avatar/101849894876106752.png",type:"DISCORD"},metadata:{bpm:145,duration:397,songName:"Saeed",songSubName:"Infected Mushroom",songAuthorName:"Bomb, Heisenberg, Rexxz, Ruckus",levelAuthorName:"Rexxz"},stats:{plays:0,downloads:1406,upvotes:1143,downvotes:34,score:.9151},uploaded:"2019-03-13T20:51:03Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3f3d4ad451b3671e881776c88a67148326ccc9c5",key:"3dd6",state:"Published",createdAt:"2019-03-13T20:51:03Z",sageScore:6,diffs:[{njs:14,offset:0,notes:821,bombs:0,obstacles:76,nps:2.176,length:912,characteristic:"Standard",difficulty:"Normal",events:22078,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:377.379,paritySummary:{errors:80,warns:20,resets:0}},{njs:15,offset:0,notes:1316,bombs:209,obstacles:43,nps:3.427,length:928,characteristic:"Standard",difficulty:"Expert",events:22039,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:384,paritySummary:{errors:57,warns:88,resets:2}},{njs:18,offset:0,notes:2169,bombs:470,obstacles:61,nps:5.57,length:941,characteristic:"Standard",difficulty:"ExpertPlus",events:22077,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:389.379,paritySummary:{errors:70,warns:68,resets:8}}],downloadURL:"https://cdn.beatsaver.com/3f3d4ad451b3671e881776c88a67148326ccc9c5.zip",coverURL:"https://cdn.beatsaver.com/3f3d4ad451b3671e881776c88a67148326ccc9c5.jpg",previewURL:"https://cdn.beatsaver.com/3f3d4ad451b3671e881776c88a67148326ccc9c5.mp3"}],createdAt:"2019-03-13T20:51:03Z",updatedAt:"2019-03-13T20:51:03Z",lastPublishedAt:"2019-03-13T20:51:03Z"},{id:"e4ae",name:"[Alphabeat - Marshmello Pack] Anne-Marie & Marshmello - FRIENDS",description:"Part of the Marshmello Music Pack - Presented by the Alphabeat Mapping Group.\n\nAlphabeat is back once again! This time, we bring a Marshmello Music Pack - mapped by 3 members of the group over 6 different songs (with a bonus Expert+ only song)!\n\nPreview:\nhttps://www.youtube.com/watch?v=bW00nvk7JgU\n\nTimeweaver: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c\nNitronik.exe: https://beatsaver.com/uploader/5cff0b7798cc5a672c855d84\nFirestrike: https://beatsaver.com/uploader/5cff0b7698cc5a672c85479f\n\nWatch the Marshmello Music Pack Trailer, created by Pixelguy: \nhttps://youtu.be/pzNkJ7tFcHM\n\nAll songs included in this pack:\n- Be Kind (Firestrike)\n- Wolves (Timeweaver)\n- Summer (Firestrike)\n- FRIENDS (Nitronik.exe)\n- Falling To Pieces (Nitronik.exe)\n- Rescue Me (Nitronik.exe)\n- [Bonus Song] Chasing Colors (Timeweaver)\n\nChroma is recommended for the best experience.\nDon't forget to grab the Mello Notes created alongside this pack, by Nitronik.exe: https://modelsaber.com/Bloqs/?id=1599384157&pc\nGet the playlist here: https://bsaber.com/marshmello-pack/",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:190,duration:204,songName:"FRIENDS",songSubName:"(ft. Anne Marie)",songAuthorName:"Marshmello",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:4733,upvotes:874,downvotes:21,score:.915},uploaded:"2020-09-06T11:06:01.474Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6afef6c5baaf7348d0bb4107c78dc4e59ca511e2",key:"e4ae",state:"Published",createdAt:"2020-09-06T11:06:01.474Z",sageScore:7,diffs:[{njs:10,offset:.5,notes:171,bombs:0,obstacles:0,nps:.849,length:638,characteristic:"Standard",difficulty:"Easy",events:12015,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.474,paritySummary:{errors:169,warns:0,resets:0}},{njs:12,offset:0,notes:345,bombs:0,obstacles:0,nps:1.712,length:638,characteristic:"Standard",difficulty:"Normal",events:12015,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.474,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:-.5,notes:526,bombs:0,obstacles:0,nps:2.611,length:638,characteristic:"Standard",difficulty:"Hard",events:12015,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.474,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:.75,notes:710,bombs:0,obstacles:0,nps:3.516,length:639.5,characteristic:"Standard",difficulty:"Expert",events:12016,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.947,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:.25,notes:930,bombs:12,obstacles:16,nps:4.605,length:639.5,characteristic:"Standard",difficulty:"ExpertPlus",events:12015,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.947,paritySummary:{errors:0,warns:3,resets:2}}],downloadURL:"https://cdn.beatsaver.com/6afef6c5baaf7348d0bb4107c78dc4e59ca511e2.zip",coverURL:"https://cdn.beatsaver.com/6afef6c5baaf7348d0bb4107c78dc4e59ca511e2.jpg",previewURL:"https://cdn.beatsaver.com/6afef6c5baaf7348d0bb4107c78dc4e59ca511e2.mp3"}],createdAt:"2020-09-06T11:06:01.474Z",updatedAt:"2020-09-06T11:06:01.474Z",lastPublishedAt:"2020-09-06T11:06:01.474Z"},{id:"ca40",name:"Kings & Queens - Ava Max",description:"A map requested by my sister so she can play it when she borrows my Quest for extended periods of time to practice her Beat Saber skills. ^_^\nShe helped me decide on some of the mapping decisions on this and helped me with play testing so some credit does go to her :D\n\nIf you have any suggestions about the map and would like to get in touch my discord is Edmard#5334\nNuff luv peeps!",uploader:{id:4285633,name:"edmard",uniqueSet:!0,hash:"5cff0b7798cc5a672c856604",avatar:"https://cdn.beatsaver.com/avatar/157188812462620672.png",type:"DISCORD"},metadata:{bpm:130,duration:162,songName:"Kings & Queens",songSubName:"",songAuthorName:"Ava Max",levelAuthorName:"Edmard"},stats:{plays:0,downloads:5634,upvotes:1649,downvotes:61,score:.915},uploaded:"2020-07-29T22:38:29.144Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"41d7c7b621d397db0723b55f75ab2ef6be1891e8",key:"ca40",state:"Published",createdAt:"2020-07-29T22:38:29.144Z",sageScore:3,diffs:[{njs:14,offset:0,notes:424,bombs:0,obstacles:29,nps:2.857,length:321.5,characteristic:"Standard",difficulty:"Hard",events:2338,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.385,paritySummary:{errors:0,warns:0,resets:0},stars:1.71},{njs:15,offset:0,notes:606,bombs:0,obstacles:25,nps:4.084,length:321.5,characteristic:"Standard",difficulty:"Expert",events:2338,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.385,paritySummary:{errors:0,warns:0,resets:0},stars:2.6},{njs:15,offset:-.3,notes:661,bombs:0,obstacles:22,nps:4.455,length:321.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2338,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.385,paritySummary:{errors:0,warns:2,resets:0},stars:5.85}],downloadURL:"https://cdn.beatsaver.com/41d7c7b621d397db0723b55f75ab2ef6be1891e8.zip",coverURL:"https://cdn.beatsaver.com/41d7c7b621d397db0723b55f75ab2ef6be1891e8.jpg",previewURL:"https://cdn.beatsaver.com/41d7c7b621d397db0723b55f75ab2ef6be1891e8.mp3"}],createdAt:"2020-07-29T22:38:29.144Z",updatedAt:"2020-07-29T22:38:29.144Z",lastPublishedAt:"2020-07-29T22:38:29.144Z"},{id:"9a35",name:"[Tokyo Machine Pack] Tokyo Machine - PIXEL",description:"3/6\nPart of the Tokyo Machine Pack, a collab between Firestrike, Cyansnow and I.\nMap by me, lights by FireStrike.\n\nFireStrike's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c85479f\nCyanSnow's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c8543ac\n\nPlaylist: https://bsaber.com/tokyo-machine-pack/\n\nCheck out the trailer for the pack here: https://www.youtube.com/watch?v=lStPUnecsD8",uploader:{id:57657,name:"pixelguymm",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541a8",avatar:"https://cdn.beatsaver.com/avatar/434386941547511818.png",type:"DISCORD"},metadata:{bpm:128,duration:201,songName:"PIXEL",songSubName:"",songAuthorName:"Tokyo Machine",levelAuthorName:"FireStrike & Pixel"},stats:{plays:0,downloads:1838,upvotes:650,downvotes:11,score:.915},uploaded:"2020-04-12T18:07:43.267Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b5d3d5f97d34fc85c0a2cf694631bdf125229304",key:"9a35",state:"Published",createdAt:"2020-04-12T18:07:43.267Z",sageScore:4,diffs:[{njs:18,offset:-.3,notes:1172,bombs:54,obstacles:4,nps:6.016,length:415.625,characteristic:"Standard",difficulty:"ExpertPlus",events:4372,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.824,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b5d3d5f97d34fc85c0a2cf694631bdf125229304.zip",coverURL:"https://cdn.beatsaver.com/b5d3d5f97d34fc85c0a2cf694631bdf125229304.jpg",previewURL:"https://cdn.beatsaver.com/b5d3d5f97d34fc85c0a2cf694631bdf125229304.mp3"}],createdAt:"2020-04-12T18:07:43.267Z",updatedAt:"2020-04-12T18:07:43.267Z",lastPublishedAt:"2020-04-12T18:07:43.267Z"},{id:"c1d",name:"Good Times Roll",description:"Be sure to check out the other difficulties! There were certain patterns that I loved that only worked for some of the difficulties, and they're all super fun! Anyone playing Easy will find that Normal teaches you how to play harder maps while being very forgiving.\r\n\r\nAlso, I'm going on hiatus! This will be my last map for a good while since I'm back in school and also working full time. I'll still play here and there and maybe try to map a bit, but I likely won't release anything for several months. Hopefully this map will keep people satisfied for a while ;)\r\n\r\nhttps://youtu.be/vCbgECLTxpU",uploader:{id:44595,name:"awfulnaut",uniqueSet:!0,hash:"5cff0b7398cc5a672c84edac",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84edac?d=retro",type:"SIMPLE"},metadata:{bpm:200,duration:146,songName:"Good Times Roll",songSubName:"Griz x Big Gigantic",songAuthorName:"Awfulnaut",levelAuthorName:"awfulnaut"},stats:{plays:0,downloads:6704,upvotes:3141,downvotes:149,score:.915},uploaded:"2018-07-27T15:47:05Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"f22061809c798178786ca1b6e61b10ccbcbe8d28",key:"c1d",state:"Published",createdAt:"2018-07-27T15:47:05Z",sageScore:4,diffs:[{njs:10,offset:0,notes:356,bombs:8,obstacles:11,nps:2.566,length:462.5,characteristic:"Standard",difficulty:"Normal",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:95,warns:15,resets:4},stars:1.45},{njs:10,offset:0,notes:469,bombs:8,obstacles:11,nps:3.38,length:462.5,characteristic:"Standard",difficulty:"Hard",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:44,warns:29,resets:1},stars:1.88},{njs:10,offset:0,notes:519,bombs:0,obstacles:12,nps:3.741,length:462.5,characteristic:"Standard",difficulty:"Expert",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:24,warns:41,resets:0},stars:2.25},{njs:10,offset:0,notes:634,bombs:0,obstacles:12,nps:4.569,length:462.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:34,warns:48,resets:0},stars:2.74}],downloadURL:"https://cdn.beatsaver.com/f22061809c798178786ca1b6e61b10ccbcbe8d28.zip",coverURL:"https://cdn.beatsaver.com/f22061809c798178786ca1b6e61b10ccbcbe8d28.jpg",previewURL:"https://cdn.beatsaver.com/f22061809c798178786ca1b6e61b10ccbcbe8d28.mp3"}],createdAt:"2018-07-27T15:47:05Z",updatedAt:"2018-07-27T15:47:05Z",lastPublishedAt:"2018-07-27T15:47:05Z"},{id:"e7ce",name:"[NoodleGames Vol.2] Rivers in the Desert - Persona 5",description:"The Ramen Noodle group is back again to bring you a map pack full of our favorite video game soundtracks and game-inspired music!\n\nHere's one of my 4 Persona maps for the pack! Hope you enjoy.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:224,songName:"Rivers In the Desert",songSubName:"(Short Ver.)",songAuthorName:"Shoji Meguro",levelAuthorName:"Ab"},stats:{plays:0,downloads:3270,upvotes:741,downvotes:15,score:.9149},uploaded:"2020-09-10T19:20:12.870Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6dd531f3920735b2b1b64f39442fcb753b4a52a7",key:"e7ce",state:"Published",createdAt:"2020-09-10T19:20:12.870Z",sageScore:4,diffs:[{njs:16,offset:-.25,notes:760,bombs:0,obstacles:0,nps:3.441,length:478.5,characteristic:"Standard",difficulty:"Expert",events:941,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.846,paritySummary:{errors:2,warns:2,resets:0}},{njs:17,offset:-.35,notes:824,bombs:0,obstacles:0,nps:3.731,length:478.5,characteristic:"Standard",difficulty:"ExpertPlus",events:946,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.846,paritySummary:{errors:2,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6dd531f3920735b2b1b64f39442fcb753b4a52a7.zip",coverURL:"https://cdn.beatsaver.com/6dd531f3920735b2b1b64f39442fcb753b4a52a7.jpg",previewURL:"https://cdn.beatsaver.com/6dd531f3920735b2b1b64f39442fcb753b4a52a7.mp3"}],createdAt:"2020-09-10T19:20:12.870Z",updatedAt:"2020-09-10T19:20:12.870Z",lastPublishedAt:"2020-09-10T19:20:12.870Z"},{id:"d0be",name:"Bohemian Rhapsody - Queen",description:"Honestly, I never really liked that other version. And I'm sure some people would agree, so since it seemed like no one else was going fix it, I went and mapped it myself.\r\nEnjoy.\r\n\r\nP.S. - If kingpeuche ever plays this, good job man. Bohemian Rhapsody isn't an easy song to map, so I have some genuine respect for you.\r\n\r\nPlay kingpeuche's version(s) here: \r\nhttps://beatsaver.com/beatmap/4a6\r\nhttps://beatsaver.com/beatmap/77c\r\n\r\nSong Info:\r\nhttps://en.wikipedia.org/wiki/Bohemian_Rhapsody",uploader:{id:4284694,name:"jokidum",uniqueSet:!0,hash:"5e15518d47f1600006e912cc",avatar:"https://cdn.beatsaver.com/avatar/494282373094047745.png",type:"DISCORD"},metadata:{bpm:120,duration:356,songName:"Bohemian Rhapsody",songSubName:"- Queen",songAuthorName:"Queen",levelAuthorName:"Jokidum"},stats:{plays:0,downloads:8506,upvotes:1666,downvotes:62,score:.9149},uploaded:"2020-08-07T20:00:07.052Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d19b4abf7d83d2882a5bf1f2bdc3b03491ef3eaf",key:"d0be",state:"Published",createdAt:"2020-08-07T20:00:07.052Z",sageScore:2,diffs:[{njs:12,offset:0,notes:1100,bombs:0,obstacles:0,nps:3.303,length:666,characteristic:"Standard",difficulty:"Expert",events:2875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:333,paritySummary:{errors:4,warns:2,resets:0}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:2875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d19b4abf7d83d2882a5bf1f2bdc3b03491ef3eaf.zip",coverURL:"https://cdn.beatsaver.com/d19b4abf7d83d2882a5bf1f2bdc3b03491ef3eaf.jpg",previewURL:"https://cdn.beatsaver.com/d19b4abf7d83d2882a5bf1f2bdc3b03491ef3eaf.mp3"}],createdAt:"2020-08-07T20:00:07.052Z",updatedAt:"2020-08-07T20:00:07.052Z",lastPublishedAt:"2020-08-07T20:00:07.052Z"},{id:"96ff",name:"Imagine Dragons - Warriors (2020 ReMap)",description:"Two years ago on the 24th July 2018 I released my first beat saber map of Warriors by Imagine Dragons. Well now its back! and its BIGGER, LOUDER and more EPIC than ever! \n\nThe map was completely remade from the ground up, so new audio, new lights and completely new difficulties. Don't worry though, the old warriors will still remain on beatsaver just in case anyone prefers playing it.\n\nThanks to Strofan and Layanmeta for playtesting :P\n\nMap preview: https://youtu.be/pdb5F0Q1cwo",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:78,duration:172,songName:"Warriors (2020 ReMap)",songSubName:"",songAuthorName:"Imagine Dragons",levelAuthorName:"Stumi"},stats:{plays:0,downloads:7111,upvotes:1861,downvotes:73,score:.9149},uploaded:"2020-04-03T16:29:45.360Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8ee2cc6242db4d138e620a347e3a2904f2a5b902",key:"96ff",state:"Published",createdAt:"2020-04-03T16:29:45.360Z",sageScore:5,diffs:[{njs:10,offset:0,notes:169,bombs:0,obstacles:67,nps:1.036,length:212,characteristic:"Standard",difficulty:"Easy",events:2808,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.077,paritySummary:{errors:32,warns:9,resets:0}},{njs:11,offset:0,notes:317,bombs:0,obstacles:82,nps:1.944,length:212,characteristic:"Standard",difficulty:"Normal",events:2808,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.077,paritySummary:{errors:52,warns:18,resets:0}},{njs:12,offset:.4,notes:506,bombs:4,obstacles:97,nps:3.103,length:212,characteristic:"Standard",difficulty:"Hard",events:2807,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.077,paritySummary:{errors:29,warns:11,resets:0}},{njs:16,offset:.2,notes:673,bombs:64,obstacles:130,nps:4.127,length:212,characteristic:"Standard",difficulty:"Expert",events:2808,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.077,paritySummary:{errors:20,warns:40,resets:11}}],downloadURL:"https://cdn.beatsaver.com/8ee2cc6242db4d138e620a347e3a2904f2a5b902.zip",coverURL:"https://cdn.beatsaver.com/8ee2cc6242db4d138e620a347e3a2904f2a5b902.jpg",previewURL:"https://cdn.beatsaver.com/8ee2cc6242db4d138e620a347e3a2904f2a5b902.mp3"}],createdAt:"2020-04-03T16:29:45.360Z",updatedAt:"2020-04-03T16:29:45.360Z",lastPublishedAt:"2020-04-03T16:29:45.360Z"},{id:"8f65",name:"Jump in the Line - Harry Belafonte",description:"My parents were big Harry Belafonte fans, and I grew up listening to this 1961 hit, Jump in the Line. In 1988, this song was a major part of the 1988 Michael Keaton classic, Beetlejuice. Who can forget Winona Ryder dancing in the air? Now you can dance along with her while slicing flying blocks!\n\nFully mapped Easy, Normal, Hard, Expert, Expert Plus Standard, and Expert Plus 360.\n\nThis song is part of my new song pack collaboration with MajorPickle: PickleTech Goes to the Movies - The 1980s.\n\nhttps://youtu.be/cbLl1ofeBZY",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:115,duration:223,songName:"Jump in the Line",songSubName:"",songAuthorName:"Harry Belafonte",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:2510,upvotes:830,downvotes:19,score:.9149},uploaded:"2020-03-13T04:10:43.592Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ba3e5d8bca161ef9e9f70383b6c33f83ecf8998a",key:"8f65",state:"Published",createdAt:"2020-03-13T04:10:43.592Z",sageScore:5,diffs:[{njs:8,offset:0,notes:274,bombs:0,obstacles:2,nps:1.256,length:418,characteristic:"Standard",difficulty:"Easy",events:919,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.087,paritySummary:{errors:67,warns:33,resets:0}},{njs:10,offset:0,notes:407,bombs:0,obstacles:2,nps:1.864,length:418.5,characteristic:"Standard",difficulty:"Normal",events:919,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:71,warns:55,resets:0}},{njs:12,offset:.5,notes:634,bombs:5,obstacles:2,nps:2.904,length:418.5,characteristic:"Standard",difficulty:"Hard",events:919,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:47,warns:51,resets:2}},{njs:12,offset:.5,notes:793,bombs:0,obstacles:2,nps:3.632,length:418.5,characteristic:"Standard",difficulty:"Expert",events:919,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:35,warns:46,resets:0}},{njs:13,offset:.5,notes:920,bombs:0,obstacles:2,nps:4.213,length:418.5,characteristic:"Standard",difficulty:"ExpertPlus",events:920,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:69,warns:77,resets:0}},{njs:13,offset:.5,notes:793,bombs:0,obstacles:2,nps:3.632,length:418.5,characteristic:"360Degree",difficulty:"ExpertPlus",events:1125,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:35,warns:46,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ba3e5d8bca161ef9e9f70383b6c33f83ecf8998a.zip",coverURL:"https://cdn.beatsaver.com/ba3e5d8bca161ef9e9f70383b6c33f83ecf8998a.jpg",previewURL:"https://cdn.beatsaver.com/ba3e5d8bca161ef9e9f70383b6c33f83ecf8998a.mp3"}],createdAt:"2020-03-13T04:10:43.592Z",updatedAt:"2020-03-13T04:10:43.592Z",lastPublishedAt:"2020-03-13T04:10:43.592Z"},{id:"8e35",name:"Beat It [Punk Goes Pop Vol.2] - Fall Out Boy ft. John Mayer",description:"The first song in my up and coming Punk Goes Pop Volume 2 playlist! A punk rock cover of Beat It as covered by Fall Out Boy featuring John Mayer. Original song by Michael Jackson.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:150,duration:227,songName:"Beat It",songSubName:"ft. John Mayer",songAuthorName:"Fall Out Boy",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4056,upvotes:935,downvotes:24,score:.9149},uploaded:"2020-03-08T05:50:10.166Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"88474a324602552647553aa9533596c7cd882c60",key:"8e35",state:"Published",createdAt:"2020-03-08T05:50:10.166Z",sageScore:5,diffs:[{njs:10,offset:0,notes:396,bombs:0,obstacles:8,nps:1.827,length:542,characteristic:"Standard",difficulty:"Easy",events:7559,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.8,paritySummary:{errors:44,warns:39,resets:0}},{njs:12,offset:0,notes:531,bombs:0,obstacles:8,nps:2.405,length:552,characteristic:"Standard",difficulty:"Normal",events:7559,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.8,paritySummary:{errors:43,warns:55,resets:0}},{njs:13.5,offset:0,notes:863,bombs:0,obstacles:6,nps:3.909,length:552,characteristic:"Standard",difficulty:"Hard",events:7559,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.8,paritySummary:{errors:50,warns:49,resets:0}},{njs:15,offset:0,notes:878,bombs:0,obstacles:6,nps:3.976,length:552,characteristic:"Standard",difficulty:"Expert",events:7559,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.8,paritySummary:{errors:47,warns:54,resets:0}}],downloadURL:"https://cdn.beatsaver.com/88474a324602552647553aa9533596c7cd882c60.zip",coverURL:"https://cdn.beatsaver.com/88474a324602552647553aa9533596c7cd882c60.jpg",previewURL:"https://cdn.beatsaver.com/88474a324602552647553aa9533596c7cd882c60.mp3"}],createdAt:"2020-03-08T05:50:10.166Z",updatedAt:"2020-03-08T05:50:10.166Z",lastPublishedAt:"2020-03-08T05:50:10.166Z"},{id:"7395",name:"Bruh Sound Effect #2",description:"tried to get it ranked\nthey said common sense to me\nquite a bruh moment\n\nhaiku written by yours truly (its a true story btw)",uploader:{id:4285820,name:"ezconfirmed",uniqueSet:!0,hash:"5d6444b8589aee0006ff76ad",avatar:"https://cdn.beatsaver.com/avatar/343415744324960256.png",type:"DISCORD"},metadata:{bpm:120,duration:4,songName:"Bruh Sound Effect #2",songSubName:"",songAuthorName:"Jame Benedict",levelAuthorName:"eZconfirmed"},stats:{plays:0,downloads:908,upvotes:807,downvotes:18,score:.9149},uploaded:"2019-12-03T19:19:01.005Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1c30514852ae45a9651d476fe748d2c9926facfc",key:"7395",state:"Published",createdAt:"2019-12-03T19:19:01.005Z",sageScore:1,diffs:[{njs:16,offset:0,notes:4,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Normal",events:10,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1c30514852ae45a9651d476fe748d2c9926facfc.zip",coverURL:"https://cdn.beatsaver.com/1c30514852ae45a9651d476fe748d2c9926facfc.jpg",previewURL:"https://cdn.beatsaver.com/1c30514852ae45a9651d476fe748d2c9926facfc.mp3"}],createdAt:"2019-12-03T19:19:01.005Z",updatedAt:"2019-12-03T19:19:01.005Z",lastPublishedAt:"2019-12-03T19:19:01.005Z"},{id:"6361",name:"Choke - I DONT KNOW HOW BUT THEY FOUND ME",description:"Here's another fun and bouncy song! The lyrics are a bit...darker than the music would have you suggest though. So bite your tongue, and choke yourself to sleep.\n\nBPM: 120\nNPS: N - 2.45; H - 3.14; Ex - 3.96\nNotes: N - 482; H - 617; Ex - 778\nWalls: N - 28; H - 20; Ex - 17\nBombs: None!\n\nThanks to helencarnate and Checkthepan for testplaying!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:120.251,duration:196,songName:"Choke",songSubName:"",songAuthorName:"I DONT KNOW HOW BUT THEY FOUND ME",levelAuthorName:"fruhead"},stats:{plays:0,downloads:1052,upvotes:388,downvotes:1,score:.9149},uploaded:"2019-09-14T17:56:33.555Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ea073ec1320fd83c3b9c5e5be5fe2cb58e846b3f",key:"6361",state:"Published",createdAt:"2019-09-14T17:56:33.555Z",sageScore:6,diffs:[{njs:12,offset:0,notes:482,bombs:0,obstacles:28,nps:2.518,length:383.667,characteristic:"Standard",difficulty:"Normal",events:4223,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.433,paritySummary:{errors:8,warns:0,resets:0}},{njs:14,offset:0,notes:617,bombs:0,obstacles:20,nps:3.223,length:383.667,characteristic:"Standard",difficulty:"Hard",events:4223,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.433,paritySummary:{errors:3,warns:0,resets:0}},{njs:16,offset:0,notes:778,bombs:0,obstacles:17,nps:4.064,length:383.667,characteristic:"Standard",difficulty:"Expert",events:4223,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.433,paritySummary:{errors:4,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ea073ec1320fd83c3b9c5e5be5fe2cb58e846b3f.zip",coverURL:"https://cdn.beatsaver.com/ea073ec1320fd83c3b9c5e5be5fe2cb58e846b3f.jpg",previewURL:"https://cdn.beatsaver.com/ea073ec1320fd83c3b9c5e5be5fe2cb58e846b3f.mp3"}],createdAt:"2019-09-14T17:56:33.555Z",updatedAt:"2019-09-14T17:56:33.555Z",lastPublishedAt:"2019-09-14T17:56:33.555Z"},{id:"8600",name:"Tom Sawyer - Rush",description:"My tribute to Rush.",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:88,duration:273,songName:"Tom Sawyer",songSubName:"",songAuthorName:"Rush",levelAuthorName:"Ris"},stats:{plays:0,downloads:2010,upvotes:806,downvotes:18,score:.9148},uploaded:"2020-02-11T03:37:38.994Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1b39e3091cda17c7d35db7707e1f673a5e8ceb66",key:"8600",state:"Published",createdAt:"2020-02-11T03:37:38.994Z",sageScore:5,diffs:[{njs:10,offset:.5,notes:386,bombs:0,obstacles:0,nps:1.456,length:388.702,characteristic:"Standard",difficulty:"Normal",events:662,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.024,paritySummary:{errors:50,warns:42,resets:0}},{njs:12,offset:0,notes:748,bombs:0,obstacles:0,nps:2.822,length:388.702,characteristic:"Standard",difficulty:"Hard",events:662,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.024,paritySummary:{errors:74,warns:89,resets:0}},{njs:16,offset:.25,notes:1055,bombs:30,obstacles:0,nps:3.981,length:388.702,characteristic:"Standard",difficulty:"Expert",events:662,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.024,paritySummary:{errors:75,warns:86,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1b39e3091cda17c7d35db7707e1f673a5e8ceb66.zip",coverURL:"https://cdn.beatsaver.com/1b39e3091cda17c7d35db7707e1f673a5e8ceb66.jpg",previewURL:"https://cdn.beatsaver.com/1b39e3091cda17c7d35db7707e1f673a5e8ceb66.mp3"}],createdAt:"2020-02-11T03:37:38.994Z",updatedAt:"2020-02-11T03:37:38.994Z",lastPublishedAt:"2020-02-11T03:37:38.994Z"},{id:"55d1",name:"Short Skirt Long Jacket - Cake",description:"Swing along with Cake's 2001 hit, Short Skirt Long Jacket. Even if you're not a Cake fan, you might remember this as the theme song for the TV show Chuck.\n\nFully mapped Easy, Normal, Hard, and Expert. Quest friendly!\n\nhttps://www.youtube.com/watch?v=1RKRbWus-qM",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:120,duration:203,songName:"Short Skirt Long Jacket",songSubName:"",songAuthorName:"Cake",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:1700,upvotes:671,downvotes:12,score:.9148},uploaded:"2019-07-07T01:49:57.642Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"20b9326bd71db4454aba08df06b035ea536322a9",key:"55d1",state:"Published",createdAt:"2019-07-07T01:49:57.642Z",sageScore:5,diffs:[{njs:12,offset:0,notes:234,bombs:0,obstacles:4,nps:1.188,length:394,characteristic:"Standard",difficulty:"Easy",events:6191,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197,paritySummary:{errors:69,warns:25,resets:0}},{njs:13,offset:0,notes:358,bombs:0,obstacles:4,nps:1.815,length:394.5,characteristic:"Standard",difficulty:"Normal",events:6191,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:90,warns:48,resets:0}},{njs:15,offset:0,notes:562,bombs:0,obstacles:44,nps:2.849,length:394.5,characteristic:"Standard",difficulty:"Hard",events:6191,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:31,warns:49,resets:0}},{njs:17,offset:0,notes:669,bombs:0,obstacles:32,nps:3.392,length:394.5,characteristic:"Standard",difficulty:"Expert",events:6195,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:45,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/20b9326bd71db4454aba08df06b035ea536322a9.zip",coverURL:"https://cdn.beatsaver.com/20b9326bd71db4454aba08df06b035ea536322a9.jpg",previewURL:"https://cdn.beatsaver.com/20b9326bd71db4454aba08df06b035ea536322a9.mp3"}],createdAt:"2019-07-07T01:49:57.642Z",updatedAt:"2019-07-07T01:49:57.642Z",lastPublishedAt:"2019-07-07T01:49:57.642Z"},{id:"4a08",name:"Attack on Titan OP 5 | Shoukei to Shikabane no Michi | Shingeki no Kyojin OP 5| Mapped by Ab",description:"I offer all difficulties except Easy here. But Normal is pretty easy.\r\nSeizure warning I guess.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:178,duration:89,songName:"Attack on Titan OP5 (Shoukei to Shikabane no Michi)",songSubName:"Linked Horizon",songAuthorName:"Ab",levelAuthorName:"TheAb"},stats:{plays:0,downloads:2844,upvotes:891,downvotes:22,score:.9148},uploaded:"2019-05-02T20:07:56Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"922afca4bfe670e6ebff75c18245035744193d22",key:"4a08",state:"Published",createdAt:"2019-05-02T20:07:56Z",sageScore:3,diffs:[{njs:10,offset:0,notes:146,bombs:5,obstacles:5,nps:1.685,length:257,characteristic:"Standard",difficulty:"Normal",events:5631,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:86.629,paritySummary:{errors:62,warns:1,resets:2}},{njs:13,offset:0,notes:238,bombs:12,obstacles:7,nps:2.747,length:257,characteristic:"Standard",difficulty:"Hard",events:5631,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:86.629,paritySummary:{errors:30,warns:9,resets:2}},{njs:15,offset:1,notes:373,bombs:4,obstacles:6,nps:4.306,length:257,characteristic:"Standard",difficulty:"Expert",events:5631,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:86.629,paritySummary:{errors:19,warns:20,resets:2}},{njs:18,offset:0,notes:555,bombs:1,obstacles:3,nps:6.599,length:249.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5634,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:84.101,paritySummary:{errors:29,warns:39,resets:0}}],downloadURL:"https://cdn.beatsaver.com/922afca4bfe670e6ebff75c18245035744193d22.zip",coverURL:"https://cdn.beatsaver.com/922afca4bfe670e6ebff75c18245035744193d22.jpg",previewURL:"https://cdn.beatsaver.com/922afca4bfe670e6ebff75c18245035744193d22.mp3"}],createdAt:"2019-05-02T20:07:56Z",updatedAt:"2019-05-02T20:07:56Z",lastPublishedAt:"2019-05-02T20:07:56Z"},{id:"487c",name:"Don't Stop Me Now - Queen",description:"Huge thanks to WhipStickGoStop for the full combo vid!\r\nhttps://www.youtube.com/watch?v=RPDvDY2HT58\r\n\r\nPlaytesters <3 WhipStickGoStop, XORoseGold, MozzVR, Izzake",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:120,duration:214,songName:"Don't Stop Me Now",songSubName:"Queen",songAuthorName:"Ryger",levelAuthorName:"Ryger"},stats:{plays:0,downloads:5041,upvotes:1291,downvotes:42,score:.9148},uploaded:"2019-04-26T16:28:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9db67df13260c4715d33068e3982071ca6e3e815",key:"487c",state:"Published",createdAt:"2019-04-26T16:28:36Z",sageScore:6,diffs:[{njs:12,offset:0,notes:734,bombs:0,obstacles:1,nps:3.677,length:519.002,characteristic:"Standard",difficulty:"ExpertPlus",events:3998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.501,paritySummary:{errors:71,warns:56,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9db67df13260c4715d33068e3982071ca6e3e815.zip",coverURL:"https://cdn.beatsaver.com/9db67df13260c4715d33068e3982071ca6e3e815.jpg",previewURL:"https://cdn.beatsaver.com/9db67df13260c4715d33068e3982071ca6e3e815.mp3"}],createdAt:"2019-04-26T16:28:36Z",updatedAt:"2019-04-26T16:28:36Z",lastPublishedAt:"2019-04-26T16:28:36Z"},{id:"243c",name:"Ocarina of Time Medley [Smash Bros Map Pack]",description:"by Michiko Naruke\r\n\r\nPart of the Smash Bros map pack!\r\n\r\nVideo: https://youtu.be/lw7EN7Xu-9c",uploader:{id:39365,name:"todokete",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee70",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee70?d=retro",type:"SIMPLE"},metadata:{bpm:145,duration:114,songName:"Ocarina of Time Medley",songSubName:"Michiko Naruke",songAuthorName:"Todokete",levelAuthorName:"todokete"},stats:{plays:0,downloads:4995,upvotes:2238,downvotes:95,score:.9148},uploaded:"2018-12-07T00:16:02Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"00b539e86ea3f0b1e966544a297fb4942e499e6f",key:"243c",state:"Published",createdAt:"2018-12-07T00:16:02Z",sageScore:5,diffs:[{njs:11,offset:0,notes:239,bombs:0,obstacles:0,nps:2.179,length:265,characteristic:"Standard",difficulty:"Hard",events:882,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:109.655,paritySummary:{errors:34,warns:8,resets:0},stars:1.33},{njs:14,offset:0,notes:330,bombs:0,obstacles:0,nps:3.008,length:265,characteristic:"Standard",difficulty:"Expert",events:882,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:109.655,paritySummary:{errors:37,warns:37,resets:0},stars:2.97}],downloadURL:"https://cdn.beatsaver.com/00b539e86ea3f0b1e966544a297fb4942e499e6f.zip",coverURL:"https://cdn.beatsaver.com/00b539e86ea3f0b1e966544a297fb4942e499e6f.jpg",previewURL:"https://cdn.beatsaver.com/00b539e86ea3f0b1e966544a297fb4942e499e6f.mp3"}],createdAt:"2018-12-07T00:16:02Z",updatedAt:"2018-12-07T00:16:02Z",lastPublishedAt:"2018-12-07T00:16:02Z"},{id:"115c2",name:"[Wall Map] Alan Walker - Darkside (feat. Au/Ra and Tomine Harket)",description:"-FALL INTO THE DARKSIDE-\n\nMy first big wall map to feature ne 1.2 pogger, be prepared for a long load time and possible lag spikes.\nThanks to Rizthesnuggie and Liams2005 for contributing their maps and for putting up with my shit throughout this :)\nThanks to Krueger for answering all my programming questions.\n\nKrueger's Beatsaber Vids: https://www.youtube.com/watch?v=Q0hNfhk4Ngs&t=142s\nPlaythrough: https://www.youtube.com/watch?v=9BqzyBwFPE4\n\nmy ne tool: https://github.com/thelightdesigner/ScuffedWalls/releases/tag/v0.5.0-beta\n\nRequirements:\nNoodle Extensions\nChroma\nCustom JSON Data",uploader:{id:73008,name:"thelightdesigner",uniqueSet:!0,hash:"5cff0b7798cc5a672c85627a",avatar:"https://cdn.beatsaver.com/avatar/480555157952659489.png",type:"DISCORD"},metadata:{bpm:170,duration:178,songName:"Darkside",songSubName:"(ft. Au/Ra & Tomine Harket)",songAuthorName:"Alan Walker",levelAuthorName:"Liam, Riz & KyleT"},stats:{plays:0,downloads:3946,upvotes:1365,downvotes:46,score:.9147},uploaded:"2020-11-27T05:08:50.986Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"713e301fc4f774edf4ea1001a19dd5bf7e3f4ce6",key:"115c2",state:"Published",createdAt:"2020-11-27T05:08:50.986Z",sageScore:1,diffs:[{njs:16,offset:0,notes:500,bombs:24,obstacles:65952,nps:2.905,length:487.667,characteristic:"Standard",difficulty:"Hard",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:172.118,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:0,notes:610,bombs:36,obstacles:65952,nps:3.571,length:484,characteristic:"Standard",difficulty:"Expert",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:170.824,paritySummary:{errors:1,warns:0,resets:12}},{njs:18,offset:0,notes:866,bombs:0,obstacles:65952,nps:5.07,length:484,characteristic:"Standard",difficulty:"ExpertPlus",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:170.824,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/713e301fc4f774edf4ea1001a19dd5bf7e3f4ce6.zip",coverURL:"https://cdn.beatsaver.com/713e301fc4f774edf4ea1001a19dd5bf7e3f4ce6.jpg",previewURL:"https://cdn.beatsaver.com/713e301fc4f774edf4ea1001a19dd5bf7e3f4ce6.mp3"}],createdAt:"2020-11-27T05:08:50.986Z",updatedAt:"2020-11-27T05:08:50.986Z",lastPublishedAt:"2020-11-27T05:08:50.986Z"},{id:"57cb",name:"CAN CAN WORLD",description:"Twitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:158,duration:297,songName:"CAN CAN WORLD",songSubName:"",songAuthorName:"MAKKERONI",levelAuthorName:"Dack"},stats:{plays:0,downloads:813,upvotes:523,downvotes:6,score:.9147},uploaded:"2019-07-18T23:50:08.241Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d2dab61784b612b9b807e127260a81ed974315af",key:"57cb",state:"Published",createdAt:"2019-07-18T23:50:08.241Z",sageScore:3,diffs:[{njs:12,offset:0,notes:531,bombs:0,obstacles:114,nps:1.828,length:765,characteristic:"Standard",difficulty:"Normal",events:1776,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:290.506,paritySummary:{errors:14,warns:18,resets:0}},{njs:13,offset:0,notes:806,bombs:0,obstacles:114,nps:2.774,length:765,characteristic:"Standard",difficulty:"Hard",events:1776,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:290.506,paritySummary:{errors:12,warns:11,resets:0}},{njs:14,offset:0,notes:1150,bombs:0,obstacles:110,nps:3.959,length:765,characteristic:"Standard",difficulty:"Expert",events:1776,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:290.506,paritySummary:{errors:5,warns:9,resets:0}},{njs:17,offset:0,notes:1399,bombs:8,obstacles:114,nps:4.816,length:765,characteristic:"Standard",difficulty:"ExpertPlus",events:1784,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:290.506,paritySummary:{errors:31,warns:28,resets:2}}],downloadURL:"https://cdn.beatsaver.com/d2dab61784b612b9b807e127260a81ed974315af.zip",coverURL:"https://cdn.beatsaver.com/d2dab61784b612b9b807e127260a81ed974315af.jpg",previewURL:"https://cdn.beatsaver.com/d2dab61784b612b9b807e127260a81ed974315af.mp3"}],createdAt:"2019-07-18T23:50:08.241Z",updatedAt:"2019-07-18T23:50:08.241Z",lastPublishedAt:"2019-07-18T23:50:08.241Z"},{id:"66f",name:"This Is Gospel - Panic! At The Disco",description:"Expert - Hard - Normal Charts\nLighting Events\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:156,duration:180,songName:"This Is Gospel",songSubName:"Panic! At The Disco",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:2221,upvotes:1421,downvotes:49,score:.9147},uploaded:"2018-06-24T10:25:39Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e14ecfe4def439051ae404353aae6aabc7d1e05f",key:"66f",state:"Published",createdAt:"2018-06-24T10:25:39Z",sageScore:4,diffs:[{njs:10,offset:0,notes:382,bombs:0,obstacles:14,nps:2.178,length:455.999,characteristic:"Standard",difficulty:"Normal",events:970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.384,paritySummary:{errors:47,warns:12,resets:0}},{njs:10,offset:0,notes:619,bombs:0,obstacles:14,nps:3.529,length:456,characteristic:"Standard",difficulty:"Hard",events:970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.385,paritySummary:{errors:77,warns:55,resets:0}},{njs:10,offset:0,notes:733,bombs:0,obstacles:14,nps:4.179,length:456,characteristic:"Standard",difficulty:"Expert",events:970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.385,paritySummary:{errors:33,warns:25,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e14ecfe4def439051ae404353aae6aabc7d1e05f.zip",coverURL:"https://cdn.beatsaver.com/e14ecfe4def439051ae404353aae6aabc7d1e05f.jpg",previewURL:"https://cdn.beatsaver.com/e14ecfe4def439051ae404353aae6aabc7d1e05f.mp3"}],createdAt:"2018-06-24T10:25:39Z",updatedAt:"2018-06-24T10:25:39Z",lastPublishedAt:"2018-06-24T10:25:39Z"},{id:"4739",name:"Paramore - Decode",description:"Twilight = Hard\r\nParamore = Expert",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:164,duration:262,songName:"Decode",songSubName:"Paramore",songAuthorName:"KikaeAeon",levelAuthorName:"kikaeaeon"},stats:{plays:0,downloads:1976,upvotes:950,downvotes:25,score:.9146},uploaded:"2019-04-20T06:10:32Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"964d8f8c41aaf56aa2cfc06072eff70f599d6a3f",key:"4739",state:"Published",createdAt:"2019-04-20T06:10:32Z",sageScore:6,diffs:[{njs:10,offset:0,notes:616,bombs:0,obstacles:16,nps:2.556,length:658.75,characteristic:"Standard",difficulty:"Hard",events:798,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.006,paritySummary:{errors:20,warns:8,resets:0}},{njs:15,offset:0,notes:983,bombs:0,obstacles:16,nps:4.079,length:658.75,characteristic:"Standard",difficulty:"Expert",events:1165,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.006,paritySummary:{errors:28,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/964d8f8c41aaf56aa2cfc06072eff70f599d6a3f.zip",coverURL:"https://cdn.beatsaver.com/964d8f8c41aaf56aa2cfc06072eff70f599d6a3f.jpg",previewURL:"https://cdn.beatsaver.com/964d8f8c41aaf56aa2cfc06072eff70f599d6a3f.mp3"}],createdAt:"2019-04-20T06:10:32Z",updatedAt:"2019-04-20T06:10:32Z",lastPublishedAt:"2019-04-20T06:10:32Z"},{id:"9a3f",name:"[Tokyo Machine Pack] Tokyo Machine - BUBBLES",description:"2/3\nPart of the Tokyo Machine Pack, a collab between Pixelguy, CyanSnow and I.\nMap and lights both by me.\n\nCyanSnow's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c8543ac\nPixelguymm's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c8541a8\n\nCheck out the trailer for the pack here: https://www.youtube.com/watch?v=lStPUnecsD8",uploader:{id:3376,name:"firestrikecm",uniqueSet:!0,hash:"5cff0b7698cc5a672c85479f",avatar:"https://cdn.beatsaver.com/avatar/3376.jpg",type:"SIMPLE"},metadata:{bpm:128,duration:232,songName:"BUBBLES",songSubName:"",songAuthorName:"Tokyo Machine",levelAuthorName:"FireStrike"},stats:{plays:0,downloads:2141,upvotes:926,downvotes:24,score:.9145},uploaded:"2020-04-12T18:21:41.920Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d4b087ffab62b7994ce433969c21ef6b29462163",key:"9a3f",state:"Published",createdAt:"2020-04-12T18:21:41.920Z",sageScore:5,diffs:[{njs:20,offset:.7,notes:883,bombs:0,obstacles:10,nps:3.868,length:487,characteristic:"Standard",difficulty:"ExpertPlus",events:3192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228.281,paritySummary:{errors:3,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d4b087ffab62b7994ce433969c21ef6b29462163.zip",coverURL:"https://cdn.beatsaver.com/d4b087ffab62b7994ce433969c21ef6b29462163.jpg",previewURL:"https://cdn.beatsaver.com/d4b087ffab62b7994ce433969c21ef6b29462163.mp3"}],createdAt:"2020-04-12T18:21:41.920Z",updatedAt:"2020-04-12T18:21:41.920Z",lastPublishedAt:"2020-04-12T18:21:41.920Z"},{id:"7578",name:"Shape of You [Punk Goes Pop Vol.1] - Our Last Night",description:'A rock cover of "Shape of You" by rock band, Our Last Night. Original song by Ed Sheeran.\n\nEDIT: Fixed one missing note mismap',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:192,duration:240,songName:"Shape of You (Rock Cover)",songSubName:"",songAuthorName:"Our Last Night",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2427,upvotes:618,downvotes:10,score:.9145},uploaded:"2019-12-10T17:53:07.422Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"dfff04c4d50466e5a6c9b72466af5e72aee623c3",key:"7578",state:"Published",createdAt:"2019-12-10T17:53:07.422Z",sageScore:4,diffs:[{njs:16,offset:0,notes:1039,bombs:0,obstacles:6,nps:4.421,length:752,characteristic:"Standard",difficulty:"ExpertPlus",events:2377,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:235,paritySummary:{errors:59,warns:56,resets:0}}],downloadURL:"https://cdn.beatsaver.com/dfff04c4d50466e5a6c9b72466af5e72aee623c3.zip",coverURL:"https://cdn.beatsaver.com/dfff04c4d50466e5a6c9b72466af5e72aee623c3.jpg",previewURL:"https://cdn.beatsaver.com/dfff04c4d50466e5a6c9b72466af5e72aee623c3.mp3"}],createdAt:"2019-12-10T17:53:07.422Z",updatedAt:"2019-12-10T17:53:07.422Z",lastPublishedAt:"2019-12-10T17:53:07.422Z"},{id:"7375",name:"Martin O' Donnell - Tip of the Spear (Halo Reach)",description:"#16\nAnyone else hyped for Halo Reach tomorrow? I know I am, probably my favorite FPS franchise. Time to grind back to where I was (even though leveling is different). Anyway, here's one of the songs from the game.\n\nN/S:\nEasy: 0.84\nNormal: 1.22\nHard (Heroic): 2.12\nExpert (Legendary): 2.61\nLights: 666 (998 on expert/legendary somehow)",uploader:{id:4284294,name:"eop-glacier",uniqueSet:!0,hash:"5d50e360adb1a20006305ca0",avatar:"https://cdn.beatsaver.com/avatar/459209214376804363.png",type:"DISCORD"},metadata:{bpm:126,duration:186,songName:"Tip of the Spear",songSubName:"",songAuthorName:"Martin O' Donnell",levelAuthorName:"EOP Glacier"},stats:{plays:0,downloads:2106,upvotes:688,downvotes:13,score:.9145},uploaded:"2019-12-03T04:18:47.641Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"16e10bdc52ee5a515fab9661df0efffcaa3712d3",key:"7375",state:"Published",createdAt:"2019-12-03T04:18:47.641Z",sageScore:4,diffs:[{njs:11,offset:0,notes:158,bombs:0,obstacles:7,nps:1.009,length:329,characteristic:"Standard",difficulty:"Easy",events:663,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.667,paritySummary:{errors:6,warns:0,resets:0}},{njs:13,offset:0,notes:229,bombs:0,obstacles:10,nps:1.462,length:329,characteristic:"Standard",difficulty:"Normal",events:663,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.667,paritySummary:{errors:1,warns:0,resets:0}},{njs:15.5,offset:0,notes:397,bombs:0,obstacles:9,nps:2.533,length:329.075,characteristic:"Standard",difficulty:"Hard",events:663,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.702,paritySummary:{errors:2,warns:0,resets:0}},{njs:18,offset:.2,notes:489,bombs:0,obstacles:25,nps:3.121,length:329,characteristic:"Standard",difficulty:"Expert",events:995,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.667,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/16e10bdc52ee5a515fab9661df0efffcaa3712d3.zip",coverURL:"https://cdn.beatsaver.com/16e10bdc52ee5a515fab9661df0efffcaa3712d3.jpg",previewURL:"https://cdn.beatsaver.com/16e10bdc52ee5a515fab9661df0efffcaa3712d3.mp3"}],createdAt:"2019-12-03T04:18:47.641Z",updatedAt:"2019-12-03T04:18:47.641Z",lastPublishedAt:"2019-12-03T04:18:47.641Z"},{id:"5a7c",name:"Bon Jovi - Livin' on a Prayer",description:"Its been waay too long since I last released a map. Been on a break from Beatsaber lately but now that I'm back I hope I can carry on getting out monthly maps like I used to.\nThis song is victim to some pretty nasty variable BPM, but hopefully if I've done it right you wont be able to notice any timing issues ;) Regardless, Hopefully you can give it a go and let me know what you think!\nVideo preview: https://www.youtube.com/watch?v=eYKJrkcHj0I",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:121.8,duration:248,songName:"Livin' on a Prayer",songSubName:"",songAuthorName:"Bon Jovi",levelAuthorName:"Stumi"},stats:{plays:0,downloads:8093,upvotes:1356,downvotes:46,score:.9145},uploaded:"2019-08-03T20:42:08.797Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8e4e798189ddecb9f49f624d6aa6a0648dd2650b",key:"5a7c",state:"Published",createdAt:"2019-08-03T20:42:08.797Z",sageScore:2,diffs:[{njs:10,offset:0,notes:253,bombs:4,obstacles:48,nps:1.12,length:458.614,characteristic:"Standard",difficulty:"Easy",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.918,paritySummary:{errors:59,warns:11,resets:2}},{njs:11,offset:0,notes:432,bombs:0,obstacles:90,nps:1.914,length:458.125,characteristic:"Standard",difficulty:"Normal",events:1974,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.677,paritySummary:{errors:58,warns:20,resets:0}},{njs:13,offset:0,notes:755,bombs:0,obstacles:79,nps:3.345,length:458.125,characteristic:"Standard",difficulty:"Hard",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.677,paritySummary:{errors:45,warns:58,resets:0}},{njs:15,offset:0,notes:920,bombs:0,obstacles:86,nps:4.077,length:458.125,characteristic:"Standard",difficulty:"Expert",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.677,paritySummary:{errors:43,warns:47,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8e4e798189ddecb9f49f624d6aa6a0648dd2650b.zip",coverURL:"https://cdn.beatsaver.com/8e4e798189ddecb9f49f624d6aa6a0648dd2650b.jpg",previewURL:"https://cdn.beatsaver.com/8e4e798189ddecb9f49f624d6aa6a0648dd2650b.mp3"}],createdAt:"2019-08-03T20:42:08.797Z",updatedAt:"2019-08-03T20:42:08.797Z",lastPublishedAt:"2019-08-03T20:42:08.797Z"},{id:"1fee",name:"Wavin' Flag (100k Contest)",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!",uploader:{id:2521,name:"darkgrisen",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fe44",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84fe44?d=retro",type:"SIMPLE"},metadata:{bpm:152,duration:215,songName:"Wavin' Flag (100k Contest)",songSubName:"K'NAAN",songAuthorName:"DarkGrisen",levelAuthorName:"DarkGrisen"},stats:{plays:0,downloads:4479,upvotes:1244,downvotes:40,score:.9145},uploaded:"2018-11-12T17:47:43Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"de9c89b59023a9e30e2c4dfc9b63dd30807b68cb",key:"1fee",state:"Published",createdAt:"2018-11-12T17:47:43Z",sageScore:6,diffs:[{njs:9,offset:0,notes:157,bombs:0,obstacles:2,nps:.765,length:520,characteristic:"Standard",difficulty:"Easy",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:18,warns:14,resets:0}},{njs:9,offset:0,notes:360,bombs:0,obstacles:2,nps:1.754,length:520,characteristic:"Standard",difficulty:"Normal",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:54,warns:25,resets:0}},{njs:10,offset:0,notes:496,bombs:0,obstacles:2,nps:2.416,length:520,characteristic:"Standard",difficulty:"Hard",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:46,warns:40,resets:0}},{njs:11,offset:0,notes:676,bombs:0,obstacles:2,nps:3.293,length:520,characteristic:"Standard",difficulty:"Expert",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:58,warns:79,resets:0}},{njs:12,offset:0,notes:869,bombs:0,obstacles:2,nps:4.234,length:520,characteristic:"Standard",difficulty:"ExpertPlus",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:47,warns:72,resets:0}}],downloadURL:"https://cdn.beatsaver.com/de9c89b59023a9e30e2c4dfc9b63dd30807b68cb.zip",coverURL:"https://cdn.beatsaver.com/de9c89b59023a9e30e2c4dfc9b63dd30807b68cb.jpg",previewURL:"https://cdn.beatsaver.com/de9c89b59023a9e30e2c4dfc9b63dd30807b68cb.mp3"}],createdAt:"2018-11-12T17:47:43Z",updatedAt:"2018-11-12T17:47:43Z",lastPublishedAt:"2018-11-12T17:47:43Z"},{id:"b741",name:"Eskimo Callboy - Hypa Hypa",description:"Genre: Post-Hardcore / Metalcore / Electronic\n\nIf you don't want to see flying words or don't have MappingExtensions, just play \"No Lyrics\" difficult.\n\nPreview by Kira Argenta: https://www.youtube.com/watch?v=pFSpAzmNbJo\nPreview by Superritchman: https://www.youtube.com/watch?v=XwGZQNPI08c\n\nFeedback (Discord): ExistenceExpire#9858\nFeedback and support: https://ko-fi.com/existenceexpire",uploader:{id:69683,name:"existenceexpire",uniqueSet:!0,hash:"5e9e16bb2a34090006a1aed5",avatar:"https://cdn.beatsaver.com/avatar/226078773517352960.png",type:"DISCORD"},metadata:{bpm:152,duration:210,songName:"Hypa Hypa",songSubName:"",songAuthorName:"Eskimo Callboy",levelAuthorName:"ExistenceExpire"},stats:{plays:0,downloads:1477,upvotes:662,downvotes:12,score:.9144},uploaded:"2020-06-28T18:04:59.590Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b39e9d698422517226f24666ebd7ae3d7aaf244a",key:"b741",state:"Published",createdAt:"2020-06-28T18:04:59.590Z",sageScore:5,diffs:[{njs:18,offset:.15301132,notes:912,bombs:59,obstacles:0,nps:4.499,length:513.5,characteristic:"Standard",difficulty:"Expert",events:3501,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.697,paritySummary:{errors:6,warns:16,resets:8}},{njs:18,offset:.15301132,notes:912,bombs:59,obstacles:12486,nps:4.499,length:513.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3501,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:202.697,paritySummary:{errors:6,warns:16,resets:8}}],downloadURL:"https://cdn.beatsaver.com/b39e9d698422517226f24666ebd7ae3d7aaf244a.zip",coverURL:"https://cdn.beatsaver.com/b39e9d698422517226f24666ebd7ae3d7aaf244a.jpg",previewURL:"https://cdn.beatsaver.com/b39e9d698422517226f24666ebd7ae3d7aaf244a.mp3"}],createdAt:"2020-06-28T18:04:59.590Z",updatedAt:"2020-06-28T18:04:59.590Z",lastPublishedAt:"2020-06-28T18:04:59.590Z"},{id:"5e06",name:"I Will Not Bow - Breaking Benjamin",description:"Shoutouts to twitch.tv/whipstickgostop and twitch.tv/xorosegold for playtesting!",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:108,duration:218,songName:"I Will Not Bow",songSubName:"",songAuthorName:"Breaking Benjamin",levelAuthorName:"Ris"},stats:{plays:0,downloads:2375,upvotes:819,downvotes:19,score:.9144},uploaded:"2019-08-20T03:22:59.663Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"29c0a39db6a53375d2359f4a2a492a0ea784d04f",key:"5e06",state:"Published",createdAt:"2019-08-20T03:22:59.663Z",sageScore:4,diffs:[{njs:10,offset:1,notes:310,bombs:6,obstacles:4,nps:1.516,length:368,characteristic:"Standard",difficulty:"Normal",events:318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.444,paritySummary:{errors:60,warns:40,resets:0}},{njs:12,offset:1,notes:619,bombs:73,obstacles:4,nps:2.936,length:379.5,characteristic:"Standard",difficulty:"Hard",events:318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.833,paritySummary:{errors:59,warns:67,resets:0}},{njs:16,offset:0,notes:942,bombs:73,obstacles:4,nps:4.468,length:379.5,characteristic:"Standard",difficulty:"Expert",events:318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.833,paritySummary:{errors:59,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/29c0a39db6a53375d2359f4a2a492a0ea784d04f.zip",coverURL:"https://cdn.beatsaver.com/29c0a39db6a53375d2359f4a2a492a0ea784d04f.jpg",previewURL:"https://cdn.beatsaver.com/29c0a39db6a53375d2359f4a2a492a0ea784d04f.mp3"}],createdAt:"2019-08-20T03:22:59.663Z",updatedAt:"2019-08-20T03:22:59.663Z",lastPublishedAt:"2019-08-20T03:22:59.663Z"},{id:"29f8",name:"Camila Cabello - Havana (Remapped)",description:"Update: Added Hard Difficulty :)\r\n\r\nI know there's a map for Havana already, but I decided to make another version of it.\r\nPlaythrough:\r\nhttps://www.youtube.com/watch?v=d7KNm2BzcqA\r\n\r\nEnjoy!\r\n\r\n- ORYGINAL (aka guachitonico)",uploader:{id:45130,name:"guachitonico",uniqueSet:!0,hash:"5cff0b7698cc5a672c854035",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c854035?d=retro",type:"SIMPLE"},metadata:{bpm:105,duration:220,songName:"Havana",songSubName:"Camila Cabello",songAuthorName:"Remapped by ORYGINAL",levelAuthorName:"guachitonico"},stats:{plays:0,downloads:2862,upvotes:1259,downvotes:41,score:.9144},uploaded:"2019-01-01T22:14:06Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5d8e56195df0a9735b4c6db2884d3ee6a2f5acef",key:"29f8",state:"Published",createdAt:"2019-01-01T22:14:06Z",sageScore:6,diffs:[{njs:10,offset:0,notes:489,bombs:0,obstacles:9,nps:2.325,length:368,characteristic:"Standard",difficulty:"Hard",events:1019,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.286,paritySummary:{errors:68,warns:18,resets:0}},{njs:12,offset:0,notes:777,bombs:0,obstacles:9,nps:3.695,length:368,characteristic:"Standard",difficulty:"Expert",events:1019,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.286,paritySummary:{errors:45,warns:16,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5d8e56195df0a9735b4c6db2884d3ee6a2f5acef.zip",coverURL:"https://cdn.beatsaver.com/5d8e56195df0a9735b4c6db2884d3ee6a2f5acef.jpg",previewURL:"https://cdn.beatsaver.com/5d8e56195df0a9735b4c6db2884d3ee6a2f5acef.mp3"}],createdAt:"2019-01-01T22:14:06Z",updatedAt:"2019-01-01T22:14:06Z",lastPublishedAt:"2019-01-01T22:14:06Z"},{id:"22bf",name:"Hold Me Down - Halsey",description:"YouTube Playthrough: https://www.youtube.com/channel/UCeG7cXNLr6dKSYBKqoUvcbQ\r\nDifficulties: Expert+, Expert, Hard, Normal, Easy\r\nNote Jump Speeds From E+ to Easy: 15, 13, 11, 10, 10\r\nLighting & Events: Yes\r\nBPM: 146",uploader:{id:30754,name:"styngme",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9cd",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9cd?d=retro",type:"SIMPLE"},metadata:{bpm:146,duration:208,songName:"Hold Me Down",songSubName:"Halsey",songAuthorName:"StyngMe",levelAuthorName:"styngme"},stats:{plays:0,downloads:4092,upvotes:1204,downvotes:38,score:.9144},uploaded:"2018-11-29T03:58:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a6cced35a0ac357cc16d5e4328be59e52339a157",key:"22bf",state:"Published",createdAt:"2018-11-29T03:58:10Z",sageScore:7,diffs:[{njs:10,offset:0,notes:483,bombs:0,obstacles:59,nps:2.449,length:480,characteristic:"Standard",difficulty:"Easy",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:19,warns:15,resets:0}},{njs:10,offset:0,notes:588,bombs:0,obstacles:62,nps:2.981,length:480,characteristic:"Standard",difficulty:"Normal",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:40,warns:36,resets:0}},{njs:11,offset:0,notes:674,bombs:0,obstacles:65,nps:3.417,length:480,characteristic:"Standard",difficulty:"Hard",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:46,warns:53,resets:0}},{njs:13,offset:0,notes:697,bombs:0,obstacles:97,nps:3.533,length:480,characteristic:"Standard",difficulty:"Expert",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:53,warns:80,resets:0}},{njs:15,offset:0,notes:814,bombs:0,obstacles:114,nps:4.127,length:480,characteristic:"Standard",difficulty:"ExpertPlus",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:50,warns:75,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a6cced35a0ac357cc16d5e4328be59e52339a157.zip",coverURL:"https://cdn.beatsaver.com/a6cced35a0ac357cc16d5e4328be59e52339a157.jpg",previewURL:"https://cdn.beatsaver.com/a6cced35a0ac357cc16d5e4328be59e52339a157.mp3"}],createdAt:"2018-11-29T03:58:10Z",updatedAt:"2018-11-29T03:58:10Z",lastPublishedAt:"2018-11-29T03:58:10Z"},{id:"198ba",name:"Hades - The Unseen Ones",description:'One of the many great game OSTs from the game Hades !\nThis time however.......we are talking rock and roll, the epic guitars by Masahiro Aoki and Daisuke Kurosawa directed by Darren Korb !\nSome of you that played the game may not of heard of this OST.....you will need to keep on playing to encounter it !\n\nWARNING : THE DESCRIPTION MAY CONTAIN SPOILERS, PLEASE TAKE NOTE !\n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \nIf you wish to take a lore dive with the OST based on my understanding of the story the characters POV, keep reading :D !\n...................................................................................................................................\nNarrator : Prince Zagreus, son of Hades - God of the Dead and ruler of the Underworld, has embarked on a mission to escape the Underworld to the surface.\nWhat started as a personal affair with his father and a personal will to breath fresh air from the surface turned into a dedicated mission as he discovered that his very own mother was alive and living on the surface !\nAfter the first initial escape in which Zagreus met up with her, he suddenly started to understand many circles in his life that were still very much opened thus far.\n\nUnfortunately.......each time Zagreus manages to escape and meet his mother for a chat, the Styx grant him only but a moment to exchange a few words with his mother on her cabin before he gets engulfed and taken aback to the underworld.\n\nDetermined to keep visiting his mother despite the ordeal and in order to understand why she was missing from his life, he keeps on going.\n\nHades, being unpleased by his sons rampage, decides to punish him by a "Pact of Punisment" in which Zagreus will need to sign in order to grow stronger on his expedition.\n\nOnce came a time where Zagreus pact option became increasingly intense that he had to resort to..... other punishment options that he did not know the consequences of.....\nMeanwhile, Zagreus is preparing for yet another escape attempt.\n\nZagreus : "Hmm.....which pact should I choose this time.......what\'s this? Extreme Measures?"\nNarrator : reading through the pact, Zagreus understood it meant that each underworld boss will be significantly stronger with new weapons at thier disposal.........including the last one that so happens to be his very own father !\nZagreus : "How hard can it be? let\'s go ! "\n\nNarrator: And thus Zagreus began yet another escape attempt, with the thought of the pact in his mind......\n\n.......Time goes by..............\n\nAfter fighting the Fury sisters, vanquishing the Hydra, beating Theseus and Asterius and braving through the Satyr tunnels, he finally arrives to his final showdown.....\nOpening the gates to the surface, Zagreus Green and Red eyes spot a figure in Golden-Red armor, this figure was also the final obstacle to his mothers cabin....\n\nThus the two begin a dialog :\nZagrues : "Think you can beat me this time, Father?"\nHades : "I was reviewing the terms of the Pact of Punishment to which you are bound.\nEven when my servants resort to extreme measures, they were still unable to surpass you then.\nSo now.....it is my turn !"\nZagrues : "Caught you unprepared, did I? After Theseus and his Macedonian, I half-expected to see you thundering around by some golden chariot of your own, drawn by sable steeds, that sort of thing\nBut......it\'s just you....."\nHades : "It is just me indeed.\nHowever...that should be more than necassary here.\nNo holding back this time Zagrues, are you ready?"\nZagrues : "Let\'s go !!" \n\nThus the two begin yet another brawl of darkness and blood.\nAfter exchanging countless blows, Zagrues manages to down his father twice but not before suffering a few himself, as Hades falls for the second time, Zagrues expects him to vanish back to the underwrold as would normally happen, however.......\n\nHades : " Urgh....no.......I am not......finished......with you........yet!!!"\nNarrator : and thus to Zagrues complete surprise, his father once again regains his balance and is fired with a fighting spirit he has never yet seen.\nHades : "I can still fight !!"\nZagrues : "Are you serious?!"\n\nHades : "DARKNESS !"\nNarrator : Hades vanishes once more and engulfes the entire region in darkness, which hinders Zagrues abillity to see and regains his whereabouts..........\nJust then, Zagrues remembered that he carried his father\'s keepsake sigil, one which allowed him to use his father\'s powers himself !\nZagrues : "Two can play at that game.........DARKNESS ! "\n\nAnd thus, both Hades and Zagrues vanished from the view of the naked eye, off to the final and decisive showdown of Blood and Darkness..........such is the familly......of The Unseen Ones.\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\nAt long last I am happy to present you all one of the most pumping OSTs from the Hades soundtrack !\nTo make it more convenient, this map includes two mods to spice up the things !\nIn standard mode, you will be playing from Zagrues POV !\nHelp him beat and survive his fathers endless blows so he might see his mother once more !\nOr.....if you wish to take a different approach.\nIn One Saber mode you will infuse you sword with the power of darkness and take on the POV of no less than Hades himself !\nShow your son you can still best him in combat !\n.........................................................................................................................................\nMany thanks to monster, steg universe, Kaltern and the BSMG for providing the much needed feedback which helped forge this map and help get it to where it is now ! :)\n\nHope you enjoy ! :)\n\nMap preview by Javierattor - https://www.youtube.com/watch?v=namzq2MNvJ4\n',uploader:{id:4285616,name:"sp234",uniqueSet:!0,hash:"5f352ca7530c8e00061b14fe",avatar:"https://cdn.beatsaver.com/avatar/215418254980677643.png",type:"DISCORD"},metadata:{bpm:118,duration:248,songName:"Hades - The Unseen Ones",songSubName:"Game OST",songAuthorName:"Darren Korb",levelAuthorName:"Sp234"},stats:{plays:0,downloads:6435,upvotes:637,downvotes:11,score:.9143},uploaded:"2021-06-25T08:04:00.236Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d93d094ae17f25dedaee7796f7ca9fc078dc5060",key:"198ba",state:"Published",createdAt:"2021-06-25T08:04:00.236Z",sageScore:5,diffs:[{njs:10,offset:.6,notes:554,bombs:0,obstacles:65,nps:2.269,length:480.25,characteristic:"Standard",difficulty:"Normal",events:5589,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.195,paritySummary:{errors:4,warns:0,resets:0}},{njs:13,offset:-.1,notes:812,bombs:4,obstacles:135,nps:3.325,length:480.25,characteristic:"Standard",difficulty:"Hard",events:5589,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.195,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.55,notes:1238,bombs:0,obstacles:160,nps:5.069,length:480.292,characteristic:"Standard",difficulty:"Expert",events:5591,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.216,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.55,notes:878,bombs:0,obstacles:113,nps:3.595,length:480.333,characteristic:"OneSaber",difficulty:"Expert",events:5589,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.237,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d93d094ae17f25dedaee7796f7ca9fc078dc5060.zip",coverURL:"https://cdn.beatsaver.com/d93d094ae17f25dedaee7796f7ca9fc078dc5060.jpg",previewURL:"https://cdn.beatsaver.com/d93d094ae17f25dedaee7796f7ca9fc078dc5060.mp3"}],createdAt:"2021-06-25T08:04:00.236Z",updatedAt:"2021-06-25T08:04:00.236Z",lastPublishedAt:"2021-06-25T08:04:00.236Z"},{id:"9725",name:"Dua Lipa - Break My Heart",description:"Dua Lipa - Break My Heart\nThis is my second Dua Lipa map and it was super fun to make and test! I hope you enjoy it. \nSpecial thanks to Treetrain1YT for testing this many times on both Steam and Quest.\n\nNormal - 2.09 NPS, 470 Notes, 10 NJS\nHard - 2.92 NPS, 655 Notes, 12 NJS\nExpert - 3.63 NPS, 814 Notes, 16 NJS",uploader:{id:4285261,name:"yomama",uniqueSet:!0,hash:"5e23f0a1054bbd0007bc1ed4",avatar:"https://cdn.beatsaver.com/avatar/153595294792155137.png",type:"DISCORD"},metadata:{bpm:113,duration:223,songName:"Break My Heart",songSubName:"",songAuthorName:"Dua Lipa",levelAuthorName:"yomama"},stats:{plays:0,downloads:2890,upvotes:942,downvotes:25,score:.9143},uploaded:"2020-04-04T03:17:06.970Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e97457ce049dbd486326861e16125fac4bb24800",key:"9725",state:"Published",createdAt:"2020-04-04T03:17:06.970Z",sageScore:4,diffs:[{njs:10,offset:0,notes:470,bombs:0,obstacles:86,nps:2.15,length:411.75,characteristic:"Standard",difficulty:"Normal",events:872,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.628,paritySummary:{errors:31,warns:25,resets:0}},{njs:12,offset:0,notes:655,bombs:0,obstacles:96,nps:2.998,length:411.5,characteristic:"Standard",difficulty:"Hard",events:1619,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.496,paritySummary:{errors:76,warns:34,resets:0}},{njs:16,offset:.25,notes:814,bombs:0,obstacles:89,nps:3.725,length:411.5,characteristic:"Standard",difficulty:"Expert",events:2719,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.496,paritySummary:{errors:91,warns:58,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e97457ce049dbd486326861e16125fac4bb24800.zip",coverURL:"https://cdn.beatsaver.com/e97457ce049dbd486326861e16125fac4bb24800.jpg",previewURL:"https://cdn.beatsaver.com/e97457ce049dbd486326861e16125fac4bb24800.mp3"}],createdAt:"2020-04-04T03:17:06.970Z",updatedAt:"2020-04-04T03:17:06.970Z",lastPublishedAt:"2020-04-04T03:17:06.970Z"},{id:"3342",name:"No More Sorrow - Linkin Park",description:"133 BPM / 3:42 Runtime\r\nEasy / 288 Notes\r\nNormal / 394 Notes\r\nHard / 549 Notes\r\nExpert / 799 Notes\r\nExpert+ / 1032 Notes\r\n\r\nI was watching early Beat Saber gameplay and noticed how the player frequently put their sabers in the walls. It gave me an idea for the Expert+ map.\r\n\r\nGameplay: https://youtu.be/Wkng-fpz78w",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:133,duration:222,songName:"No More Sorrow",songSubName:"Linkin Park",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:2978,upvotes:1002,downvotes:28,score:.9143},uploaded:"2019-02-03T07:55:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e80f867f37808cd7cf1450327a4b445d2d0d8f02",key:"3342",state:"Published",createdAt:"2019-02-03T07:55:09Z",sageScore:8,diffs:[{njs:10,offset:1,notes:288,bombs:7,obstacles:7,nps:1.321,length:482,characteristic:"Standard",difficulty:"Easy",events:5629,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:117,warns:6,resets:5}},{njs:10,offset:1,notes:394,bombs:5,obstacles:10,nps:1.807,length:482,characteristic:"Standard",difficulty:"Normal",events:5628,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:88,warns:17,resets:0}},{njs:10,offset:1,notes:549,bombs:4,obstacles:11,nps:2.518,length:482,characteristic:"Standard",difficulty:"Hard",events:5629,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:41,warns:20,resets:4}},{njs:12,offset:1,notes:799,bombs:4,obstacles:17,nps:3.664,length:482,characteristic:"Standard",difficulty:"Expert",events:5629,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:33,warns:35,resets:0}},{njs:14,offset:0,notes:1032,bombs:31,obstacles:73,nps:4.733,length:482,characteristic:"Standard",difficulty:"ExpertPlus",events:5629,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:45,warns:66,resets:10}}],downloadURL:"https://cdn.beatsaver.com/e80f867f37808cd7cf1450327a4b445d2d0d8f02.zip",coverURL:"https://cdn.beatsaver.com/e80f867f37808cd7cf1450327a4b445d2d0d8f02.jpg",previewURL:"https://cdn.beatsaver.com/e80f867f37808cd7cf1450327a4b445d2d0d8f02.mp3"}],createdAt:"2019-02-03T07:55:09Z",updatedAt:"2019-02-03T07:55:09Z",lastPublishedAt:"2019-02-03T07:55:09Z"},{id:"10674",name:"Spooky Scary Skeletons (Kasger DnB Remix)",description:"A nice Drum and Bass remix on theme with Halloween.\nYou can follow me on twitch for more awesomeness at https://www.twitch.tv/pkdan\nVideo preview of the map: https://www.youtube.com/watch?v=m3pFxj2jFHs&ab_channel=PKDan\n\nLength: 3:49\nNotes: 789 (Hard) / 1092 (Expert) / 1492 (Expert+)\nNJS: 14 (Hard) / 16 (Expert) / 20 (Expert+)\nBPM: 174",uploader:{id:4284639,name:"pkdan",uniqueSet:!0,hash:"5e6d07927abb00000681e8ee",avatar:"https://cdn.beatsaver.com/avatar/315553265091739650.png",type:"DISCORD"},metadata:{bpm:174,duration:229,songName:"Spooky Scary Skeletons (Kasger Remix)",songSubName:"",songAuthorName:"Andrew Gold",levelAuthorName:"pkdan"},stats:{plays:0,downloads:4006,upvotes:682,downvotes:13,score:.9142},uploaded:"2020-10-30T19:19:27.266Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"20341d92a0871dfdf2f8d39633274fdaa67a70ed",key:"10674",state:"Published",createdAt:"2020-10-30T19:19:27.266Z",sageScore:5,diffs:[{njs:14,offset:.3,notes:789,bombs:0,obstacles:2,nps:3.575,length:640,characteristic:"Standard",difficulty:"Hard",events:4093,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.69,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1092,bombs:0,obstacles:2,nps:4.948,length:640,characteristic:"Standard",difficulty:"Expert",events:4093,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.69,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:-.3,notes:1492,bombs:0,obstacles:2,nps:6.761,length:640,characteristic:"Standard",difficulty:"ExpertPlus",events:4093,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.69,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/20341d92a0871dfdf2f8d39633274fdaa67a70ed.zip",coverURL:"https://cdn.beatsaver.com/20341d92a0871dfdf2f8d39633274fdaa67a70ed.jpg",previewURL:"https://cdn.beatsaver.com/20341d92a0871dfdf2f8d39633274fdaa67a70ed.mp3"}],createdAt:"2020-10-30T19:19:27.266Z",updatedAt:"2020-10-30T19:19:27.266Z",lastPublishedAt:"2020-10-30T19:19:27.266Z"},{id:"4e81",name:"Katy Perry - Firework",description:"Thank you Joetastic for the lossless file",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:124,duration:229,songName:"Firework",songSubName:"Katy Perry",songAuthorName:"KikaeAeon",levelAuthorName:"kikaeaeon"},stats:{plays:0,downloads:3779,upvotes:1331,downvotes:45,score:.9142},uploaded:"2019-05-22T14:18:50Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"410a4f5ae778f9072b9136f0df5e151156cd81e3",key:"4e81",state:"Published",createdAt:"2019-05-22T14:18:50Z",sageScore:5,diffs:[{njs:10,offset:0,notes:563,bombs:0,obstacles:17,nps:2.51,length:463.5,characteristic:"Standard",difficulty:"Hard",events:682,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.274,paritySummary:{errors:33,warns:7,resets:0}},{njs:15,offset:0,notes:927,bombs:0,obstacles:26,nps:4.133,length:463.5,characteristic:"Standard",difficulty:"ExpertPlus",events:988,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.274,paritySummary:{errors:25,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/410a4f5ae778f9072b9136f0df5e151156cd81e3.zip",coverURL:"https://cdn.beatsaver.com/410a4f5ae778f9072b9136f0df5e151156cd81e3.jpg",previewURL:"https://cdn.beatsaver.com/410a4f5ae778f9072b9136f0df5e151156cd81e3.mp3"}],createdAt:"2019-05-22T14:18:50Z",updatedAt:"2019-05-22T14:18:50Z",lastPublishedAt:"2019-05-22T14:18:50Z"},{id:"1622c",name:"Gurenge (TV Size) [Demon Slayer: Kimetsu no Yaiba Opening] - LiSA",description:"",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:135,duration:90,songName:"Gurenge (TV Size)",songSubName:"",songAuthorName:"LiSA",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:16462,upvotes:896,downvotes:23,score:.9141},uploaded:"2021-04-01T08:54:27.557Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"62a63aa11f61623fdd69411bf73ab1082d4558d6",key:"1622c",state:"Published",createdAt:"2021-04-01T08:54:27.557Z",sageScore:5,diffs:[{njs:13,offset:0,notes:294,bombs:0,obstacles:10,nps:3.375,length:196,characteristic:"Standard",difficulty:"Hard",events:12271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.111,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:-.2,notes:399,bombs:0,obstacles:10,nps:4.58,length:196,characteristic:"Standard",difficulty:"Expert",events:12271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.111,paritySummary:{errors:2,warns:2,resets:0}},{njs:18,offset:-.5,notes:482,bombs:0,obstacles:18,nps:5.533,length:196,characteristic:"Standard",difficulty:"ExpertPlus",events:12268,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.111,paritySummary:{errors:3,warns:5,resets:0}}],downloadURL:"https://cdn.beatsaver.com/62a63aa11f61623fdd69411bf73ab1082d4558d6.zip",coverURL:"https://cdn.beatsaver.com/62a63aa11f61623fdd69411bf73ab1082d4558d6.jpg",previewURL:"https://cdn.beatsaver.com/62a63aa11f61623fdd69411bf73ab1082d4558d6.mp3"}],createdAt:"2021-04-01T08:54:27.557Z",updatedAt:"2021-04-01T08:54:27.557Z",lastPublishedAt:"2021-04-01T08:54:27.557Z"},{id:"6888",name:"The Glory Days - Tia",description:"Expert and Hard diff companion to https://beatsaver.com/beatmap/56d0\nKikis lights, diffs by me. Modded by Fraies and Redmagi.",uploader:{id:4284577,name:"uninstaller",uniqueSet:!0,hash:"5cff0b7598cc5a672c85248e",avatar:"https://cdn.beatsaver.com/avatar/84840552935194624.png",type:"DISCORD"},metadata:{bpm:184,duration:254,songName:"The Glory Days",songSubName:"",songAuthorName:"Tia",levelAuthorName:"Kikis & Uninstaller"},stats:{plays:0,downloads:2754,upvotes:1511,downvotes:55,score:.9141},uploaded:"2019-10-08T01:17:01.471Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"a6ccabb105d0f2c24fe9f1dd6e4445782bc55616",key:"6888",state:"Published",createdAt:"2019-10-08T01:17:01.471Z",sageScore:6,diffs:[{njs:13,offset:0,notes:781,bombs:30,obstacles:11,nps:3.243,length:738.5,characteristic:"Standard",difficulty:"Hard",events:3865,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240.815,paritySummary:{errors:1,warns:1,resets:1},stars:2.04},{njs:15,offset:0,notes:1177,bombs:32,obstacles:11,nps:4.888,length:738.5,characteristic:"Standard",difficulty:"Expert",events:3865,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240.815,paritySummary:{errors:0,warns:0,resets:3},stars:3.31}],downloadURL:"https://cdn.beatsaver.com/a6ccabb105d0f2c24fe9f1dd6e4445782bc55616.zip",coverURL:"https://cdn.beatsaver.com/a6ccabb105d0f2c24fe9f1dd6e4445782bc55616.jpg",previewURL:"https://cdn.beatsaver.com/a6ccabb105d0f2c24fe9f1dd6e4445782bc55616.mp3"}],createdAt:"2019-10-08T01:17:01.471Z",updatedAt:"2019-10-08T01:17:01.471Z",lastPublishedAt:"2019-10-08T01:17:01.471Z"},{id:"5c92",name:"Caravan Palace - Lone Digger",description:"\nBPM: 124 | 3 Difficulties (Expert+, Expert, Hard) | Lighting done by me\n---------------------------------------------------------------------------------------------\n[Expert+]\nNJS: 19\nNotes: 1255\n---------------------------------------------------------------------------------------------\n[Expert]\nNotes: 986\nNJS: 18\n---------------------------------------------------------------------------------------------\n[Hard]\nNotes: 652\nNJS: 17\n---------------------------------------------------------------------------------------------\n\nMy Discord if you want to give feedback or just talk to me: Yun0#1355",uploader:{id:18845,name:"yun0",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f6ca",avatar:"https://cdn.beatsaver.com/avatar/18845.jpg",type:"SIMPLE"},metadata:{bpm:124,duration:231,songName:"Lone Digger",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"Yun0"},stats:{plays:0,downloads:2362,upvotes:1174,downvotes:37,score:.9141},uploaded:"2019-08-13T03:30:08.712Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"928da96d4e5fcfeb87ac1cc6fcf6287b2f4c5e2d",key:"5c92",state:"Published",createdAt:"2019-08-13T03:30:08.712Z",sageScore:6,diffs:[{njs:17,offset:0,notes:652,bombs:0,obstacles:4,nps:2.932,length:459.5,characteristic:"Standard",difficulty:"Hard",events:3826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.339,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.25,notes:986,bombs:0,obstacles:6,nps:4.435,length:459.5,characteristic:"Standard",difficulty:"Expert",events:3826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.339,paritySummary:{errors:3,warns:0,resets:0}},{njs:19,offset:.3,notes:1255,bombs:4,obstacles:49,nps:5.596,length:463.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.274,paritySummary:{errors:9,warns:6,resets:2}}],downloadURL:"https://cdn.beatsaver.com/928da96d4e5fcfeb87ac1cc6fcf6287b2f4c5e2d.zip",coverURL:"https://cdn.beatsaver.com/928da96d4e5fcfeb87ac1cc6fcf6287b2f4c5e2d.jpg",previewURL:"https://cdn.beatsaver.com/928da96d4e5fcfeb87ac1cc6fcf6287b2f4c5e2d.mp3"}],createdAt:"2019-08-13T03:30:08.712Z",updatedAt:"2019-08-13T03:30:08.712Z",lastPublishedAt:"2019-08-13T03:30:08.712Z"},{id:"1bc4",name:"Without Me (Nurko & Miles Away Remix) - Halsey",description:"Difficulties: Expert+ Only",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:140,duration:257,songName:"Without Me (Nurko & Miles Away Remix)",songSubName:"Halsey",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:1240,upvotes:681,downvotes:13,score:.9141},uploaded:"2018-10-23T03:10:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e447ac77708869ac151546110aecda97acac2cab",key:"1bc4",state:"Published",createdAt:"2018-10-23T03:10:41Z",sageScore:5,diffs:[{njs:15,offset:0,notes:1206,bombs:0,obstacles:1,nps:4.885,length:576,characteristic:"Standard",difficulty:"ExpertPlus",events:1646,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.857,paritySummary:{errors:102,warns:151,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e447ac77708869ac151546110aecda97acac2cab.zip",coverURL:"https://cdn.beatsaver.com/e447ac77708869ac151546110aecda97acac2cab.jpg",previewURL:"https://cdn.beatsaver.com/e447ac77708869ac151546110aecda97acac2cab.mp3"}],createdAt:"2018-10-23T03:10:41Z",updatedAt:"2018-10-23T03:10:41Z",lastPublishedAt:"2018-10-23T03:10:41Z"},{id:"900",name:"Limbo - Daddy Yankee",description:"If you don't at least try to limbo, you didn't really finish the map.",uploader:{id:50121,name:"ayewyn",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f7ef",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f7ef?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:225,songName:"Limbo",songSubName:"Daddy Yankee",songAuthorName:"Ayewyn",levelAuthorName:"ayewyn"},stats:{plays:0,downloads:6900,upvotes:2388,downvotes:106,score:.9141},uploaded:"2018-07-12T13:34:01Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2738e2374b821b6aa9839f128a70caae8333cb1c",key:"900",state:"Published",createdAt:"2018-07-12T13:34:01Z",sageScore:5,diffs:[{njs:10,offset:0,notes:232,bombs:0,obstacles:24,nps:1.073,length:450.5,characteristic:"Standard",difficulty:"Easy",events:853,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.24,paritySummary:{errors:33,warns:76,resets:0},stars:.95},{njs:10,offset:0,notes:464,bombs:0,obstacles:12,nps:2.146,length:450.5,characteristic:"Standard",difficulty:"Normal",events:853,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.24,paritySummary:{errors:35,warns:141,resets:0}},{njs:10,offset:0,notes:637,bombs:0,obstacles:12,nps:2.943,length:451,characteristic:"Standard",difficulty:"Hard",events:853,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.48,paritySummary:{errors:34,warns:190,resets:0}},{njs:10,offset:0,notes:689,bombs:0,obstacles:12,nps:3.181,length:451.25,characteristic:"Standard",difficulty:"Expert",events:853,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.6,paritySummary:{errors:44,warns:187,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2738e2374b821b6aa9839f128a70caae8333cb1c.zip",coverURL:"https://cdn.beatsaver.com/2738e2374b821b6aa9839f128a70caae8333cb1c.jpg",previewURL:"https://cdn.beatsaver.com/2738e2374b821b6aa9839f128a70caae8333cb1c.mp3"}],createdAt:"2018-07-12T13:34:01Z",updatedAt:"2018-07-12T13:34:01Z",lastPublishedAt:"2018-07-12T13:34:01Z"}]},function(e,t,a){if(AFRAME.registerComponent("song-info-positioner",{schema:{victory:{default:!1}},update:function(){this.data.victory?this.el.object3D.position.y=-1.2:this.el.object3D.position.y=-1}}),window.AFRAME){const t=["song-info-positioner"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.progress.scale.x=1e-4})},update:function(e){this.progress.scale.x=1e-4},updateInfo:function(){const e=this.el.sceneEl.components.song.source;if(!e||!e.buffer)return;const t=this.el.sceneEl.components.song.getCurrentTime()/e.buffer.duration;t&&(this.progress.scale.x=t)},tick:function(){this.data.enabled&&this.updateInfo()}}),window.AFRAME){const t=["song-progress-info"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.audioAnalyser.resumeContext();const t=this.audioAnalyser.gainNode.gain;t.cancelScheduledValues(0),t.setValueAtTime(.05,0),this.source=e.detail,this.source.start(),this.el.emit("victory")},n),void this.audioAnalyser.refreshSource();!e.isBeatsPreloaded&&this.data.isBeatsPreloaded&&this.source&&this.startAudio(),!e.challengeId||t.challengeId?(e.isPlaying&&!t.isPlaying&&(this.audioAnalyser.suspendContext(),this.isAudioPlaying=!1),!e.isPlaying&&t.isPlaying&&this.source&&(this.audioAnalyser.resumeContext(),this.isAudioPlaying=!0)):this.stopAudio()}else this.onGameOver()},processAudio:function(){this.el.sceneEl.emit("songprocessstart",null,!1),this.getAudio().then(e=>{this.el.sceneEl.emit("songprocessfinish",null,!1)}).catch(console.error)},getAudio:function(){const e=this.data;return this.source&&this.stopAudio(),this.isAudioPlaying=!1,new Promise(t=>{e.analyserEl.addEventListener("audioanalyserbuffersource",e=>{this.source=e.detail,t(this.source)},n),this.analyserSetter.src=this.data.audio,e.analyserEl.setAttribute("audioanalyser",this.analyserSetter)})},stopAudio:function(){this.source?(this.source.onended=null,this.isAudioPlaying&&this.source.stop(),this.source.disconnect(),this.source=null,this.isAudioPlaying=!1):console.warn("[song] Tried to stopAudio, but not playing.")},onSongComplete:function(){this.data.isPlaying&&this.el.emit("songcomplete")},onGameOver:function(){this.isAudioPlaying=!1;const e=this.source.playbackRate;e.setValueAtTime(e.value,this.context.currentTime),e.linearRampToValueAtTime(0,this.context.currentTime+3.5);const t=this.audioAnalyser.gainNode.gain;t.setValueAtTime(t.value,this.context.currentTime),t.linearRampToValueAtTime(0,this.context.currentTime+3.5),setTimeout(()=>{this.data.isGameOver&&this.stopAudio()},3500)},onRestart:function(){this.isAudioPlaying=!1,this.source&&this.source.disconnect();this.audioAnalyser.gainNode.gain.cancelScheduledValues(0),this.data.analyserEl.addEventListener("audioanalyserbuffersource",e=>{this.source=e.detail,this.el.sceneEl.emit("songloadfinish",null,!1)},n),this.audioAnalyser.refreshSource()},onWallHitStart:function(){this.audioAnalyser.gainNode.gain.linearRampToValueAtTime(.1,this.context.currentTime+.1)},onWallHitEnd:function(){this.audioAnalyser.gainNode.gain.linearRampToValueAtTime(.5,this.context.currentTime+.1)},startAudio:function(){this.audioAnalyser.gainNode.gain.setValueAtTime(.5,this.context.currentTime),this.songStartTime=this.context.currentTime,this.source.onended=this.onSongComplete,this.source.start(0,r||0),this.isAudioPlaying=!0},getCurrentTime:function(){return this.context.currentTime-this.songStartTime}}),window.AFRAME){const t=["song"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n(Math.random()-.5)*this.data.radius*2,t=new THREE.BufferGeometry;this.material=this.el.sceneEl.systems.materials.stars;const a=[];for(let t=0;t{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{const n=a.detail.model.getObjectByName(t.name);e.setObject3D("mesh",n.clone()),e.setAttribute("material","shader","flat"),e.emit("subobjectloaded",null,!1)})}}),window.AFRAME){const t=["sub-object"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{if(1==e.key.length){const a=e.key.toLowerCase();if(!"abcdefghijklmnopqrstuvwxyz ".includes(a))return;if(this.data.maxLength>0&&this.rawValue.length>this.data.maxLength)return;this.rawValue+=a;var t=this.filter(this.rawValue);this.el.setAttribute("super-keyboard","value",t),this.updateTextInput(t),this.changeEventDetail.value=t,this.el.emit("superkeyboardchange",this.changeEventDetail)}else if("Shift"==e.key)this.shift=!this.shift;else if("Backspace"==e.key){this.rawValue=this.rawValue.substr(0,this.rawValue.length-1);t=this.filter(this.rawValue);this.el.setAttribute("super-keyboard","value",t),this.updateTextInput(t),this.changeEventDetail.value=t,this.el.emit("superkeyboardchange",this.changeEventDetail)}else"Escape"==e.key&&this.dismiss()}),document.addEventListener("show",this.open.bind(this)),this.hand=null,this.handListenersSet=!1,this.raycaster=null},update:function(e){var t=n[this.data.model],a=this.data.width,r=this.data.width/2;if(void 0!==t){e&&this.defaultValue===e.defaultValue?this.updateTextInput(this.filter(this.rawValue)):(this.rawValue=this.data.value,this.defaultValue=this.data.value,this.updateTextInput(this.filter(this.data.value))),this.data.width===e.width&&this.data.height===e.height&&this.data.keyColor===e.keyColor||(this.kbImg.setAttribute("geometry",{primitive:"plane",width:a,height:r}),this.kbImg.setAttribute("material",{shader:"flat",src:this.data.imagePath+"/"+t.img,color:this.data.keyColor,transparent:!0})),this.data.label===e.label&&this.data.labelColor===e.labelColor&&this.data.width===e.width||(this.label.setAttribute("text",{value:this.data.label,color:this.data.labelColor,width:this.data.width}),this.label.object3D.position.set(0,.3*a,-.02)),this.data.width===e.width&&this.data.keyBgColor===e.keyBgColor||this.initKeyColorPlane();var s="center"!==this.data.align?t.inputOffsetX*a:0;"right"===this.data.align&&(s*=-1),this.data.font===e.font&&this.data.inputColor===e.inputColor&&this.data.width===e.width&&this.data.align===e.align||this.textInput.setAttribute("text",{font:this.data.font,color:this.data.inputColor,width:a,wrapCount:t.wrapCount,align:this.data.align});for(var o=0;oo.x&&a.xo.y&&1-a.y [raycaster]"].join(",")),this.hand){if(!this.hand.hasLoaded)return void this.hand.addEventListener("loaded",this.setupHand.bind(this));var e=this.hand.components.raycaster,t={};if(e){if(this.hand.ownRaycaster=!1,this.data.injectToRaycasterObjects){var a=e.data.objects.split(",");-1===a.indexOf(".keyboardRaycastable")&&a.push(".keyboardRaycastable"),t.objects=a.join(",").replace(/^,/,""),this.hand.setAttribute("raycaster",t)}}else this.hand.ownRaycaster=!0,t.showLine=this.data.show,t.enabled=this.data.show,this.data.injectToRaycasterObjects&&(t.objects=".keyboardRaycastable"),this.hand.setAttribute("raycaster",t);this.raycaster=this.hand.components.raycaster}else console.error('super-keyboard: no controller found. Add with controller or specify with super-keyboard="hand: #selectorToController".')},filter:function(e){if(""===e)return"";for(var t=0;t0?e.substr(0,this.data.maxLength):e},click:function(e){if(this.keyHover){switch(this.keyHover.key){case"Enter":this.accept();break;case"Insert":return;case"Delete":this.rawValue=this.rawValue.substr(0,this.rawValue.length-1);var t=this.filter(this.rawValue);this.el.setAttribute("super-keyboard","value",t),this.updateTextInput(t),this.changeEventDetail.value=t,this.el.emit("superkeyboardchange",this.changeEventDetail);break;case"Shift":this.shift=!this.shift,this.keyHover.el.setAttribute("material","color",this.shift?this.data.keyHoverColor:this.data.keyBgColor);break;case"Escape":this.dismiss();break;default:if(this.data.maxLength>0&&this.rawValue.length>this.data.maxLength)break;this.rawValue+=this.shift?this.keyHover.key.toUpperCase():this.keyHover.key;t=this.filter(this.rawValue);this.el.setAttribute("super-keyboard","value",t),this.updateTextInput(t),this.changeEventDetail.value=t,this.el.emit("superkeyboardchange",this.changeEventDetail)}this.updateKeyColorPlane(this.keyHover.key,this.keyPressColor);var a=this;setTimeout((function(){a.updateKeyColorPlane(a.keyHover.key,a.keyHoverColor)}),100),this.updateCursorPosition()}},open:function(){this.el.object3D.visible=!0,this.hand&&this.hand.ownRaycaster&&this.hand.setAttribute("raycaster",{showLine:!0,enabled:!0})},close:function(){this.el.object3D.visible=!1,this.hand&&this.hand.ownRaycaster&&this.hand.setAttribute("raycaster",{showLine:!1,enabled:!1})},accept:function(){this.el.emit("superkeyboardinput",{value:this.data.value}),this.data.multipleInputs?(this.rawValue="",this.data.value="",this.updateTextInput("")):(this.el.object3D.visible=!1,this.hand&&this.hand.ownRaycaster&&this.hand.setAttribute("raycaster",{showLine:!1,enabled:!1}),this.data.show=!1)},dismiss:function(){this.data.value=this.defaultValue,this.updateTextInput(),this.el.object3D.visible=!1,this.hand&&this.hand.ownRaycaster&&this.hand.setAttribute("raycaster",{showLine:!1,enabled:!1}),this.el.emit("superkeyboarddismiss"),this.data.show=!1},blur:function(e){this.focused=!1,this.keyHover&&"Shift"!==this.keyHover.key&&this.updateKeyColorPlane(this.keyHover.key,this.keyBgColor),this.keyHover=null},hover:function(e){this.focused=!0},startBlinking:function(){this.stopBlinking(),this.intervalId=window.setInterval(this.blink.bind(this),this.data.blinkingSpeed)},stopBlinking:function(){window.clearInterval(this.intervalId),this.intervalId=0},blink:function(){this.cursor.object3D.visible=!this.cursor.object3D.visible},setCustomFilter:function(e){this.userFilterFunc=e},addCustomModel:function(e,t){e&&(n[e]=t)},updateCursorPosition:function(){var e=this.textInput.components.text.currentFont;if(!e){var t=this;return this.cursor.object3D.visible=!1,void window.setTimeout((function(){t.updateCursorPosition(),t.startBlinking()}),700)}var a=this.data.width,o=n[this.data.model],i=-this.inputRect.h/2*a/2.4+o.inputOffsetY*a,c=this.data.width/this.textInput.components.text.data.wrapCount,d=0,l=r[this.textInput.components.text.data.font];void 0===l&&(l=20);for(var u=0;u{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.detail&&"off"!==e.detail?this.setColor("color1",e.detail):this.setColor("color1","primary")}),e.sceneEl.addEventListener("curveoddstageeventcolor",e=>{e.detail&&"off"!==e.detail?this.setColor("color2",e.detail):this.setColor("color2","secondary")})},setColor:function(e,t){const a=this.el.components.material.material.uniforms[e].value,r=this.el.sceneEl.systems.materials.scheme[t];n.set(r),a.x=n.r,a.y=n.g,a.z=n.b}}),window.AFRAME){const t=["supercurve-color"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=1)return;const n=this.supercurve,r=n.curve;if(!r)return;this.curveProgress=this.curveProgress||0;const s=a.speed*(t/1e3);if(this.curveProgress+=s/this.supercurve.fullLength,this.data.target.components.material.material.uniforms.cameraPercent.value=this.curveProgress,this.curveProgress>=1)return this.curveProgress=1,void(this.data.target.components.material.material.uniforms.cameraPercent.value=this.curveProgress);r.getPointAt(this.curveProgress,this.el.object3D.position),this.songProgress=n.curveProgressToSongProgress(this.curveProgress),n.alignToCurve(this.songProgress,this.el.object3D)}}()}),window.AFRAME){const t=["supercurve","supercurve-follow"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0)){c=r;break}c=r-1}if(n[r=c]===a)return r/(s-1);var d=n[r];return(r+(a-d)/(n[r+1]-d))/(s-1)},getTangent:(o=new THREE.Vector3,i=new THREE.Vector3,function(e,t){var a,n=e-1e-4,r=e+1e-4;return n<0&&(n=0),r>1&&(r=1),this.getPoint(n,o),this.getPoint(r,i),t?(a=t).copy(i).sub(o):a=i.clone().sub(o),a.normalize()}),getTangentAt:function(e,t){var a=this.getUtoTmapping(e);return this.getTangent(a,t)},computeFrenetFrames:function(e,t){var s,o,i,c=new n,d=[],l=[],u=[],h=new n,m=new r;for(s=0;s<=e;s++)o=s/e,d[s]=this.getTangentAt(o),d[s].normalize();l[0]=new n,u[0]=new n;var p=Number.MAX_VALUE,f=Math.abs(d[0].x),b=Math.abs(d[0].y),y=Math.abs(d[0].z);for(f<=p&&(p=f,c.set(1,0,0)),b<=p&&(p=b,c.set(0,1,0)),y<=p&&c.set(0,0,1),h.crossVectors(d[0],c).normalize(),l[0].crossVectors(d[0],h),u[0].crossVectors(d[0],l[0]),s=1;s<=e;s++)l[s]=l[s-1].clone(),u[s]=u[s-1].clone(),h.crossVectors(d[s-1],d[s]),h.length()>Number.EPSILON&&(h.normalize(),i=Math.acos(a.clamp(d[s-1].dot(d[s]),-1,1)),l[s].applyMatrix4(m.makeRotationAxis(h,i))),u[s].crossVectors(d[s],l[s]);if(!0===t)for(i=Math.acos(a.clamp(l[0].dot(l[e]),-1,1)),i/=e,d[0].dot(h.crossVectors(l[0],l[e]))>0&&(i=-i),s=1;s<=e;s++)l[s].applyMatrix4(m.makeRotationAxis(d[s],i*s)),u[s].crossVectors(d[s],l[s]);return{tangents:d,normals:l,binormals:u}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){var e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),THREE.Curve=s},function(e,t){const a=THREE.Vector3,n=THREE.Curve;function r(){var e=0,t=0,a=0,n=0;function r(r,s,o,i){e=r,t=o,a=-3*r+3*s-2*o-i,n=2*r-2*s+o+i}return{initCatmullRom:function(e,t,a,n,s){r(t,a,s*(a-e),s*(n-t))},initNonuniformCatmullRom:function(e,t,a,n,s,o,i){var c=(t-e)/s-(a-e)/(s+o)+(a-t)/o,d=(a-t)/o-(n-t)/(o+i)+(n-a)/i;r(t,a,c*=o,d*=o)},calc:function(r){var s=r*r;return e+t*r+a*s+n*(s*r)}}}var s=new a,o=new r,i=new r,c=new r;function d(e,t,a,r){n.call(this),this.type="CatmullRomCurve3",this.points=e||[],this.closed=t||!1,this.curveType=a||"centripetal",this.tension=r||.5}d.prototype=Object.create(n.prototype),d.prototype.constructor=d,d.prototype.isCatmullRomCurve3=!0,d.prototype.getPoint=function(e,t){var n,r,d,l,u=t||new a,h=this.points,m=h.length,p=(m-(this.closed?0:1))*e,f=Math.floor(p),b=p-f;if(this.closed?f+=f>0?0:(Math.floor(Math.abs(f)/m)+1)*m:0===b&&f===m-1&&(f=m-2,b=1),this.closed||f>0?n=h[(f-1)%m]:(s.subVectors(h[0],h[1]).add(h[0]),n=s),r=h[f%m],d=h[(f+1)%m],this.closed||f+2{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;nthis.startTime+1e3&&(this.el.object3D.visible=!1,this.el.pause())}}),window.AFRAME){const t=["supercutfx"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0;e--)r=3*e,a[r]=a[r-3],a[r+1]=a[r-2],a[r+2]=a[r-1],r+=s,a[r]=a[r-3],a[r+1]=a[r-2],a[r+2]=a[r-1];this.target.getWorldPosition(n),a[0]=n.x,a[1]=n.y+o,a[2]=n.z-.1,a[s+0]=n.x,a[s+1]=n.y-o,a[s+2]=n.z-.1,this.geometry.attributes.position.needsUpdate=!0}}),window.AFRAME){const t=["tail"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=this.data.value&&(this.currentValue=this.data.value,this.data.emit&&this.el.emit("textcounterdone",null,!1),this.hasCompleted=!0),this.textValue.value=`${this.data.prefix}${this.decimals(this.currentValue)}${this.data.suffix}`,this.el.setAttribute("text",this.textValue))},decimals:function(e){var t=Math.pow(10,this.data.decimals);return(parseInt(e*t)/t).toFixed(this.data.decimals)}}),window.AFRAME){const t=["text-counter"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=t)return e.substring(0,t-3)+"...";return e}(this.data.value,this.data.length))}}),window.AFRAME){const t=["text-truncate"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;nthis.enabledTime+250&&(this.mesh.visible=!0),this.mesh.material.uniforms.pulse.value*=.9,this.sampleBladePosition())},pulse:function(){this.mesh.material.uniforms.pulse.value=1},addLayer:function(e){const t=this.bladeColor,a=this.colors,n=this.segments,r=this.vertices;let s=2/n;this.layers>=this.maxLayers&&(this.layers=0);const o=this.layers*e;e=o+e;const i=this.layers*n*18,c=this.layers*n*24;for(let d=0;d{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n1&&(a=1),t.getPointAt(a,e.object3D.position),t.alignToCurve(a,e.object3D),e.play(),this.tunnels.push(e),this.requestTunnel()},clearTunnels:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null);for(let e=0;ethis.curveFollowRig.object3D.position.z+5))return;{const t=this.tunnels.splice(e,1)[0];t.object3D.visible=!1,this.pool.returnEntity(t)}}}}),window.AFRAME){const t=["tunnels"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=this.songPosition&&(this.isRaycastable=!0,this.el.setAttribute("data-wall-active",""),this.isCeiling||(this.el.setAttribute("data-weapon-particles",""),this.el.setAttribute("raycastable-game",""))),a>=this.backPosition+.01&&this.returnToPool()},onGenerate:function(e,t,a,n,r,s){const o=this.el;this.isCeiling=r,this.backPosition=s,this.songPosition=e,this.setWallGeometry(e,t,a,n,r),o.getObject3D("mesh").material.uniforms.opacity.value=0,o.object3D.position.y=-5,o.components.animation__fadein.beginAnimation(),o.components.animation__scalein.beginAnimation()},setWallGeometry:function(){const e=new THREE.Vector3,t=new THREE.Vector3,a=new THREE.Vector3;return function(n,r,s,o,i){const c=this.el.sceneEl.components["beat-system"],d=this.curveEl.components.supercurve,l=n,u=n+o/d.length,h=i?1.5:2.5,m=-1*c.horizontalPositions[r]-s/2+.25;t.x=m-s/2,a.x=m+s/2;const p=(this.geometry=new THREE.BoxBufferGeometry(s,h,1,1,1,30)).attributes.position.array;for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0,e.search.hasNext=e.search.page=t?e.substring(0,t-3)+"...":e:""}AFRAME.registerState({nonBindedStateKeys:["genres"],initialState:{activeHand:localStorage.getItem("hand")||"right",challenge:{audio:"",author:"",difficulty:"",beatmapCharacteristic:"",id:AFRAME.utils.getUrlParameter("challenge"),image:"",isBeatsPreloaded:!1,numBeats:void 0,songDuration:0,songName:"",songNameShort:"",songSubName:"",metadata:{}},colorPrimary:r.a.schemes[p].primary,colorScheme:p,colorSecondary:r.a.schemes[p].secondary,colorSecondaryBright:r.a.schemes[p].secondarybright,colorTertiary:r.a.schemes[p].tertiary,controllerType:"",damage:0,difficultyFilter:"All",difficultyFilterMenuOpen:!1,favorites:f,gameMode:"ride",genre:"",genres:a(196),genreMenuOpen:!1,has3DOFVR:!1,has6DOFVR:!1,hasSongLoadError:!1,hasVR:AFRAME.utils.device.checkHeadsetConnected()||"true"===AFRAME.utils.getUrlParameter("debugvr"),introActive:!m,inVR:"true"===AFRAME.utils.getUrlParameter("debugvr"),isIOS:AFRAME.utils.device.isIOS(),isGameOver:!1,isLoading:!1,isMenuOpening:!m,isPaused:!1,isPlaying:!1,isSearching:!1,isSongProcessing:!1,isVictory:!1,isZipFetching:!1,leaderboard:[],leaderboardFetched:!1,leaderboardQualified:!1,leaderboardNames:"",leaderboardScores:"",mainMenuActive:!1,menuActive:m,menuDifficulties:[],menuDifficultiesIds:[],menuSelectedChallenge:{author:"",difficulty:"",beatmapCharacteristic:"",downloads:"",downloadsText:"",genre:"",id:"",index:-1,image:"",isFavorited:!1,numBeats:void 0,songDuration:0,songInfoText:"",songLength:void 0,numBeats:void 0,songName:"",songSubName:"",version:"",metadata:{}},optionsMenuOpen:!1,playlist:"",playlists:a(197),playlistMenuOpen:!1,playlistTitle:"",score:{accuracy:100,accuracyScore:0,accuracyInt:100,activePanel:!1,beatsHit:0,beatsMissed:0,beatsText:"",combo:0,finalAccuracy:100,maxCombo:0,rank:"",score:0},search:{activePanel:!0,page:0,hasError:!1,hasNext:!1,hasPrev:!1,query:"",queryText:"",results:[],songNameTexts:"",songSubNameTexts:"",url:"",urlPage:0},searchResultsPage:[],speed:10,enableHitsDebug:!1,hitsDebugString:"",goodHits:[]},handlers:{activehandswap:e=>{e.activeHand="right"===e.activeHand?"left":"right",localStorage.setItem("activeHand",e.activeHand)},beathit:(e,t)=>{e.damage>.25&&(e.damage-=.25),e.score.beatsHit++,e.score.combo++,e.score.combo>e.score.maxCombo&&(e.score.maxCombo=e.score.combo),t.score=isNaN(t.score)?100:t.score,e.score.accuracyScore+=t.percent,e.score.score+=Math.floor(t.score),_(e)},beatmiss:e=>{e.score.beatsMissed++,A(e),_(e)},beatwrong:e=>{e.score.beatsMissed++,A(e),_(e)},beatloaderpreloadfinish:e=>{e.menuActive||(e.challenge.isBeatsPreloaded=!0)},colorschemechange:(e,t)=>{e.colorScheme=t,e.colorPrimary=r.a.schemes[t].primary,e.colorSecondary=r.a.schemes[t].secondary,e.colorSecondaryBright=r.a.schemes[t].secondarybright,e.colorTertiary=r.a.schemes[t].tertiary,localStorage.setItem("colorScheme",t)},controllerconnected:(e,t)=>{e.controllerType=t.name,e.has6DOFVR=-1!==["oculus-quest-controls","oculus-touch-controls","vive-controls","windows-motion-controls","generic-tracked-controller-controls"].indexOf(e.controllerType),e.has3DOFVR=-1!==["oculus-go-controls","daydream-controls"].indexOf(e.controllerType)},debugbeatpositioning:e=>{e.gameMode="classic",e.introActive=!1,e.menuActive=!1},debuggameplay:e=>{S(e),Object.assign(e.challenge,e.menuSelectedChallenge),e.menuActive=!1,e.menuSelectedChallenge.id="",e.isSearching=!1,e.isLoading=!1},debuggameover:e=>{e.isGameOver=!0,e.menuActive=!1},debugloading:e=>{h.id="-1",Object.assign(e.menuSelectedChallenge,h),Object.assign(e.challenge,h),e.menuActive=!1,e.isSongProcessing=!0},debugvictory:e=>{Object.assign(e.menuSelectedChallenge,h),Object.assign(e.challenge,h),e.isVictory=!0,e.leaderboardQualified=!0,e.menuActive=!1,e.score.accuracy=74.99,e.score.beatsHit=125,e.score.beatsMissed=125,e.score.maxCombo=123,e.score.rank="A",e.score.score=9001,e.introActive=!1,x(e)},difficultyfilter:(e,t)=>{e.difficultyFilter=t,e.difficultyFilterMenuOpen=!1,e.menuSelectedChallenge.id=""},difficultyfiltermenuclose:e=>{e.difficultyFilterMenuOpen=!1},difficultyfiltermenuopen:e=>{e.difficultyFilterMenuOpen=!0},displayconnected:e=>{if(e.hasVR=!0,!d)try{"getVRDisplays"in navigator&&navigator.getVRDisplays().then(e=>{e.length&&(d=!0)})}catch(e){}},favoritetoggle:e=>{const t=e.menuSelectedChallenge.id,a=c[t];if(a)if(e.menuSelectedChallenge.isFavorited){e.menuSelectedChallenge.isFavorited=!1;for(let a=0;ae.id===t).length)return;e.favorites.push(a),localStorage.setItem("favorites-v2",JSON.stringify(e.favorites))}},gamemenuresume:e=>{e.isPaused=!1},gamemenurestart:e=>{S(e),e.challenge.isBeatsPreloaded=!1,e.isGameOver=!1,e.isPaused=!1,e.isLoading=!0,e.isVictory=!1,e.leaderboardQualified=!1},gamemenuexit:e=>{S(e),e.challenge.isBeatsPreloaded=!1,e.isGameOver=!1,e.isPaused=!1,e.isVictory=!1,e.menuActive=!0,e.menuSelectedChallenge.id=e.challenge.id,e.menuSelectedChallenge.difficulty=e.challenge.difficulty,e.menuSelectedChallenge.beatmapCharacteristic=e.challenge.beatmapCharacteristic,e.menuSelectedChallenge.difficultyId=e.challenge.difficultyId,e.challenge.id="",e.leaderboardQualified=!1},gamemode:(e,t)=>{e.gameMode=t},genreclear:e=>{e.genre="",e.menuSelectedChallenge.id=""},genreselect:(e,t)=>{e.genre=t,e.genreMenuOpen=!1,e.menuSelectedChallenge.id="",e.playlist="",e.search.query=""},genremenuclose:e=>{e.genreMenuOpen=!1},genremenuopen:e=>{e.genreMenuOpen=!0},keyboardclose:e=>{e.isSearching=!1},keyboardopen:e=>{e.isSearching=!0,e.menuSelectedChallenge.id=""},leaderboard:(e,t)=>{e.leaderboard.length=0,e.leaderboardFetched=!0,e.leaderboardNames="",e.leaderboardScores="";for(let a=0;a{e.has6DOFVR&&(e.leaderboardQualified=!0)},leaderboardscoreadded:(e,t)=>{for(let a=0;a=e.leaderboard[a].score||a>=e.leaderboard.length-1){e.leaderboard.splice(a,0,t.scoreData);break}e.leaderboardNames="",e.leaderboardScores="";for(let t=0;t{e.leaderboardQualified=!1},menuback:e=>{e.difficultyFilterMenuOpen=!1,e.genreMenuOpen=!1,e.isSearching=!1,e.optionsMenuOpen=!1,e.playlistMenuOpen=!1},menuchallengeselect:(e,t)=>{let a=c[t];if(!a)return;Object.assign(e.menuSelectedChallenge,a),e.menuSelectedChallenge.songName=y(a.metadata.songName,24),e.menuDifficulties.length=0,e.menuDifficultiesIds.length=0;const n=JSON.parse(a.metadata.characteristics);for(const t of Object.keys(n))if(!["90Degree","360Degree"].includes(t))for(const a of Object.keys(n[t])){if(null===n[t][a])continue;let r=l[a],s=r;"Standard"!==t&&(s=t+"\n"+s),e.menuDifficulties.unshift({id:t+"-"+a,filename:a+t,difficultyName:r,renderName:s,beatmapCharacteristic:t,difficulty:a})}e.menuDifficulties.sort(w);for(const t of e.menuDifficulties)e.menuDifficultiesIds.push(t.id);const r=e.menuDifficulties[0];e.menuSelectedChallenge.difficulty=r.difficulty,e.menuSelectedChallenge.beatmapCharacteristic=r.beatmapCharacteristic,e.menuSelectedChallenge.difficultyId=r.id,e.menuSelectedChallenge.image=e.menuSelectedChallenge.coverURL,R(e,a),e.challenge.audio="",E(e),e.isSearching=!1;const s=!!e.favorites.filter(e=>e.id===t).length;e.menuSelectedChallenge.isFavorited=s,T(e),e.leaderboardLoading=!0,e.hasSongLoadError=!1,u[t]&&(e.hasSongLoadError=!0)},menuchallengeunselect:e=>{e.menuSelectedChallenge.id="",e.menuSelectedChallenge.difficultyId="",e.menuSelectedChallenge.difficulty="",e.menuSelectedChallenge.beatmapCharacteristic="",T(e)},menudifficultyselect:(e,t)=>{let a;for(const n of e.menuDifficulties)if(n.id===t){a=n;break}e.menuSelectedChallenge.difficultyId=t,e.menuSelectedChallenge.difficulty=a.difficulty,e.menuSelectedChallenge.beatmapCharacteristic=a.beatmapCharacteristic,R(e,e.menuSelectedChallenge),T(e),e.leaderboardLoading=!0},menuopeningend:e=>{e.isMenuOpening=!1},minehit:e=>{A(e)},optionsmenuopen:e=>{e.optionsMenuOpen=!0},pausegame:e=>{e.isPlaying&&(e.isPaused=!0)},playbuttonclick:e=>{if(""===e.menuSelectedChallenge.id)return;if(u[e.menuSelectedChallenge.id])return;let t="frontpage";e.playlist&&(t="playlist"),e.search.query&&(t="search"),e.genre&&(t="genre"),gtag("event","songsource",{event_label:t}),S(e),Object.assign(e.challenge,e.menuSelectedChallenge),gtag("event","difficulty",{event_label:e.challenge.difficulty}),e.menuActive=!1,e.menuSelectedChallenge.id="",e.menuSelectedChallenge.difficulty="",e.menuSelectedChallenge.beatmapCharacteristic="",e.isSearching=!1,e.isLoading=!0,e.loadingText="Loading...",gtag("event","colorscheme",{event_label:e.colorScheme}),e.goodHits.length=0},playlistclear:(e,t)=>{e.menuSelectedChallenge.id="",e.playlist=""},playlistselect:(e,t)=>{e.genre="",e.menuSelectedChallenge.id="",e.playlist=t.id,e.playlistTitle=t.title,e.playlistMenuOpen=!1,e.search.query=""},playlistmenuclose:e=>{e.playlistMenuOpen=!1},playlistmenuopen:e=>{e.playlistMenuOpen=!0},searcherror:(e,t)=>{e.search.hasError=!0},searchprevpage:e=>{0!==e.search.page&&(e.search.page--,b(e))},searchnextpage:e=>{e.search.page>Math.floor(e.search.results.length/6)||(e.search.page++,b(e),void 0!==e.search.url&&e.search.page+3>Math.floor(e.search.results.length/6)&&(e.search.urlPage=e.search.urlPage+1,fetch(e.search.url.replaceAll("CURRENT_PAGE_INDEX",e.search.urlPage)).then(e=>e.json()).then(t=>{var a=(t.docs||t.maps).map(o);for(e.search.results.push(...a),i=0;i{var a;for(e.search.hasError=!1,e.search.page=0,e.search.url=t.url,e.search.urlPage=t.urlPage,e.search.query=t.query,e.search.queryText=y(t.query,10),e.search.results=t.results,a=0;a{if(gtag("event","songcomplete",{event_label:e.gameMode}),"ride"===e.gameMode||!e.inVR)return e.challenge.isBeatsPreloaded=!1,e.isVictory=!1,e.menuActive=!0,void(e.challenge.id="");e.isVictory=!0,e.score.score=isNaN(e.score.score)?0:e.score.score,_(e),e.score.finalAccuracy=e.score.accuracy;const t=parseFloat(e.score.accuracy);if(e.score.rank=t>=97?"S":t>=90?"A":t>=80?"B":t>=70?"C":t>=60?"D":"F",x(e),e.enableHitsDebug){const t={sliceratioMin:s.min(e.goodHits.map(e=>e.sliceRatio)),sliceratioMax:s.max(e.goodHits.map(e=>e.sliceRatio)),sliceratioMean:s.mean(e.goodHits.map(e=>e.sliceRatio)),sliceratioStdDev:s.standardDeviation(e.goodHits.map(e=>e.sliceRatio)),distfromcenterMin:s.min(e.goodHits.map(e=>e.distFromCenter)),distfromcenterMax:s.max(e.goodHits.map(e=>e.distFromCenter)),distfromcenterMean:s.mean(e.goodHits.map(e=>e.distFromCenter)),distfromcenterStdDev:s.standardDeviation(e.goodHits.map(e=>e.distFromCenter)),slashspeedMin:s.min(e.goodHits.map(e=>e.slashSpeed)),slashspeedMax:s.max(e.goodHits.map(e=>e.slashSpeed)),slashspeedMean:s.mean(e.goodHits.map(e=>e.slashSpeed)),slashspeedStdDev:s.standardDeviation(e.goodHits.map(e=>e.slashSpeed)),angledotMin:s.min(e.goodHits.map(e=>e.angleDot)),angledotMax:s.max(e.goodHits.map(e=>e.angleDot)),angledotMean:s.mean(e.goodHits.map(e=>e.angleDot)),angledotStdDev:s.standardDeviation(e.goodHits.map(e=>e.angleDot))};e.hitsDebugString="Hits Stats "+JSON.stringify(t,null,2)}},songloadcancel:e=>{e.challenge.isBeatsPreloaded=!1,e.challenge.audio="",e.challenge.id="",e.challenge.version="",e.isZipFetching=!1,e.isLoading=!1,e.isSongProcessing=!1,e.menuActive=!0},songloaderror:e=>{u[e.menuSelectedChallenge.id||e.challenge.id]=!0,e.hasSongLoadError=!0,e.loadingText="Sorry! There was an error loading this song.\nPlease select another song.",e.challenge.id="",e.challenge.isBeatsPreloaded=!1,e.isSongProcessing=!1,e.isZipFetching=!1},songprocessfinish:e=>{e.isSongProcessing=!1,e.isLoading=!1},songprocessstart:e=>{e.isSongProcessing=!0,e.loadingText="Wrapping up..."},"enter-vr":e=>{e.inVR=AFRAME.utils.device.checkHeadsetConnected(),AFRAME.utils.device.isMobile()||(gtag("event","entervr",{}),AFRAME.utils.device.isOculusBrowser()&>ag("event","oculusbrowser",{}))},"exit-vr":e=>{e.inVR=!1,e.isPlaying&&(e.isPaused=!0)},startgame:e=>{e.introActive=!1,e.menuActive=!0},victoryfake:e=>{e.score.accuracy="74.99",e.score.rank="C"},wallhitstart:e=>{A(e)},ziploaderend:(e,t)=>{e.challenge.audio=t.audio,e.hasSongLoadError=!1,e.menuSelectedChallenge.version="",e.isZipFetching=!1},ziploaderstart:e=>{e.challenge.isBeatsPreloaded=!1,e.isZipFetching=!0},debughits:e=>{e.enableHitsDebug=!0},setHitsDebug:(e,t)=>{e.enableHitsDebug&&(e.hitsDebugString="HitDataV7 "+JSON.stringify(t,null,2),1==t.good&&e.goodHits.push(t))}},computeState:e=>{e.isPlaying=!(e.menuActive||e.isLoading||e.isPaused||e.isVictory||e.isGameOver||e.isZipFetching||e.isSongProcessing||!e.challenge.id||e.introActive);const t=e.menuActive||e.isPaused||e.isVictory||e.isGameOver||e.isLoading||e.introActive;e.leftRaycasterActive=t&&"left"===e.activeHand&&e.inVR,e.rightRaycasterActive=t&&"right"===e.activeHand&&e.inVR,e.mainMenuActive=e.menuActive&&!e.genreMenuOpen&&!e.difficultyFilterMenuOpen&&!e.playlistMenuOpen&&!e.optionsMenuOpen&&!e.isSearching,e.score.active="ride"!==e.gameMode&&e.inVR&&(e.isPlaying||e.isPaused)}});const g=["easy","normal","hard","expert","expertPlus"],v=["Standard"];function w(e,t){const a=g.indexOf(e.difficulty),n=g.indexOf(t.difficulty);if(an)return 1;const r=v.indexOf(e.beatmapCharacteristic),s=v.indexOf(t.beatmapCharacteristic);return r>s?-1:ra?(n=[e],a=t[e]):t[e]===a&&(n.push(e),a=t[e])})),n},variance:function(e){var t=a.mean(e);return a.mean(e.map((function(e){return Math.pow(e-t,2)})))},standardDeviation:function(e){return Math.sqrt(a.variance(e))},meanAbsoluteDeviation:function(e){var t=a.mean(e);return a.mean(e.map((function(e){return Math.abs(e-t)})))},zScores:function(e){var t=a.mean(e),n=a.standardDeviation(e);return e.map((function(e){return(e-t)/n}))}};a.average=a.mean,e.exports=a},function(e,t){e.exports=[{name:"Pop",row:1,column:1},{name:"R&B",row:1,column:2},{name:"Rap",row:1,column:3},{name:"Rock",row:1,column:4},{name:"Soundtrack",row:1,column:5},{name:"Video Games",row:1,column:6},{name:"Electronic",row:2,column:1},{name:"Hip Hop",row:2,column:2},{name:"House",row:2,column:3},{name:"J-Pop",row:2,column:4},{name:"K-Pop",row:2,column:5},{name:"Meme",row:2,column:6},{name:"Alternative",row:3,column:1},{name:"Anime",row:3,column:2},{name:"Comedy",row:3,column:3},{name:"Dubstep",row:3,column:5},{name:"Dance",row:3,column:6}]},function(e,t){e.exports=[{name:"favorites",author:"You!",title:"Your Saved Favorites"},{name:"3966",author:"BeastSaber",title:"Songs With Fantastic Flow Vol. 1"},{name:"3967",author:"BeastSaber",title:"Songs With Fantastic Flow Vol. 2"},{name:"3968",author:"BeastSaber",title:"Songs With Fantastic Flow Vol. 3"},{name:"4134",author:"BeastSaber",title:"Songs With Fantastic Flow Vol. 4"},{name:"4135",author:"BeastSaber",title:"Songs With Fantastic Flow Vol. 5"},{name:"7483",author:"BeastSaber",title:"Maps Of The Weeks"},{name:"4137",author:"BeastSaber",title:"Curator's Picks of 2020"},{name:"4139",author:"BeastSaber",title:"Curator's Picks of 2021"},{name:"11584",author:"BeastSaber",title:"Curator's Picks of 2022"},{name:"4405",author:"BeastSaber",title:"Intro to Dance"},{name:"4138",author:"BeastSaber",title:"Mom's Maps"}]},function(e,t,a){var n=a(19);"string"==typeof n&&(n=[[e.i,n,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0},s=a(203)(n,r);n.locals&&(e.exports=n.locals),e.hot.accept(19,(function(){var t=a(19);if("string"==typeof t&&(t=[[e.i,t,""]]),!function(e,t){var a,n=0;for(a in e){if(!t||e[a]!==t[a])return!1;n++}for(a in t)n--;return 0===n}(n.locals,t.locals))throw new Error("Aborting CSS HMR due to changed css-modules locals.");s(t)})),e.hot.dispose((function(){s()}))},function(e,t){e.exports=function(e){return"string"!=typeof e?e:(/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),/["'() \t\n]/.test(e)?'"'+e.replace(/"/g,'\\"').replace(/\n/g,"\\n")+'"':e)}},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var a=function(e,t){var a=e[1]||"",n=e[3];if(!n)return a;if(t&&"function"==typeof btoa){var r=(o=n,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),s=n.sources.map((function(e){return"/*# sourceURL="+n.sourceRoot+e+" */"}));return[a].concat(s).concat([r]).join("\n")}var o;return[a].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+a+"}":a})).join("")},t.i=function(e,a){"string"==typeof e&&(e=[[null,e,""]]);for(var n={},r=0;r=0&&u.splice(t,1)}function y(e){var t=document.createElement("style");if(void 0===e.attrs.type&&(e.attrs.type="text/css"),void 0===e.attrs.nonce){var n=function(){0;return a.nc}();n&&(e.attrs.nonce=n)}return g(t,e.attrs),f(e,t),t}function g(e,t){Object.keys(t).forEach((function(a){e.setAttribute(a,t[a])}))}function v(e,t){var a,n,r,s;if(t.transform&&e.css){if(!(s="function"==typeof t.transform?t.transform(e.css):t.transform.default(e.css)))return function(){};e.css=s}if(t.singleton){var o=l++;a=d||(d=y(t)),n=S.bind(null,a,o,!1),r=S.bind(null,a,o,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(a=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",g(t,e.attrs),f(e,t),t}(t),n=x.bind(null,a,t),r=function(){b(a),a.href&&URL.revokeObjectURL(a.href)}):(a=y(t),n=E.bind(null,a),r=function(){b(a)});return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else r()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var a=p(e,t);return m(a,t),function(e){for(var n=[],r=0;r\n\n \n\n \n\n \n \n\n \n \n\n \n \n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \x3c!-- --\x3e\n --\x3e\n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\x3c!-- Macro is a templating function. It is rendered into the HTML below with searchResults(). --\x3e\n\n\n\n\n\n\n\x3c!-- Menu container begins here. --\x3e\n\n\n \n\n \n \n\n \n\x3c!-- TODO: Sort the layout based on the IDs. --\x3e\n\n\n\n\x3c!-- All search result text merged and spaced out. --\x3e\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n \n\n\n \n\n \n\n \x3c!-- Top-aligned. --\x3e\n \x3c!-- Uses bind-for and bind-item to render difficulties. --\x3e\n \n \n \n \n \n \n\n \x3c!-- Selected challenge info. --\x3e\n \n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n \n \n \n\n \n\n \n \n\n \n \n \n\n \x3c!-- --\x3e\n\n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n \n\n\x3c!-- --\x3e\n\n\n\x3c!-- Search. --\x3e\n\n\n\n\n \n \n\n\n\x3c!-- Top menu buttons. --\x3e\n\n\n\n\n \x3c!-- Playlist menu toggle. --\x3e\n \n \n \n \n\n \n \n \n\n \n \n\n \x3c!-- Search toggle. --\x3e\n \n \n \n \n\n \n \n \n\n \n \n\n \x3c!-- Difficulty menu toggle. --\x3e\n \x3c!-- \n \n \n \n\n \n --\x3e\n\n \x3c!-- Genre menu toggle. --\x3e\n \n \n \n \n\n \n \n \n\n \n \n\n\n\x3c!-- Options menu toggle. --\x3e\n\n \n \n \n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n \n \n\n\n \n \n \n \n\n\n \n\n\n \n \n \n \n\n\n \n\n \n \n\n\n \n \n \n \n\n\n \n\n\n \n \n \n \n\n\n \n\n\n \n \n \n \n\n\n \n\n \n\n \n\n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\x3c!-- Victory. --\x3e\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n \n\n \n \n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n\n \n \n \x3c!--slice9="width: 1.5; height: 0.24"--\x3e\n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n\n\n\n\n\n\n \n\n \n\n\n\n\n \n\n \n\n \n\n\x3c!-- --\x3e\n\n \n\n \n\n \n\n \n\n \n\n \n\n \x3c!-- --\x3e\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n \n \n\n \n \n\n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n\x3c!-- Titles. --\x3e\n\n \n \n \n\n\n\n\n \x3c!-- Actions. --\x3e\n \n \n \n\n \n \n \n\n \n \n \n\n \x3c!-- Song info. --\x3e\n \n \n\n \n\n \n \n \n \n \n\n\x3c!-- --\x3e\n\n \x3c!-- Beat pieces, explosions, fx, and weapon trail. --\x3e\n \n\n \x3c!-- Supercut FX rings. --\x3e\n \n \n \n \n \n \n \n \n \n\n \x3c!-- Player. --\x3e\n \n \n \n \n\n \n \n\n \n \n \n \n \n\n \x3c!-- Blade. --\x3e\n \n \n \n \n \n \n\n \n \n \n \n\n \x3c!-- Punch. --\x3e\n \n \n \n \n \n\n \x3c!-- Ride. --\x3e\n \n \n \n \n\n \n \n \n \n \n \n \n\n \x3c!-- Blade. --\x3e\n \n \n \n \n \n \n\n \n \n \n \n\n \x3c!-- Punch. --\x3e\n \n \n \n \n \n\n \x3c!-- Ride. --\x3e\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n\n \n \n\n';document.addEventListener("DOMContentLoaded",(function(){let e=document.getElementById("app");e||(e=document.createElement("div"),e.id="app",document.body.appendChild(e));e.innerHTML=n}));{const t=a(237).DiffDOM;if(e.hot.accept(),e.hot.data&&e.hot.data.oldHtml){const a=e.hot.data.oldHtml,r=new t,s=document.createElement("div");s.innerHTML=a;const o=document.createElement("div");o.innerHTML=n;const i=r.diff(s.querySelector("a-scene"),o.querySelector("a-scene"));r.apply(document.querySelector("a-scene"),i)}e.hot.dispose(e=>{e.oldHtml=n})}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";function n(e,t,a){let r;return"#text"===e.nodeName?r=a.document.createTextNode(e.data):"#comment"===e.nodeName?r=a.document.createComment(e.data):("svg"===e.nodeName||t?(r=a.document.createElementNS("http://www.w3.org/2000/svg",e.nodeName),t=!0):r=a.document.createElement(e.nodeName),e.attributes&&Object.entries(e.attributes).forEach(([e,t])=>r.setAttribute(e,t)),e.childNodes&&e.childNodes.forEach(e=>r.appendChild(n(e,t,a))),a.valueDiffing&&(e.value&&(r.value=e.value),e.checked&&(r.checked=e.checked),e.selected&&(r.selected=e.selected))),r}function r(e,t){for(t=t.slice();t.length>0;){if(!e.childNodes)return!1;const a=t.splice(0,1)[0];e=e.childNodes[a]}return e}function s(e,t,a){let s,o,i,c,d,l=r(e,t[a._const.route]);const u={diff:t,node:l};if(a.preDiffApply(u))return!0;switch(t[a._const.action]){case a._const.addAttribute:if(!l||!l.setAttribute)return!1;l.setAttribute(t[a._const.name],t[a._const.value]);break;case a._const.modifyAttribute:if(!l||!l.setAttribute)return!1;l.setAttribute(t[a._const.name],t[a._const.newValue]),"INPUT"===l.nodeName&&"value"===t[a._const.name]&&(l.value=t[a._const.oldValue]);break;case a._const.removeAttribute:if(!l||!l.removeAttribute)return!1;l.removeAttribute(t[a._const.name]);break;case a._const.modifyTextElement:if(!l||3!==l.nodeType)return!1;a.textDiff(l,l.data,t[a._const.oldValue],t[a._const.newValue]);break;case a._const.modifyValue:if(!l||void 0===l.value)return!1;l.value=t[a._const.newValue];break;case a._const.modifyComment:if(!l||void 0===l.data)return!1;a.textDiff(l,l.data,t[a._const.oldValue],t[a._const.newValue]);break;case a._const.modifyChecked:if(!l||void 0===l.checked)return!1;l.checked=t[a._const.newValue];break;case a._const.modifySelected:if(!l||void 0===l.selected)return!1;l.selected=t[a._const.newValue];break;case a._const.replaceElement:l.parentNode.replaceChild(n(t[a._const.newValue],"http://www.w3.org/2000/svg"===l.namespaceURI,a),l);break;case a._const.relocateGroup:c=Array(...new Array(t.groupLength)).map(()=>l.removeChild(l.childNodes[t[a._const.from]])),c.forEach((e,n)=>{0===n&&(o=l.childNodes[t[a._const.to]]),l.insertBefore(e,o||null)});break;case a._const.removeElement:l.parentNode.removeChild(l);break;case a._const.addElement:i=t[a._const.route].slice(),d=i.splice(i.length-1,1)[0],l=r(e,i),l.insertBefore(n(t[a._const.element],"http://www.w3.org/2000/svg"===l.namespaceURI,a),l.childNodes[d]||null);break;case a._const.removeTextElement:if(!l||3!==l.nodeType)return!1;l.parentNode.removeChild(l);break;case a._const.addTextElement:if(i=t[a._const.route].slice(),d=i.splice(i.length-1,1)[0],s=a.document.createTextNode(t[a._const.value]),l=r(e,i),!l||!l.childNodes)return!1;l.insertBefore(s,l.childNodes[d]||null);break;default:console.log("unknown action")}return u.newNode=s,a.postDiffApply(u),!0}function o(e,t,a){const n=e[t];e[t]=e[a],e[a]=n}function i(e,t,a){t.length||(t=[t]),(t=t.slice()).reverse(),t.forEach(t=>{!function(e,t,a){switch(t[a._const.action]){case a._const.addAttribute:t[a._const.action]=a._const.removeAttribute,s(e,t,a);break;case a._const.modifyAttribute:o(t,a._const.oldValue,a._const.newValue),s(e,t,a);break;case a._const.removeAttribute:t[a._const.action]=a._const.addAttribute,s(e,t,a);break;case a._const.modifyTextElement:case a._const.modifyValue:case a._const.modifyComment:case a._const.modifyChecked:case a._const.modifySelected:case a._const.replaceElement:o(t,a._const.oldValue,a._const.newValue),s(e,t,a);break;case a._const.relocateGroup:o(t,a._const.from,a._const.to),s(e,t,a);break;case a._const.removeElement:t[a._const.action]=a._const.addElement,s(e,t,a);break;case a._const.addElement:t[a._const.action]=a._const.removeElement,s(e,t,a);break;case a._const.removeTextElement:t[a._const.action]=a._const.addTextElement,s(e,t,a);break;case a._const.addTextElement:t[a._const.action]=a._const.removeTextElement,s(e,t,a);break;default:console.log("unknown action")}}(e,t,a)})}a.r(t),a.d(t,"DiffDOM",(function(){return x})),a.d(t,"TraceLogger",(function(){return T}));class c{constructor(e={}){Object.entries(e).forEach(([e,t])=>this[e]=t)}toString(){return JSON.stringify(this)}setValue(e,t){return this[e]=t,this}}function d(e){const t=[];return"#text"!==e.nodeName&&"#comment"!==e.nodeName&&(t.push(e.nodeName),e.attributes&&(e.attributes.class&&t.push(`${e.nodeName}.${e.attributes.class.replace(/ /g,".")}`),e.attributes.id&&t.push(`${e.nodeName}#${e.attributes.id}`))),t}function l(e){const t={},a={};return e.forEach(e=>{d(e).forEach(e=>{const n=e in t;n||e in a?n&&(delete t[e],a[e]=!0):t[e]=!0})}),t}function u(e,t){const a=l(e),n=l(t),r={};return Object.keys(a).forEach(e=>{n[e]&&(r[e]=!0)}),r}function h(e){return delete e.outerDone,delete e.innerDone,delete e.valueDone,!e.childNodes||e.childNodes.every(h)}function m(e,t){if(!["nodeName","value","checked","selected","data"].every(a=>e[a]===t[a]))return!1;if(Boolean(e.attributes)!==Boolean(t.attributes))return!1;if(Boolean(e.childNodes)!==Boolean(t.childNodes))return!1;if(e.attributes){const a=Object.keys(e.attributes),n=Object.keys(t.attributes);if(a.length!==n.length)return!1;if(!a.every(a=>e.attributes[a]===t.attributes[a]))return!1}if(e.childNodes){if(e.childNodes.length!==t.childNodes.length)return!1;if(!e.childNodes.every((e,a)=>m(e,t.childNodes[a])))return!1}return!0}function p(e,t,a,n,r){if(!e||!t)return!1;if(e.nodeName!==t.nodeName)return!1;if("#text"===e.nodeName)return!!r||e.data===t.data;if(e.nodeName in a)return!0;if(e.attributes&&t.attributes){if(e.attributes.id){if(e.attributes.id!==t.attributes.id)return!1;if(`${e.nodeName}#${e.attributes.id}`in a)return!0}if(e.attributes.class&&e.attributes.class===t.attributes.class){if(`${e.nodeName}.${e.attributes.class.replace(/ /g,".")}`in a)return!0}}if(n)return!0;const s=e.childNodes?e.childNodes.slice().reverse():[],o=t.childNodes?t.childNodes.slice().reverse():[];if(s.length!==o.length)return!1;if(r)return s.every((e,t)=>e.nodeName===o[t].nodeName);{const e=u(s,o);return s.every((t,a)=>p(t,o[a],e,!0,!0))}}function f(e){return JSON.parse(JSON.stringify(e))}function b(e,t,a,n){let r=0,s=[];const o=e.length,i=t.length,c=Array(...new Array(o+1)).map(()=>[]),l=u(e,t);let h=o===i;h&&e.some((e,a)=>{const n=d(e),r=d(t[a]);return n.length!==r.length?(h=!1,!0):(n.some((e,t)=>{if(e!==r[t])return h=!1,!0}),!h||void 0)});for(let d=0;d=r&&(r=c[d+1][e+1],s=[d+1,e+1]))}}return 0!==r&&{oldValue:s[0]-r,newValue:s[1]-r,length:r}}function y(e,t){return Array(...new Array(e)).map(()=>t)}class g{constructor(){this.list=[]}add(e){this.list.push(...e)}forEach(e){this.list.forEach(t=>e(t))}}function v(e,t){let a,n,r=e;for(t=t.slice();t.length>0;){if(!r.childNodes)return!1;n=t.splice(0,1)[0],a=r,r=r.childNodes[n]}return{node:r,parentNode:a,nodeIndex:n}}function w(e,t,a){return t.forEach(t=>{!function(e,t,a){const n=v(e,t[a._const.route]);let r=n.node;const s=n.parentNode,o=n.nodeIndex,i=[],c={diff:t,node:r};if(a.preDiffApply(c))return!0;let d,l,u,h;switch(t[a._const.action]){case a._const.addAttribute:r.attributes||(r.attributes={}),r.attributes[t[a._const.name]]=t[a._const.value],"checked"===t[a._const.name]?r.checked=!0:"selected"===t[a._const.name]?r.selected=!0:"INPUT"===r.nodeName&&"value"===t[a._const.name]&&(r.value=t[a._const.value]);break;case a._const.modifyAttribute:r.attributes[t[a._const.name]]=t[a._const.newValue];break;case a._const.removeAttribute:delete r.attributes[t[a._const.name]],0===Object.keys(r.attributes).length&&delete r.attributes,"checked"===t[a._const.name]?r.checked=!1:"selected"===t[a._const.name]?delete r.selected:"INPUT"===r.nodeName&&"value"===t[a._const.name]&&delete r.value;break;case a._const.modifyTextElement:r.data=t[a._const.newValue];break;case a._const.modifyValue:r.value=t[a._const.newValue];break;case a._const.modifyComment:r.data=t[a._const.newValue];break;case a._const.modifyChecked:r.checked=t[a._const.newValue];break;case a._const.modifySelected:r.selected=t[a._const.newValue];break;case a._const.replaceElement:d=f(t[a._const.newValue]),d.outerDone=!0,d.innerDone=!0,d.valueDone=!0,s.childNodes[o]=d;break;case a._const.relocateGroup:l=r.childNodes.splice(t[a._const.from],t.groupLength).reverse(),l.forEach(e=>r.childNodes.splice(t[a._const.to],0,e)),r.subsets&&r.subsets.forEach(e=>{if(t[a._const.from]t[a._const.from]){e.oldValue-=t.groupLength;const n=e.oldValue+e.length-t[a._const.to];n>0&&(i.push({oldValue:t[a._const.to]+t.groupLength,newValue:e.newValue+e.length-n,length:n}),e.length-=n)}else if(t[a._const.from]>t[a._const.to]&&e.oldValue>t[a._const.to]&&e.oldValue0&&(i.push({oldValue:t[a._const.to]+t.groupLength,newValue:e.newValue+e.length-n,length:n}),e.length-=n)}else e.oldValue===t[a._const.from]&&(e.oldValue=t[a._const.to])});break;case a._const.removeElement:s.childNodes.splice(o,1),s.subsets&&s.subsets.forEach(e=>{e.oldValue>o?e.oldValue-=1:e.oldValue===o?e.delete=!0:e.oldValueo&&(e.oldValue+e.length-1===o?e.length--:(i.push({newValue:e.newValue+o-e.oldValue,oldValue:o,length:e.length-o+e.oldValue-1}),e.length=o-e.oldValue))}),r=s;break;case a._const.addElement:u=t[a._const.route].slice(),h=u.splice(u.length-1,1)[0],r=v(e,u).node,d=f(t[a._const.element]),d.outerDone=!0,d.innerDone=!0,d.valueDone=!0,r.childNodes||(r.childNodes=[]),h>=r.childNodes.length?r.childNodes.push(d):r.childNodes.splice(h,0,d),r.subsets&&r.subsets.forEach(e=>{if(e.oldValue>=h)e.oldValue+=1;else if(e.oldValueh){const t=e.oldValue+e.length-h;i.push({newValue:e.newValue+e.length-t,oldValue:h+1,length:t}),e.length-=t}});break;case a._const.removeTextElement:s.childNodes.splice(o,1),"TEXTAREA"===s.nodeName&&delete s.value,s.subsets&&s.subsets.forEach(e=>{e.oldValue>o?e.oldValue-=1:e.oldValue===o?e.delete=!0:e.oldValueo&&(e.oldValue+e.length-1===o?e.length--:(i.push({newValue:e.newValue+o-e.oldValue,oldValue:o,length:e.length-o+e.oldValue-1}),e.length=o-e.oldValue))}),r=s;break;case a._const.addTextElement:u=t[a._const.route].slice(),h=u.splice(u.length-1,1)[0],d={},d.nodeName="#text",d.data=t[a._const.value],r=v(e,u).node,r.childNodes||(r.childNodes=[]),h>=r.childNodes.length?r.childNodes.push(d):r.childNodes.splice(h,0,d),"TEXTAREA"===r.nodeName&&(r.value=t[a._const.newValue]),r.subsets&&r.subsets.forEach(e=>{if(e.oldValue>=h&&(e.oldValue+=1),e.oldValueh){const t=e.oldValue+e.length-h;i.push({newValue:e.newValue+e.length-t,oldValue:h+1,length:t}),e.length-=t}});break;default:console.log("unknown action")}r.subsets&&(r.subsets=r.subsets.filter(e=>!e.delete&&e.oldValue!==e.newValue),i.length&&(r.subsets=r.subsets.concat(i))),c.newNode=d,a.postDiffApply(c)}(e,t,a)}),!0}function A(e,t){const a={};if(a.nodeName=e.nodeName,"#text"===a.nodeName||"#comment"===a.nodeName)a.data=e.data;else{if(e.attributes&&e.attributes.length>0){a.attributes={};Array.prototype.slice.call(e.attributes).forEach(e=>a.attributes[e.name]=e.value)}if("TEXTAREA"===a.nodeName)a.value=e.value;else if(e.childNodes&&e.childNodes.length>0){a.childNodes=[];Array.prototype.slice.call(e.childNodes).forEach(e=>a.childNodes.push(A(e,t)))}t.valueDiffing&&(void 0!==e.checked&&e.type&&["radio","checkbox"].includes(e.type.toLowerCase())?a.checked=e.checked:void 0!==e.value&&(a.value=e.value),void 0!==e.selected&&(a.selected=e.selected))}return a}class S{constructor(e,t,a){this.options=a,this.t1=A(e,this.options),this.t2=A(t,this.options),this.diffcount=0,this.foundAll=!1,this.debug&&(this.t1Orig=A(e,this.options),this.t2Orig=A(t,this.options)),this.tracker=new g}init(){return this.findDiffs(this.t1,this.t2)}findDiffs(e,t){let a;do{if(this.options.debug&&(this.diffcount+=1,this.diffcount>this.options.diffcap))throw window.diffError=[this.t1Orig,this.t2Orig],new Error(`surpassed diffcap:${JSON.stringify(this.t1Orig)} -> ${JSON.stringify(this.t2Orig)}`);a=this.findNextDiff(e,t,[]),0===a.length&&(m(e,t)||(this.foundAll?(console.error("Could not find remaining diffs!"),console.log({t1:e,t2:t})):(this.foundAll=!0,h(e),a=this.findNextDiff(e,t,[])))),a.length>0&&(this.foundAll=!1,this.tracker.add(a),w(e,a,this.options))}while(a.length>0);return this.tracker.list}findNextDiff(e,t,a){let n,r;if(this.options.maxDepth&&a.length>this.options.maxDepth)return[];if(!e.outerDone){if(n=this.findOuterDiff(e,t,a),this.filterOuterDiff&&(r=this.filterOuterDiff(e,t,n),r&&(n=r)),n.length>0)return e.outerDone=!0,n;e.outerDone=!0}if(!e.innerDone){if(n=this.findInnerDiff(e,t,a),n.length>0)return n;e.innerDone=!0}if(this.options.valueDiffing&&!e.valueDone){if(n=this.findValueDiff(e,t,a),n.length>0)return e.valueDone=!0,n;e.valueDone=!0}return[]}findOuterDiff(e,t,a){const n=[];let r,s,o,i,d,l;if(e.nodeName!==t.nodeName)return[(new c).setValue(this.options._const.action,this.options._const.replaceElement).setValue(this.options._const.oldValue,f(e)).setValue(this.options._const.newValue,f(t)).setValue(this.options._const.route,a)];if(a.length&&this.options.maxChildCount&&e.childNodes&&t.childNodes&&e.childNodes.length>this.options.maxChildCount&&t.childNodes.length>this.options.maxChildCount){const n=e.childNodes.length{r[i.oldValue+e]=!0,s[i.newValue+e]=!0};for(;i;)if(i=b(a,n,r,s),i){o.push(i);Array(...new Array(i.length)).map(c).forEach(e=>d(e))}return e.subsets=o,e.subsetsAge=100,o}(e,t):[],r=e.childNodes?e.childNodes:[],s=t.childNodes?t.childNodes:[];let o,i=[],d=0;if(n.length>0&&(i=this.attemptGroupRelocation(e,t,n,a),i.length>0))return i;const l=Math.max(r.length,s.length);r.length!==s.length&&(o=!0);for(let e=0;e{const t=e.oldValue+e.length,a=e.newValue+e.length;for(let a=e.oldValue;am+1&&"#text"===e.childNodes[m+1].nodeName;)if(m+=1,t.childNodes[r].data===e.childNodes[m].data){h=!0;break}if(!h)return g.push((new c).setValue(this.options._const.action,this.options._const.modifyTextElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.oldValue,u.data).setValue(this.options._const.newValue,t.childNodes[r].data)),g}g.push((new c).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.value,u.data)),s.splice(r,1),b=Math.min(s.length,o.length),r-=1}else g.push((new c).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.element,f(u))),s.splice(r,1),b=Math.min(s.length,o.length),r-=1;else if(!0===o[r])u=t.childNodes[r],"#text"===u.nodeName?(g.push((new c).setValue(this.options._const.action,this.options._const.addTextElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.value,u.data)),s.splice(r,0,!0),b=Math.min(s.length,o.length),y-=1):(g.push((new c).setValue(this.options._const.action,this.options._const.addElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.element,f(u))),s.splice(r,0,!0),b=Math.min(s.length,o.length),y-=1);else if(s[r]!==o[r]){if(g.length>0)return g;if(l=a[s[r]],d=Math.min(l.newValue,e.childNodes.length-l.length),d!==l.oldValue){i=!1;for(let t=0;t{Object.prototype.hasOwnProperty.call(this.options,e)||(this.options[e]=t)}),!this.options._const){const e=["addAttribute","modifyAttribute","removeAttribute","modifyTextElement","relocateGroup","removeElement","addElement","removeTextElement","addTextElement","replaceElement","modifyValue","modifyChecked","modifySelected","modifyComment","action","route","oldValue","newValue","element","group","from","to","name","value","data","attributes","nodeName","childNodes","checked","selected"];this.options._const={},this.options.compress?e.forEach((e,t)=>this.options._const[e]=t):e.forEach(e=>this.options._const[e]=e)}this.DiffFinder=S}apply(e,t){return function(e,t,a){return t.every(t=>s(e,t,a))}(e,t,this.options)}undo(e,t){return i(e,t,this.options)}diff(e,t){return new this.DiffFinder(e,t,this.options).init()}}class T{constructor(e={}){this.pad="│ ",this.padding="",this.tick=1,this.messages=[];const t=(e,t)=>{const a=e[t];e[t]=(...n)=>{this.fin(t,Array.prototype.slice.call(n));const r=a.apply(e,n);return this.fout(t,r),r}};for(let a in e)"function"==typeof e[a]&&t(e,a);this.log("┌ TRACELOG START")}fin(e,t){this.padding+=this.pad,this.log("├─> entering "+e,t)}fout(e,t){this.log("│<──┘ generated return value",t),this.padding=this.padding.substring(0,this.padding.length-this.pad.length)}format(e,t){return`${function(e){for(e=""+e;e.length<4;)e="0"+e;return e}(t)}> ${this.padding}${e}`}log(){let e=Array.prototype.slice.call(arguments);const t=function(e){return e?"string"==typeof e?e:e instanceof HTMLElement?e.outerHTML||"":e instanceof Array?`[${e.map(t).join(",")}]`:e.toString()||e.valueOf()||"":""};e=e.map(t).join(", "),this.messages.push(this.format(e,this.tick++))}toString(){let e="└───";for(;e.length<=this.padding.length+this.pad.length;)e+="× ";let t=this.padding;return this.padding="",e=this.format(e,this.tick),this.padding=t,`${this.messages.join("\n")}\n${e}`}}}]); \ No newline at end of file +var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)};function r(e){var t="function"==typeof Symbol&&Symbol.iterator,a=t&&e[t],n=0;if(a)return a.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var s,o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},i=i||{},c=o||self;function d(){}function l(e){var t=typeof e;return"object"!=t?t:e?Array.isArray(e)?"array":t:"null"}function u(e){var t=l(e);return"array"==t||"object"==t&&"number"==typeof e.length}function h(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var m="closure_uid_"+(1e9*Math.random()>>>0),p=0;function f(e,t,a){return e.call.apply(e.bind,arguments)}function b(e,t,a){if(!e)throw Error();if(2t?1:0}e:{var P=c.navigator;if(P){var L=P.userAgent;if(L){_=L;break e}}_=""}function j(e,t,a){for(var n in e)t.call(a,e[n],n,e)}function C(e){var t={};for(var a in e)t[a]=e[a];return t}var I="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function D(e,t){for(var a,n,r=1;rparseFloat(W)){U=String(Y);break e}}U=W}var K,X={};function Q(e){return function(e,t){var a=X;return Object.prototype.hasOwnProperty.call(a,e)?a[e]:a[e]=t(e)}(e,(function(){for(var t=0,a=N(String(U)).split("."),n=N(String(e)).split("."),r=Math.max(a.length,n.length),s=0;0==t&&s=e.keyCode)&&(e.keyCode=-1)}catch(e){}};var ie="closure_listenable_"+(1e6*Math.random()|0),ce=0;function de(e,t,a,n,r){this.listener=e,this.proxy=null,this.src=t,this.type=a,this.capture=!!n,this.ca=r,this.key=++ce,this.Y=this.Z=!1}function le(e){e.Y=!0,e.listener=null,e.proxy=null,e.src=null,e.ca=null}function ue(e){this.src=e,this.a={},this.b=0}function he(e,t){var a=t.type;if(a in e.a){var n,r=e.a[a],s=S(r,t);(n=0<=s)&&Array.prototype.splice.call(r,s,1),n&&(le(t),0==e.a[a].length&&(delete e.a[a],e.b--))}}function me(e,t,a,n){for(var r=0;r>>0);function xe(e){return"function"==l(e)?e:(e[Ee]||(e[Ee]=function(t){return e.handleEvent(t)}),e[Ee])}function Te(){A.call(this),this.c=new ue(this),this.J=this,this.C=null}function Re(e,t,a,n){if(!(t=e.c.a[String(t)]))return!0;t=t.concat();for(var r=!0,s=0;sn.length)){var r=n[1];if(Array.isArray(r)&&!(1>r.length)){var s=r[0];if("noop"!=s&&"stop"!=s&&"close"!=s)for(var o=1;ot.length?bt:(t=t.substr(n,a),e.D=n+a,t))}function At(e){e.U=v()+e.P,St(e,e.P)}function St(e,t){if(null!=e.o)throw Error("WatchDog timer not null");e.o=at(y(e.Ua,e),t)}function Et(e){e.o&&(c.clearTimeout(e.o),e.o=null)}function xt(e){0==e.g.v||e.A||Ha(e.g,e)}function Tt(e){Et(e);var t=e.F;t&&"function"==typeof t.ja&&t.ja(),e.F=null,Fe(e.R),Ge(e.J),e.a&&(t=e.a,e.a=null,t.abort(),t.ja())}function Rt(e,t){try{var a=e.g;if(0!=a.v&&(a.a==e||sa(a.b,e)))if(a.I=e.N,!e.C&&sa(a.b,e)&&3==a.v){try{var n=a.ka.a.parse(t)}catch(e){n=null}if(Array.isArray(n)&&3==n.length){var r=n;if(0==r[0]){e:if(!a.j){if(a.a){if(!(a.a.u+3e3r[2]&&a.H&&0==a.o&&!a.m&&(a.m=at(y(a.Ra,a),6e3));if(1>=ra(a.b)&&a.ea){try{a.ea()}catch(e){}a.ea=void 0}}else za(a,11)}else if((e.C||a.a==e)&&Za(a),!R(t))for(t=n=a.ka.a.parse(t),n=0;nt||3==t&&!z&&!this.a.$())){this.A||4!=t||7==a||Qe(8==a||0>=n?3:2),Et(this);var r=this.a.X();this.N=r;var s=this.a.$();if(this.b=200==r,function(e,t,a,n,r,s,o){e.info((function(){return"XMLHTTP RESP ("+n+") [ attempt "+r+"]: "+t+"\n"+a+"\n"+s+" "+o}))}(this.c,this.m,this.l,this.f,this.T,t,r),this.b){if(this.V&&!this.C){t:{if(this.a){var o,i=this.a;if((o=i.a?i.a.getResponseHeader("X-HTTP-Initial-Response"):null)&&!R(o)){var c=o;break t}}c=null}if(!c){this.b=!1,this.h=3,et(12),Tt(this),xt(this);break e}Je(this.c,this.f,c,"Initial handshake response via X-HTTP-Initial-Response"),this.C=!0,Rt(this,c)}this.I?(vt(this,t,s),z&&this.b&&3==t&&(Ve(this.J,this.R,"tick",this.Va),this.R.start())):(Je(this.c,this.f,s,null),Rt(this,s)),4==t&&Tt(this),this.b&&!this.A&&(4==t?Ha(this.g,this):(this.b=!1,At(this)))}else 400==r&&0t)throw Error("Bad port number "+t);e.h=t}else e.h=null}function Ot(e,t,a){t instanceof Jt?(e.b=t,function(e,t){t&&!e.f&&(Yt(e),e.c=null,e.a.forEach((function(e,t){var a=t.toLowerCase();t!=a&&(Kt(this,t),Qt(this,a,e))}),e)),e.f=t}(e.b,e.a)):(a||(t=Ht(t,Gt)),e.b=new Jt(t,e.a))}function Ut(e,t,a){e.b.set(t,a)}function Ft(e){return Ut(e,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^v()).toString(36)),e}function Zt(e,t){return e?t?decodeURI(e.replace(/%25/g,"%2525")):decodeURIComponent(e):""}function Ht(e,t,a){return"string"==typeof e?(e=encodeURI(e).replace(t,Bt),a&&(e=e.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),e):null}function Bt(e){return"%"+((e=e.charCodeAt(0))>>4&15).toString(16)+(15&e).toString(16)}Lt.prototype.toString=function(){var e=[],t=this.f;t&&e.push(Ht(t,zt,!0),":");var a=this.c;return(a||"file"==t)&&(e.push("//"),(t=this.j)&&e.push(Ht(t,zt,!0),"@"),e.push(encodeURIComponent(String(a)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(a=this.h)&&e.push(":",String(a))),(a=this.g)&&(this.c&&"/"!=a.charAt(0)&&e.push("/"),e.push(Ht(a,"/"==a.charAt(0)?Vt:qt,!0))),(a=this.b.toString())&&e.push("?",a),(a=this.i)&&e.push("#",Ht(a,Wt)),e.join("")};var zt=/[#\/\?@]/g,qt=/[#\?:]/g,Vt=/[#\?]/g,Gt=/[#\?@]/g,Wt=/#/g;function Jt(e,t){this.b=this.a=null,this.c=e||null,this.f=!!t}function Yt(e){e.a||(e.a=new Nt,e.b=0,e.c&&function(e,t){if(e){e=e.split("&");for(var a=0;a2*e.c&&kt(e)))}function Xt(e,t){return Yt(e),t=$t(e,t),Mt(e.a.b,t)}function Qt(e,t,a){Kt(e,t),0=e.f}function ra(e){return e.b?1:e.a?e.a.size:0}function sa(e,t){return e.b?e.b==t:!!e.a&&e.a.has(t)}function oa(e,t){e.a?e.a.add(t):e.b=t}function ia(e,t){e.b&&e.b==t?e.b=null:e.a&&e.a.has(t)&&e.a.delete(t)}function ca(e){var t,a;if(null!=e.b)return e.c.concat(e.b.s);if(null!=e.a&&0!==e.a.size){var n=e.c;try{for(var s=r(e.a.values()),o=s.next();!o.done;o=s.next()){var i=o.value;n=n.concat(i.s)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(a=s.return)&&a.call(s)}finally{if(t)throw t.error}}return n}return T(e.c)}function da(){}function la(){this.a=new da}function ua(e,t,a){var n=a||"";try{_t(e,(function(e,a){var r=e;h(e)&&(r=_e(e)),t.push(n+a+"="+encodeURIComponent(r))}))}catch(e){throw t.push(n+"type="+encodeURIComponent("_badmap")),e}}function ha(e,t,a,n,r){try{t.onload=null,t.onerror=null,t.onabort=null,t.ontimeout=null,r(n)}catch(e){}}ta.prototype.cancel=function(){var e,t;if(this.c=ca(this),this.b)this.b.cancel(),this.b=null;else if(this.a&&0!==this.a.size){try{for(var a=r(this.a.values()),n=a.next();!n.done;n=a.next()){n.value.cancel()}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}this.a.clear()}},da.prototype.stringify=function(e){return c.JSON.stringify(e,void 0)},da.prototype.parse=function(e){return c.JSON.parse(e,void 0)};var ma=c.JSON.parse;function pa(e){Te.call(this),this.headers=new Nt,this.H=e||null,this.b=!1,this.s=this.a=null,this.B="",this.h=0,this.f="",this.g=this.A=this.l=this.u=!1,this.o=0,this.m=null,this.I=fa,this.D=this.F=!1}w(pa,Te);var fa="",ba=/^https?$/i,ya=["POST","PUT"];function ga(e){return"content-type"==e.toLowerCase()}function va(e,t){e.b=!1,e.a&&(e.g=!0,e.a.abort(),e.g=!1),e.f=t,e.h=5,wa(e),Sa(e)}function wa(e){e.u||(e.u=!0,e.dispatchEvent("complete"),e.dispatchEvent("error"))}function Aa(e){if(e.b&&void 0!==i&&(!e.s[1]||4!=xa(e)||2!=e.X()))if(e.l&&4==xa(e))Ze(e.za,0,e);else if(e.dispatchEvent("readystatechange"),4==xa(e)){e.b=!1;try{var t,a=e.X();e:switch(a){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var n=!0;break e;default:n=!1}if(!(t=n)){var r;if(r=0===a){var s=String(e.B).match(Pt)[1]||null;if(!s&&c.self&&c.self.location){var o=c.self.location.protocol;s=o.substr(0,o.length-1)}r=!ba.test(s?s.toLowerCase():"")}t=r}if(t)e.dispatchEvent("complete"),e.dispatchEvent("success");else{e.h=6;try{var d=2(d-=s))s=Math.max(0,r[c].b-100),i=!1;else try{ua(l,o,"req"+d+"_")}catch(e){n&&n(l)}}if(i){n=o.join("&");break e}}return e=e.g.splice(0,a),t.s=e,n}function Da(e){e.a||e.j||(e.U=1,Ce(e.Aa,e),e.o=0)}function Oa(e){return!(e.a||e.j||3<=e.o)&&(e.U++,e.j=at(y(e.Aa,e),Ba(e,e.o)),e.o++,!0)}function Ua(e){null!=e.s&&(c.clearTimeout(e.s),e.s=null)}function Fa(e){e.a=new mt(e,e.c,"rpc",e.U),null===e.i&&(e.a.B=e.l),e.a.O=0;var t=jt(e.la);Ut(t,"RID","rpc"),Ut(t,"SID",e.J),Ut(t,"CI",e.H?"0":"1"),Ut(t,"AID",e.P),Ca(e,t),Ut(t,"TYPE","xmlhttp"),e.i&&e.l&&Ta(t,e.i,e.l),e.D&&e.a.setTimeout(e.D);var a=e.a;e=e.ga,a.H=1,a.i=Ft(jt(t)),a.j=null,a.I=!0,gt(a,e)}function Za(e){null!=e.m&&(c.clearTimeout(e.m),e.m=null)}function Ha(e,t){var a=null;if(e.a==t){Za(e),Ua(e),e.a=null;var n=2}else{if(!sa(e.b,t))return;a=t.s,ia(e.b,t),n=1}if(e.I=t.N,0!=e.v)if(t.b)if(1==n){a=t.j?t.j.length:0,t=v()-t.u;var r=e.u;(n=Ke()).dispatchEvent(new tt(n,a,t,r)),La(e)}else Da(e);else if(3==(r=t.h)||0==r&&0=e.b.f-(e.h?1:0))&&(e.h?(e.g=t.s.concat(e.g),!0):!(1==e.v||2==e.v||e.u>=(e.Ia?0:e.Ja))&&(e.h=at(y(e.Ba,e,t),Ba(e,e.u)),e.u++,!0))}(e,t)||2==n&&Oa(e)))switch(a&&0t?null:"string"==typeof e?e.charAt(t):e[t]}(r.L()),a=c.FormData&&e instanceof c.FormData,!(0<=S(ya,t))||n||a||r.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8"),r.forEach((function(e,t){this.a.setRequestHeader(t,e)}),this),this.I&&(this.a.responseType=this.I),"withCredentials"in this.a&&this.a.withCredentials!==this.F&&(this.a.withCredentials=this.F);try{Ea(this),0=this.N)){var e=2*this.N;this.c.info("BP detection timer enabled: "+e),this.s=at(y(this.Sa,this),e)}},s.Sa=function(){this.s&&(this.s=null,this.c.info("BP detection timeout reached."),this.c.info("Buffering proxy detected and switch to long-polling!"),this.H=!1,this.F=!0,ka(this),Fa(this))},s.Ra=function(){null!=this.m&&(this.m=null,ka(this),Oa(this),et(19))},s.Xa=function(e){e?(this.c.info("Successfully pinged google.com"),et(2)):(this.c.info("Failed to ping google.com"),et(1))},(s=Wa.prototype).ta=function(){},s.sa=function(){},s.ra=function(){},s.qa=function(){},s.Ha=function(){},Ja.prototype.a=function(e,t){return new Ya(e,t)},w(Ya,Te),(s=Ya.prototype).addEventListener=function(e,t,a,n){Ya.S.addEventListener.call(this,e,t,a,n)},s.removeEventListener=function(e,t,a,n){Ya.S.removeEventListener.call(this,e,t,a,n)},s.Oa=function(){this.a.f=this.f,this.h&&(this.a.C=!0);var e=this.a,t=this.l,a=this.b||void 0;et(0),e.fa=t,e.W=a||{},e.H=e.T,e.B=Va(e,null,e.fa),La(e)},s.close=function(){Na(this.a)},s.Pa=function(e){if("string"==typeof e){var t={};t.__data__=e,Pa(this.a,t)}else this.g?((t={}).__data__=_e(e),Pa(this.a,t)):Pa(this.a,e)},s.G=function(){this.a.f=null,delete this.f,Na(this.a),delete this.a,Ya.S.G.call(this)},w(Ka,lt),w(Xa,ut),w(Qa,Wa),Qa.prototype.ta=function(){this.a.dispatchEvent("a")},Qa.prototype.sa=function(e){this.a.dispatchEvent(new Ka(e))},Qa.prototype.ra=function(e){this.a.dispatchEvent(new Xa(e))},Qa.prototype.qa=function(){this.a.dispatchEvent("b")},Ja.prototype.createWebChannel=Ja.prototype.a,Ya.prototype.send=Ya.prototype.Pa,Ya.prototype.open=Ya.prototype.Oa,Ya.prototype.close=Ya.prototype.close,nt.NO_ERROR=0,nt.TIMEOUT=8,nt.HTTP_ERROR=6,rt.COMPLETE="complete",it.EventType=dt,dt.OPEN="a",dt.CLOSE="b",dt.ERROR="c",dt.MESSAGE="d",Te.prototype.listen=Te.prototype.va,pa.prototype.listenOnce=pa.prototype.wa,pa.prototype.getLastError=pa.prototype.Qa,pa.prototype.getLastErrorCode=pa.prototype.ua,pa.prototype.getStatus=pa.prototype.X,pa.prototype.getResponseJson=pa.prototype.Na,pa.prototype.getResponseText=pa.prototype.$,pa.prototype.send=pa.prototype.ba;var $a={createWebChannelTransport:function(){return new Ja},ErrorCode:nt,EventType:rt,WebChannel:it,XhrIo:pa},en=$a.createWebChannelTransport,tn=$a.ErrorCode,an=$a.EventType,nn=$a.WebChannel,rn=$a.XhrIo;t.default=$a}.call(this,a(1))},function(e,t,a){const n=a(0),r=new THREE.Color;function s(e,t,a){r.set(a),e.uniforms?(e.uniforms[t].value.x=r.r,e.uniforms[t].value.y=r.g,e.uniforms[t].value.z=r.b):e[t].set(a)}function o(e,t,a,n,r,s){e.fillStyle=t,e.fillRect(a,n,r,s)}function i(e,t,a,n,r,s,o){let i;i=s>o?e.createLinearGradient(0,0,s,0):e.createLinearGradient(0,0,0,o),i.addColorStop(0,t),i.addColorStop(1,a),e.fillStyle=i,e.fillRect(n,r,s,o)}if(AFRAME.registerSystem("materials",{schema:{},init:function(){this.curve=null,this.panelMaterials=[];const e=localStorage.getItem("colorScheme")||"default";this.scheme=n.schemes[e],this.textureList=[],this.beatsCanvas=document.createElement("canvas"),this.beatsTexture=new THREE.CanvasTexture(this.beatsCanvas),this.generateBeatsTexture(),this.textureList.push(this.beatsTexture),this.envmapCanvas=document.createElement("canvas"),this.envmapTexture=new THREE.CanvasTexture(this.envmapCanvas),this.generateEnvmapTexture(),this.textureList.push(this.envmapTexture),this.fistsCanvas=document.createElement("canvas"),this.fistsTexture=new THREE.CanvasTexture(this.fistsCanvas),this.generateFistsTexture(),this.textureList.push(this.fistsTexture),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{this.createMaterials()}):this.createMaterials()},play:function(){this.setColorScheme()},tick:function(e,t){this.aurora.uniforms.time.value=e,this.home.animate&&(this.home.uniforms.time.value=e),this.leftFistWeapon.uniforms.time.value=e,this.leftWeapon.uniforms.time.value=e,this.rightFistWeapon.uniforms.time.value=e,this.rightWeapon.uniforms.time.value=e,this.rings.uniforms.time.value=e,this.tube.uniforms.time.value=e},createMaterials:function(){const e=this.scheme;this.tunnel=new THREE.ShaderMaterial({vertexShader:a(110),fragmentShader:a(111),uniforms:{fogColor:{value:new THREE.Color(e.primary)},color1:{value:new THREE.Color(e.primary)},color2:{value:new THREE.Color(e.secondary)},color3:{value:new THREE.Color(e.tertiary)},scale:{value:1}},transparent:!0}),this.merkaba=new THREE.MeshBasicMaterial({color:new THREE.Color(e.primary)}),this.backglow=new THREE.MeshBasicMaterial({transparent:!0,map:(new THREE.TextureLoader).load(document.getElementById("backGlowImg").src),color:new THREE.Color(e.primary)}),this.textureList.push(this.backglow.map),this.aurora=new THREE.ShaderMaterial({vertexShader:a(112),fragmentShader:a(113),uniforms:{colorPrimary:{value:new THREE.Color(e.primary)},colorSecondary:{value:new THREE.Color(e.secondary)},time:{value:0}},transparent:!0}),this.rings=new THREE.ShaderMaterial({vertexShader:a(114),fragmentShader:a(115),uniforms:{colorPrimary:{value:new THREE.Color(e.primary)},colorSecondary:{value:new THREE.Color(e.secondary)},colorTertiary:{value:new THREE.Color(e.tertiary)},time:{value:0}},transparent:!0,depthWrite:!1}),this.moon=new THREE.ShaderMaterial({vertexShader:a(116),fragmentShader:a(117),uniforms:{map:{value:(new THREE.TextureLoader).load(document.getElementById("moonImg").src)},tint:{value:new THREE.Color(e.secondarybright)}},transparent:!0}),this.textureList.push(this.moon.uniforms.map.value),this.home=new THREE.ShaderMaterial({vertexShader:a(118),fragmentShader:a(119),uniforms:{color1:{value:new THREE.Color(e.primary)},color2:{value:new THREE.Color(e.secondary)},color3:{value:new THREE.Color(e.tertiary)},src:{value:(new THREE.TextureLoader).load(document.getElementById("homeShadowImg").src)},time:{value:0}},transparent:!0}),this.textureList.push(this.home.uniforms.src.value);const t=(new THREE.TextureLoader).load(document.getElementById("weaponImg").src);t.wrapS=THREE.RepeatWrapping,t.wrapT=THREE.RepeatWrapping,t.repeat.set(2,2),t.magFilter=THREE.NearestFilter,this.textureList.push(t),this.rightWeapon=new THREE.ShaderMaterial({vertexShader:a(26),fragmentShader:a(27),uniforms:{src:{value:t},color:{value:new THREE.Color(e.secondary)},thickness:{value:1.6},time:{value:0}},transparent:!0,blending:THREE.AdditiveBlending}),this.leftWeapon=new THREE.ShaderMaterial({vertexShader:a(26),fragmentShader:a(27),uniforms:{src:{value:t},color:{value:new THREE.Color(e.primary)},thickness:{value:1.6},time:{value:0}},transparent:!0,blending:THREE.AdditiveBlending}),this.leftFistWeapon=new THREE.ShaderMaterial({vertexShader:a(17),fragmentShader:a(28),uniforms:{src:{value:t},color:{value:new THREE.Color(e.primary)},time:{value:0}},side:THREE.DoubleSide,transparent:!0,blending:THREE.AdditiveBlending}),this.rightFistWeapon=new THREE.ShaderMaterial({vertexShader:a(17),fragmentShader:a(28),uniforms:{src:{value:t},color:{value:new THREE.Color(e.secondary)},time:{value:0}},side:THREE.DoubleSide,transparent:!0,blending:THREE.AdditiveBlending});const r=(new THREE.TextureLoader).load(document.getElementById("weaponImg").src),s=(new THREE.TextureLoader).load(document.getElementById("weaponHandleImg").src);r.mapping=THREE.SphericalReflectionMapping,this.textureList.push(r),this.textureList.push(s),this.leftWeaponHandle=new THREE.MeshStandardMaterial({roughness:.4,metalness:.5,color:new THREE.Color(e.primary),map:s,envMap:r}),this.rightWeaponHandle=new THREE.MeshStandardMaterial({roughness:.4,metalness:.5,color:new THREE.Color(e.secondary),map:s,envMap:r});const o=(new THREE.TextureLoader).load(document.getElementById("weapon2Img").src);o.mapping=THREE.SphericalReflectionMapping,this.leftFist=new THREE.MeshStandardMaterial({roughness:.3,metalness:.8,map:this.fistsTexture,envMap:o,transparent:!0}),this.rightFist=new THREE.MeshStandardMaterial({roughness:.3,metalness:.8,map:this.fistsTexture,envMap:o,transparent:!0}),this.beat=new THREE.MeshLambertMaterial({map:this.beatsTexture,transparent:!0}),this.blueBeatPieces=new THREE.MeshLambertMaterial({map:this.beatsTexture,color:e.secondary,emissive:e.secondary,emissiveIntensity:.2}),this.redBeatPieces=new THREE.MeshLambertMaterial({map:this.beatsTexture,color:e.primary,emissive:e.primary,emissiveIntensity:.2}),this.minePieces=new THREE.MeshLambertMaterial({color:e.tertiary,emissive:e.tertiary,emissiveIntensity:.2});const i=(new THREE.TextureLoader).load(document.getElementById("backGlowImg").src);this.redBeatGlow=new THREE.MeshBasicMaterial({color:e.primary,map:i,blending:THREE.AdditiveBlending,transparent:!0}),this.blueBeatGlow=new THREE.MeshBasicMaterial({color:e.secondary,map:i,blending:THREE.AdditiveBlending,transparent:!0}),this.textureList.push(i),this.stars=new THREE.PointsMaterial({size:1,map:(new THREE.TextureLoader).load(document.getElementById("starImg").src),blending:THREE.AdditiveBlending,transparent:!0,color:new THREE.Color(e.secondary)}),this.textureList.push(this.stars.map);const c=(new THREE.TextureLoader).load(document.getElementById("sideglowImg").src);this.textureList.push(c),this.leftsideglow=new THREE.MeshBasicMaterial({map:c,transparent:!0,blending:THREE.AdditiveBlending,depthTest:!1,side:THREE.BackSide,color:new THREE.Color(n.OFF)}),this.rightsideglow=new THREE.MeshBasicMaterial({map:c,transparent:!0,blending:THREE.AdditiveBlending,depthTest:!1,color:new THREE.Color(n.OFF)});const d=(new THREE.TextureLoader).load(document.getElementById("plumeImg").src);d.minFilter=THREE.LinearFilter,this.arrowBluePlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.secondary)},src:{value:d}},transparent:!0,depthTest:!1}),this.arrowRedPlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.primary)},src:{value:d}},transparent:!0,depthTest:!1}),this.dotBluePlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.secondary)},src:{value:d}},transparent:!0,depthTest:!1}),this.dotRedPlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.primary)},src:{value:d}},transparent:!0,depthTest:!1}),this.minePlume=new THREE.ShaderMaterial({vertexShader:a(7),fragmentShader:a(8),uniforms:{color:{value:new THREE.Color(e.tertiary)},src:{value:d}},transparent:!0,depthTest:!1});const l=(new THREE.TextureLoader).load(document.getElementById("tubeImg").src),u=(new THREE.TextureLoader).load(document.getElementById("tubeColorImg").src);l.generateMipmaps=!1,l.minFilter=THREE.LinearFilter,u.generateMipmaps=!1,u.minFilter=THREE.LinearFilter,this.tube=new THREE.ShaderMaterial({vertexShader:a(120),fragmentShader:a(121),uniforms:{time:{value:0},opacity:{value:0},src:{value:l},color:{value:u}},transparent:!0,depthTest:!1,side:THREE.BackSide});const h=(new THREE.TextureLoader).load(document.getElementById("handStarTrailImg").src);h.generateMipmaps=!1,h.minFilter=THREE.LinearFilter,this.handStarTrail=new THREE.ShaderMaterial({vertexShader:a(122),fragmentShader:a(123),uniforms:{colorPrimary:{value:new THREE.Color(e.primary)},colorSecondary:{value:new THREE.Color(e.secondary)},colorTertiary:{value:new THREE.Color(e.tertiary)},pulse:{value:0},src:{value:h}},transparent:!0,depthTest:!1,blending:THREE.AdditiveBlending,side:THREE.DoubleSide})},setColorScheme:function(e){this.el.sceneEl;const t=this.scheme=n.schemes[e]||n.schemes.default;s(this.arrowBluePlume,"color",t.secondary),s(this.arrowRedPlume,"color",t.primary),s(this.aurora,"colorPrimary",t.primary),s(this.aurora,"colorSecondary",t.secondary),s(this.backglow,"color",t.primary),s(this.blueBeatGlow,"color",t.secondary),s(this.blueBeatGlow,"color",t.secondary),s(this.blueBeatPieces,"color",t.secondary),s(this.blueBeatPieces,"emissive",t.secondary),s(this.dotBluePlume,"color",t.secondary),s(this.dotRedPlume,"color",t.primary),s(this.handStarTrail,"colorPrimary",t.primary),s(this.handStarTrail,"colorSecondary",t.secondary),s(this.handStarTrail,"colorTertiary",t.tertiary),s(this.home,"color1",t.primary),s(this.home,"color2",t.secondary),s(this.home,"color3",t.tertiary),s(this.leftFist,"color",t.primarybright),s(this.leftFistWeapon,"color",t.primary),s(this.leftWeapon,"color",t.primary),s(this.leftWeaponHandle,"color",t.primary),s(this.merkaba,"color",t.primary),s(this.minePieces,"color",t.tertiary),s(this.minePieces,"emissive",t.tertiary),s(this.minePlume,"color",t.tertiary),s(this.moon,"tint",t.secondarybright),s(this.redBeatGlow,"color",t.primary),s(this.redBeatGlow,"color",t.primary),s(this.redBeatPieces,"color",t.primary),s(this.redBeatPieces,"emissive",t.primary),s(this.rightFist,"color",t.secondarybright),s(this.rightWeapon,"color",t.secondary),s(this.rightFistWeapon,"color",t.secondary),s(this.rightWeaponHandle,"color",t.secondary),s(this.rings,"colorPrimary",t.primary),s(this.rings,"colorSecondary",t.secondary),s(this.rings,"colorTertiary",t.tertiary),s(this.stars,"color",t.secondary),s(this.tunnel,"fogColor",t.primary),s(this.tunnel,"color1",t.primary),s(this.tunnel,"color2",t.secondary),s(this.tunnel,"color3",t.tertiary),this.generateBeatsTexture(),this.generateEnvmapTexture(),this.generateFistsTexture(),document.querySelectorAll("a-entity[wall]").forEach(e=>{s(e.getObject3D("mesh").material,"colorTertiary",t.tertiary)}),this.panelMaterials.forEach(e=>{s(e,"colorPrimary",t.primary),s(e,"colorSecondary",t.secondary)}),s(this.curve,"fogColor",t.primary),s(this.curve,"color1",t.primary),s(this.curve,"color2",t.secondary)},generateBeatsTexture:function(){const e=this.scheme,t=new THREE.Color(e.primary),a=new THREE.Color(e.secondary),n=new THREE.Color(e.tertiary),r=this.beatsCanvas,s=r.getContext("2d");r.width=512,r.height=32,o(s,n.getStyle(),0,0,128,6),o(s,"#000",128,0,128,6),o(s,a.getStyle(),256,0,128,6),o(s,t.getStyle(),384,0,105,6),o(s,"#FFF",489,0,23,6),i(s,"#000000",a.getStyle(),0,6,512,4),i(s,"#000",t.getStyle(),0,10,512,5),i(s,"#000",n.getStyle(),0,15,512,4),i(s,`rgba(${a.r}, ${a.g}, ${a.b}, 0)`,a.getStyle(),0,19,512,5),i(s,`rgba(${t.r}, ${t.g}, ${t.b}, 0)`,t.getStyle(),0,24,512,4),i(s,`rgba(${n.r}, ${n.g}, ${n.b}, 0)`,n.getStyle(),0,28,512,4);const c=this.beatsTexture;return c.generateMipmaps=!1,c.magFilter=THREE.LinearFilter,c.minFilter=THREE.LinearFilter,c.needsUpdate=!0,c},generateFistsTexture:function(){const e=this.scheme,t=new THREE.Color(e.primarybright),a=new THREE.Color(e.secondarybright),n=this.fistsCanvas,r=n.getContext("2d");return n.width=8,n.height=128,i(r,t.getStyle(),`rgba(${t.r}, ${t.g}, ${t.b}, 0)`,0,0,4,128),i(r,a.getStyle(),`rgba(${a.r}, ${a.g}, ${a.b}, 0)`,4,0,4,128),this.fistsTexture.needsUpdate=!0,this.fistsTexture},generateEnvmapTexture:function(){const e=this.scheme,t=new THREE.Color(e.primary),a=new THREE.Color(e.secondary),n=document.getElementById("envmapTemplateImg");n.addEventListener("load",()=>{const e=n.width,r=n.height,s=this.envmapCanvas;s.width=e,s.height=r;const o=s.getContext("2d");o.drawImage(n,0,0);const i=o.getImageData(0,0,e,r),c=i.data;let d,l;for(let e=0;e{"mesh"===t.detail.type&&(e=this.el.getObject3D("mesh"),e&&this.applyMaterial(e))}),this.material.animate=this.data.animate},applyMaterial:function(e){e.detail&&(e=e.detail.model),this.data.recursive?e.traverse(e=>{"Mesh"===e.type&&(e.material=this.material)}):e.material=this.material}}),AFRAME.registerComponent("materials-color-menu",{play:function(){this.text=document.getElementById("colorName")},events:{mouseenter:function(e){this.text.setAttribute("text","value",e.target.dataset.colorName)},mouseleave:function(e){this.text.setAttribute("text","value","")},click:function(e){this.el.sceneEl.systems.materials.setColorScheme(e.target.dataset.colorScheme),this.el.sceneEl.emit("colorschemechange",e.target.dataset.colorScheme,!1)}}}),window.AFRAME){const t=["materials","materials-color-menu"],a=[],n=["materials"];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.el.object3D.visible=!1,setTimeout(()=>{this.el.components.layout.update(),this.el.object3D.visible=!0},150)})},events:{click:function(e){this.el.sceneEl.emit("menudifficultyselect",e.target.closest(".difficultyOption").dataset.difficulty,!1)}}}),window.AFRAME){const t=["menu-difficulty-select"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.el.sceneEl.emit("genreselect",e.target.closest(".genre").dataset.bindForKey)})}}),window.AFRAME){const t=["menu-genre"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{const t=e.target.closest("[data-mode]"),a=t.dataset.mode,n=t.dataset.name;this.el.sceneEl.emit("gamemode",a,!1),this.data.hasVR&&localStorage.setItem("gameMode",n),this.setModeOption(n)})},update:function(){this.data.hasVR?(this.setModeOption(localStorage.getItem("gameMode")||"punchvr"),this.el.sceneEl.emit("gamemode",s[localStorage.getItem("gameMode")||"punchvr"])):this.setModeOption("ride2d")},setModeOption:function(e){const t=this.el.querySelectorAll(".modeItem");document.getElementById("modeIcon").object3D.position.y=r[e];for(let a=0;a{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.el.components.animation__scaledown.beginAnimation(),this.el.object3D.position.z=0},800))}}),window.AFRAME){const t=["menu-playlist-button"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{const t=e.target.closest(".playlist");this.eventDetail.id=t.dataset.playlist,this.eventDetail.title=t.dataset.title,this.el.sceneEl.emit("playlistselect",this.eventDetail)})}}),window.AFRAME){const t=["menu-playlist"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{27===e.keyCode&&this.pauseGame()}),this.el.sceneEl.addEventListener("controllerconnected",e=>{"vive-controls"===e.detail.name?this.el.addEventListener("menudown",this.pauseGame):(this.el.addEventListener("thumbstickdown",this.pauseGame),this.el.addEventListener("trackpaddown",this.pauseGame))}),document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.pauseGame()})},pauseGame:function(){this.data.enabled&&this.el.sceneEl.emit("pausegame",null,!1)}}),window.AFRAME){const t=["pauser"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.data.enabled&&this.system.playSound(this.src,this.data.volume)})},update:function(){this.src=this.data.sound,this.data.sound.startsWith("#")&&(this.src=document.querySelector(this.data.sound).getAttribute("src"))}}),window.AFRAME){const t=["play-sound"],a=[],n=["play-sound"];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n3&&e.shift(),e.push(this.el.object3D.position.y),this.height=function(e){e.sort(n);const t=e.length/2;return t%1?e[t-.5]:(e[t-1]+e[t])/2}(e);const t=(a=this.height,r=1.6,s=2.2,Math.min(Math.max(a,r),s));var a,r,s,o,i;this.beatOffset=(i=0)+(.2-i)*(t-(o=1.6))/(2.2-o)}}),window.AFRAME){const t=["player-height"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;nthis.curveFollowRig.object3D.position.z+10)this.returnToPool();else for(let e=0;e{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.addEventListener("menudown",this.recenter),e.addEventListener("thumbstickdown",this.recenter)}),this.el.addEventListener("recenter",this.recenter)},recenter:(n=new THREE.Euler,r=new THREE.Matrix4,s=new THREE.Matrix4,o=new THREE.Matrix4,function(){const e=this.el;if(!this.data.enabled)return;const t=e.sceneEl.camera.el.object3D;r.identity(),n.set(0,-1*t.rotation.y,0),s.makeRotationFromEuler(n),o.makeTranslation(-1*t.position.x,0,-1*t.position.z),r.multiply(s).multiply(o),r.decompose(e.object3D.position,e.object3D.quaternion,e.object3D.scale),e.object3D.updateMatrixWorld(!0),e.emit("recentered",null,!1)})}),window.AFRAME){const t=["recenter"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.draw(a,t)}}e.length!==this.lastNumResults&&this.updateAlphaMap(e.length),this.lastNumResults=e.length},draw:function(e,t){this.ctx.drawImage(e,0,t*(512/384*64),64,512/384*64),this.el.getObject3D("mesh").material.map.needsUpdate=!0},clearCanvas:function(){const e=this.canvas;this.ctx.fillStyle="#111",this.ctx.fillRect(0,0,e.width,e.height)},updateAlphaMap:function(e){const t=this.alphaCanvas,a=this.alphaCtx;a.fillStyle="#FFF",a.fillRect(0,0,t.width,t.height),a.fillStyle="#000",a.fillRect(0,e*(512/384*64),t.width,t.height-e*(512/384*64)),this.el.getObject3D("mesh").material.alphaMap.needsUpdate=!0,this.el.getObject3D("mesh").material.needsUpdate=!0}}),window.AFRAME){const t=["search-thumbnail-atlas"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0;t--){const a=Math.floor(Math.random()*(t+1));[e[t],e[a]]=[e[a],e[t]]}}(this.popularHits),this.queryObject={hitsPerPage:0,query:""},this.el.sceneEl.addEventListener("searchclear",()=>{this.search("")})},update:function(e){this.popularHits&&(this.search(this.data.query),e.query&&!this.data.query&&(this.keyboardEl.components["super-keyboard"].data.value="",this.keyboardEl.components["super-keyboard"].updateTextInput("")),this.debouncedSearch=n(this.search.bind(this),1e3))},play:function(){this.el.sceneEl.emit("searchresults",this.eventDetail),this.search("")},events:{superkeyboardchange:function(e){e.target===this.el&&this.debouncedSearch(e.detail.value)}},search:function(e){if(!e&&"All"===this.data.difficultyFilter&&!this.data.genre&&!this.data.playlist&&this.popularHits)return this.eventDetail.results=this.popularHits,this.eventDetail.query="",void this.el.sceneEl.emit("searchresults",this.eventDetail);if(this.eventDetail.query=e,this.queryObject.query=e,this.queryObject.hitsPerPage=e?30:150,"favorites"===this.data.playlist)return this.eventDetail.results=JSON.parse(localStorage.getItem("favorites-v2")),void this.el.sceneEl.emit("searchresults",this.eventDetail);let t="https://beatsaver.com/api/search/text/CURRENT_PAGE_INDEX?sortOrder=Rating&automapper=true&q="+encodeURIComponent(e);if(this.data.playlist)t=`https://api.beatsaver.com/playlists/id/${this.data.playlist}/CURRENT_PAGE_INDEX`;else if(this.data.genre){const e={Pop:"pop","R&B":"rb",Rap:"hip-hop-rap",Rock:"rock",Soundtrack:"tv-movie-soundtrack","Video Games":"video-game-soundtrack",Electronic:"electronic","Hip Hop":"hip-hop-rap",House:"house","J-Pop":"j-pop","K-Pop":"k-pop",Meme:"comedy-meme",Alternative:"alternative",Anime:"anime",Comedy:"comedy-meme",Dubstep:"dubstep",Dance:"dance"}[this.data.genre];t="https://beatsaver.com/api/search/text/CURRENT_PAGE_INDEX?sortOrder=Rating&automapper=true&tags="+encodeURIComponent(e)}else if(e&&e.length<3)return;fetch(t.replaceAll("CURRENT_PAGE_INDEX",0)).then(e=>e.json()).then(e=>{var a=(e.docs||e.maps).map(r);this.eventDetail.results=a,this.eventDetail.url=t,this.eventDetail.urlPage=0,this.el.sceneEl.emit("searchresults",this.eventDetail)})}}),AFRAME.registerComponent("search-result-list",{init:function(){new MutationObserver(e=>{for(let t=0;t{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=t||a<0||b&&e-d>=s}function A(){var e=m();if(w(e))return S(e);i=setTimeout(A,function(e){var a=t-(e-c);return b?h(a,s-(e-d)):a}(e))}function S(e){return i=void 0,y&&n?g(e):(n=r=void 0,o)}function E(){var e=m(),a=w(e);if(n=arguments,r=this,c=e,a){if(void 0===i)return v(c);if(b)return i=setTimeout(A,t),g(c)}return void 0===i&&(i=setTimeout(A,t)),o}return t=f(t)||0,p(a)&&(l=!!a.leading,s=(b="maxWait"in a)?u(f(a.maxWait)||0,t):s,y="trailing"in a?!!a.trailing:y),E.cancel=function(){void 0!==i&&clearTimeout(i),d=0,n=c=r=i=void 0},E.flush=function(){return void 0===i?o:S(m())},E}}).call(this,a(1))},function(e,t){e.exports=[{id:"2144",name:"Shut Up and Dance - WALK THE MOON",description:"Difficulties: Expert+ (Added 11/15), Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/x9hJbTlPQUY",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:128,duration:200,songName:"Shut Up and Dance",songSubName:"WALK THE MOON",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:47856,upvotes:15705,downvotes:243,score:.9584},uploaded:"2018-11-21T01:27:00Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"89cf8bb07afb3c59ae7b5ac00337d62261c36fb4",key:"2144",state:"Published",createdAt:"2018-11-21T01:27:00Z",sageScore:3,diffs:[{njs:10,offset:0,notes:301,bombs:4,obstacles:24,nps:1.578,length:407,characteristic:"Standard",difficulty:"Normal",events:380,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.781,paritySummary:{errors:64,warns:19,resets:0}},{njs:10,offset:0,notes:486,bombs:4,obstacles:24,nps:2.547,length:407,characteristic:"Standard",difficulty:"Hard",events:380,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.781,paritySummary:{errors:76,warns:34,resets:0}},{njs:10,offset:0,notes:620,bombs:4,obstacles:24,nps:3.246,length:407.5,characteristic:"Standard",difficulty:"Expert",events:380,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.016,paritySummary:{errors:88,warns:68,resets:0}},{njs:12,offset:0,notes:894,bombs:0,obstacles:0,nps:4.68,length:407.5,characteristic:"Standard",difficulty:"ExpertPlus",events:380,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.016,paritySummary:{errors:99,warns:120,resets:0}}],downloadURL:"https://cdn.beatsaver.com/89cf8bb07afb3c59ae7b5ac00337d62261c36fb4.zip",coverURL:"https://cdn.beatsaver.com/89cf8bb07afb3c59ae7b5ac00337d62261c36fb4.jpg",previewURL:"https://cdn.beatsaver.com/89cf8bb07afb3c59ae7b5ac00337d62261c36fb4.mp3"}],createdAt:"2018-11-21T01:27:00Z",updatedAt:"2018-11-21T01:27:00Z",lastPublishedAt:"2018-11-21T01:27:00Z"},{id:"66e6",name:"League of Legends - Legends never die (ft. Against The Current)",description:"A special request from Prima1URGE",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:140,duration:236,songName:"Legends Never Die",songSubName:"",songAuthorName:"League of Legends & Against The Current",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:30647,upvotes:10346,downvotes:160,score:.9549},uploaded:"2019-09-30T10:19:45.606Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"732bd4072b89d4b3bf0e63db812a7ffc3096e837",key:"66e6",state:"Published",createdAt:"2019-09-30T10:19:45.606Z",sageScore:6,diffs:[{njs:12,offset:0,notes:705,bombs:0,obstacles:10,nps:3.041,length:541,characteristic:"Standard",difficulty:"Expert",events:1693,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.857,paritySummary:{errors:4,warns:2,resets:0}},{njs:16,offset:0,notes:876,bombs:0,obstacles:10,nps:3.778,length:541,characteristic:"Standard",difficulty:"ExpertPlus",events:1693,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.857,paritySummary:{errors:3,warns:2,resets:0}}],downloadURL:"https://cdn.beatsaver.com/732bd4072b89d4b3bf0e63db812a7ffc3096e837.zip",coverURL:"https://cdn.beatsaver.com/732bd4072b89d4b3bf0e63db812a7ffc3096e837.jpg",previewURL:"https://cdn.beatsaver.com/732bd4072b89d4b3bf0e63db812a7ffc3096e837.mp3"}],createdAt:"2019-09-30T10:19:45.606Z",updatedAt:"2019-09-30T10:19:45.606Z",lastPublishedAt:"2019-09-30T10:19:45.606Z"},{id:"570",name:"Mr. Blue Sky | Electric Light Orchestra",description:"Channel your inner Baby Groot. Normal, Hard, Expert\r\nSpecial thanks to BennydaBeast for his help on this track!",uploader:{id:41378,name:"greatyazer",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea71",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea71?d=retro",type:"SIMPLE"},metadata:{bpm:174,duration:222,songName:"Mr. Blue Sky",songSubName:"Electric Light Orchestra",songAuthorName:"GreatYazer",levelAuthorName:"greatyazer"},stats:{plays:0,downloads:53449,upvotes:29661,downvotes:731,score:.9547},uploaded:"2018-06-16T16:53:34Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"236173d5ba7dc379d480b9cb5fb6b4fa5abe77da",key:"570",state:"Published",createdAt:"2018-06-16T16:53:34Z",sageScore:5,diffs:[{njs:10,offset:0,notes:462,bombs:0,obstacles:25,nps:2.228,length:601.313,characteristic:"Standard",difficulty:"Normal",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.349,paritySummary:{errors:132,warns:16,resets:0},stars:1.46},{njs:10,offset:0,notes:639,bombs:0,obstacles:40,nps:3.082,length:601.313,characteristic:"Standard",difficulty:"Hard",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.349,paritySummary:{errors:109,warns:27,resets:0}},{njs:10,offset:0,notes:825,bombs:0,obstacles:40,nps:3.979,length:601.313,characteristic:"Standard",difficulty:"Expert",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.349,paritySummary:{errors:119,warns:57,resets:0}}],downloadURL:"https://cdn.beatsaver.com/236173d5ba7dc379d480b9cb5fb6b4fa5abe77da.zip",coverURL:"https://cdn.beatsaver.com/236173d5ba7dc379d480b9cb5fb6b4fa5abe77da.jpg",previewURL:"https://cdn.beatsaver.com/236173d5ba7dc379d480b9cb5fb6b4fa5abe77da.mp3"}],createdAt:"2018-06-16T16:53:34Z",updatedAt:"2018-06-16T16:53:34Z",lastPublishedAt:"2018-06-16T16:53:34Z"},{id:"3cf5",name:"Caramelldansen",description:"Preview: https://youtu.be/V5p0HOzunY0\n\n\nTwitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:165,duration:178,songName:"Caramelldansen (Speedcake Remix)",songSubName:"Caramell",songAuthorName:"Dack",levelAuthorName:"Dack"},stats:{plays:0,downloads:30551,upvotes:19321,downvotes:422,score:.9543},uploaded:"2019-03-09T22:54:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cf5e32d6b7f30095f7198da5894139c92336cad7",key:"3cf5",state:"Published",createdAt:"2019-03-09T22:54:54Z",sageScore:4,diffs:[{njs:14,offset:0,notes:722,bombs:52,obstacles:28,nps:4.254,length:466.75,characteristic:"Standard",difficulty:"Expert",events:597,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.727,paritySummary:{errors:37,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cf5e32d6b7f30095f7198da5894139c92336cad7.zip",coverURL:"https://cdn.beatsaver.com/cf5e32d6b7f30095f7198da5894139c92336cad7.jpg",previewURL:"https://cdn.beatsaver.com/cf5e32d6b7f30095f7198da5894139c92336cad7.mp3"}],createdAt:"2019-03-09T22:54:54Z",updatedAt:"2019-03-09T22:54:54Z",lastPublishedAt:"2019-03-09T22:54:54Z"},{id:"133b",name:"Daddy - PSY",description:"Insanely fun dance map! Enjoy!\nSee the map in action (Expert): https://www.youtube.com/watch?v=7jOIdfo0j4Q\n\nThank you to my playtesters:\nDuoVR (https://www.twitch.tv/duovr)\nSourgurl (https://www.twitch.tv/sourgurl)\nRexxxzi (https://www.twitch.tv/rexxxzi)\nAshleyriott (https://www.twitch.tv/ashleyriott)",uploader:{id:38202,name:"fafurion",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f945",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f945?d=retro",type:"SIMPLE"},metadata:{bpm:132,duration:232,songName:"Daddy",songSubName:"PSY",songAuthorName:"Fafurion",levelAuthorName:"fafurion"},stats:{plays:0,downloads:21881,upvotes:11227,downvotes:192,score:.9542},uploaded:"2018-09-02T23:43:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"dc489921185f92dfecb9cb07b84fc556123bd134",key:"133b",state:"Published",createdAt:"2018-09-02T23:43:45Z",sageScore:5,diffs:[{njs:10,offset:0,notes:671,bombs:0,obstacles:16,nps:3.012,length:490.125,characteristic:"Standard",difficulty:"Hard",events:1586,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.784,paritySummary:{errors:38,warns:39,resets:0}},{njs:10,offset:0,notes:831,bombs:0,obstacles:16,nps:3.73,length:490.125,characteristic:"Standard",difficulty:"Expert",events:1587,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.784,paritySummary:{errors:44,warns:40,resets:0}}],downloadURL:"https://cdn.beatsaver.com/dc489921185f92dfecb9cb07b84fc556123bd134.zip",coverURL:"https://cdn.beatsaver.com/dc489921185f92dfecb9cb07b84fc556123bd134.jpg",previewURL:"https://cdn.beatsaver.com/dc489921185f92dfecb9cb07b84fc556123bd134.mp3"}],createdAt:"2018-09-02T23:43:45Z",updatedAt:"2018-09-02T23:43:45Z",lastPublishedAt:"2018-09-02T23:43:45Z"},{id:"121f",name:"Skillet - Feel Invincible",description:"Expert / Hard\r\nhttps://www.youtube.com/watch?v=nq-Qul4XxbE",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:227,songName:"Feel Invincible",songSubName:"Skillet",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:24093,upvotes:9596,downvotes:150,score:.9541},uploaded:"2018-08-27T16:47:05Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2e9ab6e1fb8055649e241cade98b018926cc93a8",key:"121f",state:"Published",createdAt:"2018-08-27T16:47:05Z",sageScore:6,diffs:[{njs:10,offset:0,notes:620,bombs:0,obstacles:10,nps:2.764,length:471,characteristic:"Standard",difficulty:"Hard",events:1654,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.286,paritySummary:{errors:15,warns:58,resets:0}},{njs:12,offset:0,notes:738,bombs:0,obstacles:11,nps:3.29,length:471,characteristic:"Standard",difficulty:"Expert",events:1654,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.286,paritySummary:{errors:21,warns:72,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2e9ab6e1fb8055649e241cade98b018926cc93a8.zip",coverURL:"https://cdn.beatsaver.com/2e9ab6e1fb8055649e241cade98b018926cc93a8.jpg",previewURL:"https://cdn.beatsaver.com/2e9ab6e1fb8055649e241cade98b018926cc93a8.mp3"}],createdAt:"2018-08-27T16:47:05Z",updatedAt:"2018-08-27T16:47:05Z",lastPublishedAt:"2018-08-27T16:47:05Z"},{id:"4e6f",name:"Kero Kero Bonito - Flamingo",description:"edited: NJS was a tad slow my b\r\nfuramingo \r\noh oh ooh oh\r\nthis needed to be remapped\r\n \r\nPlease check out Kero Kero Bonito and the rest of their songs\r\nI'll be mappin more of em soon\r\n\r\nBPM 178\r\nFlamingo (Expert)\r\nShrimp (Hard)\r\n\r\nhave fun \r\n\r\ngimme feedback on Discord\r\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:178,duration:197,songName:"Flamingo",songSubName:"Kero Kero Bonito",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:22969,upvotes:10417,downvotes:173,score:.954},uploaded:"2019-05-22T00:46:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"585ee25e654ebf5db5aa0ec02c3bcecbaccf3e0b",key:"4e6f",state:"Published",createdAt:"2019-05-22T00:46:47Z",sageScore:5,diffs:[{njs:13,offset:0,notes:519,bombs:8,obstacles:86,nps:2.692,length:572,characteristic:"Standard",difficulty:"Hard",events:2271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192.809,paritySummary:{errors:43,warns:43,resets:2}},{njs:16,offset:0,notes:679,bombs:10,obstacles:86,nps:3.522,length:572,characteristic:"Standard",difficulty:"Expert",events:2271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192.809,paritySummary:{errors:35,warns:24,resets:4}}],downloadURL:"https://cdn.beatsaver.com/585ee25e654ebf5db5aa0ec02c3bcecbaccf3e0b.zip",coverURL:"https://cdn.beatsaver.com/585ee25e654ebf5db5aa0ec02c3bcecbaccf3e0b.jpg",previewURL:"https://cdn.beatsaver.com/585ee25e654ebf5db5aa0ec02c3bcecbaccf3e0b.mp3"}],createdAt:"2019-05-22T00:46:47Z",updatedAt:"2019-05-22T00:46:47Z",lastPublishedAt:"2019-05-22T00:46:47Z"},{id:"1fef",name:"Imagine Dragons - Believer (100k ver.) | 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:205,songName:"Believer (100k ver.)",songSubName:"Imagine Dragons",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:39471,upvotes:16897,downvotes:378,score:.9528},uploaded:"2018-11-12T17:53:58Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9a7a5beadfdd1c7c0f137ecba6e5f6ff377eb390",key:"1fef",state:"Published",createdAt:"2018-11-12T17:53:58Z",sageScore:6,diffs:[{njs:10,offset:0,notes:216,bombs:0,obstacles:0,nps:1.09,length:413,characteristic:"Standard",difficulty:"Easy",events:3418,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:42,warns:14,resets:0}},{njs:10,offset:0,notes:388,bombs:0,obstacles:8,nps:1.957,length:413,characteristic:"Standard",difficulty:"Normal",events:3418,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:18,warns:21,resets:0}},{njs:11,offset:0,notes:514,bombs:0,obstacles:10,nps:2.593,length:413,characteristic:"Standard",difficulty:"Hard",events:3418,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:57,warns:59,resets:0}},{njs:12,offset:0,notes:560,bombs:0,obstacles:12,nps:2.825,length:413,characteristic:"Standard",difficulty:"Expert",events:3430,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:102,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9a7a5beadfdd1c7c0f137ecba6e5f6ff377eb390.zip",coverURL:"https://cdn.beatsaver.com/9a7a5beadfdd1c7c0f137ecba6e5f6ff377eb390.jpg",previewURL:"https://cdn.beatsaver.com/9a7a5beadfdd1c7c0f137ecba6e5f6ff377eb390.mp3"}],createdAt:"2018-11-12T17:53:58Z",updatedAt:"2018-11-12T17:53:58Z",lastPublishedAt:"2018-11-12T17:53:58Z"},{id:"4c6",name:"Muse - Uprising",description:"Expert / Hard\r\nhttps://youtu.be/WpFUt3UNp7c",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:251,songName:"Uprising",songSubName:"Muse",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:31460,upvotes:12140,downvotes:243,score:.9522},uploaded:"2018-06-11T21:47:41Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"00e5671e594a6fe621c3605fcc5a0e4466ba6478",key:"4c6",state:"Published",createdAt:"2018-06-11T21:47:41Z",sageScore:6,diffs:[{njs:10,offset:0,notes:633,bombs:0,obstacles:13,nps:2.599,length:519.625,characteristic:"Standard",difficulty:"Hard",events:1975,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.574,paritySummary:{errors:122,warns:57,resets:0},stars:1.45},{njs:12,offset:0,notes:880,bombs:0,obstacles:19,nps:3.613,length:519.625,characteristic:"Standard",difficulty:"Expert",events:1975,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.574,paritySummary:{errors:104,warns:75,resets:0},stars:2.19}],downloadURL:"https://cdn.beatsaver.com/00e5671e594a6fe621c3605fcc5a0e4466ba6478.zip",coverURL:"https://cdn.beatsaver.com/00e5671e594a6fe621c3605fcc5a0e4466ba6478.jpg",previewURL:"https://cdn.beatsaver.com/00e5671e594a6fe621c3605fcc5a0e4466ba6478.mp3"}],createdAt:"2018-06-11T21:47:41Z",updatedAt:"2018-06-11T21:47:41Z",lastPublishedAt:"2018-06-11T21:47:41Z"},{id:"da60",name:"[Extra Sensory] Dirty Androids - Midnight Lady",description:'Enjoy the ride.\n\nMassive thanks to Nyri0 and Checkthepan for helping with scripts and some math!!\n\n\nThis map was released as a part of the "Extra Sensory" event.\n\nVideo showcase thingy: https://youtu.be/pE_s9bvntA0 (watch tougeVR\'s instead tho)',uploader:{id:4235136,name:"reaxt",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ab",avatar:"https://cdn.beatsaver.com/avatar/163052863038291970.png",type:"DISCORD"},metadata:{bpm:128,duration:127,songName:"Midnight Lady",songSubName:"",songAuthorName:"Dirty Androids",levelAuthorName:"Reaxt"},stats:{plays:0,downloads:17800,upvotes:6632,downvotes:93,score:.9519},uploaded:"2020-08-20T16:48:21.705Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ee501d7348223470c16ca88eac4a946e41cd11a9",key:"da60",state:"Published",createdAt:"2020-08-20T16:48:21.705Z",sageScore:2,diffs:[{njs:18,offset:0,notes:748,bombs:0,obstacles:4878,nps:6.233,length:256,characteristic:"Standard",difficulty:"ExpertPlus",events:767,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:120,paritySummary:{errors:7,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ee501d7348223470c16ca88eac4a946e41cd11a9.zip",coverURL:"https://cdn.beatsaver.com/ee501d7348223470c16ca88eac4a946e41cd11a9.jpg",previewURL:"https://cdn.beatsaver.com/ee501d7348223470c16ca88eac4a946e41cd11a9.mp3"}],createdAt:"2020-08-20T16:48:21.705Z",updatedAt:"2020-08-20T16:48:21.705Z",lastPublishedAt:"2020-08-20T16:48:21.705Z"},{id:"2087",name:"Panic at the disco - The Greatest Show reimagined | (100K Contest)",description:"Here is a bonus map for the 100K contest! Playing any difficulty will give you 4x the normal chance of winning up to $12000 in prizes!!\r\nBig thank you to the beat saber mapping group for helping me out with a few things, you guys are great!\r\n\r\nTo enter, you need to go to the following website and download the mod installer: https://bsaber.com/100k-contest/\r\n\r\nThe competition is now over, but the maps remain!\r\nVideo Preview: https://www.youtube.com/watch?v=E929e6puEQA",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:77,duration:174,songName:"The greatest show reimagined",songSubName:"Panic at the disco",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:26198,upvotes:9073,downvotes:160,score:.9518},uploaded:"2018-11-16T17:57:55Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"afc2a905079d1fcdc9d82fa50e83c842d4d42118",key:"2087",state:"Published",createdAt:"2018-11-16T17:57:55Z",sageScore:5,diffs:[{njs:10,offset:0,notes:252,bombs:0,obstacles:6,nps:1.542,length:209.75,characteristic:"Standard",difficulty:"Easy",events:1328,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.442,paritySummary:{errors:35,warns:26,resets:0}},{njs:10,offset:0,notes:342,bombs:0,obstacles:5,nps:2.092,length:209.75,characteristic:"Standard",difficulty:"Normal",events:1327,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.442,paritySummary:{errors:37,warns:36,resets:0}},{njs:11,offset:0,notes:472,bombs:0,obstacles:5,nps:2.888,length:209.75,characteristic:"Standard",difficulty:"Hard",events:1326,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.442,paritySummary:{errors:37,warns:41,resets:0}},{njs:12,offset:0,notes:565,bombs:0,obstacles:5,nps:3.457,length:209.75,characteristic:"Standard",difficulty:"Expert",events:1329,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.442,paritySummary:{errors:39,warns:30,resets:0}}],downloadURL:"https://cdn.beatsaver.com/afc2a905079d1fcdc9d82fa50e83c842d4d42118.zip",coverURL:"https://cdn.beatsaver.com/afc2a905079d1fcdc9d82fa50e83c842d4d42118.jpg",previewURL:"https://cdn.beatsaver.com/afc2a905079d1fcdc9d82fa50e83c842d4d42118.mp3"}],createdAt:"2018-11-16T17:57:55Z",updatedAt:"2018-11-16T17:57:55Z",lastPublishedAt:"2018-11-16T17:57:55Z"},{id:"747",name:"Technologic - Daft Punk (Update)",description:"Expert / Hard / Normal",uploader:{id:44595,name:"awfulnaut",uniqueSet:!0,hash:"5cff0b7398cc5a672c84edac",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84edac?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:169,songName:"Technologic",songSubName:"Daft Punk",songAuthorName:"Awfulnaut",levelAuthorName:"awfulnaut"},stats:{plays:0,downloads:26292,upvotes:10662,downvotes:205,score:.9518},uploaded:"2018-06-30T18:30:38Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"831247d7d02e948e5d03622748bb130b5057023d",key:"747",state:"Published",createdAt:"2018-06-30T18:30:38Z",sageScore:6,diffs:[{njs:10,offset:0,notes:375,bombs:334,obstacles:9,nps:2.276,length:350.021,characteristic:"Standard",difficulty:"Normal",events:1321,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.364,paritySummary:{errors:62,warns:48,resets:110}},{njs:10,offset:0,notes:480,bombs:306,obstacles:3,nps:2.913,length:350,characteristic:"Standard",difficulty:"Hard",events:1321,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.354,paritySummary:{errors:31,warns:59,resets:96}},{njs:10,offset:0,notes:662,bombs:138,obstacles:3,nps:4.018,length:350,characteristic:"Standard",difficulty:"Expert",events:1327,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.354,paritySummary:{errors:42,warns:68,resets:43}}],downloadURL:"https://cdn.beatsaver.com/831247d7d02e948e5d03622748bb130b5057023d.zip",coverURL:"https://cdn.beatsaver.com/831247d7d02e948e5d03622748bb130b5057023d.jpg",previewURL:"https://cdn.beatsaver.com/831247d7d02e948e5d03622748bb130b5057023d.mp3"}],createdAt:"2018-06-30T18:30:38Z",updatedAt:"2018-06-30T18:30:38Z",lastPublishedAt:"2018-06-30T18:30:38Z"},{id:"1023",name:"I Wanna Be Like You (Sim Gretina Remix)",description:"Who doesn't love The Jungle Book? \r\nPreview: https://youtu.be/DXdo1-FlxSk",uploader:{id:4285668,name:"connorjc",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fb89",avatar:"https://cdn.beatsaver.com/avatar/99724057217355776.png",type:"DISCORD"},metadata:{bpm:110,duration:172,songName:"I Wanna Be Like You (Sim Gretina Remix)",songSubName:"Jungle Book",songAuthorName:"ConnorJC",levelAuthorName:"ConnorJC"},stats:{plays:0,downloads:15215,upvotes:7020,downvotes:108,score:.9513},uploaded:"2018-08-16T13:41:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"638cf20187a122490b4662555e9072cd8073146b",key:"1023",state:"Published",createdAt:"2018-08-16T13:41:07Z",sageScore:4,diffs:[{njs:10,offset:0,notes:512,bombs:0,obstacles:52,nps:3.276,length:286.5,characteristic:"Standard",difficulty:"Expert",events:486,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.273,paritySummary:{errors:81,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/638cf20187a122490b4662555e9072cd8073146b.zip",coverURL:"https://cdn.beatsaver.com/638cf20187a122490b4662555e9072cd8073146b.jpg",previewURL:"https://cdn.beatsaver.com/638cf20187a122490b4662555e9072cd8073146b.mp3"}],createdAt:"2018-08-16T13:41:07Z",updatedAt:"2018-08-16T13:41:07Z",lastPublishedAt:"2018-08-16T13:41:07Z"},{id:"18cc",name:"Du Hast by Rammstein (Kole Edit)",description:"Many has been asking, many have been waiting patiently, many have been confused as to why this hasn't been done before, but now it's here and now you can have it too; here's Du Hast by Rammstein now in Beat Saber!\r\n\r\nSong has been edited (shortened) to be tighter and not too repetitive.\r\n\r\nPreview:\r\nhttps://youtu.be/3i1mf2EGSjc\r\n\r\nBPM: 125.09\r\nDuration: 2:57\r\nEasy, Normal, Hard and Expert difficulties.\r\n\r\nEasy: 251, 0 obstacles, 0 mines\r\nNormal: 444 notes, 0 obstacles, 0 mines\r\nHard: 581 notes, 0 obstacles, 0 mines\r\nExpert: 437 notes, 0 obstacles, 0 mines\r\n\r\nThanks to VenclaireVR, Redmagi, Horseman, Saut and elliotttate for playtesting!\r\n\r\nDownload the One Saber version of this map here:\r\nhttps://beatsaver.com/browse/detail/6784-6436\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:125,duration:177,songName:"Du Hast",songSubName:"Rammstein",songAuthorName:"Level by Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:19197,upvotes:9801,downvotes:188,score:.9511},uploaded:"2018-10-05T06:17:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6df961680ead49e2d92de1a95b789e0ce4a026db",key:"18cc",state:"Published",createdAt:"2018-10-05T06:17:10Z",sageScore:4,diffs:[{njs:10,offset:0,notes:251,bombs:0,obstacles:0,nps:1.487,length:352,characteristic:"Standard",difficulty:"Easy",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:65,warns:24,resets:0}},{njs:11,offset:0,notes:444,bombs:0,obstacles:0,nps:2.63,length:352,characteristic:"Standard",difficulty:"Normal",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:74,warns:35,resets:0}},{njs:12,offset:0,notes:581,bombs:0,obstacles:0,nps:3.441,length:352,characteristic:"Standard",difficulty:"Hard",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:83,warns:44,resets:0}},{njs:12,offset:0,notes:723,bombs:0,obstacles:0,nps:4.282,length:352,characteristic:"Standard",difficulty:"Expert",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:57,warns:57,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6df961680ead49e2d92de1a95b789e0ce4a026db.zip",coverURL:"https://cdn.beatsaver.com/6df961680ead49e2d92de1a95b789e0ce4a026db.jpg",previewURL:"https://cdn.beatsaver.com/6df961680ead49e2d92de1a95b789e0ce4a026db.mp3"}],createdAt:"2018-10-05T06:17:10Z",updatedAt:"2018-10-05T06:17:10Z",lastPublishedAt:"2018-10-05T06:17:10Z"},{id:"23c3",name:"Without Me (ILLENIUM Remix) - Halsey",description:"All 5 Difficulties\r\nBPM: 136\r\nNote Jumps Speed from E+to Easy: 14, 12, 11, 10, 10\r\n\r\nLemme know what you think!",uploader:{id:30754,name:"styngme",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9cd",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9cd?d=retro",type:"SIMPLE"},metadata:{bpm:136,duration:247,songName:"Without Me - ILLENIUM Remix",songSubName:"Halsey, ILLENIUM",songAuthorName:"StyngMe",levelAuthorName:"styngme"},stats:{plays:0,downloads:23662,upvotes:8757,downvotes:162,score:.9507},uploaded:"2018-12-04T15:46:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a684cee0d634b9bb59eef234665fd28ef27876ac",key:"23c3",state:"Published",createdAt:"2018-12-04T15:46:54Z",sageScore:7,diffs:[{njs:10,offset:0,notes:571,bombs:0,obstacles:78,nps:2.652,length:488,characteristic:"Standard",difficulty:"Easy",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:5,warns:2,resets:0}},{njs:10,offset:0,notes:747,bombs:0,obstacles:78,nps:3.47,length:488,characteristic:"Standard",difficulty:"Normal",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:51,warns:40,resets:0}},{njs:11,offset:0,notes:788,bombs:0,obstacles:78,nps:3.66,length:488,characteristic:"Standard",difficulty:"Hard",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:58,warns:40,resets:0}},{njs:12,offset:0,notes:850,bombs:0,obstacles:78,nps:3.948,length:488,characteristic:"Standard",difficulty:"Expert",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:72,warns:69,resets:0}},{njs:14,offset:0,notes:872,bombs:0,obstacles:78,nps:4.05,length:488,characteristic:"Standard",difficulty:"ExpertPlus",events:2901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.294,paritySummary:{errors:67,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a684cee0d634b9bb59eef234665fd28ef27876ac.zip",coverURL:"https://cdn.beatsaver.com/a684cee0d634b9bb59eef234665fd28ef27876ac.jpg",previewURL:"https://cdn.beatsaver.com/a684cee0d634b9bb59eef234665fd28ef27876ac.mp3"}],createdAt:"2018-12-04T15:46:54Z",updatedAt:"2018-12-04T15:46:54Z",lastPublishedAt:"2018-12-04T15:46:54Z"},{id:"38ff",name:"Ievan Polkka",description:"",uploader:{id:30164,name:"fraktar",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551b0",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8551b0?d=retro",type:"SIMPLE"},metadata:{bpm:119,duration:147,songName:"Ievan Polkka",songSubName:"Hatsune Miku",songAuthorName:"Fraktar",levelAuthorName:"Fraktar"},stats:{plays:0,downloads:17204,upvotes:8751,downvotes:167,score:.9501},uploaded:"2019-02-23T15:58:08Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"72bf749f5df632cd103fccd734c9fd5cc7596caa",key:"38ff",state:"Published",createdAt:"2019-02-23T15:58:08Z",sageScore:5,diffs:[{njs:12,offset:0,notes:734,bombs:0,obstacles:16,nps:5.09,length:286,characteristic:"Standard",difficulty:"Expert",events:1360,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:144.202,paritySummary:{errors:70,warns:39,resets:0}}],downloadURL:"https://cdn.beatsaver.com/72bf749f5df632cd103fccd734c9fd5cc7596caa.zip",coverURL:"https://cdn.beatsaver.com/72bf749f5df632cd103fccd734c9fd5cc7596caa.jpg",previewURL:"https://cdn.beatsaver.com/72bf749f5df632cd103fccd734c9fd5cc7596caa.mp3"}],createdAt:"2019-02-23T15:58:08Z",updatedAt:"2019-02-23T15:58:08Z",lastPublishedAt:"2019-02-23T15:58:08Z"},{id:"8553",name:"Blinding Lights - The Weeknd",description:"This map was supposed to release last year and have a 90 degree difficulty but it got cut because life ¯\\_(ツ)_/¯ Fantastic song though.\n\nExpert Playthrough : https://youtu.be/GonnTYPmDVY",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:171,duration:199,songName:"Blinding Lights",songSubName:"",songAuthorName:"The Weeknd",levelAuthorName:"NovaShaft"},stats:{plays:0,downloads:34508,upvotes:11999,downvotes:269,score:.95},uploaded:"2020-02-08T17:26:23.499Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"17d298f2bf78b453cd66474ce268ae9dac9fab46",key:"8553",state:"Published",createdAt:"2020-02-08T17:26:23.499Z",sageScore:7,diffs:[{njs:10,offset:0,notes:271,bombs:0,obstacles:15,nps:1.482,length:521,characteristic:"Standard",difficulty:"Easy",events:3071,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.807,paritySummary:{errors:71,warns:4,resets:0}},{njs:13,offset:1,notes:457,bombs:16,obstacles:25,nps:2.5,length:521,characteristic:"Standard",difficulty:"Hard",events:3071,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.807,paritySummary:{errors:6,warns:7,resets:1}},{njs:17,offset:.5,notes:594,bombs:44,obstacles:33,nps:3.249,length:521,characteristic:"Standard",difficulty:"Expert",events:3146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.807,paritySummary:{errors:14,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/17d298f2bf78b453cd66474ce268ae9dac9fab46.zip",coverURL:"https://cdn.beatsaver.com/17d298f2bf78b453cd66474ce268ae9dac9fab46.jpg",previewURL:"https://cdn.beatsaver.com/17d298f2bf78b453cd66474ce268ae9dac9fab46.mp3"}],createdAt:"2020-02-08T17:26:23.499Z",updatedAt:"2020-02-08T17:26:23.499Z",lastPublishedAt:"2020-02-08T17:26:23.499Z"},{id:"2e9e",name:"YoiYoi Kokon - REOL",description:"Put on your yukata; lets travel back in time and enjoy ourselves! Here's REOL's probably most popular song mapped by me, YoiYoi Kokon (宵々古今)!\r\n\r\nThe audio version of the song is that of the music video (slightly edited by me) as I love the addition of the fireworks in the last part of the song. Together with the crowd in the intro this makes it feel like you're attending a festival.\r\n\r\nExpert+ is basically Expert but with no pauses and with the melody followed instead of the shouts.\r\n\r\nPreview:\r\nhttps://youtu.be/G61m6Au2foM\r\n\r\nBPM: 150\r\nDuration: 4:16\r\nEasy, Normal, Hard, Expert and Expert+ difficulties.\r\n\r\nEasy: 332, 12 obstacles, 0 mines\r\nNormal: 471 notes, 17 obstacles, 0 mines\r\nHard: 679 notes, 17 obstacles, 0 mines\r\nExpert: 954 notes, 17 obstacles, 0 mines\r\nExpert+: 1086 notes, 1 obstacles, 0 mines\r\n\r\nThanks to Redmagi, Aithke, aggrogahu, Don and Emperor of the Internet for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:150,duration:256,songName:"YoiYoi Kokon",songSubName:"REOL",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:13836,upvotes:6975,downvotes:118,score:.9499},uploaded:"2019-01-18T09:22:30Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"766a222b102b6522cd5d31e82ec7adc7c5ff011e",key:"2e9e",state:"Published",createdAt:"2019-01-18T09:22:30Z",sageScore:7,diffs:[{njs:9,offset:0,notes:332,bombs:0,obstacles:12,nps:1.349,length:615.203,characteristic:"Standard",difficulty:"Easy",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:48,warns:24,resets:0}},{njs:10,offset:0,notes:471,bombs:0,obstacles:17,nps:1.914,length:615.203,characteristic:"Standard",difficulty:"Normal",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:67,warns:38,resets:0}},{njs:11,offset:0,notes:679,bombs:0,obstacles:17,nps:2.759,length:615.203,characteristic:"Standard",difficulty:"Hard",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:79,warns:71,resets:0}},{njs:12.5,offset:0,notes:954,bombs:0,obstacles:17,nps:3.877,length:615.203,characteristic:"Standard",difficulty:"Expert",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:104,warns:144,resets:0}},{njs:12.5,offset:0,notes:1086,bombs:0,obstacles:1,nps:4.413,length:615.203,characteristic:"Standard",difficulty:"ExpertPlus",events:2115,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.081,paritySummary:{errors:102,warns:152,resets:0}}],downloadURL:"https://cdn.beatsaver.com/766a222b102b6522cd5d31e82ec7adc7c5ff011e.zip",coverURL:"https://cdn.beatsaver.com/766a222b102b6522cd5d31e82ec7adc7c5ff011e.jpg",previewURL:"https://cdn.beatsaver.com/766a222b102b6522cd5d31e82ec7adc7c5ff011e.mp3"}],createdAt:"2019-01-18T09:22:30Z",updatedAt:"2019-01-18T09:22:30Z",lastPublishedAt:"2019-01-18T09:22:30Z"},{id:"30fd",name:"Love The Way You Lie (ft. Rihanna) - Eminem, Rihanna | Charted by StyngMe",description:"I hope you enjoy!\r\nBPM: 87\r\nDifficulties: ALL\r\nNote Jump Speed for E+ through Easy: 16, 14, 12, 12, 11",uploader:{id:30754,name:"styngme",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9cd",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9cd?d=retro",type:"SIMPLE"},metadata:{bpm:87,duration:265,songName:"Love The Way You Lie (ft. Rihanna)",songSubName:"Eminem, Rihanna",songAuthorName:"StyngMe",levelAuthorName:"styngme"},stats:{plays:0,downloads:24461,upvotes:7923,downvotes:147,score:.9497},uploaded:"2019-01-25T15:48:22Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8161daf97cab8c95aea0556549b4b8cfb29a13d3",key:"30fd",state:"Published",createdAt:"2019-01-25T15:48:22Z",sageScore:7,diffs:[{njs:11,offset:0,notes:387,bombs:0,obstacles:18,nps:1.661,length:337.75,characteristic:"Standard",difficulty:"Easy",events:2082,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:28,warns:28,resets:0}},{njs:12,offset:0,notes:503,bombs:0,obstacles:6,nps:2.159,length:337.75,characteristic:"Standard",difficulty:"Normal",events:2082,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:21,warns:36,resets:0}},{njs:12,offset:0,notes:617,bombs:0,obstacles:0,nps:2.649,length:337.75,characteristic:"Standard",difficulty:"Hard",events:2082,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:37,warns:38,resets:0}},{njs:14,offset:0,notes:1006,bombs:0,obstacles:0,nps:4.319,length:337.75,characteristic:"Standard",difficulty:"Expert",events:2082,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:24,warns:55,resets:0}},{njs:16,offset:0,notes:1207,bombs:0,obstacles:0,nps:5.182,length:337.75,characteristic:"Standard",difficulty:"ExpertPlus",events:2085,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.931,paritySummary:{errors:39,warns:76,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8161daf97cab8c95aea0556549b4b8cfb29a13d3.zip",coverURL:"https://cdn.beatsaver.com/8161daf97cab8c95aea0556549b4b8cfb29a13d3.jpg",previewURL:"https://cdn.beatsaver.com/8161daf97cab8c95aea0556549b4b8cfb29a13d3.mp3"}],createdAt:"2019-01-25T15:48:22Z",updatedAt:"2019-01-25T15:48:22Z",lastPublishedAt:"2019-01-25T15:48:22Z"},{id:"26f6",name:"IGNITE (Ranked Version) [Sword Art Online Season 2 Opening] - Aoi Eir",description:"Trying to get this version ranked! New version with changes according to the ranking criteria: Double directional notes fixed, flow improvements, removed fast dodge walls on bridge section.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:171,duration:244,songName:"IGNITE",songSubName:"Aoi Eir",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:23842,upvotes:11061,downvotes:245,score:.9495},uploaded:"2018-12-20T01:21:47Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"125b07ebcc06fe9667e83fc2d6b9ae5ecbc72e8c",key:"26f6",state:"Published",createdAt:"2018-12-20T01:21:47Z",sageScore:6,diffs:[{njs:14,offset:0,notes:1093,bombs:16,obstacles:16,nps:4.594,length:678,characteristic:"Standard",difficulty:"Expert",events:1642,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:237.895,paritySummary:{errors:77,warns:79,resets:0},stars:3.21}],downloadURL:"https://cdn.beatsaver.com/125b07ebcc06fe9667e83fc2d6b9ae5ecbc72e8c.zip",coverURL:"https://cdn.beatsaver.com/125b07ebcc06fe9667e83fc2d6b9ae5ecbc72e8c.jpg",previewURL:"https://cdn.beatsaver.com/125b07ebcc06fe9667e83fc2d6b9ae5ecbc72e8c.mp3"}],createdAt:"2018-12-20T01:21:47Z",updatedAt:"2018-12-20T01:21:47Z",lastPublishedAt:"2018-12-20T01:21:47Z"},{id:"6b55",name:"ABIS & Signal & Tasha Baxter - The Wall (Buunshin Remix)",description:"https://youtu.be/xEowRTlHvuI",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:172,duration:271,songName:"The Wall",songSubName:"(Buunshin Remix)",songAuthorName:"ABIS & Signal & Tasha Baxter",levelAuthorName:"Rustic"},stats:{plays:0,downloads:8045,upvotes:4697,downvotes:61,score:.9491},uploaded:"2019-10-21T13:30:47.405Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e855d1a7b17904322aa3ebaf3bb002421bce568a",key:"6b55",state:"Published",createdAt:"2019-10-21T13:30:47.405Z",sageScore:6,diffs:[{njs:20,offset:0,notes:449,bombs:0,obstacles:9581,nps:1.828,length:704,characteristic:"Standard",difficulty:"Hard",events:7859,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:245.581,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:606,bombs:0,obstacles:9589,nps:2.468,length:704,characteristic:"Standard",difficulty:"Expert",events:7808,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:245.581,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e855d1a7b17904322aa3ebaf3bb002421bce568a.zip",coverURL:"https://cdn.beatsaver.com/e855d1a7b17904322aa3ebaf3bb002421bce568a.jpg",previewURL:"https://cdn.beatsaver.com/e855d1a7b17904322aa3ebaf3bb002421bce568a.mp3"}],createdAt:"2019-10-21T13:30:47.405Z",updatedAt:"2019-10-21T13:30:47.405Z",lastPublishedAt:"2019-10-21T13:30:47.405Z"},{id:"5e81",name:"Stressed Out - Twenty One Pilots",description:'"Stressed Out" is a song by American musical duo Twenty One Pilots, for their fourth studio album, Blurryface. Written by Tyler Joseph and produced by Mike Elizondo, the lyrics discuss the harsh end of adolescence and the transition to adulthood.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:170,duration:203,songName:"Stressed Out",songSubName:"",songAuthorName:"Twenty One Pilots",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:18746,upvotes:6062,downvotes:98,score:.9491},uploaded:"2019-08-22T14:20:38.731Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"068a80d89857a6a2221f54e8a5d374584b2db77e",key:"5e81",state:"Published",createdAt:"2019-08-22T14:20:38.731Z",sageScore:6,diffs:[{njs:14,offset:0,notes:651,bombs:0,obstacles:42,nps:3.282,length:562,characteristic:"Standard",difficulty:"Expert",events:1670,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.353,paritySummary:{errors:69,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/068a80d89857a6a2221f54e8a5d374584b2db77e.zip",coverURL:"https://cdn.beatsaver.com/068a80d89857a6a2221f54e8a5d374584b2db77e.jpg",previewURL:"https://cdn.beatsaver.com/068a80d89857a6a2221f54e8a5d374584b2db77e.mp3"}],createdAt:"2019-08-22T14:20:38.731Z",updatedAt:"2019-08-22T14:20:38.731Z",lastPublishedAt:"2019-08-22T14:20:38.731Z"},{id:"5552",name:"It's Tricky - Run DMC",description:"\"It's Tricky\" is the fourth and final single released from Run-DMC's third album, Raising Hell which was released early in 1987. \n\nThis is one of favorite workout songs, can't believe I haven't mapped it yet :P",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:128,duration:184,songName:"It's Tricky",songSubName:"",songAuthorName:"Run DMC",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:13372,upvotes:4472,downvotes:56,score:.9489},uploaded:"2019-07-02T17:23:10.798Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9027d4274febf8722078a5f70b51da58cf433322",key:"5552",state:"Published",createdAt:"2019-07-02T17:23:10.798Z",sageScore:6,diffs:[{njs:14,offset:0,notes:721,bombs:0,obstacles:8,nps:3.998,length:384.688,characteristic:"Standard",difficulty:"Expert",events:3029,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.322,paritySummary:{errors:34,warns:36,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9027d4274febf8722078a5f70b51da58cf433322.zip",coverURL:"https://cdn.beatsaver.com/9027d4274febf8722078a5f70b51da58cf433322.jpg",previewURL:"https://cdn.beatsaver.com/9027d4274febf8722078a5f70b51da58cf433322.mp3"}],createdAt:"2019-07-02T17:23:10.798Z",updatedAt:"2019-07-02T17:23:10.798Z",lastPublishedAt:"2019-07-02T17:23:10.798Z"},{id:"3038",name:"Moves Like Jagger - Maroon 5 ft. Christina Aguilera",description:"See it in Action: https://www.youtube.com/watch?v=buZypCnR1r8",uploader:{id:38202,name:"fafurion",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f945",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f945?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:204,songName:"Moves Like Jagger",songSubName:"Maroon 5 ft. Christina Aguilera",songAuthorName:"Fafurion",levelAuthorName:"fafurion"},stats:{plays:0,downloads:24035,upvotes:7173,downvotes:137,score:.9482},uploaded:"2019-01-23T00:01:22Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6f5e229b8ec73c9e448c00a680548b0ce25918ee",key:"3038",state:"Published",createdAt:"2019-01-23T00:01:22Z",sageScore:5,diffs:[{njs:10,offset:0,notes:297,bombs:0,obstacles:88,nps:1.547,length:409.5,characteristic:"Standard",difficulty:"Easy",events:2966,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.953,paritySummary:{errors:21,warns:30,resets:0}},{njs:10,offset:0,notes:343,bombs:0,obstacles:88,nps:1.787,length:409.5,characteristic:"Standard",difficulty:"Normal",events:2966,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.953,paritySummary:{errors:29,warns:33,resets:0}},{njs:12,offset:0,notes:524,bombs:0,obstacles:125,nps:2.73,length:409.5,characteristic:"Standard",difficulty:"Hard",events:2966,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.953,paritySummary:{errors:40,warns:62,resets:0}},{njs:12,offset:0,notes:695,bombs:0,obstacles:100,nps:3.621,length:409.5,characteristic:"Standard",difficulty:"Expert",events:2966,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.953,paritySummary:{errors:81,warns:108,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6f5e229b8ec73c9e448c00a680548b0ce25918ee.zip",coverURL:"https://cdn.beatsaver.com/6f5e229b8ec73c9e448c00a680548b0ce25918ee.jpg",previewURL:"https://cdn.beatsaver.com/6f5e229b8ec73c9e448c00a680548b0ce25918ee.mp3"}],createdAt:"2019-01-23T00:01:22Z",updatedAt:"2019-01-23T00:01:22Z",lastPublishedAt:"2019-01-23T00:01:22Z"},{id:"bd3",name:"New Rules - Dua Lipa",description:"Difficulties: Expert+, Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/Ohq6cA_1NAE\r\nLighting by Heisenberg: https://beatsaver.com/index.php/browse/byuser/1089",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:116,duration:211,songName:"New Rules",songSubName:"Dua Lipa",songAuthorName:"BennyDaBeast (Lighting: Heisenberg)",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:18879,upvotes:7509,downvotes:149,score:.948},uploaded:"2018-07-25T20:53:52Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"674b1b540ac5851c92c8cde7dd456698f5a733c4",key:"bd3",state:"Published",createdAt:"2018-07-25T20:53:52Z",sageScore:4,diffs:[{njs:10,offset:0,notes:423,bombs:0,obstacles:7,nps:2.055,length:398,characteristic:"Standard",difficulty:"Normal",events:2753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.862,paritySummary:{errors:81,warns:58,resets:0}},{njs:10,offset:0,notes:507,bombs:0,obstacles:32,nps:2.463,length:398,characteristic:"Standard",difficulty:"Hard",events:2753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.862,paritySummary:{errors:73,warns:67,resets:0}},{njs:10,offset:0,notes:771,bombs:0,obstacles:32,nps:3.745,length:398.003,characteristic:"Standard",difficulty:"Expert",events:2753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.863,paritySummary:{errors:95,warns:124,resets:0}},{njs:10,offset:0,notes:873,bombs:0,obstacles:32,nps:4.241,length:398,characteristic:"Standard",difficulty:"ExpertPlus",events:2753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.862,paritySummary:{errors:103,warns:146,resets:0}}],downloadURL:"https://cdn.beatsaver.com/674b1b540ac5851c92c8cde7dd456698f5a733c4.zip",coverURL:"https://cdn.beatsaver.com/674b1b540ac5851c92c8cde7dd456698f5a733c4.jpg",previewURL:"https://cdn.beatsaver.com/674b1b540ac5851c92c8cde7dd456698f5a733c4.mp3"}],createdAt:"2018-07-25T20:53:52Z",updatedAt:"2018-07-25T20:53:52Z",lastPublishedAt:"2018-07-25T20:53:52Z"},{id:"6d96",name:"League of Legends - Phoenix (ft. Cailin Russo and Chrissy Costanza)",description:"The Worlds 2019 theme for League of Legends.\nVideo: https://youtu.be/aUTcwyZ9LmI\nExpert+ Video: https://www.youtube.com/watch?v=-uh4WOhZmQs\n\nEasy: Notes: 245 NPS: 1.23 NJS: 12\nNormal: Notes: 307 NPS: 1.54 NJS: 14\nHard: Notes: 428 NPS: 2.15 NJS: 16\nExpert: Notes: 504 NPS: 2.53 NJS: 16\nExpert+: Notes: 664 NPS: 3.33 NJS: 17\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:168,duration:199,songName:"Phoenix",songSubName:"ft. Cailin Russo and Chrissy Costanza",songAuthorName:"League of Legends",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:15278,upvotes:6407,downvotes:122,score:.9471},uploaded:"2019-11-02T00:52:14.279Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1fd9078f4b357143390a8d24664736f78b4224a9",key:"6d96",state:"Published",createdAt:"2019-11-02T00:52:14.279Z",sageScore:6,diffs:[{njs:12,offset:0,notes:245,bombs:0,obstacles:20,nps:1.376,length:498.5,characteristic:"Standard",difficulty:"Easy",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.036,paritySummary:{errors:11,warns:1,resets:0}},{njs:14,offset:1.25,notes:307,bombs:0,obstacles:21,nps:1.724,length:498.5,characteristic:"Standard",difficulty:"Normal",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.036,paritySummary:{errors:7,warns:0,resets:0}},{njs:16,offset:.75,notes:428,bombs:0,obstacles:25,nps:2.404,length:498.5,characteristic:"Standard",difficulty:"Hard",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.036,paritySummary:{errors:2,warns:0,resets:0}},{njs:16,offset:.25,notes:504,bombs:0,obstacles:20,nps:2.828,length:499,characteristic:"Standard",difficulty:"Expert",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.214,paritySummary:{errors:1,warns:1,resets:0}},{njs:17,offset:0,notes:664,bombs:0,obstacles:92,nps:3.525,length:527.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.393,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:2347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1fd9078f4b357143390a8d24664736f78b4224a9.zip",coverURL:"https://cdn.beatsaver.com/1fd9078f4b357143390a8d24664736f78b4224a9.jpg",previewURL:"https://cdn.beatsaver.com/1fd9078f4b357143390a8d24664736f78b4224a9.mp3"}],createdAt:"2019-11-02T00:52:14.279Z",updatedAt:"2019-11-02T00:52:14.279Z",lastPublishedAt:"2019-11-02T00:52:14.279Z"},{id:"6366",name:"Star Sky - Two Steps From Hell",description:"68\nNormal wall --- 43 walls\nHyper wall --- 6631 walls\n\ndoodle :)",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:130,duration:330,songName:"Star Sky Two Steps From Hell",songSubName:"",songAuthorName:".",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:9471,upvotes:3452,downvotes:43,score:.9459},uploaded:"2019-09-14T19:59:45.575Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"323975ef9eaec337c8208dc864e766289e3d5ef1",key:"6366",state:"Published",createdAt:"2019-09-14T19:59:45.575Z",sageScore:5,diffs:[{njs:16,offset:0,notes:1218,bombs:0,obstacles:43,nps:3.754,length:703,characteristic:"Standard",difficulty:"Hard",events:1044,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:324.462,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1218,bombs:0,obstacles:6631,nps:3.754,length:703,characteristic:"Standard",difficulty:"Expert",events:1044,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:324.462,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/323975ef9eaec337c8208dc864e766289e3d5ef1.zip",coverURL:"https://cdn.beatsaver.com/323975ef9eaec337c8208dc864e766289e3d5ef1.jpg",previewURL:"https://cdn.beatsaver.com/323975ef9eaec337c8208dc864e766289e3d5ef1.mp3"}],createdAt:"2019-09-14T19:59:45.575Z",updatedAt:"2019-09-14T19:59:45.575Z",lastPublishedAt:"2019-09-14T19:59:45.575Z"},{id:"2005",name:"New Divide - Linkin Park - 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!\nhttps://www.youtube.com/watch?v=deWMNAw03QI&t=28s\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:118,duration:268,songName:"New Divide",songSubName:"Linkin Park",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:16063,upvotes:4873,downvotes:83,score:.9459},uploaded:"2018-11-13T00:58:32Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"be4a33ad1b1caef9f1f42b680ca1a9087db19ffe",key:"2005",state:"Published",createdAt:"2018-11-13T00:58:32Z",sageScore:6,diffs:[{njs:13,offset:0,notes:353,bombs:0,obstacles:78,nps:1.363,length:509.5,characteristic:"Standard",difficulty:"Easy",events:2605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.068,paritySummary:{errors:29,warns:1,resets:0}},{njs:13,offset:0,notes:589,bombs:0,obstacles:18,nps:2.269,length:510.5,characteristic:"Standard",difficulty:"Normal",events:2605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.576,paritySummary:{errors:12,warns:6,resets:0}},{njs:13,offset:0,notes:893,bombs:0,obstacles:13,nps:3.44,length:510.5,characteristic:"Standard",difficulty:"Hard",events:2605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.576,paritySummary:{errors:16,warns:24,resets:0}},{njs:13,offset:0,notes:1167,bombs:0,obstacles:25,nps:4.496,length:510.5,characteristic:"Standard",difficulty:"Expert",events:2605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.576,paritySummary:{errors:38,warns:48,resets:0}}],downloadURL:"https://cdn.beatsaver.com/be4a33ad1b1caef9f1f42b680ca1a9087db19ffe.zip",coverURL:"https://cdn.beatsaver.com/be4a33ad1b1caef9f1f42b680ca1a9087db19ffe.jpg",previewURL:"https://cdn.beatsaver.com/be4a33ad1b1caef9f1f42b680ca1a9087db19ffe.mp3"}],createdAt:"2018-11-13T00:58:32Z",updatedAt:"2018-11-13T00:58:32Z",lastPublishedAt:"2018-11-13T00:58:32Z"},{id:"d7fa",name:"Geoxor - Gloom [Wallmap]",description:"REUPLOAD due to last minute mapping error\n\nSpecial thanks to:\nNyri0 - For providing scripts that were crucial to making this map possible, and for helping me along the way.\nLayanmeta - For giving me so much encouragement throughout the final stages and making a brilliant YouTube video on this map.\nBSMG discord - For the continued support throughout the development process\nAll you people/birds - For playing my map :D\n\nBRIAN HAS BECOME SENTIENT. ALL HAIL BRIAN",uploader:{id:18761,name:"minething",uniqueSet:!0,hash:"5e9b4ead16c9680006287387",avatar:"https://www.gravatar.com/avatar/5e9b4ead16c9680006287387?d=retro",type:"SIMPLE"},metadata:{bpm:93,duration:167,songName:"Gloom",songSubName:"",songAuthorName:"Geoxor",levelAuthorName:"Mine Thing"},stats:{plays:0,downloads:8341,upvotes:2314,downvotes:15,score:.9457},uploaded:"2020-08-16T19:13:40.774Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"823b4e880baac024728ae96a7c20e28026c4585d",key:"d7fa",state:"Published",createdAt:"2020-08-16T19:13:40.774Z",sageScore:3,diffs:[{njs:12,offset:6,notes:0,bombs:0,obstacles:15605,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:144,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:6,notes:202,bombs:0,obstacles:15605,nps:1.309,length:239.125,characteristic:"Standard",difficulty:"Hard",events:144,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:154.274,paritySummary:{errors:48,warns:6,resets:0}},{njs:12,offset:6,notes:411,bombs:4,obstacles:15605,nps:2.665,length:239,characteristic:"Standard",difficulty:"Expert",events:144,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:154.194,paritySummary:{errors:0,warns:0,resets:1}},{njs:12,offset:3,notes:411,bombs:4,obstacles:12340,nps:2.665,length:239,characteristic:"Standard",difficulty:"ExpertPlus",events:144,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:154.194,paritySummary:{errors:0,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/823b4e880baac024728ae96a7c20e28026c4585d.zip",coverURL:"https://cdn.beatsaver.com/823b4e880baac024728ae96a7c20e28026c4585d.jpg",previewURL:"https://cdn.beatsaver.com/823b4e880baac024728ae96a7c20e28026c4585d.mp3"}],createdAt:"2020-08-16T19:13:40.774Z",updatedAt:"2020-08-16T19:13:40.774Z",lastPublishedAt:"2020-08-16T19:13:40.774Z"},{id:"116b0",name:"Sakuzyo - Lost Memory[Wall Map]",description:"https://www.youtube.com/watch?v=Ha0199UiDUQ\nMy first noodle extensions map\nMay cause performance issue :)\nRequirements:Noodle Extensions,Chroma",uploader:{id:4289114,name:"waika",uniqueSet:!0,hash:"5cff0b7698cc5a672c85464f",avatar:"https://cdn.beatsaver.com/avatar/530663167244894220.png",type:"DISCORD"},metadata:{bpm:95,duration:255,songName:"Lost Memory",songSubName:"",songAuthorName:"Sakuzyo",levelAuthorName:"waika"},stats:{plays:0,downloads:9091,upvotes:3250,downvotes:39,score:.9455},uploaded:"2020-11-28T11:08:12.961Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1a88eee7cb1962157cc2439741fb06f7f78180d4",key:"116b0",state:"Published",createdAt:"2020-11-28T11:08:12.961Z",sageScore:3,diffs:[{njs:17,offset:.5,notes:0,bombs:0,obstacles:57070,nps:0,length:0,characteristic:"Standard",difficulty:"Normal",events:230,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:.5,notes:506,bombs:0,obstacles:57070,nps:2.36,length:339.5,characteristic:"Standard",difficulty:"Expert",events:230,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:214.421,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1a88eee7cb1962157cc2439741fb06f7f78180d4.zip",coverURL:"https://cdn.beatsaver.com/1a88eee7cb1962157cc2439741fb06f7f78180d4.jpg",previewURL:"https://cdn.beatsaver.com/1a88eee7cb1962157cc2439741fb06f7f78180d4.mp3"}],createdAt:"2020-11-28T11:08:12.961Z",updatedAt:"2020-11-28T11:08:12.961Z",lastPublishedAt:"2020-11-28T11:08:12.961Z"},{id:"9a0c",name:"Thnks fr th Mmrs - Fall Out Boy",description:"Thnks fr th Mmrs (or Thanks for the Memories) from Fall Out Boy.\nSo far the map that I have put the most work into (and which probably made me age by 3 years). Hope you enjoy it!\n\nThe map has Chroma lighting but can also be played without the Chroma mod.\nExpert+ contains single saber sections and polyrhythm parts. Just so you are warned ;)\n\nBig thanks to Sorukun for playtesting this map and especially to Timeweaver for pointing out all issues it had during its creation!",uploader:{id:21367,name:"hamsta",uniqueSet:!0,hash:"5de27451fffaa600066f2842",avatar:"https://www.gravatar.com/avatar/5de27451fffaa600066f2842?d=retro",type:"SIMPLE"},metadata:{bpm:155,duration:197,songName:"Thnks fr th Mmrs",songSubName:"",songAuthorName:"Fall Out Boy",levelAuthorName:"Hamsta"},stats:{plays:0,downloads:14444,upvotes:4054,downvotes:62,score:.9453},uploaded:"2020-04-12T09:50:46.516Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0e8ef3006db854c67f04fe72322bccea410f69ee",key:"9a0c",state:"Published",createdAt:"2020-04-12T09:50:46.516Z",sageScore:5,diffs:[{njs:14,offset:0,notes:580,bombs:0,obstacles:51,nps:3.092,length:484,characteristic:"Standard",difficulty:"Hard",events:2597,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:187.355,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:637,bombs:0,obstacles:51,nps:3.395,length:484,characteristic:"Standard",difficulty:"Expert",events:2597,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:187.355,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:844,bombs:0,obstacles:39,nps:4.499,length:484,characteristic:"Standard",difficulty:"ExpertPlus",events:2597,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:187.355,paritySummary:{errors:1,warns:2,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0e8ef3006db854c67f04fe72322bccea410f69ee.zip",coverURL:"https://cdn.beatsaver.com/0e8ef3006db854c67f04fe72322bccea410f69ee.jpg",previewURL:"https://cdn.beatsaver.com/0e8ef3006db854c67f04fe72322bccea410f69ee.mp3"}],createdAt:"2020-04-12T09:50:46.516Z",updatedAt:"2020-04-12T09:50:46.516Z",lastPublishedAt:"2020-04-12T09:50:46.516Z"},{id:"4980",name:"Paradise - Coldplay",description:"\"Paradise\" is a song by the British rock band Coldplay. The song was released on 12 September 2011. I kinda like this song for relaxing on long car rides and I don't know how it will feel as a beat saber map but I'ma try mapping it anyways. So here it is :)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:70,duration:278,songName:"Paradise",songSubName:"Coldplay",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:12627,upvotes:2893,downvotes:31,score:.9451},uploaded:"2019-04-30T05:45:51Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b14639af36673a43fe32bc7563619deff438d438",key:"4980",state:"Published",createdAt:"2019-04-30T05:45:51Z",sageScore:6,diffs:[{njs:13,offset:0,notes:1023,bombs:0,obstacles:35,nps:3.816,length:312.75,characteristic:"Standard",difficulty:"Expert",events:4651,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.071,paritySummary:{errors:28,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b14639af36673a43fe32bc7563619deff438d438.zip",coverURL:"https://cdn.beatsaver.com/b14639af36673a43fe32bc7563619deff438d438.jpg",previewURL:"https://cdn.beatsaver.com/b14639af36673a43fe32bc7563619deff438d438.mp3"}],createdAt:"2019-04-30T05:45:51Z",updatedAt:"2019-04-30T05:45:51Z",lastPublishedAt:"2019-04-30T05:45:51Z"},{id:"efe",name:"Some Nights - Fun.",description:"Difficulties: Expert+, Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/X4R7VIZPffk",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:108,duration:255,songName:"Some Nights",songSubName:"Fun.",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:15367,upvotes:7399,downvotes:170,score:.9451},uploaded:"2018-08-10T20:34:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e64d6b7c5527d36005ae1801268798dd21ccf605",key:"efe",state:"Published",createdAt:"2018-08-10T20:34:09Z",sageScore:4,diffs:[{njs:10,offset:0,notes:321,bombs:0,obstacles:14,nps:1.382,length:418,characteristic:"Standard",difficulty:"Normal",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.222,paritySummary:{errors:73,warns:36,resets:0}},{njs:10,offset:0,notes:432,bombs:0,obstacles:14,nps:1.86,length:418,characteristic:"Standard",difficulty:"Hard",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.222,paritySummary:{errors:82,warns:51,resets:0}},{njs:10,offset:0,notes:680,bombs:0,obstacles:14,nps:2.928,length:418,characteristic:"Standard",difficulty:"Expert",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.222,paritySummary:{errors:86,warns:82,resets:0}},{njs:10,offset:0,notes:810,bombs:0,obstacles:14,nps:3.488,length:418,characteristic:"Standard",difficulty:"ExpertPlus",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:232.222,paritySummary:{errors:108,warns:106,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e64d6b7c5527d36005ae1801268798dd21ccf605.zip",coverURL:"https://cdn.beatsaver.com/e64d6b7c5527d36005ae1801268798dd21ccf605.jpg",previewURL:"https://cdn.beatsaver.com/e64d6b7c5527d36005ae1801268798dd21ccf605.mp3"}],createdAt:"2018-08-10T20:34:09Z",updatedAt:"2018-08-10T20:34:09Z",lastPublishedAt:"2018-08-10T20:34:09Z"},{id:"14d64",name:"Try - MitiS Feat. RORY",description:"Twenty-Sixth Upload\n\nThis map means the whole world to me, so I hope everyone enjoys this map. My father passed away on Jan. 23, 2021, in the middle of making this map. I am dedicating this map for him because of how much this songs means to me now. \nPouring my heart and soul into this map took a lot out of me, making it as perfect to my little abilities I have for mapping.\n\nBig shout outs to Lonely and Jamman for lighting this beautiful song and for agreeing to light it, it means the world to me.\nBig shout outs to thelightdesigner for making such amazing and beautiful walls. Thank you for taking the time to make this, it means the world to me.\nBig shout outs to Mawntee for giving me advice on how to make this map feel and shout outs to thelitlewiseowl for modding it, showing me what I can improve in this map. \nBiggest shout outs to everyone that play tested it multiple times. I am sorry for bugging them for multiple play test. \n\nAnd Biggest shoutout to my favorite chillstep/melodic dubstep artist, MitiS and Rory for making this beautiful song. \nYou have no idea how much this song means to me, I thank you so much. Keep up the good work MitiS.\n\n**NOODLES AND CHROMA REQUIRED**\n\nI hope this map can show you the feeling in this song, as well as what it portrays. I tried my best, I hope it turns out great and everyone enjoys it. \nThank you everyone for taking the time to download and play this map. I appreciate it everyone.\n\nFeedback is always welcome!",uploader:{id:4285346,name:"remie",uniqueSet:!0,hash:"5f6efd989824150006d740ac",avatar:"https://cdn.beatsaver.com/avatar/144275927466115073.png",type:"DISCORD"},metadata:{bpm:132,duration:273,songName:"Try",songSubName:"",songAuthorName:"MitiS Feat. RORY",levelAuthorName:"Remie & Lone"},stats:{plays:0,downloads:7511,upvotes:2884,downvotes:31,score:.945},uploaded:"2021-03-01T13:29:26.471Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6db3d9da217b41607d250aa7a28c5dc26a082188",key:"14d64",state:"Published",createdAt:"2021-03-01T13:29:26.471Z",sageScore:3,diffs:[{njs:17,offset:-.7,notes:1447,bombs:21,obstacles:17451,nps:6.217,length:512.083,characteristic:"Standard",difficulty:"ExpertPlus",events:36825,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:232.765,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/6db3d9da217b41607d250aa7a28c5dc26a082188.zip",coverURL:"https://cdn.beatsaver.com/6db3d9da217b41607d250aa7a28c5dc26a082188.jpg",previewURL:"https://cdn.beatsaver.com/6db3d9da217b41607d250aa7a28c5dc26a082188.mp3"}],createdAt:"2021-03-01T13:29:26.471Z",updatedAt:"2021-03-01T13:29:26.471Z",lastPublishedAt:"2021-03-01T13:29:26.471Z"},{id:"3b84",name:"Revenge [DJ Got Us Fallin In Love Minecraft Parody] - CaptainSparklez ft. TryHardNinja",description:"Revenge is a Minecraft parody song of DJ Got Us Fallin In Love by CaptainSparklez featuring vocals from TryHardNinja. Slight remap of DJ Got Us Fallin In Love.\r\n\r\nDamn, this song brings me back memories of the golden age of Minecraft.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:120,duration:222,songName:"Revenge",songSubName:"CaptainSparklez ft. TryHardNinja",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:13421,upvotes:7001,downvotes:157,score:.945},uploaded:"2019-03-04T17:01:53Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7ac4d99cee16e8d0437d7e8feecdb12488cc27d3",key:"3b84",state:"Published",createdAt:"2019-03-04T17:01:53Z",sageScore:5,diffs:[{njs:14,offset:0,notes:858,bombs:0,obstacles:1,nps:3.972,length:432,characteristic:"Standard",difficulty:"Expert",events:1675,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216,paritySummary:{errors:80,warns:85,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7ac4d99cee16e8d0437d7e8feecdb12488cc27d3.zip",coverURL:"https://cdn.beatsaver.com/7ac4d99cee16e8d0437d7e8feecdb12488cc27d3.jpg",previewURL:"https://cdn.beatsaver.com/7ac4d99cee16e8d0437d7e8feecdb12488cc27d3.mp3"}],createdAt:"2019-03-04T17:01:53Z",updatedAt:"2019-03-04T17:01:53Z",lastPublishedAt:"2019-03-04T17:01:53Z"},{id:"b7aa",name:"Powerwolf - Venom of Venus",description:"Back to my more regular style, Powerwolf is a power-metal band that perform around the themes of werewolves and religion, a strange but interesting mixture.\r\n\r\nEx+ has a no-colours mode for those who wish to play without the custom block colours, but unfortunately I can't fit such an option for all difficulties.\r\n\r\nNormal 1.85 NPS\r\nHard 3.15 NPS\r\nExpert 4.43 NPS\r\nExpert+ 5.11 NPS\r\n\r\nThere is no easy difficulty, as that I needed the slot for the no-colour mode.",uploader:{id:4285369,name:"Cyrix",uniqueSet:!0,hash:"5eb6eb9a7abb000006c85add",avatar:"https://cdn.beatsaver.com/avatar/167730807929044992.png",type:"DISCORD"},metadata:{bpm:164,duration:210,songName:"Venom of Venus",songSubName:"",songAuthorName:"Powerwolf",levelAuthorName:"Cyrix"},stats:{plays:0,downloads:8465,upvotes:2864,downvotes:31,score:.9449},uploaded:"2020-06-29T18:24:10.081Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f88b43c770dcd85a4ba18368853fbf062d41a09c",key:"b7aa",state:"Published",createdAt:"2020-06-29T18:24:10.081Z",sageScore:7,diffs:[{njs:12,offset:.5,notes:392,bombs:0,obstacles:63,nps:1.948,length:549.938,characteristic:"Standard",difficulty:"Easy",events:4188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.197,paritySummary:{errors:44,warns:15,resets:0}},{njs:13,offset:1,notes:666,bombs:8,obstacles:36,nps:3.31,length:549.938,characteristic:"Standard",difficulty:"Normal",events:4188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.197,paritySummary:{errors:1,warns:0,resets:1}},{njs:17,offset:0,notes:934,bombs:9,obstacles:7,nps:4.642,length:549.938,characteristic:"Standard",difficulty:"Hard",events:4188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.197,paritySummary:{errors:0,warns:0,resets:2}},{njs:20,offset:-.25,notes:1079,bombs:4,obstacles:7,nps:5.353,length:551,characteristic:"Standard",difficulty:"Expert",events:4192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.585,paritySummary:{errors:1,warns:0,resets:2}},{njs:20,offset:-.25,notes:1079,bombs:4,obstacles:7,nps:5.353,length:551,characteristic:"Standard",difficulty:"ExpertPlus",events:4192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.585,paritySummary:{errors:1,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/f88b43c770dcd85a4ba18368853fbf062d41a09c.zip",coverURL:"https://cdn.beatsaver.com/f88b43c770dcd85a4ba18368853fbf062d41a09c.jpg",previewURL:"https://cdn.beatsaver.com/f88b43c770dcd85a4ba18368853fbf062d41a09c.mp3"}],createdAt:"2020-06-29T18:24:10.081Z",updatedAt:"2020-06-29T18:24:10.081Z",lastPublishedAt:"2020-06-29T18:24:10.081Z"},{id:"fd",name:"Rasputin - Boney M",description:"Expert\r\n127 bpm",uploader:{id:48512,name:"jobas",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9a2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9a2?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:266,songName:"Rasputin-Boney M",songSubName:"",songAuthorName:"Jobas",levelAuthorName:"jobas"},stats:{plays:0,downloads:22705,upvotes:8696,downvotes:218,score:.9448},uploaded:"2018-05-18T23:27:59Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bf2f5afaeae0767c9bd6944ce74a23f6b24f4098",key:"fd",state:"Published",createdAt:"2018-05-18T23:27:59Z",sageScore:4,diffs:[{njs:10,offset:0,notes:701,bombs:0,obstacles:124,nps:2.699,length:549.844,characteristic:"Standard",difficulty:"Hard",events:0,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.769,paritySummary:{errors:29,warns:158,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bf2f5afaeae0767c9bd6944ce74a23f6b24f4098.zip",coverURL:"https://cdn.beatsaver.com/bf2f5afaeae0767c9bd6944ce74a23f6b24f4098.jpg",previewURL:"https://cdn.beatsaver.com/bf2f5afaeae0767c9bd6944ce74a23f6b24f4098.mp3"}],createdAt:"2018-05-18T23:27:59Z",updatedAt:"2018-05-18T23:27:59Z",lastPublishedAt:"2018-05-18T23:27:59Z"},{id:"74d5",name:"What's New, Scooby-Doo? - Simple Plan",description:"Just practicing my mapping with this song\n\nalso, my childhood nostalgia\nEDIT: forgot to set NJS",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:158.03,duration:67,songName:"What's New, Scooby-Doo?",songSubName:"",songAuthorName:"Simple Plan",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:10991,upvotes:3468,downvotes:48,score:.9447},uploaded:"2019-12-08T18:41:10.652Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e004f84ffebded94e761d667db6aaa44f000a8a8",key:"74d5",state:"Published",createdAt:"2019-12-08T18:41:10.652Z",sageScore:2,diffs:[{njs:15,offset:0,notes:330,bombs:2,obstacles:0,nps:5.226,length:166.313,characteristic:"Standard",difficulty:"Expert",events:382,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:63.145,paritySummary:{errors:9,warns:7,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e004f84ffebded94e761d667db6aaa44f000a8a8.zip",coverURL:"https://cdn.beatsaver.com/e004f84ffebded94e761d667db6aaa44f000a8a8.jpg",previewURL:"https://cdn.beatsaver.com/e004f84ffebded94e761d667db6aaa44f000a8a8.mp3"}],createdAt:"2019-12-08T18:41:10.652Z",updatedAt:"2019-12-08T18:41:10.652Z",lastPublishedAt:"2019-12-08T18:41:10.652Z"},{id:"a438",name:"Wait - M83 (wall map)",description:"I wanted to do something special for this great song, and also see the potential of Noodle Extensions. A few tips for a better experience:\r\n- disable the mirror effect in the game settings\r\n- turn the SFX volume down in the player settings\r\n- hide the HUD in the player settings\r\n\r\nVideo: https://youtu.be/oe6ThhijPy0\r\n\r\nThe map has a lot of walls, so you might not be able to run it on the lower-end hardware. I've included a version with less walls in case it helps.",uploader:{id:4288814,name:"nyri0",uniqueSet:!0,hash:"5e792df416c9680006086a78",avatar:"https://cdn.beatsaver.com/avatar/396715033125584907.png",type:"DISCORD"},metadata:{bpm:148,duration:336,songName:"Wait",songSubName:"",songAuthorName:"M83",levelAuthorName:"nyri0"},stats:{plays:0,downloads:6655,upvotes:2103,downvotes:14,score:.9442},uploaded:"2020-05-08T23:53:02.030Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0d8921ef06a889cbd9db13afcc43f09a1619b173",key:"a438",state:"Published",createdAt:"2020-05-08T23:53:02.030Z",sageScore:6,diffs:[{njs:8,offset:6,notes:735,bombs:0,obstacles:6684,nps:2.225,length:815,characteristic:"Standard",difficulty:"Easy",events:5,chroma:!1,me:!1,ne:!0,cinema:!1,seconds:330.405,paritySummary:{errors:94,warns:27,resets:0}},{njs:8,offset:6,notes:735,bombs:0,obstacles:10499,nps:2.225,length:815,characteristic:"Standard",difficulty:"Hard",events:5,chroma:!1,me:!1,ne:!0,cinema:!1,seconds:330.405,paritySummary:{errors:94,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0d8921ef06a889cbd9db13afcc43f09a1619b173.zip",coverURL:"https://cdn.beatsaver.com/0d8921ef06a889cbd9db13afcc43f09a1619b173.jpg",previewURL:"https://cdn.beatsaver.com/0d8921ef06a889cbd9db13afcc43f09a1619b173.mp3"}],createdAt:"2020-05-08T23:53:02.030Z",updatedAt:"2020-05-08T23:53:02.030Z",lastPublishedAt:"2020-05-08T23:53:02.030Z"},{id:"4a35",name:"[Anniversary] Animals (Radio Edit) - Martin Garrix [Joetastic & StyngMe]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:176,songName:"Animals (Radio Edit)",songSubName:"Martin Garrix",songAuthorName:"Joetastic & StyngMe",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:14718,upvotes:7734,downvotes:189,score:.9442},uploaded:"2019-05-03T14:08:02Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1a1737caba0f049a69369e328622e06b2a32b634",key:"4a35",state:"Published",createdAt:"2019-05-03T14:08:02Z",sageScore:8,diffs:[{njs:10,offset:0,notes:272,bombs:0,obstacles:19,nps:1.612,length:360,characteristic:"Standard",difficulty:"Easy",events:2074,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.75,paritySummary:{errors:32,warns:22,resets:0}},{njs:12,offset:0,notes:350,bombs:0,obstacles:22,nps:2.08,length:359,characteristic:"Standard",difficulty:"Normal",events:2074,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.281,paritySummary:{errors:34,warns:27,resets:0}},{njs:14,offset:0,notes:436,bombs:6,obstacles:22,nps:2.584,length:360,characteristic:"Standard",difficulty:"Hard",events:2074,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.75,paritySummary:{errors:29,warns:31,resets:4}},{njs:15,offset:0,notes:675,bombs:4,obstacles:22,nps:4,length:360,characteristic:"Standard",difficulty:"Expert",events:2074,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.75,paritySummary:{errors:26,warns:34,resets:1}},{njs:16,offset:0,notes:738,bombs:0,obstacles:21,nps:4.373,length:360,characteristic:"Standard",difficulty:"ExpertPlus",events:2038,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.75,paritySummary:{errors:46,warns:40,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1a1737caba0f049a69369e328622e06b2a32b634.zip",coverURL:"https://cdn.beatsaver.com/1a1737caba0f049a69369e328622e06b2a32b634.jpg",previewURL:"https://cdn.beatsaver.com/1a1737caba0f049a69369e328622e06b2a32b634.mp3"}],createdAt:"2019-05-03T14:08:02Z",updatedAt:"2019-05-03T14:08:02Z",lastPublishedAt:"2019-05-03T14:08:02Z"},{id:"5038",name:"Uptown Funk - Mark Ronson",description:"5/31: This version now works for the Oculus Quest.\r\n\r\nDifficulties: Expert and Hard\r\nYouTube Link: https://youtu.be/6TYji_Klr9I",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:115,duration:271,songName:"Uptown Funk",songSubName:"Mark Ronson",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:21925,upvotes:9390,downvotes:251,score:.944},uploaded:"2019-05-31T17:58:39Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d110e413fb7fb462b692f1f17b835cf8b7280884",key:"5038",state:"Published",createdAt:"2019-05-31T17:58:39Z",sageScore:5,diffs:[{njs:10,offset:0,notes:639,bombs:0,obstacles:24,nps:2.397,length:511,characteristic:"Standard",difficulty:"Hard",events:786,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:266.609,paritySummary:{errors:115,warns:89,resets:0}},{njs:10,offset:0,notes:776,bombs:0,obstacles:24,nps:2.911,length:511,characteristic:"Standard",difficulty:"Expert",events:786,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:266.609,paritySummary:{errors:98,warns:111,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d110e413fb7fb462b692f1f17b835cf8b7280884.zip",coverURL:"https://cdn.beatsaver.com/d110e413fb7fb462b692f1f17b835cf8b7280884.jpg",previewURL:"https://cdn.beatsaver.com/d110e413fb7fb462b692f1f17b835cf8b7280884.mp3"}],createdAt:"2019-05-31T17:58:39Z",updatedAt:"2019-05-31T17:58:39Z",lastPublishedAt:"2019-05-31T17:58:39Z"},{id:"1c1",name:"Shia LaBeouf (Rob Cantor)",description:"Shia LaBeouf - Rob Cantor\r\nFinished Lighting\r\nDifficulties: Expert, Hard, Normal, Easy\r\nBPM: 96",uploader:{id:53184,name:"kleid",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ecd9",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ecd9?d=retro",type:"SIMPLE"},metadata:{bpm:96,duration:154,songName:"Shia LaBeouf",songSubName:"Rob Cantor",songAuthorName:"Kleid",levelAuthorName:"kleid"},stats:{plays:0,downloads:12103,upvotes:6574,downvotes:151,score:.9439},uploaded:"2018-05-23T00:42:28Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"1279a3fcaff31e767e5dd7d7c016ec08733cf566",key:"1c1",state:"Published",createdAt:"2018-05-23T00:42:28Z",sageScore:5,diffs:[{njs:10,offset:0,notes:266,bombs:0,obstacles:39,nps:1.891,length:225,characteristic:"Standard",difficulty:"Easy",events:379,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.625,paritySummary:{errors:36,warns:49,resets:0},stars:1.36},{njs:10,offset:0,notes:323,bombs:0,obstacles:44,nps:2.296,length:225,characteristic:"Standard",difficulty:"Normal",events:379,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.625,paritySummary:{errors:59,warns:46,resets:0},stars:1.65},{njs:10,offset:0,notes:344,bombs:24,obstacles:44,nps:2.445,length:225,characteristic:"Standard",difficulty:"Hard",events:379,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.625,paritySummary:{errors:61,warns:48,resets:3},stars:1.73},{njs:10,offset:0,notes:378,bombs:28,obstacles:64,nps:2.687,length:225,characteristic:"Standard",difficulty:"Expert",events:379,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.625,paritySummary:{errors:69,warns:54,resets:3}}],downloadURL:"https://cdn.beatsaver.com/1279a3fcaff31e767e5dd7d7c016ec08733cf566.zip",coverURL:"https://cdn.beatsaver.com/1279a3fcaff31e767e5dd7d7c016ec08733cf566.jpg",previewURL:"https://cdn.beatsaver.com/1279a3fcaff31e767e5dd7d7c016ec08733cf566.mp3"}],createdAt:"2018-05-23T00:42:28Z",updatedAt:"2018-05-23T00:42:28Z",lastPublishedAt:"2018-05-23T00:42:28Z"},{id:"7a64",name:"Joey Batey - Toss A Coin To Your Witcher",description:"Expert+ Preview https://www.youtube.com/watch?v=AjfABhvswrI\n\nToss a Coin to Beat Saber!\n\nNetflix's The Witcher OST.\nOriginal Music by Sonya Belousova & Giona Ostinelli.\nLyrics by Jenny Klein, Sonya Belousova & Giona Ostinelli.\nPerformed by Joey Batey.\n\nThanks Sorukun for playtesting.",uploader:{id:4286200,name:"holair",uniqueSet:!0,hash:"5cff0b7698cc5a672c853af4",avatar:"https://cdn.beatsaver.com/avatar/176034748571844608.png",type:"DISCORD"},metadata:{bpm:105,duration:180,songName:"Toss A Coin To Your Witcher",songSubName:"Netflix's The Witcher",songAuthorName:"Joey Batey",levelAuthorName:"Holair"},stats:{plays:0,downloads:16196,upvotes:9958,downvotes:275,score:.9438},uploaded:"2019-12-28T20:11:35.767Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"19a733cf9202ef25725966d78f465bf87b26254d",key:"7a64",state:"Published",createdAt:"2019-12-28T20:11:35.767Z",sageScore:7,diffs:[{njs:10,offset:0,notes:175,bombs:0,obstacles:1,nps:1.008,length:303.743,characteristic:"Standard",difficulty:"Easy",events:814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.567,paritySummary:{errors:55,warns:12,resets:0}},{njs:10,offset:0,notes:322,bombs:0,obstacles:2,nps:1.855,length:303.743,characteristic:"Standard",difficulty:"Normal",events:814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.567,paritySummary:{errors:37,warns:21,resets:0}},{njs:12,offset:0,notes:459,bombs:0,obstacles:10,nps:2.645,length:303.743,characteristic:"Standard",difficulty:"Hard",events:814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.567,paritySummary:{errors:38,warns:16,resets:0}},{njs:14,offset:0,notes:578,bombs:0,obstacles:15,nps:3.33,length:303.743,characteristic:"Standard",difficulty:"Expert",events:1310,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.567,paritySummary:{errors:37,warns:40,resets:0}},{njs:14,offset:0,notes:580,bombs:0,obstacles:14,nps:3.342,length:303.74,characteristic:"Standard",difficulty:"ExpertPlus",events:1310,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.566,paritySummary:{errors:41,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/19a733cf9202ef25725966d78f465bf87b26254d.zip",coverURL:"https://cdn.beatsaver.com/19a733cf9202ef25725966d78f465bf87b26254d.jpg",previewURL:"https://cdn.beatsaver.com/19a733cf9202ef25725966d78f465bf87b26254d.mp3"}],createdAt:"2019-12-28T20:11:35.767Z",updatedAt:"2019-12-28T20:11:35.767Z",lastPublishedAt:"2019-12-28T20:11:35.767Z"},{id:"49f2",name:"It's My Life - Bon Jovi",description:"I might be a huge weeb but I still enjoy listening to 80s band: Bon Jovi. Here's one of their more modern songs from the 2000s: It's My Life! Mapping on this isn't too difficult, it's an slow rock song so not much I can map to anyways",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:120,duration:226,songName:"It's My Life",songSubName:"Bon Jovi",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:11924,upvotes:3179,downvotes:44,score:.9436},uploaded:"2019-05-02T14:08:00Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"172b9d6d206a3fb679426b2934daad3191b10ec7",key:"49f2",state:"Published",createdAt:"2019-05-02T14:08:00Z",sageScore:5,diffs:[{njs:12,offset:0,notes:684,bombs:0,obstacles:4,nps:3.081,length:444,characteristic:"Standard",difficulty:"Hard",events:1968,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222,paritySummary:{errors:13,warns:15,resets:0}}],downloadURL:"https://cdn.beatsaver.com/172b9d6d206a3fb679426b2934daad3191b10ec7.zip",coverURL:"https://cdn.beatsaver.com/172b9d6d206a3fb679426b2934daad3191b10ec7.jpg",previewURL:"https://cdn.beatsaver.com/172b9d6d206a3fb679426b2934daad3191b10ec7.mp3"}],createdAt:"2019-05-02T14:08:00Z",updatedAt:"2019-05-02T14:08:00Z",lastPublishedAt:"2019-05-02T14:08:00Z"},{id:"5616",name:"Sanctuary - Joji (All Difficulties, Single Saber, & No Arrows)",description:"A tribute to our boy Joji. Lots of love for him in this, 10 difficulties for players of all skill to enjoy.\n\n168 BPM - 2:56 Runtime\nEasy - 268 Notes\nNormal - 327 Notes\nHard - 409 Notes\nExpert - 465 Notes\nExpert+ - 542 Notes\n\nHard (Single Saber) - 306 Notes\nExpert (Single Saber) - 375 Notes\nExpert+ (Single Saber) - 444 Notes\n\nSincerity Difficulty (Reversed No Arrow) - 465 Notes\nSanctuary Difficulty (Reversed No Arrow) - 542 Notes\n\nGameplay:  https://youtu.be/u2AYPs94t7o\n\n**Little easter egg. Wall counts on maps correspond to milestones for George Miller. 162 videos on FilthyFrank YT channel, 105 videos on TooDamnFilthy YT channel, 95 videos on Dizastamusic YT channel, 38 songs on Pink Guy album, 35 songs on Pink Season album.",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:168,duration:176,songName:"Sanctuary",songSubName:"",songAuthorName:"Joji",levelAuthorName:"Skyler Wallace"},stats:{plays:0,downloads:12792,upvotes:3919,downvotes:67,score:.9434},uploaded:"2019-07-09T02:56:20.454Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"76bc9c795600df8c663dea4927f470d0a7700ab3",key:"5616",state:"Published",createdAt:"2019-07-09T02:56:20.454Z",sageScore:8,diffs:[{njs:10,offset:0,notes:268,bombs:0,obstacles:35,nps:1.737,length:432,characteristic:"Standard",difficulty:"Easy",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:94,warns:18,resets:0}},{njs:10,offset:0,notes:327,bombs:0,obstacles:38,nps:2.119,length:432,characteristic:"Standard",difficulty:"Normal",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:61,warns:12,resets:0}},{njs:12,offset:0,notes:409,bombs:0,obstacles:92,nps:2.651,length:432,characteristic:"Standard",difficulty:"Hard",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:29,warns:10,resets:0}},{njs:14,offset:1,notes:465,bombs:0,obstacles:105,nps:3.014,length:432,characteristic:"Standard",difficulty:"Expert",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:37,warns:26,resets:0}},{njs:14,offset:1,notes:542,bombs:0,obstacles:162,nps:3.513,length:432,characteristic:"Standard",difficulty:"ExpertPlus",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:24,warns:29,resets:0}},{njs:12,offset:0,notes:306,bombs:0,obstacles:92,nps:1.983,length:432,characteristic:"OneSaber",difficulty:"Hard",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:23,warns:28,resets:0}},{njs:14,offset:1,notes:375,bombs:0,obstacles:105,nps:2.431,length:432,characteristic:"OneSaber",difficulty:"Expert",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:26,warns:29,resets:0}},{njs:14,offset:1,notes:444,bombs:0,obstacles:162,nps:2.878,length:432,characteristic:"OneSaber",difficulty:"ExpertPlus",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:25,warns:57,resets:0}},{njs:-14,offset:1,notes:465,bombs:0,obstacles:105,nps:3.014,length:432,characteristic:"NoArrows",difficulty:"Expert",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:0,warns:0,resets:0}},{njs:-14,offset:1,notes:542,bombs:0,obstacles:162,nps:3.513,length:432,characteristic:"NoArrows",difficulty:"ExpertPlus",events:3623,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.286,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/76bc9c795600df8c663dea4927f470d0a7700ab3.zip",coverURL:"https://cdn.beatsaver.com/76bc9c795600df8c663dea4927f470d0a7700ab3.jpg",previewURL:"https://cdn.beatsaver.com/76bc9c795600df8c663dea4927f470d0a7700ab3.mp3"}],createdAt:"2019-07-09T02:56:20.454Z",updatedAt:"2019-07-09T02:56:20.454Z",lastPublishedAt:"2019-07-09T02:56:20.454Z"},{id:"9b35",name:"Ready To [BNA: Brand New Animal Opening]",description:'use CHROMA mod for some cool ring prop effects\n\nTrigger greatness with a fire opening\nI\'m not a furry\nI think\n\n"Ready To" was sung by main girl, Michiru Kagemori (CV: Sumire Morohoshi)\n\nBPM 147 |\nExpert+\nExpert\nHard\nNormal\nEasy\n\ntyhf\n\npreview: https://www.youtube.com/watch?v=x6Q0y8Y8g0U\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:147,duration:199,songName:"Ready To",songSubName:"",songAuthorName:"Michiru (CV: Sumire Morohoshi)",levelAuthorName:"ETAN"},stats:{plays:0,downloads:12461,upvotes:4254,downvotes:78,score:.9432},uploaded:"2020-04-15T05:30:10.784Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c5de287d4406906d4ad3ddebc18e18446bb3a578",key:"9b35",state:"Published",createdAt:"2020-04-15T05:30:10.784Z",sageScore:7,diffs:[{njs:11,offset:0,notes:264,bombs:0,obstacles:2,nps:1.356,length:477,characteristic:"Standard",difficulty:"Easy",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:2,warns:4,resets:0}},{njs:11,offset:0,notes:336,bombs:0,obstacles:2,nps:1.726,length:477,characteristic:"Standard",difficulty:"Normal",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:0,warns:0,resets:0}},{njs:13,offset:1,notes:500,bombs:32,obstacles:2,nps:2.568,length:477,characteristic:"Standard",difficulty:"Hard",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:.3,notes:734,bombs:32,obstacles:2,nps:3.77,length:477,characteristic:"Standard",difficulty:"Expert",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:0,warns:0,resets:0}},{njs:21,offset:-.3,notes:900,bombs:32,obstacles:2,nps:4.623,length:477,characteristic:"Standard",difficulty:"ExpertPlus",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:194.694,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:11962,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c5de287d4406906d4ad3ddebc18e18446bb3a578.zip",coverURL:"https://cdn.beatsaver.com/c5de287d4406906d4ad3ddebc18e18446bb3a578.jpg",previewURL:"https://cdn.beatsaver.com/c5de287d4406906d4ad3ddebc18e18446bb3a578.mp3"}],createdAt:"2020-04-15T05:30:10.784Z",updatedAt:"2020-04-15T05:30:10.784Z",lastPublishedAt:"2020-04-15T05:30:10.784Z"},{id:"56cb",name:"Onegai Muscle [Dumbbell Nan Kilo Moteru? Opening]",description:"SAIDO CHESTO\n\nSung by \nHibiki Sakura (CV: Ai Fairouz)\nNaruzou Machio (CV: Kaito Ishikawa)\n\nBPM 132 | Length 1:32\nMuscle!+ (Expert+)\nExpert\nHard\n\nThanks to Helen Carnate and Kival Evan for playtesting\n\ntyhf\n\ndm me on discord with feedback\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:132,duration:92,songName:"Onegai Muscle",songSubName:"",songAuthorName:"Ai Fairouz, Kaito Ishikawa",levelAuthorName:"ETAN"},stats:{plays:0,downloads:12485,upvotes:5772,downvotes:131,score:.9428},uploaded:"2019-07-13T16:48:46.669Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7aa8bd16a692b8c8769d96cf96b9b259bea2e862",key:"56cb",state:"Published",createdAt:"2019-07-13T16:48:46.669Z",sageScore:5,diffs:[{njs:13,offset:0,notes:223,bombs:32,obstacles:37,nps:2.544,length:192.875,characteristic:"Standard",difficulty:"Hard",events:5023,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.67,paritySummary:{errors:4,warns:5,resets:0}},{njs:16,offset:0,notes:304,bombs:32,obstacles:37,nps:3.468,length:192.875,characteristic:"Standard",difficulty:"Expert",events:5023,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.67,paritySummary:{errors:8,warns:4,resets:0}},{njs:19,offset:0,notes:402,bombs:32,obstacles:38,nps:4.585,length:192.875,characteristic:"Standard",difficulty:"ExpertPlus",events:5023,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.67,paritySummary:{errors:12,warns:6,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7aa8bd16a692b8c8769d96cf96b9b259bea2e862.zip",coverURL:"https://cdn.beatsaver.com/7aa8bd16a692b8c8769d96cf96b9b259bea2e862.jpg",previewURL:"https://cdn.beatsaver.com/7aa8bd16a692b8c8769d96cf96b9b259bea2e862.mp3"}],createdAt:"2019-07-13T16:48:46.669Z",updatedAt:"2019-07-13T16:48:46.669Z",lastPublishedAt:"2019-07-13T16:48:46.669Z"},{id:"3b76",name:"Caravan Palace - Miracle",description:"==================================================\r\nSong: Caravan Palace - Miracle\r\nBPM: 120\r\nNote jump speed: 10 - 16\r\nVersions: Expert+, Expert, Hard, Normal\r\n=============================\r\nLove this new track from Caravan Palace",uploader:{id:4287543,name:"therealzeroz",uniqueSet:!0,hash:"5cff0b7498cc5a672c85037b",avatar:"https://cdn.beatsaver.com/avatar/182672808961114112.png",type:"DISCORD"},metadata:{bpm:100,duration:221,songName:"Caravan Palace - Miracle",songSubName:"",songAuthorName:"TheRealZeroz",levelAuthorName:"TheRealZeroz"},stats:{plays:0,downloads:8954,upvotes:5074,downvotes:107,score:.9428},uploaded:"2019-03-04T12:15:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"29e5877ec735378b8ba3751dc8896bf63a43c525",key:"3b76",state:"Published",createdAt:"2019-03-04T12:15:10Z",sageScore:3,diffs:[{njs:10,offset:0,notes:326,bombs:0,obstacles:4,nps:1.793,length:303,characteristic:"Standard",difficulty:"Normal",events:4399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.8,paritySummary:{errors:38,warns:2,resets:0}},{njs:13,offset:0,notes:562,bombs:0,obstacles:0,nps:3.081,length:304,characteristic:"Standard",difficulty:"Hard",events:4399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.4,paritySummary:{errors:12,warns:13,resets:0}},{njs:14,offset:0,notes:1034,bombs:0,obstacles:8,nps:5.669,length:304,characteristic:"Standard",difficulty:"Expert",events:4399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.4,paritySummary:{errors:20,warns:2,resets:0}},{njs:16,offset:0,notes:1156,bombs:0,obstacles:9,nps:6.348,length:303.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.1,paritySummary:{errors:36,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/29e5877ec735378b8ba3751dc8896bf63a43c525.zip",coverURL:"https://cdn.beatsaver.com/29e5877ec735378b8ba3751dc8896bf63a43c525.jpg",previewURL:"https://cdn.beatsaver.com/29e5877ec735378b8ba3751dc8896bf63a43c525.mp3"}],createdAt:"2019-03-04T12:15:10Z",updatedAt:"2019-03-04T12:15:10Z",lastPublishedAt:"2019-03-04T12:15:10Z"},{id:"5062",name:"Witchcraft - Pendulum",description:"I have been working on this chart for a while now, finally able to finish it off. :) Enjoy!\r\nhttps://www.youtube.com/watch?v=mlaH4Dqjv1U",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:174,duration:254,songName:"Witchcraft",songSubName:"Pendulum",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:9888,upvotes:4287,downvotes:83,score:.9424},uploaded:"2019-06-01T07:59:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"015170851544c832ee4ac858ca6b3425677b1696",key:"5062",state:"Published",createdAt:"2019-06-01T07:59:40Z",sageScore:4,diffs:[{njs:10,offset:0,notes:372,bombs:0,obstacles:33,nps:1.515,length:712,characteristic:"Standard",difficulty:"Normal",events:8298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.517,paritySummary:{errors:13,warns:21,resets:0}},{njs:12,offset:0,notes:750,bombs:0,obstacles:53,nps:3.055,length:712,characteristic:"Standard",difficulty:"Hard",events:8298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.517,paritySummary:{errors:8,warns:7,resets:0}},{njs:14,offset:0,notes:1213,bombs:0,obstacles:36,nps:4.941,length:712,characteristic:"Standard",difficulty:"Expert",events:8298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.517,paritySummary:{errors:10,warns:5,resets:0}},{njs:18,offset:0,notes:1401,bombs:0,obstacles:28,nps:5.706,length:712,characteristic:"Standard",difficulty:"ExpertPlus",events:8298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.517,paritySummary:{errors:7,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/015170851544c832ee4ac858ca6b3425677b1696.zip",coverURL:"https://cdn.beatsaver.com/015170851544c832ee4ac858ca6b3425677b1696.jpg",previewURL:"https://cdn.beatsaver.com/015170851544c832ee4ac858ca6b3425677b1696.mp3"}],createdAt:"2019-06-01T07:59:40Z",updatedAt:"2019-06-01T07:59:40Z",lastPublishedAt:"2019-06-01T07:59:40Z"},{id:"6891",name:"Panic! At The Disco - I Write Sins Not Tragedies",description:"PepeJamJam \nAll Difficulties",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:170,duration:188,songName:"I Write Sins Not Tragedies",songSubName:"",songAuthorName:"Panic! At the Disco",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:17370,upvotes:5712,downvotes:132,score:.9423},uploaded:"2019-10-08T04:14:47.579Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7ec6ee195a2d577d5b924dad8b1a25b881aa2d27",key:"6891",state:"Published",createdAt:"2019-10-08T04:14:47.579Z",sageScore:8,diffs:[{njs:10,offset:0,notes:271,bombs:0,obstacles:21,nps:1.519,length:505.5,characteristic:"Standard",difficulty:"Easy",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:15,warns:9,resets:0}},{njs:10,offset:0,notes:312,bombs:0,obstacles:21,nps:1.749,length:505.5,characteristic:"Standard",difficulty:"Normal",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:18,warns:10,resets:0}},{njs:10,offset:0,notes:487,bombs:0,obstacles:41,nps:2.73,length:505.5,characteristic:"Standard",difficulty:"Hard",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:32,warns:34,resets:0}},{njs:12,offset:0,notes:690,bombs:80,obstacles:29,nps:3.867,length:505.5,characteristic:"Standard",difficulty:"Expert",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:11,warns:6,resets:2}},{njs:15,offset:0,notes:969,bombs:0,obstacles:17,nps:5.431,length:505.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.412,paritySummary:{errors:9,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7ec6ee195a2d577d5b924dad8b1a25b881aa2d27.zip",coverURL:"https://cdn.beatsaver.com/7ec6ee195a2d577d5b924dad8b1a25b881aa2d27.jpg",previewURL:"https://cdn.beatsaver.com/7ec6ee195a2d577d5b924dad8b1a25b881aa2d27.mp3"}],createdAt:"2019-10-08T04:14:47.579Z",updatedAt:"2019-10-08T04:14:47.579Z",lastPublishedAt:"2019-10-08T04:14:47.579Z"},{id:"1eb2",name:"Pumped Up Kicks - Foster the People",description:"128 BPM / 3:27 Runtime\r\nNormal / 381 Notes\r\nHard / 492 Notes\r\nExpert / 714 Notes\r\n\r\nGameplay:\r\nhttps://youtu.be/oo1EgLAOB1s\r\n\r\nListen to the song:\r\nhttps://www.youtube.com/watch?v=SDTZ7iX4vTQ",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:128,duration:207,songName:"Pumped Up Kicks",songSubName:"Foster The People",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:17347,upvotes:6240,downvotes:151,score:.9423},uploaded:"2018-11-07T04:34:04Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b0f6224a2717b97a4538790a32eb618acae1f57a",key:"1eb2",state:"Published",createdAt:"2018-11-07T04:34:04Z",sageScore:6,diffs:[{njs:10,offset:0,notes:381,bombs:0,obstacles:41,nps:1.926,length:422,characteristic:"Standard",difficulty:"Normal",events:1994,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.813,paritySummary:{errors:82,warns:64,resets:0}},{njs:10,offset:0,notes:492,bombs:23,obstacles:16,nps:2.481,length:423,characteristic:"Standard",difficulty:"Hard",events:1994,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.281,paritySummary:{errors:58,warns:62,resets:4}},{njs:12,offset:0,notes:714,bombs:8,obstacles:34,nps:3.601,length:423,characteristic:"Standard",difficulty:"Expert",events:1994,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.281,paritySummary:{errors:69,warns:63,resets:1}}],downloadURL:"https://cdn.beatsaver.com/b0f6224a2717b97a4538790a32eb618acae1f57a.zip",coverURL:"https://cdn.beatsaver.com/b0f6224a2717b97a4538790a32eb618acae1f57a.jpg",previewURL:"https://cdn.beatsaver.com/b0f6224a2717b97a4538790a32eb618acae1f57a.mp3"}],createdAt:"2018-11-07T04:34:04Z",updatedAt:"2018-11-07T04:34:04Z",lastPublishedAt:"2018-11-07T04:34:04Z"},{id:"368c",name:"Harajuku Iyahoi - Kyary Pamyu Pamyu",description:"All difficulties relatively close to OST standards.\n\nThanks to n3tman, Sehria, OmniOmega, CyanSnow, Aeroluna, and Expo for their help.\n\nhttps://youtu.be/YqptqS0vIIA\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:128,duration:218,songName:"Harajuku Iyahoi",songSubName:"Kyary Pamyu Pamyu",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:4783,upvotes:2027,downvotes:17,score:.9421},uploaded:"2019-02-15T23:55:37Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8c392c31aeadb55eebeb978c09fa79857380f15c",key:"368c",state:"Published",createdAt:"2019-02-15T23:55:37Z",sageScore:4,diffs:[{njs:9,offset:0,notes:214,bombs:0,obstacles:15,nps:1.057,length:432,characteristic:"Standard",difficulty:"Easy",events:969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.5,paritySummary:{errors:59,warns:16,resets:0}},{njs:9,offset:0,notes:306,bombs:0,obstacles:15,nps:1.511,length:432,characteristic:"Standard",difficulty:"Normal",events:969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.5,paritySummary:{errors:68,warns:44,resets:0}},{njs:11,offset:0,notes:469,bombs:0,obstacles:21,nps:2.316,length:432,characteristic:"Standard",difficulty:"Hard",events:969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.5,paritySummary:{errors:68,warns:98,resets:0}},{njs:12,offset:0,notes:685,bombs:6,obstacles:25,nps:3.383,length:432,characteristic:"Standard",difficulty:"Expert",events:969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.5,paritySummary:{errors:85,warns:76,resets:2}}],downloadURL:"https://cdn.beatsaver.com/8c392c31aeadb55eebeb978c09fa79857380f15c.zip",coverURL:"https://cdn.beatsaver.com/8c392c31aeadb55eebeb978c09fa79857380f15c.jpg",previewURL:"https://cdn.beatsaver.com/8c392c31aeadb55eebeb978c09fa79857380f15c.mp3"}],createdAt:"2019-02-15T23:55:37Z",updatedAt:"2019-02-15T23:55:37Z",lastPublishedAt:"2019-02-15T23:55:37Z"},{id:"141",name:"GANGNAM STYLE",description:"Expert, Hard, and Normal tracks. I tried my best to setup the chorus charts to allow you to mimic the classic dance moves. I think it matches up quite nicely. I hope you have as much fun playing as I did making this! Enjoy!",uploader:{id:41378,name:"greatyazer",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea71",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea71?d=retro",type:"SIMPLE"},metadata:{bpm:132,duration:219,songName:"Gangnam Style",songSubName:"PSY",songAuthorName:"GreatYazer",levelAuthorName:"greatyazer"},stats:{plays:0,downloads:35740,upvotes:21669,downvotes:788,score:.9421},uploaded:"2018-05-20T09:59:02Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"8e7e553099436af31564adf1977a5ec42a61cfff",key:"141",state:"Published",createdAt:"2018-05-20T09:59:02Z",sageScore:5,diffs:[{njs:10,offset:0,notes:415,bombs:4,obstacles:42,nps:2.02,length:452,characteristic:"Standard",difficulty:"Normal",events:735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.455,paritySummary:{errors:191,warns:17,resets:0},stars:1.15},{njs:10,offset:0,notes:695,bombs:40,obstacles:94,nps:3.383,length:452,characteristic:"Standard",difficulty:"Hard",events:735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.455,paritySummary:{errors:275,warns:23,resets:0}},{njs:10,offset:0,notes:932,bombs:50,obstacles:103,nps:4.536,length:452,characteristic:"Standard",difficulty:"Expert",events:735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.455,paritySummary:{errors:332,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8e7e553099436af31564adf1977a5ec42a61cfff.zip",coverURL:"https://cdn.beatsaver.com/8e7e553099436af31564adf1977a5ec42a61cfff.jpg",previewURL:"https://cdn.beatsaver.com/8e7e553099436af31564adf1977a5ec42a61cfff.mp3"}],createdAt:"2018-05-20T09:59:02Z",updatedAt:"2018-05-20T09:59:02Z",lastPublishedAt:"2018-05-20T09:59:02Z"},{id:"319f",name:"Fall Out Boy - My songs know what you did in the dark (Light 'em up)",description:"Had a bit of time off lately so I went and made a other map. This time it's Fall Out Boy!\r\nI realise a map had been made for this track already, but I thought I'd give my take on it too seeing as its such a good song ;)\r\nAll difficulties are included from Easy to Expert so enjoy! :)\r\n\r\nUpdate: \r\nDecided to bite the bullet here and do an update. Big thanks for Heisenbergirl for pointing out the NJS felt off. Playing around with it I've now raised it to 13 (from 12) and learnt a valuable skill when it comes to mapping. Basically the NJS spaces out the notes a bit more so makes it easier to read.\r\nI also adjusted a couple of the opening notes on Hard because I didn't really like the way that they flowed.\r\nFinally just want to apologise to everyone who's worked hard on a score or left a review. It sucks to have to reset it like this but it did need the update.\r\n\r\nVideo: https://www.youtube.com/watch?v=iZMvCvyarYA",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:152,duration:188,songName:"My songs know what you did in the dark",songSubName:"Fall Out Boy",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:15797,upvotes:5260,downvotes:119,score:.9419},uploaded:"2019-01-27T13:00:05Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5b53a3bede4fd8ee0950d0c5ba2dbbff73b6d127",key:"319f",state:"Published",createdAt:"2019-01-27T13:00:05Z",sageScore:6,diffs:[{njs:10,offset:0,notes:243,bombs:4,obstacles:93,nps:1.362,length:452,characteristic:"Standard",difficulty:"Easy",events:1723,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:23,warns:13,resets:0}},{njs:10,offset:0,notes:328,bombs:4,obstacles:95,nps:1.838,length:452,characteristic:"Standard",difficulty:"Normal",events:1723,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:28,warns:28,resets:2}},{njs:11,offset:0,notes:514,bombs:4,obstacles:75,nps:2.881,length:452,characteristic:"Standard",difficulty:"Hard",events:1725,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:25,warns:18,resets:1}},{njs:13,offset:0,notes:693,bombs:8,obstacles:58,nps:3.884,length:452,characteristic:"Standard",difficulty:"Expert",events:1726,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:27,warns:21,resets:4}}],downloadURL:"https://cdn.beatsaver.com/5b53a3bede4fd8ee0950d0c5ba2dbbff73b6d127.zip",coverURL:"https://cdn.beatsaver.com/5b53a3bede4fd8ee0950d0c5ba2dbbff73b6d127.jpg",previewURL:"https://cdn.beatsaver.com/5b53a3bede4fd8ee0950d0c5ba2dbbff73b6d127.mp3"}],createdAt:"2019-01-27T13:00:05Z",updatedAt:"2019-01-27T13:00:05Z",lastPublishedAt:"2019-01-27T13:00:05Z"},{id:"ac0a",name:"Hornet (Hollow Knight OST)",description:'This song really loses something without Hornet\'s war cries of "SHAA" and "HEGAALE" every three seconds. It also really gains something, because without that you can actually hear the music for once.',uploader:{id:4285065,name:"skaiamechanic",uniqueSet:!0,hash:"5e455654470a8200067c9bf9",avatar:"https://cdn.beatsaver.com/avatar/274999097361170432.png",type:"DISCORD"},metadata:{bpm:145,duration:168,songName:"Hornet",songSubName:"Hollow Knight",songAuthorName:"Christopher Larkin",levelAuthorName:"SkaiaMechanic"},stats:{plays:0,downloads:6639,upvotes:2339,downvotes:26,score:.9418},uploaded:"2020-05-29T18:41:14.740Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"48f5d0ddc8c6a006b5633c828039912744393877",key:"ac0a",state:"Published",createdAt:"2020-05-29T18:41:14.740Z",sageScore:5,diffs:[{njs:15,offset:0,notes:695,bombs:0,obstacles:12,nps:4.266,length:393.75,characteristic:"Standard",difficulty:"Hard",events:2513,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.931,paritySummary:{errors:43,warns:55,resets:0}},{njs:18,offset:0,notes:720,bombs:0,obstacles:33,nps:4.419,length:393.75,characteristic:"Standard",difficulty:"Expert",events:2513,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.931,paritySummary:{errors:27,warns:35,resets:0}}],downloadURL:"https://cdn.beatsaver.com/48f5d0ddc8c6a006b5633c828039912744393877.zip",coverURL:"https://cdn.beatsaver.com/48f5d0ddc8c6a006b5633c828039912744393877.jpg",previewURL:"https://cdn.beatsaver.com/48f5d0ddc8c6a006b5633c828039912744393877.mp3"}],createdAt:"2020-05-29T18:41:14.740Z",updatedAt:"2020-05-29T18:41:14.740Z",lastPublishedAt:"2020-05-29T18:41:14.740Z"},{id:"176c",name:"24K Magic - Bruno Mars",description:"We're taking it back old school... It's time to DANCE, baby!\r\nDifficulties: Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/IA4W-Z7KXSo",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:107,duration:228,songName:"24K Magic",songSubName:"Bruno Mars",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:13810,upvotes:6648,downvotes:174,score:.9412},uploaded:"2018-09-27T01:05:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b9e05baa59f3ea5c97c5ae82766783d895249c61",key:"176c",state:"Published",createdAt:"2018-09-27T01:05:07Z",sageScore:6,diffs:[{njs:10,offset:0,notes:215,bombs:0,obstacles:38,nps:1.08,length:355,characteristic:"Standard",difficulty:"Normal",events:1484,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.065,paritySummary:{errors:49,warns:40,resets:0}},{njs:10,offset:0,notes:439,bombs:0,obstacles:40,nps:2.205,length:355,characteristic:"Standard",difficulty:"Hard",events:1480,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.065,paritySummary:{errors:44,warns:84,resets:0}},{njs:10,offset:0,notes:592,bombs:0,obstacles:52,nps:2.974,length:355,characteristic:"Standard",difficulty:"Expert",events:1480,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.065,paritySummary:{errors:70,warns:116,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b9e05baa59f3ea5c97c5ae82766783d895249c61.zip",coverURL:"https://cdn.beatsaver.com/b9e05baa59f3ea5c97c5ae82766783d895249c61.jpg",previewURL:"https://cdn.beatsaver.com/b9e05baa59f3ea5c97c5ae82766783d895249c61.mp3"}],createdAt:"2018-09-27T01:05:07Z",updatedAt:"2018-09-27T01:05:07Z",lastPublishedAt:"2018-09-27T01:05:07Z"},{id:"6ea9",name:"Down Under - Men At Work",description:"Here's another great 80's anthem - Down Under, by Men At Work. I really enjoyed mapping this song. So much so, that I decided to do a full spread from Expert Plus to Easy. This is a really fun map to play whatever your skill level. I hope you enjoy it as much as I do!\n\nhttps://youtu.be/G0gTegU32ng",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:107,duration:210,songName:"Down Under",songSubName:"",songAuthorName:"Men At Work",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:12452,upvotes:3609,downvotes:67,score:.9411},uploaded:"2019-11-07T20:34:53.687Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c9ceaf7a8a7cea8381d08618c66110abbc4844f9",key:"6ea9",state:"Published",createdAt:"2019-11-07T20:34:53.687Z",sageScore:6,diffs:[{njs:12,offset:0,notes:249,bombs:0,obstacles:0,nps:1.22,length:364,characteristic:"Standard",difficulty:"Easy",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:59,warns:52,resets:0}},{njs:12,offset:0,notes:416,bombs:0,obstacles:0,nps:2.038,length:364,characteristic:"Standard",difficulty:"Normal",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:85,warns:84,resets:0}},{njs:15,offset:0,notes:613,bombs:0,obstacles:0,nps:3.003,length:364,characteristic:"Standard",difficulty:"Hard",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:54,warns:97,resets:0}},{njs:16,offset:0,notes:753,bombs:0,obstacles:0,nps:3.689,length:364,characteristic:"Standard",difficulty:"Expert",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:47,warns:56,resets:0}},{njs:17,offset:.8,notes:938,bombs:0,obstacles:0,nps:4.596,length:364,characteristic:"Standard",difficulty:"ExpertPlus",events:1970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.112,paritySummary:{errors:60,warns:36,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c9ceaf7a8a7cea8381d08618c66110abbc4844f9.zip",coverURL:"https://cdn.beatsaver.com/c9ceaf7a8a7cea8381d08618c66110abbc4844f9.jpg",previewURL:"https://cdn.beatsaver.com/c9ceaf7a8a7cea8381d08618c66110abbc4844f9.mp3"}],createdAt:"2019-11-07T20:34:53.687Z",updatedAt:"2019-11-07T20:34:53.687Z",lastPublishedAt:"2019-11-07T20:34:53.687Z"},{id:"195f",name:"Under The Sea (Little Mermaid) - Samuel E. Wright",description:'"What do they got? A lot of sand. We got a hot crustacean band! Each little clam here know how to jam here, under the sea!"\r\nDifficulties: Expert+, Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/h6eMPlGUZsw',uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:200,duration:194,songName:"Under The Sea",songSubName:"Samuel E. Wright",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:15120,upvotes:6093,downvotes:156,score:.9408},uploaded:"2018-10-08T23:44:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f745bac45c618fa2c49a0ee0c383f2a6cb356a78",key:"195f",state:"Published",createdAt:"2018-10-08T23:44:34Z",sageScore:4,diffs:[{njs:10,offset:0,notes:277,bombs:0,obstacles:9,nps:1.464,length:630,characteristic:"Standard",difficulty:"Normal",events:1406,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189,paritySummary:{errors:31,warns:31,resets:0}},{njs:10,offset:0,notes:317,bombs:0,obstacles:9,nps:1.673,length:631,characteristic:"Standard",difficulty:"Hard",events:1406,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:47,warns:28,resets:0}},{njs:10,offset:0,notes:541,bombs:0,obstacles:9,nps:2.855,length:631,characteristic:"Standard",difficulty:"Expert",events:1406,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:61,warns:89,resets:0}},{njs:10,offset:0,notes:848,bombs:0,obstacles:9,nps:4.475,length:631,characteristic:"Standard",difficulty:"ExpertPlus",events:1406,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:86,warns:112,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f745bac45c618fa2c49a0ee0c383f2a6cb356a78.zip",coverURL:"https://cdn.beatsaver.com/f745bac45c618fa2c49a0ee0c383f2a6cb356a78.jpg",previewURL:"https://cdn.beatsaver.com/f745bac45c618fa2c49a0ee0c383f2a6cb356a78.mp3"}],createdAt:"2018-10-08T23:44:34Z",updatedAt:"2018-10-08T23:44:34Z",lastPublishedAt:"2018-10-08T23:44:34Z"},{id:"849a",name:"Darude Sandstorm",description:"du du du du du\nI originally mapped this back in May 2018, and then again in June 2018. The Beatsaver site migration yeeted the map, so I've restored the two original maps as well as 5 new standard difficulties, 5 one saber difficulties, and one 360 level. Fun Fact: Freeek originally got the idea to create Lightmap because he hated the lighting in the original Sandstorm map...so I created a new version of Lightmap and used that to light the new difficulties.\n\nStandard\nEasy - 307 notes (1.37 NPS)\nNormal - 505 notes (2.25 NPS)\nHard - 756 notes (3.38 NPS)\nExpert - 1120 notes (5.00 NPS)\nExpert+ - 1358 notes (6.06 NPS)\n\nOne Saber\nEasy - 192 notes (0.86 NPS)\nNormal - 302 notes (1.35 NPS)\nHard - 508 notes (2.27 NPS)\nExpert - 734 notes (3.28 NPS)\nExpert+ - 1112 notes (4.96 NPS)\n\nNo Arrows\nOriginal Expert - 1151 notes (5.14 NPS)\nOriginal Expert+ - 1141 notes (5.09 NPS)\n\n360\nExpert+ - 1359 notes (6.07 NPS)\n\nGameplay: Coming Soon\nSong: https://youtu.be/y6120QOlsfU",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:136,duration:224,songName:"Sandstorm",songSubName:"",songAuthorName:"Darude",levelAuthorName:"Skyler Wallace"},stats:{plays:0,downloads:29265,upvotes:10584,downvotes:337,score:.9406},uploaded:"2020-02-06T04:55:40.715Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"580eb7d1614a35d192722f748400c9896ac9527d",key:"849a",state:"Published",createdAt:"2020-02-06T04:55:40.715Z",sageScore:6,diffs:[{njs:10,offset:-1,notes:307,bombs:0,obstacles:15,nps:1.407,length:496,characteristic:"Standard",difficulty:"Easy",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:154,warns:44,resets:0},stars:.89},{njs:10,offset:-1,notes:505,bombs:0,obstacles:15,nps:2.314,length:496,characteristic:"Standard",difficulty:"Normal",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:143,warns:46,resets:0},stars:1.42},{njs:12,offset:.5,notes:756,bombs:0,obstacles:27,nps:3.464,length:496,characteristic:"Standard",difficulty:"Hard",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:26,warns:18,resets:0},stars:2.01},{njs:15,offset:0,notes:1120,bombs:0,obstacles:43,nps:5.133,length:496,characteristic:"Standard",difficulty:"Expert",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:12,warns:6,resets:0},stars:4.2},{njs:17,offset:-.25,notes:1358,bombs:18,obstacles:23,nps:6.223,length:496,characteristic:"Standard",difficulty:"ExpertPlus",events:13969,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:4,warns:6,resets:0},stars:5.95},{njs:10,offset:-1,notes:192,bombs:0,obstacles:13,nps:.88,length:496,characteristic:"OneSaber",difficulty:"Easy",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:88,warns:26,resets:0}},{njs:10,offset:-1,notes:302,bombs:0,obstacles:15,nps:1.384,length:496,characteristic:"OneSaber",difficulty:"Normal",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:65,warns:74,resets:0}},{njs:12,offset:.5,notes:508,bombs:0,obstacles:15,nps:2.328,length:496,characteristic:"OneSaber",difficulty:"Hard",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:53,warns:64,resets:0}},{njs:15,offset:0,notes:734,bombs:0,obstacles:24,nps:3.364,length:496,characteristic:"OneSaber",difficulty:"Expert",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:4,warns:5,resets:0}},{njs:17,offset:-.25,notes:1112,bombs:0,obstacles:41,nps:5.096,length:496,characteristic:"OneSaber",difficulty:"ExpertPlus",events:13998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:5,warns:9,resets:0}},{njs:12,offset:.5,notes:1151,bombs:0,obstacles:19,nps:4.089,length:639.75,characteristic:"NoArrows",difficulty:"Expert",events:1080,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:282.243,paritySummary:{errors:87,warns:41,resets:0}},{njs:15,offset:0,notes:1141,bombs:0,obstacles:31,nps:4.054,length:639.75,characteristic:"NoArrows",difficulty:"ExpertPlus",events:2315,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:282.243,paritySummary:{errors:129,warns:34,resets:0}},{njs:17,offset:0,notes:1359,bombs:0,obstacles:27,nps:6.228,length:496,characteristic:"360Degree",difficulty:"ExpertPlus",events:14547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.824,paritySummary:{errors:4,warns:6,resets:0}}],downloadURL:"https://cdn.beatsaver.com/580eb7d1614a35d192722f748400c9896ac9527d.zip",coverURL:"https://cdn.beatsaver.com/580eb7d1614a35d192722f748400c9896ac9527d.jpg",previewURL:"https://cdn.beatsaver.com/580eb7d1614a35d192722f748400c9896ac9527d.mp3"}],createdAt:"2020-02-06T04:55:40.715Z",updatedAt:"2020-02-06T04:55:40.715Z",lastPublishedAt:"2020-02-06T04:55:40.715Z"},{id:"4858",name:"Papercut - Linkin Park",description:"YouTube:\r\nhttps://www.youtube.com/watch?v=vjVkXlxsO8Q",uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:150,duration:187,songName:"Papercut",songSubName:"Linkin Park",songAuthorName:"Heisenberg",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:9559,upvotes:4539,downvotes:101,score:.9406},uploaded:"2019-04-25T17:52:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"431ffaa53a1e45ffab6c81a895e456f6aad1e038",key:"4858",state:"Published",createdAt:"2019-04-25T17:52:09Z",sageScore:6,diffs:[{njs:12,offset:0,notes:634,bombs:0,obstacles:96,nps:3.534,length:449,characteristic:"Standard",difficulty:"Hard",events:2316,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.6,paritySummary:{errors:40,warns:45,resets:0}},{njs:15,offset:0,notes:842,bombs:0,obstacles:90,nps:4.694,length:449,characteristic:"Standard",difficulty:"Expert",events:2316,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.6,paritySummary:{errors:16,warns:22,resets:0}},{njs:18,offset:0,notes:993,bombs:0,obstacles:66,nps:5.535,length:449,characteristic:"Standard",difficulty:"ExpertPlus",events:2327,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.6,paritySummary:{errors:31,warns:63,resets:0}}],downloadURL:"https://cdn.beatsaver.com/431ffaa53a1e45ffab6c81a895e456f6aad1e038.zip",coverURL:"https://cdn.beatsaver.com/431ffaa53a1e45ffab6c81a895e456f6aad1e038.jpg",previewURL:"https://cdn.beatsaver.com/431ffaa53a1e45ffab6c81a895e456f6aad1e038.mp3"}],createdAt:"2019-04-25T17:52:09Z",updatedAt:"2019-04-25T17:52:09Z",lastPublishedAt:"2019-04-25T17:52:09Z"},{id:"5d8d",name:"New Game - Nitro Fun",description:"Dancey E+, not very challenging.\n\nSee it in action: https://www.youtube.com/watch?v=IddrPmb4poA\n\nThank you to my playtesters:\n\nQTpop (https://www.twitch.tv/qtpop)\nTheRainbowGamerGirl (https://www.twitch.tv/therainbowgamergirl)",uploader:{id:38202,name:"fafurion",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f945",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f945?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:261,songName:"New Game",songSubName:"",songAuthorName:"Nitro Fun",levelAuthorName:"Fafurion"},stats:{plays:0,downloads:4880,upvotes:2873,downvotes:46,score:.9404},uploaded:"2019-08-17T15:26:08.685Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"310694f2ff8d129d4e64192251653caffdc65b62",key:"5d8d",state:"Published",createdAt:"2019-08-17T15:26:08.685Z",sageScore:5,diffs:[{njs:16,offset:0,notes:1229,bombs:0,obstacles:37,nps:4.824,length:543.5,characteristic:"Standard",difficulty:"ExpertPlus",events:7711,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:254.766,paritySummary:{errors:45,warns:81,resets:0}}],downloadURL:"https://cdn.beatsaver.com/310694f2ff8d129d4e64192251653caffdc65b62.zip",coverURL:"https://cdn.beatsaver.com/310694f2ff8d129d4e64192251653caffdc65b62.jpg",previewURL:"https://cdn.beatsaver.com/310694f2ff8d129d4e64192251653caffdc65b62.mp3"}],createdAt:"2019-08-17T15:26:08.685Z",updatedAt:"2019-08-17T15:26:08.685Z",lastPublishedAt:"2019-08-17T15:26:08.685Z"},{id:"2b1a",name:"Fallen Kingdom [Viva la Vida Minecraft Parody] - CaptainSparklez ft. TryHardNinja",description:"As requested by @ScrewBedtime and @Anonymous_Food: Fallen Kingdom, CaptainSparklez's minecraft parody of Viva la Vida. The parody's song arrangement is slightly different than the original so I had to remap some parts. This map goes out to all the 12 year olds that will listen to this instead of the original all because it has Minecraft lol. For the full experience play this with a minecraft saber and platform.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:138,duration:255,songName:"Fallen Kingdom",songSubName:"CaptainSparklez ft. TryHardNinja",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:8390,upvotes:4332,downvotes:95,score:.9403},uploaded:"2019-01-05T10:20:33Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"06150c7c34af95f53f5ed8fac5659c70649a07f0",key:"2b1a",state:"Published",createdAt:"2019-01-05T10:20:33Z",sageScore:4,diffs:[{njs:14,offset:0,notes:925,bombs:0,obstacles:43,nps:4.037,length:527,characteristic:"Standard",difficulty:"Hard",events:727,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.13,paritySummary:{errors:40,warns:37,resets:0}}],downloadURL:"https://cdn.beatsaver.com/06150c7c34af95f53f5ed8fac5659c70649a07f0.zip",coverURL:"https://cdn.beatsaver.com/06150c7c34af95f53f5ed8fac5659c70649a07f0.jpg",previewURL:"https://cdn.beatsaver.com/06150c7c34af95f53f5ed8fac5659c70649a07f0.mp3"}],createdAt:"2019-01-05T10:20:33Z",updatedAt:"2019-01-05T10:20:33Z",lastPublishedAt:"2019-01-05T10:20:33Z"},{id:"4adb",name:"Deja Vu - Dave Rodgers (Initial D)",description:"Was requested to get this Ranked, so some minor changes to fit updates in Ranking criteria!\r\n\r\nNotes Per Second:\r\nEasy / 1.6\r\nNormal / 2\r\nHard / 2.6\r\nExpert / 3.6\r\nExpert+ / 4.2\r\n\r\nExpert+ Playthrough:\r\nhttps://streamable.com/pk918",uploader:{id:11373,name:"redmagi",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e9d2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9d2?d=retro",type:"SIMPLE"},metadata:{bpm:154,duration:105,songName:"Deja Vu (Short Ver.)",songSubName:"Dave Rodgers",songAuthorName:"Redmagi",levelAuthorName:"redmagi"},stats:{plays:0,downloads:24353,upvotes:10971,downvotes:358,score:.9402},uploaded:"2019-05-05T18:37:01Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"c9c15d3f3109a8f732b41b299ce84556bebf73ac",key:"4adb",state:"Published",createdAt:"2019-05-05T18:37:01Z",sageScore:8,diffs:[{njs:10,offset:1,notes:171,bombs:0,obstacles:11,nps:1.669,length:263,characteristic:"Standard",difficulty:"Easy",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:9,warns:6,resets:0},stars:.95},{njs:12,offset:1,notes:211,bombs:45,obstacles:8,nps:2.059,length:263,characteristic:"Standard",difficulty:"Normal",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:27,warns:26,resets:2},stars:1.29},{njs:14,offset:1,notes:281,bombs:56,obstacles:8,nps:2.742,length:263,characteristic:"Standard",difficulty:"Hard",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:18,warns:28,resets:6},stars:1.92},{njs:15,offset:1,notes:382,bombs:24,obstacles:0,nps:3.728,length:263,characteristic:"Standard",difficulty:"Expert",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:19,warns:36,resets:4},stars:2.68},{njs:18,offset:0,notes:446,bombs:32,obstacles:0,nps:4.353,length:263,characteristic:"Standard",difficulty:"ExpertPlus",events:1439,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:102.468,paritySummary:{errors:19,warns:56,resets:0},stars:4.46}],downloadURL:"https://cdn.beatsaver.com/c9c15d3f3109a8f732b41b299ce84556bebf73ac.zip",coverURL:"https://cdn.beatsaver.com/c9c15d3f3109a8f732b41b299ce84556bebf73ac.jpg",previewURL:"https://cdn.beatsaver.com/c9c15d3f3109a8f732b41b299ce84556bebf73ac.mp3"}],createdAt:"2019-05-05T18:37:01Z",updatedAt:"2019-05-05T18:37:01Z",lastPublishedAt:"2019-05-05T18:37:01Z"},{id:"4a47",name:"[Anniversary] Supernova - Laszlo [DownyCat]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:196,songName:"Supernova",songSubName:"Laszlo",songAuthorName:"DownyCat",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:7974,upvotes:4371,downvotes:97,score:.9402},uploaded:"2019-05-03T14:10:59Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"17ad188a8dea7cff81f5f7c6720099a1e395b168",key:"4a47",state:"Published",createdAt:"2019-05-03T14:10:59Z",sageScore:8,diffs:[{njs:12,offset:0,notes:260,bombs:0,obstacles:18,nps:1.387,length:400,characteristic:"Standard",difficulty:"Easy",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:21,warns:17,resets:0}},{njs:12,offset:0,notes:375,bombs:0,obstacles:22,nps:2,length:400,characteristic:"Standard",difficulty:"Normal",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:18,warns:14,resets:0}},{njs:12,offset:0,notes:491,bombs:0,obstacles:22,nps:2.619,length:400,characteristic:"Standard",difficulty:"Hard",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:16,warns:19,resets:0}},{njs:16,offset:0,notes:832,bombs:0,obstacles:22,nps:4.437,length:400,characteristic:"Standard",difficulty:"Expert",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:12,warns:8,resets:0}},{njs:18,offset:0,notes:959,bombs:0,obstacles:22,nps:5.115,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:4926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.5,paritySummary:{errors:18,warns:15,resets:0}}],downloadURL:"https://cdn.beatsaver.com/17ad188a8dea7cff81f5f7c6720099a1e395b168.zip",coverURL:"https://cdn.beatsaver.com/17ad188a8dea7cff81f5f7c6720099a1e395b168.jpg",previewURL:"https://cdn.beatsaver.com/17ad188a8dea7cff81f5f7c6720099a1e395b168.mp3"}],createdAt:"2019-05-03T14:10:59Z",updatedAt:"2019-05-03T14:10:59Z",lastPublishedAt:"2019-05-03T14:10:59Z"},{id:"36d5",name:"TheFatRat - MAYDAY feat. Laura Brehm",description:"reuploaded for ranked\n",uploader:{id:4284400,name:"oddloop",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fd45",avatar:"https://cdn.beatsaver.com/avatar/173241614192476161.png",type:"DISCORD"},metadata:{bpm:150,duration:247,songName:"MAYDAY",songSubName:"TheFatRat & Laura Brehm",songAuthorName:"Oddloop",levelAuthorName:"oddloop"},stats:{plays:0,downloads:12226,upvotes:4840,downvotes:114,score:.9402},uploaded:"2019-02-16T21:37:31Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"6a9042eb11d4da0938bbdaa0f584131def762f4a",key:"36d5",state:"Published",createdAt:"2019-02-16T21:37:31Z",sageScore:6,diffs:[{njs:16,offset:0,notes:887,bombs:0,obstacles:20,nps:3.807,length:582.5,characteristic:"Standard",difficulty:"Expert",events:1307,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:233,paritySummary:{errors:23,warns:24,resets:0},stars:2.85}],downloadURL:"https://cdn.beatsaver.com/6a9042eb11d4da0938bbdaa0f584131def762f4a.zip",coverURL:"https://cdn.beatsaver.com/6a9042eb11d4da0938bbdaa0f584131def762f4a.jpg",previewURL:"https://cdn.beatsaver.com/6a9042eb11d4da0938bbdaa0f584131def762f4a.mp3"}],createdAt:"2019-02-16T21:37:31Z",updatedAt:"2019-02-16T21:37:31Z",lastPublishedAt:"2019-02-16T21:37:31Z"},{id:"49ae",name:"Lindsey Stirling - Shatter Me",description:"Feedback on Discord: nitronik.exe#7974\nNote: if you dont like flashy lights, turn on static lights! (also epilepsy warning lol)\npreview: https://www.youtube.com/watch?v=0JGEh4lPVpA\n\nEasy (lightshow): 0 notes, 0 nps, 0 bombs, 0 walls, njs 10\nNormal: 692 notes, 2.37 nps, 0 bombs, 25 walls, njs 10\nHard: 912 notes, 3.13 nps, 8 bombs, 29 walls, njs 13\nExpert: 1166 notes, 4 nps, 38 bombs, 29 walls, njs 16\nExpertPlus: 1462 Notes, 5.02 nps, 64 bombs, 33 walls, njs 19",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:145,duration:291,songName:"Shatter Me",songSubName:"Lindsey Stirling",songAuthorName:"nitronik.exe",levelAuthorName:"nitronikexe"},stats:{plays:0,downloads:10457,upvotes:5571,downvotes:144,score:.9397},uploaded:"2019-05-01T10:07:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0c02558f26e46d94c33728885a10ea8a4e2a9fd5",key:"49ae",state:"Published",createdAt:"2019-05-01T10:07:45Z",sageScore:8,diffs:[{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:692,bombs:0,obstacles:25,nps:2.57,length:650.667,characteristic:"Standard",difficulty:"Normal",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.241,paritySummary:{errors:0,warns:18,resets:0}},{njs:13,offset:0,notes:912,bombs:8,obstacles:29,nps:3.386,length:651,characteristic:"Standard",difficulty:"Hard",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.379,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1166,bombs:38,obstacles:29,nps:4.305,length:654.5,characteristic:"Standard",difficulty:"Expert",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.828,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:0,notes:1462,bombs:64,obstacles:33,nps:5.427,length:651,characteristic:"Standard",difficulty:"ExpertPlus",events:7862,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.379,paritySummary:{errors:8,warns:4,resets:20}}],downloadURL:"https://cdn.beatsaver.com/0c02558f26e46d94c33728885a10ea8a4e2a9fd5.zip",coverURL:"https://cdn.beatsaver.com/0c02558f26e46d94c33728885a10ea8a4e2a9fd5.jpg",previewURL:"https://cdn.beatsaver.com/0c02558f26e46d94c33728885a10ea8a4e2a9fd5.mp3"}],createdAt:"2019-05-01T10:07:45Z",updatedAt:"2019-05-01T10:07:45Z",lastPublishedAt:"2019-05-01T10:07:45Z"},{id:"45e",name:"CAN'T STOP THE FEELING! - Justin Timberlake",description:"Difficulties: Expert Only Lighting by GreatYazer\r\nWatch Me on Twitch: http://www.twitch.tv/bennydabeastlive\r\n\r\nIf you like this, check out my other beat maps:\r\nMidnight City by M83: https://beatsaver.com/details.php?id=542\r\nKids by MGMT: https://beatsaver.com/details.php?id=421\r\nWhat You Know by Two Door Cinema Club: https://beatsaver.com/details.php?id=1107\r\nPolish Girl by Neon Indian: https://beatsaver.com/details.php?id=694",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:113,duration:238,songName:"CAN'T STOP THE FEELING!",songSubName:"Justin Timberlake",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:18524,upvotes:6933,downvotes:197,score:.9397},uploaded:"2018-06-08T21:44:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"91ba25c089d50e93154e2c7920c46d4730f22569",key:"45e",state:"Published",createdAt:"2018-06-08T21:44:40Z",sageScore:5,diffs:[{njs:10,offset:0,notes:579,bombs:0,obstacles:38,nps:2.507,length:435,characteristic:"Standard",difficulty:"Expert",events:709,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.973,paritySummary:{errors:110,warns:65,resets:0}}],downloadURL:"https://cdn.beatsaver.com/91ba25c089d50e93154e2c7920c46d4730f22569.zip",coverURL:"https://cdn.beatsaver.com/91ba25c089d50e93154e2c7920c46d4730f22569.jpg",previewURL:"https://cdn.beatsaver.com/91ba25c089d50e93154e2c7920c46d4730f22569.mp3"}],createdAt:"2018-06-08T21:44:40Z",updatedAt:"2018-06-08T21:44:40Z",lastPublishedAt:"2018-06-08T21:44:40Z"},{id:"80da",name:"chelmico - Easy Breezy [Keep Your Hands Off Eizouken! Opening]",description:"stan sayaka\n\nAlso please check out chelmico's other songs. I've just recently become addicted to their songs\n\nBPM 186 |\nExpert+\nExpert\nHard\nBreezy (Normal)\nEasy\n\nthanks as always\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:186,duration:109,songName:"Easy Breezy",songSubName:"",songAuthorName:"chelmico",levelAuthorName:"ETAN"},stats:{plays:0,downloads:7380,upvotes:2370,downvotes:33,score:.9396},uploaded:"2020-01-24T11:15:41.867Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"070007ff180423aa0abf3f2ba5584b0846788ee8",key:"80da",state:"Published",createdAt:"2020-01-24T11:15:41.867Z",sageScore:6,diffs:[{njs:10,offset:.5,notes:117,bombs:8,obstacles:11,nps:1.242,length:292,characteristic:"Standard",difficulty:"Easy",events:4738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:94.194,paritySummary:{errors:7,warns:7,resets:2}},{njs:12,offset:0,notes:181,bombs:17,obstacles:11,nps:1.909,length:294,characteristic:"Standard",difficulty:"Normal",events:4738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:94.839,paritySummary:{errors:1,warns:1,resets:2}},{njs:13,offset:0,notes:272,bombs:17,obstacles:11,nps:2.858,length:295,characteristic:"Standard",difficulty:"Hard",events:4738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:95.161,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:1,notes:368,bombs:17,obstacles:11,nps:3.765,length:303,characteristic:"Standard",difficulty:"Expert",events:4738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:97.742,paritySummary:{errors:0,warns:0,resets:2}},{njs:21,offset:0,notes:467,bombs:17,obstacles:11,nps:4.778,length:303,characteristic:"Standard",difficulty:"ExpertPlus",events:4687,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:97.742,paritySummary:{errors:0,warns:0,resets:2}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:4687,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/070007ff180423aa0abf3f2ba5584b0846788ee8.zip",coverURL:"https://cdn.beatsaver.com/070007ff180423aa0abf3f2ba5584b0846788ee8.jpg",previewURL:"https://cdn.beatsaver.com/070007ff180423aa0abf3f2ba5584b0846788ee8.mp3"}],createdAt:"2020-01-24T11:15:41.867Z",updatedAt:"2020-01-24T11:15:41.867Z",lastPublishedAt:"2020-01-24T11:15:41.867Z"},{id:"68f4",name:"Ehrling - Palm Trees",description:"Expert / Hard / Normal\r\nMade for HeyFalcon",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:122,duration:167,songName:"Palm Trees",songSubName:"",songAuthorName:"Ehrling",levelAuthorName:"Rustic"},stats:{plays:0,downloads:3862,upvotes:2336,downvotes:32,score:.9396},uploaded:"2019-10-10T18:18:18.093Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6eef9850cfeb43d14c66323cfbae50d8532c9c43",key:"68f4",state:"Published",createdAt:"2019-10-10T18:18:18.093Z",sageScore:6,diffs:[{njs:12,offset:0,notes:257,bombs:0,obstacles:4876,nps:1.574,length:332,characteristic:"Standard",difficulty:"Normal",events:1638,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:163.279,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:336,bombs:0,obstacles:4876,nps:2.058,length:332,characteristic:"Standard",difficulty:"Hard",events:1638,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:163.279,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:0,notes:337,bombs:0,obstacles:4876,nps:2.064,length:332,characteristic:"Standard",difficulty:"Expert",events:1694,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:163.279,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6eef9850cfeb43d14c66323cfbae50d8532c9c43.zip",coverURL:"https://cdn.beatsaver.com/6eef9850cfeb43d14c66323cfbae50d8532c9c43.jpg",previewURL:"https://cdn.beatsaver.com/6eef9850cfeb43d14c66323cfbae50d8532c9c43.mp3"}],createdAt:"2019-10-10T18:18:18.093Z",updatedAt:"2019-10-10T18:18:18.093Z",lastPublishedAt:"2019-10-10T18:18:18.093Z"},{id:"1311",name:"Restart",description:"Finally!\r\n\r\nAnother map for you all to enjoy!\r\n\r\nThis cheerful song will get anyones spirits up! \r\nAnd with the song being part dancey part flow your gonna wish you played it!\r\n\r\nExpert+ is HyperSpeed mode for those who want to play fast!\r\n\r\nAll lighting was done by me!\r\nI do say that ive got a talent for lighting hmm? ;P",uploader:{id:4289111,name:"blackblazon",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ef34",avatar:"https://cdn.beatsaver.com/avatar/127162370538733568.png",type:"DISCORD"},metadata:{bpm:155,duration:252,songName:"Restart",songSubName:"Subtact",songAuthorName:"BlackBlazon",levelAuthorName:"blackblazon"},stats:{plays:0,downloads:5574,upvotes:2795,downvotes:46,score:.9396},uploaded:"2018-09-02T01:56:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c7a915c5315591f5a0e31f89dbbad4e69992f353",key:"1311",state:"Published",createdAt:"2018-09-02T01:56:36Z",sageScore:5,diffs:[{njs:12,offset:0,notes:1116,bombs:0,obstacles:0,nps:4.512,length:639,characteristic:"Standard",difficulty:"Expert",events:1785,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:247.355,paritySummary:{errors:66,warns:23,resets:0}},{njs:15,offset:0,notes:1116,bombs:0,obstacles:0,nps:4.512,length:639,characteristic:"Standard",difficulty:"ExpertPlus",events:1785,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:247.355,paritySummary:{errors:66,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c7a915c5315591f5a0e31f89dbbad4e69992f353.zip",coverURL:"https://cdn.beatsaver.com/c7a915c5315591f5a0e31f89dbbad4e69992f353.jpg",previewURL:"https://cdn.beatsaver.com/c7a915c5315591f5a0e31f89dbbad4e69992f353.mp3"}],createdAt:"2018-09-02T01:56:36Z",updatedAt:"2018-09-02T01:56:36Z",lastPublishedAt:"2018-09-02T01:56:36Z"},{id:"3fd3",name:"Cowboy Bebop - Tank! (Ben Briggs Remix)",description:"New lights, Expert now E+, an actual Expert added.",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:128,duration:173,songName:"Tank! (Ben Briggs Remix)",songSubName:"Cowboy Bebop",songAuthorName:"Ryger",levelAuthorName:"Ryger"},stats:{plays:0,downloads:10556,upvotes:4579,downvotes:108,score:.9395},uploaded:"2019-03-22T19:27:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8a19fa1812254b7b610e667039af155cee68606a",key:"3fd3",state:"Published",createdAt:"2019-03-22T19:27:47Z",sageScore:6,diffs:[{njs:14,offset:0,notes:703,bombs:0,obstacles:5,nps:4.173,length:359.375,characteristic:"Standard",difficulty:"Expert",events:3940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.457,paritySummary:{errors:41,warns:24,resets:0}},{njs:14,offset:0,notes:780,bombs:0,obstacles:5,nps:4.63,length:359.375,characteristic:"Standard",difficulty:"ExpertPlus",events:3940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.457,paritySummary:{errors:68,warns:46,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8a19fa1812254b7b610e667039af155cee68606a.zip",coverURL:"https://cdn.beatsaver.com/8a19fa1812254b7b610e667039af155cee68606a.jpg",previewURL:"https://cdn.beatsaver.com/8a19fa1812254b7b610e667039af155cee68606a.mp3"}],createdAt:"2019-03-22T19:27:47Z",updatedAt:"2019-03-22T19:27:47Z",lastPublishedAt:"2019-03-22T19:27:47Z"},{id:"6484",name:"Poison - Nightcore",description:"Youtube Preview: https://youtu.be/dzbdbXJWKMQ",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:169,duration:150,songName:"Poison - Nightcore",songSubName:"",songAuthorName:"Groove Coverage",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:6746,upvotes:3401,downvotes:67,score:.9394},uploaded:"2019-09-19T13:15:08.715Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e570d226c15ad3f5c4b84cfffe3542e61facc502",key:"6484",state:"Published",createdAt:"2019-09-19T13:15:08.715Z",sageScore:5,diffs:[{njs:15,offset:0,notes:504,bombs:4,obstacles:24,nps:3.518,length:403.5,characteristic:"Standard",difficulty:"Expert",events:616,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:143.254,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/e570d226c15ad3f5c4b84cfffe3542e61facc502.zip",coverURL:"https://cdn.beatsaver.com/e570d226c15ad3f5c4b84cfffe3542e61facc502.jpg",previewURL:"https://cdn.beatsaver.com/e570d226c15ad3f5c4b84cfffe3542e61facc502.mp3"}],createdAt:"2019-09-19T13:15:08.715Z",updatedAt:"2019-09-19T13:15:08.715Z",lastPublishedAt:"2019-09-19T13:15:08.715Z"},{id:"2c4f",name:"POP/STARS vs MEGALOVANIA - Dj CUTMAN",description:"As requested by @Gravemind1. POP/STARS vs MEGALOVANIA by Dj CUTMAN! I had fun mapping this (especially since it gives me a reason to lightmap the KDA environment!) and I hope you'll have fun playing it too! \r\n\r\nAll credit goes to Dj CUTMAN for the mashup: https://www.youtube.com/watch?v=Wan2REH1x9g",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:185,duration:176,songName:"POP/STARS vs MEGALOVANIA",songSubName:"Dj CUTMAN",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:9567,upvotes:4373,downvotes:101,score:.9394},uploaded:"2019-01-09T15:56:43Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5ede52db98f5cde3a4d54b4f96d7f9b6fe227fe7",key:"2c4f",state:"Published",createdAt:"2019-01-09T15:56:43Z",sageScore:5,diffs:[{njs:15,offset:0,notes:995,bombs:0,obstacles:27,nps:5.821,length:527,characteristic:"Standard",difficulty:"ExpertPlus",events:3164,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.919,paritySummary:{errors:43,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5ede52db98f5cde3a4d54b4f96d7f9b6fe227fe7.zip",coverURL:"https://cdn.beatsaver.com/5ede52db98f5cde3a4d54b4f96d7f9b6fe227fe7.jpg",previewURL:"https://cdn.beatsaver.com/5ede52db98f5cde3a4d54b4f96d7f9b6fe227fe7.mp3"}],createdAt:"2019-01-09T15:56:43Z",updatedAt:"2019-01-09T15:56:43Z",lastPublishedAt:"2019-01-09T15:56:43Z"},{id:"3694",name:"Centipede",description:"A full remake of the original Centipede map!\r\n\r\nEnjoy at your hearts content!\r\n\r\np.s i lied about the hiatus",uploader:{id:4289111,name:"blackblazon",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ef34",avatar:"https://cdn.beatsaver.com/avatar/127162370538733568.png",type:"DISCORD"},metadata:{bpm:140,duration:249,songName:"Centipede",songSubName:"Knife Party",songAuthorName:"BlackBlazon & EpicEwok",levelAuthorName:"blackblazon"},stats:{plays:0,downloads:8169,upvotes:4979,downvotes:125,score:.9391},uploaded:"2019-02-16T00:35:23Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e59f717e08b56c8693b14f42a94832cacd4bbca4",key:"3694",state:"Published",createdAt:"2019-02-16T00:35:23Z",sageScore:5,diffs:[{njs:14,offset:0,notes:1004,bombs:56,obstacles:25,nps:4.371,length:536,characteristic:"Standard",difficulty:"Expert",events:11574,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.714,paritySummary:{errors:22,warns:22,resets:0}},{njs:18,offset:0,notes:1004,bombs:56,obstacles:25,nps:4.371,length:536,characteristic:"Standard",difficulty:"ExpertPlus",events:11574,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.714,paritySummary:{errors:22,warns:22,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e59f717e08b56c8693b14f42a94832cacd4bbca4.zip",coverURL:"https://cdn.beatsaver.com/e59f717e08b56c8693b14f42a94832cacd4bbca4.jpg",previewURL:"https://cdn.beatsaver.com/e59f717e08b56c8693b14f42a94832cacd4bbca4.mp3"}],createdAt:"2019-02-16T00:35:23Z",updatedAt:"2019-02-16T00:35:23Z",lastPublishedAt:"2019-02-16T00:35:23Z"},{id:"1716",name:"Empty Threat - CHVRCHES",description:"Difficulties: Expert+, Expert, Hard, Normal\r\nYouTube Preview: https://youtu.be/5fp_4qs7RvA",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:132,duration:246,songName:"Empty Threat",songSubName:"CHVRCHES",songAuthorName:"Benny",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:7003,upvotes:3875,downvotes:85,score:.939},uploaded:"2018-09-25T02:11:16Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f08cad7d3b663caa6f8c23aa04664273f532f74a",key:"1716",state:"Published",createdAt:"2018-09-25T02:11:16Z",sageScore:4,diffs:[{njs:10,offset:0,notes:405,bombs:0,obstacles:16,nps:1.697,length:527,characteristic:"Standard",difficulty:"Normal",events:1241,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.545,paritySummary:{errors:55,warns:38,resets:0}},{njs:10,offset:0,notes:621,bombs:0,obstacles:24,nps:2.6,length:527.5,characteristic:"Standard",difficulty:"Hard",events:1241,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.773,paritySummary:{errors:70,warns:69,resets:0}},{njs:10,offset:0,notes:930,bombs:0,obstacles:24,nps:3.893,length:527.5,characteristic:"Standard",difficulty:"Expert",events:1241,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.773,paritySummary:{errors:97,warns:109,resets:0}},{njs:11,offset:0,notes:1255,bombs:0,obstacles:22,nps:5.251,length:527.75,characteristic:"Standard",difficulty:"ExpertPlus",events:1241,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.886,paritySummary:{errors:116,warns:208,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f08cad7d3b663caa6f8c23aa04664273f532f74a.zip",coverURL:"https://cdn.beatsaver.com/f08cad7d3b663caa6f8c23aa04664273f532f74a.jpg",previewURL:"https://cdn.beatsaver.com/f08cad7d3b663caa6f8c23aa04664273f532f74a.mp3"}],createdAt:"2018-09-25T02:11:16Z",updatedAt:"2018-09-25T02:11:16Z",lastPublishedAt:"2018-09-25T02:11:16Z"},{id:"9d7",name:"Back in Black - AC/DC",description:"CAUSE I'M BACK IN BLAAAAAAACK! All difficulties, full lights.\r\n\r\nWas charted form start to finish on my twitch, come watch me stream other chart creations!!!! https://www.twitch.tv/freeek\r\n\r\nExpert FC Video: https://www.youtube.com/watch?v=ZxLxbSfSEPA",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:95,duration:241,songName:"Back in Black",songSubName:"AC/DC",songAuthorName:"Freeek",levelAuthorName:"freeek"},stats:{plays:0,downloads:20588,upvotes:8804,downvotes:280,score:.939},uploaded:"2018-07-16T11:58:36Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"8af82a87167070a08ec63dba0459c829c2954067",key:"9d7",state:"Published",createdAt:"2018-07-16T11:58:36Z",sageScore:5,diffs:[{njs:10,offset:0,notes:450,bombs:0,obstacles:31,nps:1.947,length:366,characteristic:"Standard",difficulty:"Easy",events:1258,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.158,paritySummary:{errors:19,warns:2,resets:0},stars:.51},{njs:10,offset:0,notes:563,bombs:0,obstacles:47,nps:2.436,length:366,characteristic:"Standard",difficulty:"Normal",events:1258,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.158,paritySummary:{errors:87,warns:21,resets:0},stars:1.12},{njs:10,offset:0,notes:683,bombs:0,obstacles:47,nps:2.955,length:366,characteristic:"Standard",difficulty:"Hard",events:1258,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.158,paritySummary:{errors:81,warns:89,resets:0},stars:1.73},{njs:10,offset:0,notes:824,bombs:0,obstacles:47,nps:3.565,length:366,characteristic:"Standard",difficulty:"Expert",events:1258,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.158,paritySummary:{errors:79,warns:95,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8af82a87167070a08ec63dba0459c829c2954067.zip",coverURL:"https://cdn.beatsaver.com/8af82a87167070a08ec63dba0459c829c2954067.jpg",previewURL:"https://cdn.beatsaver.com/8af82a87167070a08ec63dba0459c829c2954067.mp3"}],createdAt:"2018-07-16T11:58:36Z",updatedAt:"2018-07-16T11:58:36Z",lastPublishedAt:"2018-07-16T11:58:36Z"},{id:"198f3",name:"Spider Dance - Toby Fox (Undertale modchart)",description:"There are countless Undertale maps on Beat Saber, but what if you could actually experience a real boss fight? It's now possible thanks to Noodle Extensions, and I'm proud to present to you the first Undertale modchart: Spider Dance, where you will confront Muffet.\r\n\r\nTips for a better experience:\r\n- Don't use static lights; there shouldn't be any lights\r\n- Hide the HUD in player settings\r\n- Enable \"bloom post-processing\"\r\n- Enable \"screen distortion effects\"\r\n\r\nInstallation instructions:\r\n- You will need Noodle Extensions and Chroma and their dependencies. All are now available on ModAssistant.\r\n- If you read this in a future where the update broke the mods and they haven't been approved on ModAssistant yet, install the basic mods from ModAssistant and get the latest releases of Noodle Extensions, Heck, and Chroma from Aeroluna's GitHub: https://github.com/Aeroluna\r\n\r\nVideo: https://youtu.be/fy8KmUor6fI\r\n\r\nI started this a while ago before Ghost Choir and then abandoned the project. But I finally decided to finish the work, so I hope you'll enjoy it :)\r\nThanks to Reaxt and Cyansnow, who testplayed and made detailed suggestions that helped me improve the quality of this map. I really appreciate it.\r\n\r\nMy social media links (please follow/subscribe): https://linktr.ee/nyri0",uploader:{id:4288814,name:"nyri0",uniqueSet:!0,hash:"5e792df416c9680006086a78",avatar:"https://cdn.beatsaver.com/avatar/396715033125584907.png",type:"DISCORD"},metadata:{bpm:115,duration:114,songName:"Spider Dance",songSubName:"",songAuthorName:"Toby Fox",levelAuthorName:"nyri0"},stats:{plays:0,downloads:15821,upvotes:1257,downvotes:4,score:.9389},uploaded:"2021-06-25T17:47:40.296Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"09246637fa63ac55aa518718fd1eb4b876960480",key:"198f3",state:"Published",createdAt:"2021-06-25T17:47:40.296Z",sageScore:2,diffs:[{njs:16,offset:0,notes:434,bombs:88,obstacles:1153,nps:4.377,length:190.063,characteristic:"Standard",difficulty:"ExpertPlus",events:5,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:99.163,paritySummary:{errors:13,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/09246637fa63ac55aa518718fd1eb4b876960480.zip",coverURL:"https://cdn.beatsaver.com/09246637fa63ac55aa518718fd1eb4b876960480.jpg",previewURL:"https://cdn.beatsaver.com/09246637fa63ac55aa518718fd1eb4b876960480.mp3"}],createdAt:"2021-06-25T17:47:40.296Z",updatedAt:"2021-06-25T17:47:40.296Z",lastPublishedAt:"2021-06-25T17:47:40.296Z"},{id:"860",name:"Wake Me Up When September Ends - Green Day",description:"Expert - Hard - Normal Charts\nCustom Lighting\nhttps://www.youtube.com/watch?v=QPiD-n4W6s0\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:105,duration:271,songName:"Wake Me Up When September Ends",songSubName:"Green Day",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:11787,upvotes:3264,downvotes:64,score:.9389},uploaded:"2018-07-07T14:38:17Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"d0457c1dee4a78f5496c3b282f8b834ec45f75a8",key:"860",state:"Published",createdAt:"2018-07-07T14:38:17Z",sageScore:5,diffs:[{njs:10,offset:0,notes:461,bombs:34,obstacles:97,nps:1.801,length:448,characteristic:"Standard",difficulty:"Normal",events:1579,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256,paritySummary:{errors:59,warns:13,resets:2},stars:.95},{njs:10,offset:0,notes:862,bombs:0,obstacles:85,nps:3.367,length:448,characteristic:"Standard",difficulty:"Hard",events:1579,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256,paritySummary:{errors:52,warns:1,resets:0}},{njs:10,offset:0,notes:1179,bombs:0,obstacles:86,nps:4.605,length:448,characteristic:"Standard",difficulty:"Expert",events:1579,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256,paritySummary:{errors:19,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d0457c1dee4a78f5496c3b282f8b834ec45f75a8.zip",coverURL:"https://cdn.beatsaver.com/d0457c1dee4a78f5496c3b282f8b834ec45f75a8.jpg",previewURL:"https://cdn.beatsaver.com/d0457c1dee4a78f5496c3b282f8b834ec45f75a8.mp3"}],createdAt:"2018-07-07T14:38:17Z",updatedAt:"2018-07-07T14:38:17Z",lastPublishedAt:"2018-07-07T14:38:17Z"},{id:"3fc",name:"The White Stripes - Seven Nation Army",description:"UPDATED! @BlueASIS#4095 on Discord let me know what you think",uploader:{id:52648,name:"blueasis",uniqueSet:!1,hash:"5cff0b7298cc5a672c84eb5d",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84eb5d?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:232,songName:"Seven Nation Army",songSubName:"The White Stripes",songAuthorName:"BlueASIS",levelAuthorName:"blueasis"},stats:{plays:0,downloads:20649,upvotes:14458,downvotes:530,score:.9389},uploaded:"2018-06-06T18:51:03Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0b0ad0f34b2d0687a9794bcf5019100fda06971e",key:"3fc",state:"Published",createdAt:"2018-06-06T18:51:03Z",sageScore:4,diffs:[{njs:10,offset:0,notes:399,bombs:0,obstacles:0,nps:1.817,length:453.875,characteristic:"Standard",difficulty:"Normal",events:812,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.617,paritySummary:{errors:90,warns:6,resets:0}},{njs:10,offset:0,notes:496,bombs:0,obstacles:0,nps:2.258,length:453.875,characteristic:"Standard",difficulty:"Hard",events:812,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.617,paritySummary:{errors:113,warns:12,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0b0ad0f34b2d0687a9794bcf5019100fda06971e.zip",coverURL:"https://cdn.beatsaver.com/0b0ad0f34b2d0687a9794bcf5019100fda06971e.jpg",previewURL:"https://cdn.beatsaver.com/0b0ad0f34b2d0687a9794bcf5019100fda06971e.mp3"}],createdAt:"2018-06-06T18:51:03Z",updatedAt:"2018-06-06T18:51:03Z",lastPublishedAt:"2018-06-06T18:51:03Z"},{id:"5925",name:'Hardware Store - "Weird Al" Yankovic',description:'Hardware Store is a song by "Weird Al" Yankovic. "Hardware Store", which, as the title suggests, is about a new neighborhood hardware store and the things that can be purchased therein. The song was originally supposed to be a style parody of another (unspecified) artist, but it eventually evolved into its own, original composition.\n\nThere\'s a rapid-fire list of 61 products that he sings at the bridge of the song so prepare for that :P',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:126.14,duration:226,songName:"Hardware Store",songSubName:"",songAuthorName:'"Weird Al" Yankovic',levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3028,upvotes:1490,downvotes:10,score:.9388},uploaded:"2019-07-27T16:27:18.223Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2c677458db9ca04a7d0b64f47b443661d0e487d8",key:"5925",state:"Published",createdAt:"2019-07-27T16:27:18.223Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1223,bombs:0,obstacles:24,nps:5.529,length:465.063,characteristic:"Standard",difficulty:"ExpertPlus",events:1571,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.213,paritySummary:{errors:45,warns:36,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2c677458db9ca04a7d0b64f47b443661d0e487d8.zip",coverURL:"https://cdn.beatsaver.com/2c677458db9ca04a7d0b64f47b443661d0e487d8.jpg",previewURL:"https://cdn.beatsaver.com/2c677458db9ca04a7d0b64f47b443661d0e487d8.mp3"}],createdAt:"2019-07-27T16:27:18.223Z",updatedAt:"2019-07-27T16:27:18.223Z",lastPublishedAt:"2019-07-27T16:27:18.223Z"},{id:"3e4",name:"I'll Make A Man Out Of You - Mulan",description:"Expert+/Expert/Hard/Normal all with Lighting Events\r\n114 BMP\r\nSee reddit for video of Expert+ (https://www.reddit.com/r/beatsaber/comments/8owz4t/ill_make_a_man_out_of_you_mulan_expert_video/?ref=share&ref_source=link)",uploader:{id:52670,name:"glacialdrift",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f176",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f176?d=retro",type:"SIMPLE"},metadata:{bpm:114,duration:202,songName:"I'll Make A Man Out Of You",songSubName:"Mulan",songAuthorName:"Glacial Drift",levelAuthorName:"glacialdrift"},stats:{plays:0,downloads:7958,upvotes:4393,downvotes:106,score:.9386},uploaded:"2018-06-06T01:30:06Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d8088b0ab3d9e5b3e62a2daf7cdc8204e0c67256",key:"3e4",state:"Published",createdAt:"2018-06-06T01:30:06Z",sageScore:3,diffs:[{njs:10,offset:0,notes:285,bombs:0,obstacles:2,nps:1.47,length:368.9,characteristic:"Standard",difficulty:"Normal",events:898,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.158,paritySummary:{errors:109,warns:26,resets:0}},{njs:10,offset:0,notes:449,bombs:0,obstacles:2,nps:2.317,length:368.9,characteristic:"Standard",difficulty:"Hard",events:898,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.158,paritySummary:{errors:99,warns:49,resets:0}},{njs:10,offset:0,notes:607,bombs:0,obstacles:2,nps:3.132,length:368.9,characteristic:"Standard",difficulty:"Expert",events:1025,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.158,paritySummary:{errors:91,warns:74,resets:0}},{njs:10,offset:0,notes:712,bombs:0,obstacles:2,nps:3.674,length:368.9,characteristic:"Standard",difficulty:"ExpertPlus",events:1025,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.158,paritySummary:{errors:87,warns:86,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d8088b0ab3d9e5b3e62a2daf7cdc8204e0c67256.zip",coverURL:"https://cdn.beatsaver.com/d8088b0ab3d9e5b3e62a2daf7cdc8204e0c67256.jpg",previewURL:"https://cdn.beatsaver.com/d8088b0ab3d9e5b3e62a2daf7cdc8204e0c67256.mp3"}],createdAt:"2018-06-06T01:30:06Z",updatedAt:"2018-06-06T01:30:06Z",lastPublishedAt:"2018-06-06T01:30:06Z"},{id:"11cf8",name:"Up & Down",description:"I had fun. Liked the song.\nThis map uses Noodle Extensions by the way.\nAlso, please disable any custom note models you might have, and don’t use the BTS environment.\n\nMap video: https://youtu.be/vueyLFN6Azg\n\n-= NOT MY AUDIO =-\n\nOriginal: https://youtu.be/oJa7Kr7_9dw\n\nNotes: 522\nNPS: 3.18\nNJS: 17\nBPM: 138\nBombs: 0\nWalls: 8\nLights: 2,790\nErrors: 5\n\nThanks to:\n@JohnnyDee\n@DefDoof\nfor testing!\n\nThis map does not work for the Quest/Quest 2",uploader:{id:4284638,name:"thegoodboi",uniqueSet:!0,hash:"5cff0b7698cc5a672c85433c",avatar:"https://cdn.beatsaver.com/avatar/515025828736794654.png",type:"DISCORD"},metadata:{bpm:138,duration:164,songName:"Up & Down",songSubName:"",songAuthorName:"Marnik",levelAuthorName:"The Good Boi"},stats:{plays:0,downloads:12995,upvotes:5828,downvotes:162,score:.9385},uploaded:"2020-12-20T21:25:04.106Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2aa85aad10e124eb674d18d49251bc94ee1a4283",key:"11cf8",state:"Published",createdAt:"2020-12-20T21:25:04.106Z",sageScore:7,diffs:[{njs:17,offset:0,notes:535,bombs:0,obstacles:8,nps:3.418,length:360,characteristic:"Standard",difficulty:"ExpertPlus",events:2790,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:156.522,paritySummary:{errors:27,warns:14,resets:0}},{njs:17,offset:0,notes:535,bombs:0,obstacles:8,nps:3.418,length:360,characteristic:"Lawless",difficulty:"ExpertPlus",events:2790,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:156.522,paritySummary:{errors:26,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2aa85aad10e124eb674d18d49251bc94ee1a4283.zip",coverURL:"https://cdn.beatsaver.com/2aa85aad10e124eb674d18d49251bc94ee1a4283.jpg",previewURL:"https://cdn.beatsaver.com/2aa85aad10e124eb674d18d49251bc94ee1a4283.mp3"}],createdAt:"2020-12-20T21:25:04.106Z",updatedAt:"2020-12-20T21:25:04.106Z",lastPublishedAt:"2020-12-20T21:25:04.106Z"},{id:"47f3",name:"TWICE - FANCY",description:"Aggrogahu: Lights, Hard, and Normal.\r\n Here are his awesome maps that you should download: https://beatsaver.com/browse/byuser/5760\r\n\r\nKikae: Expert/Expert+",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:132,duration:218,songName:"FANCY",songSubName:"TWICE",songAuthorName:"KikaeAeon & Aggrogahu",levelAuthorName:"kikaeaeon"},stats:{plays:0,downloads:11038,upvotes:2829,downvotes:52,score:.9381},uploaded:"2019-04-23T09:46:04Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c63d899018f131d3aed03816c5074350aaa700a7",key:"47f3",state:"Published",createdAt:"2019-04-23T09:46:04Z",sageScore:4,diffs:[{njs:9,offset:0,notes:380,bombs:12,obstacles:12,nps:1.802,length:464,characteristic:"Standard",difficulty:"Normal",events:1003,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.909,paritySummary:{errors:41,warns:61,resets:18}},{njs:10,offset:0,notes:587,bombs:6,obstacles:14,nps:2.777,length:465,characteristic:"Standard",difficulty:"Hard",events:972,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.364,paritySummary:{errors:54,warns:54,resets:3}},{njs:12,offset:0,notes:817,bombs:0,obstacles:5,nps:3.865,length:465,characteristic:"Standard",difficulty:"Expert",events:1001,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.364,paritySummary:{errors:11,warns:1,resets:0}},{njs:15,offset:0,notes:1048,bombs:0,obstacles:5,nps:4.958,length:465,characteristic:"Standard",difficulty:"ExpertPlus",events:1003,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.364,paritySummary:{errors:12,warns:14,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c63d899018f131d3aed03816c5074350aaa700a7.zip",coverURL:"https://cdn.beatsaver.com/c63d899018f131d3aed03816c5074350aaa700a7.jpg",previewURL:"https://cdn.beatsaver.com/c63d899018f131d3aed03816c5074350aaa700a7.mp3"}],createdAt:"2019-04-23T09:46:04Z",updatedAt:"2019-04-23T09:46:04Z",lastPublishedAt:"2019-04-23T09:46:04Z"},{id:"1421c",name:"Look At The Sky - Porter Robinson",description:"MAKE SURE TO HAVE BLOOM POST PROCESS ON AND SCREEN DISTORTION EFFECTS ON!!!!\n\n\nThis was super fun to work on! And its finally out! Please enjoy!\nPlease make sure to have noodle extensions and chroma,\nSpecial thanks to MakeUMove, and Dack!\n\nIf you cant play it, heres the video! https://youtu.be/VWSubdP0WcQ",uploader:{id:4235136,name:"reaxt",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ab",avatar:"https://cdn.beatsaver.com/avatar/163052863038291970.png",type:"DISCORD"},metadata:{bpm:115,duration:164,songName:"look at the sky",songSubName:"",songAuthorName:"porter robinson",levelAuthorName:"Reaxt & CyanSnow"},stats:{plays:0,downloads:5472,upvotes:1623,downvotes:15,score:.938},uploaded:"2021-02-16T19:10:35.911Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"825dbd980eadceaba54c8e9d8e68f93a1b4cb029",key:"1421c",state:"Published",createdAt:"2021-02-16T19:10:35.911Z",sageScore:2,diffs:[{njs:14,offset:0,notes:505,bombs:0,obstacles:5343,nps:3.552,length:272.5,characteristic:"Lawless",difficulty:"ExpertPlus",events:1247,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:142.174,paritySummary:{errors:2,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/825dbd980eadceaba54c8e9d8e68f93a1b4cb029.zip",coverURL:"https://cdn.beatsaver.com/825dbd980eadceaba54c8e9d8e68f93a1b4cb029.jpg",previewURL:"https://cdn.beatsaver.com/825dbd980eadceaba54c8e9d8e68f93a1b4cb029.mp3"}],createdAt:"2021-02-16T19:10:35.911Z",updatedAt:"2021-02-16T19:10:35.911Z",lastPublishedAt:"2021-02-16T19:10:35.911Z"},{id:"2da4",name:"Ghosts n Stuff (feat. Rob Swire) - deadmau5",description:"128 BPM / 3:17 Runtime\r\nEasy / 208 Notes\r\nNormal / 345 Notes\r\nHard / 458 Notes\r\nExpert / 595 Notes\r\n\r\nThis one comes with custom colors similar to the KDA Popstars OST track.\r\n\r\nGameplay:\r\nhttps://youtu.be/vxqyTGuO910",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:128,duration:197,songName:"Ghosts n Stuff (feat. Rob Swire)",songSubName:"deadmau5",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:13432,upvotes:6655,downvotes:199,score:.938},uploaded:"2019-01-14T13:48:11Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"712ee0801ae2e65e4cd7ea5377bcf272981b57c6",key:"2da4",state:"Published",createdAt:"2019-01-14T13:48:11Z",sageScore:6,diffs:[{njs:10,offset:1,notes:208,bombs:0,obstacles:16,nps:1.072,length:414,characteristic:"Standard",difficulty:"Easy",events:1827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.063,paritySummary:{errors:46,warns:21,resets:0}},{njs:10,offset:1,notes:345,bombs:0,obstacles:19,nps:1.773,length:415,characteristic:"Standard",difficulty:"Normal",events:1827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.531,paritySummary:{errors:37,warns:12,resets:0}},{njs:12,offset:1,notes:458,bombs:0,obstacles:15,nps:2.352,length:415.5,characteristic:"Standard",difficulty:"Hard",events:1827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.766,paritySummary:{errors:32,warns:19,resets:0}},{njs:14,offset:0,notes:595,bombs:22,obstacles:29,nps:3.055,length:415.5,characteristic:"Standard",difficulty:"Expert",events:1827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.766,paritySummary:{errors:41,warns:34,resets:1}}],downloadURL:"https://cdn.beatsaver.com/712ee0801ae2e65e4cd7ea5377bcf272981b57c6.zip",coverURL:"https://cdn.beatsaver.com/712ee0801ae2e65e4cd7ea5377bcf272981b57c6.jpg",previewURL:"https://cdn.beatsaver.com/712ee0801ae2e65e4cd7ea5377bcf272981b57c6.mp3"}],createdAt:"2019-01-14T13:48:11Z",updatedAt:"2019-01-14T13:48:11Z",lastPublishedAt:"2019-01-14T13:48:11Z"},{id:"49fc",name:"You Give Love A Bad Name - Bon Jovi",description:"Another classic from Bon Jovi :D This one has more beats than it’s my life so it's slightly harder too. Thus the expert difficulty, but it's still on the easy side of expert. Also Gotta love 80s songs lol, no computer mastering means BPM was inconsistent and there are over 20 bpm changes lol",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:123,duration:220,songName:"You Give Love A Bad Name",songSubName:"Bon Jovi",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:8360,upvotes:2027,downvotes:27,score:.9379},uploaded:"2019-05-02T18:03:13Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9465922b3962dca2b4c6d3b312fe61bec255c1e4",key:"49fc",state:"Published",createdAt:"2019-05-02T18:03:13Z",sageScore:6,diffs:[{njs:13,offset:0,notes:731,bombs:2,obstacles:3,nps:3.551,length:422,characteristic:"Standard",difficulty:"Expert",events:2246,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.854,paritySummary:{errors:28,warns:38,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9465922b3962dca2b4c6d3b312fe61bec255c1e4.zip",coverURL:"https://cdn.beatsaver.com/9465922b3962dca2b4c6d3b312fe61bec255c1e4.jpg",previewURL:"https://cdn.beatsaver.com/9465922b3962dca2b4c6d3b312fe61bec255c1e4.mp3"}],createdAt:"2019-05-02T18:03:13Z",updatedAt:"2019-05-02T18:03:13Z",lastPublishedAt:"2019-05-02T18:03:13Z"},{id:"b514",name:"[[Wall Show + Chroma]] GAS GAS GAS | Manuel",description:"This wall map is a bit more intense than my others, you will need a very hefty pc to run and record this. Have Fun!\n\nHere's a playthrough: https://www.youtube.com/watch?v=hlS6r-Usnro\nHere's a playthrough by Nico (HQ Version): https://youtu.be/F_3qRxDdQc0\n\nREQUIREMENTS: \n -Noodle Extensions\n -Chroma/ChromaLite\n(fixed formatting + removed stupid metadata ;)",uploader:{id:73008,name:"thelightdesigner",uniqueSet:!0,hash:"5cff0b7798cc5a672c85627a",avatar:"https://cdn.beatsaver.com/avatar/480555157952659489.png",type:"DISCORD"},metadata:{bpm:154,duration:108,songName:"GAS GAS GAS",songSubName:"(Short Ver.)",songAuthorName:"Manuel",levelAuthorName:"KyleT"},stats:{plays:0,downloads:9291,upvotes:2453,downvotes:41,score:.9377},uploaded:"2020-06-22T20:02:06.271Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"95e11f39b2898a38e3b5e61d2156ef5f5835f40f",key:"b514",state:"Published",createdAt:"2020-06-22T20:02:06.271Z",sageScore:3,diffs:[{njs:16.5,offset:0,notes:390,bombs:13,obstacles:13898,nps:3.832,length:261.25,characteristic:"Standard",difficulty:"Expert",events:1462,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:101.786,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/95e11f39b2898a38e3b5e61d2156ef5f5835f40f.zip",coverURL:"https://cdn.beatsaver.com/95e11f39b2898a38e3b5e61d2156ef5f5835f40f.jpg",previewURL:"https://cdn.beatsaver.com/95e11f39b2898a38e3b5e61d2156ef5f5835f40f.mp3"}],createdAt:"2020-06-22T20:02:06.271Z",updatedAt:"2020-06-22T20:02:06.271Z",lastPublishedAt:"2020-06-22T20:02:06.271Z"},{id:"774e",name:"Sad Machine - Porter Robinson",description:"77",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:89,duration:257,songName:"Sad Machine",songSubName:"",songAuthorName:"Porter Robinson",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:7096,upvotes:2724,downvotes:50,score:.9377},uploaded:"2019-12-18T21:56:31.549Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7f6ab5de98ac1970e734ea6e26a539fa11cc4f66",key:"774e",state:"Published",createdAt:"2019-12-18T21:56:31.549Z",sageScore:4,diffs:[{njs:10,offset:-.4,notes:647,bombs:0,obstacles:237,nps:2.583,length:369.5,characteristic:"Standard",difficulty:"Hard",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.101,paritySummary:{errors:1,warns:2,resets:0}},{njs:12,offset:-.6,notes:1025,bombs:0,obstacles:237,nps:4.092,length:369.5,characteristic:"Standard",difficulty:"Expert",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.101,paritySummary:{errors:22,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7f6ab5de98ac1970e734ea6e26a539fa11cc4f66.zip",coverURL:"https://cdn.beatsaver.com/7f6ab5de98ac1970e734ea6e26a539fa11cc4f66.jpg",previewURL:"https://cdn.beatsaver.com/7f6ab5de98ac1970e734ea6e26a539fa11cc4f66.mp3"}],createdAt:"2019-12-18T21:56:31.549Z",updatedAt:"2019-12-18T21:56:31.549Z",lastPublishedAt:"2019-12-18T21:56:31.549Z"},{id:"1fe5",name:"I Just Can't Wait To Be King - Lion King OST - 100k Contest",description:'Unleash your inner beast with the song "I Just Can\'t Wait to be King" from the official Lion King Soundtrack! This map has difficulties from Easy to Expert, for everyone to enjoy! \r\nThis is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!\r\n\r\nPreview: https://youtu.be/YDAkqZR9Hs0',uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:99,duration:168,songName:"I Just Can't Wait To Be King",songSubName:"Rowan Atkinson, Jason Weaver, Laura Williams",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:11682,upvotes:3499,downvotes:77,score:.9377},uploaded:"2018-11-12T16:50:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1a3237630cd17aaa2af3f728621dcfdcce38edf1",key:"1fe5",state:"Published",createdAt:"2018-11-12T16:50:07Z",sageScore:5,diffs:[{njs:11,offset:0,notes:144,bombs:0,obstacles:16,nps:.91,length:261,characteristic:"Standard",difficulty:"Easy",events:466,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.182,paritySummary:{errors:44,warns:9,resets:0}},{njs:11,offset:0,notes:309,bombs:0,obstacles:16,nps:1.953,length:261,characteristic:"Standard",difficulty:"Normal",events:466,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.182,paritySummary:{errors:33,warns:18,resets:0}},{njs:11,offset:0,notes:452,bombs:0,obstacles:20,nps:2.857,length:261,characteristic:"Standard",difficulty:"Hard",events:466,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.182,paritySummary:{errors:46,warns:56,resets:0}},{njs:11,offset:0,notes:512,bombs:0,obstacles:20,nps:3.237,length:261,characteristic:"Standard",difficulty:"Expert",events:466,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.182,paritySummary:{errors:52,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1a3237630cd17aaa2af3f728621dcfdcce38edf1.zip",coverURL:"https://cdn.beatsaver.com/1a3237630cd17aaa2af3f728621dcfdcce38edf1.jpg",previewURL:"https://cdn.beatsaver.com/1a3237630cd17aaa2af3f728621dcfdcce38edf1.mp3"}],createdAt:"2018-11-12T16:50:07Z",updatedAt:"2018-11-12T16:50:07Z",lastPublishedAt:"2018-11-12T16:50:07Z"},{id:"ae0e",name:"Alan Walker - Spectre",description:'"Spectre", Alan Walker\'s second most popular NoCopyrightSounds track.\r\nThis is a remap of my very first map. Since a lot of people still like this track and want a proper map of it in Beat Saber, I decided to remap this track following the latest mapping standards. \r\n\r\nEasy : NPS 1.23 | NJS 10\r\nNormal : NPS 2.00 | NJS 10\r\nHard : NPS 3.28 | NJS 13\r\nExpert : NPS 4.44 | NJS 16\r\nExpert+ : NPS 5.41 | NJS 19\r\n\r\nShowcase:\r\nhttps://www.youtube.com/watch?v=Xq7_-0HPThA\r\n\r\nShout out to the following play-testers who play-tested my map:\r\n*lapras\r\n*officialMECH\r\n*Escapee\r\n\r\nFeel free to make your own map for this track.\r\n\r\nOriginal map: https://beatsaver.com/beatmap/155a\r\n\r\nIf you enjoy my work and wish to donate, the option is here :)\r\nPaypal: https://www.paypal.me/WeldonWen',uploader:{id:4286890,name:"weldonwen",uniqueSet:!0,hash:"5cff0b7498cc5a672c850433",avatar:"https://cdn.beatsaver.com/avatar/571472512924254229.png",type:"DISCORD"},metadata:{bpm:128,duration:231,songName:"Spectre ",songSubName:"",songAuthorName:"Alan Walker",levelAuthorName:"WeldonWen"},stats:{plays:0,downloads:11498,upvotes:2715,downvotes:50,score:.9376},uploaded:"2020-06-03T23:05:28.787Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3c6f02ecbef50e2019d5938871a8f3fcdb7b07a2",key:"ae0e",state:"Published",createdAt:"2020-06-03T23:05:28.787Z",sageScore:7,diffs:[{njs:10,offset:1.04,notes:285,bombs:44,obstacles:40,nps:1.315,length:462.5,characteristic:"Standard",difficulty:"Easy",events:3884,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.797,paritySummary:{errors:81,warns:36,resets:0}},{njs:10,offset:.99,notes:464,bombs:51,obstacles:58,nps:2.136,length:463.5,characteristic:"Standard",difficulty:"Normal",events:3884,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.266,paritySummary:{errors:70,warns:10,resets:0}},{njs:13,offset:.259,notes:760,bombs:56,obstacles:42,nps:3.498,length:463.5,characteristic:"Standard",difficulty:"Hard",events:3883,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.266,paritySummary:{errors:2,warns:6,resets:0}},{njs:16,offset:-.2,notes:1029,bombs:45,obstacles:55,nps:4.736,length:463.5,characteristic:"Standard",difficulty:"Expert",events:3885,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.266,paritySummary:{errors:2,warns:0,resets:2}},{njs:19,offset:-.5,notes:1255,bombs:21,obstacles:46,nps:5.776,length:463.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3963,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.266,paritySummary:{errors:1,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/3c6f02ecbef50e2019d5938871a8f3fcdb7b07a2.zip",coverURL:"https://cdn.beatsaver.com/3c6f02ecbef50e2019d5938871a8f3fcdb7b07a2.jpg",previewURL:"https://cdn.beatsaver.com/3c6f02ecbef50e2019d5938871a8f3fcdb7b07a2.mp3"}],createdAt:"2020-06-03T23:05:28.787Z",updatedAt:"2020-06-03T23:05:28.787Z",lastPublishedAt:"2020-06-03T23:05:28.787Z"},{id:"7c05",name:"[Bloq Busters Vol. 2] The Sirens - Seven Lions & Jason Ross",description:"Part of Bloq Busters Vol 2 - Melodic Dubstep\r\n\r\nThis eerie but beautiful and powerful journey composed by Seven Lions and Jason Ross will take you on a trip!\r\n\r\nFeatures Chroma Lights and all difficulties from Normal to Expert++.",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:145,duration:237,songName:"The Sirens",songSubName:"",songAuthorName:"Seven Lions & Jason Ross",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:7774,upvotes:1475,downvotes:12,score:.9374},uploaded:"2020-01-03T22:46:03.484Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0dadd6ab18e3ca0011459f16366e41ecffa5029e",key:"7c05",state:"Published",createdAt:"2020-01-03T22:46:03.484Z",sageScore:6,diffs:[{njs:10,offset:0,notes:383,bombs:0,obstacles:256,nps:1.78,length:520,characteristic:"Standard",difficulty:"Easy",events:11028,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:73,warns:6,resets:0}},{njs:13,offset:0,notes:624,bombs:32,obstacles:253,nps:2.9,length:520,characteristic:"Standard",difficulty:"Normal",events:11028,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:1,warns:0,resets:0}},{njs:15,offset:0,notes:927,bombs:263,obstacles:259,nps:4.308,length:520,characteristic:"Standard",difficulty:"Hard",events:11028,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:3,warns:0,resets:7}},{njs:17,offset:0,notes:1072,bombs:47,obstacles:256,nps:4.982,length:520,characteristic:"Standard",difficulty:"Expert",events:11028,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:2,warns:0,resets:2}},{njs:19,offset:-.25,notes:1256,bombs:134,obstacles:257,nps:5.837,length:520,characteristic:"Standard",difficulty:"ExpertPlus",events:11097,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.172,paritySummary:{errors:2,warns:2,resets:4}},{njs:19,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:11097,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0dadd6ab18e3ca0011459f16366e41ecffa5029e.zip",coverURL:"https://cdn.beatsaver.com/0dadd6ab18e3ca0011459f16366e41ecffa5029e.jpg",previewURL:"https://cdn.beatsaver.com/0dadd6ab18e3ca0011459f16366e41ecffa5029e.mp3"}],createdAt:"2020-01-03T22:46:03.484Z",updatedAt:"2020-01-03T22:46:03.484Z",lastPublishedAt:"2020-01-03T22:46:03.484Z"},{id:"7b68",name:"First of the Year (Equinox) - Skrillex",description:"First of the Year (Equinox) - Skrillex\n\nThis is my first map of 2020, and a huge throwback to when I first started listening to Skrillex. As well as it being a collaboration between myself, Checkthepan, Haclyon12, and CyanSnow.\n\nThanks to Checkthepan for making the 360 & 90-degree levels, Halcyon12 for the awesome chroma lights and CyanSnow for getting the files release ready. \n\nalso was originally trying to be the first map uploaded for 2020 but beatsaver had a stroke and now it's like the 5th or something\n",uploader:{id:4284904,name:"xscaramouche",uniqueSet:!0,hash:"5cff0b7798cc5a672c8558ed",avatar:"https://cdn.beatsaver.com/avatar/227538798387527680.png",type:"DISCORD"},metadata:{bpm:145,duration:257,songName:"First of the Year",songSubName:"(Equinox)",songAuthorName:"Skrillex",levelAuthorName:"xScaramouche & Checkthepan & Halcyon12"},stats:{plays:0,downloads:18265,upvotes:4286,downvotes:108,score:.9374},uploaded:"2020-01-01T04:28:55.040Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2feafef61cad57ea2d6608eb54c39f139abb48c1",key:"7b68",state:"Published",createdAt:"2020-01-01T04:28:55.040Z",sageScore:7,diffs:[{njs:12,offset:1,notes:387,bombs:0,obstacles:183,nps:1.538,length:608,characteristic:"Standard",difficulty:"Easy",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:183,warns:0,resets:0}},{njs:12,offset:1,notes:476,bombs:0,obstacles:182,nps:1.892,length:607.998,characteristic:"Standard",difficulty:"Normal",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.585,paritySummary:{errors:124,warns:0,resets:0}},{njs:14,offset:.5,notes:658,bombs:9,obstacles:192,nps:2.615,length:608,characteristic:"Standard",difficulty:"Hard",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1017,bombs:9,obstacles:180,nps:4.042,length:608,characteristic:"Standard",difficulty:"Expert",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.35,notes:1359,bombs:39,obstacles:186,nps:5.402,length:608,characteristic:"Standard",difficulty:"ExpertPlus",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:1,warns:0,resets:0}},{njs:17,offset:0,notes:1554,bombs:232,obstacles:45,nps:6.177,length:608,characteristic:"90Degree",difficulty:"ExpertPlus",events:27854,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:21,warns:0,resets:15}},{njs:17,offset:0,notes:1555,bombs:232,obstacles:44,nps:6.181,length:608,characteristic:"360Degree",difficulty:"ExpertPlus",events:27904,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.586,paritySummary:{errors:20,warns:0,resets:15}},{njs:69,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:27335,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2feafef61cad57ea2d6608eb54c39f139abb48c1.zip",coverURL:"https://cdn.beatsaver.com/2feafef61cad57ea2d6608eb54c39f139abb48c1.jpg",previewURL:"https://cdn.beatsaver.com/2feafef61cad57ea2d6608eb54c39f139abb48c1.mp3"}],createdAt:"2020-01-01T04:28:55.040Z",updatedAt:"2020-01-01T04:28:55.040Z",lastPublishedAt:"2020-01-01T04:28:55.040Z"},{id:"480",name:"Earth, Wind & Fire - September",description:"Expert | Hard | Normal\r\n\r\nBPM - 126\r\nDuration - 2:21\r\n\r\nPreview: https://youtu.be/FOob1xit17Y",uploader:{id:45732,name:"calijor",uniqueSet:!1,hash:"5cff0b7298cc5a672c84ebb1",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ebb1?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:142,songName:"September",songSubName:"",songAuthorName:"Earth, Wind & Fire",levelAuthorName:"calijor"},stats:{plays:0,downloads:18722,upvotes:10791,downvotes:385,score:.9374},uploaded:"2018-06-09T18:27:58Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"aa2f7bf0df25cd57dddac159fa7c159f732e0553",key:"480",state:"Published",createdAt:"2018-06-09T18:27:58Z",sageScore:4,diffs:[{njs:10,offset:0,notes:291,bombs:0,obstacles:8,nps:2.171,length:281.469,characteristic:"Standard",difficulty:"Normal",events:832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.033,paritySummary:{errors:61,warns:39,resets:0}},{njs:10,offset:0,notes:367,bombs:0,obstacles:8,nps:2.738,length:281.469,characteristic:"Standard",difficulty:"Hard",events:832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.033,paritySummary:{errors:67,warns:65,resets:0}},{njs:10,offset:0,notes:409,bombs:0,obstacles:8,nps:3.051,length:281.469,characteristic:"Standard",difficulty:"Expert",events:832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.033,paritySummary:{errors:75,warns:73,resets:0}}],downloadURL:"https://cdn.beatsaver.com/aa2f7bf0df25cd57dddac159fa7c159f732e0553.zip",coverURL:"https://cdn.beatsaver.com/aa2f7bf0df25cd57dddac159fa7c159f732e0553.jpg",previewURL:"https://cdn.beatsaver.com/aa2f7bf0df25cd57dddac159fa7c159f732e0553.mp3"}],createdAt:"2018-06-09T18:27:58Z",updatedAt:"2018-06-09T18:27:58Z",lastPublishedAt:"2018-06-09T18:27:58Z"},{id:"1181f",name:"Royal & the Serpent - Overwhelmed",description:"Feeling that finals crunch? Worried about the pandemic? General anxiety with the news, and just feeling overwhelmed? Don't forget to take a step back and take a breath. Maybe by dancing along to this song that perfectly captures all of those feelings! Complete with overwhelming Chroma 2.0 lights! And now the extra details:\n\nBPM: 87\nNPS: Ez - 1.71; N - 2.09; H - 2.75; Ex - 3.19; Ex+ - 4.11\nNotes: Ez - 277; N - 338; H - 444; Ex - 516; Ex+ - 664\nBombs: Ez - 0; N - 0; H - 4; Ex - 4; Ex+ - 4\nWalls: Ez - 136; N - 134; H - 144; Ex - 109; Ex+ - 109\n\nSpecial thanks to qwasyx, Smay, and Cyrix for playtesting!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:87,duration:161,songName:"Overwhelmed",songSubName:"",songAuthorName:"Royal & the Serpent",levelAuthorName:"fruhead"},stats:{plays:0,downloads:8427,upvotes:1704,downvotes:19,score:.9371},uploaded:"2020-11-29T23:09:47.309Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b748894960a346f1568b9f4876643f1358cfa897",key:"1181f",state:"Published",createdAt:"2020-11-29T23:09:47.309Z",sageScore:6,diffs:[{njs:10,offset:0,notes:277,bombs:0,obstacles:136,nps:1.793,length:224,characteristic:"Standard",difficulty:"Easy",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:43,warns:9,resets:0}},{njs:12,offset:-.3,notes:338,bombs:0,obstacles:134,nps:2.188,length:224,characteristic:"Standard",difficulty:"Normal",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:22,warns:11,resets:0}},{njs:14,offset:.4,notes:444,bombs:4,obstacles:144,nps:2.874,length:224,characteristic:"Standard",difficulty:"Hard",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:14,warns:4,resets:4}},{njs:16,offset:.25,notes:516,bombs:4,obstacles:109,nps:3.34,length:224,characteristic:"Standard",difficulty:"Expert",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:0,warns:0,resets:2}},{njs:18,offset:.1,notes:664,bombs:4,obstacles:109,nps:4.298,length:224,characteristic:"Standard",difficulty:"ExpertPlus",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:154.483,paritySummary:{errors:0,warns:0,resets:2}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Expert",events:7200,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b748894960a346f1568b9f4876643f1358cfa897.zip",coverURL:"https://cdn.beatsaver.com/b748894960a346f1568b9f4876643f1358cfa897.jpg",previewURL:"https://cdn.beatsaver.com/b748894960a346f1568b9f4876643f1358cfa897.mp3"}],createdAt:"2020-11-29T23:09:47.309Z",updatedAt:"2020-11-29T23:09:47.309Z",lastPublishedAt:"2020-11-29T23:09:47.309Z"},{id:"3b31",name:"Wolfgang Lohr ft. Maskarade - Hit the Road Jack (Electro Swing)",description:"I realise this is the third time that this song has been made over the last month, so sorry for that. But If your not a fan of my version then please check out the other maps linked below.\r\nThis song happened because someone requested I do an electroswing map. This was not the one they asked for, but his request inspired me to do one of the same genre anyway. I'm happy with the way that expert turned out, but the other difficulties are perhaps a bit rushed on this one. I've left easy out again as the play rates are so low. But If this is a problem for anyone, please give me a message and I'll see about adding one in. Other than that, happy dancing!\r\n\r\nVideo Preview: https://www.youtube.com/watch?v=sg_hCGmoPNg\r\nTime spent mapping: 7:58\r\n\r\nAlternative versions:\r\nFrom SilverScythePC: https://beatsaver.com/browse/detail/12538-13416\r\nFrom Salvay: https://beatsaver.com/browse/detail/12752-13664",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:159,songName:"Hit the Road Jack (Electro Swing)",songSubName:"Wolfgang Lohr and Maskerade",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:7058,upvotes:3315,downvotes:73,score:.937},uploaded:"2019-03-03T13:06:00Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"46afff5698b59795c5e88f0b610b8321fb9b1791",key:"3b31",state:"Published",createdAt:"2019-03-03T13:06:00Z",sageScore:6,diffs:[{njs:10,offset:0,notes:261,bombs:4,obstacles:38,nps:1.702,length:317,characteristic:"Standard",difficulty:"Normal",events:1419,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.387,paritySummary:{errors:21,warns:18,resets:2}},{njs:12,offset:0,notes:473,bombs:7,obstacles:33,nps:3.084,length:317,characteristic:"Standard",difficulty:"Hard",events:1419,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.387,paritySummary:{errors:45,warns:22,resets:1}},{njs:16,offset:0,notes:656,bombs:7,obstacles:32,nps:4.267,length:317.75,characteristic:"Standard",difficulty:"Expert",events:1419,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.75,paritySummary:{errors:42,warns:22,resets:1}}],downloadURL:"https://cdn.beatsaver.com/46afff5698b59795c5e88f0b610b8321fb9b1791.zip",coverURL:"https://cdn.beatsaver.com/46afff5698b59795c5e88f0b610b8321fb9b1791.jpg",previewURL:"https://cdn.beatsaver.com/46afff5698b59795c5e88f0b610b8321fb9b1791.mp3"}],createdAt:"2019-03-03T13:06:00Z",updatedAt:"2019-03-03T13:06:00Z",lastPublishedAt:"2019-03-03T13:06:00Z"},{id:"13e9",name:"dark cat - BUBBLE TEA",description:"--------------------------------\r\ndark cat - BUBBLE TEA (feat. juu & cinders)\r\nTime: 4:01\r\nExpert: 1087 Notes\r\nHard: 969 Notes\r\n--------------------------------\r\nHi guys, I'm a bit busy with school right now\r\nso my upload rate is going to slow down for a while..\r\n ^-^",uploader:{id:4288141,name:"roeek",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f787",avatar:"https://cdn.beatsaver.com/avatar/321652344196694016.png",type:"DISCORD"},metadata:{bpm:160,duration:241,songName:"BUBBLE TEA",songSubName:"dark cat",songAuthorName:"Mapped by roeek",levelAuthorName:"roeek"},stats:{plays:0,downloads:12107,upvotes:8979,downvotes:310,score:.9368},uploaded:"2018-09-06T18:59:42Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"f83edec86d3faf683711ecb0a9df6bd65d2d0ce0",key:"13e9",state:"Published",createdAt:"2018-09-06T18:59:42Z",sageScore:6,diffs:[{njs:12,offset:0,notes:969,bombs:0,obstacles:12,nps:4.303,length:600.5,characteristic:"Standard",difficulty:"Hard",events:1043,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.188,paritySummary:{errors:26,warns:32,resets:0}},{njs:13,offset:0,notes:1087,bombs:0,obstacles:12,nps:4.827,length:600.5,characteristic:"Standard",difficulty:"Expert",events:1047,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.188,paritySummary:{errors:35,warns:36,resets:0},stars:3.65}],downloadURL:"https://cdn.beatsaver.com/f83edec86d3faf683711ecb0a9df6bd65d2d0ce0.zip",coverURL:"https://cdn.beatsaver.com/f83edec86d3faf683711ecb0a9df6bd65d2d0ce0.jpg",previewURL:"https://cdn.beatsaver.com/f83edec86d3faf683711ecb0a9df6bd65d2d0ce0.mp3"}],createdAt:"2018-09-06T18:59:42Z",updatedAt:"2018-09-06T18:59:42Z",lastPublishedAt:"2018-09-06T18:59:42Z"},{id:"46be",name:"Kill This Love - BLACKPINK",description:"Thanks to n3tman, snaccy, Helen Carnate, PandaCat, and SimplyMarvelous for their help.\n\nAfter a thousand years, BLACKPINK has finally come out with new songs. Hopefully this map will absolve me from what I did with my last BLACKPINK map (though I still snuck in some choreography to this map when it fit).\n\nExpert+ preview: https://youtu.be/7_epIbqHD3U (footage is of pre-release version)\n\nPreview video uses custom blackpink light sabers, which you can find in the kpop beat saber discord here\nhttps://discord.gg/c9uHGYP\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:132,duration:188,songName:"Kill This Love",songSubName:"BLACKPINK",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:15888,upvotes:4507,downvotes:120,score:.9367},uploaded:"2019-04-18T03:00:19Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8255fef3ce60e6a9ca404491b6d6fdfec158581e",key:"46be",state:"Published",createdAt:"2019-04-18T03:00:19Z",sageScore:3,diffs:[{njs:9,offset:0,notes:278,bombs:13,obstacles:15,nps:1.529,length:400,characteristic:"Standard",difficulty:"Normal",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.818,paritySummary:{errors:57,warns:36,resets:6}},{njs:10,offset:0,notes:448,bombs:11,obstacles:18,nps:2.464,length:400,characteristic:"Standard",difficulty:"Hard",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.818,paritySummary:{errors:47,warns:28,resets:6}},{njs:12,offset:0,notes:665,bombs:26,obstacles:19,nps:3.658,length:400,characteristic:"Standard",difficulty:"Expert",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.818,paritySummary:{errors:39,warns:37,resets:3}},{njs:14,offset:0,notes:779,bombs:36,obstacles:19,nps:4.285,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.818,paritySummary:{errors:55,warns:56,resets:7}}],downloadURL:"https://cdn.beatsaver.com/8255fef3ce60e6a9ca404491b6d6fdfec158581e.zip",coverURL:"https://cdn.beatsaver.com/8255fef3ce60e6a9ca404491b6d6fdfec158581e.jpg",previewURL:"https://cdn.beatsaver.com/8255fef3ce60e6a9ca404491b6d6fdfec158581e.mp3"}],createdAt:"2019-04-18T03:00:19Z",updatedAt:"2019-04-18T03:00:19Z",lastPublishedAt:"2019-04-18T03:00:19Z"},{id:"ce0",name:"South Park - Kyle's Mom's a Bitch",description:"Preview:\r\nhttps://www.youtube.com/watch?v=OjHoHbbZYDE\r\n\r\nKyle's mom's a bitch, she's a big fat bitch\r\nShe's the biggest bitch in the whole wide world",uploader:{id:4286278,name:"ruckus",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1d8",avatar:"https://cdn.beatsaver.com/avatar/239082462083284992.png",type:"DISCORD"},metadata:{bpm:156,duration:95,songName:"Kyle's Mom's a Bitch",songSubName:"South Park",songAuthorName:"Ruckus",levelAuthorName:"ruckus"},stats:{plays:0,downloads:6595,upvotes:3276,downvotes:73,score:.9367},uploaded:"2018-07-30T23:36:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7fda5a2459b48226cc7dbaedf9c31f5fd7aff488",key:"ce0",state:"Published",createdAt:"2018-07-30T23:36:18Z",sageScore:4,diffs:[{njs:12,offset:0,notes:474,bombs:0,obstacles:0,nps:5.911,length:208.5,characteristic:"Standard",difficulty:"ExpertPlus",events:655,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:80.192,paritySummary:{errors:42,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7fda5a2459b48226cc7dbaedf9c31f5fd7aff488.zip",coverURL:"https://cdn.beatsaver.com/7fda5a2459b48226cc7dbaedf9c31f5fd7aff488.jpg",previewURL:"https://cdn.beatsaver.com/7fda5a2459b48226cc7dbaedf9c31f5fd7aff488.mp3"}],createdAt:"2018-07-30T23:36:18Z",updatedAt:"2018-07-30T23:36:18Z",lastPublishedAt:"2018-07-30T23:36:18Z"},{id:"a909",name:"[TheFatRat Pack] Time Lapse - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nTime Lapse Stats:\nExpert+ - 782 Notes | 4.29 NPS\nExpert - 615 Notes | 3.37 NPS\n(One Saber) Expert - 496 Notes | 2.72 NPS\nHard - 493 Notes | 2.70 NPS\nNormal - 305 Notes | 1.67 NPS\nEasy - 180 Notes | 0.99 NPS\n\nRoughly 7-8 Hours of work\nGameplay: https://youtu.be/aYwKN3LnEZA\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:127,duration:182,songName:"Time Lapse",songSubName:"",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:8459,upvotes:2334,downvotes:40,score:.9366},uploaded:"2020-05-22T13:28:32.918Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a03cb0a107993be5cded1e91dc31e8a7b048f02a",key:"a909",state:"Published",createdAt:"2020-05-22T13:28:32.918Z",sageScore:6,diffs:[{njs:9,offset:0,notes:180,bombs:0,obstacles:33,nps:1.035,length:368,characteristic:"Standard",difficulty:"Easy",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.858,paritySummary:{errors:40,warns:1,resets:0}},{njs:11,offset:1,notes:305,bombs:0,obstacles:41,nps:1.735,length:372,characteristic:"Standard",difficulty:"Normal",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.748,paritySummary:{errors:24,warns:24,resets:0}},{njs:12,offset:1,notes:493,bombs:0,obstacles:36,nps:2.783,length:375,characteristic:"Standard",difficulty:"Hard",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.165,paritySummary:{errors:3,warns:0,resets:0}},{njs:15,offset:.1,notes:614,bombs:1,obstacles:67,nps:3.429,length:379,characteristic:"Standard",difficulty:"Expert",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.055,paritySummary:{errors:2,warns:0,resets:0}},{njs:19,offset:-.4,notes:782,bombs:0,obstacles:84,nps:4.402,length:376,characteristic:"Standard",difficulty:"ExpertPlus",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.638,paritySummary:{errors:1,warns:0,resets:0}},{njs:16,offset:0,notes:496,bombs:0,obstacles:119,nps:2.792,length:376,characteristic:"OneSaber",difficulty:"Expert",events:3139,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.638,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a03cb0a107993be5cded1e91dc31e8a7b048f02a.zip",coverURL:"https://cdn.beatsaver.com/a03cb0a107993be5cded1e91dc31e8a7b048f02a.jpg",previewURL:"https://cdn.beatsaver.com/a03cb0a107993be5cded1e91dc31e8a7b048f02a.mp3"}],createdAt:"2020-05-22T13:28:32.918Z",updatedAt:"2020-05-22T13:28:32.918Z",lastPublishedAt:"2020-05-22T13:28:32.918Z"},{id:"8d49",name:"Dreamcatcher - Scream",description:"Expert+ by noxn and simplymarvellous\nExpert and Lighting by aggrogahu\n\nMap preview by aggrogahu: https://www.youtube.com/watch?v=Yv908yUt9O0\n\nExtra thanks to simplymarvellous for fixing all of my sync issues and creating some pog patterns while he was at it! And special thanks to Bloodcloak for some great changes and ideas!\n\nThis was my first collab map. I've really enjoyed playing it and working with people to make a great finished product!\n\nJoin us in the KPOP Beat Saber discord here: https://discord.gg/c9uHGYP\n\nAnd finally, my survey link <3: https://forms.gle/8nJVPiriTWPx9irT6",uploader:{id:4289789,name:"noxn",uniqueSet:!0,hash:"5daab87cc216d40006bef803",avatar:"https://cdn.beatsaver.com/avatar/132315398287785985.png",type:"DISCORD"},metadata:{bpm:138,duration:206,songName:"Scream",songSubName:"",songAuthorName:"Dreamcatcher",levelAuthorName:"noxn; simplymarvellous; aggrogahu"},stats:{plays:0,downloads:9907,upvotes:1737,downvotes:21,score:.9366},uploaded:"2020-03-04T23:07:51.556Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"94e31eda51f8afd9e59c9895972b80775556cf6a",key:"8d49",state:"Published",createdAt:"2020-03-04T23:07:51.556Z",sageScore:5,diffs:[{njs:16,offset:.2,notes:717,bombs:48,obstacles:36,nps:3.616,length:456,characteristic:"Standard",difficulty:"Expert",events:2568,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.261,paritySummary:{errors:19,warns:24,resets:9}},{njs:18,offset:-.5,notes:1068,bombs:52,obstacles:47,nps:5.387,length:456,characteristic:"Standard",difficulty:"ExpertPlus",events:2568,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.261,paritySummary:{errors:11,warns:15,resets:2}}],downloadURL:"https://cdn.beatsaver.com/94e31eda51f8afd9e59c9895972b80775556cf6a.zip",coverURL:"https://cdn.beatsaver.com/94e31eda51f8afd9e59c9895972b80775556cf6a.jpg",previewURL:"https://cdn.beatsaver.com/94e31eda51f8afd9e59c9895972b80775556cf6a.mp3"}],createdAt:"2020-03-04T23:07:51.556Z",updatedAt:"2020-03-04T23:07:51.556Z",lastPublishedAt:"2020-03-04T23:07:51.556Z"},{id:"129bf",name:"LeaF - Mope Mope(Noodle Extensions, Chroma)",description:"Preview:\nhttps://www.youtube.com/watch?v=p9U5Y2iFoRQ&t=11s\nWarnings:\n--Fast Flashing Images\n--Disturbing Contents\n--This Level is NOT for Children--\nRequirements:\nNoodle Extensions, Chroma\nLeft-Handed and Custom Notes will cause some bugs\nSome of the bombs are fake:)\nThank you Moe ChiaKi for testing the map OwO",uploader:{id:4289114,name:"waika",uniqueSet:!0,hash:"5cff0b7698cc5a672c85464f",avatar:"https://cdn.beatsaver.com/avatar/530663167244894220.png",type:"DISCORD"},metadata:{bpm:200,duration:111,songName:"Mope Mope",songSubName:"",songAuthorName:"LeaF",levelAuthorName:"waika"},stats:{plays:0,downloads:9472,upvotes:3722,downvotes:90,score:.9366},uploaded:"2021-01-12T07:11:32.915Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6c9d463c1cf556246cf60bfaef75fc4f8ea3053f",key:"129bf",state:"Published",createdAt:"2021-01-12T07:11:32.915Z",sageScore:5,diffs:[{njs:16,offset:2,notes:968,bombs:4092,obstacles:303,nps:9.089,length:355,characteristic:"Standard",difficulty:"ExpertPlus",events:5812,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:106.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6c9d463c1cf556246cf60bfaef75fc4f8ea3053f.zip",coverURL:"https://cdn.beatsaver.com/6c9d463c1cf556246cf60bfaef75fc4f8ea3053f.jpg",previewURL:"https://cdn.beatsaver.com/6c9d463c1cf556246cf60bfaef75fc4f8ea3053f.mp3"}],createdAt:"2021-01-12T07:11:32.915Z",updatedAt:"2021-01-12T07:11:32.915Z",lastPublishedAt:"2021-01-12T07:11:32.915Z"},{id:"12d9",name:"Snail's House - Pixel Galaxy",description:"Hard/Expert | BPM: 150 | Length: 3:46 | Notes: 493/787\r\n\r\nIt's a really nice song. Not much else to say\r\nA lot of manual lighting too :D\r\n\r\n10th Map.\r\n\r\nPreview:\r\nhttps://www.youtube.com/watch?v=5xvJlMob-ok\r\nSong:\r\nhttps://www.youtube.com/watch?v=3nlSDxvt6JU",uploader:{id:4285825,name:"fefeland",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3bb",avatar:"https://cdn.beatsaver.com/avatar/119360573191225344.png",type:"DISCORD"},metadata:{bpm:150,duration:227,songName:"Pixel Galaxy",songSubName:"Snail's House",songAuthorName:"FEFELAND",levelAuthorName:"fefeland"},stats:{plays:0,downloads:6468,upvotes:2912,downvotes:60,score:.9366},uploaded:"2018-08-31T22:56:17Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"848b35a0028465bc4d76fd3cafb5acc4b2c70d5a",key:"12d9",state:"Published",createdAt:"2018-08-31T22:56:17Z",sageScore:6,diffs:[{njs:9,offset:0,notes:493,bombs:0,obstacles:0,nps:2.268,length:543.5,characteristic:"Standard",difficulty:"Hard",events:1741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.4,paritySummary:{errors:47,warns:20,resets:0},stars:1.49},{njs:12,offset:0,notes:787,bombs:0,obstacles:0,nps:3.62,length:543.5,characteristic:"Standard",difficulty:"Expert",events:1741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.4,paritySummary:{errors:41,warns:28,resets:0}}],downloadURL:"https://cdn.beatsaver.com/848b35a0028465bc4d76fd3cafb5acc4b2c70d5a.zip",coverURL:"https://cdn.beatsaver.com/848b35a0028465bc4d76fd3cafb5acc4b2c70d5a.jpg",previewURL:"https://cdn.beatsaver.com/848b35a0028465bc4d76fd3cafb5acc4b2c70d5a.mp3"}],createdAt:"2018-08-31T22:56:17Z",updatedAt:"2018-08-31T22:56:17Z",lastPublishedAt:"2018-08-31T22:56:17Z"},{id:"124",name:"Rasputin (Funk Overload)",description:"Hard\r\nBpm 147\r\nspeed up version of rasputin Original",uploader:{id:48512,name:"jobas",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9a2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9a2?d=retro",type:"SIMPLE"},metadata:{bpm:149,duration:239,songName:"Rasputin (Funk Overload)",songSubName:"",songAuthorName:"Jobas",levelAuthorName:"jobas"},stats:{plays:0,downloads:20546,upvotes:20981,downvotes:890,score:.9366},uploaded:"2018-05-19T16:36:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9a1d001995cc0a2014352aa7148cbcbf2e489d89",key:"124",state:"Published",createdAt:"2018-05-19T16:36:34Z",sageScore:5,diffs:[{njs:10,offset:0,notes:768,bombs:0,obstacles:154,nps:3.329,length:586.013,characteristic:"Standard",difficulty:"Hard",events:1109,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:235.978,paritySummary:{errors:58,warns:141,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9a1d001995cc0a2014352aa7148cbcbf2e489d89.zip",coverURL:"https://cdn.beatsaver.com/9a1d001995cc0a2014352aa7148cbcbf2e489d89.jpg",previewURL:"https://cdn.beatsaver.com/9a1d001995cc0a2014352aa7148cbcbf2e489d89.mp3"}],createdAt:"2018-05-19T16:36:34Z",updatedAt:"2018-05-19T16:36:34Z",lastPublishedAt:"2018-05-19T16:36:34Z"},{id:"12ad1",name:"Minnesota - Colors (ft. Jackie Rain) | Chroma RGB",description:"Chroma 2.0 HIGHLY RECOMMENDED!\n\nHad this map sitting in my project folder for some months and finally got to finish it! \nIt features a Chroma RGB lightshow AND Rainbow notes, for the full COLOR experience :)\n\nPreview: https://www.youtube.com/watch?v=8Omzd7IdJt0",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:140,duration:202,songName:"Colors",songSubName:"(ft. Jackie Rain)",songAuthorName:"Minnesota",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:3903,upvotes:1230,downvotes:7,score:.9364},uploaded:"2021-01-13T15:55:44.846Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"03fcb98091e50600d9d777251d765c53384c2735",key:"12ad1",state:"Published",createdAt:"2021-01-13T15:55:44.846Z",sageScore:4,diffs:[{njs:13,offset:.5,notes:395,bombs:0,obstacles:221,nps:2.057,length:448,characteristic:"Standard",difficulty:"Hard",events:16569,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:601,bombs:0,obstacles:113,nps:3.13,length:448,characteristic:"Standard",difficulty:"Expert",events:16569,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:-.5,notes:911,bombs:0,obstacles:120,nps:4.745,length:448,characteristic:"Standard",difficulty:"ExpertPlus",events:16569,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/03fcb98091e50600d9d777251d765c53384c2735.zip",coverURL:"https://cdn.beatsaver.com/03fcb98091e50600d9d777251d765c53384c2735.jpg",previewURL:"https://cdn.beatsaver.com/03fcb98091e50600d9d777251d765c53384c2735.mp3"}],createdAt:"2021-01-13T15:55:44.846Z",updatedAt:"2021-01-13T15:55:44.846Z",lastPublishedAt:"2021-01-13T15:55:44.846Z"},{id:"6094",name:"Legend - The Score",description:"https://www.youtube.com/watch?v=M5oxJRVwwCY",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:82,duration:190,songName:"Legend",songSubName:"",songAuthorName:"The Score",levelAuthorName:"DownyCat"},stats:{plays:0,downloads:5059,upvotes:1752,downvotes:22,score:.9363},uploaded:"2019-09-01T13:23:40.596Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f1c24c4b08a1126017ba8a96da4828d2d949f46b",key:"6094",state:"Published",createdAt:"2019-09-01T13:23:40.596Z",sageScore:6,diffs:[{njs:12,offset:0,notes:357,bombs:0,obstacles:37,nps:2.006,length:243.25,characteristic:"Standard",difficulty:"Normal",events:3490,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.988,paritySummary:{errors:5,warns:0,resets:0}},{njs:12,offset:0,notes:537,bombs:0,obstacles:47,nps:3.017,length:243.25,characteristic:"Standard",difficulty:"Hard",events:3490,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.988,paritySummary:{errors:3,warns:0,resets:0}},{njs:16,offset:0,notes:728,bombs:0,obstacles:42,nps:4.09,length:243.25,characteristic:"Standard",difficulty:"Expert",events:3490,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.988,paritySummary:{errors:5,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f1c24c4b08a1126017ba8a96da4828d2d949f46b.zip",coverURL:"https://cdn.beatsaver.com/f1c24c4b08a1126017ba8a96da4828d2d949f46b.jpg",previewURL:"https://cdn.beatsaver.com/f1c24c4b08a1126017ba8a96da4828d2d949f46b.mp3"}],createdAt:"2019-09-01T13:23:40.596Z",updatedAt:"2019-09-01T13:23:40.596Z",lastPublishedAt:"2019-09-01T13:23:40.596Z"},{id:"d4a5",name:"[FUTURE FUNK PACK] Shiawase No Monosashi (VANTAGE // Short Ver.)",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\n"Shiawase No Monosashi" is performed by Mariya Takeuchi. This version of the song is a short edit I made from VANTAGE //\'s edit. The original length of the song is 5 minutes long\n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:128,duration:171,songName:"Shiawase No Monosashi",songSubName:"(VANTAGE // Short Ver.)",songAuthorName:"Mariya Takeuchi",levelAuthorName:"ETAN"},stats:{plays:0,downloads:6944,upvotes:1542,downvotes:16,score:.9362},uploaded:"2020-08-12T18:17:44.285Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d7cb32f23041dec272de3da0ac141dd8f91478ca",key:"d4a5",state:"Published",createdAt:"2020-08-12T18:17:44.285Z",sageScore:7,diffs:[{njs:10,offset:1,notes:168,bombs:16,obstacles:1,nps:1.029,length:348.25,characteristic:"Standard",difficulty:"Easy",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.242,paritySummary:{errors:0,warns:0,resets:0}},{njs:11,offset:1,notes:255,bombs:16,obstacles:1,nps:1.562,length:348.25,characteristic:"Standard",difficulty:"Normal",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.242,paritySummary:{errors:1,warns:1,resets:0}},{njs:12,offset:1,notes:358,bombs:16,obstacles:1,nps:2.193,length:348.25,characteristic:"Standard",difficulty:"Hard",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.242,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:557,bombs:16,obstacles:1,nps:3.335,length:356.25,characteristic:"Standard",difficulty:"Expert",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.992,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:-.5,notes:778,bombs:16,obstacles:1,nps:4.659,length:356.25,characteristic:"Standard",difficulty:"ExpertPlus",events:7775,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.992,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d7cb32f23041dec272de3da0ac141dd8f91478ca.zip",coverURL:"https://cdn.beatsaver.com/d7cb32f23041dec272de3da0ac141dd8f91478ca.jpg",previewURL:"https://cdn.beatsaver.com/d7cb32f23041dec272de3da0ac141dd8f91478ca.mp3"}],createdAt:"2020-08-12T18:17:44.285Z",updatedAt:"2020-08-12T18:17:44.285Z",lastPublishedAt:"2020-08-12T18:17:44.285Z"},{id:"75a8",name:"Silhouette [Naruto Shippuden 16th Opening] - KANA-BOON",description:"This map was converted from one of my old maps.\n\nFeel free to DM me on discord @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:183,duration:127,songName:"Silhouette (TV Size)",songSubName:"",songAuthorName:"KANA-BOON",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:10318,upvotes:2707,downvotes:54,score:.9362},uploaded:"2019-12-11T07:31:02.566Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ba8d44529d21da1128bc70034ee608b6e8a19a63",key:"75a8",state:"Published",createdAt:"2019-12-11T07:31:02.566Z",sageScore:4,diffs:[{njs:12,offset:0,notes:412,bombs:0,obstacles:0,nps:3.383,length:371.5,characteristic:"Standard",difficulty:"Hard",events:2826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:121.803,paritySummary:{errors:20,warns:20,resets:0}},{njs:14,offset:0,notes:520,bombs:0,obstacles:0,nps:4.269,length:371.5,characteristic:"Standard",difficulty:"Expert",events:2826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:121.803,paritySummary:{errors:42,warns:24,resets:0}},{njs:16,offset:0,notes:710,bombs:0,obstacles:0,nps:5.829,length:371.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3013,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:121.803,paritySummary:{errors:51,warns:65,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ba8d44529d21da1128bc70034ee608b6e8a19a63.zip",coverURL:"https://cdn.beatsaver.com/ba8d44529d21da1128bc70034ee608b6e8a19a63.jpg",previewURL:"https://cdn.beatsaver.com/ba8d44529d21da1128bc70034ee608b6e8a19a63.mp3"}],createdAt:"2019-12-11T07:31:02.566Z",updatedAt:"2019-12-11T07:31:02.566Z",lastPublishedAt:"2019-12-11T07:31:02.566Z"},{id:"5e44",name:"Wolf In Sheep's Clothing - Set It Off",description:"“Wolf In Sheep’s Clothing” is a song by American pop punk band Set It Off. The song appears on their album Duality.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:165,duration:189,songName:"Wolf In Sheep's Clothing",songSubName:"",songAuthorName:"Set It Off",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3557,upvotes:1766,downvotes:23,score:.936},uploaded:"2019-08-21T14:32:59.705Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"71498322889259738dfbd9fdae23fc94bc382793",key:"5e44",state:"Published",createdAt:"2019-08-21T14:32:59.705Z",sageScore:6,diffs:[{njs:15,offset:0,notes:710,bombs:12,obstacles:2,nps:3.844,length:508,characteristic:"Standard",difficulty:"Expert",events:2219,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.727,paritySummary:{errors:45,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/71498322889259738dfbd9fdae23fc94bc382793.zip",coverURL:"https://cdn.beatsaver.com/71498322889259738dfbd9fdae23fc94bc382793.jpg",previewURL:"https://cdn.beatsaver.com/71498322889259738dfbd9fdae23fc94bc382793.mp3"}],createdAt:"2019-08-21T14:32:59.705Z",updatedAt:"2019-08-21T14:32:59.705Z",lastPublishedAt:"2019-08-21T14:32:59.705Z"},{id:"2db0",name:"RESISTER [Sword Art Online: Alicization 2nd Opening] - ASCA",description:"As requested by @Shoko84 & @Sotarks: RESISTER, the second opening to Sword Art Online: Alicization by ASCA!\r\n\r\n(Originally came in only expert plus but poor Sotarks couldn't do it so thank him for making me include an expert and hard xP)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:183,duration:226,songName:"RESISTER",songSubName:"ASCA",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:6798,upvotes:3257,downvotes:75,score:.9359},uploaded:"2019-01-14T18:07:01Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eb52dc76edd0eeee542ca6d339127f88dce9a5f4",key:"2db0",state:"Published",createdAt:"2019-01-14T18:07:01Z",sageScore:6,diffs:[{njs:11,offset:0,notes:852,bombs:0,obstacles:45,nps:3.85,length:675,characteristic:"Standard",difficulty:"Hard",events:4117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.311,paritySummary:{errors:39,warns:22,resets:0}},{njs:13,offset:0,notes:970,bombs:0,obstacles:45,nps:4.383,length:675,characteristic:"Standard",difficulty:"Expert",events:4117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.311,paritySummary:{errors:47,warns:56,resets:0}},{njs:15,offset:0,notes:1162,bombs:0,obstacles:51,nps:5.251,length:675,characteristic:"Standard",difficulty:"ExpertPlus",events:4117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.311,paritySummary:{errors:36,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/eb52dc76edd0eeee542ca6d339127f88dce9a5f4.zip",coverURL:"https://cdn.beatsaver.com/eb52dc76edd0eeee542ca6d339127f88dce9a5f4.jpg",previewURL:"https://cdn.beatsaver.com/eb52dc76edd0eeee542ca6d339127f88dce9a5f4.mp3"}],createdAt:"2019-01-14T18:07:01Z",updatedAt:"2019-01-14T18:07:01Z",lastPublishedAt:"2019-01-14T18:07:01Z"},{id:"2475",name:"Bring It On - Giga-P",description:"Probably Giga-P's most famous song, Bring It On / 劣等上等 (Rettou Joutou / Inferiority Superiority), made for the 10th anniversary of the Vocaloids Rin and Len. This song has quickly entered the Hall of Fame and rightly so as it is one of everyone's (or at least, mine) favorite Vocaloid songs. because of that I knew I had to make a good map out of it. I had a lot of fun making this one and I hope it shows!\r\n\r\nAudio edits: extended intro and slight enhancements to the mix has been made since I had access to the vocals and karaoke tracks, to make the audio fit better in Beat Saber.\r\n\r\nPreview video:\r\nhttps://youtu.be/16oSzYCTD3A\r\n\r\nBPM: 160\r\nDuration: 3:56\r\nEasy, Normal, Hard and Expert difficulties.\r\n\r\nEasy: 335, 7 obstacles, 4 mines\r\nNormal: 469 notes, 10 obstacles, 8 mines\r\nHard: 665 notes, 14 obstacles, 24 mines\r\nExpert: 845 notes, 15 obstacles, 28 mines\r\n\r\nMap includes three different audio versions:\r\n* Full vocal version; the standard version of the song.\r\n* Karaoke version; you can sing along with backing vocals!\r\n* Instrumental version; If you don't want any backing or main vocals this is the version to use.\r\nTo change between these search for \"GigaP_Bring_It_On.ogg\" in your CustomSongs folder and open the folder where that file resides. Change the name of GigaP_Bring_It_On.ogg to GigaP_Bring_It_On_Standard.ogg and rename any of the other two versions to GigaP_Bring_It_On.ogg. Start the game and enjoy!\r\n\r\nThanks to AaltopahWi, RedMagi and ManDynasty for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:160,duration:236,songName:"Bring It On",songSubName:"Giga-P",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:9117,upvotes:3878,downvotes:99,score:.9359},uploaded:"2018-12-07T21:36:14Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"4cb323a4340177d7b7ca74f67f6b920ed320ee5e",key:"2475",state:"Published",createdAt:"2018-12-07T21:36:14Z",sageScore:5,diffs:[{njs:10,offset:0,notes:335,bombs:4,obstacles:7,nps:1.462,length:611,characteristic:"Standard",difficulty:"Easy",events:2906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.125,paritySummary:{errors:63,warns:28,resets:0},stars:1.02},{njs:11,offset:0,notes:469,bombs:8,obstacles:10,nps:2.047,length:611,characteristic:"Standard",difficulty:"Normal",events:2906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.125,paritySummary:{errors:69,warns:52,resets:4},stars:1.36},{njs:12,offset:0,notes:665,bombs:24,obstacles:14,nps:2.902,length:611,characteristic:"Standard",difficulty:"Hard",events:2906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.125,paritySummary:{errors:74,warns:79,resets:7},stars:1.95},{njs:13,offset:0,notes:845,bombs:28,obstacles:15,nps:3.688,length:611,characteristic:"Standard",difficulty:"Expert",events:3259,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.125,paritySummary:{errors:91,warns:115,resets:12},stars:2.64}],downloadURL:"https://cdn.beatsaver.com/4cb323a4340177d7b7ca74f67f6b920ed320ee5e.zip",coverURL:"https://cdn.beatsaver.com/4cb323a4340177d7b7ca74f67f6b920ed320ee5e.jpg",previewURL:"https://cdn.beatsaver.com/4cb323a4340177d7b7ca74f67f6b920ed320ee5e.mp3"}],createdAt:"2018-12-07T21:36:14Z",updatedAt:"2018-12-07T21:36:14Z",lastPublishedAt:"2018-12-07T21:36:14Z"},{id:"19d5",name:"BABY GOT BACK - Sir Mix A Lot (Mapped by GreatYazer)",description:"Oh, my, God Becky, look at her butt",uploader:{id:41378,name:"greatyazer",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea71",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea71?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:265,songName:"Baby Got Back",songSubName:"Sir Mix A Lot",songAuthorName:"GreatYazer",levelAuthorName:"greatyazer"},stats:{plays:0,downloads:9264,upvotes:3382,downvotes:80,score:.9359},uploaded:"2018-10-12T12:34:15Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9d5dbcb878623f3396395cec0e6e8e07d48d2256",key:"19d5",state:"Published",createdAt:"2018-10-12T12:34:15Z",sageScore:5,diffs:[{njs:10,offset:0,notes:254,bombs:0,obstacles:0,nps:1.044,length:519,characteristic:"Standard",difficulty:"Easy",events:2124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.281,paritySummary:{errors:61,warns:19,resets:0}},{njs:10,offset:0,notes:394,bombs:0,obstacles:1,nps:1.62,length:519,characteristic:"Standard",difficulty:"Normal",events:2124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.281,paritySummary:{errors:100,warns:34,resets:0}},{njs:10,offset:0,notes:603,bombs:0,obstacles:9,nps:2.479,length:519,characteristic:"Standard",difficulty:"Hard",events:2124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.281,paritySummary:{errors:79,warns:48,resets:0}},{njs:10,offset:0,notes:889,bombs:0,obstacles:14,nps:3.654,length:519,characteristic:"Standard",difficulty:"Expert",events:2124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.281,paritySummary:{errors:107,warns:66,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9d5dbcb878623f3396395cec0e6e8e07d48d2256.zip",coverURL:"https://cdn.beatsaver.com/9d5dbcb878623f3396395cec0e6e8e07d48d2256.jpg",previewURL:"https://cdn.beatsaver.com/9d5dbcb878623f3396395cec0e6e8e07d48d2256.mp3"}],createdAt:"2018-10-12T12:34:15Z",updatedAt:"2018-10-12T12:34:15Z",lastPublishedAt:"2018-10-12T12:34:15Z"},{id:"d00c",name:"[Extra Sensory] Hayako - Analys",description:'WE ARE BACK\n\nMassive thanks to these people for making all of this possible!!\nAeroluna- For making Noodle Extensions and updating Chroma\nCyan- For spending almost a full day starting at effects with and for me and also helping with making sure the mapping wasnt horrible\nArti- CusomJsonData and helping make this whole project happen initially at all!!\nFMS_Cat- Map heavily inspired and made from his original, https://youtu.be/eqZE60HanCM . The we are back text was also modeled after that in his chart\n\nAnd anyone else who helped me out while I was being dumb with this whole thing\n\nThis map was released as a part of the "Extra Sensory" event.\n\nVideo: https://youtu.be/sYkW_AWUEL8',uploader:{id:4235136,name:"reaxt",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ab",avatar:"https://cdn.beatsaver.com/avatar/163052863038291970.png",type:"DISCORD"},metadata:{bpm:170,duration:129,songName:"ANALYS",songSubName:"",songAuthorName:"HAYAKO",levelAuthorName:"Reaxt"},stats:{plays:0,downloads:6832,upvotes:4995,downvotes:145,score:.9358},uploaded:"2020-08-06T16:52:58.027Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f6dbd83b699872e2e42c2fc90337ef0ac2ab8f30",key:"d00c",state:"Published",createdAt:"2020-08-06T16:52:58.027Z",sageScore:3,diffs:[{njs:19,offset:0,notes:2390,bombs:100,obstacles:502,nps:19.238,length:352,characteristic:"Standard",difficulty:"ExpertPlus",events:2478,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:124.235,paritySummary:{errors:149,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f6dbd83b699872e2e42c2fc90337ef0ac2ab8f30.zip",coverURL:"https://cdn.beatsaver.com/f6dbd83b699872e2e42c2fc90337ef0ac2ab8f30.jpg",previewURL:"https://cdn.beatsaver.com/f6dbd83b699872e2e42c2fc90337ef0ac2ab8f30.mp3"}],createdAt:"2020-08-06T16:52:58.027Z",updatedAt:"2020-08-06T16:52:58.027Z",lastPublishedAt:"2020-08-06T16:52:58.027Z"},{id:"85b",name:"Take Me Home, Country Road - Fallout 76 Version",description:"Easy to beat, but a blast to play through. Enjoy!",uploader:{id:50560,name:"npcinnkeeper",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f8e7",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f8e7?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:178,songName:"Take Me Home, Country Roads",songSubName:"Fallout 76",songAuthorName:"NPC Innkeeper",levelAuthorName:"npcinnkeeper"},stats:{plays:0,downloads:12534,upvotes:5946,downvotes:185,score:.9358},uploaded:"2018-07-07T14:08:33Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9ed3b706b2306c00c2ad70a287c784277dbb5d74",key:"85b",state:"Published",createdAt:"2018-07-07T14:08:33Z",sageScore:4,diffs:[{njs:10,offset:0,notes:536,bombs:14,obstacles:13,nps:3.131,length:456.5,characteristic:"Standard",difficulty:"Hard",events:954,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.188,paritySummary:{errors:141,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9ed3b706b2306c00c2ad70a287c784277dbb5d74.zip",coverURL:"https://cdn.beatsaver.com/9ed3b706b2306c00c2ad70a287c784277dbb5d74.jpg",previewURL:"https://cdn.beatsaver.com/9ed3b706b2306c00c2ad70a287c784277dbb5d74.mp3"}],createdAt:"2018-07-07T14:08:33Z",updatedAt:"2018-07-07T14:08:33Z",lastPublishedAt:"2018-07-07T14:08:33Z"},{id:"4d62",name:"Skrillex - Bangarang",description:"Feedback on Discord: nitronik.exe#7974\n\nNOTE: There are two expert+ difficulties and so there is no easy mode!\nanyways, hope you enjoy!\npreview: https://www.youtube.com/watch?v=p0Z6U8x9fb4",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:110,duration:219,songName:"Bangarang",songSubName:"Skrillex",songAuthorName:"nitronik.exe",levelAuthorName:"nitronikexe"},stats:{plays:0,downloads:12246,upvotes:5033,downvotes:147,score:.9357},uploaded:"2019-05-17T11:28:44Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"137e76fcfb08e99695f481f7133cef173fd7fa8e",key:"4d62",state:"Published",createdAt:"2019-05-17T11:28:44Z",sageScore:8,diffs:[{njs:10,offset:0,notes:631,bombs:0,obstacles:6,nps:3.152,length:367,characteristic:"Standard",difficulty:"Easy",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.182,paritySummary:{errors:129,warns:0,resets:0}},{njs:10,offset:0,notes:708,bombs:0,obstacles:14,nps:3.527,length:368,characteristic:"Standard",difficulty:"Normal",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.727,paritySummary:{errors:26,warns:25,resets:0}},{njs:13,offset:0,notes:881,bombs:0,obstacles:14,nps:4.389,length:368,characteristic:"Standard",difficulty:"Hard",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.727,paritySummary:{errors:3,warns:3,resets:0}},{njs:16,offset:0,notes:1032,bombs:108,obstacles:29,nps:5.141,length:368,characteristic:"Standard",difficulty:"Expert",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.727,paritySummary:{errors:2,warns:0,resets:4}},{njs:17,offset:0,notes:1088,bombs:0,obstacles:26,nps:5.42,length:368,characteristic:"Standard",difficulty:"ExpertPlus",events:7633,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.727,paritySummary:{errors:54,warns:42,resets:0}}],downloadURL:"https://cdn.beatsaver.com/137e76fcfb08e99695f481f7133cef173fd7fa8e.zip",coverURL:"https://cdn.beatsaver.com/137e76fcfb08e99695f481f7133cef173fd7fa8e.jpg",previewURL:"https://cdn.beatsaver.com/137e76fcfb08e99695f481f7133cef173fd7fa8e.mp3"}],createdAt:"2019-05-17T11:28:44Z",updatedAt:"2019-05-17T11:28:44Z",lastPublishedAt:"2019-05-17T11:28:44Z"},{id:"97ac",name:"Mick Gordon - Unholy Crusade",description:"Rip and tear\r\n\r\n\r\nExtra super huge thank you to the following people for making this possible\r\nAeroluna- For making Noodle Extensions and updating Chroma\r\nSpooky Ghost- For making Beatwalls\r\nArti- For making the core mod that allowed Noodle Extensions and Chroma to support the new values\r\n\r\nAnd thank you for putting up with my shit during this :)\r\n\r\nVideo: https://www.youtube.com/watch?v=zhIIh3nccNQ",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:150,duration:167,songName:"Unholy Crusade",songSubName:"",songAuthorName:"Mick Gordon",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:6492,upvotes:2903,downvotes:63,score:.9356},uploaded:"2020-04-05T15:44:13.116Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"abc41236f324093fbf711abce8c18c2a47debe20",key:"97ac",state:"Published",createdAt:"2020-04-05T15:44:13.116Z",sageScore:4,diffs:[{njs:19,offset:-.3,notes:650,bombs:0,obstacles:21376,nps:4.331,length:375.23,characteristic:"Lawless",difficulty:"ExpertPlus",events:3853,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:150.092,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/abc41236f324093fbf711abce8c18c2a47debe20.zip",coverURL:"https://cdn.beatsaver.com/abc41236f324093fbf711abce8c18c2a47debe20.jpg",previewURL:"https://cdn.beatsaver.com/abc41236f324093fbf711abce8c18c2a47debe20.mp3"}],createdAt:"2020-04-05T15:44:13.116Z",updatedAt:"2020-04-05T15:44:13.116Z",lastPublishedAt:"2020-04-05T15:44:13.116Z"},{id:"462",name:"The Nights - Avicii",description:"The Nights By Avicii.\r\nThis is my first beatmap, feedback would be greatly appreciated :)",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:173,songName:"The Nights",songSubName:"",songAuthorName:"Avicii",levelAuthorName:"rocket"},stats:{plays:0,downloads:22239,upvotes:11170,downvotes:426,score:.9356},uploaded:"2018-06-08T23:20:50Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2c002d2874e029db43f3c7cf9bb271ae0d769b74",key:"462",state:"Published",createdAt:"2018-06-08T23:20:50Z",sageScore:5,diffs:[{njs:10,offset:0,notes:200,bombs:4,obstacles:14,nps:1.207,length:348,characteristic:"Standard",difficulty:"Normal",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.714,paritySummary:{errors:45,warns:19,resets:0},stars:.92},{njs:10,offset:0,notes:402,bombs:6,obstacles:14,nps:2.426,length:348,characteristic:"Standard",difficulty:"Hard",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.714,paritySummary:{errors:88,warns:44,resets:0}},{njs:10,offset:0,notes:702,bombs:10,obstacles:14,nps:4.236,length:348,characteristic:"Standard",difficulty:"Expert",events:705,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.714,paritySummary:{errors:119,warns:72,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2c002d2874e029db43f3c7cf9bb271ae0d769b74.zip",coverURL:"https://cdn.beatsaver.com/2c002d2874e029db43f3c7cf9bb271ae0d769b74.jpg",previewURL:"https://cdn.beatsaver.com/2c002d2874e029db43f3c7cf9bb271ae0d769b74.mp3"}],createdAt:"2018-06-08T23:20:50Z",updatedAt:"2018-06-08T23:20:50Z",lastPublishedAt:"2018-06-08T23:20:50Z"},{id:"9c54",name:"Yunomi - 惑星ラビット (feat. TORIENA)/Wakusei Rabbit[Wall Map]",description:'seventh map! [Noodle Extensions & Chroma] map!\nYunomi - Wakusei Rabbit (feat. TORIENA) Planet Rabbit\n \n!! This map requires!!\nNoodle Extensions , Chroma\n\nNoodle Extensions と Chromaが古いバージョンの時代に作ったので、最新バージョンだと壁のY軸(高さ)が破綻します。。\n昔と違い、RequirementsにMapping Extensionsが記載されていると干渉してしまうようなので、\n\n壁を正常に表示するには、以下の修正をお願い致します。\n1. info.datをテキストエディタ等で開く。\n2.「,"Mapping Extensions"」を検索し削除(3か所) コンマも含めますご注意ください。\n\n--(English)\nUnlike in the past, it seems to interfere with the Mapping Extensions listed in Requirements.\nIn order to display the wall properly, please make the following modifications.\n1. Open info.dat with a text editor.\n2. Search for [ , "Mapping Extensions"] and delete it (in three places), including commas.\n--\n\nMy Twitter : https://twitter.com/kamy_0811\n\n[Song info]\nSong name : Wakusei Rabbit\nAlbum : Oedo Controller\nMusic & Lyrics : Yunomi \nVocal : TORIENA\nArtwork : Kiato \nSoundCloud : https://soundcloud.com/tkrism/wakuseirabbit\nPlay movie : https://youtu.be/6WXJqlHQ4To',uploader:{id:4285148,name:"kamy",uniqueSet:!0,hash:"5e42a3f4d523400006369ea0",avatar:"https://cdn.beatsaver.com/avatar/415431418663927810.png",type:"DISCORD"},metadata:{bpm:174,duration:204,songName:"Wakusei_Rabbit",songSubName:"feat. TORIENA",songAuthorName:"Yunomi",levelAuthorName:"kamy"},stats:{plays:0,downloads:6028,upvotes:1794,downvotes:25,score:.9355},uploaded:"2020-04-18T14:46:30.487Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3b680d87cbba69bda48081e97dc925464116f41f",key:"9c54",state:"Published",createdAt:"2020-04-18T14:46:30.487Z",sageScore:7,diffs:[{njs:14,offset:0,notes:0,bombs:0,obstacles:27053,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:2845,chroma:!0,me:!0,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:762,bombs:0,obstacles:27053,nps:3.867,length:571.5,characteristic:"Standard",difficulty:"Hard",events:2848,chroma:!0,me:!0,ne:!0,cinema:!1,seconds:197.069,paritySummary:{errors:0,warns:2,resets:0}},{njs:17,offset:0,notes:1246,bombs:0,obstacles:27053,nps:6.323,length:571.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2845,chroma:!0,me:!0,ne:!0,cinema:!1,seconds:197.069,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3b680d87cbba69bda48081e97dc925464116f41f.zip",coverURL:"https://cdn.beatsaver.com/3b680d87cbba69bda48081e97dc925464116f41f.jpg",previewURL:"https://cdn.beatsaver.com/3b680d87cbba69bda48081e97dc925464116f41f.mp3"}],createdAt:"2020-04-18T14:46:30.487Z",updatedAt:"2020-04-18T14:46:30.487Z",lastPublishedAt:"2020-04-18T14:46:30.487Z"},{id:"1f42",name:"Field of Hopes and Dreams (Deltarune) - Toby Fox",description:"Song by Toby Fox\r\nVideo: https://youtu.be/2V7IFAKTIp4\r\n\r\n Expert, Hard, Normal\r\nBPM:120\r\nObstacles: 0\r\n\r\n-Expert-\r\nNotes: 513\r\nNotes per second: 3.12\r\nJump Speed: 13\r\n\r\n-Hard-\r\nNotes: 325\r\nNotes per second: 1.97\r\nJump Speed: 11\r\n\r\n-Expert-\r\nNotes: 212\r\nNotes per second: 1.29\r\nJump Speed: 10\r\n\r\nShoutout to testers:\r\nRedmagi\r\nManDynasty\r\nAaltopahWi\r\nAggrogahu",uploader:{id:39365,name:"todokete",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee70",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee70?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:164,songName:"Field of Hopes and Dreams",songSubName:"Toby Fox",songAuthorName:"Todokete",levelAuthorName:"todokete"},stats:{plays:0,downloads:6294,upvotes:3219,downvotes:76,score:.9353},uploaded:"2018-11-09T19:54:30Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c62d53bd22e3aa7d6a2ef04472ee7a22ceed74f6",key:"1f42",state:"Published",createdAt:"2018-11-09T19:54:30Z",sageScore:5,diffs:[{njs:10,offset:0,notes:212,bombs:0,obstacles:0,nps:1.33,length:332,characteristic:"Standard",difficulty:"Normal",events:888,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:159.36,paritySummary:{errors:44,warns:21,resets:0}},{njs:11,offset:0,notes:325,bombs:0,obstacles:0,nps:2.039,length:332,characteristic:"Standard",difficulty:"Hard",events:888,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:159.36,paritySummary:{errors:57,warns:15,resets:0}},{njs:13,offset:0,notes:513,bombs:0,obstacles:0,nps:3.219,length:332,characteristic:"Standard",difficulty:"Expert",events:888,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:159.36,paritySummary:{errors:68,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c62d53bd22e3aa7d6a2ef04472ee7a22ceed74f6.zip",coverURL:"https://cdn.beatsaver.com/c62d53bd22e3aa7d6a2ef04472ee7a22ceed74f6.jpg",previewURL:"https://cdn.beatsaver.com/c62d53bd22e3aa7d6a2ef04472ee7a22ceed74f6.mp3"}],createdAt:"2018-11-09T19:54:30Z",updatedAt:"2018-11-09T19:54:30Z",lastPublishedAt:"2018-11-09T19:54:30Z"},{id:"1970",name:"Still Into You - Paramore",description:"Expert Playthrough : https://youtu.be/CUBqLk35vbE",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:136,duration:216,songName:"Still Into You",songSubName:"Paramore",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:8223,upvotes:2078,downvotes:35,score:.9352},uploaded:"2018-10-09T15:34:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fdd3fd8a25a79c114184cef10633fe6a57c7eb4c",key:"1970",state:"Published",createdAt:"2018-10-09T15:34:41Z",sageScore:4,diffs:[{njs:10,offset:0,notes:713,bombs:0,obstacles:21,nps:3.536,length:457,characteristic:"Standard",difficulty:"Hard",events:738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.618,paritySummary:{errors:25,warns:25,resets:0}},{njs:11,offset:0,notes:848,bombs:0,obstacles:21,nps:4.206,length:457,characteristic:"Standard",difficulty:"Expert",events:738,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.618,paritySummary:{errors:50,warns:72,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fdd3fd8a25a79c114184cef10633fe6a57c7eb4c.zip",coverURL:"https://cdn.beatsaver.com/fdd3fd8a25a79c114184cef10633fe6a57c7eb4c.jpg",previewURL:"https://cdn.beatsaver.com/fdd3fd8a25a79c114184cef10633fe6a57c7eb4c.mp3"}],createdAt:"2018-10-09T15:34:41Z",updatedAt:"2018-10-09T15:34:41Z",lastPublishedAt:"2018-10-09T15:34:41Z"},{id:"8790",name:"Satellite - Rise Against",description:'"Satellite" is a song by American rock band Rise Against, featured on their sixth studio album Endgame (2011). \n\nWritten by lead vocalist Tim McIlrath, "Satellite" expresses the idea that the band stood by their social and political beliefs, and that they would not conform to mainstream media.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:136,duration:237,songName:"Satellite",songSubName:"",songAuthorName:"Rise Against",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4055,upvotes:1641,downvotes:21,score:.9351},uploaded:"2020-02-16T09:32:52.155Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2a3c743f85bd235cd9d658fe728f9db79f3b9dc5",key:"8790",state:"Published",createdAt:"2020-02-16T09:32:52.155Z",sageScore:7,diffs:[{njs:15,offset:0,notes:982,bombs:26,obstacles:10,nps:4.306,length:516.975,characteristic:"Standard",difficulty:"ExpertPlus",events:7595,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228.077,paritySummary:{errors:9,warns:6,resets:1}}],downloadURL:"https://cdn.beatsaver.com/2a3c743f85bd235cd9d658fe728f9db79f3b9dc5.zip",coverURL:"https://cdn.beatsaver.com/2a3c743f85bd235cd9d658fe728f9db79f3b9dc5.jpg",previewURL:"https://cdn.beatsaver.com/2a3c743f85bd235cd9d658fe728f9db79f3b9dc5.mp3"}],createdAt:"2020-02-16T09:32:52.155Z",updatedAt:"2020-02-16T09:32:52.155Z",lastPublishedAt:"2020-02-16T09:32:52.155Z"},{id:"689b",name:"DuckTales Opening ",description:"Opening by Felicia Barton\nJust a simple but fun map of this song from childhood!\n:D \nFC: https://www.youtube.com/watch?v=QCOHyHKy6SI&feature=youtu.be",uploader:{id:35241,name:"4strofan",uniqueSet:!0,hash:"5cff0b7598cc5a672c851d18",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c851d18?d=retro",type:"SIMPLE"},metadata:{bpm:91.51,duration:121,songName:"DuckTales",songSubName:"Opening Song",songAuthorName:"Felicia Barton",levelAuthorName:"Strofan"},stats:{plays:0,downloads:4253,upvotes:2276,downvotes:42,score:.9351},uploaded:"2019-10-08T13:14:56.729Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2e687b4e357c8fb14d1cba11b3d4029070ed51f7",key:"689b",state:"Published",createdAt:"2019-10-08T13:14:56.729Z",sageScore:5,diffs:[{njs:14,offset:0,notes:460,bombs:0,obstacles:0,nps:4.091,length:171.5,characteristic:"Standard",difficulty:"Expert",events:1106,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:112.447,paritySummary:{errors:15,warns:6,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2e687b4e357c8fb14d1cba11b3d4029070ed51f7.zip",coverURL:"https://cdn.beatsaver.com/2e687b4e357c8fb14d1cba11b3d4029070ed51f7.jpg",previewURL:"https://cdn.beatsaver.com/2e687b4e357c8fb14d1cba11b3d4029070ed51f7.mp3"}],createdAt:"2019-10-08T13:14:56.729Z",updatedAt:"2019-10-08T13:14:56.729Z",lastPublishedAt:"2019-10-08T13:14:56.729Z"},{id:"67ba",name:"Air - Mr.FijiWiji Remix | AMV by SliceOfLife",description:'Videolink:\nhttps://youtu.be/V-KFAdSjeKo\n\n====================================================\n\nIf you are making a video to the level I would be happy if my video is linked in the description, but is not a must.\n\n====================================================\n\nIn order to play the level properly, the following plugins are required !!!\n== MappingExtension is required! ==\n== ChromaLite is recommended ==\n== SongCore is recommended ==\n\nAll plugins can be downloaded by ModAssistant\nhttps://github.com/Assistant/ModAssistant\n\nChromaLite and SongCore are only for the aesthetics! This includes light events and colors. If you don\'t want to use the preset colors, set the "Allow Color Override" option under "SongCore" to off.\n\n====================================================\n\nDifficulty: Expert\nNotes: 146\nWalls: 4135\nBombs: 900\n\n====================================================\n\nThis level CAN cause performance issues to your PC, especially on lower end VR PCs. ',uploader:{id:37230,name:"gevarred",uniqueSet:!0,hash:"5d971075e6a6760006266826",avatar:"https://www.gravatar.com/avatar/5d971075e6a6760006266826?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:172,songName:"Air",songSubName:"Shortened by SliceOfLife",songAuthorName:"Mr. FijiWiji Remix",levelAuthorName:"Gevarred"},stats:{plays:0,downloads:4245,upvotes:4022,downvotes:109,score:.935},uploaded:"2019-10-04T10:05:15.873Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"65c0c3e82499281f2c9b1d09d7eb3e60bcacd57d",key:"67ba",state:"Published",createdAt:"2019-10-04T10:05:15.873Z",sageScore:5,diffs:[{njs:8,offset:0,notes:146,bombs:900,obstacles:4135,nps:1.065,length:287.781,characteristic:"Standard",difficulty:"ExpertPlus",events:1015,chroma:!0,me:!0,ne:!1,cinema:!1,seconds:137.039,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/65c0c3e82499281f2c9b1d09d7eb3e60bcacd57d.zip",coverURL:"https://cdn.beatsaver.com/65c0c3e82499281f2c9b1d09d7eb3e60bcacd57d.jpg",previewURL:"https://cdn.beatsaver.com/65c0c3e82499281f2c9b1d09d7eb3e60bcacd57d.mp3"}],createdAt:"2019-10-04T10:05:15.873Z",updatedAt:"2019-10-04T10:05:15.873Z",lastPublishedAt:"2019-10-04T10:05:15.873Z"},{id:"38eb",name:"The Rockafeller Skank - Fatboy Slim - BT90",description:'This map is part of a 90s songpack. Search "BT90" to find all the songs in the songpack.\r\nMap is created by Heisenberg_IRL. Check out https://www.twitch.tv/heisenberg_irl',uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:153,duration:236,songName:"The Rockafeller Skank",songSubName:"Fatboy Slim [BT90]",songAuthorName:"Heisenberg",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:5545,upvotes:2421,downvotes:48,score:.9348},uploaded:"2019-02-23T13:17:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5ad1cb4a7317ddc5d54d497c8d35eda5dd9d44b9",key:"38eb",state:"Published",createdAt:"2019-02-23T13:17:40Z",sageScore:6,diffs:[{njs:12,offset:0,notes:775,bombs:884,obstacles:43,nps:3.384,length:584,characteristic:"Standard",difficulty:"Expert",events:5820,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.02,paritySummary:{errors:43,warns:44,resets:15}},{njs:18,offset:0,notes:1014,bombs:907,obstacles:41,nps:4.371,length:591.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5820,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.961,paritySummary:{errors:48,warns:98,resets:18}}],downloadURL:"https://cdn.beatsaver.com/5ad1cb4a7317ddc5d54d497c8d35eda5dd9d44b9.zip",coverURL:"https://cdn.beatsaver.com/5ad1cb4a7317ddc5d54d497c8d35eda5dd9d44b9.jpg",previewURL:"https://cdn.beatsaver.com/5ad1cb4a7317ddc5d54d497c8d35eda5dd9d44b9.mp3"}],createdAt:"2019-02-23T13:17:40Z",updatedAt:"2019-02-23T13:17:40Z",lastPublishedAt:"2019-02-23T13:17:40Z"},{id:"445f",name:"Kazuma Kiryu - Baka Mitai [Yakuza OST]",description:"Dame da ne \r\nDame yo\r\nDame na no yo ( ͒˃̩̩⌂˂̩̩ ͒)\r\n\r\nPlay Yakuza, especially the karaoke mini-games\r\nFun fact: it is impossible to listen to this song without crying (100% guaranteed) \r\n\r\n74 BPM\r\nExpert\r\n\r\n:)\r\n\r\ncontact me on discord\r\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:74,duration:119,songName:"Baka Mitai",songSubName:"Kazuma Kiryu",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:5251,upvotes:1681,downvotes:23,score:.9347},uploaded:"2019-04-08T17:08:08Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c39c719a17a081d0bd0806052bd39ba4ee39b6b0",key:"445f",state:"Published",createdAt:"2019-04-08T17:08:08Z",sageScore:4,diffs:[{njs:13.5,offset:0,notes:272,bombs:0,obstacles:21,nps:2.546,length:263.5,characteristic:"Standard",difficulty:"Expert",events:553,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:213.649,paritySummary:{errors:9,warns:11,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c39c719a17a081d0bd0806052bd39ba4ee39b6b0.zip",coverURL:"https://cdn.beatsaver.com/c39c719a17a081d0bd0806052bd39ba4ee39b6b0.jpg",previewURL:"https://cdn.beatsaver.com/c39c719a17a081d0bd0806052bd39ba4ee39b6b0.mp3"}],createdAt:"2019-04-08T17:08:08Z",updatedAt:"2019-04-08T17:08:08Z",lastPublishedAt:"2019-04-08T17:08:08Z"},{id:"bdc7",name:"That's Life - Frank Sinatra",description:"Here is an honest-to-goodness human-mapped version of Frank Sinatra's 1966 hit, That's Life. This song is way too good to just have a crappy beat sage map.\n\nNormal and Hard Standard levels, and Expert Standard, 90, and 360 levels. Note that the expert levels are all essentially the same, just with varying degrees of wobbles.\n\nThanks to Maybeemae for the playtests!\n\nhttps://youtu.be/QXjj2-fgK8U",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:77,duration:186,songName:"That's Life",songSubName:"",songAuthorName:"Frank Sinatra",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:4965,upvotes:1172,downvotes:8,score:.9346},uploaded:"2020-07-11T22:35:42.033Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7cca8c1afecd782cfd74f158c312201b780043d8",key:"bdc7",state:"Published",createdAt:"2020-07-11T22:35:42.033Z",sageScore:4,diffs:[{njs:10,offset:-.3,notes:321,bombs:0,obstacles:6,nps:1.768,length:233,characteristic:"Standard",difficulty:"Normal",events:1086,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:30,warns:41,resets:0}},{njs:12,offset:.3,notes:418,bombs:0,obstacles:8,nps:2.302,length:233,characteristic:"Standard",difficulty:"Hard",events:1086,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:24,warns:38,resets:0}},{njs:13,offset:.1,notes:492,bombs:0,obstacles:8,nps:2.71,length:233,characteristic:"Standard",difficulty:"Expert",events:1086,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:24,warns:26,resets:0}},{njs:13,offset:.3,notes:489,bombs:0,obstacles:8,nps:2.693,length:233,characteristic:"90Degree",difficulty:"Expert",events:1192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:25,warns:27,resets:0}},{njs:13,offset:.3,notes:489,bombs:0,obstacles:8,nps:2.693,length:233,characteristic:"360Degree",difficulty:"Expert",events:1166,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.558,paritySummary:{errors:25,warns:26,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7cca8c1afecd782cfd74f158c312201b780043d8.zip",coverURL:"https://cdn.beatsaver.com/7cca8c1afecd782cfd74f158c312201b780043d8.jpg",previewURL:"https://cdn.beatsaver.com/7cca8c1afecd782cfd74f158c312201b780043d8.mp3"}],createdAt:"2020-07-11T22:35:42.033Z",updatedAt:"2020-07-11T22:35:42.033Z",lastPublishedAt:"2020-07-11T22:35:42.033Z"},{id:"194c",name:"Better When I'm Dancin' - Meghan Trainor",description:'"We can do this together... I bet you feel better when you\'re dancing, yeah, yeah..."\r\nDifficulties: Expert, Hard, Normal',uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:128,duration:178,songName:"Better When I'm Dancin'",songSubName:"Meghan Trainor",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:5411,upvotes:1790,downvotes:27,score:.9345},uploaded:"2018-10-08T12:10:29Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9bd5e0efe697a38fe0da28f252a8bfb870da630a",key:"194c",state:"Published",createdAt:"2018-10-08T12:10:29Z",sageScore:5,diffs:[{njs:10,offset:0,notes:271,bombs:0,obstacles:16,nps:1.571,length:368,characteristic:"Standard",difficulty:"Normal",events:940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.5,paritySummary:{errors:31,warns:26,resets:0}},{njs:10,offset:0,notes:474,bombs:0,obstacles:16,nps:2.748,length:368,characteristic:"Standard",difficulty:"Hard",events:940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.5,paritySummary:{errors:87,warns:57,resets:0}},{njs:10,offset:0,notes:643,bombs:0,obstacles:16,nps:3.733,length:367.5,characteristic:"Standard",difficulty:"Expert",events:940,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.266,paritySummary:{errors:82,warns:71,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9bd5e0efe697a38fe0da28f252a8bfb870da630a.zip",coverURL:"https://cdn.beatsaver.com/9bd5e0efe697a38fe0da28f252a8bfb870da630a.jpg",previewURL:"https://cdn.beatsaver.com/9bd5e0efe697a38fe0da28f252a8bfb870da630a.mp3"}],createdAt:"2018-10-08T12:10:29Z",updatedAt:"2018-10-08T12:10:29Z",lastPublishedAt:"2018-10-08T12:10:29Z"},{id:"a908",name:"[TheFatRat Pack] Unity - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nUnity Stats:\nExpert+ - 1013 Notes | 4.74 NPS\nExpert - 869 Notes | 4.07 NPS\nHard - 608 Notes | 2.85 NPS\nNormal - 373 Notes | 1.75 NPS\nEasy - 264 Notes | 1.24 NPS\n\nRoughly 8-9 Hours of work\nGameplay: https://youtu.be/8lIoHcrm3wQ\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:105,duration:213,songName:"Unity",songSubName:"",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:11605,upvotes:3186,downvotes:78,score:.9344},uploaded:"2020-05-22T13:28:31.075Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"296946437e2194823129d88e7c457202e4c7f281",key:"a908",state:"Published",createdAt:"2020-05-22T13:28:31.075Z",sageScore:5,diffs:[{njs:10,offset:1,notes:264,bombs:0,obstacles:17,nps:1.262,length:366,characteristic:"Standard",difficulty:"Easy",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:48,warns:26,resets:0}},{njs:10,offset:1,notes:373,bombs:0,obstacles:16,nps:1.783,length:366,characteristic:"Standard",difficulty:"Normal",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:55,warns:24,resets:0}},{njs:12.5,offset:0,notes:608,bombs:0,obstacles:19,nps:2.907,length:366,characteristic:"Standard",difficulty:"Hard",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:22,warns:8,resets:0}},{njs:15,offset:-.25,notes:869,bombs:0,obstacles:17,nps:4.155,length:366,characteristic:"Standard",difficulty:"Expert",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:3,warns:0,resets:0}},{njs:16,offset:.5,notes:1013,bombs:0,obstacles:24,nps:4.844,length:366,characteristic:"Standard",difficulty:"ExpertPlus",events:3460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.143,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/296946437e2194823129d88e7c457202e4c7f281.zip",coverURL:"https://cdn.beatsaver.com/296946437e2194823129d88e7c457202e4c7f281.jpg",previewURL:"https://cdn.beatsaver.com/296946437e2194823129d88e7c457202e4c7f281.mp3"}],createdAt:"2020-05-22T13:28:31.075Z",updatedAt:"2020-05-22T13:28:31.075Z",lastPublishedAt:"2020-05-22T13:28:31.075Z"},{id:"a465",name:"The Chain - Fleetwood Mac",description:"Today (May 9) is my mapperversary! I released my first map - Comfort Eagle - a year ago today. Since then, I've released another 50 maps - almost one a week for a year! And of course, one of those is Little Shop, which is really 13 songs in one monster map. Help me celebrate my mapperversary by playing this map of Fleetwood Mac's 1977 classic, The Chain. Normal and Expert Standard, and Expert Plus 360 levels.\n\nThanks Beat Saber community for a really fun year of mapping and having fun with y’all! Thanks to the Beat Saber Modding Group for helping me get started in the beginning - especially CyanSnow and HelenCarnate - you guys were a great help to me at the beginning, despite being new mappers yourselves! Thanks to the Ramen Noodle crew for letting this old guy hang out and pretend he’s one of the cool mappers. Thanks to Darkuni and Maybeemae for being awesome friends! Extra special thanks to my mapping buddy, MajorPickle – you da man! Here’s to many more years to come!\n\nMy initial post for this map mentioned that any videos would be insta-blocked on youtube, because mine was. Since then, several people have posted videos of it without problem, so apparently it's okay.\n\nhttps://bittube.tv/post/0d3e4790-7a77-498b-9223-3d70c3ac9234",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:152,duration:252,songName:"The Chain",songSubName:"",songAuthorName:"Fleetwood Mac",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:7216,upvotes:1873,downvotes:30,score:.9344},uploaded:"2020-05-09T11:53:28.520Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4db96dd119b51d7f7124b6055db2ee1131452667",key:"a465",state:"Published",createdAt:"2020-05-09T11:53:28.520Z",sageScore:3,diffs:[{njs:10,offset:0,notes:469,bombs:0,obstacles:135,nps:1.883,length:631,characteristic:"Standard",difficulty:"Normal",events:555,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.079,paritySummary:{errors:57,warns:51,resets:0}},{njs:13,offset:.3,notes:851,bombs:68,obstacles:113,nps:3.417,length:631,characteristic:"Standard",difficulty:"Expert",events:554,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.079,paritySummary:{errors:36,warns:33,resets:9}},{njs:13,offset:.5,notes:851,bombs:63,obstacles:116,nps:3.417,length:631,characteristic:"360Degree",difficulty:"ExpertPlus",events:766,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.079,paritySummary:{errors:36,warns:33,resets:9}}],downloadURL:"https://cdn.beatsaver.com/4db96dd119b51d7f7124b6055db2ee1131452667.zip",coverURL:"https://cdn.beatsaver.com/4db96dd119b51d7f7124b6055db2ee1131452667.jpg",previewURL:"https://cdn.beatsaver.com/4db96dd119b51d7f7124b6055db2ee1131452667.mp3"}],createdAt:"2020-05-09T11:53:28.520Z",updatedAt:"2020-05-09T11:53:28.520Z",lastPublishedAt:"2020-05-09T11:53:28.520Z"},{id:"6100",name:"Keina Suda - veil [Fire Force Ending]",description:"Fire Force is rad\nBoth the op and ed are also rad\n\nBPM 150 | Length 1:30\nExpert+\nExpert\nHard\nNormal\n\nplease enjoy\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:150,duration:91,songName:"veil",songSubName:"",songAuthorName:"Keina Suda",levelAuthorName:"ETAN"},stats:{plays:0,downloads:5151,upvotes:1646,downvotes:23,score:.9341},uploaded:"2019-09-03T00:05:16.685Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f8bd8b3b1fecc3834a6ea88da39a055c98013823",key:"6100",state:"Published",createdAt:"2019-09-03T00:05:16.685Z",sageScore:3,diffs:[{njs:11,offset:0,notes:155,bombs:0,obstacles:6,nps:1.872,length:207,characteristic:"Standard",difficulty:"Normal",events:2814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:82.8,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:0,notes:203,bombs:0,obstacles:6,nps:2.452,length:207,characteristic:"Standard",difficulty:"Hard",events:2814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:82.8,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:280,bombs:0,obstacles:6,nps:3.373,length:207.5,characteristic:"Standard",difficulty:"Expert",events:2814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:83,paritySummary:{errors:7,warns:6,resets:0}},{njs:18,offset:0,notes:366,bombs:5,obstacles:6,nps:4.41,length:207.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2822,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:83,paritySummary:{errors:8,warns:9,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f8bd8b3b1fecc3834a6ea88da39a055c98013823.zip",coverURL:"https://cdn.beatsaver.com/f8bd8b3b1fecc3834a6ea88da39a055c98013823.jpg",previewURL:"https://cdn.beatsaver.com/f8bd8b3b1fecc3834a6ea88da39a055c98013823.mp3"}],createdAt:"2019-09-03T00:05:16.685Z",updatedAt:"2019-09-03T00:05:16.685Z",lastPublishedAt:"2019-09-03T00:05:16.685Z"},{id:"b",name:"Imagine Dragons - Believer",description:"Currently expert only. Events included.",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:205,songName:"Believer",songSubName:"Imagine Dragons",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:19970,upvotes:11803,downvotes:476,score:.9341},uploaded:"2018-05-08T18:56:36Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"19f2879d11a91b51a5c090d63471c3e8d9b7aee3",key:"b",state:"Published",createdAt:"2018-05-08T18:56:36Z",sageScore:5,diffs:[{njs:10,offset:0,notes:546,bombs:0,obstacles:10,nps:2.754,length:413,characteristic:"Standard",difficulty:"Expert",events:551,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.24,paritySummary:{errors:130,warns:49,resets:0},stars:1.44}],downloadURL:"https://cdn.beatsaver.com/19f2879d11a91b51a5c090d63471c3e8d9b7aee3.zip",coverURL:"https://cdn.beatsaver.com/19f2879d11a91b51a5c090d63471c3e8d9b7aee3.jpg",previewURL:"https://cdn.beatsaver.com/19f2879d11a91b51a5c090d63471c3e8d9b7aee3.mp3"}],createdAt:"2018-05-08T18:56:36Z",updatedAt:"2018-05-08T18:56:36Z",lastPublishedAt:"2018-05-08T18:56:36Z"},{id:"8115",name:"Los! Los! Los! (German Ver.) [Youjo Senki Ending] - Selphius",description:"German cover of Los! Los! Los! performed by Selphius. It was originally performed by Aoi Yuuki, the voice actress of Tanya Degurechaff. \n\nHearing this song in German just feels so right! The original song was also has German lyrics but it was sung by a Japanese so it really didn't fit.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:119,duration:215,songName:"Los! Los! Los! (German Ver.)",songSubName:"",songAuthorName:"Selphius",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:10730,upvotes:1513,downvotes:19,score:.934},uploaded:"2020-01-25T01:56:05.274Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cdfd561127d3a71c02af0996c215242fcb789f79",key:"8115",state:"Published",createdAt:"2020-01-25T01:56:05.274Z",sageScore:5,diffs:[{njs:12,offset:0,notes:723,bombs:26,obstacles:13,nps:3.468,length:413.5,characteristic:"Standard",difficulty:"Hard",events:4753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.487,paritySummary:{errors:27,warns:29,resets:4}},{njs:16,offset:0,notes:974,bombs:16,obstacles:25,nps:4.672,length:413.5,characteristic:"Standard",difficulty:"Expert",events:4753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.487,paritySummary:{errors:21,warns:12,resets:4}},{njs:20,offset:.5,notes:1098,bombs:16,obstacles:14,nps:5.267,length:413.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4753,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.487,paritySummary:{errors:20,warns:13,resets:2}}],downloadURL:"https://cdn.beatsaver.com/cdfd561127d3a71c02af0996c215242fcb789f79.zip",coverURL:"https://cdn.beatsaver.com/cdfd561127d3a71c02af0996c215242fcb789f79.jpg",previewURL:"https://cdn.beatsaver.com/cdfd561127d3a71c02af0996c215242fcb789f79.mp3"}],createdAt:"2020-01-25T01:56:05.274Z",updatedAt:"2020-01-25T01:56:05.274Z",lastPublishedAt:"2020-01-25T01:56:05.274Z"},{id:"31fa",name:"Joji - SLOW DANCING IN THE DARK",description:"89 BPM / 3:31 Runtime\r\nEasy / 223 Notes\r\nNormal / 327 Notes\r\nHard / 441 Notes\r\nExpert / 631 Notes\r\nExpert+ / ???\r\n\r\nIf this lags your computer, I'm sorry! I tried the best I could to add the walls while also optimizing for performance. Try playing with No Obstacles, that will fix the issue. Should be fine for most people.\r\n\r\nGameplay: https://youtu.be/Pweso54qcwk",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:89,duration:212,songName:"SLOW DANCING IN THE DARK",songSubName:"Joji",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:7575,upvotes:2691,downvotes:61,score:.9338},uploaded:"2019-01-28T22:17:59Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c983fa1786f03be4965b2319daa86f74ce0be831",key:"31fa",state:"Published",createdAt:"2019-01-28T22:17:59Z",sageScore:6,diffs:[{njs:12,offset:0,notes:223,bombs:0,obstacles:55,nps:1.095,length:302,characteristic:"Standard",difficulty:"Easy",events:2312,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.596,paritySummary:{errors:75,warns:8,resets:0}},{njs:10,offset:0,notes:327,bombs:0,obstacles:55,nps:1.601,length:303,characteristic:"Standard",difficulty:"Normal",events:2312,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.27,paritySummary:{errors:79,warns:25,resets:0}},{njs:12,offset:0,notes:441,bombs:0,obstacles:165,nps:2.159,length:303,characteristic:"Standard",difficulty:"Hard",events:2312,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.27,paritySummary:{errors:55,warns:38,resets:0}},{njs:12,offset:0,notes:631,bombs:16,obstacles:258,nps:3.099,length:302,characteristic:"Standard",difficulty:"Expert",events:2312,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.596,paritySummary:{errors:49,warns:46,resets:4}}],downloadURL:"https://cdn.beatsaver.com/c983fa1786f03be4965b2319daa86f74ce0be831.zip",coverURL:"https://cdn.beatsaver.com/c983fa1786f03be4965b2319daa86f74ce0be831.jpg",previewURL:"https://cdn.beatsaver.com/c983fa1786f03be4965b2319daa86f74ce0be831.mp3"}],createdAt:"2019-01-28T22:17:59Z",updatedAt:"2019-01-28T22:17:59Z",lastPublishedAt:"2019-01-28T22:17:59Z"},{id:"32d4",name:"MariannE (Lanota Edit) - Yooh",description:"Lanota Edit (2:43)\r\nNotes per Second / Video Play-through (All Full Combo):\r\nEasy: 1.4 / https://streamable.com/6y473\r\nNormal: 1.5 / https://streamable.com/ctc6c\r\nHard: 2.6 / https://streamable.com/ot9ws\r\nExpert: 3.8 / https://streamable.com/4gsdz\r\nExpert+: 6.1 / https://streamable.com/rizv3 (1st Person) \r\n\r\nThe jump in difficulty from Expert to Expert+ is substantial, so watch out!\r\nAll difficulties as always!",uploader:{id:11373,name:"redmagi",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e9d2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9d2?d=retro",type:"SIMPLE"},metadata:{bpm:191,duration:164,songName:"MariannE (Lanota Edit)",songSubName:"Yooh",songAuthorName:"Redmagi",levelAuthorName:"redmagi"},stats:{plays:0,downloads:7763,upvotes:5249,downvotes:168,score:.9337},uploaded:"2019-02-01T16:17:26Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"afb47d1abb417a76a4293d29a725d6dd74d76782",key:"32d4",state:"Published",createdAt:"2019-02-01T16:17:26Z",sageScore:8,diffs:[{njs:10,offset:1,notes:235,bombs:0,obstacles:2,nps:1.508,length:496,characteristic:"Standard",difficulty:"Easy",events:8433,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:19,warns:19,resets:0},stars:.94},{njs:12,offset:1,notes:246,bombs:32,obstacles:6,nps:1.579,length:496,characteristic:"Standard",difficulty:"Normal",events:8433,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:19,warns:24,resets:5},stars:1.08},{njs:14,offset:1,notes:435,bombs:48,obstacles:4,nps:2.792,length:496,characteristic:"Standard",difficulty:"Hard",events:8435,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:23,warns:37,resets:10},stars:1.65},{njs:16,offset:1,notes:622,bombs:86,obstacles:4,nps:3.992,length:496,characteristic:"Standard",difficulty:"Expert",events:8433,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:43,warns:39,resets:5},stars:2.64},{njs:18,offset:0,notes:1011,bombs:0,obstacles:0,nps:6.489,length:496,characteristic:"Standard",difficulty:"ExpertPlus",events:8431,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.812,paritySummary:{errors:44,warns:71,resets:0},stars:5.71}],downloadURL:"https://cdn.beatsaver.com/afb47d1abb417a76a4293d29a725d6dd74d76782.zip",coverURL:"https://cdn.beatsaver.com/afb47d1abb417a76a4293d29a725d6dd74d76782.jpg",previewURL:"https://cdn.beatsaver.com/afb47d1abb417a76a4293d29a725d6dd74d76782.mp3"}],createdAt:"2019-02-01T16:17:26Z",updatedAt:"2019-02-01T16:17:26Z",lastPublishedAt:"2019-02-01T16:17:26Z"},{id:"a68b",name:"[Noodle Touhou] Masayoshi Minoshima - Bad Apple!! (Nhato Remix)",description:"Expert+ Preview: https://www.youtube.com/watch?v=CpfdPKtiYXs\n\nThis song makes me nostalgic to my first exposure to Touhou. I hope this brings back that nostalgia in a new light before we all fade to black.\n\nThis map is part of the first Touhou map pack brought to you by the Ramen Noodle mapper group! It contains all sorts of covers, arrangements and remix of the original Touhou soundtrack. We hope you enjoy it a lot!\nCheckout the playlist here: https://bsaber.com/noodle-touhou/\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725 !",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:138,duration:369,songName:"Bad Apple!!",songSubName:"ft. nomico (Nhato Remix)",songAuthorName:"Masayoshi Minoshima",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:6326,upvotes:2755,downvotes:64,score:.9336},uploaded:"2020-05-15T18:01:27.405Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3b86d374847b41800d8b3aebb2043138db06ad64",key:"a68b",state:"Published",createdAt:"2020-05-15T18:01:27.405Z",sageScore:4,diffs:[{njs:12,offset:.7,notes:1161,bombs:0,obstacles:307,nps:3.21,length:832,characteristic:"Standard",difficulty:"Hard",events:6683,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:361.739,paritySummary:{errors:6,warns:6,resets:0}},{njs:16,offset:0,notes:1341,bombs:0,obstacles:281,nps:3.707,length:832,characteristic:"Standard",difficulty:"Expert",events:6683,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:361.739,paritySummary:{errors:7,warns:9,resets:0}},{njs:20,offset:-.4,notes:1560,bombs:0,obstacles:239,nps:4.312,length:832.063,characteristic:"Standard",difficulty:"ExpertPlus",events:6683,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:361.766,paritySummary:{errors:16,warns:24,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3b86d374847b41800d8b3aebb2043138db06ad64.zip",coverURL:"https://cdn.beatsaver.com/3b86d374847b41800d8b3aebb2043138db06ad64.jpg",previewURL:"https://cdn.beatsaver.com/3b86d374847b41800d8b3aebb2043138db06ad64.mp3"}],createdAt:"2020-05-15T18:01:27.405Z",updatedAt:"2020-05-15T18:01:27.405Z",lastPublishedAt:"2020-05-15T18:01:27.405Z"},{id:"1ff4",name:"Sheppard - Geronimo (100K Contest)",description:"This community is amazing, in just 6 months we've reached 100,000 members with no signs of slowing down. To celebrate, this map was created with 21 others to bring you the 100K contest! Here, you can win over $7000 in prizes!!\r\n\r\nTo enter, you need to go to the following website and download the mod installer: https://bsaber.com/100k-contest/\r\n\r\nThe competition is now over, but the maps remain!\r\nVideo Preview: https://www.youtube.com/watch?v=k4nEgDrI0vU",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:142,duration:219,songName:"Geronimo",songSubName:"Sheppard",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:6998,upvotes:2775,downvotes:65,score:.9336},uploaded:"2018-11-12T18:28:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"41a84fc21bdbfea8ca03021237662596d798f662",key:"1ff4",state:"Published",createdAt:"2018-11-12T18:28:10Z",sageScore:5,diffs:[{njs:10,offset:0,notes:293,bombs:20,obstacles:21,nps:1.421,length:488,characteristic:"Standard",difficulty:"Easy",events:1188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.197,paritySummary:{errors:29,warns:16,resets:0}},{njs:10,offset:0,notes:338,bombs:20,obstacles:21,nps:1.639,length:488,characteristic:"Standard",difficulty:"Normal",events:1188,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.197,paritySummary:{errors:32,warns:26,resets:0}},{njs:10,offset:0,notes:570,bombs:20,obstacles:21,nps:2.764,length:488,characteristic:"Standard",difficulty:"Hard",events:1190,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.197,paritySummary:{errors:33,warns:30,resets:0}},{njs:12,offset:0,notes:707,bombs:20,obstacles:21,nps:3.429,length:488,characteristic:"Standard",difficulty:"Expert",events:1192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.197,paritySummary:{errors:55,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/41a84fc21bdbfea8ca03021237662596d798f662.zip",coverURL:"https://cdn.beatsaver.com/41a84fc21bdbfea8ca03021237662596d798f662.jpg",previewURL:"https://cdn.beatsaver.com/41a84fc21bdbfea8ca03021237662596d798f662.mp3"}],createdAt:"2018-11-12T18:28:10Z",updatedAt:"2018-11-12T18:28:10Z",lastPublishedAt:"2018-11-12T18:28:10Z"},{id:"4e86",name:"Zero to Hero - Hercules",description:"E+ FC: https://www.youtube.com/watch?v=SVzMwvrsQa0",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:120,duration:140,songName:"Zero to Hero",songSubName:"Hercules",songAuthorName:"Ryger",levelAuthorName:"Ryger"},stats:{plays:0,downloads:5259,upvotes:2235,downvotes:45,score:.9334},uploaded:"2019-05-22T16:18:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0b4cda7dd0b19972b9965f7c39ad3a04ceb9f110",key:"4e86",state:"Published",createdAt:"2019-05-22T16:18:18Z",sageScore:2,diffs:[{njs:12,offset:0,notes:477,bombs:0,obstacles:0,nps:3.529,length:376.19,characteristic:"Standard",difficulty:"Hard",events:2354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.095,paritySummary:{errors:26,warns:16,resets:0}},{njs:14,offset:0,notes:604,bombs:0,obstacles:0,nps:4.469,length:376.19,characteristic:"Standard",difficulty:"Expert",events:2354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.095,paritySummary:{errors:30,warns:19,resets:0}},{njs:15,offset:0,notes:644,bombs:0,obstacles:0,nps:4.752,length:377.206,characteristic:"Standard",difficulty:"ExpertPlus",events:2354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.603,paritySummary:{errors:30,warns:32,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0b4cda7dd0b19972b9965f7c39ad3a04ceb9f110.zip",coverURL:"https://cdn.beatsaver.com/0b4cda7dd0b19972b9965f7c39ad3a04ceb9f110.jpg",previewURL:"https://cdn.beatsaver.com/0b4cda7dd0b19972b9965f7c39ad3a04ceb9f110.mp3"}],createdAt:"2019-05-22T16:18:18Z",updatedAt:"2019-05-22T16:18:18Z",lastPublishedAt:"2019-05-22T16:18:18Z"},{id:"3700",name:"U Got That",description:"",uploader:{id:27874,name:"serenity",uniqueSet:!0,hash:"5cff0b7798cc5a672c855426",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855426?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:190,songName:"U Got That",songSubName:"Halogen",songAuthorName:"Serenity",levelAuthorName:"Serenity"},stats:{plays:0,downloads:6766,upvotes:7958,downvotes:296,score:.9334},uploaded:"2019-02-17T05:53:20Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b671c2401d1b8af29efe71e448f586223e6ca70a",key:"3700",state:"Published",createdAt:"2019-02-17T05:53:20Z",sageScore:5,diffs:[{njs:10,offset:0,notes:732,bombs:24,obstacles:55,nps:3.96,length:382,characteristic:"Standard",difficulty:"Expert",events:1040,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.839,paritySummary:{errors:108,warns:73,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b671c2401d1b8af29efe71e448f586223e6ca70a.zip",coverURL:"https://cdn.beatsaver.com/b671c2401d1b8af29efe71e448f586223e6ca70a.jpg",previewURL:"https://cdn.beatsaver.com/b671c2401d1b8af29efe71e448f586223e6ca70a.mp3"}],createdAt:"2019-02-17T05:53:20Z",updatedAt:"2019-02-17T05:53:20Z",lastPublishedAt:"2019-02-17T05:53:20Z"},{id:"77e9",name:"Jingo Jungle [Saga of Tanya the Evil Opening] - AmaLee",description:'AmaLee\'s English cover of "Jingo Jungle", the opening from Saga of Tanya the Evil (Youjo Senki). Original song by MYTH & ROID.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:130,duration:225,songName:"Jingo Jungle",songSubName:"",songAuthorName:"AmaLee",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2875,upvotes:1595,downvotes:23,score:.9333},uploaded:"2019-12-21T02:44:34.295Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f90a2e4f8ee7b1f33543cddccb8baea660253d4a",key:"77e9",state:"Published",createdAt:"2019-12-21T02:44:34.295Z",sageScore:5,diffs:[{njs:12,offset:0,notes:581,bombs:104,obstacles:28,nps:2.647,length:475.5,characteristic:"Standard",difficulty:"Hard",events:5987,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:35,warns:15,resets:10}},{njs:15,offset:0,notes:950,bombs:78,obstacles:14,nps:4.329,length:475.5,characteristic:"Standard",difficulty:"Expert",events:5987,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:42,warns:48,resets:8}},{njs:17,offset:0,notes:1184,bombs:105,obstacles:17,nps:5.395,length:475.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5987,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:32,warns:43,resets:16}}],downloadURL:"https://cdn.beatsaver.com/f90a2e4f8ee7b1f33543cddccb8baea660253d4a.zip",coverURL:"https://cdn.beatsaver.com/f90a2e4f8ee7b1f33543cddccb8baea660253d4a.jpg",previewURL:"https://cdn.beatsaver.com/f90a2e4f8ee7b1f33543cddccb8baea660253d4a.mp3"}],createdAt:"2019-12-21T02:44:34.295Z",updatedAt:"2019-12-21T02:44:34.295Z",lastPublishedAt:"2019-12-21T02:44:34.295Z"},{id:"16ff",name:"Little Swing - AronChupa",description:"Preview: https://youtu.be/_IERvrKBKB0\r\nI wasn't happy with all the other versions of this song, so I made my own.",uploader:{id:4285668,name:"connorjc",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fb89",avatar:"https://cdn.beatsaver.com/avatar/99724057217355776.png",type:"DISCORD"},metadata:{bpm:126,duration:165,songName:"Little Swing",songSubName:"AronChupa feat. Little Sis Nora",songAuthorName:"ConnorJC",levelAuthorName:"ConnorJC"},stats:{plays:0,downloads:4721,upvotes:2877,downvotes:70,score:.9333},uploaded:"2018-09-24T14:51:17Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"235336f468a6290c87d724616e9b1d952ae3b8f2",key:"16ff",state:"Published",createdAt:"2018-09-24T14:51:17Z",sageScore:4,diffs:[{njs:12,offset:0,notes:669,bombs:0,obstacles:28,nps:4.216,length:333.25,characteristic:"Standard",difficulty:"Expert",events:460,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.69,paritySummary:{errors:37,warns:55,resets:0}}],downloadURL:"https://cdn.beatsaver.com/235336f468a6290c87d724616e9b1d952ae3b8f2.zip",coverURL:"https://cdn.beatsaver.com/235336f468a6290c87d724616e9b1d952ae3b8f2.jpg",previewURL:"https://cdn.beatsaver.com/235336f468a6290c87d724616e9b1d952ae3b8f2.mp3"}],createdAt:"2018-09-24T14:51:17Z",updatedAt:"2018-09-24T14:51:17Z",lastPublishedAt:"2018-09-24T14:51:17Z"},{id:"1230",name:"Hymn for the Weekend - Coldplay",description:"Hymn for the weekend by Coldplay\r\nBPM: 90 (AHH SLOW)\r\nRuntime: 4m3s\r\nDifficulties: Easy, Normal, Hard, Expert\r\n\r\nDemo : https://vimeo.com/286997137",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:90,duration:244,songName:"Hymn For The Weekend",songSubName:"Coldplay",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:9700,upvotes:3156,downvotes:81,score:.9333},uploaded:"2018-08-28T01:41:15Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f050cd142882f102226efb614cca3a1ac1368fff",key:"1230",state:"Published",createdAt:"2018-08-28T01:41:15Z",sageScore:5,diffs:[{njs:12,offset:0,notes:202,bombs:0,obstacles:8,nps:.935,length:324,characteristic:"Standard",difficulty:"Easy",events:892,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216,paritySummary:{errors:35,warns:7,resets:0}},{njs:12,offset:0,notes:377,bombs:0,obstacles:8,nps:1.745,length:324,characteristic:"Standard",difficulty:"Normal",events:895,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216,paritySummary:{errors:49,warns:39,resets:0}},{njs:12,offset:0,notes:573,bombs:0,obstacles:8,nps:2.617,length:328.375,characteristic:"Standard",difficulty:"Hard",events:893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.917,paritySummary:{errors:50,warns:56,resets:0}},{njs:12,offset:0,notes:729,bombs:0,obstacles:8,nps:3.33,length:328.375,characteristic:"Standard",difficulty:"Expert",events:893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.917,paritySummary:{errors:78,warns:87,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f050cd142882f102226efb614cca3a1ac1368fff.zip",coverURL:"https://cdn.beatsaver.com/f050cd142882f102226efb614cca3a1ac1368fff.jpg",previewURL:"https://cdn.beatsaver.com/f050cd142882f102226efb614cca3a1ac1368fff.mp3"}],createdAt:"2018-08-28T01:41:15Z",updatedAt:"2018-08-28T01:41:15Z",lastPublishedAt:"2018-08-28T01:41:15Z"},{id:"276a",name:"Ain't Nothin' like a Funky Beat - Hideki Naganuma",description:"BAH BAH BAAAH BAH\r\nBAHBAH BUBAH BAH BAH BAAAAH BAH\r\nAint nothin like a funky beat\r\nMy Camera plus mod wasnt working :(\r\n\r\nDifficulties - Expert, Hard, Normal, , Easy\r\nBPM - 142\r\nPreview: https://youtu.be/92pCsIPxv10",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:142,duration:205,songName:"AIN'T NOTHIN' LIKE A FUNKY BEAT",songSubName:"Hideki Naganuma",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:5635,upvotes:2795,downvotes:67,score:.9332},uploaded:"2018-12-22T17:07:11Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a2c21a3a478f14422185f77cc8f9030f638fcf06",key:"276a",state:"Published",createdAt:"2018-12-22T17:07:11Z",sageScore:6,diffs:[{njs:15,offset:0,notes:237,bombs:0,obstacles:14,nps:1.214,length:462,characteristic:"Standard",difficulty:"Easy",events:1171,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.211,paritySummary:{errors:30,warns:16,resets:0}},{njs:15,offset:0,notes:441,bombs:0,obstacles:14,nps:2.239,length:466.25,characteristic:"Standard",difficulty:"Normal",events:1171,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.007,paritySummary:{errors:75,warns:40,resets:0}},{njs:15,offset:0,notes:684,bombs:0,obstacles:14,nps:3.472,length:466.25,characteristic:"Standard",difficulty:"Hard",events:1171,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.007,paritySummary:{errors:70,warns:95,resets:0}},{njs:15,offset:0,notes:838,bombs:0,obstacles:14,nps:4.254,length:466.25,characteristic:"Standard",difficulty:"Expert",events:1171,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.007,paritySummary:{errors:66,warns:76,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a2c21a3a478f14422185f77cc8f9030f638fcf06.zip",coverURL:"https://cdn.beatsaver.com/a2c21a3a478f14422185f77cc8f9030f638fcf06.jpg",previewURL:"https://cdn.beatsaver.com/a2c21a3a478f14422185f77cc8f9030f638fcf06.mp3"}],createdAt:"2018-12-22T17:07:11Z",updatedAt:"2018-12-22T17:07:11Z",lastPublishedAt:"2018-12-22T17:07:11Z"},{id:"46d4",name:"Rap God - Eminem",description:"",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:148,duration:366,songName:"Rap God",songSubName:"Eminem",songAuthorName:"Ryger",levelAuthorName:"Ryger"},stats:{plays:0,downloads:17173,upvotes:8866,downvotes:344,score:.933},uploaded:"2019-04-18T16:38:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a38fd8581eb892cc7090f78bfe61e9c256478cf3",key:"46d4",state:"Published",createdAt:"2019-04-18T16:38:34Z",sageScore:6,diffs:[{njs:15,offset:0,notes:2060,bombs:6,obstacles:2,nps:5.724,length:887.75,characteristic:"Standard",difficulty:"Expert",events:9351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:359.899,paritySummary:{errors:80,warns:66,resets:0}},{njs:15,offset:0,notes:2060,bombs:6,obstacles:2,nps:5.724,length:887.75,characteristic:"Standard",difficulty:"ExpertPlus",events:9351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:359.899,paritySummary:{errors:80,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a38fd8581eb892cc7090f78bfe61e9c256478cf3.zip",coverURL:"https://cdn.beatsaver.com/a38fd8581eb892cc7090f78bfe61e9c256478cf3.jpg",previewURL:"https://cdn.beatsaver.com/a38fd8581eb892cc7090f78bfe61e9c256478cf3.mp3"}],createdAt:"2019-04-18T16:38:34Z",updatedAt:"2019-04-18T16:38:34Z",lastPublishedAt:"2019-04-18T16:38:34Z"},{id:"1188e",name:"Fox Stevenson - All Eyes On Me",description:"Man I love Stan, had a lot of fun making this :p\n\nhas Chroma lights",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:172,duration:181,songName:"All Eyes On Me",songSubName:"",songAuthorName:"Fox Stevenson",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:7649,upvotes:1891,downvotes:34,score:.9328},uploaded:"2020-11-30T15:14:16.512Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"77300a040e85107d5a745f2f9f2e5ced43205f4a",key:"1188e",state:"Published",createdAt:"2020-11-30T15:14:16.512Z",sageScore:5,diffs:[{njs:14,offset:1,notes:491,bombs:12,obstacles:66,nps:2.779,length:506.5,characteristic:"Standard",difficulty:"Hard",events:4370,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:176.686,paritySummary:{errors:0,warns:0,resets:6}},{njs:17,offset:.2,notes:748,bombs:0,obstacles:27,nps:4.213,length:509,characteristic:"Standard",difficulty:"Expert",events:4370,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:177.558,paritySummary:{errors:0,warns:0,resets:0}},{njs:21,offset:-.3,notes:951,bombs:0,obstacles:27,nps:5.382,length:506.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4370,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:176.686,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/77300a040e85107d5a745f2f9f2e5ced43205f4a.zip",coverURL:"https://cdn.beatsaver.com/77300a040e85107d5a745f2f9f2e5ced43205f4a.jpg",previewURL:"https://cdn.beatsaver.com/77300a040e85107d5a745f2f9f2e5ced43205f4a.mp3"}],createdAt:"2020-11-30T15:14:16.512Z",updatedAt:"2020-11-30T15:14:16.512Z",lastPublishedAt:"2020-11-30T15:14:16.512Z"},{id:"2c3",name:"Koto - Clozee",description:"Here it is finally, Koto - Clozee from LIV's announcement featuring their depth camera so you don't have to have a green screen! https://twitter.com/LIV/status/1001490921295417345\r\n\r\nIf you love my maps and want to support me, heres my patreon!\r\nhttps://www.patreon.com/purphorosVR",uploader:{id:49373,name:"purphoros",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea98",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea98?d=retro",type:"SIMPLE"},metadata:{bpm:100,duration:253,songName:"Koto",songSubName:"CloZee",songAuthorName:"Purphoros",levelAuthorName:"purphoros"},stats:{plays:0,downloads:5247,upvotes:3689,downvotes:105,score:.9328},uploaded:"2018-05-29T17:19:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c1638525606ecb7aea6d6a71d124aa79296ab842",key:"2c3",state:"Published",createdAt:"2018-05-29T17:19:09Z",sageScore:4,diffs:[{njs:10,offset:0,notes:858,bombs:0,obstacles:12,nps:3.575,length:400,characteristic:"Standard",difficulty:"Expert",events:72,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240,paritySummary:{errors:108,warns:55,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c1638525606ecb7aea6d6a71d124aa79296ab842.zip",coverURL:"https://cdn.beatsaver.com/c1638525606ecb7aea6d6a71d124aa79296ab842.jpg",previewURL:"https://cdn.beatsaver.com/c1638525606ecb7aea6d6a71d124aa79296ab842.mp3"}],createdAt:"2018-05-29T17:19:09Z",updatedAt:"2018-05-29T17:19:09Z",lastPublishedAt:"2018-05-29T17:19:09Z"},{id:"15b16",name:"Codly - Lucy, The God Of Time [Wall Map]",description:"This map has 2 diffs Expert and ExpertPlus\nExpert - Reddek\nExpertPlus - shan_man\n\nLink to preview: https://youtu.be/_LUXKlcpue4\n\nLink to original song: https://youtu.be/kyCXzxmebB4\nSong By: Codly and Sakuzyo\n\nOkay, I put way to much time into this...\n\nHuge thanks to Shan_Man for making a diff in this\n\nAlso thank you Reaxt for your help with the last drop\n\nMade with \n-Demo.js script\n-ScuffedWalls\n\nshan_man: https://beatsaver.com/uploader/5ec5aaa616c9680006500e0a\n\nWould love some feedback in the dms!:\nReddek#5864\nshan_man#7777",uploader:{id:4233941,name:"reddek",uniqueSet:!0,hash:"5dbfb4426dea0b0006bd328d",avatar:"https://cdn.beatsaver.com/avatar/177436487086768129.png",type:"DISCORD"},metadata:{bpm:170,duration:267,songName:"Lucy, The God of Time",songSubName:"",songAuthorName:"Codly",levelAuthorName:"Shan_Man & Reddek"},stats:{plays:0,downloads:3574,upvotes:1185,downvotes:11,score:.9327},uploaded:"2021-03-21T02:47:31.861Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"dd4a025f814b8570f2726939b1c5b000ed210ecf",key:"15b16",state:"Published",createdAt:"2021-03-21T02:47:31.861Z",sageScore:3,diffs:[{njs:20,offset:-.4,notes:873,bombs:117,obstacles:4342,nps:3.654,length:677,characteristic:"Standard",difficulty:"Expert",events:31216,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:238.941,paritySummary:{errors:0,warns:0,resets:3}},{njs:20,offset:-.4,notes:1353,bombs:44,obstacles:4342,nps:5.662,length:677,characteristic:"Standard",difficulty:"ExpertPlus",events:31217,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:238.941,paritySummary:{errors:0,warns:0,resets:3}}],downloadURL:"https://cdn.beatsaver.com/dd4a025f814b8570f2726939b1c5b000ed210ecf.zip",coverURL:"https://cdn.beatsaver.com/dd4a025f814b8570f2726939b1c5b000ed210ecf.jpg",previewURL:"https://cdn.beatsaver.com/dd4a025f814b8570f2726939b1c5b000ed210ecf.mp3"}],createdAt:"2021-03-21T02:47:31.861Z",updatedAt:"2021-03-21T02:47:31.861Z",lastPublishedAt:"2021-03-21T02:47:31.861Z"},{id:"2c3e",name:"Pump It - Black Eyed Peas",description:"Map #9. This was a special request by RedMagi, and he certainly deserves it for tirelessly testing all the other garbage we throw at him. Baxter with the funky patterns, RedMagi with some challenging streams in Expert+, and ALSO the amazing lighting effects! (Oh and of course a heck of a lot of play testing and feedback for fine tuning.) Hope you enjoy it as much as we do.\r\n\r\nAlso a big thank you to all our playtesters for the useful feedback: ManDynasty, Trolav, Crankor, Scrappy, and TurtleSquared\r\n\r\nhttps://youtu.be/YJnL0gq1z7s (Easy)\r\nhttps://youtu.be/U0DIjo4_ZE0 (Normal)\r\nhttps://youtu.be/zks4TgpfoR4 (Hard)\r\nhttps://youtu.be/rRq_fHRSCoI (Expert 3rd person)\r\nhttps://youtu.be/9ThPg99Xm9A (Expert 1st person)\r\nhttps://youtu.be/NPOPWH8bb10 (Expert+)",uploader:{id:27595,name:"baxter395",uniqueSet:!0,hash:"5cff0b7598cc5a672c852f7b",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c852f7b?d=retro",type:"SIMPLE"},metadata:{bpm:154,duration:215,songName:"Pump It",songSubName:"Black Eyed Peas",songAuthorName:"baxter395 (M) RedMagi (M, L)",levelAuthorName:"baxter395"},stats:{plays:0,downloads:12322,upvotes:4839,downvotes:156,score:.9327},uploaded:"2019-01-09T05:13:56Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2884021451135e751d3c442ae92243697744b349",key:"2c3e",state:"Published",createdAt:"2019-01-09T05:13:56Z",sageScore:4,diffs:[{njs:10,offset:0,notes:306,bombs:0,obstacles:15,nps:1.144,length:686.679,characteristic:"Standard",difficulty:"Easy",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:267.537,paritySummary:{errors:72,warns:22,resets:0}},{njs:11,offset:0,notes:393,bombs:0,obstacles:22,nps:1.877,length:537.407,characteristic:"Standard",difficulty:"Normal",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.38,paritySummary:{errors:77,warns:43,resets:0}},{njs:12,offset:0,notes:583,bombs:0,obstacles:16,nps:2.779,length:538.36,characteristic:"Standard",difficulty:"Hard",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.751,paritySummary:{errors:63,warns:68,resets:0}},{njs:16,offset:0,notes:890,bombs:40,obstacles:59,nps:4.243,length:538.36,characteristic:"Standard",difficulty:"Expert",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.751,paritySummary:{errors:88,warns:125,resets:7}},{njs:18,offset:0,notes:1048,bombs:24,obstacles:63,nps:4.996,length:538.392,characteristic:"Standard",difficulty:"ExpertPlus",events:9156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.763,paritySummary:{errors:93,warns:104,resets:2}}],downloadURL:"https://cdn.beatsaver.com/2884021451135e751d3c442ae92243697744b349.zip",coverURL:"https://cdn.beatsaver.com/2884021451135e751d3c442ae92243697744b349.jpg",previewURL:"https://cdn.beatsaver.com/2884021451135e751d3c442ae92243697744b349.mp3"}],createdAt:"2019-01-09T05:13:56Z",updatedAt:"2019-01-09T05:13:56Z",lastPublishedAt:"2019-01-09T05:13:56Z"},{id:"3f38",name:"Sk8er Boi - Avril Lavigne",description:'"Sk8er Boi" (pronounced "skater boy") is a song by Canadian singer-songwriter Avril Lavigne.\r\n\r\nThis song was on my list of songs to map and I was excited when I saw someone had made one today, and after playing it I decided to make my own map of it.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:150,duration:206,songName:"Sk8er Boi",songSubName:"Avril Lavigne",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:8202,upvotes:2443,downvotes:55,score:.9326},uploaded:"2019-03-20T18:01:26Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1078f8128effc0b79f19adf2b7aeed613afabac6",key:"3f38",state:"Published",createdAt:"2019-03-20T18:01:26Z",sageScore:6,diffs:[{njs:15,offset:0,notes:893,bombs:0,obstacles:0,nps:4.71,length:474,characteristic:"Standard",difficulty:"Expert",events:1410,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.6,paritySummary:{errors:41,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1078f8128effc0b79f19adf2b7aeed613afabac6.zip",coverURL:"https://cdn.beatsaver.com/1078f8128effc0b79f19adf2b7aeed613afabac6.jpg",previewURL:"https://cdn.beatsaver.com/1078f8128effc0b79f19adf2b7aeed613afabac6.mp3"}],createdAt:"2019-03-20T18:01:26Z",updatedAt:"2019-03-20T18:01:26Z",lastPublishedAt:"2019-03-20T18:01:26Z"},{id:"19f3",name:"PONPONPON - Kyary Pamyu Pamyu",description:"Everyday PON\nEvery time is PON\n\nExpert is relatively easy, pretty close to OST standards\nHard is pretty close to OST as well\nNormal -- first time doing Normal, give any feedback on bsaber dot com\n\nExpert Preview: https://youtu.be/4AMzxcWDqPM\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu\n\nShoutout to Geb and RedMagi for playtesting",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:128,duration:247,songName:"PONPONPON",songSubName:"Kyary Pamyu Pamyu",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:4544,upvotes:2285,downvotes:49,score:.9326},uploaded:"2018-10-12T23:21:38Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c1b08e5c05c9e6dad4096f3ff04d1e0497a0a339",key:"19f3",state:"Published",createdAt:"2018-10-12T23:21:38Z",sageScore:4,diffs:[{njs:10,offset:0,notes:432,bombs:2,obstacles:38,nps:1.832,length:503,characteristic:"Standard",difficulty:"Normal",events:636,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:235.781,paritySummary:{errors:101,warns:37,resets:1}},{njs:10,offset:0,notes:541,bombs:1,obstacles:38,nps:2.29,length:504,characteristic:"Standard",difficulty:"Hard",events:636,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:236.25,paritySummary:{errors:133,warns:61,resets:0}},{njs:10,offset:0,notes:714,bombs:2,obstacles:48,nps:3.022,length:504,characteristic:"Standard",difficulty:"Expert",events:636,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:236.25,paritySummary:{errors:120,warns:84,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c1b08e5c05c9e6dad4096f3ff04d1e0497a0a339.zip",coverURL:"https://cdn.beatsaver.com/c1b08e5c05c9e6dad4096f3ff04d1e0497a0a339.jpg",previewURL:"https://cdn.beatsaver.com/c1b08e5c05c9e6dad4096f3ff04d1e0497a0a339.mp3"}],createdAt:"2018-10-12T23:21:38Z",updatedAt:"2018-10-12T23:21:38Z",lastPublishedAt:"2018-10-12T23:21:38Z"},{id:"11b7a",name:"Still Alive - Portal",description:"I've wanted to map this song for a while now. And since this one's probably the last Portal song I'll map, I gave it my best. \r\n\r\nP.S. - I'm so glad to be back mapping this month. I had to take a break due to overwhelming stress, but now I'm feeling ready again.\r\nI hope you enjoy.\r\n\r\nPortal on Steam:\r\nhttps://store.steampowered.com/app/400/Portal/",uploader:{id:4284694,name:"jokidum",uniqueSet:!0,hash:"5e15518d47f1600006e912cc",avatar:"https://cdn.beatsaver.com/avatar/494282373094047745.png",type:"DISCORD"},metadata:{bpm:120,duration:176,songName:"Still Alive",songSubName:"- Portal",songAuthorName:"Jonathan Coulton",levelAuthorName:"Jokidum"},stats:{plays:0,downloads:5965,upvotes:1927,downvotes:36,score:.9325},uploaded:"2020-12-04T20:30:44.132Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8c03b43484b0dd1fc7d8a3104a82f0992a001c6c",key:"11b7a",state:"Published",createdAt:"2020-12-04T20:30:44.132Z",sageScore:4,diffs:[{njs:12,offset:0,notes:490,bombs:0,obstacles:13,nps:2.853,length:343.5,characteristic:"Standard",difficulty:"Expert",events:1060,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.75,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:1060,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8c03b43484b0dd1fc7d8a3104a82f0992a001c6c.zip",coverURL:"https://cdn.beatsaver.com/8c03b43484b0dd1fc7d8a3104a82f0992a001c6c.jpg",previewURL:"https://cdn.beatsaver.com/8c03b43484b0dd1fc7d8a3104a82f0992a001c6c.mp3"}],createdAt:"2020-12-04T20:30:44.132Z",updatedAt:"2020-12-04T20:30:44.132Z",lastPublishedAt:"2020-12-04T20:30:44.132Z"},{id:"1ff9",name:"Thaehan - Circus | - 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!\r\n\r\nI have changed some parts of the map since\r\n\r\nPreview: https://www.youtube.com/watch?v=e4stySCsNIM",uploader:{id:4286278,name:"ruckus",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1d8",avatar:"https://cdn.beatsaver.com/avatar/239082462083284992.png",type:"DISCORD"},metadata:{bpm:196,duration:148,songName:"Circus",songSubName:"Thaehan",songAuthorName:"Ruckus",levelAuthorName:"ruckus"},stats:{plays:0,downloads:4649,upvotes:2448,downvotes:56,score:.9324},uploaded:"2018-11-12T20:35:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e2934fbc194a51aa3579613bd88dc47503016c8a",key:"1ff9",state:"Published",createdAt:"2018-11-12T20:35:47Z",sageScore:7,diffs:[{njs:11,offset:0,notes:251,bombs:0,obstacles:12,nps:1.83,length:448,characteristic:"Standard",difficulty:"Easy",events:2733,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:0,warns:0,resets:0}},{njs:11,offset:0,notes:462,bombs:0,obstacles:0,nps:3.369,length:448,characteristic:"Standard",difficulty:"Normal",events:2735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:29,warns:27,resets:0}},{njs:12,offset:0,notes:513,bombs:0,obstacles:0,nps:3.741,length:448,characteristic:"Standard",difficulty:"Hard",events:2735,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:62,warns:42,resets:0}},{njs:14,offset:0,notes:719,bombs:0,obstacles:0,nps:5.24,length:448.273,characteristic:"Standard",difficulty:"Expert",events:2736,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.226,paritySummary:{errors:60,warns:73,resets:0}},{njs:17,offset:0,notes:739,bombs:0,obstacles:0,nps:5.386,length:448.25,characteristic:"Standard",difficulty:"ExpertPlus",events:3278,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.219,paritySummary:{errors:58,warns:79,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e2934fbc194a51aa3579613bd88dc47503016c8a.zip",coverURL:"https://cdn.beatsaver.com/e2934fbc194a51aa3579613bd88dc47503016c8a.jpg",previewURL:"https://cdn.beatsaver.com/e2934fbc194a51aa3579613bd88dc47503016c8a.mp3"}],createdAt:"2018-11-12T20:35:47Z",updatedAt:"2018-11-12T20:35:47Z",lastPublishedAt:"2018-11-12T20:35:47Z"},{id:"943e",name:"The Only Thing They Fear is You - Mick Gordon DOOM OST",description:"THE 360 MAP REQUIRES THE MAPPING EXTENSIONS MOD FOR BEAT SABER v1.8.0 OR GREATER (the Timbaland Update). OLDER VERSIONS OF MAPPING EXTENSIONS WILL NOT WORK.\n\nEpilepsy warning. Play with Static Lights or dim Custom Colors if prone to epileptic attacks.\nLightshow nerfed on Hard, Expert, and 360 difficulties.\n\nThis map’s Custom Colors are enabled via SongCore. To disable them, go to Mod Settings > SongCore from the ingame Main Menu.\n\n103 BPM / 3:20 Duration\n\nStandard (No Mapping Extensions)\nI'm too young to die - 482 notes (2.41 NPS)\nHurt me plenty - 603 notes (3.02 NPS)\nUltra-Violence - 713 notes (3.57 NPS)\n\n360 (Mapping Extensions)\nNightmare - 713 notes (3.57 NPS) ~6k rotations\n\nLightshow (No Mapping Extensions / SongCore required)\nLightshow - 20359 events\n\nTougeVR's Mixed Reality Playthrough: https://youtu.be/8arRphzeiDE\nMapping Extensions for pre-v1.8.0: https://drive.google.com/file/d/1-59-n3OLqNk4LOZ7MHo9AJ87-2__tEFo/view?usp=sharing",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:103,duration:200,songName:"The Only Thing They Fear is You",songSubName:"",songAuthorName:"Mick Gordon",levelAuthorName:"Skyler Wallace"},stats:{plays:0,downloads:13590,upvotes:4650,downvotes:150,score:.9322},uploaded:"2020-03-27T08:59:46.875Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ac3976bd01d289aaacf03423706010e843a824d5",key:"943e",state:"Published",createdAt:"2020-03-27T08:59:46.875Z",sageScore:6,diffs:[{njs:13,offset:-.25,notes:482,bombs:370,obstacles:376,nps:2.556,length:323.688,characteristic:"Standard",difficulty:"Hard",events:17272,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.556,paritySummary:{errors:25,warns:33,resets:0}},{njs:16,offset:.5,notes:603,bombs:721,obstacles:375,nps:3.193,length:324.187,characteristic:"Standard",difficulty:"Expert",events:17272,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.847,paritySummary:{errors:3,warns:10,resets:97}},{njs:19,offset:.25,notes:713,bombs:769,obstacles:379,nps:3.635,length:336.689,characteristic:"Standard",difficulty:"ExpertPlus",events:20359,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.13,paritySummary:{errors:10,warns:52,resets:95}},{njs:19,offset:.25,notes:713,bombs:7824,obstacles:9601,nps:3.623,length:337.843,characteristic:"360Degree",difficulty:"ExpertPlus",events:25883,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:196.802,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:20359,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ac3976bd01d289aaacf03423706010e843a824d5.zip",coverURL:"https://cdn.beatsaver.com/ac3976bd01d289aaacf03423706010e843a824d5.jpg",previewURL:"https://cdn.beatsaver.com/ac3976bd01d289aaacf03423706010e843a824d5.mp3"}],createdAt:"2020-03-27T08:59:46.875Z",updatedAt:"2020-03-27T08:59:46.875Z",lastPublishedAt:"2020-03-27T08:59:46.875Z"},{id:"4274",name:"Flesh - Nightcore (RubyChan)",description:"BPM: 152.674\r\nNPS: N: 1.92 H: 2.91 E: 3.71 E+: 4.26\r\nNotes: N: 425 H: 644 E: 819 E+: 942\r\nWalls: N: 80 H:82 E:96 E+: 85\r\nBombs: N: 20 H:34 E: 50 E+: 60\r\n\r\nNormal/Hard tend to follow the beat, while Expert/Expert+ tend to follow the vocals. Thanks to Redmagi and helencarnate for play testing!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:153,duration:221,songName:"Flesh",songSubName:"Nighctore (RubyChan)",songAuthorName:"fruhead",levelAuthorName:"fruhead"},stats:{plays:0,downloads:3291,upvotes:1693,downvotes:29,score:.9319},uploaded:"2019-03-31T18:25:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0acc713b47e8228b242fb42c0db29959014f8124",key:"4274",state:"Published",createdAt:"2019-03-31T18:25:07Z",sageScore:3,diffs:[{njs:12,offset:0,notes:425,bombs:20,obstacles:80,nps:2.116,length:511,characteristic:"Standard",difficulty:"Normal",events:7207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.392,paritySummary:{errors:13,warns:0,resets:10}},{njs:14,offset:0,notes:644,bombs:34,obstacles:82,nps:3.207,length:511,characteristic:"Standard",difficulty:"Hard",events:7207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.392,paritySummary:{errors:14,warns:14,resets:18}},{njs:16,offset:0,notes:819,bombs:50,obstacles:96,nps:4.078,length:511,characteristic:"Standard",difficulty:"Expert",events:7207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.392,paritySummary:{errors:32,warns:56,resets:19}},{njs:16,offset:0,notes:942,bombs:60,obstacles:85,nps:4.691,length:511,characteristic:"Standard",difficulty:"ExpertPlus",events:7207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.392,paritySummary:{errors:23,warns:66,resets:23}}],downloadURL:"https://cdn.beatsaver.com/0acc713b47e8228b242fb42c0db29959014f8124.zip",coverURL:"https://cdn.beatsaver.com/0acc713b47e8228b242fb42c0db29959014f8124.jpg",previewURL:"https://cdn.beatsaver.com/0acc713b47e8228b242fb42c0db29959014f8124.mp3"}],createdAt:"2019-03-31T18:25:07Z",updatedAt:"2019-03-31T18:25:07Z",lastPublishedAt:"2019-03-31T18:25:07Z"},{id:"5fda",name:"Mr. Blue Sky",description:"After a certain streamer asked for this to be re-made I put it on my list, needed a break from the current harder maps I'm working on so made this feel-good classic. Hope you enjoy :D\n\nSpecial thanks to those who tested, especially Sehria for her suggestions, and thanks to my little sister for testing Hard diff :P",uploader:{id:4285633,name:"edmard",uniqueSet:!0,hash:"5cff0b7798cc5a672c856604",avatar:"https://cdn.beatsaver.com/avatar/157188812462620672.png",type:"DISCORD"},metadata:{bpm:174,duration:222,songName:"Mr. Blue Sky",songSubName:"",songAuthorName:"Electric Light Orchestra",levelAuthorName:"Edmard"},stats:{plays:0,downloads:4883,upvotes:2486,downvotes:59,score:.9318},uploaded:"2019-08-28T15:45:05.788Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0039a0c02e9e0ac1761445caadefdfdd989f5316",key:"5fda",state:"Published",createdAt:"2019-08-28T15:45:05.788Z",sageScore:5,diffs:[{njs:14,offset:0,notes:742,bombs:0,obstacles:24,nps:3.579,length:601.25,characteristic:"Standard",difficulty:"Hard",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.328,paritySummary:{errors:2,warns:2,resets:0}},{njs:16,offset:0,notes:772,bombs:0,obstacles:28,nps:3.724,length:601.25,characteristic:"Standard",difficulty:"Expert",events:816,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.328,paritySummary:{errors:2,warns:2,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0039a0c02e9e0ac1761445caadefdfdd989f5316.zip",coverURL:"https://cdn.beatsaver.com/0039a0c02e9e0ac1761445caadefdfdd989f5316.jpg",previewURL:"https://cdn.beatsaver.com/0039a0c02e9e0ac1761445caadefdfdd989f5316.mp3"}],createdAt:"2019-08-28T15:45:05.788Z",updatedAt:"2019-08-28T15:45:05.788Z",lastPublishedAt:"2019-08-28T15:45:05.788Z"},{id:"57c2",name:"Rockefeller Street (Nightcore) - Getter Jaani",description:"Hey this is reuploaded since it broke before\nhave fun",uploader:{id:16388,name:"rinkusenpai",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f6cc",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f6cc?d=retro",type:"SIMPLE"},metadata:{bpm:162.5,duration:145,songName:"Rockefeller Street (Nightcore)",songSubName:"",songAuthorName:"Getter Jaani",levelAuthorName:"RinkuSenpai"},stats:{plays:0,downloads:10267,upvotes:7867,downvotes:306,score:.9318},uploaded:"2019-07-18T21:40:09.204Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"b8c98ffc598703aadb4a3cb921d2830d270b57a5",key:"57c2",state:"Published",createdAt:"2019-07-18T21:40:09.204Z",sageScore:6,diffs:[{njs:13,offset:0,notes:545,bombs:0,obstacles:8,nps:3.884,length:380,characteristic:"Standard",difficulty:"Hard",events:2247,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.308,paritySummary:{errors:73,warns:61,resets:0},stars:3.06},{njs:17,offset:0,notes:709,bombs:0,obstacles:6,nps:5.053,length:380,characteristic:"Standard",difficulty:"Expert",events:2247,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:140.308,paritySummary:{errors:87,warns:75,resets:0},stars:4.39}],downloadURL:"https://cdn.beatsaver.com/b8c98ffc598703aadb4a3cb921d2830d270b57a5.zip",coverURL:"https://cdn.beatsaver.com/b8c98ffc598703aadb4a3cb921d2830d270b57a5.jpg",previewURL:"https://cdn.beatsaver.com/b8c98ffc598703aadb4a3cb921d2830d270b57a5.mp3"}],createdAt:"2019-07-18T21:40:09.204Z",updatedAt:"2019-07-18T21:40:09.204Z",lastPublishedAt:"2019-07-18T21:40:09.204Z"},{id:"2693",name:"I Want You - DJMAX",description:"I love this song.",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:140,duration:109,songName:"I Want You",songSubName:"DJMAX",songAuthorName:"ejiejidayo",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:6675,upvotes:2356,downvotes:54,score:.9318},uploaded:"2018-12-18T12:09:51Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"bb9de13539a2ab9a21f7ff68a2669f7887011456",key:"2693",state:"Published",createdAt:"2018-12-18T12:09:51Z",sageScore:4,diffs:[{njs:11,offset:0,notes:115,bombs:0,obstacles:25,nps:1.209,length:222,characteristic:"Standard",difficulty:"Easy",events:108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:95.143,paritySummary:{errors:23,warns:12,resets:0},stars:1.08},{njs:12,offset:0,notes:173,bombs:0,obstacles:24,nps:1.786,length:226.031,characteristic:"Standard",difficulty:"Normal",events:108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:96.871,paritySummary:{errors:13,warns:18,resets:0},stars:1.26},{njs:13,offset:0,notes:225,bombs:2,obstacles:42,nps:2.292,length:229.031,characteristic:"Standard",difficulty:"Hard",events:108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:98.156,paritySummary:{errors:15,warns:24,resets:0},stars:1.71},{njs:14,offset:0,notes:405,bombs:2,obstacles:32,nps:4.126,length:229.031,characteristic:"Standard",difficulty:"Expert",events:106,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:98.156,paritySummary:{errors:33,warns:80,resets:0},stars:2.85}],downloadURL:"https://cdn.beatsaver.com/bb9de13539a2ab9a21f7ff68a2669f7887011456.zip",coverURL:"https://cdn.beatsaver.com/bb9de13539a2ab9a21f7ff68a2669f7887011456.jpg",previewURL:"https://cdn.beatsaver.com/bb9de13539a2ab9a21f7ff68a2669f7887011456.mp3"}],createdAt:"2018-12-18T12:09:51Z",updatedAt:"2018-12-18T12:09:51Z",lastPublishedAt:"2018-12-18T12:09:51Z"},{id:"a907",name:"[TheFatRat Pack] Monody (ft. Laura Brehm) - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nMonody Stats:\nExpert+ - 1058 Notes | 3.73 NPS\nExpert - 907 Notes | 3.19 NPS\nHard - 677 Notes | 2.38 NPS\nNormal - 421 Notes | 1.48 NPS\nEasy - 283 Notes | 1.00 NPS\n\nRoughly 11-12 Hours of work\nGameplay: https://youtu.be/5LvJXf4Co4w\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:107,duration:283,songName:"Monody",songSubName:"ft. Laura Brehm",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:9449,upvotes:2084,downvotes:44,score:.9316},uploaded:"2020-05-22T13:28:13.182Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8e82872941abe8c99e9ac86d9c063fc5aee57d52",key:"a907",state:"Published",createdAt:"2020-05-22T13:28:13.182Z",sageScore:7,diffs:[{njs:10,offset:1,notes:283,bombs:0,obstacles:63,nps:1.048,length:481.689,characteristic:"Standard",difficulty:"Easy",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.106,paritySummary:{errors:43,warns:21,resets:0}},{njs:10,offset:1,notes:421,bombs:0,obstacles:62,nps:1.559,length:481.689,characteristic:"Standard",difficulty:"Normal",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.106,paritySummary:{errors:33,warns:16,resets:0}},{njs:12,offset:.25,notes:677,bombs:0,obstacles:61,nps:2.507,length:481.656,characteristic:"Standard",difficulty:"Hard",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.087,paritySummary:{errors:8,warns:6,resets:0}},{njs:15,offset:-.3,notes:907,bombs:0,obstacles:58,nps:3.358,length:481.689,characteristic:"Standard",difficulty:"Expert",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.106,paritySummary:{errors:5,warns:3,resets:0}},{njs:18,offset:.4,notes:1058,bombs:0,obstacles:59,nps:3.917,length:481.689,characteristic:"Standard",difficulty:"ExpertPlus",events:3844,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:270.106,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8e82872941abe8c99e9ac86d9c063fc5aee57d52.zip",coverURL:"https://cdn.beatsaver.com/8e82872941abe8c99e9ac86d9c063fc5aee57d52.jpg",previewURL:"https://cdn.beatsaver.com/8e82872941abe8c99e9ac86d9c063fc5aee57d52.mp3"}],createdAt:"2020-05-22T13:28:13.182Z",updatedAt:"2020-05-22T13:28:13.182Z",lastPublishedAt:"2020-05-22T13:28:13.182Z"},{id:"9cd2",name:"Grant - Are We Still Young",description:"i can't get enough grant in my life, send help\r\n\r\nif you don't like dodge walls, check the lawless diff @whipstickgostop",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:110,duration:216,songName:"Are We Still Young",songSubName:"",songAuthorName:"grant",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:6474,upvotes:1642,downvotes:28,score:.9315},uploaded:"2020-04-19T21:24:40.430Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d03086c064a4546e4c5bfe6ef79545850fd1ac98",key:"9cd2",state:"Published",createdAt:"2020-04-19T21:24:40.430Z",sageScore:7,diffs:[{njs:10,offset:0,notes:270,bombs:0,obstacles:14,nps:1.292,length:383,characteristic:"Standard",difficulty:"Easy",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:208.909,paritySummary:{errors:88,warns:19,resets:0}},{njs:10,offset:0,notes:407,bombs:0,obstacles:13,nps:1.948,length:383,characteristic:"Standard",difficulty:"Normal",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:208.909,paritySummary:{errors:51,warns:15,resets:0}},{njs:12,offset:0,notes:576,bombs:0,obstacles:140,nps:2.746,length:384.5,characteristic:"Standard",difficulty:"Hard",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:209.727,paritySummary:{errors:4,warns:3,resets:0}},{njs:15,offset:-.25,notes:721,bombs:16,obstacles:138,nps:3.442,length:384,characteristic:"Standard",difficulty:"Expert",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:209.455,paritySummary:{errors:0,warns:0,resets:3}},{njs:17,offset:.2,notes:928,bombs:46,obstacles:186,nps:4.431,length:384,characteristic:"Standard",difficulty:"ExpertPlus",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:209.455,paritySummary:{errors:0,warns:0,resets:5}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:.2,notes:928,bombs:46,obstacles:145,nps:4.431,length:384,characteristic:"Lawless",difficulty:"ExpertPlus",events:8571,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:209.455,paritySummary:{errors:0,warns:0,resets:5}}],downloadURL:"https://cdn.beatsaver.com/d03086c064a4546e4c5bfe6ef79545850fd1ac98.zip",coverURL:"https://cdn.beatsaver.com/d03086c064a4546e4c5bfe6ef79545850fd1ac98.jpg",previewURL:"https://cdn.beatsaver.com/d03086c064a4546e4c5bfe6ef79545850fd1ac98.mp3"}],createdAt:"2020-04-19T21:24:40.430Z",updatedAt:"2020-04-19T21:24:40.430Z",lastPublishedAt:"2020-04-19T21:24:40.430Z"},{id:"6d63",name:"Take on Me - a-ha",description:"This song may be older than I am, but it still rocks even to this date. This made me compelled in making a map worthy of it for modern times. Mapped in a similar dancy style as some of my other maps.\n\nAudio: The album version is used but with the music video ending/outro.\n\nPreview Video:\nhttps://youtu.be/ouhgRepxZMk\n\nBPM: 168-169\nDuration: 3:39\nEasy, Normal, Hard and Expert difficulties:\n\nEasy:\n277 notes, 29 obstacles, 0 mines\n\nNormal:\n359 notes, 26 obstacles, 0 mines\n\nHard:\n549 notes, 26 obstacles, 0 mines\n\nExpert:\n852 notes, 23 obstacles, 0 mines\n\nThanks to Jessi81, Thomas, Kival Evan, Redmagi and Storm Knight for playtesting!\n\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:168.868,duration:219,songName:"Take On Me",songSubName:"",songAuthorName:"A-ha",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:15253,upvotes:3615,downvotes:108,score:.9314},uploaded:"2019-11-01T07:20:59.352Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ac7d867dccb85bd28eea0787eda92c25f849dcef",key:"6d63",state:"Published",createdAt:"2019-11-01T07:20:59.352Z",sageScore:6,diffs:[{njs:10,offset:1,notes:277,bombs:0,obstacles:29,nps:1.325,length:588.521,characteristic:"Standard",difficulty:"Easy",events:2868,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.106,paritySummary:{errors:63,warns:26,resets:0}},{njs:12,offset:1,notes:359,bombs:0,obstacles:26,nps:1.711,length:590.521,characteristic:"Standard",difficulty:"Normal",events:2868,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.816,paritySummary:{errors:63,warns:61,resets:0}},{njs:15,offset:1,notes:549,bombs:0,obstacles:26,nps:2.617,length:590.521,characteristic:"Standard",difficulty:"Hard",events:2868,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.816,paritySummary:{errors:62,warns:70,resets:0}},{njs:18,offset:1,notes:852,bombs:0,obstacles:23,nps:4.061,length:590.521,characteristic:"Standard",difficulty:"Expert",events:2868,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.816,paritySummary:{errors:30,warns:67,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ac7d867dccb85bd28eea0787eda92c25f849dcef.zip",coverURL:"https://cdn.beatsaver.com/ac7d867dccb85bd28eea0787eda92c25f849dcef.jpg",previewURL:"https://cdn.beatsaver.com/ac7d867dccb85bd28eea0787eda92c25f849dcef.mp3"}],createdAt:"2019-11-01T07:20:59.352Z",updatedAt:"2019-11-01T07:20:59.352Z",lastPublishedAt:"2019-11-01T07:20:59.352Z"},{id:"9956",name:"Or3o - Help Me",description:"Help Me, by Or3o\nThis was really fun to map but took a little longer than expected.\nAnother full diff spread map. Hope you enjoy!\nThanks to the testplayers: Sorukun, Wolfb34, and Johnny Dee",uploader:{id:15650,name:"alzaraf",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ce3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ce3?d=retro",type:"SIMPLE"},metadata:{bpm:110,duration:188,songName:"Help Me",songSubName:"",songAuthorName:"Or3o",levelAuthorName:"Alzaraf"},stats:{plays:0,downloads:2316,upvotes:1519,downvotes:24,score:.9313},uploaded:"2020-04-10T16:34:49.265Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c56040e307335a3e7116de76e4f07d472cfe28d3",key:"9956",state:"Published",createdAt:"2020-04-10T16:34:49.265Z",sageScore:7,diffs:[{njs:10,offset:0,notes:216,bombs:0,obstacles:0,nps:1.189,length:333,characteristic:"Standard",difficulty:"Easy",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.636,paritySummary:{errors:56,warns:2,resets:0}},{njs:12,offset:0,notes:283,bombs:0,obstacles:0,nps:1.558,length:333,characteristic:"Standard",difficulty:"Normal",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.636,paritySummary:{errors:61,warns:0,resets:0}},{njs:14,offset:0,notes:497,bombs:0,obstacles:0,nps:2.72,length:335,characteristic:"Standard",difficulty:"Hard",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.727,paritySummary:{errors:28,warns:0,resets:0}},{njs:16,offset:0,notes:729,bombs:0,obstacles:0,nps:3.984,length:335.5,characteristic:"Standard",difficulty:"Expert",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.3,notes:816,bombs:0,obstacles:0,nps:4.459,length:335.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2212,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c56040e307335a3e7116de76e4f07d472cfe28d3.zip",coverURL:"https://cdn.beatsaver.com/c56040e307335a3e7116de76e4f07d472cfe28d3.jpg",previewURL:"https://cdn.beatsaver.com/c56040e307335a3e7116de76e4f07d472cfe28d3.mp3"}],createdAt:"2020-04-10T16:34:49.265Z",updatedAt:"2020-04-10T16:34:49.265Z",lastPublishedAt:"2020-04-10T16:34:49.265Z"},{id:"6360",name:"Shirobon - Into the Zone",description:"",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:122,duration:180,songName:"Into the Zone",songSubName:"",songAuthorName:"Shirobon",levelAuthorName:"Rustic"},stats:{plays:0,downloads:2366,upvotes:1312,downvotes:17,score:.9313},uploaded:"2019-09-14T17:32:19.835Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c22b89db9dfef084c62412def48cdace57226f5e",key:"6360",state:"Published",createdAt:"2019-09-14T17:32:19.835Z",sageScore:6,diffs:[{njs:18,offset:0,notes:428,bombs:0,obstacles:615,nps:2.67,length:326,characteristic:"Standard",difficulty:"Expert",events:5077,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:160.328,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c22b89db9dfef084c62412def48cdace57226f5e.zip",coverURL:"https://cdn.beatsaver.com/c22b89db9dfef084c62412def48cdace57226f5e.jpg",previewURL:"https://cdn.beatsaver.com/c22b89db9dfef084c62412def48cdace57226f5e.mp3"}],createdAt:"2019-09-14T17:32:19.835Z",updatedAt:"2019-09-14T17:32:19.835Z",lastPublishedAt:"2019-09-14T17:32:19.835Z"},{id:"7de1",name:"Emergency (Nightcore Mix) - Kim Leoni",description:"78",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:174,duration:148,songName:"Emergency (Nightcore Mix)",songSubName:"",songAuthorName:"Kim Leoni",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:7439,upvotes:2274,downvotes:52,score:.9313},uploaded:"2020-01-12T09:33:57.766Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c28ac0c2eac67c79b893ba3a1f432a27dd3a368b",key:"7de1",state:"Published",createdAt:"2020-01-12T09:33:57.766Z",sageScore:4,diffs:[{njs:14,offset:.6,notes:542,bombs:58,obstacles:187,nps:3.806,length:413,characteristic:"Standard",difficulty:"Easy",events:1749,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:142.414,paritySummary:{errors:67,warns:79,resets:23}},{njs:13,offset:0,notes:428,bombs:0,obstacles:126,nps:3.005,length:413,characteristic:"Standard",difficulty:"Hard",events:1749,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:142.414,paritySummary:{errors:2,warns:2,resets:0}},{njs:16,offset:.1,notes:599,bombs:0,obstacles:126,nps:4.196,length:414,characteristic:"Standard",difficulty:"Expert",events:1749,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:142.759,paritySummary:{errors:14,warns:44,resets:0}},{njs:17,offset:0,notes:805,bombs:0,obstacles:126,nps:5.639,length:414,characteristic:"Standard",difficulty:"ExpertPlus",events:1749,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:142.759,paritySummary:{errors:18,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c28ac0c2eac67c79b893ba3a1f432a27dd3a368b.zip",coverURL:"https://cdn.beatsaver.com/c28ac0c2eac67c79b893ba3a1f432a27dd3a368b.jpg",previewURL:"https://cdn.beatsaver.com/c28ac0c2eac67c79b893ba3a1f432a27dd3a368b.mp3"}],createdAt:"2020-01-12T09:33:57.766Z",updatedAt:"2020-01-12T09:33:57.766Z",lastPublishedAt:"2020-01-12T09:33:57.766Z"},{id:"557f",name:"Enormous Penis - Da Vinci's Notebook",description:"This is my first time working on a A Capella song! which means no instruments and mapping to lyrics or lip noises. which means its usually not following the bpm closely (some parts are 1/8 faster or slower). I did like the challenge though and it was a nice change of pace! Thanks Austin for giving me a reason to try mapping A Capella.\n\n“Enormous Penis” is an A Capella song performed by the group Da Vinci’s Notebook for their album Brontosaurus, which was released in 2002. ",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:119,duration:164,songName:"Enormous Penis",songSubName:"",songAuthorName:"Da Vinci's Notebook",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2614,upvotes:1367,downvotes:19,score:.9312},uploaded:"2019-07-04T13:21:52.797Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2b61e7bd12379b9c1c193de7e28d1e816942c948",key:"557f",state:"Published",createdAt:"2019-07-04T13:21:52.797Z",sageScore:5,diffs:[{njs:12,offset:0,notes:518,bombs:55,obstacles:36,nps:3.252,length:315.875,characteristic:"Standard",difficulty:"Hard",events:714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:159.265,paritySummary:{errors:29,warns:25,resets:10}}],downloadURL:"https://cdn.beatsaver.com/2b61e7bd12379b9c1c193de7e28d1e816942c948.zip",coverURL:"https://cdn.beatsaver.com/2b61e7bd12379b9c1c193de7e28d1e816942c948.jpg",previewURL:"https://cdn.beatsaver.com/2b61e7bd12379b9c1c193de7e28d1e816942c948.mp3"}],createdAt:"2019-07-04T13:21:52.797Z",updatedAt:"2019-07-04T13:21:52.797Z",lastPublishedAt:"2019-07-04T13:21:52.797Z"},{id:"5373",name:"Chito (CV: Minase Inori), Yuuri (CV: Kubo Yurika) - Ugoku, Ugoku",description:"A nice, chill map of the opening to one of my favorite animes to let you know that I haven't stopped mapping yet. I have quite a few maps I've been slowly making progress on and they should be coming out sometime soon!\n\nIn case you need a way to contact me or let me know of any issues: discord.gg/EVU9At2",uploader:{id:4288620,name:"hexagonial",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f2fb",avatar:"https://cdn.beatsaver.com/avatar/221442943045599232.png",type:"DISCORD"},metadata:{bpm:128,duration:91,songName:"Ugoku, Ugoku",songSubName:"",songAuthorName:"Chito (CV: Minase Inori), Yuuri (CV: Kubo Yurika)",levelAuthorName:"Hexagonial"},stats:{plays:0,downloads:3196,upvotes:1684,downvotes:30,score:.9312},uploaded:"2019-06-19T01:42:05.315Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7ac2bd85723acb7d4fd9957e62a7769700755c04",key:"5373",state:"Published",createdAt:"2019-06-19T01:42:05.315Z",sageScore:7,diffs:[{njs:10,offset:0,notes:95,bombs:8,obstacles:45,nps:1.081,length:187.5,characteristic:"Standard",difficulty:"Easy",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:152,bombs:8,obstacles:45,nps:1.729,length:187.5,characteristic:"Standard",difficulty:"Normal",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:14,warns:0,resets:0}},{njs:13,offset:0,notes:243,bombs:4,obstacles:43,nps:2.765,length:187.5,characteristic:"Standard",difficulty:"Hard",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:8,warns:0,resets:0}},{njs:15,offset:0,notes:326,bombs:0,obstacles:36,nps:3.709,length:187.5,characteristic:"Standard",difficulty:"Expert",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:393,bombs:0,obstacles:39,nps:4.471,length:187.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.891,paritySummary:{errors:1,warns:9,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7ac2bd85723acb7d4fd9957e62a7769700755c04.zip",coverURL:"https://cdn.beatsaver.com/7ac2bd85723acb7d4fd9957e62a7769700755c04.jpg",previewURL:"https://cdn.beatsaver.com/7ac2bd85723acb7d4fd9957e62a7769700755c04.mp3"}],createdAt:"2019-06-19T01:42:05.315Z",updatedAt:"2019-06-19T01:42:05.315Z",lastPublishedAt:"2019-06-19T01:42:05.315Z"},{id:"10dcc",name:"The Chonk Chart™",description:"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n(account definitely isn't a Mawntee alt account no sir)",uploader:{id:1602,name:"chief-queef",uniqueSet:!0,hash:"5f9a4d2a030219000627c2bf",avatar:"https://cdn.beatsaver.com/avatar/1602.jpg",type:"SIMPLE"},metadata:{bpm:69,duration:23,songName:"Chonk Chart",songSubName:"",songAuthorName:"Gyan Ko",levelAuthorName:"Chief Queef"},stats:{plays:0,downloads:3653,upvotes:1784,downvotes:34,score:.9311},uploaded:"2020-11-12T09:20:18.282Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b966edcba3f8187dacd633dabbf05e128e57d21b",key:"10dcc",state:"Published",createdAt:"2020-11-12T09:20:18.282Z",sageScore:4,diffs:[{njs:6.9,offset:6.9,notes:7,bombs:0,obstacles:0,nps:.447,length:18,characteristic:"Standard",difficulty:"Easy",events:312,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:15.652,paritySummary:{errors:6,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b966edcba3f8187dacd633dabbf05e128e57d21b.zip",coverURL:"https://cdn.beatsaver.com/b966edcba3f8187dacd633dabbf05e128e57d21b.jpg",previewURL:"https://cdn.beatsaver.com/b966edcba3f8187dacd633dabbf05e128e57d21b.mp3"}],createdAt:"2020-11-12T09:20:18.282Z",updatedAt:"2020-11-12T09:20:18.282Z",lastPublishedAt:"2020-11-12T09:20:18.282Z"},{id:"6b8c",name:"TheFatRat - MAYDAY feat. Laura Brehm",description:"--- PLEASE HAVE CHROMALITE INSTALLED FOR THE LIGHTSHOW AND LIGHTING EVENTS ---\n\nExpert+ (M A Y D A Y): Oddloop\nEasy - Expert: RedMagi\nLights: Aaltopahwi",uploader:{id:4284400,name:"oddloop",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fd45",avatar:"https://cdn.beatsaver.com/avatar/173241614192476161.png",type:"DISCORD"},metadata:{bpm:150,duration:249,songName:"MAYDAY",songSubName:"feat. Laura Brehm",songAuthorName:"TheFatRat",levelAuthorName:"Oddloop, RedMagi & AaltopahWi"},stats:{plays:0,downloads:8888,upvotes:4606,downvotes:154,score:.9311},uploaded:"2019-10-22T19:11:34.707Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"58e760690ffb379864d76b06505f4056e84fbe84",key:"6b8c",state:"Published",createdAt:"2019-10-22T19:11:34.707Z",sageScore:8,diffs:[{njs:10,offset:1,notes:251,bombs:0,obstacles:0,nps:1.077,length:582.5,characteristic:"Standard",difficulty:"Easy",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:233,paritySummary:{errors:7,warns:6,resets:0},stars:.8},{njs:12,offset:1,notes:434,bombs:0,obstacles:0,nps:1.863,length:582.5,characteristic:"Standard",difficulty:"Normal",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:233,paritySummary:{errors:11,warns:10,resets:0},stars:1.16},{njs:14,offset:1,notes:541,bombs:16,obstacles:0,nps:2.322,length:582.5,characteristic:"Standard",difficulty:"Hard",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:233,paritySummary:{errors:7,warns:8,resets:1},stars:1.53},{njs:16,offset:.5,notes:769,bombs:12,obstacles:0,nps:3.204,length:600,characteristic:"Standard",difficulty:"Expert",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240,paritySummary:{errors:10,warns:9,resets:1},stars:2.17},{njs:23,offset:.5,notes:1655,bombs:0,obstacles:49,nps:6.896,length:600,characteristic:"Standard",difficulty:"ExpertPlus",events:20314,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240,paritySummary:{errors:2,warns:0,resets:0},stars:5.3},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:20350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/58e760690ffb379864d76b06505f4056e84fbe84.zip",coverURL:"https://cdn.beatsaver.com/58e760690ffb379864d76b06505f4056e84fbe84.jpg",previewURL:"https://cdn.beatsaver.com/58e760690ffb379864d76b06505f4056e84fbe84.mp3"}],createdAt:"2019-10-22T19:11:34.707Z",updatedAt:"2019-10-22T19:11:34.707Z",lastPublishedAt:"2019-10-22T19:11:34.707Z"},{id:"1ff0",name:"Flux Pavilion - I can't stop | 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:148,songName:"I can't stop",songSubName:"Flux Pavilion",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:11299,upvotes:4364,downvotes:143,score:.9311},uploaded:"2018-11-12T17:55:03Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"8d9df176c94ecf5c7725457525b6f959f5ef9296",key:"1ff0",state:"Published",createdAt:"2018-11-12T17:55:03Z",sageScore:6,diffs:[{njs:10,offset:0,notes:145,bombs:0,obstacles:0,nps:1.057,length:320,characteristic:"Standard",difficulty:"Easy",events:1045,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:52,warns:3,resets:0},stars:.69},{njs:10,offset:0,notes:212,bombs:0,obstacles:0,nps:1.546,length:320,characteristic:"Standard",difficulty:"Normal",events:0,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.143,paritySummary:{errors:8,warns:17,resets:0},stars:.92},{njs:12,offset:0,notes:342,bombs:0,obstacles:0,nps:2.509,length:318,characteristic:"Standard",difficulty:"Hard",events:2634,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:136.286,paritySummary:{errors:5,warns:29,resets:0},stars:1.78},{njs:14,offset:0,notes:372,bombs:0,obstacles:15,nps:2.73,length:318,characteristic:"Standard",difficulty:"Expert",events:2634,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:136.286,paritySummary:{errors:17,warns:34,resets:0},stars:1.78}],downloadURL:"https://cdn.beatsaver.com/8d9df176c94ecf5c7725457525b6f959f5ef9296.zip",coverURL:"https://cdn.beatsaver.com/8d9df176c94ecf5c7725457525b6f959f5ef9296.jpg",previewURL:"https://cdn.beatsaver.com/8d9df176c94ecf5c7725457525b6f959f5ef9296.mp3"}],createdAt:"2018-11-12T17:55:03Z",updatedAt:"2018-11-12T17:55:03Z",lastPublishedAt:"2018-11-12T17:55:03Z"},{id:"e01a",name:"The Spectre - Wallmap",description:"Have you ever seen a call of duty montage from the early 2010's? maybe Russian guy playing a piano in public? \n \nIf you've ever heard of the name Alan Walker then you've heard of \"The Spectre\" so thanks to some help from a friend I'm here to bring you my newest masterpiece. A song with decently placed blocks... wow you'd think by now id actually do a new song but no. I'm here to fix The Spectre and give it the attention it deserves.\n\nOfficial Release Video:\nhttps://youtu.be/ljxO7plPgpA\n\nLight did a little play-through here if you curious\nhttps://www.youtube.com/watch?v=l4qjiqE-hqQ&t=12s",uploader:{id:3449,name:"rizthesnuggie",uniqueSet:!0,hash:"5f051045c51ba90006d92da9",avatar:"https://www.gravatar.com/avatar/5f051045c51ba90006d92da9?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:190,songName:"The Spectre",songSubName:"[Non NCS]",songAuthorName:"Alan Walker",levelAuthorName:"Riz and KyleT"},stats:{plays:0,downloads:2423,upvotes:1381,downvotes:20,score:.9309},uploaded:"2020-08-29T19:50:28.236Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f11409e4e08f2463be65c0e56dfc6f6b00e25aeb",key:"e01a",state:"Published",createdAt:"2020-08-29T19:50:28.236Z",sageScore:1,diffs:[{njs:16,offset:-.5,notes:749,bombs:25,obstacles:34105,nps:4.048,length:394.75,characteristic:"Standard",difficulty:"Expert",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:185.039,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.5,notes:0,bombs:0,obstacles:34105,nps:0,length:0,characteristic:"Lightshow",difficulty:"Expert",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f11409e4e08f2463be65c0e56dfc6f6b00e25aeb.zip",coverURL:"https://cdn.beatsaver.com/f11409e4e08f2463be65c0e56dfc6f6b00e25aeb.jpg",previewURL:"https://cdn.beatsaver.com/f11409e4e08f2463be65c0e56dfc6f6b00e25aeb.mp3"}],createdAt:"2020-08-29T19:50:28.236Z",updatedAt:"2020-08-29T19:50:28.236Z",lastPublishedAt:"2020-08-29T19:50:28.236Z"},{id:"67a8",name:"world.execute(me); - Mili (Fixed)",description:"71",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:130,duration:209,songName:"world.execute (me) ;",songSubName:"",songAuthorName:"Mili",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:4119,upvotes:1832,downvotes:36,score:.9309},uploaded:"2019-10-03T22:51:56.567Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cfc9d5013d12adb3ca5e0a4a31d8a06f2081dbe6",key:"67a8",state:"Published",createdAt:"2019-10-03T22:51:56.567Z",sageScore:5,diffs:[{njs:15,offset:0,notes:462,bombs:0,obstacles:610,nps:2.239,length:447,characteristic:"Standard",difficulty:"Hard",events:1025,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:206.308,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:984,bombs:0,obstacles:610,nps:4.764,length:447.5,characteristic:"Standard",difficulty:"Expert",events:1025,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:206.538,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cfc9d5013d12adb3ca5e0a4a31d8a06f2081dbe6.zip",coverURL:"https://cdn.beatsaver.com/cfc9d5013d12adb3ca5e0a4a31d8a06f2081dbe6.jpg",previewURL:"https://cdn.beatsaver.com/cfc9d5013d12adb3ca5e0a4a31d8a06f2081dbe6.mp3"}],createdAt:"2019-10-03T22:51:56.567Z",updatedAt:"2019-10-03T22:51:56.567Z",lastPublishedAt:"2019-10-03T22:51:56.567Z"},{id:"36bf",name:"Daft Punk - Aerodynamic",description:"An essential classic. You might want to stretch first...\r\nExpert+ and Hard.\r\n\r\nPreview: https://youtu.be/1dAwipwIgDg\r\n\r\nCheck out my other maps, too! If you like them, consider subscribing on YouTube to find out when new maps go live.\r\n\r\nThanks for playing!\r\n\r\nhttps://www.twitch.tv/syntheseizure",uploader:{id:31265,name:"syntheseizure",uniqueSet:!0,hash:"5cff0b7698cc5a672c8546bd",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8546bd?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:214,songName:"Aerodynamic",songSubName:"Daft Punk",songAuthorName:"Syntheseizure",levelAuthorName:"Syntheseizure"},stats:{plays:0,downloads:5893,upvotes:2763,downvotes:73,score:.9309},uploaded:"2019-02-16T17:49:39Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"092840ca9a391f34c6af32ac1d6475498de74407",key:"36bf",state:"Published",createdAt:"2019-02-16T17:49:39Z",sageScore:5,diffs:[{njs:12,offset:0,notes:650,bombs:0,obstacles:48,nps:3.2,length:416,characteristic:"Standard",difficulty:"Hard",events:2022,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.927,paritySummary:{errors:32,warns:11,resets:0}},{njs:14,offset:0,notes:1022,bombs:0,obstacles:48,nps:5.031,length:416,characteristic:"Standard",difficulty:"ExpertPlus",events:2022,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.927,paritySummary:{errors:48,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/092840ca9a391f34c6af32ac1d6475498de74407.zip",coverURL:"https://cdn.beatsaver.com/092840ca9a391f34c6af32ac1d6475498de74407.jpg",previewURL:"https://cdn.beatsaver.com/092840ca9a391f34c6af32ac1d6475498de74407.mp3"}],createdAt:"2019-02-16T17:49:39Z",updatedAt:"2019-02-16T17:49:39Z",lastPublishedAt:"2019-02-16T17:49:39Z"},{id:"381a",name:"Deep in Abyss [Made in Abyss Opening] - Riko (CV: Miyu Tomita), Reg (CV: Ise Mariya)",description:"Deep in Abyss is the opening song for Made in Abyss and is sung by Riko voiced by Miyu Tomita and Reg voiced by Ise Mariya.\r\n\r\nCheckout the map preview: https://www.youtube.com/watch?v=ZMQz-z57kKo",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:135,duration:221,songName:"Deep in Abyss",songSubName:"Riko (CV: Miyu Tomita), Reg (CV: Ise Mariya)",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3012,upvotes:1850,downvotes:37,score:.9308},uploaded:"2019-02-21T01:04:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c586288044251cc2b2e1d6ac3817214a9ea02302",key:"381a",state:"Published",createdAt:"2019-02-21T01:04:41Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1013,bombs:0,obstacles:33,nps:4.685,length:486.5,characteristic:"Standard",difficulty:"Expert",events:2230,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.222,paritySummary:{errors:41,warns:46,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c586288044251cc2b2e1d6ac3817214a9ea02302.zip",coverURL:"https://cdn.beatsaver.com/c586288044251cc2b2e1d6ac3817214a9ea02302.jpg",previewURL:"https://cdn.beatsaver.com/c586288044251cc2b2e1d6ac3817214a9ea02302.mp3"}],createdAt:"2019-02-21T01:04:41Z",updatedAt:"2019-02-21T01:04:41Z",lastPublishedAt:"2019-02-21T01:04:41Z"},{id:"a168",name:"Yunomi - Oedo Controller/大江戸コントローラー feat. TORIENA【Wall Map】",description:"【requires】 Noodle Extensions Chroma\nhttps://youtu.be/5D1WTufQ5dM ",uploader:{id:4285467,name:"fefy",uniqueSet:!0,hash:"5cff0b7798cc5a672c856908",avatar:"https://cdn.beatsaver.com/avatar/380656936460484620.png",type:"DISCORD"},metadata:{bpm:115,duration:257,songName:"Oedo Controller",songSubName:"feat. TORIENA",songAuthorName:"Yunomi",levelAuthorName:"Fefy"},stats:{plays:0,downloads:2659,upvotes:1344,downvotes:19,score:.9307},uploaded:"2020-05-02T09:37:24.020Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cc3e7aefe1e878057f83d9018eaf977d9f69a1bb",key:"a168",state:"Published",createdAt:"2020-05-02T09:37:24.020Z",sageScore:7,diffs:[{njs:15,offset:0,notes:0,bombs:0,obstacles:55472,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:2395,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:816,bombs:0,obstacles:55472,nps:3.265,length:479,characteristic:"Standard",difficulty:"Expert",events:2395,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:249.913,paritySummary:{errors:20,warns:12,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cc3e7aefe1e878057f83d9018eaf977d9f69a1bb.zip",coverURL:"https://cdn.beatsaver.com/cc3e7aefe1e878057f83d9018eaf977d9f69a1bb.jpg",previewURL:"https://cdn.beatsaver.com/cc3e7aefe1e878057f83d9018eaf977d9f69a1bb.mp3"}],createdAt:"2020-05-02T09:37:24.020Z",updatedAt:"2020-05-02T09:37:24.020Z",lastPublishedAt:"2020-05-02T09:37:24.020Z"},{id:"6adc",name:"Rasputin (Funk Overload)",description:"Huge thanks to Whipstickgostop for remastering the audio of this funky beat!",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:152,duration:225,songName:"Rasputin (Funk Overload)",songSubName:"",songAuthorName:"Boney M",levelAuthorName:"Ryger"},stats:{plays:0,downloads:10264,upvotes:4935,downvotes:173,score:.9305},uploaded:"2019-10-19T23:00:58.938Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e979073ecfbb283675d03453af39109957819f35",key:"6adc",state:"Published",createdAt:"2019-10-19T23:00:58.938Z",sageScore:5,diffs:[{njs:16,offset:0,notes:988,bombs:0,obstacles:0,nps:4.542,length:551.125,characteristic:"Standard",difficulty:"Hard",events:4202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.549,paritySummary:{errors:15,warns:14,resets:0}},{njs:16,offset:0,notes:1080,bombs:0,obstacles:0,nps:4.964,length:551.125,characteristic:"Standard",difficulty:"Expert",events:4202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.549,paritySummary:{errors:25,warns:21,resets:0}},{njs:18,offset:0,notes:1164,bombs:0,obstacles:0,nps:5.351,length:551.125,characteristic:"Standard",difficulty:"ExpertPlus",events:4196,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.549,paritySummary:{errors:21,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e979073ecfbb283675d03453af39109957819f35.zip",coverURL:"https://cdn.beatsaver.com/e979073ecfbb283675d03453af39109957819f35.jpg",previewURL:"https://cdn.beatsaver.com/e979073ecfbb283675d03453af39109957819f35.mp3"}],createdAt:"2019-10-19T23:00:58.938Z",updatedAt:"2019-10-19T23:00:58.938Z",lastPublishedAt:"2019-10-19T23:00:58.938Z"},{id:"3ae2",name:"I Don't Wanna Be In Love (Dance Floor Anthem) - Good Charlotte",description:"I Dont Wanna Be In Love (Dance Floor Anthem) - Good Charlotte\r\nhttps://www.youtube.com/watch?v=pbpeMN_vFRM",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:125,duration:243,songName:"I Don't Wanna Be In Love (Dance Floor Anthem)",songSubName:"Good Charlotte",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:4672,upvotes:991,downvotes:8,score:.9305},uploaded:"2019-03-02T17:41:39Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f0bef11ce8866052770c42ed855e5d21e935614c",key:"3ae2",state:"Published",createdAt:"2019-03-02T17:41:39Z",sageScore:6,diffs:[{njs:10,offset:0,notes:372,bombs:0,obstacles:29,nps:1.563,length:496,characteristic:"Standard",difficulty:"Normal",events:5639,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:238.08,paritySummary:{errors:19,warns:7,resets:0}},{njs:12,offset:0,notes:796,bombs:0,obstacles:20,nps:3.343,length:496,characteristic:"Standard",difficulty:"Hard",events:5639,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:238.08,paritySummary:{errors:18,warns:26,resets:0}},{njs:14,offset:0,notes:1174,bombs:0,obstacles:10,nps:4.931,length:496,characteristic:"Standard",difficulty:"Expert",events:5639,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:238.08,paritySummary:{errors:27,warns:36,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f0bef11ce8866052770c42ed855e5d21e935614c.zip",coverURL:"https://cdn.beatsaver.com/f0bef11ce8866052770c42ed855e5d21e935614c.jpg",previewURL:"https://cdn.beatsaver.com/f0bef11ce8866052770c42ed855e5d21e935614c.mp3"}],createdAt:"2019-03-02T17:41:39Z",updatedAt:"2019-03-02T17:41:39Z",lastPublishedAt:"2019-03-02T17:41:39Z"},{id:"706b",name:"Guren No Yumiya (TV Size) [Attack On Titan Opening] - Linked Horizon",description:"This map was converted from one of my old maps.\n\nFeel free to DM me on discord @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:180.676,duration:93,songName:"Guren no Yumiya (TV Size)",songSubName:"",songAuthorName:"Linked Horizon",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:8096,upvotes:2435,downvotes:61,score:.9304},uploaded:"2019-11-17T07:01:53.007Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c00412845c48fb65fc30f16d902af542ca2c88ac",key:"706b",state:"Published",createdAt:"2019-11-17T07:01:53.007Z",sageScore:4,diffs:[{njs:11,offset:0,notes:299,bombs:0,obstacles:0,nps:3.545,length:253.998,characteristic:"Standard",difficulty:"Hard",events:2393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:84.349,paritySummary:{errors:10,warns:7,resets:0}},{njs:13,offset:0,notes:375,bombs:0,obstacles:0,nps:4.446,length:253.998,characteristic:"Standard",difficulty:"Expert",events:2472,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:84.349,paritySummary:{errors:21,warns:20,resets:0}},{njs:15,offset:0,notes:460,bombs:0,obstacles:0,nps:5.454,length:253.998,characteristic:"Standard",difficulty:"ExpertPlus",events:2472,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:84.349,paritySummary:{errors:22,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c00412845c48fb65fc30f16d902af542ca2c88ac.zip",coverURL:"https://cdn.beatsaver.com/c00412845c48fb65fc30f16d902af542ca2c88ac.jpg",previewURL:"https://cdn.beatsaver.com/c00412845c48fb65fc30f16d902af542ca2c88ac.mp3"}],createdAt:"2019-11-17T07:01:53.007Z",updatedAt:"2019-11-17T07:01:53.007Z",lastPublishedAt:"2019-11-17T07:01:53.007Z"},{id:"88bd",name:"Pornhub Intro",description:"182nd Map\nCollab with Monteblanco, Neko, shuuxruri, Suzuki.dll, Zoinkai & Kalmer\n\nYoutube Preview : https://www.youtube.com/watch?v=7V8go6p4P2E",uploader:{id:4284588,name:"rigid",uniqueSet:!0,hash:"5cff0b7598cc5a672c852224",avatar:"https://cdn.beatsaver.com/avatar/295613108947386368.png",type:"DISCORD"},metadata:{bpm:120,duration:5,songName:"Pornhub Intro",songSubName:"",songAuthorName:"Yes",levelAuthorName:"Rigid, Monteblanco, Neko, shuuxruri, Suzuki.dll, Zoinkai & Kalmer"},stats:{plays:0,downloads:3144,upvotes:2182,downvotes:51,score:.9303},uploaded:"2020-02-19T21:36:55.060Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3ff5c30044bc8d0dfe5aae6b9c665a6367732242",key:"88bd",state:"Published",createdAt:"2020-02-19T21:36:55.060Z",sageScore:3,diffs:[{njs:14,offset:0,notes:10,bombs:0,obstacles:0,nps:4.706,length:4.25,characteristic:"Standard",difficulty:"ExpertPlus",events:93,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:2.125,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3ff5c30044bc8d0dfe5aae6b9c665a6367732242.zip",coverURL:"https://cdn.beatsaver.com/3ff5c30044bc8d0dfe5aae6b9c665a6367732242.jpg",previewURL:"https://cdn.beatsaver.com/3ff5c30044bc8d0dfe5aae6b9c665a6367732242.mp3"}],createdAt:"2020-02-19T21:36:55.060Z",updatedAt:"2020-02-19T21:36:55.060Z",lastPublishedAt:"2020-02-19T21:36:55.060Z"},{id:"3f79",name:"Here With Me (feat. CHVRCHES) - Marshmello",description:"Expert Playthrough : https://youtu.be/okOkJ55es8A",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:100,duration:158,songName:"Here With Me (feat. CHVRCHES)",songSubName:"Marshmello",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:6739,upvotes:2077,downvotes:47,score:.9303},uploaded:"2019-03-21T15:12:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bae9f42e64c14c8b1740c5bedc0e1c1db8c33c7d",key:"3f79",state:"Published",createdAt:"2019-03-21T15:12:40Z",sageScore:5,diffs:[{njs:11,offset:0,notes:253,bombs:0,obstacles:35,nps:1.67,length:252.5,characteristic:"Standard",difficulty:"Normal",events:626,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.5,paritySummary:{errors:27,warns:6,resets:0}},{njs:12,offset:0,notes:306,bombs:0,obstacles:35,nps:2.02,length:252.5,characteristic:"Standard",difficulty:"Hard",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.5,paritySummary:{errors:13,warns:8,resets:0}},{njs:14,offset:0,notes:450,bombs:0,obstacles:35,nps:2.97,length:252.5,characteristic:"Standard",difficulty:"Expert",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.5,paritySummary:{errors:28,warns:24,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bae9f42e64c14c8b1740c5bedc0e1c1db8c33c7d.zip",coverURL:"https://cdn.beatsaver.com/bae9f42e64c14c8b1740c5bedc0e1c1db8c33c7d.jpg",previewURL:"https://cdn.beatsaver.com/bae9f42e64c14c8b1740c5bedc0e1c1db8c33c7d.mp3"}],createdAt:"2019-03-21T15:12:40Z",updatedAt:"2019-03-21T15:12:40Z",lastPublishedAt:"2019-03-21T15:12:40Z"},{id:"238a",name:"Dance of the Sugar Plum Fairy - Lindsey Stirling",description:"EDIT: Thanks to everyone who voted for this map in the Christmas contest!\n\nTheme from the nutcracker.\n\nExpert+ preview: https://youtu.be/naaei24FZAY\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu\n\nHard and Normal are kinda close to OST standards, so might be easier for custom standards.\n\nThanks to Redmagi, baxter395, AaltopahWi, and Kolezan for their help and feedback.",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:140,duration:158,songName:"Dance of the Sugar Plum Fairy",songSubName:"Lindsey Stirling",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:4103,upvotes:1711,downvotes:33,score:.9302},uploaded:"2018-12-03T09:40:02Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6b901c30686a9fa2935271177fc1b57dd072aae8",key:"238a",state:"Published",createdAt:"2018-12-03T09:40:02Z",sageScore:4,diffs:[{njs:10,offset:0,notes:219,bombs:2,obstacles:29,nps:1.494,length:342,characteristic:"Standard",difficulty:"Normal",events:547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.571,paritySummary:{errors:89,warns:12,resets:0}},{njs:10,offset:0,notes:373,bombs:2,obstacles:16,nps:2.545,length:342,characteristic:"Standard",difficulty:"Hard",events:547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.571,paritySummary:{errors:54,warns:10,resets:0}},{njs:15,offset:0,notes:721,bombs:4,obstacles:32,nps:4.919,length:342,characteristic:"Standard",difficulty:"ExpertPlus",events:547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.571,paritySummary:{errors:51,warns:67,resets:1}}],downloadURL:"https://cdn.beatsaver.com/6b901c30686a9fa2935271177fc1b57dd072aae8.zip",coverURL:"https://cdn.beatsaver.com/6b901c30686a9fa2935271177fc1b57dd072aae8.jpg",previewURL:"https://cdn.beatsaver.com/6b901c30686a9fa2935271177fc1b57dd072aae8.mp3"}],createdAt:"2018-12-03T09:40:02Z",updatedAt:"2018-12-03T09:40:02Z",lastPublishedAt:"2018-12-03T09:40:02Z"},{id:"ebb",name:"Do I Wanna Know? - Arctic Monkeys",description:"X/H/N/E difficulties, full manual lighting.\r\n\r\nExpert Playthrough: https://www.youtube.com/watch?v=ejmDJxe1Vzg\r\n\r\nCreated on twitch in one sitting during a tutorial stream.\r\nFollow us and come say hi on twitch! https://www.twitch.tv/freeek\r\n\r\nHave fun :)\r\n\r\nFreeek!",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:85,duration:273,songName:"Do I Wanna Know?",songSubName:"Arctic Monkeys",songAuthorName:"Freeek",levelAuthorName:"freeek"},stats:{plays:0,downloads:6011,upvotes:2491,downvotes:64,score:.9302},uploaded:"2018-08-09T18:05:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0fa854bb295e56d8c77da226a3ca41c0070cc793",key:"ebb",state:"Published",createdAt:"2018-08-09T18:05:46Z",sageScore:6,diffs:[{njs:10,offset:0,notes:372,bombs:0,obstacles:71,nps:1.387,length:380,characteristic:"Standard",difficulty:"Easy",events:1154,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.235,paritySummary:{errors:84,warns:10,resets:0}},{njs:10,offset:0,notes:522,bombs:0,obstacles:72,nps:1.946,length:380,characteristic:"Standard",difficulty:"Normal",events:1154,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.235,paritySummary:{errors:53,warns:54,resets:0}},{njs:10,offset:0,notes:708,bombs:0,obstacles:72,nps:2.639,length:380,characteristic:"Standard",difficulty:"Hard",events:1154,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.235,paritySummary:{errors:56,warns:74,resets:0}},{njs:10,offset:0,notes:863,bombs:0,obstacles:75,nps:3.217,length:380,characteristic:"Standard",difficulty:"Expert",events:1154,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:268.235,paritySummary:{errors:79,warns:105,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0fa854bb295e56d8c77da226a3ca41c0070cc793.zip",coverURL:"https://cdn.beatsaver.com/0fa854bb295e56d8c77da226a3ca41c0070cc793.jpg",previewURL:"https://cdn.beatsaver.com/0fa854bb295e56d8c77da226a3ca41c0070cc793.mp3"}],createdAt:"2018-08-09T18:05:46Z",updatedAt:"2018-08-09T18:05:46Z",lastPublishedAt:"2018-08-09T18:05:46Z"},{id:"80fb",name:"[Noodlegames] Lifelight (Camellia's Hardstyle Bootleg)",description:"The Ramen Noodle group is here to bring you a map pack full of our favorite video game soundtracks and game-inspired music!\r\n\r\nCamellia + Iconic Song = PepeJam\r\nHas RGB lights (use chromalite pls, you'll make me cry if you don't)\r\n\r\nStandard mapped by +1 Rabbit\r\nLots of love provided by CyanSnow\r\nOne Saber and Lights mapped by Aeroluna\r\n\r\n150 BPM / 3:47 Duration\r\n\r\n[Standard]:\r\nEasy - 284 notes (1.16 NPS)\r\nNormal - 355 notes (1.56 NPS)\r\nHard - 661 notes (2.91 NPS)\r\nExpert - 899 notes (3.96 NPS)\r\nExpert+ - 1036 notes (4.56 NPS)\r\n\r\n[One Saber]:\r\nExpert - 622 notes (2.73 NPS)\r\nExpert+ - 692 notes (3.05 NPS)\r\n\r\nLights preview: https://youtu.be/qk06uZpgr7E",uploader:{id:4284266,name:"aeroluna",uniqueSet:!0,hash:"5cff0b7698cc5a672c854907",avatar:"https://cdn.beatsaver.com/avatar/193636171497209856.png",type:"DISCORD"},metadata:{bpm:150,duration:227,songName:"Lifelight",songSubName:"(Camellia's Hardstyle Bootleg)",songAuthorName:"Camellia",levelAuthorName:"+1 Rabbit & Aeroluna"},stats:{plays:0,downloads:4528,upvotes:1540,downvotes:27,score:.9301},uploaded:"2020-01-24T23:00:27.676Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bb2bd82208d452badc4acaf877dc2c4abd0fab15",key:"80fb",state:"Published",createdAt:"2020-01-24T23:00:27.676Z",sageScore:4,diffs:[{njs:12,offset:0,notes:264,bombs:0,obstacles:8,nps:1.231,length:536,characteristic:"Standard",difficulty:"Easy",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:116,warns:8,resets:0}},{njs:12,offset:0,notes:355,bombs:0,obstacles:55,nps:1.656,length:536,characteristic:"Standard",difficulty:"Normal",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:77,warns:24,resets:0}},{njs:14,offset:0,notes:661,bombs:0,obstacles:99,nps:3.083,length:536,characteristic:"Standard",difficulty:"Hard",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:39,warns:29,resets:0}},{njs:16,offset:.25,notes:899,bombs:0,obstacles:103,nps:4.193,length:536,characteristic:"Standard",difficulty:"Expert",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:2,warns:0,resets:0}},{njs:19,offset:-.2,notes:1036,bombs:0,obstacles:46,nps:4.832,length:536,characteristic:"Standard",difficulty:"ExpertPlus",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.4,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:622,bombs:0,obstacles:0,nps:2.777,length:560,characteristic:"OneSaber",difficulty:"Expert",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224,paritySummary:{errors:7,warns:1,resets:0}},{njs:18,offset:0,notes:692,bombs:0,obstacles:0,nps:3.089,length:560,characteristic:"OneSaber",difficulty:"ExpertPlus",events:27741,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224,paritySummary:{errors:3,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bb2bd82208d452badc4acaf877dc2c4abd0fab15.zip",coverURL:"https://cdn.beatsaver.com/bb2bd82208d452badc4acaf877dc2c4abd0fab15.jpg",previewURL:"https://cdn.beatsaver.com/bb2bd82208d452badc4acaf877dc2c4abd0fab15.mp3"}],createdAt:"2020-01-24T23:00:27.676Z",updatedAt:"2020-01-24T23:00:27.676Z",lastPublishedAt:"2020-01-24T23:00:27.676Z"},{id:"d410",name:"[FUTURE FUNK PACK] Disco Lady - Nanidato",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\n"Disco Lady" by Nanidato was sampled from Tomato n\' Pine\'s "Wanna Dance!" \n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:120,duration:189,songName:"Disco Lady",songSubName:"",songAuthorName:"Nanidato",levelAuthorName:"ETAN"},stats:{plays:0,downloads:4750,upvotes:1097,downvotes:12,score:.9299},uploaded:"2020-08-11T17:46:48.109Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"601f29bdee0f10a29f1ad1520bd296930c7ad3d4",key:"d410",state:"Published",createdAt:"2020-08-11T17:46:48.109Z",sageScore:6,diffs:[{njs:10,offset:1,notes:191,bombs:0,obstacles:1,nps:1.051,length:363.5,characteristic:"Standard",difficulty:"Easy",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.75,paritySummary:{errors:8,warns:6,resets:0}},{njs:10,offset:1,notes:321,bombs:0,obstacles:1,nps:1.733,length:370.5,characteristic:"Standard",difficulty:"Normal",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:2,warns:0,resets:0}},{njs:12,offset:.3,notes:494,bombs:0,obstacles:1,nps:2.667,length:370.5,characteristic:"Standard",difficulty:"Hard",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:661,bombs:0,obstacles:1,nps:3.568,length:370.5,characteristic:"Standard",difficulty:"Expert",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.5,notes:924,bombs:0,obstacles:1,nps:4.988,length:370.5,characteristic:"Standard",difficulty:"ExpertPlus",events:7333,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/601f29bdee0f10a29f1ad1520bd296930c7ad3d4.zip",coverURL:"https://cdn.beatsaver.com/601f29bdee0f10a29f1ad1520bd296930c7ad3d4.jpg",previewURL:"https://cdn.beatsaver.com/601f29bdee0f10a29f1ad1520bd296930c7ad3d4.mp3"}],createdAt:"2020-08-11T17:46:48.109Z",updatedAt:"2020-08-11T17:46:48.109Z",lastPublishedAt:"2020-08-11T17:46:48.109Z"},{id:"130e6",name:"Geoxor - Faerie [wall map]",description:"Wall map collab with Reddek lets go!!\nThis turned out so much better than I thought it would, I hope you enjoy it as much as I do\n\nMap preview: https://youtu.be/uOdpWjTdGCU \n\nFeedback welcome at shan_man#7777 and Reddek#5864",uploader:{id:75261,name:"shan_man",uniqueSet:!0,hash:"5ec5aaa616c9680006500e0a",avatar:"https://cdn.beatsaver.com/avatar/345431512658739200.png",type:"DISCORD"},metadata:{bpm:150,duration:244,songName:"Faerie",songSubName:"",songAuthorName:"Geoxor",levelAuthorName:"Reddek & Shan_Man"},stats:{plays:0,downloads:2988,upvotes:1092,downvotes:12,score:.9298},uploaded:"2021-01-23T05:09:19.779Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"57c96c82897a73c495758fa494875dce6bdab869",key:"130e6",state:"Published",createdAt:"2021-01-23T05:09:19.779Z",sageScore:5,diffs:[{njs:20,offset:-.5,notes:1269,bombs:42,obstacles:0,nps:5.513,length:575.5,characteristic:"Standard",difficulty:"Expert",events:9327,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:230.2,paritySummary:{errors:0,warns:0,resets:15}},{njs:20,offset:-.5,notes:1650,bombs:42,obstacles:3239,nps:7.118,length:579.5,characteristic:"Standard",difficulty:"ExpertPlus",events:9327,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:231.8,paritySummary:{errors:37,warns:1,resets:15}}],downloadURL:"https://cdn.beatsaver.com/57c96c82897a73c495758fa494875dce6bdab869.zip",coverURL:"https://cdn.beatsaver.com/57c96c82897a73c495758fa494875dce6bdab869.jpg",previewURL:"https://cdn.beatsaver.com/57c96c82897a73c495758fa494875dce6bdab869.mp3"}],createdAt:"2021-01-23T05:09:19.779Z",updatedAt:"2021-01-23T05:09:19.779Z",lastPublishedAt:"2021-01-23T05:09:19.779Z"},{id:"4a36",name:"[Anniversary] Backbone (ft. Nevve) - Droeloe [Fafurion & Skyler Wallace]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:151,duration:171,songName:"Backbone",songSubName:"Droeloe",songAuthorName:"Fafurion & Skyler Wallace",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:3767,upvotes:2308,downvotes:58,score:.9296},uploaded:"2019-05-03T14:08:11Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"376abe290620e443e9451366accb30e5095edbce",key:"4a36",state:"Published",createdAt:"2019-05-03T14:08:11Z",sageScore:7,diffs:[{njs:10,offset:0,notes:190,bombs:0,obstacles:4,nps:1.248,length:383,characteristic:"Standard",difficulty:"Easy",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:152.185,paritySummary:{errors:36,warns:31,resets:0}},{njs:12,offset:0,notes:265,bombs:0,obstacles:7,nps:1.746,length:382,characteristic:"Standard",difficulty:"Normal",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.788,paritySummary:{errors:43,warns:49,resets:0}},{njs:12,offset:0,notes:417,bombs:0,obstacles:12,nps:2.747,length:382,characteristic:"Standard",difficulty:"Hard",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.788,paritySummary:{errors:65,warns:40,resets:0}},{njs:12,offset:1,notes:552,bombs:0,obstacles:1,nps:3.632,length:382.5,characteristic:"Standard",difficulty:"Expert",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.987,paritySummary:{errors:36,warns:42,resets:0}},{njs:14,offset:1,notes:592,bombs:0,obstacles:3,nps:3.895,length:382.5,characteristic:"Standard",difficulty:"ExpertPlus",events:909,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:151.987,paritySummary:{errors:45,warns:59,resets:0}}],downloadURL:"https://cdn.beatsaver.com/376abe290620e443e9451366accb30e5095edbce.zip",coverURL:"https://cdn.beatsaver.com/376abe290620e443e9451366accb30e5095edbce.jpg",previewURL:"https://cdn.beatsaver.com/376abe290620e443e9451366accb30e5095edbce.mp3"}],createdAt:"2019-05-03T14:08:11Z",updatedAt:"2019-05-03T14:08:11Z",lastPublishedAt:"2019-05-03T14:08:11Z"},{id:"75ba",name:"Savior - Rise Against",description:'"Savior" is punk rock song by American rock band Rise Against, featured on their fifth studio album Appeal to Reason (2008). In contrast to the social and political topics normally discussed in Rise Against songs, "Savior" is about forgiveness and broken relationships.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:169,duration:244,songName:"Savior",songSubName:"",songAuthorName:"Rise Against",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3854,upvotes:1458,downvotes:25,score:.9295},uploaded:"2019-12-11T15:27:50.619Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"20527803675e3a3d7721c0b8d05a1439a02a580d",key:"75ba",state:"Published",createdAt:"2019-12-11T15:27:50.619Z",sageScore:5,diffs:[{njs:15,offset:0,notes:925,bombs:30,obstacles:6,nps:3.912,length:664.996,characteristic:"Standard",difficulty:"Expert",events:3686,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:236.093,paritySummary:{errors:20,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/20527803675e3a3d7721c0b8d05a1439a02a580d.zip",coverURL:"https://cdn.beatsaver.com/20527803675e3a3d7721c0b8d05a1439a02a580d.jpg",previewURL:"https://cdn.beatsaver.com/20527803675e3a3d7721c0b8d05a1439a02a580d.mp3"}],createdAt:"2019-12-11T15:27:50.619Z",updatedAt:"2019-12-11T15:27:50.619Z",lastPublishedAt:"2019-12-11T15:27:50.619Z"},{id:"affa",name:"Zomboy - Endgame [NE/CHROMA]",description:"Can you survive?\r\n\r\nPreview: https://youtu.be/t4bk8ym3fIQ",uploader:{id:26361,name:"spookyghost",uniqueSet:!0,hash:"5cff0b7798cc5a672c8561a5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8561a5?d=retro",type:"SIMPLE"},metadata:{bpm:200,duration:310,songName:"End Game",songSubName:"Rott n' Roll",songAuthorName:"Zomboy",levelAuthorName:"Spooky Ghost & Exce"},stats:{plays:0,downloads:2617,upvotes:2099,downvotes:50,score:.9294},uploaded:"2020-06-08T17:04:09.275Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c28ffc53acd2c89329b5a7ff3d57a2b32bca416e",key:"affa",state:"Published",createdAt:"2020-06-08T17:04:09.275Z",sageScore:4,diffs:[{njs:22,offset:0,notes:1493,bombs:5376,obstacles:5e4,nps:5.068,length:982,characteristic:"Standard",difficulty:"ExpertPlus",events:12193,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:294.6,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c28ffc53acd2c89329b5a7ff3d57a2b32bca416e.zip",coverURL:"https://cdn.beatsaver.com/c28ffc53acd2c89329b5a7ff3d57a2b32bca416e.jpg",previewURL:"https://cdn.beatsaver.com/c28ffc53acd2c89329b5a7ff3d57a2b32bca416e.mp3"}],createdAt:"2020-06-08T17:04:09.275Z",updatedAt:"2020-06-08T17:04:09.275Z",lastPublishedAt:"2020-06-08T17:04:09.275Z"},{id:"475",name:"Ride - Twenty One Pilots",description:"Expert and Normal Charts\nLighting Events\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:150,duration:213,songName:"Ride",songSubName:"Twenty One Pilots",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:5957,upvotes:2990,downvotes:88,score:.9294},uploaded:"2018-06-09T11:24:50Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"05c4b1fc955756d2672ce322417ad2fadb416af6",key:"475",state:"Published",createdAt:"2018-06-09T11:24:50Z",sageScore:4,diffs:[{njs:10,offset:0,notes:377,bombs:0,obstacles:32,nps:1.844,length:511,characteristic:"Standard",difficulty:"Normal",events:859,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.4,paritySummary:{errors:109,warns:26,resets:0}},{njs:10,offset:0,notes:674,bombs:0,obstacles:32,nps:3.297,length:511,characteristic:"Standard",difficulty:"Expert",events:859,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.4,paritySummary:{errors:96,warns:102,resets:0}}],downloadURL:"https://cdn.beatsaver.com/05c4b1fc955756d2672ce322417ad2fadb416af6.zip",coverURL:"https://cdn.beatsaver.com/05c4b1fc955756d2672ce322417ad2fadb416af6.jpg",previewURL:"https://cdn.beatsaver.com/05c4b1fc955756d2672ce322417ad2fadb416af6.mp3"}],createdAt:"2018-06-09T11:24:50Z",updatedAt:"2018-06-09T11:24:50Z",lastPublishedAt:"2018-06-09T11:24:50Z"},{id:"5725",name:"Livin' La Vida Loca - Ricky Martin",description:"\"Livin' la Vida Loca\" (Livin' A Crazy Life) is the number-one hit song performed by Ricky Martin. It was released on March 23, 1999, from Martin's self-titled debut English-language album.\n\nI actually heard this song first from Eddie Murphy and Antonio Banderas at the end of Shrek 2 lol. Gotta say, its pretty catchy.\n\nEDIT: Fixed one mismapped note on chorus section and added two more notes at the very start of the song",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:178,duration:242,songName:"Livin' La Vida Loca",songSubName:"",songAuthorName:"Ricky Martin",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:7458,upvotes:2396,downvotes:63,score:.9292},uploaded:"2019-07-15T07:01:36.333Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"13d4f57a62f8725b39e607914637625e1edaf58d",key:"5725",state:"Published",createdAt:"2019-07-15T07:01:36.333Z",sageScore:6,diffs:[{njs:14,offset:0,notes:932,bombs:0,obstacles:20,nps:3.908,length:707.5,characteristic:"Standard",difficulty:"Expert",events:2683,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:238.483,paritySummary:{errors:87,warns:58,resets:0}}],downloadURL:"https://cdn.beatsaver.com/13d4f57a62f8725b39e607914637625e1edaf58d.zip",coverURL:"https://cdn.beatsaver.com/13d4f57a62f8725b39e607914637625e1edaf58d.jpg",previewURL:"https://cdn.beatsaver.com/13d4f57a62f8725b39e607914637625e1edaf58d.mp3"}],createdAt:"2019-07-15T07:01:36.333Z",updatedAt:"2019-07-15T07:01:36.333Z",lastPublishedAt:"2019-07-15T07:01:36.333Z"},{id:"5efe",name:"Welcome to the Club - Nightcore (Manian)",description:"Been a while since I released, but I'm back with a brand new map! Welcome to the club everyone! We've got it goin on, til the break of dawn, so put the record on!\n\nBPM: 182.39\nNPS: N - 2.46 ; H - 2.91 ; Ex - 4.03 ; Ex+ - 4.51\nNotes: N - 396 ; H - 468 ; Ex - 648 ; Ex+ - 725\nWalls: N - 131 ; H - 48 ; Ex - 27 ; Ex+ - 31\nBombs: N - 24 ; H - 0 ; Ex - 0 ; Ex+ - 0\n\nThanks to Redmagi, Kival Evan, helencarnate, and redhq for testing, and to Skeelie and Ryger (RaynArch) for helping with timing!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:182.39,duration:161,songName:"Welcome to the Club",songSubName:"",songAuthorName:"Nightcore",levelAuthorName:"fruhead"},stats:{plays:0,downloads:3613,upvotes:2226,downvotes:56,score:.9291},uploaded:"2019-08-25T06:45:04.972Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f42e4fb7ea9a439bdf295ee1cf4459e52d15b520",key:"5efe",state:"Published",createdAt:"2019-08-25T06:45:04.972Z",sageScore:4,diffs:[{njs:12,offset:0,notes:396,bombs:24,obstacles:131,nps:2.556,length:471,characteristic:"Standard",difficulty:"Normal",events:5134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.943,paritySummary:{errors:42,warns:4,resets:4}},{njs:14,offset:.5,notes:468,bombs:0,obstacles:48,nps:3.018,length:471.375,characteristic:"Standard",difficulty:"Hard",events:5134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.066,paritySummary:{errors:14,warns:1,resets:0}},{njs:17,offset:.5,notes:648,bombs:0,obstacles:27,nps:4.179,length:471.375,characteristic:"Standard",difficulty:"Expert",events:5134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.066,paritySummary:{errors:18,warns:2,resets:0}},{njs:18,offset:.5,notes:725,bombs:0,obstacles:31,nps:4.675,length:471.375,characteristic:"Standard",difficulty:"ExpertPlus",events:5134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.066,paritySummary:{errors:27,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f42e4fb7ea9a439bdf295ee1cf4459e52d15b520.zip",coverURL:"https://cdn.beatsaver.com/f42e4fb7ea9a439bdf295ee1cf4459e52d15b520.jpg",previewURL:"https://cdn.beatsaver.com/f42e4fb7ea9a439bdf295ee1cf4459e52d15b520.mp3"}],createdAt:"2019-08-25T06:45:04.972Z",updatedAt:"2019-08-25T06:45:04.972Z",lastPublishedAt:"2019-08-25T06:45:04.972Z"},{id:"58b7",name:"The Twist - Chubby Checker",description:"Do the Twist!\n\nThere's a twist to this map ;) it has zero down slash notes (I always wanted to try making a map with no down slashes and I think I found the perfect song to try that)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:155,duration:158,songName:"The Twist",songSubName:"",songAuthorName:"Chubby Checker",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2345,upvotes:998,downvotes:10,score:.929},uploaded:"2019-07-24T18:00:19.429Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1c2af7c45bb55bfb19401ac619bded30c4cf01c6",key:"58b7",state:"Published",createdAt:"2019-07-24T18:00:19.429Z",sageScore:6,diffs:[{njs:14,offset:0,notes:591,bombs:0,obstacles:4,nps:3.834,length:398.188,characteristic:"Standard",difficulty:"Expert",events:2280,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.137,paritySummary:{errors:15,warns:93,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1c2af7c45bb55bfb19401ac619bded30c4cf01c6.zip",coverURL:"https://cdn.beatsaver.com/1c2af7c45bb55bfb19401ac619bded30c4cf01c6.jpg",previewURL:"https://cdn.beatsaver.com/1c2af7c45bb55bfb19401ac619bded30c4cf01c6.mp3"}],createdAt:"2019-07-24T18:00:19.429Z",updatedAt:"2019-07-24T18:00:19.429Z",lastPublishedAt:"2019-07-24T18:00:19.429Z"},{id:"11e9c",name:"Tsuki No Waltz (Standard and FeetSaber)",description:"*****Attention!!*****\nThis map will take SO LONG to finish loading, since it has 2 standard and 3 FeetSaber difficulties which are all wallmaps... Please be patient.\n読み込みがものすごく長いです。2刀譜面2つ、足譜面3つ、すべて壁譜面なので…。\n*********************\n\nRequirements :\nNoodle Extensions\nChroma\nFeet Saber (NalulunaModifier)\n\nBig thanks to Rinka Michibiki for making standard difficulties.\n2刀譜面を提供していただいた導祈りんか様に、心からの感謝を。\n\nFeetmap and wall: henomohesan @henomohesan\nStandard difficulty: Rinka Michibiki @rinka_michibiki\n\nDemo :\n(Standard) https://youtu.be/4Q_PJ7tg3LA\n(Feet Saber) https://youtu.be/PngIJAleFTQ\n\nYou can download NalulunaModifier from official page :\nhttps://youtu.be/QtLNweiiQPU\n\nSpecial Thanks:\nMapping Club JP Discord by kamy @kamy_0811\nChromapper JP manual by 姚明 @gensouyou_39\nBeatwall JP manual by Kamy @kamy_0811 and FaZPi @FaZ_Pi",uploader:{id:4285472,name:"henomohesan",uniqueSet:!0,hash:"5ece0766d87e5800060a4635",avatar:"https://cdn.beatsaver.com/avatar/483262661245796352.png",type:"DISCORD"},metadata:{bpm:173,duration:183,songName:"Tsuki No Waltz (Standard and FeetSaber)",songSubName:"",songAuthorName:"Mio Isayama",levelAuthorName:"henomohesan"},stats:{plays:0,downloads:2241,upvotes:723,downvotes:2,score:.9288},uploaded:"2020-12-22T07:56:06.804Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c967a5862a8602ebacebe44b6ac5c2422c3e90bb",key:"11e9c",state:"Published",createdAt:"2020-12-22T07:56:06.804Z",sageScore:4,diffs:[{njs:10,offset:.7,notes:218,bombs:0,obstacles:13839,nps:1.318,length:477,characteristic:"Standard",difficulty:"Normal",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:6,warns:0,resets:0}},{njs:11,offset:-.5,notes:398,bombs:0,obstacles:13839,nps:2.406,length:477,characteristic:"Standard",difficulty:"Hard",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:3,warns:7,resets:0}},{njs:8,offset:0,notes:206,bombs:0,obstacles:13859,nps:1.245,length:477,characteristic:"NoArrows",difficulty:"Easy",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:333,bombs:0,obstacles:13839,nps:2.013,length:477,characteristic:"NoArrows",difficulty:"Normal",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:408,bombs:0,obstacles:13839,nps:2.466,length:477,characteristic:"NoArrows",difficulty:"Expert",events:6,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:165.434,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c967a5862a8602ebacebe44b6ac5c2422c3e90bb.zip",coverURL:"https://cdn.beatsaver.com/c967a5862a8602ebacebe44b6ac5c2422c3e90bb.jpg",previewURL:"https://cdn.beatsaver.com/c967a5862a8602ebacebe44b6ac5c2422c3e90bb.mp3"}],createdAt:"2020-12-22T07:56:06.804Z",updatedAt:"2020-12-22T07:56:06.804Z",lastPublishedAt:"2020-12-22T07:56:06.804Z"},{id:"44f6",name:"Blumenkranz - Cyua & Hiroyuki Sawano [Kill la Kill OST]",description:"Smol fix in Exp.\r\n\r\nExp+ Gameplay: https://youtu.be/lAi_xIWoQsc\r\n\r\nVocals by Cyua.\r\nMusic by Hiroyuki Sawano.\r\nLyrics by Rie Sawano.\r\nCheck out Kill la Kill, it's awesome! And has more awesome music!\r\nhttps://myanimelist.net/anime/18679/Kill_la_Kill\r\n\r\nCover from the Kill la Kill OST.",uploader:{id:4286005,name:"mandynasty",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ffaa",avatar:"https://cdn.beatsaver.com/avatar/307589087030673408.png",type:"DISCORD"},metadata:{bpm:160,duration:259,songName:"Blumenkranz",songSubName:"Cyua & Hiroyuki Sawano",songAuthorName:"ManDynasty",levelAuthorName:"ManDynasty"},stats:{plays:0,downloads:2635,upvotes:1171,downvotes:16,score:.9288},uploaded:"2019-04-11T19:30:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"01f7b442e2f206d1611fe45e297c216fe07da78e",key:"44f6",state:"Published",createdAt:"2019-04-11T19:30:09Z",sageScore:4,diffs:[{njs:10,offset:0,notes:462,bombs:52,obstacles:94,nps:1.839,length:670,characteristic:"Standard",difficulty:"Normal",events:4169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.25,paritySummary:{errors:23,warns:15,resets:1}},{njs:14,offset:1,notes:633,bombs:101,obstacles:89,nps:2.519,length:670,characteristic:"Standard",difficulty:"Hard",events:4169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.25,paritySummary:{errors:44,warns:53,resets:1}},{njs:15,offset:1,notes:947,bombs:66,obstacles:77,nps:3.764,length:671,characteristic:"Standard",difficulty:"Expert",events:4169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.625,paritySummary:{errors:85,warns:116,resets:2}},{njs:16,offset:0,notes:1054,bombs:66,obstacles:83,nps:4.189,length:671,characteristic:"Standard",difficulty:"ExpertPlus",events:4169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:251.625,paritySummary:{errors:80,warns:108,resets:2}}],downloadURL:"https://cdn.beatsaver.com/01f7b442e2f206d1611fe45e297c216fe07da78e.zip",coverURL:"https://cdn.beatsaver.com/01f7b442e2f206d1611fe45e297c216fe07da78e.jpg",previewURL:"https://cdn.beatsaver.com/01f7b442e2f206d1611fe45e297c216fe07da78e.mp3"}],createdAt:"2019-04-11T19:30:09Z",updatedAt:"2019-04-11T19:30:09Z",lastPublishedAt:"2019-04-11T19:30:09Z"},{id:"4377",name:"The Greatest - Sia",description:"YouTube Preview: https://youtu.be/huUMotlFpig",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:192,duration:191,songName:"The Greatest (ft. Kendrick Lamar)",songSubName:"Sia",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:6436,upvotes:2325,downvotes:61,score:.9288},uploaded:"2019-04-04T21:20:03Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"58cd8ddf99600d967bca61285e9e0c429138009d",key:"4377",state:"Published",createdAt:"2019-04-04T21:20:03Z",sageScore:6,diffs:[{njs:12,offset:0,notes:822,bombs:16,obstacles:20,nps:4.355,length:604,characteristic:"Standard",difficulty:"ExpertPlus",events:3165,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.75,paritySummary:{errors:91,warns:108,resets:0}}],downloadURL:"https://cdn.beatsaver.com/58cd8ddf99600d967bca61285e9e0c429138009d.zip",coverURL:"https://cdn.beatsaver.com/58cd8ddf99600d967bca61285e9e0c429138009d.jpg",previewURL:"https://cdn.beatsaver.com/58cd8ddf99600d967bca61285e9e0c429138009d.mp3"}],createdAt:"2019-04-04T21:20:03Z",updatedAt:"2019-04-04T21:20:03Z",lastPublishedAt:"2019-04-04T21:20:03Z"},{id:"110ac",name:"Madeon - The Prince",description:'*CHROMA RECOMMENDED*\n\nThis map was originally going to have autolights. Imagine.\n\nDg: "When I began lighting this map, I did it with the intention of copying the colors and vibe of the official visualizer by Madeon, with my own twists to bring it up to Beat Saber level. The amount of time and effort that went into literally lighting thermal cam... unreal."\n\nYou can check out the visualizer here:https://www.youtube.com/watch?v=AOhFzDN3eMI\n\nBearly#5259\nDGRJ4Life#6510',uploader:{id:2381,name:"bearly",uniqueSet:!0,hash:"5ea9efbf16c968000636dba4",avatar:"https://www.gravatar.com/avatar/5ea9efbf16c968000636dba4?d=retro",type:"SIMPLE"},metadata:{bpm:95,duration:223,songName:"The Prince",songSubName:"",songAuthorName:"Madeon",levelAuthorName:"Bearly & dgrj4life"},stats:{plays:0,downloads:8424,upvotes:1707,downvotes:36,score:.9287},uploaded:"2020-11-16T23:34:00.851Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cf3243d6fc63c77a3b864414314ca4fb36f69e77",key:"110ac",state:"Published",createdAt:"2020-11-16T23:34:00.851Z",sageScore:5,diffs:[{njs:17,offset:.15,notes:917,bombs:8,obstacles:30,nps:4.27,length:340,characteristic:"Standard",difficulty:"Expert",events:33893,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:214.737,paritySummary:{errors:0,warns:0,resets:3}},{njs:18.5,offset:-.2,notes:990,bombs:3,obstacles:21,nps:4.61,length:340,characteristic:"Standard",difficulty:"ExpertPlus",events:33893,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:214.737,paritySummary:{errors:0,warns:0,resets:1}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:33893,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cf3243d6fc63c77a3b864414314ca4fb36f69e77.zip",coverURL:"https://cdn.beatsaver.com/cf3243d6fc63c77a3b864414314ca4fb36f69e77.jpg",previewURL:"https://cdn.beatsaver.com/cf3243d6fc63c77a3b864414314ca4fb36f69e77.mp3"}],createdAt:"2020-11-16T23:34:00.851Z",updatedAt:"2020-11-16T23:34:00.851Z",lastPublishedAt:"2020-11-16T23:34:00.851Z"},{id:"b18a",name:"[Bloq Busters Vol. 4] Eric Johnson - Cliffs of Dover",description:"Thanks to SkylerWallace for warping the audio to make this actually mappable! I loved this song from Guitar Hero, and wanted it to have a spot here in Beat Saber. Enjoy!",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:95,duration:254,songName:"Cliffs of Dover",songSubName:"",songAuthorName:"Eric Johnson",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:5733,upvotes:1467,downvotes:27,score:.9286},uploaded:"2020-06-12T22:01:10.949Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9f9f5c00b449549b1c276209148551c38abf495a",key:"b18a",state:"Published",createdAt:"2020-06-12T22:01:10.949Z",sageScore:6,diffs:[{njs:14,offset:-.25,notes:835,bombs:0,obstacles:2,nps:3.389,length:390.063,characteristic:"Standard",difficulty:"Hard",events:8195,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.355,paritySummary:{errors:9,warns:7,resets:0}},{njs:16,offset:.25,notes:1327,bombs:89,obstacles:20,nps:5.387,length:390.063,characteristic:"Standard",difficulty:"Expert",events:8195,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.355,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:1417,bombs:178,obstacles:10,nps:5.752,length:390.063,characteristic:"Standard",difficulty:"ExpertPlus",events:8195,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.355,paritySummary:{errors:3,warns:1,resets:7}}],downloadURL:"https://cdn.beatsaver.com/9f9f5c00b449549b1c276209148551c38abf495a.zip",coverURL:"https://cdn.beatsaver.com/9f9f5c00b449549b1c276209148551c38abf495a.jpg",previewURL:"https://cdn.beatsaver.com/9f9f5c00b449549b1c276209148551c38abf495a.mp3"}],createdAt:"2020-06-12T22:01:10.949Z",updatedAt:"2020-06-12T22:01:10.949Z",lastPublishedAt:"2020-06-12T22:01:10.949Z"},{id:"21b8",name:"Senpai Notice Me",description:"I need therapy.\r\nFinally getting it ranked! Let's go!",uploader:{id:28684,name:"jackodej",uniqueSet:!0,hash:"5cff0b7498cc5a672c850120",avatar:"https://www.gravatar.com/avatar/5cff0b7498cc5a672c850120?d=retro",type:"SIMPLE"},metadata:{bpm:155,duration:278,songName:"Senpai Notice Me",songSubName:"Camellia ft. Nanahira",songAuthorName:"JackoDEJ",levelAuthorName:"JackoDEJ"},stats:{plays:0,downloads:5405,upvotes:5203,downvotes:197,score:.9286},uploaded:"2018-11-23T14:11:31Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"e3ef6cab44ff2222c09b399e8e5a62a095233621",key:"21b8",state:"Published",createdAt:"2018-11-23T14:11:31Z",sageScore:6,diffs:[{njs:16,offset:0,notes:1730,bombs:0,obstacles:5,nps:6.357,length:703,characteristic:"Standard",difficulty:"ExpertPlus",events:1758,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:272.129,paritySummary:{errors:58,warns:61,resets:0},stars:5.91}],downloadURL:"https://cdn.beatsaver.com/e3ef6cab44ff2222c09b399e8e5a62a095233621.zip",coverURL:"https://cdn.beatsaver.com/e3ef6cab44ff2222c09b399e8e5a62a095233621.jpg",previewURL:"https://cdn.beatsaver.com/e3ef6cab44ff2222c09b399e8e5a62a095233621.mp3"}],createdAt:"2018-11-23T14:11:31Z",updatedAt:"2018-11-23T14:11:31Z",lastPublishedAt:"2018-11-23T14:11:31Z"},{id:"42",name:"Icarus - Madeon - HARD",description:"Icarus by Madeon,\r\n\r\nMostly an experiment in the 3D editor events... editor...\r\n\r\nFully evented, 3:33 length\r\n\r\nHard difficulty only.\r\n\r\nYoutube playthrough: https://www.youtube.com/watch?v=VvEkluZHkY4",uploader:{id:53534,name:"gompasta",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e8de",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8de?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:213,songName:"Icarus",songSubName:"",songAuthorName:"Madeon",levelAuthorName:"gompasta"},stats:{plays:0,downloads:6994,upvotes:3007,downvotes:92,score:.9285},uploaded:"2018-05-12T00:35:40Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"be1a39b41f2089cad9aa8d775f55e8707447b5ca",key:"42",state:"Published",createdAt:"2018-05-12T00:35:40Z",sageScore:5,diffs:[{njs:10,offset:0,notes:420,bombs:16,obstacles:6,nps:2.035,length:433.5,characteristic:"Standard",difficulty:"Hard",events:859,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.429,paritySummary:{errors:59,warns:63,resets:4},stars:1.56}],downloadURL:"https://cdn.beatsaver.com/be1a39b41f2089cad9aa8d775f55e8707447b5ca.zip",coverURL:"https://cdn.beatsaver.com/be1a39b41f2089cad9aa8d775f55e8707447b5ca.jpg",previewURL:"https://cdn.beatsaver.com/be1a39b41f2089cad9aa8d775f55e8707447b5ca.mp3"}],createdAt:"2018-05-12T00:35:40Z",updatedAt:"2018-05-12T00:35:40Z",lastPublishedAt:"2018-05-12T00:35:40Z"},{id:"8fc3",name:"Katy Perry - Dark Horse (feat. Juicy J) [Z-ANESaber]",description:"Yo\r\nI´m open for song requests so if you have any ideas let me know in the comments or on Discord:\r\nNiqu#9221\r\n\r\nThis song was requested by: SaberTribe\r\nHave fun!\r\n\r\nPlaythrough: https://www.youtube.com/watch?v=Qs8xfj_EQYs&feature=youtu.be\r\n\r\nSong: https://www.youtube.com/watch?v=0KSOMA3QBU0\r\n\r\nBye",uploader:{id:4284220,name:"z-anesaber",uniqueSet:!0,hash:"5dfbafac9921260006527fa4",avatar:"https://cdn.beatsaver.com/avatar/324954940885958658.png",type:"DISCORD"},metadata:{bpm:132,duration:212,songName:"Dark Horse [Z-ANESaber]",songSubName:"(feat. Juicy J)",songAuthorName:"Katy Perry",levelAuthorName:"Z-ANESaber"},stats:{plays:0,downloads:4654,upvotes:1239,downvotes:19,score:.9283},uploaded:"2020-03-13T21:40:12.962Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e53f2a91acfca398d1770e3972861ce15f56b123",key:"8fc3",state:"Published",createdAt:"2020-03-13T21:40:12.962Z",sageScore:3,diffs:[{njs:13.3,offset:0,notes:802,bombs:12,obstacles:9,nps:3.811,length:463,characteristic:"Standard",difficulty:"Expert",events:1851,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.455,paritySummary:{errors:6,warns:4,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e53f2a91acfca398d1770e3972861ce15f56b123.zip",coverURL:"https://cdn.beatsaver.com/e53f2a91acfca398d1770e3972861ce15f56b123.jpg",previewURL:"https://cdn.beatsaver.com/e53f2a91acfca398d1770e3972861ce15f56b123.mp3"}],createdAt:"2020-03-13T21:40:12.962Z",updatedAt:"2020-03-13T21:40:12.962Z",lastPublishedAt:"2020-03-13T21:40:12.962Z"},{id:"89be",name:"More One Night [Girl's Last Tour Ending]",description:"Sung by \nChito (CV: Inori Minase)\nYuuri (CV: Yurika Kubo)\n\nCute girls doing post-apocalyptic things\n\nI have fancy lighting on this one so make sure you got chroma or chromalite to see it! Unfortunately I couldn't get ring prop to work, I think i just mapped it wrong LOL. I learn soon enough\n\nBPM 123 | \nExpert+\nExpert\nHard\nLightshow\n\nty Qwasyx for playtesting\n\npreview: https://www.youtube.com/watch?v=bsqZWXBMQwQ\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:123,duration:214,songName:"More One Night",songSubName:"",songAuthorName:"Inori Minase, Yurika Kubo",levelAuthorName:"ETAN"},stats:{plays:0,downloads:2748,upvotes:1179,downvotes:17,score:.9283},uploaded:"2020-02-22T21:17:09.228Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bf43cba8026db57a2dda154ae4fa24621cc3a232",key:"89be",state:"Published",createdAt:"2020-02-22T21:17:09.228Z",sageScore:7,diffs:[{njs:13,offset:.4,notes:583,bombs:0,obstacles:21,nps:2.786,length:429,characteristic:"Standard",difficulty:"Hard",events:16009,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.268,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:833,bombs:0,obstacles:21,nps:3.981,length:429,characteristic:"Standard",difficulty:"Expert",events:16009,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.268,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:.5,notes:1e3,bombs:0,obstacles:21,nps:4.779,length:429,characteristic:"Standard",difficulty:"ExpertPlus",events:16009,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.268,paritySummary:{errors:12,warns:9,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:16009,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bf43cba8026db57a2dda154ae4fa24621cc3a232.zip",coverURL:"https://cdn.beatsaver.com/bf43cba8026db57a2dda154ae4fa24621cc3a232.jpg",previewURL:"https://cdn.beatsaver.com/bf43cba8026db57a2dda154ae4fa24621cc3a232.mp3"}],createdAt:"2020-02-22T21:17:09.228Z",updatedAt:"2020-02-22T21:17:09.228Z",lastPublishedAt:"2020-02-22T21:17:09.228Z"},{id:"72de",name:"GRiZ - Can't Hold Me Down",description:"Easy, normal, hard, expert (maulable), expert+\r\n\r\nThis is a remap, first had major issues. Maul players seem to like the original, so a modified version is included in the expert slot. Also now has a full spread and hand lights are replacing the trash from light map.\r\n\r\nSpecial thanks to Adeza for the original suggestion. \r\n\r\nVideo: https://www.youtube.com/watch?v=c1_ziuz5hrA",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:180,duration:208,songName:"Can't Hold Me Down",songSubName:"",songAuthorName:"GRiZ",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:4104,upvotes:1886,downvotes:44,score:.9283},uploaded:"2019-11-30T21:07:56.418Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a0ebf4980fcb1f29871582dbeca8e3a8d5511f1c",key:"72de",state:"Published",createdAt:"2019-11-30T21:07:56.418Z",sageScore:7,diffs:[{njs:12,offset:.25,notes:303,bombs:0,obstacles:0,nps:1.524,length:596.5,characteristic:"Standard",difficulty:"Easy",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:94,warns:26,resets:0}},{njs:12,offset:.25,notes:380,bombs:0,obstacles:0,nps:1.911,length:596.5,characteristic:"Standard",difficulty:"Normal",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:49,warns:17,resets:0}},{njs:14,offset:1,notes:420,bombs:0,obstacles:20,nps:2.112,length:596.5,characteristic:"Standard",difficulty:"Hard",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:12,warns:7,resets:0}},{njs:16,offset:.5,notes:749,bombs:0,obstacles:190,nps:3.767,length:596.5,characteristic:"Standard",difficulty:"Expert",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:7,warns:2,resets:0}},{njs:18,offset:.25,notes:1029,bombs:139,obstacles:18,nps:5.175,length:596.5,characteristic:"Standard",difficulty:"ExpertPlus",events:11378,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:198.833,paritySummary:{errors:6,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a0ebf4980fcb1f29871582dbeca8e3a8d5511f1c.zip",coverURL:"https://cdn.beatsaver.com/a0ebf4980fcb1f29871582dbeca8e3a8d5511f1c.jpg",previewURL:"https://cdn.beatsaver.com/a0ebf4980fcb1f29871582dbeca8e3a8d5511f1c.mp3"}],createdAt:"2019-11-30T21:07:56.418Z",updatedAt:"2019-11-30T21:07:56.418Z",lastPublishedAt:"2019-11-30T21:07:56.418Z"},{id:"11de5",name:"Kaibutsu (TV Size) [Beastars Season 2 Opening] - YOASOBI",description:"Kaibutsu / 怪物 is the seventh single by Yoasobi. It is used as the opening theme song to the second season of Beastars.\n\nThis map was a special request by ScrewBedtime#5490\n\nKeep up to date on my maps: https://twitter.com/Joetastic_\nMy mapper's profile: https://bsaber.com/members/joetastic/\nContact me on discord: @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:170,duration:88,songName:"Kaibutsu (TV Size)",songSubName:"",songAuthorName:"YOASOBI",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:16414,upvotes:1604,downvotes:33,score:.9281},uploaded:"2020-12-21T17:50:41.969Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"08d9a92c273f6d06baa30c5b70f182c902349578",key:"11de5",state:"Published",createdAt:"2020-12-21T17:50:41.969Z",sageScore:3,diffs:[{njs:15,offset:.5,notes:327,bombs:6,obstacles:28,nps:3.829,length:242,characteristic:"Standard",difficulty:"Hard",events:2248,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.412,paritySummary:{errors:7,warns:0,resets:0}},{njs:17,offset:.2,notes:426,bombs:6,obstacles:44,nps:4.988,length:242,characteristic:"Standard",difficulty:"Expert",events:2248,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.412,paritySummary:{errors:1,warns:0,resets:0}},{njs:19,offset:0,notes:475,bombs:6,obstacles:43,nps:5.561,length:242,characteristic:"Standard",difficulty:"ExpertPlus",events:2248,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.412,paritySummary:{errors:1,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/08d9a92c273f6d06baa30c5b70f182c902349578.zip",coverURL:"https://cdn.beatsaver.com/08d9a92c273f6d06baa30c5b70f182c902349578.jpg",previewURL:"https://cdn.beatsaver.com/08d9a92c273f6d06baa30c5b70f182c902349578.mp3"}],createdAt:"2020-12-21T17:50:41.969Z",updatedAt:"2020-12-21T17:50:41.969Z",lastPublishedAt:"2020-12-21T17:50:41.969Z"},{id:"ae3c",name:"Fox Stevenson - Bruises",description:"I GOT.\r\nBRUISES.\r\n\r\nMade for my fiancee, and cause this song rocks enough to deserve a 360 and 90 degree map.\r\n\r\n2nd Reupload to fix a big oops in the 360 and 90 degree map ;_;",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:174,duration:224,songName:"Bruises",songSubName:"",songAuthorName:"Fox Stevenson",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:3027,upvotes:1258,downvotes:20,score:.9281},uploaded:"2020-06-04T12:46:11.099Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"71eff19ed6d32fd0a446e1a32303c77aa7f646f2",key:"ae3c",state:"Published",createdAt:"2020-06-04T12:46:11.099Z",sageScore:7,diffs:[{njs:10,offset:0,notes:335,bombs:0,obstacles:65,nps:1.52,length:639,characteristic:"Standard",difficulty:"Easy",events:13393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.345,paritySummary:{errors:86,warns:21,resets:0}},{njs:10,offset:0,notes:446,bombs:12,obstacles:64,nps:2.024,length:639,characteristic:"Standard",difficulty:"Normal",events:13393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.345,paritySummary:{errors:87,warns:1,resets:1}},{njs:12,offset:0,notes:692,bombs:12,obstacles:66,nps:3.141,length:639,characteristic:"Standard",difficulty:"Hard",events:13393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.345,paritySummary:{errors:8,warns:4,resets:3}},{njs:15,offset:.5,notes:1023,bombs:18,obstacles:52,nps:4.643,length:639,characteristic:"Standard",difficulty:"Expert",events:13393,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.345,paritySummary:{errors:4,warns:2,resets:1}},{njs:19,offset:0,notes:1476,bombs:76,obstacles:0,nps:6.693,length:639.562,characteristic:"Standard",difficulty:"ExpertPlus",events:13394,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.539,paritySummary:{errors:6,warns:0,resets:15}},{njs:19,offset:.25,notes:1462,bombs:130,obstacles:70,nps:6.627,length:639.75,characteristic:"90Degree",difficulty:"ExpertPlus",events:13958,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.603,paritySummary:{errors:4,warns:1,resets:15}},{njs:19,offset:.25,notes:1462,bombs:130,obstacles:74,nps:6.627,length:639.75,characteristic:"360Degree",difficulty:"ExpertPlus",events:13974,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.603,paritySummary:{errors:4,warns:1,resets:15}}],downloadURL:"https://cdn.beatsaver.com/71eff19ed6d32fd0a446e1a32303c77aa7f646f2.zip",coverURL:"https://cdn.beatsaver.com/71eff19ed6d32fd0a446e1a32303c77aa7f646f2.jpg",previewURL:"https://cdn.beatsaver.com/71eff19ed6d32fd0a446e1a32303c77aa7f646f2.mp3"}],createdAt:"2020-06-04T12:46:11.099Z",updatedAt:"2020-06-04T12:46:11.099Z",lastPublishedAt:"2020-06-04T12:46:11.099Z"},{id:"6909",name:"Feuer Frei! - Rammstein",description:"Had fun making his one, and also made some One Saber difficulties for it since it fit pretty well. Enjoy!\n\nIncludes Standard (2 saber) Expert through Easy and One Saber Expert through Normal, and is a bit harder than normal since it's a faster song.\n\nNo preview (yet).\n\nBPM: 180.18\nDuration: 3:08\n\nStandard (2 Sabers):\nEasy, Normal, Hard and Expert difficulties:\n\nEasy:\n280 notes, 16 obstacles, 4 mines\n\nNormal:\n337 notes, 16 obstacles, 4 mines\n\nHard:\n459 notes, 15 obstacles, 4 mines\n\nExpert:\n773 notes, 16 obstacles, 2 mines\n\n\nOne Saber:\nNormal, Hard and Expert difficulties:\n\nNormal:\n216 notes, 17 obstacles, 0 mines\n\nHard:\n315 notes, 16 obstacles, 0 mines\n\nExpert:\n472 notes, 16 obstacles, 2 mines",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:190.18,duration:188,songName:"Feuer Frei!",songSubName:"",songAuthorName:"Rammstein",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:6179,upvotes:2018,downvotes:50,score:.928},uploaded:"2019-10-11T06:11:24.477Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a14d4f258c4a8012e110b599d725be7b20a5470a",key:"6909",state:"Published",createdAt:"2019-10-11T06:11:24.477Z",sageScore:5,diffs:[{njs:10,offset:0,notes:280,bombs:4,obstacles:16,nps:1.592,length:557.313,characteristic:"Standard",difficulty:"Easy",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:60,warns:13,resets:0}},{njs:12,offset:.5,notes:337,bombs:4,obstacles:16,nps:1.917,length:557.313,characteristic:"Standard",difficulty:"Normal",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:23,warns:19,resets:0}},{njs:16,offset:1,notes:459,bombs:4,obstacles:15,nps:2.611,length:557.313,characteristic:"Standard",difficulty:"Hard",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:29,warns:24,resets:0}},{njs:19,offset:1,notes:773,bombs:2,obstacles:16,nps:4.396,length:557.313,characteristic:"Standard",difficulty:"Expert",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:31,warns:48,resets:0}},{njs:12,offset:.5,notes:216,bombs:0,obstacles:17,nps:1.228,length:557.313,characteristic:"OneSaber",difficulty:"Normal",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:15,warns:34,resets:0}},{njs:16,offset:1,notes:315,bombs:0,obstacles:16,nps:1.792,length:557.313,characteristic:"OneSaber",difficulty:"Hard",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:12,warns:14,resets:0}},{njs:19,offset:1,notes:472,bombs:2,obstacles:16,nps:2.684,length:557.313,characteristic:"OneSaber",difficulty:"Expert",events:2306,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.827,paritySummary:{errors:18,warns:14,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a14d4f258c4a8012e110b599d725be7b20a5470a.zip",coverURL:"https://cdn.beatsaver.com/a14d4f258c4a8012e110b599d725be7b20a5470a.jpg",previewURL:"https://cdn.beatsaver.com/a14d4f258c4a8012e110b599d725be7b20a5470a.mp3"}],createdAt:"2019-10-11T06:11:24.477Z",updatedAt:"2019-10-11T06:11:24.477Z",lastPublishedAt:"2019-10-11T06:11:24.477Z"},{id:"42ea",name:"DEUTSCHLAND - Rammstein",description:"Expert+ and expert are fairly similar where expert has some nerfed versions of expert+ some places. NJS18 on E+ and 15 on Expert",uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:323,songName:"DEUTSCHLAND",songSubName:"Rammstein",songAuthorName:"Heisenberg",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:3694,upvotes:2773,downvotes:83,score:.928},uploaded:"2019-04-02T03:59:23Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"414169f2f791443d9f6278009dd91ebe369bc9b6",key:"42ea",state:"Published",createdAt:"2019-04-02T03:59:23Z",sageScore:4,diffs:[{njs:15,offset:0,notes:915,bombs:0,obstacles:6,nps:3.091,length:592,characteristic:"Standard",difficulty:"Expert",events:2754,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296,paritySummary:{errors:39,warns:52,resets:0}},{njs:18,offset:0,notes:1063,bombs:0,obstacles:6,nps:3.591,length:592,characteristic:"Standard",difficulty:"ExpertPlus",events:2756,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296,paritySummary:{errors:42,warns:53,resets:0}}],downloadURL:"https://cdn.beatsaver.com/414169f2f791443d9f6278009dd91ebe369bc9b6.zip",coverURL:"https://cdn.beatsaver.com/414169f2f791443d9f6278009dd91ebe369bc9b6.jpg",previewURL:"https://cdn.beatsaver.com/414169f2f791443d9f6278009dd91ebe369bc9b6.mp3"}],createdAt:"2019-04-02T03:59:23Z",updatedAt:"2019-04-02T03:59:23Z",lastPublishedAt:"2019-04-02T03:59:23Z"},{id:"1ffd",name:"Senbonzakura (Short Ver.) by Kradness + Giga-P",description:"You like it fast? You like Senbonzakura? You want both? Then you've come to the right map! I knew I wanted to map Senbonzakura but I didn't quite like the original version, but as soon as I heard Kradness and Giga-P's version I knew I had found my own Senbonzakura.\r\n\r\nThis is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes by just playing Beat Saber! Go to https://bsaber.com/100k-contest/ for more info.\r\n\r\nSong has been edited; custom intro and shortened from full length.\r\n\r\nPreview:\r\nhttps://youtu.be/BLTaG3z9jOY\r\n\r\nBPM: 175\r\nDuration: 2:35\r\nEasy, Normal, Hard, Expert and Expert+ difficulties.\r\n\r\nEasy: 273, 8 obstacles, 0 mines\r\nNormal: 349 notes, 33 obstacles, 0 mines\r\nHard: 524 notes, 33 obstacles, 0 mines\r\nExpert: 755 notes, 33 obstacles, 0 mines\r\nExpert+: 880 notes, 33 obstacles, 0 mines\r\n\r\nThanks to Edzo, Redmagi, AaltoPaWi and Saut for playtesting! Special thanks to Redmagi for the stream ideas!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:175,duration:156,songName:"Senbonzakura (Short Ver.)",songSubName:"Kradness + Giga-P",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:9333,upvotes:5842,downvotes:234,score:.928},uploaded:"2018-11-12T22:10:22Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"eb28a79e2dbc80948d0ea09631e83557ea6b6735",key:"1ffd",state:"Published",createdAt:"2018-11-12T22:10:22Z",sageScore:7,diffs:[{njs:12,offset:0,notes:273,bombs:0,obstacles:33,nps:1.818,length:438,characteristic:"Standard",difficulty:"Easy",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.171,paritySummary:{errors:57,warns:23,resets:0},stars:1.24},{njs:13,offset:0,notes:349,bombs:0,obstacles:33,nps:2.319,length:439,characteristic:"Standard",difficulty:"Normal",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.514,paritySummary:{errors:61,warns:53,resets:0},stars:1.59},{njs:14,offset:0,notes:524,bombs:0,obstacles:33,nps:3.481,length:439,characteristic:"Standard",difficulty:"Hard",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.514,paritySummary:{errors:70,warns:55,resets:0},stars:2.42},{njs:15,offset:0,notes:755,bombs:0,obstacles:33,nps:5.016,length:439,characteristic:"Standard",difficulty:"Expert",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.514,paritySummary:{errors:121,warns:136,resets:0},stars:3.52},{njs:15,offset:0,notes:880,bombs:0,obstacles:33,nps:5.847,length:439,characteristic:"Standard",difficulty:"ExpertPlus",events:1285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.514,paritySummary:{errors:108,warns:161,resets:0},stars:4.33}],downloadURL:"https://cdn.beatsaver.com/eb28a79e2dbc80948d0ea09631e83557ea6b6735.zip",coverURL:"https://cdn.beatsaver.com/eb28a79e2dbc80948d0ea09631e83557ea6b6735.jpg",previewURL:"https://cdn.beatsaver.com/eb28a79e2dbc80948d0ea09631e83557ea6b6735.mp3"}],createdAt:"2018-11-12T22:10:22Z",updatedAt:"2018-11-12T22:10:22Z",lastPublishedAt:"2018-11-12T22:10:22Z"},{id:"aa73",name:"twenty one pilots - Level of Concern",description:"'Level of Concern' is a new single released by twenty one pilots during the COVID-19 pandemic. \n\nI meant to get this finished a couple of weeks ago, but hey, better late than never! I hope you enjoy. \n\nMapped by: Pyrowarfare#1032",uploader:{id:1096,name:"pyrowarfare",uniqueSet:!0,hash:"5e99c7df3f476a0006596cdf",avatar:"https://www.gravatar.com/avatar/5e99c7df3f476a0006596cdf?d=retro",type:"SIMPLE"},metadata:{bpm:122,duration:222,songName:"Level of Concern",songSubName:"",songAuthorName:"twenty one pilots",levelAuthorName:"Pyrowarfare"},stats:{plays:0,downloads:4749,upvotes:1220,downvotes:19,score:.9279},uploaded:"2020-05-26T00:39:21.533Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1b9278797fa6d85d0201d1a261101f8cb9ac7dde",key:"aa73",state:"Published",createdAt:"2020-05-26T00:39:21.533Z",sageScore:5,diffs:[{njs:10,offset:0,notes:233,bombs:0,obstacles:14,nps:1.062,length:446,characteristic:"Standard",difficulty:"Easy",events:2220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.344,paritySummary:{errors:89,warns:9,resets:0}},{njs:10,offset:0,notes:461,bombs:0,obstacles:14,nps:2.102,length:446,characteristic:"Standard",difficulty:"Normal",events:2220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.344,paritySummary:{errors:18,warns:19,resets:0}},{njs:12,offset:0,notes:663,bombs:4,obstacles:32,nps:3.023,length:446,characteristic:"Standard",difficulty:"Hard",events:2220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.344,paritySummary:{errors:2,warns:0,resets:1}},{njs:14,offset:0,notes:692,bombs:4,obstacles:44,nps:3.155,length:446,characteristic:"Standard",difficulty:"Expert",events:2220,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.344,paritySummary:{errors:2,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1b9278797fa6d85d0201d1a261101f8cb9ac7dde.zip",coverURL:"https://cdn.beatsaver.com/1b9278797fa6d85d0201d1a261101f8cb9ac7dde.jpg",previewURL:"https://cdn.beatsaver.com/1b9278797fa6d85d0201d1a261101f8cb9ac7dde.mp3"}],createdAt:"2020-05-26T00:39:21.533Z",updatedAt:"2020-05-26T00:39:21.533Z",lastPublishedAt:"2020-05-26T00:39:21.533Z"},{id:"96fc",name:"JINGO JUNGLE [Youjo Senki Opening] - MYTH & ROID",description:"JINGO JUNGLE is the fifth single release of MYTH & ROID for their 1st Album『eYe's』and the opening song for the Youjo Senki anime. It is performed by the Japanese singer Mayu and was released on February 8th, 2017.\n\nMap was converted from my original AmaLee version as requested.\n\nEDIT: Expert Difficulty Fixed and added preview start time",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:130,duration:226,songName:"JINGO JUNGLE",songSubName:"",songAuthorName:"MYTH & ROID",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:9872,upvotes:1077,downvotes:14,score:.9279},uploaded:"2020-04-03T15:39:48.414Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f4555835fccad370eda615cbeff120afe9c4ab13",key:"96fc",state:"Published",createdAt:"2020-04-03T15:39:48.414Z",sageScore:4,diffs:[{njs:13,offset:0,notes:581,bombs:104,obstacles:28,nps:2.647,length:475.5,characteristic:"Standard",difficulty:"Hard",events:5921,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:35,warns:15,resets:10}},{njs:15,offset:0,notes:950,bombs:78,obstacles:14,nps:4.329,length:475.5,characteristic:"Standard",difficulty:"Expert",events:5921,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:42,warns:48,resets:8}},{njs:17,offset:0,notes:1184,bombs:105,obstacles:17,nps:5.395,length:475.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5921,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.462,paritySummary:{errors:32,warns:43,resets:16}}],downloadURL:"https://cdn.beatsaver.com/f4555835fccad370eda615cbeff120afe9c4ab13.zip",coverURL:"https://cdn.beatsaver.com/f4555835fccad370eda615cbeff120afe9c4ab13.jpg",previewURL:"https://cdn.beatsaver.com/f4555835fccad370eda615cbeff120afe9c4ab13.mp3"}],createdAt:"2020-04-03T15:39:48.414Z",updatedAt:"2020-04-03T15:39:48.414Z",lastPublishedAt:"2020-04-03T15:39:48.414Z"},{id:"4611",name:"BTS (feat. Halsey) - Boy With Luv",description:"I wouldn't say this was rushed but that I spent a lot of time on it in a couple of days, either way I really like the song and I think the map is pretty fun too.\r\nFeel free to join our K-Pop Beat Saber Discord https://discord.gg/c9uHGYP @SimplyMarvellous#0290 if you'd like to contact me at all\r\nhttps://youtu.be/Wfhj4fjugcg\r\n\r\n\r\n\r\nDownvote if the map is bad, not because you couldn't pass it :)",uploader:{id:4285134,name:"simplymarvellous",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f7a8",avatar:"https://cdn.beatsaver.com/avatar/189618441429319680.png",type:"DISCORD"},metadata:{bpm:120,duration:232,songName:"Boy With Luv",songSubName:"BTS (ft. Halsey)",songAuthorName:"SimplyMarvellous",levelAuthorName:"simplymarvellous"},stats:{plays:0,downloads:5564,upvotes:2055,downvotes:52,score:.9279},uploaded:"2019-04-15T06:34:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c0e3706463c5c9b993ba5d05c2166fb0b512e695",key:"4611",state:"Published",createdAt:"2019-04-15T06:34:34Z",sageScore:5,diffs:[{njs:12,offset:0,notes:792,bombs:0,obstacles:21,nps:3.03,length:522.833,characteristic:"Standard",difficulty:"Hard",events:1832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.417,paritySummary:{errors:81,warns:38,resets:0}},{njs:15,offset:0,notes:976,bombs:0,obstacles:21,nps:3.734,length:522.833,characteristic:"Standard",difficulty:"ExpertPlus",events:1832,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.417,paritySummary:{errors:64,warns:42,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c0e3706463c5c9b993ba5d05c2166fb0b512e695.zip",coverURL:"https://cdn.beatsaver.com/c0e3706463c5c9b993ba5d05c2166fb0b512e695.jpg",previewURL:"https://cdn.beatsaver.com/c0e3706463c5c9b993ba5d05c2166fb0b512e695.mp3"}],createdAt:"2019-04-15T06:34:34Z",updatedAt:"2019-04-15T06:34:34Z",lastPublishedAt:"2019-04-15T06:34:34Z"},{id:"1fff",name:"Chiru Chiru by REOL",description:"The 4th most played song during the 100k Contest, I present to you a dance-able map of Chiru Chiru by REOL!\r\n\r\nThis is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes by just playing Beat Saber! Go to https://bsaber.com/100k-contest/ for more info.\r\n\r\nFull length song. I've added/edited a custom countdown to the intro.\r\n\r\nPreview:\r\nhttps://youtu.be/jcx6g6NS8_4\r\n\r\nBPM: 128\r\nDuration: 3:18\r\nEasy, Normal, Hard and Expert difficulties.\r\n\r\nEasy: 253, 31 obstacles, 6 mines\r\nNormal: 356 notes, 31 obstacles, 6 mines\r\nHard: 478 notes, 31 obstacles, 18 mines\r\nExpert: 675 notes, 31 obstacles, 18 mines\r\n\r\nThanks to Kizuflux, VenclaireVR, squeaksies, Crankor, NekiCoule, Redmagi, aggrogahu and Saut for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:128,duration:199,songName:"Chiru Chiru",songSubName:"REOL",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:6874,upvotes:4133,downvotes:148,score:.9279},uploaded:"2018-11-12T22:29:15Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"9993d9f5b03472efa5b8b31d3dc4156301145d97",key:"1fff",state:"Published",createdAt:"2018-11-12T22:29:15Z",sageScore:4,diffs:[{njs:10,offset:0,notes:258,bombs:6,obstacles:31,nps:1.339,length:411,characteristic:"Standard",difficulty:"Easy",events:955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192.656,paritySummary:{errors:62,warns:27,resets:3},stars:1.1},{njs:10,offset:0,notes:356,bombs:6,obstacles:31,nps:1.846,length:411.5,characteristic:"Standard",difficulty:"Normal",events:955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192.891,paritySummary:{errors:64,warns:44,resets:3},stars:1.37},{njs:11,offset:0,notes:478,bombs:18,obstacles:31,nps:2.472,length:412.5,characteristic:"Standard",difficulty:"Hard",events:955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.359,paritySummary:{errors:70,warns:85,resets:4},stars:1.82},{njs:11,offset:0,notes:669,bombs:18,obstacles:31,nps:3.46,length:412.5,characteristic:"Standard",difficulty:"Expert",events:956,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.359,paritySummary:{errors:96,warns:89,resets:5},stars:2.28}],downloadURL:"https://cdn.beatsaver.com/9993d9f5b03472efa5b8b31d3dc4156301145d97.zip",coverURL:"https://cdn.beatsaver.com/9993d9f5b03472efa5b8b31d3dc4156301145d97.jpg",previewURL:"https://cdn.beatsaver.com/9993d9f5b03472efa5b8b31d3dc4156301145d97.mp3"}],createdAt:"2018-11-12T22:29:15Z",updatedAt:"2018-11-12T22:29:15Z",lastPublishedAt:"2018-11-12T22:29:15Z"},{id:"6ac",name:"Pompeii - Bastille",description:"Hard only - Manageable but active. Events included.",uploader:{id:51831,name:"dietmoxie",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec3a",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec3a?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:214,songName:"Pompeii",songSubName:"",songAuthorName:"Bastille",levelAuthorName:"dietmoxie"},stats:{plays:0,downloads:10306,upvotes:5098,downvotes:196,score:.9279},uploaded:"2018-06-26T00:59:17Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9753e45020fe1c5681fcd74f5a41efcf3c143282",key:"6ac",state:"Published",createdAt:"2018-06-26T00:59:17Z",sageScore:4,diffs:[{njs:10,offset:0,notes:698,bombs:0,obstacles:31,nps:3.348,length:443,characteristic:"Standard",difficulty:"Hard",events:665,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.291,paritySummary:{errors:134,warns:133,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9753e45020fe1c5681fcd74f5a41efcf3c143282.zip",coverURL:"https://cdn.beatsaver.com/9753e45020fe1c5681fcd74f5a41efcf3c143282.jpg",previewURL:"https://cdn.beatsaver.com/9753e45020fe1c5681fcd74f5a41efcf3c143282.mp3"}],createdAt:"2018-06-26T00:59:17Z",updatedAt:"2018-06-26T00:59:17Z",lastPublishedAt:"2018-06-26T00:59:17Z"},{id:"54bb",name:"Bodies - Drowning Pool",description:'Fun fact: My first time hearing this song was on some random YouTube video in the 2000s, almost all YouTube videos back then used this song for some reason.\n\nWhen I reheard the song I immediately knew I have to put duck walls every time the lyrics went "HIT THE FLOOR". Also I wanted to use 1, 2, 3, 4 notes on a section of lyrics that said ONE TWO THREE FOUR.\n\nWarning: Please don\'t actually let your body hit the floor while playing this map. Smashing head first into the floor with a VR headset can be an expensive mistake.\n\n"Bodies" (often incorrectly called "Let the Bodies Hit the Floor") is a song by the American rock band Drowning Pool and also is the lead single from their debut album Sinner. It was also the theme song for the 2001 WWF SummerSlam pay-per-view event, as well as that of the ECW brand in 2006 to early 2008',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:130,duration:202,songName:"Bodies",songSubName:"",songAuthorName:"Drowning Pool",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4168,upvotes:1980,downvotes:49,score:.9278},uploaded:"2019-06-27T18:32:03.310Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8818e19d544a6ca8b1a05e7324731fee2f38b58f",key:"54bb",state:"Published",createdAt:"2019-06-27T18:32:03.310Z",sageScore:2,diffs:[{njs:14,offset:0,notes:805,bombs:0,obstacles:19,nps:4.211,length:414.144,characteristic:"Standard",difficulty:"Expert",events:5298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.144,paritySummary:{errors:29,warns:33,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8818e19d544a6ca8b1a05e7324731fee2f38b58f.zip",coverURL:"https://cdn.beatsaver.com/8818e19d544a6ca8b1a05e7324731fee2f38b58f.jpg",previewURL:"https://cdn.beatsaver.com/8818e19d544a6ca8b1a05e7324731fee2f38b58f.mp3"}],createdAt:"2019-06-27T18:32:03.310Z",updatedAt:"2019-06-27T18:32:03.310Z",lastPublishedAt:"2019-06-27T18:32:03.310Z"},{id:"5352",name:"1999 - Charli XCX & Troye Sivan",description:"It started as a meme in #mapping-discussion and expanded to a full blown project. I really like how it turned out. Hope you enjoy it :)\n\nLength: 3:11\nBPM: 124\nNJS: 17 (Expert+), 15 (Expert), 13 (Hard)\n\nEasy slot is the lightshow as always.\n\nThanks to my playtesters CyanSnow (2x) and Redmagi, show them some love! :)\n\nDM me your feedback on discord: Teuflum#5982",uploader:{id:68740,name:"Teuflum",uniqueSet:!0,hash:"5cff0b7498cc5a672c851a6b",avatar:"https://cdn.beatsaver.com/avatar/114706869460664326.png",type:"DISCORD"},metadata:{bpm:124,duration:192,songName:"1999",songSubName:"",songAuthorName:"Charli XCX & Troye Sivan",levelAuthorName:"Teuflum"},stats:{plays:0,downloads:2205,upvotes:1273,downvotes:21,score:.9278},uploaded:"2019-06-17T15:29:13.123Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d68bd4d997726249406bce748b83bf5464da99e7",key:"5352",state:"Published",createdAt:"2019-06-17T15:29:13.123Z",sageScore:7,diffs:[{njs:13,offset:0,notes:555,bombs:56,obstacles:37,nps:2.968,length:386.5,characteristic:"Standard",difficulty:"Hard",events:6185,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.016,paritySummary:{errors:23,warns:8,resets:4}},{njs:15,offset:0,notes:668,bombs:56,obstacles:41,nps:3.572,length:386.5,characteristic:"Standard",difficulty:"Expert",events:6185,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.016,paritySummary:{errors:20,warns:16,resets:4}},{njs:17,offset:0,notes:812,bombs:8,obstacles:39,nps:4.342,length:386.5,characteristic:"Standard",difficulty:"ExpertPlus",events:6185,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.016,paritySummary:{errors:33,warns:48,resets:2}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:6185,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d68bd4d997726249406bce748b83bf5464da99e7.zip",coverURL:"https://cdn.beatsaver.com/d68bd4d997726249406bce748b83bf5464da99e7.jpg",previewURL:"https://cdn.beatsaver.com/d68bd4d997726249406bce748b83bf5464da99e7.mp3"}],createdAt:"2019-06-17T15:29:13.123Z",updatedAt:"2019-06-17T15:29:13.123Z",lastPublishedAt:"2019-06-17T15:29:13.123Z"},{id:"a934",name:"Sabaton - Seven Pillars of Wisdom",description:"Sabaton is a Power-metal band that sings almost exclusively about historical events. This song is about Lawrence of Arabia, and is named after his autobiography.\r\n\r\nThe map is fully lit, and available in multiple difficulties. Thanks to the BSMG discord for helping test the map before release.\r\n\r\nNormal: 2.2 NPS - 10 NJS\r\nHard: 3.89 NPS - 13 NJS\r\nExpert: 5.24 NPS - 17 NJS",uploader:{id:4285369,name:"Cyrix",uniqueSet:!0,hash:"5eb6eb9a7abb000006c85add",avatar:"https://cdn.beatsaver.com/avatar/167730807929044992.png",type:"DISCORD"},metadata:{bpm:152,duration:178,songName:"Seven Pillars of Wisdom",songSubName:"",songAuthorName:"Sabaton",levelAuthorName:"Cyrix"},stats:{plays:0,downloads:2699,upvotes:824,downvotes:6,score:.9276},uploaded:"2020-05-22T21:19:05.343Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"16732f8edc59bd358278c14055cde1cd9ecb47aa",key:"a934",state:"Published",createdAt:"2020-05-22T21:19:05.343Z",sageScore:5,diffs:[{njs:10,offset:0,notes:393,bombs:0,obstacles:24,nps:2.299,length:433,characteristic:"Standard",difficulty:"Normal",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.921,paritySummary:{errors:18,warns:4,resets:0}},{njs:13,offset:.25,notes:696,bombs:20,obstacles:16,nps:4.044,length:436,characteristic:"Standard",difficulty:"Hard",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.105,paritySummary:{errors:0,warns:2,resets:3}},{njs:17,offset:.3,notes:937,bombs:16,obstacles:14,nps:5.444,length:436,characteristic:"Standard",difficulty:"Expert",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.105,paritySummary:{errors:0,warns:5,resets:5}}],downloadURL:"https://cdn.beatsaver.com/16732f8edc59bd358278c14055cde1cd9ecb47aa.zip",coverURL:"https://cdn.beatsaver.com/16732f8edc59bd358278c14055cde1cd9ecb47aa.jpg",previewURL:"https://cdn.beatsaver.com/16732f8edc59bd358278c14055cde1cd9ecb47aa.mp3"}],createdAt:"2020-05-22T21:19:05.343Z",updatedAt:"2020-05-22T21:19:05.343Z",lastPublishedAt:"2020-05-22T21:19:05.343Z"},{id:"51be",name:"Prayer Of The Refugee - Rise Against",description:'"Prayer of the Refugee" is a song by American rock band Rise Against. The lyrics were written by lead vocalist Tim McIlrath, and deal with the themes of forced displacement and the societal issues surrounding refugees. Thanks to @Scrappy for helping me find the variable BPM in this song',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:150,duration:200,songName:"Prayer Of The Refugee",songSubName:"Rise Against",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3598,upvotes:1630,downvotes:35,score:.9276},uploaded:"2019-06-06T05:53:57Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9c7e5ae537bb4871513330da180c6647cd8cffff",key:"51be",state:"Published",createdAt:"2019-06-06T05:53:57Z",sageScore:6,diffs:[{njs:13.5,offset:0,notes:860,bombs:0,obstacles:23,nps:4.503,length:479.103,characteristic:"Standard",difficulty:"Expert",events:3414,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.641,paritySummary:{errors:37,warns:24,resets:0}},{njs:15,offset:0,notes:936,bombs:0,obstacles:23,nps:4.9,length:479.103,characteristic:"Standard",difficulty:"ExpertPlus",events:3414,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.641,paritySummary:{errors:33,warns:20,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9c7e5ae537bb4871513330da180c6647cd8cffff.zip",coverURL:"https://cdn.beatsaver.com/9c7e5ae537bb4871513330da180c6647cd8cffff.jpg",previewURL:"https://cdn.beatsaver.com/9c7e5ae537bb4871513330da180c6647cd8cffff.mp3"}],createdAt:"2019-06-06T05:53:57Z",updatedAt:"2019-06-06T05:53:57Z",lastPublishedAt:"2019-06-06T05:53:57Z"},{id:"226e",name:"Crawling - Linkin Park",description:"Another Linkin Park map! This time it is Crawling. \nPreview: https://www.youtube.com/watch?v=Pkr9Vm1dPv8\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:105,duration:208,songName:"Crawling",songSubName:"Linkin Park",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:5610,upvotes:2388,downvotes:67,score:.9276},uploaded:"2018-11-26T14:10:51Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"691b382b6ca6e69b9b908e41d439f9b7b9403fb6",key:"226e",state:"Published",createdAt:"2018-11-26T14:10:51Z",sageScore:5,diffs:[{njs:10,offset:0,notes:455,bombs:0,obstacles:64,nps:2.317,length:344,characteristic:"Standard",difficulty:"Normal",events:2399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.571,paritySummary:{errors:29,warns:28,resets:0}},{njs:12,offset:0,notes:666,bombs:0,obstacles:71,nps:3.386,length:344.5,characteristic:"Standard",difficulty:"Hard",events:2399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.857,paritySummary:{errors:24,warns:19,resets:0}},{njs:14,offset:0,notes:862,bombs:0,obstacles:75,nps:4.383,length:344.5,characteristic:"Standard",difficulty:"Expert",events:2399,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.857,paritySummary:{errors:18,warns:39,resets:0}}],downloadURL:"https://cdn.beatsaver.com/691b382b6ca6e69b9b908e41d439f9b7b9403fb6.zip",coverURL:"https://cdn.beatsaver.com/691b382b6ca6e69b9b908e41d439f9b7b9403fb6.jpg",previewURL:"https://cdn.beatsaver.com/691b382b6ca6e69b9b908e41d439f9b7b9403fb6.mp3"}],createdAt:"2018-11-26T14:10:51Z",updatedAt:"2018-11-26T14:10:51Z",lastPublishedAt:"2018-11-26T14:10:51Z"},{id:"6cf7",name:"[Noodleween] AronChupa, Little Sis Nora - Rave in the Grave",description:"2nd Place winner in the BSMG Halloween map competition! :D\n\nThis map is part of the Noodleween song pack, brought to you by the Noodle mapper group. We hope you enjoy this as much as we enjoyed making it.\n\nThis song already had a map, but I thought it could use some love and revamping. Hope you guys enjoy the full difficulty spread!\n\nExpert+ Playthrough: https://www.youtube.com/watch?v=ufEQ4L2y694&feature=youtu.be\n\nHappy Halloween! :D 👻",uploader:{id:17131,name:"tranquillizeme",uniqueSet:!0,hash:"5cff0b7798cc5a672c85609e",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c85609e?d=retro",type:"SIMPLE"},metadata:{bpm:132,duration:154,songName:"Rave In The Grave",songSubName:"",songAuthorName:"AronChupa, Little Sis Nora",levelAuthorName:"TranquillizeMe"},stats:{plays:0,downloads:2987,upvotes:1394,downvotes:26,score:.9275},uploaded:"2019-10-29T23:00:07.667Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b288ce94ed8feff67af04fd75e23acafad66b9f8",key:"6cf7",state:"Published",createdAt:"2019-10-29T23:00:07.667Z",sageScore:6,diffs:[{njs:12,offset:1.5,notes:212,bombs:0,obstacles:36,nps:1.418,length:329,characteristic:"Standard",difficulty:"Easy",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:49,warns:7,resets:0}},{njs:13,offset:1,notes:286,bombs:12,obstacles:43,nps:1.912,length:329,characteristic:"Standard",difficulty:"Normal",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:42,warns:12,resets:0}},{njs:14,offset:1,notes:447,bombs:12,obstacles:37,nps:2.989,length:329,characteristic:"Standard",difficulty:"Hard",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:9,warns:2,resets:0}},{njs:15,offset:.5,notes:514,bombs:8,obstacles:47,nps:3.437,length:329,characteristic:"Standard",difficulty:"Expert",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:7,warns:2,resets:0}},{njs:19,offset:0,notes:610,bombs:24,obstacles:44,nps:4.079,length:329,characteristic:"Standard",difficulty:"ExpertPlus",events:7067,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.545,paritySummary:{errors:8,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b288ce94ed8feff67af04fd75e23acafad66b9f8.zip",coverURL:"https://cdn.beatsaver.com/b288ce94ed8feff67af04fd75e23acafad66b9f8.jpg",previewURL:"https://cdn.beatsaver.com/b288ce94ed8feff67af04fd75e23acafad66b9f8.mp3"}],createdAt:"2019-10-29T23:00:07.667Z",updatedAt:"2019-10-29T23:00:07.667Z",lastPublishedAt:"2019-10-29T23:00:07.667Z"},{id:"53fc",name:"Sabaton - Shiroyama",description:"Second map!!! I hope you all enjoy the new map with added difficulties!! Feel free to message me on discord if you liked the map, have feedback, or have any suggestions for some more maps!!!\nMax●The●Whale#8744",uploader:{id:40212,name:"maximusthewhale",uniqueSet:!0,hash:"5cff0b7898cc5a672c856ed4",avatar:"https://www.gravatar.com/avatar/5cff0b7898cc5a672c856ed4?d=retro",type:"SIMPLE"},metadata:{bpm:171,duration:212,songName:"Shiroyama",songSubName:"",songAuthorName:"Sabaton",levelAuthorName:"Maximus"},stats:{plays:0,downloads:2704,upvotes:1798,downvotes:42,score:.9275},uploaded:"2019-06-22T09:34:40.930Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1340476c96b9052adfff5e63993b7ffa03229c39",key:"53fc",state:"Published",createdAt:"2019-06-22T09:34:40.930Z",sageScore:5,diffs:[{njs:13,offset:0,notes:736,bombs:0,obstacles:5,nps:3.648,length:575,characteristic:"Standard",difficulty:"Hard",events:1038,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.754,paritySummary:{errors:12,warns:0,resets:0}},{njs:15,offset:0,notes:889,bombs:0,obstacles:16,nps:4.406,length:575,characteristic:"Standard",difficulty:"Expert",events:3144,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.754,paritySummary:{errors:22,warns:22,resets:0}},{njs:18,offset:0,notes:1353,bombs:0,obstacles:16,nps:6.706,length:575,characteristic:"Standard",difficulty:"ExpertPlus",events:3216,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:201.754,paritySummary:{errors:29,warns:27,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1340476c96b9052adfff5e63993b7ffa03229c39.zip",coverURL:"https://cdn.beatsaver.com/1340476c96b9052adfff5e63993b7ffa03229c39.jpg",previewURL:"https://cdn.beatsaver.com/1340476c96b9052adfff5e63993b7ffa03229c39.mp3"}],createdAt:"2019-06-22T09:34:40.930Z",updatedAt:"2019-06-22T09:34:40.930Z",lastPublishedAt:"2019-06-22T09:34:40.930Z"},{id:"5389",name:"On Top of the World - Imagine Dragons",description:"Re-upload of an earlier Beatmap that was lost to the update.",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:100,duration:192,songName:"On Top of the World",songSubName:"",songAuthorName:"Imagine Dragons",levelAuthorName:"BennyDaBeast"},stats:{plays:0,downloads:12331,upvotes:3114,downvotes:101,score:.9274},uploaded:"2019-06-19T17:02:53.084Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"88314981432a8002f62e464562c0c41f06393ab5",key:"5389",state:"Published",createdAt:"2019-06-19T17:02:53.084Z",sageScore:2,diffs:[{njs:10,offset:0,notes:269,bombs:0,obstacles:18,nps:1.423,length:315,characteristic:"Standard",difficulty:"Normal",events:781,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189,paritySummary:{errors:48,warns:37,resets:0}},{njs:10,offset:0,notes:374,bombs:0,obstacles:18,nps:1.976,length:315.5,characteristic:"Standard",difficulty:"Hard",events:781,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:54,warns:52,resets:0}},{njs:10,offset:0,notes:551,bombs:0,obstacles:27,nps:2.911,length:315.5,characteristic:"Standard",difficulty:"Expert",events:781,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:81,warns:91,resets:0}},{njs:10,offset:0,notes:720,bombs:4,obstacles:27,nps:3.803,length:315.5,characteristic:"Standard",difficulty:"ExpertPlus",events:781,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189.3,paritySummary:{errors:54,warns:71,resets:4}}],downloadURL:"https://cdn.beatsaver.com/88314981432a8002f62e464562c0c41f06393ab5.zip",coverURL:"https://cdn.beatsaver.com/88314981432a8002f62e464562c0c41f06393ab5.jpg",previewURL:"https://cdn.beatsaver.com/88314981432a8002f62e464562c0c41f06393ab5.mp3"}],createdAt:"2019-06-19T17:02:53.084Z",updatedAt:"2019-06-19T17:02:53.084Z",lastPublishedAt:"2019-06-19T17:02:53.084Z"},{id:"4a3d",name:"[Anniversary] Fractures (ft. Nevve) - Illenium [BennyDaBeast]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:246,songName:"Fractures (ft. Nevve)",songSubName:"Illenium",songAuthorName:"BennyDaBeast",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:3049,upvotes:2328,downvotes:65,score:.9274},uploaded:"2019-05-03T14:09:37Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"440945a4fe86b5e3ee7f03b98c636c881930072f",key:"4a3d",state:"Published",createdAt:"2019-05-03T14:09:37Z",sageScore:5,diffs:[{njs:12,offset:0,notes:805,bombs:0,obstacles:41,nps:3.363,length:638.25,characteristic:"Standard",difficulty:"Hard",events:2214,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.344,paritySummary:{errors:98,warns:99,resets:0}},{njs:12,offset:0,notes:1048,bombs:0,obstacles:41,nps:4.379,length:638.25,characteristic:"Standard",difficulty:"Expert",events:2214,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.344,paritySummary:{errors:145,warns:163,resets:0}},{njs:15,offset:0,notes:1060,bombs:0,obstacles:41,nps:4.429,length:638.25,characteristic:"Standard",difficulty:"ExpertPlus",events:2214,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:239.344,paritySummary:{errors:137,warns:160,resets:0}}],downloadURL:"https://cdn.beatsaver.com/440945a4fe86b5e3ee7f03b98c636c881930072f.zip",coverURL:"https://cdn.beatsaver.com/440945a4fe86b5e3ee7f03b98c636c881930072f.jpg",previewURL:"https://cdn.beatsaver.com/440945a4fe86b5e3ee7f03b98c636c881930072f.mp3"}],createdAt:"2019-05-03T14:09:37Z",updatedAt:"2019-05-03T14:09:37Z",lastPublishedAt:"2019-05-03T14:09:37Z"},{id:"41a8",name:"fhana - Aozora no Rhapsody [Miss Kobayashi's Dragon Maid Opening]",description:"edited: Reworking E+, second guessing its patterns\r\nCGDCT is the best genre of anime. Dragon maid op is fire\r\nPlease check out fhána and their other music\r\n\r\nBPM 135 \r\nExpert\r\nHard\r\nNormal\r\nEasy\r\n\r\nhas fun\r\n\r\ncontact me on discord\r\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:135,duration:96,songName:"Aozora no Rhapsody",songSubName:"fhna",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:7116,upvotes:2214,downvotes:60,score:.9274},uploaded:"2019-03-29T05:34:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cdd469b733ade02a7996d1055082f3e1bc14ca8a",key:"41a8",state:"Published",createdAt:"2019-03-29T05:34:40Z",sageScore:4,diffs:[{njs:10,offset:0,notes:180,bombs:0,obstacles:7,nps:2.045,length:198,characteristic:"Standard",difficulty:"Easy",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88,paritySummary:{errors:11,warns:1,resets:0}},{njs:12,offset:0,notes:274,bombs:0,obstacles:3,nps:3.114,length:198,characteristic:"Standard",difficulty:"Normal",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88,paritySummary:{errors:12,warns:0,resets:0}},{njs:14,offset:0,notes:379,bombs:0,obstacles:3,nps:4.307,length:198,characteristic:"Standard",difficulty:"Hard",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88,paritySummary:{errors:16,warns:4,resets:0}},{njs:15,offset:0,notes:461,bombs:0,obstacles:2,nps:5.239,length:198,characteristic:"Standard",difficulty:"Expert",events:704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88,paritySummary:{errors:7,warns:6,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cdd469b733ade02a7996d1055082f3e1bc14ca8a.zip",coverURL:"https://cdn.beatsaver.com/cdd469b733ade02a7996d1055082f3e1bc14ca8a.jpg",previewURL:"https://cdn.beatsaver.com/cdd469b733ade02a7996d1055082f3e1bc14ca8a.mp3"}],createdAt:"2019-03-29T05:34:40Z",updatedAt:"2019-03-29T05:34:40Z",lastPublishedAt:"2019-03-29T05:34:40Z"},{id:"84b4",name:"Nightcore - Everytime We Touch | Cascada",description:"174th Map\n\nYoutube Preview : https://youtu.be/i6so3ZhTtGQ",uploader:{id:4284588,name:"rigid",uniqueSet:!0,hash:"5cff0b7598cc5a672c852224",avatar:"https://cdn.beatsaver.com/avatar/295613108947386368.png",type:"DISCORD"},metadata:{bpm:186,duration:152,songName:"Nightcore - Everytime We Touch",songSubName:"",songAuthorName:"Cascada",levelAuthorName:"Rigid"},stats:{plays:0,downloads:4362,upvotes:1614,downvotes:35,score:.9273},uploaded:"2020-02-06T17:16:32.579Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"31979b560a0ea958f9f0d92df8dcc12f6b8f567c",key:"84b4",state:"Published",createdAt:"2020-02-06T17:16:32.579Z",sageScore:4,diffs:[{njs:15,offset:.5,notes:608,bombs:2,obstacles:77,nps:4.158,length:453.265,characteristic:"Standard",difficulty:"Expert",events:730,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.214,paritySummary:{errors:9,warns:8,resets:1}}],downloadURL:"https://cdn.beatsaver.com/31979b560a0ea958f9f0d92df8dcc12f6b8f567c.zip",coverURL:"https://cdn.beatsaver.com/31979b560a0ea958f9f0d92df8dcc12f6b8f567c.jpg",previewURL:"https://cdn.beatsaver.com/31979b560a0ea958f9f0d92df8dcc12f6b8f567c.mp3"}],createdAt:"2020-02-06T17:16:32.579Z",updatedAt:"2020-02-06T17:16:32.579Z",lastPublishedAt:"2020-02-06T17:16:32.579Z"},{id:"8149",name:"Great Days [JoJo's Bizarre Adventure: Diamond is Unbreakable 3rd Opening] - Karen Aoki & Daisuke Hasegawa",description:"\"Great Days\" is the third opening of JoJo's Bizarre Adventure: Diamond is Unbreakable and the seventh overall opening of the JoJo's Bizarre Adventure anime. The song is performed by the jazz vocalist Karen Aoki and Daisuke Hasegawa and composed by Yugo Kanno. The single was released on October 19, 2016.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:170,duration:239,songName:"Great Days",songSubName:"",songAuthorName:"Daisuke Hasegawa & Karen Aoki",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:6431,upvotes:1376,downvotes:26,score:.9271},uploaded:"2020-01-25T14:01:38.069Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3d3effcb84f2bf4aadcd7f6ba7f89eb37226a3c3",key:"8149",state:"Published",createdAt:"2020-01-25T14:01:38.069Z",sageScore:4,diffs:[{njs:16,offset:0,notes:1005,bombs:10,obstacles:54,nps:4.237,length:672,characteristic:"Standard",difficulty:"Expert",events:2987,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:237.176,paritySummary:{errors:43,warns:45,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3d3effcb84f2bf4aadcd7f6ba7f89eb37226a3c3.zip",coverURL:"https://cdn.beatsaver.com/3d3effcb84f2bf4aadcd7f6ba7f89eb37226a3c3.jpg",previewURL:"https://cdn.beatsaver.com/3d3effcb84f2bf4aadcd7f6ba7f89eb37226a3c3.mp3"}],createdAt:"2020-01-25T14:01:38.069Z",updatedAt:"2020-01-25T14:01:38.069Z",lastPublishedAt:"2020-01-25T14:01:38.069Z"},{id:"8ac5",name:"Overthinker - INZO",description:"Thanks Rexxz for all your patience and lighting skillz <3",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:108,duration:222,songName:"Overthinker",songSubName:"",songAuthorName:"INZO",levelAuthorName:"Ryger"},stats:{plays:0,downloads:2384,upvotes:1616,downvotes:36,score:.9268},uploaded:"2020-02-26T02:39:13.425Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e09394d9d641b6739e80553ce56dcd68fa27bdf3",key:"8ac5",state:"Published",createdAt:"2020-02-26T02:39:13.425Z",sageScore:4,diffs:[{njs:20,offset:.25,notes:0,bombs:0,obstacles:2405,nps:0,length:0,characteristic:"Standard",difficulty:"Expert",events:6835,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:.25,notes:984,bombs:0,obstacles:2405,nps:4.893,length:362,characteristic:"Standard",difficulty:"ExpertPlus",events:6836,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:201.111,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e09394d9d641b6739e80553ce56dcd68fa27bdf3.zip",coverURL:"https://cdn.beatsaver.com/e09394d9d641b6739e80553ce56dcd68fa27bdf3.jpg",previewURL:"https://cdn.beatsaver.com/e09394d9d641b6739e80553ce56dcd68fa27bdf3.mp3"}],createdAt:"2020-02-26T02:39:13.425Z",updatedAt:"2020-02-26T02:39:13.425Z",lastPublishedAt:"2020-02-26T02:39:13.425Z"},{id:"1ff6",name:"Don't Let Me Down (Illenium Remix) - The Chainsmokers feat. Daya (100k Contest)",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!\r\nDifficulties: Expert+, Expert, Hard, Normal",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:160,duration:220,songName:"Don't Let Me Down (Illenium Remix)",songSubName:"The Chainsmokers feat. Daya",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:10044,upvotes:4381,downvotes:166,score:.9268},uploaded:"2018-11-12T18:48:50Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5639a12cccf90238055116ec53e5297aa004627e",key:"1ff6",state:"Published",createdAt:"2018-11-12T18:48:50Z",sageScore:8,diffs:[{njs:10,offset:0,notes:280,bombs:0,obstacles:26,nps:1.511,length:494,characteristic:"Standard",difficulty:"Easy",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:68,warns:14,resets:0}},{njs:10,offset:0,notes:360,bombs:0,obstacles:26,nps:1.943,length:494,characteristic:"Standard",difficulty:"Normal",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:185.25,paritySummary:{errors:68,warns:32,resets:0}},{njs:12,offset:0,notes:521,bombs:0,obstacles:154,nps:2.801,length:496,characteristic:"Standard",difficulty:"Hard",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186,paritySummary:{errors:77,warns:49,resets:0}},{njs:12,offset:0,notes:746,bombs:0,obstacles:155,nps:4.011,length:496,characteristic:"Standard",difficulty:"Expert",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186,paritySummary:{errors:76,warns:100,resets:0}},{njs:14,offset:0,notes:1225,bombs:0,obstacles:207,nps:6.481,length:504,characteristic:"Standard",difficulty:"ExpertPlus",events:1714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:189,paritySummary:{errors:101,warns:114,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5639a12cccf90238055116ec53e5297aa004627e.zip",coverURL:"https://cdn.beatsaver.com/5639a12cccf90238055116ec53e5297aa004627e.jpg",previewURL:"https://cdn.beatsaver.com/5639a12cccf90238055116ec53e5297aa004627e.mp3"}],createdAt:"2018-11-12T18:48:50Z",updatedAt:"2018-11-12T18:48:50Z",lastPublishedAt:"2018-11-12T18:48:50Z"},{id:"393",name:"O-Zone - Dragostea Din Tei",description:"numa numa numa yey\r\n\r\nhard only for now, but i'll add more difficulties later\r\n\r\nfull events/lighting",uploader:{id:52747,name:"esspee39",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f198",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f198?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:214,songName:"Dragostei Din Tei",songSubName:"O-Zone",songAuthorName:"esspee",levelAuthorName:"esspee39"},stats:{plays:0,downloads:5541,upvotes:3046,downvotes:100,score:.9268},uploaded:"2018-06-04T00:27:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b0fd4145a269f1fc8f78afccb4a310a36f2f873c",key:"393",state:"Published",createdAt:"2018-06-04T00:27:54Z",sageScore:5,diffs:[{njs:10,offset:0,notes:676,bombs:69,obstacles:16,nps:3.266,length:448.5,characteristic:"Standard",difficulty:"Hard",events:1136,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207,paritySummary:{errors:47,warns:131,resets:9}}],downloadURL:"https://cdn.beatsaver.com/b0fd4145a269f1fc8f78afccb4a310a36f2f873c.zip",coverURL:"https://cdn.beatsaver.com/b0fd4145a269f1fc8f78afccb4a310a36f2f873c.jpg",previewURL:"https://cdn.beatsaver.com/b0fd4145a269f1fc8f78afccb4a310a36f2f873c.mp3"}],createdAt:"2018-06-04T00:27:54Z",updatedAt:"2018-06-04T00:27:54Z",lastPublishedAt:"2018-06-04T00:27:54Z"},{id:"484d",name:"Sosageyo | Shinzou wo sasageyo | Attack on Titan OP 3 - Linked Horizon",description:"Huge thanks to Skeelie for lighting this map!\r\n\r\nThis map overrides the default red-blue colors to a blue-white color, matching the Survey Corps' Wings of Freedom.\r\nEasy, Hard, Expert, and Expert+ are all available.\r\nEasy is a bit spicy, Expert is very spicy.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:90,songName:"Shinzou wo Sasageyo",songSubName:"Linked Horizon",songAuthorName:"Ab & Skeelie",levelAuthorName:"TheAb"},stats:{plays:0,downloads:8967,upvotes:2595,downvotes:79,score:.9267},uploaded:"2019-04-25T10:29:55Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"713da9a9a0737f402ca75819ea9dc19ec3723329",key:"484d",state:"Published",createdAt:"2019-04-25T10:29:55Z",sageScore:5,diffs:[{njs:12,offset:0,notes:123,bombs:4,obstacles:5,nps:1.439,length:228,characteristic:"Standard",difficulty:"Easy",events:5254,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.5,paritySummary:{errors:30,warns:3,resets:2}},{njs:12,offset:0,notes:229,bombs:0,obstacles:5,nps:2.678,length:228,characteristic:"Standard",difficulty:"Hard",events:5215,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.5,paritySummary:{errors:21,warns:18,resets:0}},{njs:15,offset:0,notes:372,bombs:0,obstacles:4,nps:4.351,length:228,characteristic:"Standard",difficulty:"Expert",events:5215,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.5,paritySummary:{errors:33,warns:29,resets:0}},{njs:18,offset:0,notes:548,bombs:0,obstacles:3,nps:6.627,length:220.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5215,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:82.688,paritySummary:{errors:27,warns:48,resets:0}}],downloadURL:"https://cdn.beatsaver.com/713da9a9a0737f402ca75819ea9dc19ec3723329.zip",coverURL:"https://cdn.beatsaver.com/713da9a9a0737f402ca75819ea9dc19ec3723329.jpg",previewURL:"https://cdn.beatsaver.com/713da9a9a0737f402ca75819ea9dc19ec3723329.mp3"}],createdAt:"2019-04-25T10:29:55Z",updatedAt:"2019-04-25T10:29:55Z",lastPublishedAt:"2019-04-25T10:29:55Z"},{id:"21d9",name:"GAY FROGS",description:"I DON'T LIKE EM PUTTING CHEMICALS IN THE WATER THAT TURN THE FRIGGIN FROGS GAY!",uploader:{id:408,name:"nuketime",uniqueSet:!0,hash:"5cff0b7498cc5a672c8507f7",avatar:"https://cdn.beatsaver.com/avatar/175811186007343104.png",type:"DISCORD"},metadata:{bpm:143,duration:58,songName:"Gay Frogs",songSubName:"",songAuthorName:"Nuketime",levelAuthorName:"Nuketime"},stats:{plays:0,downloads:2129,upvotes:1147,downvotes:18,score:.9267},uploaded:"2018-11-24T03:47:04Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c7bdbfea113219f8b372ca6107540995c2e81997",key:"21d9",state:"Published",createdAt:"2018-11-24T03:47:04Z",sageScore:3,diffs:[{njs:15,offset:0,notes:278,bombs:0,obstacles:2,nps:5.066,length:109.75,characteristic:"Standard",difficulty:"ExpertPlus",events:280,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:46.049,paritySummary:{errors:52,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c7bdbfea113219f8b372ca6107540995c2e81997.zip",coverURL:"https://cdn.beatsaver.com/c7bdbfea113219f8b372ca6107540995c2e81997.jpg",previewURL:"https://cdn.beatsaver.com/c7bdbfea113219f8b372ca6107540995c2e81997.mp3"}],createdAt:"2018-11-24T03:47:04Z",updatedAt:"2018-11-24T03:47:04Z",lastPublishedAt:"2018-11-24T03:47:04Z"},{id:"a76b",name:"BB 2020 | PSYQUI feat. Marpril - Girly Cupid | 18 | Submission #47",description:"This is a submission for the Building Blocks 2020 mapping contest!\n\nAll submissions are anonymous and will be uploaded by the BuildingBlocks account from May 3rd-May 17th 2020.\n\nInterested in checking out more map submissions or entering yourself? Join our discord here: https://discord.gg/3VAPcdg\n\nRequired Plugins:\nNoodle Extension\nChroma",uploader:{id:27741,name:"buildingblocks",uniqueSet:!0,hash:"5eac7bb67abb000006beca92",avatar:"https://www.gravatar.com/avatar/5eac7bb67abb000006beca92?d=retro",type:"SIMPLE"},metadata:{bpm:133,duration:244,songName:"Girly Cupid",songSubName:"feat. Marpril",songAuthorName:"PSYQUI",levelAuthorName:"Building Blocks 2020"},stats:{plays:0,downloads:1140,upvotes:1003,downvotes:13,score:.9266},uploaded:"2020-05-17T20:45:31.509Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"55cd8d585f6e63fb9b06d7c7358bda53f821fa81",key:"a76b",state:"Published",createdAt:"2020-05-17T20:45:31.509Z",sageScore:3,diffs:[{njs:18,offset:-.2,notes:764,bombs:0,obstacles:36331,nps:3.232,length:524,characteristic:"Standard",difficulty:"Expert",events:3539,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:236.391,paritySummary:{errors:28,warns:16,resets:0}}],downloadURL:"https://cdn.beatsaver.com/55cd8d585f6e63fb9b06d7c7358bda53f821fa81.zip",coverURL:"https://cdn.beatsaver.com/55cd8d585f6e63fb9b06d7c7358bda53f821fa81.jpg",previewURL:"https://cdn.beatsaver.com/55cd8d585f6e63fb9b06d7c7358bda53f821fa81.mp3"}],createdAt:"2020-05-17T20:45:31.509Z",updatedAt:"2020-05-17T20:45:31.509Z",lastPublishedAt:"2020-05-17T20:45:31.509Z"},{id:"6368",name:"Mimimi - Nightcore",description:"Youtube Preview: https://youtu.be/vqVK85T72hs",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:144.6,duration:167,songName:"Mi Mi Mi - Nightcore",songSubName:"",songAuthorName:"NightcoreZodiac",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:2275,upvotes:1677,downvotes:39,score:.9266},uploaded:"2019-09-14T22:08:05.659Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"448f6e65098a9b0d2de0c5b87a53300a61795eb3",key:"6368",state:"Published",createdAt:"2019-09-14T22:08:05.659Z",sageScore:4,diffs:[{njs:16,offset:0,notes:755,bombs:0,obstacles:2,nps:4.648,length:391.5,characteristic:"Standard",difficulty:"Expert",events:859,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.448,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/448f6e65098a9b0d2de0c5b87a53300a61795eb3.zip",coverURL:"https://cdn.beatsaver.com/448f6e65098a9b0d2de0c5b87a53300a61795eb3.jpg",previewURL:"https://cdn.beatsaver.com/448f6e65098a9b0d2de0c5b87a53300a61795eb3.mp3"}],createdAt:"2019-09-14T22:08:05.659Z",updatedAt:"2019-09-14T22:08:05.659Z",lastPublishedAt:"2019-09-14T22:08:05.659Z"},{id:"51fd",name:"BLOODY STREAM",description:"For the Jojo Fans",uploader:{id:4284704,name:"epg7ens",uniqueSet:!0,hash:"5cff0b7798cc5a672c855bb6",avatar:"https://cdn.beatsaver.com/avatar/174643589618466816.png",type:"DISCORD"},metadata:{bpm:132,duration:259,songName:"BLOODY STREAM",songSubName:"Coda",songAuthorName:"EPG7ENS",levelAuthorName:"EPG7ENS"},stats:{plays:0,downloads:3172,upvotes:2054,downvotes:55,score:.9266},uploaded:"2019-06-07T06:27:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7d5038dd8aae109cbe537ecbc6c38ec458c820f8",key:"51fd",state:"Published",createdAt:"2019-06-07T06:27:36Z",sageScore:5,diffs:[{njs:17,offset:0,notes:1448,bombs:0,obstacles:0,nps:5.648,length:564,characteristic:"Standard",difficulty:"ExpertPlus",events:2746,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256.364,paritySummary:{errors:2,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7d5038dd8aae109cbe537ecbc6c38ec458c820f8.zip",coverURL:"https://cdn.beatsaver.com/7d5038dd8aae109cbe537ecbc6c38ec458c820f8.jpg",previewURL:"https://cdn.beatsaver.com/7d5038dd8aae109cbe537ecbc6c38ec458c820f8.mp3"}],createdAt:"2019-06-07T06:27:36Z",updatedAt:"2019-06-07T06:27:36Z",lastPublishedAt:"2019-06-07T06:27:36Z"},{id:"4b20",name:"[Anniversary] Booty Bounce - Tujamo & Taio Cruz [Fafurion]",description:"Part of the Anniversary Song Pack\r\nExpert+ must be unlocked via the Anniversary Campaign\r\nEdit: Fixed notes placed after song is finished",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:198,songName:"Booty Bounce",songSubName:"Tujamo & Taio Cruz",songAuthorName:"Fafurion",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:4060,upvotes:1819,downvotes:45,score:.9266},uploaded:"2019-05-07T03:38:08Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d106db545bccd0bba2432b71d94bb7f94fd1f9a2",key:"4b20",state:"Published",createdAt:"2019-05-07T03:38:08Z",sageScore:7,diffs:[{njs:13,offset:0,notes:366,bombs:0,obstacles:0,nps:1.881,length:415,characteristic:"Standard",difficulty:"Easy",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.531,paritySummary:{errors:6,warns:0,resets:0}},{njs:13,offset:0,notes:550,bombs:0,obstacles:0,nps:2.824,length:415.5,characteristic:"Standard",difficulty:"Normal",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.766,paritySummary:{errors:6,warns:0,resets:0}},{njs:13,offset:0,notes:732,bombs:0,obstacles:0,nps:3.756,length:415.75,characteristic:"Standard",difficulty:"Hard",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.883,paritySummary:{errors:20,warns:16,resets:0}},{njs:15,offset:0,notes:874,bombs:0,obstacles:0,nps:4.485,length:415.75,characteristic:"Standard",difficulty:"Expert",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.883,paritySummary:{errors:28,warns:34,resets:0}},{njs:15,offset:0,notes:938,bombs:0,obstacles:0,nps:4.813,length:415.75,characteristic:"Standard",difficulty:"ExpertPlus",events:6151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.883,paritySummary:{errors:32,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d106db545bccd0bba2432b71d94bb7f94fd1f9a2.zip",coverURL:"https://cdn.beatsaver.com/d106db545bccd0bba2432b71d94bb7f94fd1f9a2.jpg",previewURL:"https://cdn.beatsaver.com/d106db545bccd0bba2432b71d94bb7f94fd1f9a2.mp3"}],createdAt:"2019-05-07T03:38:08Z",updatedAt:"2019-05-07T03:38:08Z",lastPublishedAt:"2019-05-07T03:38:08Z"},{id:"672f",name:"Kyouran Hey Kids!! [TV Size] - THE ORAL CIGARETTES (Noragami Aragoto Opening)",description:"Added a more comfortable diff which is more similar to my usual mapping style. If you don't like Ex+, play 'Shinki' for more comfort :) Also included a Hard diff for new players to enjoy this amazing song!\n\nPreview(Shinki) by Monteblanco: https://www.youtube.com/watch?v=9g9k1PomJGc\n\nHard: 369 Notes\nExpert+: 582 Notes\nShinki: 484 Notes\nLighting: 2243 Events",uploader:{id:4285130,name:"zoinkai__",uniqueSet:!0,hash:"5d465581f9bbae00060f3215",avatar:"https://cdn.beatsaver.com/avatar/146677763347185665.png",type:"DISCORD"},metadata:{bpm:142,duration:91,songName:"Kyouran Hey Kids!! (TV Size)",songSubName:"Noragami Aragoto Opening (V2)",songAuthorName:"THE ORAL CIGARETTES",levelAuthorName:"Zoinkai"},stats:{plays:0,downloads:3439,upvotes:1294,downvotes:24,score:.9264},uploaded:"2019-10-01T14:49:19.005Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ad82ca6317e82318db8281f8902952f9d6175d3e",key:"672f",state:"Published",createdAt:"2019-10-01T14:49:19.005Z",sageScore:6,diffs:[{njs:12,offset:0,notes:369,bombs:0,obstacles:21,nps:4.456,length:196,characteristic:"Standard",difficulty:"Hard",events:2243,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:82.817,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:582,bombs:7,obstacles:33,nps:6.622,length:208,characteristic:"Standard",difficulty:"Expert",events:2243,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.887,paritySummary:{errors:6,warns:10,resets:1}},{njs:18,offset:0,notes:484,bombs:13,obstacles:34,nps:5.507,length:208,characteristic:"Standard",difficulty:"ExpertPlus",events:2243,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.887,paritySummary:{errors:5,warns:13,resets:2}}],downloadURL:"https://cdn.beatsaver.com/ad82ca6317e82318db8281f8902952f9d6175d3e.zip",coverURL:"https://cdn.beatsaver.com/ad82ca6317e82318db8281f8902952f9d6175d3e.jpg",previewURL:"https://cdn.beatsaver.com/ad82ca6317e82318db8281f8902952f9d6175d3e.mp3"}],createdAt:"2019-10-01T14:49:19.005Z",updatedAt:"2019-10-01T14:49:19.005Z",lastPublishedAt:"2019-10-01T14:49:19.005Z"},{id:"5d26",name:"[Anniversary] Dancin (Krono Remix) - Aaron Smith [Skyler Wallace & Rexxz]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:198,songName:"Dancin",songSubName:"Krono Remix",songAuthorName:"Aaron Smith",levelAuthorName:"Skyler Wallace & Rexxz"},stats:{plays:0,downloads:7081,upvotes:2783,downvotes:89,score:.9263},uploaded:"2019-08-16T01:48:15.139Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"52cf3774ef1705f2830a85ad3147be9c52c795af",key:"5d26",state:"Published",createdAt:"2019-08-16T01:48:15.139Z",sageScore:7,diffs:[{njs:10,offset:1,notes:232,bombs:0,obstacles:8,nps:1.215,length:382,characteristic:"Standard",difficulty:"Easy",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191,paritySummary:{errors:57,warns:26,resets:0}},{njs:10,offset:1,notes:280,bombs:0,obstacles:0,nps:1.458,length:384,characteristic:"Standard",difficulty:"Normal",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:71,warns:47,resets:0}},{njs:10,offset:1,notes:386,bombs:0,obstacles:4,nps:2.01,length:384,characteristic:"Standard",difficulty:"Hard",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:68,warns:47,resets:0}},{njs:14,offset:0,notes:594,bombs:0,obstacles:0,nps:3.094,length:384,characteristic:"Standard",difficulty:"Expert",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:52,warns:59,resets:0}},{njs:14,offset:0,notes:793,bombs:0,obstacles:30,nps:4.13,length:384,characteristic:"Standard",difficulty:"ExpertPlus",events:7824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:81,warns:81,resets:0}}],downloadURL:"https://cdn.beatsaver.com/52cf3774ef1705f2830a85ad3147be9c52c795af.zip",coverURL:"https://cdn.beatsaver.com/52cf3774ef1705f2830a85ad3147be9c52c795af.jpg",previewURL:"https://cdn.beatsaver.com/52cf3774ef1705f2830a85ad3147be9c52c795af.mp3"}],createdAt:"2019-08-16T01:48:15.139Z",updatedAt:"2019-08-16T01:48:15.139Z",lastPublishedAt:"2019-08-16T01:48:15.139Z"},{id:"32e",name:"Daft Punk - Harder Better Faster Stronger",description:"Expert & Hard | 600+ Blocks | Full Song 3:44 | Includes Lighting. Request to: @themakertales",uploader:{id:51740,name:"runrockgame",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f04e",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f04e?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:224,songName:"Harder Better Faster Stronger",songSubName:"Daft Punk",songAuthorName:"RunRockGame",levelAuthorName:"runrockgame"},stats:{plays:0,downloads:14652,upvotes:15728,downvotes:820,score:.9263},uploaded:"2018-06-01T18:01:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7c7f38d467bb43fe11a142581e63e324622ecc71",key:"32e",state:"Published",createdAt:"2018-06-01T18:01:45Z",sageScore:6,diffs:[{njs:10,offset:0,notes:423,bombs:57,obstacles:33,nps:1.381,length:630.5,characteristic:"Standard",difficulty:"Hard",events:1618,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:307.561,paritySummary:{errors:95,warns:38,resets:16}},{njs:10,offset:0,notes:616,bombs:68,obstacles:33,nps:2.011,length:630.5,characteristic:"Standard",difficulty:"Expert",events:1618,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:307.561,paritySummary:{errors:60,warns:83,resets:14}}],downloadURL:"https://cdn.beatsaver.com/7c7f38d467bb43fe11a142581e63e324622ecc71.zip",coverURL:"https://cdn.beatsaver.com/7c7f38d467bb43fe11a142581e63e324622ecc71.jpg",previewURL:"https://cdn.beatsaver.com/7c7f38d467bb43fe11a142581e63e324622ecc71.mp3"}],createdAt:"2018-06-01T18:01:45Z",updatedAt:"2018-06-01T18:01:45Z",lastPublishedAt:"2018-06-01T18:01:45Z"},{id:"636",name:"Burn - Ellie Goulding",description:"Difficulties: Expert, Hard, Normal\r\nCome Hang Out on Twitch! http://www.twitch.tv/bennydabeastlive\r\nYouTube Link: https://youtu.be/KOdvSdrnaeE\r\n\r\nIf you like this, check out my other beat maps:\r\nUptown Funk: https://beatsaver.com/details.php?id=1962\r\nCAN'T STOP THE FEELING by Justin Timberlake: https://beatsaver.com/details.php?id=1587\r\nMidnight City by M83: https://beatsaver.com/details.php?id=542\r\nKids by MGMT: https://beatsaver.com/details.php?id=421\r\nWhat You Know by Two Door Cinema Club: https://beatsaver.com/details.php?id=1107\r\nPolish Girl by Neon Indian: https://beatsaver.com/details.php?id=694",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:174,duration:233,songName:"Burn",songSubName:"Ellie Goulding",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:14492,upvotes:7023,downvotes:311,score:.9262},uploaded:"2018-06-22T20:31:34Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"9d31d3aab3d58ab540df63caed06d62ff1cfefdd",key:"636",state:"Published",createdAt:"2018-06-22T20:31:34Z",sageScore:7,diffs:[{njs:10,offset:0,notes:438,bombs:12,obstacles:8,nps:1.58,length:804,characteristic:"Standard",difficulty:"Easy",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:277.241,paritySummary:{errors:107,warns:62,resets:0}},{njs:10,offset:0,notes:519,bombs:12,obstacles:8,nps:1.872,length:804,characteristic:"Standard",difficulty:"Hard",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:277.241,paritySummary:{errors:67,warns:109,resets:0}},{njs:10,offset:0,notes:686,bombs:12,obstacles:8,nps:3.251,length:612,characteristic:"Standard",difficulty:"Expert",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.034,paritySummary:{errors:120,warns:168,resets:0},stars:2.37}],downloadURL:"https://cdn.beatsaver.com/9d31d3aab3d58ab540df63caed06d62ff1cfefdd.zip",coverURL:"https://cdn.beatsaver.com/9d31d3aab3d58ab540df63caed06d62ff1cfefdd.jpg",previewURL:"https://cdn.beatsaver.com/9d31d3aab3d58ab540df63caed06d62ff1cfefdd.mp3"}],createdAt:"2018-06-22T20:31:34Z",updatedAt:"2018-06-22T20:31:34Z",lastPublishedAt:"2018-06-22T20:31:34Z"},{id:"b662",name:"PREPARING THE KRABBY PATTY",description:"Just a funny little map I made a couple weeks ago. I thought you might enjoy it so I'm releasing it now.\r\nI hope you enjoy.\r\n\r\nThe song is from the SpongeBob episode, Krusty Krab Training Video.\r\nEpisode Info: https://spongebob.fandom.com/wiki/Krusty_Krab_Training_Video",uploader:{id:4284694,name:"jokidum",uniqueSet:!0,hash:"5e15518d47f1600006e912cc",avatar:"https://cdn.beatsaver.com/avatar/494282373094047745.png",type:"DISCORD"},metadata:{bpm:145,duration:37,songName:"PREPARING THE KRABBY PATTY",songSubName:"",songAuthorName:"SpongeBob SquarePants",levelAuthorName:"Jokidum"},stats:{plays:0,downloads:2731,upvotes:1125,downvotes:18,score:.9261},uploaded:"2020-06-26T20:00:17.824Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f931e1d23e0fad3b1ac22d86c55ab17718470b6d",key:"b662",state:"Published",createdAt:"2020-06-26T20:00:17.824Z",sageScore:-2,diffs:[{njs:12,offset:0,notes:165,bombs:0,obstacles:2,nps:5.75,length:69.344,characteristic:"Standard",difficulty:"ExpertPlus",events:628,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:28.694,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f931e1d23e0fad3b1ac22d86c55ab17718470b6d.zip",coverURL:"https://cdn.beatsaver.com/f931e1d23e0fad3b1ac22d86c55ab17718470b6d.jpg",previewURL:"https://cdn.beatsaver.com/f931e1d23e0fad3b1ac22d86c55ab17718470b6d.mp3"}],createdAt:"2020-06-26T20:00:17.824Z",updatedAt:"2020-06-26T20:00:17.824Z",lastPublishedAt:"2020-06-26T20:00:17.824Z"},{id:"6381",name:"Caravan Palace - Moonshine",description:"Easy, Normal, Hard, Expert, ExpertPlus\n\nE+: https://www.youtube.com/watch?v=pQFgyOkFdgM\n\nRequested by laser",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:117,duration:215,songName:"Moonshine",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:3301,upvotes:1700,downvotes:41,score:.9261},uploaded:"2019-09-15T02:18:33.112Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fd8d96de2a21cd4c56c6657214bb88e1b127b471",key:"6381",state:"Published",createdAt:"2019-09-15T02:18:33.112Z",sageScore:8,diffs:[{njs:12,offset:.5,notes:260,bombs:0,obstacles:23,nps:1.24,length:409,characteristic:"Standard",difficulty:"Easy",events:3302,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.744,paritySummary:{errors:96,warns:14,resets:0}},{njs:12,offset:.5,notes:376,bombs:0,obstacles:23,nps:1.793,length:409,characteristic:"Standard",difficulty:"Normal",events:3302,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.744,paritySummary:{errors:38,warns:19,resets:0}},{njs:13,offset:.25,notes:596,bombs:0,obstacles:10,nps:2.856,length:407,characteristic:"Standard",difficulty:"Hard",events:3302,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.718,paritySummary:{errors:7,warns:7,resets:0}},{njs:15,offset:0,notes:691,bombs:0,obstacles:9,nps:3.311,length:407,characteristic:"Standard",difficulty:"Expert",events:3302,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.718,paritySummary:{errors:7,warns:11,resets:0}},{njs:17,offset:-.25,notes:1302,bombs:0,obstacles:8,nps:6.2,length:409.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3299,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210,paritySummary:{errors:3,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fd8d96de2a21cd4c56c6657214bb88e1b127b471.zip",coverURL:"https://cdn.beatsaver.com/fd8d96de2a21cd4c56c6657214bb88e1b127b471.jpg",previewURL:"https://cdn.beatsaver.com/fd8d96de2a21cd4c56c6657214bb88e1b127b471.mp3"}],createdAt:"2019-09-15T02:18:33.112Z",updatedAt:"2019-09-15T02:18:33.112Z",lastPublishedAt:"2019-09-15T02:18:33.112Z"},{id:"8570",name:"Dua Lipa - Physical",description:"Physical - The first difficulty is Hard but is mislabeled as Expert. I have no way to update this sorry! The second difficulty is Expert.",uploader:{id:4285261,name:"yomama",uniqueSet:!0,hash:"5e23f0a1054bbd0007bc1ed4",avatar:"https://cdn.beatsaver.com/avatar/153595294792155137.png",type:"DISCORD"},metadata:{bpm:147,duration:195,songName:"Physical",songSubName:"",songAuthorName:"Dua Lipa",levelAuthorName:"yomama"},stats:{plays:0,downloads:4086,upvotes:1554,downvotes:35,score:.926},uploaded:"2020-02-09T03:16:30.433Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ab7c911471a652de2ba74bd6df2a4cbbc5d45fee",key:"8570",state:"Published",createdAt:"2020-02-09T03:16:30.433Z",sageScore:4,diffs:[{njs:10,offset:0,notes:767,bombs:0,obstacles:33,nps:4.059,length:463,characteristic:"Standard",difficulty:"Hard",events:2281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.98,paritySummary:{errors:105,warns:24,resets:0}},{njs:14,offset:0,notes:841,bombs:0,obstacles:33,nps:4.45,length:463,characteristic:"Standard",difficulty:"Expert",events:1397,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.98,paritySummary:{errors:101,warns:44,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ab7c911471a652de2ba74bd6df2a4cbbc5d45fee.zip",coverURL:"https://cdn.beatsaver.com/ab7c911471a652de2ba74bd6df2a4cbbc5d45fee.jpg",previewURL:"https://cdn.beatsaver.com/ab7c911471a652de2ba74bd6df2a4cbbc5d45fee.mp3"}],createdAt:"2020-02-09T03:16:30.433Z",updatedAt:"2020-02-09T03:16:30.433Z",lastPublishedAt:"2020-02-09T03:16:30.433Z"},{id:"6f60",name:"True Damage - GIANTS",description:"PepeJamJam ",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:155,duration:193,songName:"GIANTS",songSubName:"",songAuthorName:"True Damage",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:7189,upvotes:2503,downvotes:77,score:.926},uploaded:"2019-11-11T08:43:31.658Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7fba5d716708d625428985bbead477321c419240",key:"6f60",state:"Published",createdAt:"2019-11-11T08:43:31.658Z",sageScore:7,diffs:[{njs:10,offset:0,notes:418,bombs:0,obstacles:68,nps:2.279,length:473.72,characteristic:"Standard",difficulty:"Hard",events:1150,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.376,paritySummary:{errors:21,warns:7,resets:0}},{njs:12,offset:0,notes:633,bombs:0,obstacles:54,nps:3.452,length:473.72,characteristic:"Standard",difficulty:"Expert",events:1150,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.376,paritySummary:{errors:12,warns:14,resets:0}},{njs:16,offset:0,notes:863,bombs:0,obstacles:59,nps:4.705,length:473.84,characteristic:"Standard",difficulty:"ExpertPlus",events:1150,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.422,paritySummary:{errors:30,warns:55,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7fba5d716708d625428985bbead477321c419240.zip",coverURL:"https://cdn.beatsaver.com/7fba5d716708d625428985bbead477321c419240.jpg",previewURL:"https://cdn.beatsaver.com/7fba5d716708d625428985bbead477321c419240.mp3"}],createdAt:"2019-11-11T08:43:31.658Z",updatedAt:"2019-11-11T08:43:31.658Z",lastPublishedAt:"2019-11-11T08:43:31.658Z"},{id:"c208",name:"[Alphabeat - Pegboard Nerds Pack] Pegboard Nerds - Disconnected",description:"Part of the Pegboard Nerds Music Pack - Presented by the Alphabeat Mapping Group.\n\nAlphabeat is a mapping group that currently consists of 6 members, 4 of which have made this pack. This Pegboard Nerds pack is brought to you by Timeweaver, Rayman9515, KuritsaDBS & FireStrike!\n\nThis map uses a custom platform made by Rayman! Download it here: https://modelsaber.com/Platforms/?id=1594988870\n\nAll songs included in this pack:\n- Gunslinga (Mapped by Rayman)\n- Coffins (Mapped by Rayman)\n- Superstar (Mapped by Timeweaver & Firestrike)\n- Razor Sharp (Mapped by Firestrike)\n- Luigi’s Mansion (Mapped by Rayman)\n- Try This (Mapped by Timeweaver & Firestrike)\n- Swamp Thing (Mapped by Rayman & KuritsaDVR)\n- Exterminate (Mapped by Timeweaver)\n- Disconnected (Mapped by Timeweaver & Firestrike)\n- Here it Comes (Mapped by KuritsaDVR & Timeweaver)\nGet the playlist here: Coming Soon\n\nCheck everyone out:\nRayman: https://beatsaver.com/uploader/5dc6edac6dea0b0006c18486\nFirestrike: https://beatsaver.com/uploader/5cff0b7498cc5a672c85055a\nKuritsaDBS: https://beatsaver.com/uploader/5cff0b7698cc5a672c8537ef\n\nIncludes\n- 5 Standard Difficulties\n- 1 One Saber Difficulty",uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:128,duration:212,songName:"Disconnected",songSubName:"",songAuthorName:"Pegboard Nerds",levelAuthorName:"FireStrike & Timeweaver"},stats:{plays:0,downloads:4098,upvotes:1198,downvotes:21,score:.9259},uploaded:"2020-07-17T13:00:44.293Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"423bd0a80440bcc9dda9dbe20a72ed235dfc3e84",key:"c208",state:"Published",createdAt:"2020-07-17T13:00:44.293Z",sageScore:7,diffs:[{njs:9,offset:0,notes:274,bombs:0,obstacles:43,nps:1.319,length:443,characteristic:"Standard",difficulty:"Easy",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.656,paritySummary:{errors:82,warns:16,resets:0}},{njs:10,offset:1,notes:374,bombs:0,obstacles:58,nps:1.799,length:443.5,characteristic:"Standard",difficulty:"Normal",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:62,warns:42,resets:0}},{njs:12,offset:.5,notes:567,bombs:0,obstacles:60,nps:2.727,length:443.5,characteristic:"Standard",difficulty:"Hard",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:31,warns:22,resets:0}},{njs:15,offset:0,notes:777,bombs:0,obstacles:73,nps:3.738,length:443.5,characteristic:"Standard",difficulty:"Expert",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:2,warns:0,resets:0}},{njs:17,offset:-.25,notes:957,bombs:114,obstacles:56,nps:4.603,length:443.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4547,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:0,warns:2,resets:0}},{njs:15,offset:0,notes:611,bombs:0,obstacles:85,nps:2.939,length:443.5,characteristic:"OneSaber",difficulty:"Expert",events:4548,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.891,paritySummary:{errors:0,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/423bd0a80440bcc9dda9dbe20a72ed235dfc3e84.zip",coverURL:"https://cdn.beatsaver.com/423bd0a80440bcc9dda9dbe20a72ed235dfc3e84.jpg",previewURL:"https://cdn.beatsaver.com/423bd0a80440bcc9dda9dbe20a72ed235dfc3e84.mp3"}],createdAt:"2020-07-17T13:00:44.293Z",updatedAt:"2020-07-17T13:00:44.293Z",lastPublishedAt:"2020-07-17T13:00:44.293Z"},{id:"1fed",name:"Change The World - Fox Blanco - 100k Contest",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:179,songName:"Change The World",songSubName:"Fox Blanco",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:4075,upvotes:1249,downvotes:23,score:.9259},uploaded:"2018-11-12T17:42:26Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fcc70ede2fcbd648a25a954e6928a14985f1fbe8",key:"1fed",state:"Published",createdAt:"2018-11-12T17:42:26Z",sageScore:5,diffs:[{njs:10,offset:0,notes:245,bombs:0,obstacles:18,nps:1.4,length:367.5,characteristic:"Standard",difficulty:"Easy",events:889,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175,paritySummary:{errors:25,warns:4,resets:0}},{njs:10,offset:0,notes:321,bombs:0,obstacles:19,nps:1.834,length:367.5,characteristic:"Standard",difficulty:"Normal",events:889,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175,paritySummary:{errors:35,warns:6,resets:0}},{njs:10,offset:0,notes:443,bombs:0,obstacles:19,nps:2.531,length:367.5,characteristic:"Standard",difficulty:"Hard",events:889,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175,paritySummary:{errors:26,warns:9,resets:0}},{njs:12,offset:0,notes:531,bombs:0,obstacles:19,nps:3.034,length:367.5,characteristic:"Standard",difficulty:"Expert",events:889,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175,paritySummary:{errors:40,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fcc70ede2fcbd648a25a954e6928a14985f1fbe8.zip",coverURL:"https://cdn.beatsaver.com/fcc70ede2fcbd648a25a954e6928a14985f1fbe8.jpg",previewURL:"https://cdn.beatsaver.com/fcc70ede2fcbd648a25a954e6928a14985f1fbe8.mp3"}],createdAt:"2018-11-12T17:42:26Z",updatedAt:"2018-11-12T17:42:26Z",lastPublishedAt:"2018-11-12T17:42:26Z"},{id:"3023",name:"Houdini - Foster The People",description:"Expert Playthrough : https://youtu.be/6Fk164IwVyU",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:110,duration:204,songName:"Houdini",songSubName:"Foster The People",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:3836,upvotes:1087,downvotes:17,score:.9258},uploaded:"2019-01-22T19:02:49Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c50641c7f73470e5368ab6957bedca3b2e620edc",key:"3023",state:"Published",createdAt:"2019-01-22T19:02:49Z",sageScore:6,diffs:[{njs:10,offset:0,notes:367,bombs:0,obstacles:27,nps:1.838,length:366,characteristic:"Standard",difficulty:"Normal",events:1163,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.636,paritySummary:{errors:30,warns:20,resets:0}},{njs:11,offset:0,notes:522,bombs:0,obstacles:27,nps:2.615,length:366,characteristic:"Standard",difficulty:"Hard",events:1163,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.636,paritySummary:{errors:38,warns:29,resets:0}},{njs:12,offset:0,notes:829,bombs:0,obstacles:27,nps:4.153,length:366,characteristic:"Standard",difficulty:"Expert",events:1163,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.636,paritySummary:{errors:41,warns:33,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c50641c7f73470e5368ab6957bedca3b2e620edc.zip",coverURL:"https://cdn.beatsaver.com/c50641c7f73470e5368ab6957bedca3b2e620edc.jpg",previewURL:"https://cdn.beatsaver.com/c50641c7f73470e5368ab6957bedca3b2e620edc.mp3"}],createdAt:"2019-01-22T19:02:49Z",updatedAt:"2019-01-22T19:02:49Z",lastPublishedAt:"2019-01-22T19:02:49Z"},{id:"849c",name:"Nightcore - Sweet but Psycho",description:"Youtube Preview: https://youtu.be/7u9Z8z-25ro",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:148,duration:167,songName:"Nightcore - Sweet but Psycho",songSubName:"",songAuthorName:"Syrex",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:2955,upvotes:1088,downvotes:17,score:.9258},uploaded:"2020-02-06T05:37:47.858Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"908f95d354d9a3861f94055772983d54cd12bdcd",key:"849c",state:"Published",createdAt:"2020-02-06T05:37:47.858Z",sageScore:2,diffs:[{njs:18,offset:0,notes:672,bombs:0,obstacles:0,nps:4.134,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:778,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.162,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/908f95d354d9a3861f94055772983d54cd12bdcd.zip",coverURL:"https://cdn.beatsaver.com/908f95d354d9a3861f94055772983d54cd12bdcd.jpg",previewURL:"https://cdn.beatsaver.com/908f95d354d9a3861f94055772983d54cd12bdcd.mp3"}],createdAt:"2020-02-06T05:37:47.858Z",updatedAt:"2020-02-06T05:37:47.858Z",lastPublishedAt:"2020-02-06T05:37:47.858Z"},{id:"6cc2",name:"Tones And I - Dance Monkey",description:"Dance. :3",uploader:{id:4289959,name:"pinus-sp",uniqueSet:!0,hash:"5d9cd7b2e6a67600062ab0a9",avatar:"https://cdn.beatsaver.com/avatar/188777396441186304.png",type:"DISCORD"},metadata:{bpm:196,duration:211,songName:"Dance Monkey",songSubName:"",songAuthorName:"Tones and I",levelAuthorName:"Pinus Sp"},stats:{plays:0,downloads:7505,upvotes:5655,downvotes:239,score:.9258},uploaded:"2019-10-28T20:20:40.691Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"46bbda664ab28c94639d8991d924726c0803b023",key:"6cc2",state:"Published",createdAt:"2019-10-28T20:20:40.691Z",sageScore:5,diffs:[{njs:12,offset:0,notes:256,bombs:0,obstacles:76,nps:1.253,length:667.25,characteristic:"Standard",difficulty:"Normal",events:1140,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.26,paritySummary:{errors:133,warns:0,resets:0}},{njs:12,offset:0,notes:462,bombs:0,obstacles:88,nps:2.262,length:667.25,characteristic:"Standard",difficulty:"Hard",events:1140,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.26,paritySummary:{errors:265,warns:3,resets:0}},{njs:12,offset:0,notes:826,bombs:0,obstacles:88,nps:4.044,length:667.25,characteristic:"Standard",difficulty:"Expert",events:1140,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.26,paritySummary:{errors:132,warns:93,resets:0}}],downloadURL:"https://cdn.beatsaver.com/46bbda664ab28c94639d8991d924726c0803b023.zip",coverURL:"https://cdn.beatsaver.com/46bbda664ab28c94639d8991d924726c0803b023.jpg",previewURL:"https://cdn.beatsaver.com/46bbda664ab28c94639d8991d924726c0803b023.mp3"}],createdAt:"2019-10-28T20:20:40.691Z",updatedAt:"2019-10-28T20:20:40.691Z",lastPublishedAt:"2019-10-28T20:20:40.691Z"},{id:"5dbb",name:"Siames - The Wolf",description:"Video Preview: https://youtu.be/I68zZeXioyc\n\nDifficulty: Expert\nBPM: 96.1\nNotes: 632\nNJS: 12\nNPS: 3.32\nSong Duration: 3:10",uploader:{id:34679,name:"lukemortora",uniqueSet:!0,hash:"5cff0b7798cc5a672c855c16",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855c16?d=retro",type:"SIMPLE"},metadata:{bpm:96.1,duration:190,songName:"The Wolf",songSubName:"",songAuthorName:"Siames",levelAuthorName:"LukeMortora"},stats:{plays:0,downloads:1765,upvotes:1108,downvotes:18,score:.9257},uploaded:"2019-08-18T13:54:38.297Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"88ef5d6f1ce10e3cc85637b095cd46ee68f125ac",key:"5dbb",state:"Published",createdAt:"2019-08-18T13:54:38.297Z",sageScore:6,diffs:[{njs:13,offset:0,notes:632,bombs:60,obstacles:19,nps:3.467,length:292,characteristic:"Standard",difficulty:"Expert",events:1152,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.31,paritySummary:{errors:51,warns:53,resets:22}}],downloadURL:"https://cdn.beatsaver.com/88ef5d6f1ce10e3cc85637b095cd46ee68f125ac.zip",coverURL:"https://cdn.beatsaver.com/88ef5d6f1ce10e3cc85637b095cd46ee68f125ac.jpg",previewURL:"https://cdn.beatsaver.com/88ef5d6f1ce10e3cc85637b095cd46ee68f125ac.mp3"}],createdAt:"2019-08-18T13:54:38.297Z",updatedAt:"2019-08-18T13:54:38.297Z",lastPublishedAt:"2019-08-18T13:54:38.297Z"},{id:"8e98",name:"2WEI feat. Edda Hayes - Warriors",description:"Bit late on this one to be honest.\nOfficial Imagine Dragons cover from League of Legends season 2020 cinematic.\n\nvideo: https://youtu.be/Wl-GfMwC3i8\n\nEasy: Notes: 159 NPS: 0.91 NJS: 12\nNormal: Notes: 221 NPS: 1.26 NJS: 12\nHard: Notes: 288 NPS: 1.64 NJS: 15\nExpert: Notes: 373 NPS: 1.98 NJS: 17\nExpert+: Notes: 442 NPS: 2.35 NJS: 19\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:204,songName:"Warriors",songSubName:"(feat. Edda Hayes)",songAuthorName:"2WEI, League of Legends",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:10351,upvotes:2900,downvotes:97,score:.9256},uploaded:"2020-03-09T01:22:45.508Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3a49f1b40044ba90eb27963c29121537cec28a44",key:"8e98",state:"Published",createdAt:"2020-03-09T01:22:45.508Z",sageScore:8,diffs:[{njs:12,offset:1,notes:159,bombs:0,obstacles:21,nps:.91,length:358.292,characteristic:"Standard",difficulty:"Easy",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.777,paritySummary:{errors:13,warns:2,resets:0}},{njs:14,offset:.5,notes:221,bombs:0,obstacles:35,nps:1.259,length:359.904,characteristic:"Standard",difficulty:"Normal",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.563,paritySummary:{errors:9,warns:4,resets:0}},{njs:15,offset:0,notes:288,bombs:0,obstacles:54,nps:1.64,length:359.904,characteristic:"Standard",difficulty:"Hard",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.563,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.25,notes:373,bombs:0,obstacles:34,nps:1.98,length:386.268,characteristic:"Standard",difficulty:"Expert",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.424,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.5,notes:442,bombs:0,obstacles:178,nps:2.346,length:386.268,characteristic:"Standard",difficulty:"ExpertPlus",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.424,paritySummary:{errors:1,warns:0,resets:0}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:3343,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3a49f1b40044ba90eb27963c29121537cec28a44.zip",coverURL:"https://cdn.beatsaver.com/3a49f1b40044ba90eb27963c29121537cec28a44.jpg",previewURL:"https://cdn.beatsaver.com/3a49f1b40044ba90eb27963c29121537cec28a44.mp3"}],createdAt:"2020-03-09T01:22:45.508Z",updatedAt:"2020-03-09T01:22:45.508Z",lastPublishedAt:"2020-03-09T01:22:45.508Z"},{id:"4fc3",name:"Doubt - twenty one pilots",description:"Nice relaxing and laid-back experience, even on Expert/Expert+. In-game voting is fixed too, so don't forget to update your mods!\r\n\r\nBPM: 123\r\n\r\nNotes: N - 409 ; H - 487 ; Ex - 668 ; Ex+ - 720\r\nWalls: N - 68 ; H - 42 ; Ex - 41 ; Ex+ - 40\r\nBombs: None!\r\n\r\nThanks to helencarnate and Qwasyx for playtesting!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:123,duration:191,songName:"Doubt",songSubName:"twenty one pilots",songAuthorName:"fruhead",levelAuthorName:"fruhead"},stats:{plays:0,downloads:6089,upvotes:1160,downvotes:20,score:.9256},uploaded:"2019-05-29T18:36:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bf166123a88a801f41aed10cff6c36f9f11f4cf3",key:"4fc3",state:"Published",createdAt:"2019-05-29T18:36:45Z",sageScore:4,diffs:[{njs:12,offset:0,notes:409,bombs:0,obstacles:68,nps:2.285,length:367,characteristic:"Standard",difficulty:"Normal",events:5750,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.024,paritySummary:{errors:13,warns:4,resets:0}},{njs:12,offset:0,notes:487,bombs:0,obstacles:42,nps:2.72,length:367,characteristic:"Standard",difficulty:"Hard",events:5750,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.024,paritySummary:{errors:11,warns:12,resets:0}},{njs:14,offset:0,notes:668,bombs:0,obstacles:41,nps:3.731,length:367,characteristic:"Standard",difficulty:"Expert",events:5750,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.024,paritySummary:{errors:20,warns:19,resets:0}},{njs:16,offset:0,notes:720,bombs:0,obstacles:41,nps:4.022,length:367,characteristic:"Standard",difficulty:"ExpertPlus",events:5750,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.024,paritySummary:{errors:18,warns:18,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bf166123a88a801f41aed10cff6c36f9f11f4cf3.zip",coverURL:"https://cdn.beatsaver.com/bf166123a88a801f41aed10cff6c36f9f11f4cf3.jpg",previewURL:"https://cdn.beatsaver.com/bf166123a88a801f41aed10cff6c36f9f11f4cf3.mp3"}],createdAt:"2019-05-29T18:36:45Z",updatedAt:"2019-05-29T18:36:45Z",lastPublishedAt:"2019-05-29T18:36:45Z"},{id:"1362d",name:"Ghost Choir - Louie Zong (modchart)",description:"This is a relaxing modchart and a technical proof of concept. If you haven't played my modchart Dondante yet, please check it out: https://beatsaver.com/beatmap/123b5\r\n\r\nThe map requires the mods Noodle Extensions and Chroma. If Noodle Extensions is not available yet on ModAssistant, you can get the latest release at https://github.com/Aeroluna/NoodleExtensions/releases/tag/v1.3.5\r\n\r\nTips for a better experience:\r\n- Disable static lights; there are no lights anyway\r\n- Hide the HUD\r\n- Turn the SFX volume down (0 or low value like 0.2)\r\n- Enable bloom post-processing\r\n\r\nPreview: https://youtu.be/XC7RY9C_EHs\r\n\r\nI adapted this from Louie Zong's original animation: https://youtu.be/kXF3VYYa5TI\r\n\r\n",uploader:{id:4288814,name:"nyri0",uniqueSet:!0,hash:"5e792df416c9680006086a78",avatar:"https://cdn.beatsaver.com/avatar/396715033125584907.png",type:"DISCORD"},metadata:{bpm:67,duration:90,songName:"Ghost Choir",songSubName:"",songAuthorName:"Louie Zong",levelAuthorName:"nyri0"},stats:{plays:0,downloads:1938,upvotes:663,downvotes:3,score:.9255},uploaded:"2021-01-30T12:31:29.825Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1d373506c0b2b82867411f18696a1ad53d4ea01d",key:"1362d",state:"Published",createdAt:"2021-01-30T12:31:29.825Z",sageScore:2,diffs:[{njs:14,offset:0,notes:138,bombs:0,obstacles:1460,nps:1.684,length:91.5,characteristic:"Standard",difficulty:"Hard",events:5,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:81.94,paritySummary:{errors:4,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1d373506c0b2b82867411f18696a1ad53d4ea01d.zip",coverURL:"https://cdn.beatsaver.com/1d373506c0b2b82867411f18696a1ad53d4ea01d.jpg",previewURL:"https://cdn.beatsaver.com/1d373506c0b2b82867411f18696a1ad53d4ea01d.mp3"}],createdAt:"2021-01-30T12:31:29.825Z",updatedAt:"2021-01-30T12:31:29.825Z",lastPublishedAt:"2021-01-30T12:31:29.825Z"},{id:"f91e",name:"Who's Laughing Now - Ava Max",description:"Surprise, it's a slow pop song and it doesn't have sliders!\nGoing back to my roots with this one just because I love the song and I wanted to rank a pop song in quite a while anyways.\n\nThank you for the mod Trolav!\n\nAs always, I'm open to feedback on discord @Teuflum#5982.",uploader:{id:68740,name:"Teuflum",uniqueSet:!0,hash:"5cff0b7498cc5a672c851a6b",avatar:"https://cdn.beatsaver.com/avatar/114706869460664326.png",type:"DISCORD"},metadata:{bpm:92,duration:181,songName:"Who's Laughing Now",songSubName:"",songAuthorName:"Ava Max",levelAuthorName:"Teuflum"},stats:{plays:0,downloads:11683,upvotes:1652,downvotes:40,score:.9255},uploaded:"2020-10-04T11:45:39.424Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"559113d5c4247438c6ecad852c61d03d79396af1",key:"f91e",state:"Published",createdAt:"2020-10-04T11:45:39.424Z",sageScore:7,diffs:[{njs:12,offset:0,notes:286,bombs:19,obstacles:139,nps:1.636,length:268,characteristic:"Standard",difficulty:"Easy",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:3,warns:0,resets:1},stars:.96},{njs:13,offset:-.25,notes:344,bombs:19,obstacles:139,nps:1.968,length:268,characteristic:"Standard",difficulty:"Normal",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:0,warns:0,resets:2},stars:1.32},{njs:14,offset:.5,notes:545,bombs:20,obstacles:126,nps:3.118,length:268,characteristic:"Standard",difficulty:"Hard",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:0,warns:0,resets:2},stars:1.96},{njs:15,offset:.25,notes:703,bombs:20,obstacles:93,nps:4.022,length:268,characteristic:"Standard",difficulty:"Expert",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:0,warns:0,resets:0},stars:2.83},{njs:17,offset:.1,notes:727,bombs:20,obstacles:93,nps:4.159,length:268,characteristic:"Standard",difficulty:"ExpertPlus",events:2852,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.783,paritySummary:{errors:0,warns:0,resets:0},stars:4.02}],downloadURL:"https://cdn.beatsaver.com/559113d5c4247438c6ecad852c61d03d79396af1.zip",coverURL:"https://cdn.beatsaver.com/559113d5c4247438c6ecad852c61d03d79396af1.jpg",previewURL:"https://cdn.beatsaver.com/559113d5c4247438c6ecad852c61d03d79396af1.mp3"}],createdAt:"2020-10-04T11:45:39.424Z",updatedAt:"2021-09-20T15:00:35.623946Z",lastPublishedAt:"2020-10-04T11:45:39.424Z"},{id:"4fba",name:"Mirror Mirror [One Saber] (RWBY: Volume 1 Soundtrack) - Jeff Williams ft. Casey Lee Williams",description:"My first one saber map! Can't believe it took me 250 maps before I started making even 1 one saber map. Trying out one saber mapping with the first RWBY song that I mapped. No promises, but I might do more one saber RWBY maps if this takes off. Map comes with custom Atlas Blue and Snow White colors",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:146,duration:175,songName:"Mirror Mirror (One Saber)",songSubName:"Jeff Williams ft. Casey Lee Williams",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3363,upvotes:760,downvotes:6,score:.9255},uploaded:"2019-05-29T13:04:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4cb8bba2e14169819d61a4ccb69adba7b59d7f7a",key:"4fba",state:"Published",createdAt:"2019-05-29T13:04:18Z",sageScore:5,diffs:[{njs:12,offset:0,notes:352,bombs:0,obstacles:8,nps:2.185,length:391.993,characteristic:"OneSaber",difficulty:"Expert",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:161.093,paritySummary:{errors:15,warns:22,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4cb8bba2e14169819d61a4ccb69adba7b59d7f7a.zip",coverURL:"https://cdn.beatsaver.com/4cb8bba2e14169819d61a4ccb69adba7b59d7f7a.jpg",previewURL:"https://cdn.beatsaver.com/4cb8bba2e14169819d61a4ccb69adba7b59d7f7a.mp3"}],createdAt:"2019-05-29T13:04:18Z",updatedAt:"2019-05-29T13:04:18Z",lastPublishedAt:"2019-05-29T13:04:18Z"},{id:"447a",name:"AIAIAI",description:"Twitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:128,duration:192,songName:"AIAIAI (feat. Yasutaka Nakata)",songSubName:"Kizuna AI",songAuthorName:"Dack",levelAuthorName:"Dack"},stats:{plays:0,downloads:1261,upvotes:1434,downvotes:31,score:.9255},uploaded:"2019-04-09T11:00:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"174dbef7bfdd791378582d4e7b46f9d652ba44d8",key:"447a",state:"Published",createdAt:"2019-04-09T11:00:10Z",sageScore:4,diffs:[{njs:14,offset:0,notes:466,bombs:8,obstacles:15,nps:2.556,length:389,characteristic:"Standard",difficulty:"Expert",events:715,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:182.344,paritySummary:{errors:35,warns:29,resets:1}}],downloadURL:"https://cdn.beatsaver.com/174dbef7bfdd791378582d4e7b46f9d652ba44d8.zip",coverURL:"https://cdn.beatsaver.com/174dbef7bfdd791378582d4e7b46f9d652ba44d8.jpg",previewURL:"https://cdn.beatsaver.com/174dbef7bfdd791378582d4e7b46f9d652ba44d8.mp3"}],createdAt:"2019-04-09T11:00:10Z",updatedAt:"2019-04-09T11:00:10Z",lastPublishedAt:"2019-04-09T11:00:10Z"},{id:"d35a",name:"[FUTURE FUNK PACK] Windy Summer (Night Tempo 100% Pure Remastered)",description:"FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\nThese first two songs are originally sung by Anri, one of my favorite City Pop artist. \n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:120,duration:190,songName:"Windy Summer",songSubName:"(Night Tempo 100% Pure Remastered)",songAuthorName:"Anri",levelAuthorName:"ETAN"},stats:{plays:0,downloads:4185,upvotes:753,downvotes:6,score:.9253},uploaded:"2020-08-10T17:48:34.173Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"dc259cc74cc52a6103c0c3f44b04549e9f555425",key:"d35a",state:"Published",createdAt:"2020-08-10T17:48:34.173Z",sageScore:6,diffs:[{njs:10,offset:1,notes:177,bombs:0,obstacles:30,nps:.982,length:360.5,characteristic:"Standard",difficulty:"Easy",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.25,paritySummary:{errors:25,warns:8,resets:0}},{njs:11,offset:1,notes:302,bombs:0,obstacles:29,nps:1.675,length:360.5,characteristic:"Standard",difficulty:"Normal",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.25,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:.5,notes:422,bombs:0,obstacles:29,nps:2.335,length:361.5,characteristic:"Standard",difficulty:"Hard",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.75,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:668,bombs:0,obstacles:27,nps:3.696,length:361.5,characteristic:"Standard",difficulty:"Expert",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.75,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.5,notes:877,bombs:0,obstacles:28,nps:4.852,length:361.5,characteristic:"Standard",difficulty:"ExpertPlus",events:11459,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.75,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/dc259cc74cc52a6103c0c3f44b04549e9f555425.zip",coverURL:"https://cdn.beatsaver.com/dc259cc74cc52a6103c0c3f44b04549e9f555425.jpg",previewURL:"https://cdn.beatsaver.com/dc259cc74cc52a6103c0c3f44b04549e9f555425.mp3"}],createdAt:"2020-08-10T17:48:34.173Z",updatedAt:"2020-08-10T17:48:34.173Z",lastPublishedAt:"2020-08-10T17:48:34.173Z"},{id:"3969",name:"Lukas Graham - 7 Years",description:"Trying out something new here and seeing how well a slower song performs in beat saber. I decided not to map an easy for this one due to the songs length and naturally slow pacing. I'm interested to know what you think though. Do you think slow songs are good for beat saber? Should I do more? etc...\r\n\r\nTime spent mapping: 13:52\r\nVideo Preview: https://www.youtube.com/watch?v=2JB4fn1npwQ",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:235,songName:"7 Years",songSubName:"Lukas Graham",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:4425,upvotes:2415,downvotes:75,score:.9253},uploaded:"2019-02-24T17:19:02Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"11621a2effc185bf6ae4c7526c9db8cf435fd9b2",key:"3969",state:"Published",createdAt:"2019-02-24T17:19:02Z",sageScore:5,diffs:[{njs:10,offset:0,notes:374,bombs:0,obstacles:36,nps:1.645,length:454.75,characteristic:"Standard",difficulty:"Normal",events:1566,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:227.375,paritySummary:{errors:30,warns:19,resets:0}},{njs:11,offset:0,notes:626,bombs:0,obstacles:23,nps:2.753,length:454.75,characteristic:"Standard",difficulty:"Hard",events:1566,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:227.375,paritySummary:{errors:41,warns:49,resets:0}},{njs:14,offset:0,notes:756,bombs:0,obstacles:23,nps:3.325,length:454.75,characteristic:"Standard",difficulty:"Expert",events:1566,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:227.375,paritySummary:{errors:42,warns:55,resets:0}}],downloadURL:"https://cdn.beatsaver.com/11621a2effc185bf6ae4c7526c9db8cf435fd9b2.zip",coverURL:"https://cdn.beatsaver.com/11621a2effc185bf6ae4c7526c9db8cf435fd9b2.jpg",previewURL:"https://cdn.beatsaver.com/11621a2effc185bf6ae4c7526c9db8cf435fd9b2.mp3"}],createdAt:"2019-02-24T17:19:02Z",updatedAt:"2019-02-24T17:19:02Z",lastPublishedAt:"2019-02-24T17:19:02Z"},{id:"157",name:"Seagulls!(Stop it Now)",description:"Normal/Hard/Expert (though overall they should all be fairly easy) Thought this would be a fun, lighthearted song to do. Song by Bad Lip Reading. (as sung by Yoda Luke and R2...kind of)",uploader:{id:53109,name:"paynter3d",uniqueSet:!0,hash:"5cff0b7298cc5a672c84eb80",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84eb80?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:192,songName:"Seagulls!",songSubName:"(Stop It Now)",songAuthorName:"Bad Lip Reading",levelAuthorName:"paynter3d"},stats:{plays:0,downloads:2917,upvotes:1985,downvotes:55,score:.9253},uploaded:"2018-05-20T20:57:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"055e8f8f8fabefcf12bbb6c50e2f78d666d619bf",key:"157",state:"Published",createdAt:"2018-05-20T20:57:46Z",sageScore:3,diffs:[{njs:10,offset:0,notes:383,bombs:0,obstacles:37,nps:2.037,length:376,characteristic:"Standard",difficulty:"Normal",events:622,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188,paritySummary:{errors:95,warns:61,resets:0}},{njs:10,offset:0,notes:460,bombs:0,obstacles:37,nps:2.447,length:376,characteristic:"Standard",difficulty:"Hard",events:622,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188,paritySummary:{errors:116,warns:58,resets:0}},{njs:10,offset:0,notes:628,bombs:64,obstacles:37,nps:3.34,length:376,characteristic:"Standard",difficulty:"Expert",events:626,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188,paritySummary:{errors:86,warns:105,resets:0}}],downloadURL:"https://cdn.beatsaver.com/055e8f8f8fabefcf12bbb6c50e2f78d666d619bf.zip",coverURL:"https://cdn.beatsaver.com/055e8f8f8fabefcf12bbb6c50e2f78d666d619bf.jpg",previewURL:"https://cdn.beatsaver.com/055e8f8f8fabefcf12bbb6c50e2f78d666d619bf.mp3"}],createdAt:"2018-05-20T20:57:46Z",updatedAt:"2018-05-20T20:57:46Z",lastPublishedAt:"2018-05-20T20:57:46Z"},{id:"1a0b9",name:"[Electro Swing Pack] Caravan Palace - Lone Digger",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/DF_ZrKY3LfY\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:124,duration:171,songName:"Lone Digger",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:19552,upvotes:1165,downvotes:21,score:.925},uploaded:"2021-07-08T15:25:28.524Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f89d7a02f16dbbe3c957fd56e35844ab7f23f532",key:"1a0b9",state:"Published",createdAt:"2021-07-08T15:25:28.524Z",sageScore:5,diffs:[{njs:16,offset:-.25,notes:434,bombs:0,obstacles:0,nps:2.611,length:343.5,characteristic:"Standard",difficulty:"Expert",events:1448,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.21,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:891,bombs:0,obstacles:4,nps:5.299,length:347.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1448,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.145,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f89d7a02f16dbbe3c957fd56e35844ab7f23f532.zip",coverURL:"https://cdn.beatsaver.com/f89d7a02f16dbbe3c957fd56e35844ab7f23f532.jpg",previewURL:"https://cdn.beatsaver.com/f89d7a02f16dbbe3c957fd56e35844ab7f23f532.mp3"}],createdAt:"2021-07-08T15:25:28.524Z",updatedAt:"2021-07-08T15:25:28.524Z",lastPublishedAt:"2021-07-08T15:25:28.524Z"},{id:"5d24",name:"[Anniversary] Face My Fears - Hikaru Utadu & Skrillex [BennyDaBeast]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:212,songName:"Face My Fears",songSubName:"",songAuthorName:"Hikaru Utada & Skrillex",levelAuthorName:"BennyDaBeast"},stats:{plays:0,downloads:4932,upvotes:2031,downvotes:58,score:.925},uploaded:"2019-08-16T01:48:04.848Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"460fcbe6916bd64eb31ff65a03e4d46d4773e31c",key:"5d24",state:"Published",createdAt:"2019-08-16T01:48:04.848Z",sageScore:8,diffs:[{njs:10,offset:0,notes:390,bombs:0,obstacles:0,nps:1.912,length:544,characteristic:"Standard",difficulty:"Easy",events:2297,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:85,warns:29,resets:0}},{njs:10,offset:0,notes:455,bombs:0,obstacles:0,nps:2.23,length:544,characteristic:"Standard",difficulty:"Normal",events:2297,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:80,warns:29,resets:0}},{njs:12,offset:-1,notes:567,bombs:0,obstacles:0,nps:2.779,length:544,characteristic:"Standard",difficulty:"Hard",events:2298,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:88,warns:36,resets:0}},{njs:12,offset:-1,notes:776,bombs:0,obstacles:0,nps:3.804,length:544,characteristic:"Standard",difficulty:"Expert",events:2297,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:105,warns:60,resets:0}},{njs:15,offset:.4,notes:921,bombs:0,obstacles:0,nps:4.515,length:544,characteristic:"Standard",difficulty:"ExpertPlus",events:2297,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204,paritySummary:{errors:102,warns:83,resets:0}}],downloadURL:"https://cdn.beatsaver.com/460fcbe6916bd64eb31ff65a03e4d46d4773e31c.zip",coverURL:"https://cdn.beatsaver.com/460fcbe6916bd64eb31ff65a03e4d46d4773e31c.jpg",previewURL:"https://cdn.beatsaver.com/460fcbe6916bd64eb31ff65a03e4d46d4773e31c.mp3"}],createdAt:"2019-08-16T01:48:04.848Z",updatedAt:"2019-08-16T01:48:04.848Z",lastPublishedAt:"2019-08-16T01:48:04.848Z"},{id:"269f",name:"Amusement Park - Keigo Hoashi [NieR: Automata]",description:"Expert Gameplay: https://www.youtube.com/watch?v=gOeGoxKR7fI&feature=youtu.be\r\nExpert and Expert+ are very similar, though Expert+ is a tad harder.\r\n\r\nSong by Keigo Hoashi as NieR:Automata OST",uploader:{id:4286005,name:"mandynasty",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ffaa",avatar:"https://cdn.beatsaver.com/avatar/307589087030673408.png",type:"DISCORD"},metadata:{bpm:120,duration:266,songName:"Amusement Park",songSubName:"Keigo Hoashi",songAuthorName:"ManDynasty",levelAuthorName:"ManDynasty"},stats:{plays:0,downloads:3394,upvotes:1832,downvotes:49,score:.925},uploaded:"2018-12-18T15:57:22Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"00151f9ef33d55245bb7cfc9756e223b7183ff65",key:"269f",state:"Published",createdAt:"2018-12-18T15:57:22Z",sageScore:2,diffs:[{njs:9,offset:0,notes:396,bombs:0,obstacles:242,nps:1.571,length:504,characteristic:"Standard",difficulty:"Normal",events:1606,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252,paritySummary:{errors:74,warns:23,resets:0}},{njs:10,offset:0,notes:528,bombs:0,obstacles:272,nps:2.095,length:504,characteristic:"Standard",difficulty:"Hard",events:1606,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252,paritySummary:{errors:42,warns:49,resets:0}},{njs:14,offset:0,notes:888,bombs:0,obstacles:102,nps:3.524,length:504,characteristic:"Standard",difficulty:"Expert",events:1606,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252,paritySummary:{errors:86,warns:77,resets:0}},{njs:14,offset:0,notes:931,bombs:0,obstacles:118,nps:3.588,length:519,characteristic:"Standard",difficulty:"ExpertPlus",events:1606,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.5,paritySummary:{errors:69,warns:56,resets:0}}],downloadURL:"https://cdn.beatsaver.com/00151f9ef33d55245bb7cfc9756e223b7183ff65.zip",coverURL:"https://cdn.beatsaver.com/00151f9ef33d55245bb7cfc9756e223b7183ff65.jpg",previewURL:"https://cdn.beatsaver.com/00151f9ef33d55245bb7cfc9756e223b7183ff65.mp3"}],createdAt:"2018-12-18T15:57:22Z",updatedAt:"2018-12-18T15:57:22Z",lastPublishedAt:"2018-12-18T15:57:22Z"},{id:"6ace",name:"Flower Dance - DJ Okawari",description:"There it is!!!! Hope you all enjoy this <3 \nCollabed with kuritsadbs on this map as he worked on the lights and he did amazing job on them! \nI might make 1 saber mode later on if i see that many liked this one :D\nCheck the map here: https://www.youtube.com/watch?v=vTPssZ0rKyI&feature=youtu.be",uploader:{id:1708,name:"layanmeta",uniqueSet:!0,hash:"5cff0b7698cc5a672c8539a1",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8539a1?d=retro",type:"SIMPLE"},metadata:{bpm:200,duration:238,songName:" Flower Dance",songSubName:"",songAuthorName:"DJ Okawari",levelAuthorName:"Layanmeta w/ KuritsaDBS"},stats:{plays:0,downloads:2467,upvotes:1257,downvotes:25,score:.9248},uploaded:"2019-10-19T17:05:33.835Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5d4b7dfbc7370400f54f02b76568bacd8497b3e9",key:"6ace",state:"Published",createdAt:"2019-10-19T17:05:33.835Z",sageScore:8,diffs:[{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:2030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:.4,notes:1225,bombs:0,obstacles:70,nps:5.206,length:784.375,characteristic:"Standard",difficulty:"ExpertPlus",events:2030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:235.313,paritySummary:{errors:12,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5d4b7dfbc7370400f54f02b76568bacd8497b3e9.zip",coverURL:"https://cdn.beatsaver.com/5d4b7dfbc7370400f54f02b76568bacd8497b3e9.jpg",previewURL:"https://cdn.beatsaver.com/5d4b7dfbc7370400f54f02b76568bacd8497b3e9.mp3"}],createdAt:"2019-10-19T17:05:33.835Z",updatedAt:"2019-10-19T17:05:33.835Z",lastPublishedAt:"2019-10-19T17:05:33.835Z"},{id:"e7cd",name:"[NoodleGames Vol.2] Last Surprise - Persona 5",description:"The Ramen Noodle group is back again to bring you a map pack full of our favorite video game soundtracks and game-inspired music!\n\nHere's one of my 4 Persona maps for the pack! Hope you enjoy.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:210,songName:"Last Surprise",songSubName:"",songAuthorName:"Shoji Meguro",levelAuthorName:"Ab"},stats:{plays:0,downloads:5978,upvotes:1048,downvotes:17,score:.9247},uploaded:"2020-09-10T19:19:34.152Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b5e4c4a65fa8c55a4c5a2b1d7681c31f301d5449",key:"e7cd",state:"Published",createdAt:"2020-09-10T19:19:34.152Z",sageScore:2,diffs:[{njs:13,offset:0,notes:650,bombs:0,obstacles:2,nps:3.173,length:420,characteristic:"Standard",difficulty:"Hard",events:3292,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:204.878,paritySummary:{errors:12,warns:8,resets:0}},{njs:17,offset:-.2,notes:861,bombs:0,obstacles:0,nps:4.203,length:420,characteristic:"Standard",difficulty:"Expert",events:3292,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.878,paritySummary:{errors:8,warns:9,resets:0}},{njs:18,offset:-.2,notes:983,bombs:0,obstacles:7,nps:4.798,length:420,characteristic:"Standard",difficulty:"ExpertPlus",events:3250,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:204.878,paritySummary:{errors:8,warns:8,resets:0}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:3249,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b5e4c4a65fa8c55a4c5a2b1d7681c31f301d5449.zip",coverURL:"https://cdn.beatsaver.com/b5e4c4a65fa8c55a4c5a2b1d7681c31f301d5449.jpg",previewURL:"https://cdn.beatsaver.com/b5e4c4a65fa8c55a4c5a2b1d7681c31f301d5449.mp3"}],createdAt:"2020-09-10T19:19:34.152Z",updatedAt:"2020-09-10T19:19:34.152Z",lastPublishedAt:"2020-09-10T19:19:34.152Z"},{id:"1a0b8",name:"[Electro Swing Pack] Wolfgang Lohr & The Swinghoppers - Party Like It's 1920",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/ye22W_xrXnk\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:120,duration:187,songName:"Party Like It's 1920",songSubName:"",songAuthorName:"The Swinghoppers & Wolfgang Lohr",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:13163,upvotes:670,downvotes:4,score:.9246},uploaded:"2021-07-08T15:25:28.451Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"973bab980b568e41b0a17a772e61377b01ef85ec",key:"1a0b8",state:"Published",createdAt:"2021-07-08T15:25:28.451Z",sageScore:4,diffs:[{njs:16,offset:-.5,notes:556,bombs:0,obstacles:0,nps:3.063,length:363,characteristic:"Standard",difficulty:"Expert",events:2057,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:850,bombs:0,obstacles:0,nps:4.683,length:363,characteristic:"Standard",difficulty:"ExpertPlus",events:2057,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/973bab980b568e41b0a17a772e61377b01ef85ec.zip",coverURL:"https://cdn.beatsaver.com/973bab980b568e41b0a17a772e61377b01ef85ec.jpg",previewURL:"https://cdn.beatsaver.com/973bab980b568e41b0a17a772e61377b01ef85ec.mp3"}],createdAt:"2021-07-08T15:25:28.451Z",updatedAt:"2021-07-08T15:25:28.451Z",lastPublishedAt:"2021-07-08T15:25:28.451Z"},{id:"d60d",name:"[FUTURE FUNK PACK] Tokyo Chopp ft. Shiki​(​TMNS​)​ (Moe Shop Remix)",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\nThese last two Moe Shop songs brings a fresh spin on the Future Funk genre! This song is a Moe Shop remix of Hentai Dude\'s "Tokyo Chopp" and Tomoko Aran\'s "Midnight Pretenders" (1983.)\n\nThank you for playing! I hope you enjoyed the map pack!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:117,duration:188,songName:"Tokyo Chopp ft. Shiki​(​TMNS​)​",songSubName:"(Moe Shop Remix)",songAuthorName:"Hentai Dude",levelAuthorName:"ETAN"},stats:{plays:0,downloads:6396,upvotes:1072,downvotes:18,score:.9246},uploaded:"2020-08-14T18:31:11.526Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c82dfb89e2e5beb11c57c1d311e801f7d5dac978",key:"d60d",state:"Published",createdAt:"2020-08-14T18:31:11.526Z",sageScore:7,diffs:[{njs:10,offset:1.5,notes:155,bombs:0,obstacles:8,nps:.856,length:353,characteristic:"Standard",difficulty:"Easy",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.026,paritySummary:{errors:29,warns:0,resets:0}},{njs:10,offset:1,notes:291,bombs:0,obstacles:8,nps:1.608,length:353,characteristic:"Standard",difficulty:"Normal",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.026,paritySummary:{errors:3,warns:0,resets:0}},{njs:12,offset:.5,notes:377,bombs:0,obstacles:7,nps:2.056,length:357.5,characteristic:"Standard",difficulty:"Hard",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.333,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:565,bombs:0,obstacles:7,nps:3.082,length:357.5,characteristic:"Standard",difficulty:"Expert",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.333,paritySummary:{errors:1,warns:0,resets:0}},{njs:17,offset:-.5,notes:765,bombs:0,obstacles:7,nps:4.173,length:357.5,characteristic:"Standard",difficulty:"ExpertPlus",events:7757,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.333,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c82dfb89e2e5beb11c57c1d311e801f7d5dac978.zip",coverURL:"https://cdn.beatsaver.com/c82dfb89e2e5beb11c57c1d311e801f7d5dac978.jpg",previewURL:"https://cdn.beatsaver.com/c82dfb89e2e5beb11c57c1d311e801f7d5dac978.mp3"}],createdAt:"2020-08-14T18:31:11.526Z",updatedAt:"2020-08-14T18:31:11.526Z",lastPublishedAt:"2020-08-14T18:31:11.526Z"},{id:"41e4",name:"Meant to Live - Switchfoot",description:"Easy, Normal, and Hard are all relatively easy, even for OST standards. Expert might have some tricky patterns, but the NPS is still well within OST standards so should still be manageable.\n\nhttps://youtu.be/zEK_j3aqn4g\n\nSo for my first song with fully English vocals, here's a classic from the early 2000's that you completely forgot about. I was actually sitting on this map for a while but decided to release it because I wanted a bit of variety.\n\nFollow me on Twitter u won't\nhttps://twitter.com/aggrogahu",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:150,duration:200,songName:"Meant to Live",songSubName:"Switchfoot",songAuthorName:"aggrogahu",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:3605,upvotes:937,downvotes:13,score:.9246},uploaded:"2019-03-30T02:30:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d6675f644e47f84789a0376a746a2514e8e7b7ff",key:"41e4",state:"Published",createdAt:"2019-03-30T02:30:46Z",diffs:[{njs:10,offset:0,notes:155,bombs:0,obstacles:11,nps:.859,length:451.3,characteristic:"Standard",difficulty:"Easy",events:576,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.52,paritySummary:{errors:45,warns:4,resets:0}},{njs:11,offset:0,notes:262,bombs:0,obstacles:11,nps:1.451,length:451.3,characteristic:"Standard",difficulty:"Normal",events:576,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.52,paritySummary:{errors:60,warns:13,resets:0}},{njs:10,offset:0,notes:408,bombs:0,obstacles:46,nps:2.26,length:451.3,characteristic:"Standard",difficulty:"Hard",events:576,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.52,paritySummary:{errors:50,warns:29,resets:0}},{njs:12,offset:0,notes:630,bombs:0,obstacles:53,nps:3.49,length:451.3,characteristic:"Standard",difficulty:"Expert",events:576,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.52,paritySummary:{errors:41,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d6675f644e47f84789a0376a746a2514e8e7b7ff.zip",coverURL:"https://cdn.beatsaver.com/d6675f644e47f84789a0376a746a2514e8e7b7ff.jpg",previewURL:"https://cdn.beatsaver.com/d6675f644e47f84789a0376a746a2514e8e7b7ff.mp3"}],createdAt:"2019-03-30T02:30:46Z",updatedAt:"2019-03-30T02:30:46Z",lastPublishedAt:"2019-03-30T02:30:46Z"},{id:"7c0b",name:"[Bloq Busters Vol. 2] Au5 & Fractal - Smoke",description:"Expert+ Preview: https://www.youtube.com/watch?v=_mJXl15vv1c\n\nA sick song from their Secret Weapon EP! I hope I did it justice with this mapping.\n\nThis map is part of the Bloq Busters Vol. 2: Melodic Dubstep map pack comprised of maps from several mappers featuring artists such as Seven Lions, Jason Ross, Au5, Warriyo, and more! Grab it here: https://bsaber.com/bloq-busters-vol-2-melodic-dubstep/\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725!",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:128,duration:302,songName:"Smoke",songSubName:"",songAuthorName:"Au5 & Fractal",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:2132,upvotes:701,downvotes:5,score:.9245},uploaded:"2020-01-03T22:50:59.278Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0bc6562a0bde3a933d656a514c67eeec88a315df",key:"7c0b",state:"Published",createdAt:"2020-01-03T22:50:59.278Z",sageScore:4,diffs:[{njs:12,offset:.6,notes:687,bombs:0,obstacles:245,nps:2.351,length:623.5,characteristic:"Standard",difficulty:"Hard",events:4233,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.266,paritySummary:{errors:2,warns:2,resets:0}},{njs:16,offset:-.1,notes:1074,bombs:0,obstacles:135,nps:3.675,length:623.5,characteristic:"Standard",difficulty:"Expert",events:4233,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.266,paritySummary:{errors:3,warns:3,resets:0}},{njs:20,offset:.6,notes:1188,bombs:0,obstacles:122,nps:4.065,length:623.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4227,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.266,paritySummary:{errors:1,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0bc6562a0bde3a933d656a514c67eeec88a315df.zip",coverURL:"https://cdn.beatsaver.com/0bc6562a0bde3a933d656a514c67eeec88a315df.jpg",previewURL:"https://cdn.beatsaver.com/0bc6562a0bde3a933d656a514c67eeec88a315df.mp3"}],createdAt:"2020-01-03T22:50:59.278Z",updatedAt:"2020-01-03T22:50:59.278Z",lastPublishedAt:"2020-01-03T22:50:59.278Z"},{id:"5e05",name:"Dire Straits - Money For Nothing",description:"",uploader:{id:4285018,name:"majorpickle",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f792",avatar:"https://cdn.beatsaver.com/avatar/450358937657671680.png",type:"DISCORD"},metadata:{bpm:136,duration:243,songName:"Money For Nothing",songSubName:"",songAuthorName:"Dire Straits",levelAuthorName:"Majorpickle"},stats:{plays:0,downloads:2691,upvotes:1068,downvotes:18,score:.9245},uploaded:"2019-08-20T03:07:14.232Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b81b682921b291b731111f9a29d7bf9353ff1365",key:"5e05",state:"Published",createdAt:"2019-08-20T03:07:14.232Z",sageScore:6,diffs:[{njs:12,offset:0,notes:851,bombs:0,obstacles:60,nps:3.8,length:507.656,characteristic:"Standard",difficulty:"Expert",events:2256,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.966,paritySummary:{errors:39,warns:30,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b81b682921b291b731111f9a29d7bf9353ff1365.zip",coverURL:"https://cdn.beatsaver.com/b81b682921b291b731111f9a29d7bf9353ff1365.jpg",previewURL:"https://cdn.beatsaver.com/b81b682921b291b731111f9a29d7bf9353ff1365.mp3"}],createdAt:"2019-08-20T03:07:14.232Z",updatedAt:"2019-08-20T03:07:14.232Z",lastPublishedAt:"2019-08-20T03:07:14.232Z"},{id:"a83b",name:"BAD APPLE!! [Punk Goes Pop Vol.2] - RichaadEB ft. Cristina Vee",description:"BAD APPLE!! is a metal cover by RichaadEB featuring voice actor and singer, Cristina Vee. This song was originally composed by Jun'ya Ota & Masayoshi Minoshima with vocals by Nomico.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:138,duration:301,songName:"BAD APPLE!!",songSubName:"ft. Cristina Vee",songAuthorName:"RichaadEB",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:5636,upvotes:1476,downvotes:35,score:.9242},uploaded:"2020-05-20T07:20:11.426Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"57d1004ac047bd554080c5bfdd6908743ebb9fd2",key:"a83b",state:"Published",createdAt:"2020-05-20T07:20:11.426Z",sageScore:3,diffs:[{njs:16,offset:0,notes:1649,bombs:0,obstacles:78,nps:5.644,length:672,characteristic:"Standard",difficulty:"ExpertPlus",events:9915,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.174,paritySummary:{errors:8,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/57d1004ac047bd554080c5bfdd6908743ebb9fd2.zip",coverURL:"https://cdn.beatsaver.com/57d1004ac047bd554080c5bfdd6908743ebb9fd2.jpg",previewURL:"https://cdn.beatsaver.com/57d1004ac047bd554080c5bfdd6908743ebb9fd2.mp3"}],createdAt:"2020-05-20T07:20:11.426Z",updatedAt:"2020-05-20T07:20:11.426Z",lastPublishedAt:"2020-05-20T07:20:11.426Z"},{id:"8b81",name:"Stonebank - To The Top",description:"https://www.youtube.com/watch?v=2DwhNw_pGrg",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:187,songName:"To The Top",songSubName:"",songAuthorName:"Stonebank",levelAuthorName:"Rustic"},stats:{plays:0,downloads:1287,upvotes:897,downvotes:12,score:.9242},uploaded:"2020-02-28T15:53:21.930Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7afc56e020bb12f1e91dc99b1107df830299cc98",key:"8b81",state:"Published",createdAt:"2020-02-28T15:53:21.930Z",sageScore:5,diffs:[{njs:20,offset:1,notes:491,bombs:0,obstacles:2922,nps:2.942,length:356,characteristic:"Standard",difficulty:"Expert",events:5581,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:166.875,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7afc56e020bb12f1e91dc99b1107df830299cc98.zip",coverURL:"https://cdn.beatsaver.com/7afc56e020bb12f1e91dc99b1107df830299cc98.jpg",previewURL:"https://cdn.beatsaver.com/7afc56e020bb12f1e91dc99b1107df830299cc98.mp3"}],createdAt:"2020-02-28T15:53:21.930Z",updatedAt:"2020-02-28T15:53:21.930Z",lastPublishedAt:"2020-02-28T15:53:21.930Z"},{id:"1c00",name:"Chop Suey - System of a Down",description:"4th map. Special thanks to Kolezan for doing the lighting and helping me out with the audio on this one. He did a great job. Also thanks to Crankor, TurtleSquared, and all my other play testers for multiple play tests and a lot of good feedback. Also this map would not have been possible without squeaksies' MediocreMapper!\nTIPS:\n\n(Expert/Expert+) In the final flow pattern in the last slow section of the song, the corner crouch is meant to make you do a sort of side lunge with that lunging side's saber swinging out wide behind you for balance. I have found that to be the smoothest flow, though it's not technically necessary.\n\n(Expert+ only) The \"climax\" point of each pattern in the ending flow is made to be an optional behind-the-back cross slash. You'll know it by the dotted cubes in that section. The backslash hand hits the dotted cubes. This move is fun but may take some practice to get down. (Hint: keep your eye on the top diagonal cube.)\n\nSwing those arms for the big hits.\n\nhttps://youtu.be/6NJh98lDJVo",uploader:{id:27595,name:"baxter395",uniqueSet:!0,hash:"5cff0b7598cc5a672c852f7b",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c852f7b?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:204,songName:"Chop Suey",songSubName:"System of a Down",songAuthorName:"baxter395",levelAuthorName:"baxter395"},stats:{plays:0,downloads:12175,upvotes:8010,downvotes:385,score:.9242},uploaded:"2018-10-25T00:30:35Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1b6f9e844d81ff0f6ee6feed62331a3d229be2e8",key:"1c00",state:"Published",createdAt:"2018-10-25T00:30:35Z",sageScore:-2,diffs:[{njs:10,offset:0,notes:497,bombs:0,obstacles:11,nps:2.601,length:404.463,characteristic:"Standard",difficulty:"Normal",events:1156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.085,paritySummary:{errors:75,warns:56,resets:0}},{njs:11,offset:0,notes:687,bombs:0,obstacles:34,nps:3.595,length:404.463,characteristic:"Standard",difficulty:"Hard",events:1156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.085,paritySummary:{errors:57,warns:89,resets:0}},{njs:12,offset:0,notes:804,bombs:0,obstacles:62,nps:4.208,length:404.463,characteristic:"Standard",difficulty:"Expert",events:1156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.085,paritySummary:{errors:64,warns:100,resets:0}},{njs:13,offset:0,notes:842,bombs:0,obstacles:54,nps:4.406,length:404.463,characteristic:"Standard",difficulty:"ExpertPlus",events:1156,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.085,paritySummary:{errors:58,warns:110,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1b6f9e844d81ff0f6ee6feed62331a3d229be2e8.zip",coverURL:"https://cdn.beatsaver.com/1b6f9e844d81ff0f6ee6feed62331a3d229be2e8.jpg",previewURL:"https://cdn.beatsaver.com/1b6f9e844d81ff0f6ee6feed62331a3d229be2e8.mp3"}],createdAt:"2018-10-25T00:30:35Z",updatedAt:"2018-10-25T00:30:35Z",lastPublishedAt:"2018-10-25T00:30:35Z"},{id:"b724",name:"Falling - Dropgun x Asketa & Natan Chaim",description:"reupload #1 - improved the difficulty spread to not have an extreme jump between the Expert and Expert+ slot\n\nOnly some of the lower diffs changed on here, the E+ slot (Rising) is still the same as I got very positive feedback on that diff which I'm very happy about <3\nThe diff spread should be better now, so it is hopefully more enjoyable for all skill levels whenever it gets ranked.\n\noriginal description:\nhaha lyrics go brrrr\njust a little bit though\n\nalso I lighted manually which I haven't done for an eternity, hope you don't go blind or something\n\nbig thank you to Skeelie for modding this :)\n\nTeuflum#5982 for any feedback on discord.",uploader:{id:68740,name:"Teuflum",uniqueSet:!0,hash:"5cff0b7498cc5a672c851a6b",avatar:"https://cdn.beatsaver.com/avatar/114706869460664326.png",type:"DISCORD"},metadata:{bpm:126,duration:194,songName:"Falling",songSubName:"",songAuthorName:"Dropgun x Asketa & Natan Chaim",levelAuthorName:"Teuflum"},stats:{plays:0,downloads:8962,upvotes:3035,downvotes:109,score:.9241},uploaded:"2020-06-28T11:22:49.373Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2dddd6672560cb2c1d4c689ff31b5ea58ef1641e",key:"b724",state:"Published",createdAt:"2020-06-28T11:22:49.373Z",sageScore:7,diffs:[{njs:12,offset:.5,notes:454,bombs:0,obstacles:65,nps:2.432,length:392,characteristic:"Standard",difficulty:"Easy",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:12,warns:2,resets:0},stars:1.35},{njs:14,offset:0,notes:672,bombs:12,obstacles:65,nps:3.6,length:392,characteristic:"Standard",difficulty:"Normal",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:0,warns:0,resets:4},stars:2.28},{njs:17,offset:-.4,notes:973,bombs:20,obstacles:65,nps:5.213,length:392,characteristic:"Standard",difficulty:"Hard",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:0,warns:0,resets:2},stars:4.51},{njs:20,offset:.325,notes:1297,bombs:16,obstacles:39,nps:6.948,length:392,characteristic:"Standard",difficulty:"Expert",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:0,warns:0,resets:2},stars:5.65},{njs:22,offset:.1,notes:1483,bombs:16,obstacles:39,nps:7.945,length:392,characteristic:"Standard",difficulty:"ExpertPlus",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.667,paritySummary:{errors:2,warns:0,resets:4},stars:7.83},{njs:69,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:9228,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2dddd6672560cb2c1d4c689ff31b5ea58ef1641e.zip",coverURL:"https://cdn.beatsaver.com/2dddd6672560cb2c1d4c689ff31b5ea58ef1641e.jpg",previewURL:"https://cdn.beatsaver.com/2dddd6672560cb2c1d4c689ff31b5ea58ef1641e.mp3"}],createdAt:"2020-06-28T11:22:49.373Z",updatedAt:"2021-09-20T15:01:27.178739Z",lastPublishedAt:"2020-06-28T11:22:49.373Z"},{id:"7e92",name:"Adventure of a Lifetime - Coldplay",description:"This song is one that i really love. Even though its different from most of the maps i posted so far, i still mapped it anyway because i like it.\n\nAll difficulties included, Expert+ is sort of on the lower end of expert+ maps.\n\nThanks to Helen Carnate, Sorukun, and Kolezan for helping me playtest the map! \n\nHave fun going on the Adventure of a Lifetime!",uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:112,duration:264,songName:"Adventure of a Lifetime",songSubName:"",songAuthorName:"Coldplay",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:4599,upvotes:1352,downvotes:30,score:.9241},uploaded:"2020-01-15T05:33:28.055Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cbfe28de7f63634096dd8ef34648753147f3f65d",key:"7e92",state:"Published",createdAt:"2020-01-15T05:33:28.055Z",sageScore:6,diffs:[{njs:10,offset:1,notes:301,bombs:0,obstacles:45,nps:1.232,length:456,characteristic:"Standard",difficulty:"Easy",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.286,paritySummary:{errors:61,warns:34,resets:0}},{njs:10,offset:1,notes:467,bombs:0,obstacles:48,nps:1.91,length:456.5,characteristic:"Standard",difficulty:"Normal",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.554,paritySummary:{errors:65,warns:20,resets:0}},{njs:12,offset:.5,notes:691,bombs:0,obstacles:41,nps:2.826,length:456.5,characteristic:"Standard",difficulty:"Hard",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.554,paritySummary:{errors:14,warns:10,resets:0}},{njs:15,offset:0,notes:1069,bombs:0,obstacles:42,nps:4.241,length:470.5,characteristic:"Standard",difficulty:"Expert",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252.054,paritySummary:{errors:4,warns:4,resets:0}},{njs:16,offset:-.25,notes:1199,bombs:0,obstacles:18,nps:4.752,length:471,characteristic:"Standard",difficulty:"ExpertPlus",events:4100,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:252.321,paritySummary:{errors:5,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cbfe28de7f63634096dd8ef34648753147f3f65d.zip",coverURL:"https://cdn.beatsaver.com/cbfe28de7f63634096dd8ef34648753147f3f65d.jpg",previewURL:"https://cdn.beatsaver.com/cbfe28de7f63634096dd8ef34648753147f3f65d.mp3"}],createdAt:"2020-01-15T05:33:28.055Z",updatedAt:"2020-01-15T05:33:28.055Z",lastPublishedAt:"2020-01-15T05:33:28.055Z"},{id:"6ed4",name:"Sayuri - Koukai no Uta [Boku no Hero Academia Ending 6]",description:"sayuri slaps\nmainstream anime mapper AYAYA\n\nBPM 180 | Length 1:54\nExpert+\nExpert\nHard\n\nThanks Monteblanco for testplaying\n\nhf\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:180,duration:115,songName:"Koukai no Uta",songSubName:"",songAuthorName:"Sayuri",levelAuthorName:"ETAN"},stats:{plays:0,downloads:11086,upvotes:1208,downvotes:24,score:.9241},uploaded:"2019-11-08T22:57:13.632Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"108f939f6a5a2c2f02e4e1e7c9a9bf46345681a4",key:"6ed4",state:"Published",createdAt:"2019-11-08T22:57:13.632Z",sageScore:5,diffs:[{njs:13,offset:0,notes:250,bombs:0,obstacles:0,nps:2.262,length:331.5,characteristic:"Standard",difficulty:"Hard",events:5351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:110.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:.5,notes:365,bombs:0,obstacles:0,nps:3.303,length:331.5,characteristic:"Standard",difficulty:"Expert",events:5351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:110.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:.25,notes:518,bombs:0,obstacles:0,nps:4.688,length:331.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5351,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:110.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/108f939f6a5a2c2f02e4e1e7c9a9bf46345681a4.zip",coverURL:"https://cdn.beatsaver.com/108f939f6a5a2c2f02e4e1e7c9a9bf46345681a4.jpg",previewURL:"https://cdn.beatsaver.com/108f939f6a5a2c2f02e4e1e7c9a9bf46345681a4.mp3"}],createdAt:"2019-11-08T22:57:13.632Z",updatedAt:"2019-11-08T22:57:13.632Z",lastPublishedAt:"2019-11-08T22:57:13.632Z"},{id:"587c",name:"Cracks (Flux Pavilion Remix)",description:"*reuploaded due to an error with the Lightshow Difficulty and Beatsaver*\n\nAnother collab! This one is meant to be more geared towards playability, (and possibly even rankability) so I hope you like it.\n\nIt also has Chroma lighting courtesy of Aeroluna. He's awesome for doing the lights, go check out his stuff too!\n\nCracks (Flux Pavilion Remix) - Belle Humble, Freestylers | 140 BPM | Hard, Expert, Expert+ | Fully Mapped with Chroma Lighting by Aeroluna\n\nHere's a video of the lights with Chroma on: https://youtu.be/iwFcR5YmYwg",uploader:{id:17131,name:"tranquillizeme",uniqueSet:!0,hash:"5cff0b7798cc5a672c85609e",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c85609e?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:143,songName:"Cracks",songSubName:"(Flux Pavilion Remix)",songAuthorName:"Various Artists",levelAuthorName:"TranquillizeMe"},stats:{plays:0,downloads:1454,upvotes:1082,downvotes:19,score:.9241},uploaded:"2019-07-23T01:37:18.104Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"51835f468381d630b48c36da70d2c2ce700bb274",key:"587c",state:"Published",createdAt:"2019-07-23T01:37:18.104Z",sageScore:6,diffs:[{njs:13,offset:1,notes:364,bombs:224,obstacles:30,nps:2.705,length:314,characteristic:"Standard",difficulty:"Hard",events:11202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.571,paritySummary:{errors:18,warns:16,resets:0}},{njs:16,offset:0,notes:506,bombs:228,obstacles:14,nps:3.76,length:314,characteristic:"Standard",difficulty:"Expert",events:11202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.571,paritySummary:{errors:9,warns:8,resets:2}},{njs:18,offset:0,notes:778,bombs:52,obstacles:18,nps:5.781,length:314,characteristic:"Standard",difficulty:"ExpertPlus",events:11202,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.571,paritySummary:{errors:2,warns:0,resets:13}}],downloadURL:"https://cdn.beatsaver.com/51835f468381d630b48c36da70d2c2ce700bb274.zip",coverURL:"https://cdn.beatsaver.com/51835f468381d630b48c36da70d2c2ce700bb274.jpg",previewURL:"https://cdn.beatsaver.com/51835f468381d630b48c36da70d2c2ce700bb274.mp3"}],createdAt:"2019-07-23T01:37:18.104Z",updatedAt:"2019-07-23T01:37:18.104Z",lastPublishedAt:"2019-07-23T01:37:18.104Z"},{id:"d35b",name:"[FUTURE FUNK PACK] Remember Summer Days (MACROSS 82-99 Short Ver.)",description:"FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\nThese first two songs are originally sung by Anri, one of my favorite City Pop artist. \n\nThis version of Remember Summer Days is a short edit I made from MACROSS 82-99's bootleg version. The original song is waaay longer\n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:110,duration:171,songName:"Remember Summer Days",songSubName:"(MACROSS 82-99 Short Ver.)",songAuthorName:"Anri",levelAuthorName:"ETAN"},stats:{plays:0,downloads:4497,upvotes:775,downvotes:8,score:.9239},uploaded:"2020-08-10T17:48:45.792Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bb49a02cd1760f45d8c5104fc8881e61ab00b29f",key:"d35b",state:"Published",createdAt:"2020-08-10T17:48:45.792Z",sageScore:8,diffs:[{njs:10,offset:1,notes:154,bombs:0,obstacles:11,nps:.941,length:300.062,characteristic:"Standard",difficulty:"Easy",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.67,paritySummary:{errors:32,warns:2,resets:0}},{njs:10,offset:1,notes:220,bombs:0,obstacles:11,nps:1.344,length:300.062,characteristic:"Standard",difficulty:"Normal",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.67,paritySummary:{errors:2,warns:4,resets:0}},{njs:12,offset:.5,notes:417,bombs:0,obstacles:10,nps:2.506,length:305.125,characteristic:"Standard",difficulty:"Hard",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.432,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:593,bombs:0,obstacles:10,nps:3.563,length:305.125,characteristic:"Standard",difficulty:"Expert",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.432,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:.5,notes:752,bombs:0,obstacles:10,nps:4.518,length:305.125,characteristic:"Standard",difficulty:"ExpertPlus",events:3539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:166.432,paritySummary:{errors:0,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bb49a02cd1760f45d8c5104fc8881e61ab00b29f.zip",coverURL:"https://cdn.beatsaver.com/bb49a02cd1760f45d8c5104fc8881e61ab00b29f.jpg",previewURL:"https://cdn.beatsaver.com/bb49a02cd1760f45d8c5104fc8881e61ab00b29f.mp3"}],createdAt:"2020-08-10T17:48:45.792Z",updatedAt:"2020-08-10T17:48:45.792Z",lastPublishedAt:"2020-08-10T17:48:45.792Z"},{id:"5d1f",name:"Weight of the World (JVNA Remix) - NieR: Automata",description:"145 BPM - 4:27 Runtime\n\nStandard\nHard - 675 Notes\nExpert - 885 Notes\nExpert+ - 1169 Notes\n\nOne Saber\nExpert - 644 Notes\nExpert+ - 847 Notes\n\nLawless\nEnding E (unnerfed) - 2109 Walls\nEnding E - 1500 Walls\n\nGameplay: Coming soon",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:145,duration:268,songName:"Weight of the World",songSubName:"NieR:Automata",songAuthorName:"JVNA",levelAuthorName:"Skyler Wallace & Excession"},stats:{plays:0,downloads:4937,upvotes:2801,downvotes:98,score:.9239},uploaded:"2019-08-15T23:12:42.493Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6b4e0f6a698973ca55754d057b40463063ae59d8",key:"5d1f",state:"Published",createdAt:"2019-08-15T23:12:42.493Z",sageScore:6,diffs:[{njs:13,offset:1,notes:675,bombs:6,obstacles:45,nps:2.559,length:637.5,characteristic:"Standard",difficulty:"Hard",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:115,warns:44,resets:3}},{njs:15,offset:.25,notes:885,bombs:6,obstacles:49,nps:3.355,length:637.5,characteristic:"Standard",difficulty:"Expert",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:67,warns:39,resets:5}},{njs:17,offset:0,notes:1169,bombs:5,obstacles:58,nps:4.432,length:637.5,characteristic:"Standard",difficulty:"ExpertPlus",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:89,warns:78,resets:1}},{njs:13,offset:1,notes:644,bombs:6,obstacles:45,nps:2.441,length:637.5,characteristic:"OneSaber",difficulty:"Expert",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:41,warns:47,resets:3}},{njs:15,offset:.25,notes:847,bombs:6,obstacles:49,nps:3.211,length:637.5,characteristic:"OneSaber",difficulty:"ExpertPlus",events:12404,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:59,warns:71,resets:0}},{njs:17,offset:0,notes:1169,bombs:5,obstacles:2108,nps:4.432,length:637.5,characteristic:"Lawless",difficulty:"Expert",events:12404,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:89,warns:78,resets:1}},{njs:17,offset:0,notes:1169,bombs:5,obstacles:1500,nps:4.432,length:637.5,characteristic:"Lawless",difficulty:"ExpertPlus",events:12404,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:263.793,paritySummary:{errors:89,warns:78,resets:1}}],downloadURL:"https://cdn.beatsaver.com/6b4e0f6a698973ca55754d057b40463063ae59d8.zip",coverURL:"https://cdn.beatsaver.com/6b4e0f6a698973ca55754d057b40463063ae59d8.jpg",previewURL:"https://cdn.beatsaver.com/6b4e0f6a698973ca55754d057b40463063ae59d8.mp3"}],createdAt:"2019-08-15T23:12:42.493Z",updatedAt:"2019-08-15T23:12:42.493Z",lastPublishedAt:"2019-08-15T23:12:42.493Z"},{id:"14aa",name:"Dummy! - Undertale OST (Toby Fox)",description:"Decided to make an Undertale map, original song by Toby Fox.",uploader:{id:14891,name:"elijoria",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fbf5",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84fbf5?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:146,songName:"Dummy!",songSubName:"Undertale OST",songAuthorName:"Toby Fox (Mapped By Elijoria)",levelAuthorName:"Elijoria"},stats:{plays:0,downloads:3830,upvotes:2082,downvotes:63,score:.9239},uploaded:"2018-09-11T23:43:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b9d323fb01bfdd9ece0702256416b44ce1026ec6",key:"14aa",state:"Published",createdAt:"2018-09-11T23:43:18Z",sageScore:4,diffs:[{njs:10,offset:0,notes:374,bombs:0,obstacles:49,nps:2.589,length:301,characteristic:"Standard",difficulty:"Normal",events:684,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:144.48,paritySummary:{errors:102,warns:50,resets:0}},{njs:10,offset:0,notes:515,bombs:0,obstacles:53,nps:3.565,length:301,characteristic:"Standard",difficulty:"Hard",events:684,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:144.48,paritySummary:{errors:89,warns:64,resets:0}},{njs:10,offset:0,notes:610,bombs:26,obstacles:53,nps:4.223,length:301,characteristic:"Standard",difficulty:"Expert",events:684,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:144.48,paritySummary:{errors:88,warns:67,resets:4}}],downloadURL:"https://cdn.beatsaver.com/b9d323fb01bfdd9ece0702256416b44ce1026ec6.zip",coverURL:"https://cdn.beatsaver.com/b9d323fb01bfdd9ece0702256416b44ce1026ec6.jpg",previewURL:"https://cdn.beatsaver.com/b9d323fb01bfdd9ece0702256416b44ce1026ec6.mp3"}],createdAt:"2018-09-11T23:43:18Z",updatedAt:"2018-09-11T23:43:18Z",lastPublishedAt:"2018-09-11T23:43:18Z"},{id:"acf",name:"EC2 - Prototyperaptor - Still Waiting",description:"Expert / Hard\r\nPart of the Electric City 2 song pack\r\nhttps://youtu.be/uCekFFk_nWA?t=4m29s",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:286,songName:"EC2 - Still Waiting",songSubName:"Prototyperaptor",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:4651,upvotes:1935,downvotes:56,score:.9239},uploaded:"2018-07-20T22:07:52Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"32ae684f553e7fa90d1e5325bd54581c0afd37fa",key:"acf",state:"Published",createdAt:"2018-07-20T22:07:52Z",sageScore:5,diffs:[{njs:10,offset:0,notes:604,bombs:0,obstacles:19,nps:2.192,length:572,characteristic:"Standard",difficulty:"Hard",events:2545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:274.56,paritySummary:{errors:7,warns:33,resets:0},stars:1.18},{njs:11,offset:0,notes:902,bombs:0,obstacles:35,nps:3.274,length:572,characteristic:"Standard",difficulty:"Expert",events:2545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:274.56,paritySummary:{errors:19,warns:65,resets:0},stars:1.99}],downloadURL:"https://cdn.beatsaver.com/32ae684f553e7fa90d1e5325bd54581c0afd37fa.zip",coverURL:"https://cdn.beatsaver.com/32ae684f553e7fa90d1e5325bd54581c0afd37fa.jpg",previewURL:"https://cdn.beatsaver.com/32ae684f553e7fa90d1e5325bd54581c0afd37fa.mp3"}],createdAt:"2018-07-20T22:07:52Z",updatedAt:"2018-07-20T22:07:52Z",lastPublishedAt:"2018-07-20T22:07:52Z"},{id:"10842",name:"Technicolor - Madeon",description:"4th map by Canadian_Dragon in collaboration with Kry\r\nThis map is a friendly gift for a good friend of ours and has been map to their liking. Hope everyone else enjoys it aswell.\r\n\r\nRequires Chroma & Noodle Extension [Wall Map]",uploader:{id:4013,name:"canadian_dragon",uniqueSet:!0,hash:"5e0bb55364f9aa0006d6d0fa",avatar:"https://cdn.beatsaver.com/avatar/4013.jpg",type:"SIMPLE"},metadata:{bpm:127,duration:385,songName:"Technicolor",songSubName:"",songAuthorName:"Madeon",levelAuthorName:"Canadian_Dragon & Kry"},stats:{plays:0,downloads:1998,upvotes:682,downvotes:5,score:.9238},uploaded:"2020-11-02T01:52:46.653Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0488692d1d2fa080fe429ee15efc84da40bc78d2",key:"10842",state:"Published",createdAt:"2020-11-02T01:52:46.653Z",sageScore:4,diffs:[{njs:19,offset:0,notes:1382,bombs:0,obstacles:38787,nps:3.75,length:780,characteristic:"Standard",difficulty:"ExpertPlus",events:8054,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:368.504,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0488692d1d2fa080fe429ee15efc84da40bc78d2.zip",coverURL:"https://cdn.beatsaver.com/0488692d1d2fa080fe429ee15efc84da40bc78d2.jpg",previewURL:"https://cdn.beatsaver.com/0488692d1d2fa080fe429ee15efc84da40bc78d2.mp3"}],createdAt:"2020-11-02T01:52:46.653Z",updatedAt:"2020-11-02T01:52:46.653Z",lastPublishedAt:"2020-11-02T01:52:46.653Z"},{id:"142e8",name:"K/DA - MORE (ft. Madison Beer, (G)I-DLE, Lexie Liu, Jaira Burns, Seraphine)",description:"From the unofficial music pack (K/DA ALL OUT) on BSaber.com\nPack: https://bsaber.com/kda-all-out/\nTrailer: https://youtu.be/e1ry_H86zqg\nPreview (Expert+): https://youtu.be/C86ebbseC34\nLightshow: https://youtu.be/lxbch_lAEA8\n__________\nCredits🤍\nMapper: Sotarks\nLighter: Sotarks\nCurators: Pixelguy, JohnnyDee & joey\nSpecial Thanks: eliotttate & Belaya\nTrailer: Tuffiii\n__________\nCheck out K/DA🤍\nhttps://twitter.com/kda_music\nhttps://linktr.ee/kda_music\nProduced by Riot Games",uploader:{id:2523,name:"sotarks",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541fd",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8541fd?d=retro",type:"SIMPLE"},metadata:{bpm:142,duration:219,songName:"MORE",songSubName:"",songAuthorName:"K/DA",levelAuthorName:"Sotarks"},stats:{plays:0,downloads:11653,upvotes:1408,downvotes:33,score:.9237},uploaded:"2021-02-17T18:04:39.306Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8c5be566e218b8cc59c21e947bc39c1ce1f98908",key:"142e8",state:"Published",createdAt:"2021-02-17T18:04:39.306Z",sageScore:7,diffs:[{njs:10,offset:-1.2813157,notes:245,bombs:0,obstacles:19,nps:1.191,length:487,characteristic:"Standard",difficulty:"Easy",events:2819,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:21,warns:0,resets:0}},{njs:12,offset:.274958,notes:363,bombs:2,obstacles:13,nps:1.764,length:487,characteristic:"Standard",difficulty:"Normal",events:2819,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:3,warns:0,resets:0}},{njs:14,offset:-.06,notes:618,bombs:13,obstacles:13,nps:3.003,length:487,characteristic:"Standard",difficulty:"Hard",events:2819,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:0,warns:0,resets:4}},{njs:16,offset:-.3,notes:863,bombs:12,obstacles:106,nps:4.194,length:487,characteristic:"Standard",difficulty:"Expert",events:2819,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:0,warns:0,resets:2}},{njs:18,offset:-.5,notes:1041,bombs:31,obstacles:271,nps:5.059,length:487,characteristic:"Standard",difficulty:"ExpertPlus",events:2821,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.775,paritySummary:{errors:1,warns:4,resets:5}}],downloadURL:"https://cdn.beatsaver.com/8c5be566e218b8cc59c21e947bc39c1ce1f98908.zip",coverURL:"https://cdn.beatsaver.com/8c5be566e218b8cc59c21e947bc39c1ce1f98908.jpg",previewURL:"https://cdn.beatsaver.com/8c5be566e218b8cc59c21e947bc39c1ce1f98908.mp3"}],createdAt:"2021-02-17T18:04:39.306Z",updatedAt:"2021-02-17T18:04:39.306Z",lastPublishedAt:"2021-02-17T18:04:39.306Z"},{id:"90c3",name:"Centuries - Fallout Boy (2020) [Mapped by Ab and Qwasyx]",description:"Phew, that took a while.\nHuge thanks to Qwasyx for lighting this map as well as making all the One Saber difficulties!\nAnother thanks to Fruhead for testing.\n\nI take requests! My Discord is Ab#8582.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:176,duration:227,songName:"Centuries",songSubName:"",songAuthorName:"Fallout Boy",levelAuthorName:"Ab & Qwasyx"},stats:{plays:0,downloads:8958,upvotes:2447,downvotes:81,score:.9237},uploaded:"2020-03-16T21:06:46.074Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e3bb02f9ecd08e4c3472fea92e604bc415338f2a",key:"90c3",state:"Published",createdAt:"2020-03-16T21:06:46.074Z",sageScore:6,diffs:[{njs:10,offset:0,notes:231,bombs:0,obstacles:46,nps:1.065,length:636,characteristic:"Standard",difficulty:"Easy",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:84,warns:0,resets:0}},{njs:13,offset:-.6,notes:329,bombs:0,obstacles:4,nps:1.517,length:636,characteristic:"Standard",difficulty:"Normal",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:26,warns:8,resets:0}},{njs:14,offset:.8,notes:514,bombs:92,obstacles:82,nps:2.371,length:636,characteristic:"Standard",difficulty:"Hard",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:0,warns:0,resets:2}},{njs:16,offset:.4,notes:667,bombs:182,obstacles:11,nps:3.076,length:636,characteristic:"Standard",difficulty:"Expert",events:14167,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:1,warns:1,resets:8}},{njs:20,offset:-.2,notes:862,bombs:164,obstacles:2,nps:3.976,length:636,characteristic:"Standard",difficulty:"ExpertPlus",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.818,paritySummary:{errors:1,warns:1,resets:5}},{njs:10,offset:0,notes:146,bombs:64,obstacles:4,nps:.671,length:638,characteristic:"OneSaber",difficulty:"Easy",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.5,paritySummary:{errors:21,warns:15,resets:1}},{njs:13,offset:-.6,notes:276,bombs:144,obstacles:68,nps:1.269,length:638,characteristic:"OneSaber",difficulty:"Normal",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.5,paritySummary:{errors:4,warns:22,resets:2}},{njs:14,offset:.8,notes:529,bombs:8,obstacles:0,nps:2.43,length:638.5,characteristic:"OneSaber",difficulty:"Hard",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.67,paritySummary:{errors:8,warns:6,resets:1}},{njs:16,offset:.4,notes:548,bombs:96,obstacles:0,nps:2.522,length:637.5,characteristic:"OneSaber",difficulty:"Expert",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.33,paritySummary:{errors:2,warns:0,resets:5}},{njs:20,offset:-.2,notes:830,bombs:153,obstacles:0,nps:3.807,length:639.5,characteristic:"OneSaber",difficulty:"ExpertPlus",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.011,paritySummary:{errors:0,warns:2,resets:13}},{njs:20,offset:-.2,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:14169,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e3bb02f9ecd08e4c3472fea92e604bc415338f2a.zip",coverURL:"https://cdn.beatsaver.com/e3bb02f9ecd08e4c3472fea92e604bc415338f2a.jpg",previewURL:"https://cdn.beatsaver.com/e3bb02f9ecd08e4c3472fea92e604bc415338f2a.mp3"}],createdAt:"2020-03-16T21:06:46.074Z",updatedAt:"2020-03-16T21:06:46.074Z",lastPublishedAt:"2020-03-16T21:06:46.074Z"},{id:"63ea",name:"Sabaton - Primo Victoria",description:"Old but great song by Sabaton. Hard to Expert+ are mapped.\n\nGenre: Power metal\nBPM: 124.175\nNPS: 5.51 / 3.87 / 3.06\nNJS: 16 / 13 / 11\n\nExpert+ playthrough: https://youtu.be/Z92uPY3met4",uploader:{id:1207,name:"wyxi",uniqueSet:!0,hash:"5d0abf96b8c469000699075f",avatar:"https://www.gravatar.com/avatar/5d0abf96b8c469000699075f?d=retro",type:"SIMPLE"},metadata:{bpm:124.175,duration:251,songName:"Primo Victoria",songSubName:"",songAuthorName:"Sabaton",levelAuthorName:"Wyxi"},stats:{plays:0,downloads:2832,upvotes:1838,downvotes:52,score:.9237},uploaded:"2019-09-16T19:33:52.506Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d18d33e15faab989cc67b7a1ce0b03950295764f",key:"63ea",state:"Published",createdAt:"2019-09-16T19:33:52.506Z",sageScore:6,diffs:[{njs:11,offset:1,notes:769,bombs:4,obstacles:13,nps:3.18,length:500.5,characteristic:"Standard",difficulty:"Hard",events:2822,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.836,paritySummary:{errors:10,warns:2,resets:2}},{njs:13,offset:.5,notes:972,bombs:8,obstacles:12,nps:4.019,length:500.5,characteristic:"Standard",difficulty:"Expert",events:2823,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.836,paritySummary:{errors:15,warns:11,resets:4}},{njs:16,offset:0,notes:1385,bombs:8,obstacles:11,nps:5.727,length:500.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.836,paritySummary:{errors:20,warns:18,resets:4}}],downloadURL:"https://cdn.beatsaver.com/d18d33e15faab989cc67b7a1ce0b03950295764f.zip",coverURL:"https://cdn.beatsaver.com/d18d33e15faab989cc67b7a1ce0b03950295764f.jpg",previewURL:"https://cdn.beatsaver.com/d18d33e15faab989cc67b7a1ce0b03950295764f.mp3"}],createdAt:"2019-09-16T19:33:52.506Z",updatedAt:"2019-09-16T19:33:52.506Z",lastPublishedAt:"2019-09-16T19:33:52.506Z"},{id:"45eb",name:"Fun Tonight - MACROSS 82-99",description:'Future funk has a special place in my heart, Beat Saber could use some more of this genre.\r\nDifficulties: Expert, Expert+ (Both on the easier end of the spectrum)\r\n\r\n"DDR/Mystikmol" Difficulty Rating:\r\nE+ -- 12\r\nExpert -- 10',uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:130,duration:164,songName:"Fun Tonight",songSubName:"MACROSS 82-99",songAuthorName:"Checkthepan",levelAuthorName:"checkthepan"},stats:{plays:0,downloads:1300,upvotes:710,downvotes:6,score:.9237},uploaded:"2019-04-14T19:22:02Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"608bf3c4cd341a7b70199f26d44aaff71550078d",key:"45eb",state:"Published",createdAt:"2019-04-14T19:22:02Z",sageScore:7,diffs:[{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:1545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:0,notes:613,bombs:0,obstacles:30,nps:3.795,length:350,characteristic:"Standard",difficulty:"Expert",events:1545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:161.538,paritySummary:{errors:14,warns:19,resets:0}},{njs:16,offset:0,notes:693,bombs:0,obstacles:31,nps:4.29,length:350,characteristic:"Standard",difficulty:"ExpertPlus",events:1545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:161.538,paritySummary:{errors:12,warns:28,resets:0}}],downloadURL:"https://cdn.beatsaver.com/608bf3c4cd341a7b70199f26d44aaff71550078d.zip",coverURL:"https://cdn.beatsaver.com/608bf3c4cd341a7b70199f26d44aaff71550078d.jpg",previewURL:"https://cdn.beatsaver.com/608bf3c4cd341a7b70199f26d44aaff71550078d.mp3"}],createdAt:"2019-04-14T19:22:02Z",updatedAt:"2019-04-14T19:22:02Z",lastPublishedAt:"2019-04-14T19:22:02Z"},{id:"443d",name:"PUSSY - Rammstein",description:"Another one!\r\n\r\nMaybe don't let your kids play this one until they are a bit older....",uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:240,songName:"PUSSY",songSubName:"Rammstein",songAuthorName:"Heisenberg",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:1710,upvotes:1218,downvotes:25,score:.9237},uploaded:"2019-04-08T04:27:04Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"54f6e76446b3a96cc4707fb2d2aa8bd1efd0baf3",key:"443d",state:"Published",createdAt:"2019-04-08T04:27:04Z",sageScore:6,diffs:[{njs:14,offset:0,notes:711,bombs:0,obstacles:1,nps:3.1,length:516,characteristic:"Standard",difficulty:"Expert",events:12824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.333,paritySummary:{errors:13,warns:24,resets:0}},{njs:16,offset:0,notes:967,bombs:12,obstacles:7,nps:4.217,length:516,characteristic:"Standard",difficulty:"ExpertPlus",events:12824,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.333,paritySummary:{errors:40,warns:52,resets:7}}],downloadURL:"https://cdn.beatsaver.com/54f6e76446b3a96cc4707fb2d2aa8bd1efd0baf3.zip",coverURL:"https://cdn.beatsaver.com/54f6e76446b3a96cc4707fb2d2aa8bd1efd0baf3.jpg",previewURL:"https://cdn.beatsaver.com/54f6e76446b3a96cc4707fb2d2aa8bd1efd0baf3.mp3"}],createdAt:"2019-04-08T04:27:04Z",updatedAt:"2019-04-08T04:27:04Z",lastPublishedAt:"2019-04-08T04:27:04Z"},{id:"1ad55",name:"Porter Robinson & Madeon - Shelter (Modchart)",description:"This is a modchart that i wanted to do for a long time, i saved this song becuase I love it.\r\nAnd today I'm proud to show you my new modchart!\r\nI made this map in a week and i really enjoyed the process!\r\n\r\nShowcase: https://www.youtube.com/watch?v=a4zSCDYRwAQ\r\n\r\nIf you have any feedback dont be shy and tell me on discord:\r\nTzurS11#1111",uploader:{id:4284455,name:"TzurS11",uniqueSet:!0,hash:"6040a8135ab13d0006093512",avatar:"https://cdn.beatsaver.com/avatar/474645781786263552.png",type:"DISCORD"},metadata:{bpm:200,duration:219,songName:"Shelter",songSubName:"",songAuthorName:"Porter Robinson & Madeon",levelAuthorName:"TzurS11"},stats:{plays:0,downloads:12349,upvotes:737,downvotes:7,score:.9236},uploaded:"2021-08-01T20:31:30.562Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"740c5f5d7b730285c8d13fad1107be4659eb2839",key:"1ad55",state:"Published",createdAt:"2021-08-01T20:31:30.562Z",sageScore:3,diffs:[{njs:19,offset:-.05,notes:623,bombs:4,obstacles:0,nps:3.146,length:660,characteristic:"Standard",difficulty:"Expert",events:81591,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:198,paritySummary:{errors:0,warns:0,resets:1}},{njs:19,offset:-.05,notes:623,bombs:4,obstacles:24892,nps:3.146,length:660,characteristic:"Standard",difficulty:"ExpertPlus",events:81591,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:198,paritySummary:{errors:0,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/740c5f5d7b730285c8d13fad1107be4659eb2839.zip",coverURL:"https://cdn.beatsaver.com/740c5f5d7b730285c8d13fad1107be4659eb2839.jpg",previewURL:"https://cdn.beatsaver.com/740c5f5d7b730285c8d13fad1107be4659eb2839.mp3"}],createdAt:"2021-08-01T20:31:30.562Z",updatedAt:"2021-08-01T20:31:30.562Z",lastPublishedAt:"2021-08-01T20:31:30.562Z"},{id:"7326",name:"The Greatest Show - Mapped by TheAb",description:"This is the most time I've ever put into a map. Almost 14 hours have been put into it, and I really appreciate the light-show I've done. Truly hope you enjoy!\n\nExpert+: 4.55NPS\nExpert: 3.49NPS\nHard: 2.57NPS\nNormal: 1.61NPS\n12,601 Lighting events.\n\nOriginal Song: https://www.youtube.com/watch?v=NyVYXRD1Ans\n\nTwitter: https://twitter.com/TheAb03 / Discord: Ab#8582\nI take requests! DM Ab#8582 on Discord for more info.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:158,duration:301,songName:"The Greatest Show",songSubName:"",songAuthorName:"Hugh Jackman, Keala Settle, Zac Efron, Zendaya & The Greatest Showman Ensemble",levelAuthorName:"Ab"},stats:{plays:0,downloads:3783,upvotes:1160,downvotes:23,score:.9235},uploaded:"2019-12-01T19:39:02.667Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f621c70d06e8f5405ffa428f7b742b123208a656",key:"7326",state:"Published",createdAt:"2019-12-01T19:39:02.667Z",sageScore:5,diffs:[{njs:10,offset:0,notes:489,bombs:36,obstacles:75,nps:1.672,length:770.149,characteristic:"Standard",difficulty:"Normal",events:12599,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.462,paritySummary:{errors:43,warns:13,resets:6}},{njs:12,offset:.5,notes:777,bombs:31,obstacles:96,nps:2.657,length:770.149,characteristic:"Standard",difficulty:"Hard",events:12599,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.462,paritySummary:{errors:1,warns:0,resets:8}},{njs:15,offset:.3,notes:1056,bombs:48,obstacles:100,nps:3.611,length:770.149,characteristic:"Standard",difficulty:"Expert",events:12986,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.462,paritySummary:{errors:3,warns:1,resets:9}},{njs:19,offset:0,notes:1376,bombs:34,obstacles:97,nps:4.705,length:770.149,characteristic:"Standard",difficulty:"ExpertPlus",events:12595,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:292.462,paritySummary:{errors:0,warns:0,resets:6}},{njs:19,offset:0,notes:1,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:12568,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:1,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f621c70d06e8f5405ffa428f7b742b123208a656.zip",coverURL:"https://cdn.beatsaver.com/f621c70d06e8f5405ffa428f7b742b123208a656.jpg",previewURL:"https://cdn.beatsaver.com/f621c70d06e8f5405ffa428f7b742b123208a656.mp3"}],createdAt:"2019-12-01T19:39:02.667Z",updatedAt:"2019-12-01T19:39:02.667Z",lastPublishedAt:"2019-12-01T19:39:02.667Z"},{id:"56c2",name:"On The Floor (ft. Pitbull) - Jennifer Lopez",description:"You can most certainly dance to this song, I hope you like it!\nSend me your thoughts on Discord: Teuflum#5982\n\nExpert+ preview: https://www.youtube.com/watch?v=TPU4mCQngNQ\n\nMany thanks to my playtesters Redmagi, techbutterfly and Helen Carnate!\n\nDM me your feedback on discord: Teuflum#5982",uploader:{id:68740,name:"Teuflum",uniqueSet:!0,hash:"5cff0b7498cc5a672c851a6b",avatar:"https://cdn.beatsaver.com/avatar/114706869460664326.png",type:"DISCORD"},metadata:{bpm:130,duration:231,songName:"On The Floor",songSubName:"(ft. Pitbull)",songAuthorName:"Jennifer Lopez",levelAuthorName:"Teuflum"},stats:{plays:0,downloads:8646,upvotes:1696,downvotes:46,score:.9235},uploaded:"2019-07-13T12:11:30.889Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"56d18c176906a23b15702d3eb33f8669322ee312",key:"56c2",state:"Published",createdAt:"2019-07-13T12:11:30.889Z",sageScore:7,diffs:[{njs:10,offset:1,notes:307,bombs:0,obstacles:28,nps:1.415,length:470,characteristic:"Standard",difficulty:"Easy",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:87,warns:4,resets:0}},{njs:12,offset:1,notes:383,bombs:0,obstacles:30,nps:1.766,length:470,characteristic:"Standard",difficulty:"Normal",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:75,warns:13,resets:0}},{njs:14,offset:1,notes:638,bombs:0,obstacles:32,nps:2.941,length:470,characteristic:"Standard",difficulty:"Hard",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:29,warns:23,resets:0}},{njs:16,offset:.5,notes:838,bombs:0,obstacles:26,nps:3.863,length:470,characteristic:"Standard",difficulty:"Expert",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:30,warns:36,resets:0}},{njs:17,offset:0,notes:949,bombs:0,obstacles:23,nps:4.375,length:470,characteristic:"Standard",difficulty:"ExpertPlus",events:3081,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.923,paritySummary:{errors:33,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/56d18c176906a23b15702d3eb33f8669322ee312.zip",coverURL:"https://cdn.beatsaver.com/56d18c176906a23b15702d3eb33f8669322ee312.jpg",previewURL:"https://cdn.beatsaver.com/56d18c176906a23b15702d3eb33f8669322ee312.mp3"}],createdAt:"2019-07-13T12:11:30.889Z",updatedAt:"2019-07-13T12:11:30.889Z",lastPublishedAt:"2019-07-13T12:11:30.889Z"},{id:"492e",name:"[OLD] Centuries - Fallout Boy | 2019 version | Mapped and Lighted by Ab",description:"Alright! Another one.\nNormal is pretty much top-Easy, couldn't decide.\nAb#4940 if you're interested in collabs\n\nAlso lights could get laggy",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:176,duration:227,songName:"Centuries",songSubName:"Fallout Boy",songAuthorName:"Ab",levelAuthorName:"TheAb"},stats:{plays:0,downloads:4393,upvotes:2252,downvotes:72,score:.9235},uploaded:"2019-04-28T22:58:20Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"158e65b2e9861c626344049ec4a069d1523ad060",key:"492e",state:"Published",createdAt:"2019-04-28T22:58:20Z",sageScore:4,diffs:[{njs:11,offset:0,notes:289,bombs:42,obstacles:4,nps:1.333,length:635.75,characteristic:"Standard",difficulty:"Normal",events:22890,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.733,paritySummary:{errors:79,warns:35,resets:2}},{njs:12,offset:0,notes:527,bombs:85,obstacles:5,nps:2.425,length:637.5,characteristic:"Standard",difficulty:"Hard",events:1,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.33,paritySummary:{errors:62,warns:51,resets:9}},{njs:12,offset:0,notes:762,bombs:158,obstacles:7,nps:3.506,length:637.5,characteristic:"Standard",difficulty:"Expert",events:22890,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.33,paritySummary:{errors:54,warns:44,resets:5}},{njs:18,offset:0,notes:1145,bombs:186,obstacles:0,nps:5.267,length:637.625,characteristic:"Standard",difficulty:"ExpertPlus",events:22890,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.372,paritySummary:{errors:68,warns:90,resets:6}}],downloadURL:"https://cdn.beatsaver.com/158e65b2e9861c626344049ec4a069d1523ad060.zip",coverURL:"https://cdn.beatsaver.com/158e65b2e9861c626344049ec4a069d1523ad060.jpg",previewURL:"https://cdn.beatsaver.com/158e65b2e9861c626344049ec4a069d1523ad060.mp3"}],createdAt:"2019-04-28T22:58:20Z",updatedAt:"2019-04-28T22:58:20Z",lastPublishedAt:"2019-04-28T22:58:20Z"},{id:"8215",name:"David Guetta, Brooks & Loote - Better When You're Gone",description:"First map of my Future House pack. I remember that I started this a long time ago, even before I had my VR; about 5 months ago going into September.\n\nVideo: https://youtu.be/NDDn7-Lzrlo\n\nEasy: Notes: 130 NPS: 1.22 NJS: 10\nNormal: Notes: 164 NPS: 1.65 NJS: 12\nHard: Notes: 267 NPS: 2.64 NJS: 14\nExpert: Notes: 398 NPS: 3.94 NJS: 16\nExpert+: Notes: 483 NPS: 4.76 NJS: 18\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:106,songName:"Better When You're Gone",songSubName:"(Ft. Loote)",songAuthorName:"David Guetta, Brooks",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:2743,upvotes:977,downvotes:16,score:.9233},uploaded:"2020-01-27T23:27:20.606Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"048b444b7011388e63e4b7bab1e8f96b4b51fa3d",key:"8215",state:"Published",createdAt:"2020-01-27T23:27:20.606Z",sageScore:6,diffs:[{njs:10,offset:1,notes:130,bombs:0,obstacles:0,nps:1.29,length:215,characteristic:"Standard",difficulty:"Easy",events:2063,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:100.781,paritySummary:{errors:54,warns:2,resets:0}},{njs:12,offset:.5,notes:164,bombs:0,obstacles:7,nps:1.652,length:211.75,characteristic:"Standard",difficulty:"Normal",events:2063,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:99.258,paritySummary:{errors:16,warns:6,resets:0}},{njs:14,offset:0,notes:267,bombs:0,obstacles:6,nps:2.643,length:215.5,characteristic:"Standard",difficulty:"Hard",events:2063,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:101.016,paritySummary:{errors:2,warns:2,resets:0}},{njs:16,offset:-.25,notes:398,bombs:0,obstacles:5,nps:3.94,length:215.5,characteristic:"Standard",difficulty:"Expert",events:2060,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:101.016,paritySummary:{errors:1,warns:0,resets:0}},{njs:18,offset:-.5,notes:483,bombs:4,obstacles:6,nps:4.765,length:216.25,characteristic:"Standard",difficulty:"ExpertPlus",events:2063,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:101.367,paritySummary:{errors:13,warns:18,resets:6}}],downloadURL:"https://cdn.beatsaver.com/048b444b7011388e63e4b7bab1e8f96b4b51fa3d.zip",coverURL:"https://cdn.beatsaver.com/048b444b7011388e63e4b7bab1e8f96b4b51fa3d.jpg",previewURL:"https://cdn.beatsaver.com/048b444b7011388e63e4b7bab1e8f96b4b51fa3d.mp3"}],createdAt:"2020-01-27T23:27:20.606Z",updatedAt:"2020-01-27T23:27:20.606Z",lastPublishedAt:"2020-01-27T23:27:20.606Z"},{id:"6352",name:"Paladin - EnV",description:'Map creators:\r\nYume - Notes / Walls\r\nRexxxzi - Lights\r\n\r\nThis is "High Tier Expert" difficulty\r\nWe hope you\'ll enjoy the map!',uploader:{id:37025,name:"yume",uniqueSet:!0,hash:"5cff0b7698cc5a672c853e8a",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853e8a?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:242,songName:"Paladin",songSubName:"",songAuthorName:"EnV",levelAuthorName:"Yume ft. Rexxz Lights"},stats:{plays:0,downloads:1187,upvotes:1079,downvotes:20,score:.9233},uploaded:"2019-09-14T12:32:01.763Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"583598b60c0ef891738d3b07c564cadff6500c63",key:"6352",state:"Published",createdAt:"2019-09-14T12:32:01.763Z",sageScore:7,diffs:[{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:9642,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1065,bombs:0,obstacles:7902,nps:4.615,length:500,characteristic:"Standard",difficulty:"Expert",events:9524,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:230.769,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1065,bombs:0,obstacles:7923,nps:4.615,length:500,characteristic:"Standard",difficulty:"ExpertPlus",events:9524,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:230.769,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/583598b60c0ef891738d3b07c564cadff6500c63.zip",coverURL:"https://cdn.beatsaver.com/583598b60c0ef891738d3b07c564cadff6500c63.jpg",previewURL:"https://cdn.beatsaver.com/583598b60c0ef891738d3b07c564cadff6500c63.mp3"}],createdAt:"2019-09-14T12:32:01.763Z",updatedAt:"2019-09-14T12:32:01.763Z",lastPublishedAt:"2019-09-14T12:32:01.763Z"},{id:"2c14",name:"CHVRCHES - The Mother We Share",description:"I noticed CHVRCHES' most popular song didn't have a map, so I gave it a shot. Check out my other maps, too!\r\n\r\nPreview: https://youtu.be/bGnUqfGrglY\r\nNormal / Hard / Expert\r\n\r\nhttps://www.twitch.tv/Syntheseizure",uploader:{id:31265,name:"syntheseizure",uniqueSet:!0,hash:"5cff0b7698cc5a672c8546bd",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8546bd?d=retro",type:"SIMPLE"},metadata:{bpm:87,duration:192,songName:"The Mother We Share",songSubName:"CHVRCHES",songAuthorName:"Syntheseizure",levelAuthorName:"Syntheseizure"},stats:{plays:0,downloads:1880,upvotes:1056,downvotes:19,score:.9233},uploaded:"2019-01-08T20:34:12Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4f96ae058a970508dad582e0ea60d5e6ad9d38b5",key:"2c14",state:"Published",createdAt:"2019-01-08T20:34:12Z",sageScore:4,diffs:[{njs:10,offset:0,notes:373,bombs:0,obstacles:2,nps:2.053,length:263.5,characteristic:"Standard",difficulty:"Normal",events:710,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.724,paritySummary:{errors:36,warns:7,resets:0}},{njs:10,offset:0,notes:480,bombs:0,obstacles:6,nps:2.641,length:263.5,characteristic:"Standard",difficulty:"Hard",events:710,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.724,paritySummary:{errors:20,warns:12,resets:0}},{njs:10,offset:0,notes:683,bombs:0,obstacles:12,nps:3.758,length:263.5,characteristic:"Standard",difficulty:"Expert",events:708,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.724,paritySummary:{errors:21,warns:7,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4f96ae058a970508dad582e0ea60d5e6ad9d38b5.zip",coverURL:"https://cdn.beatsaver.com/4f96ae058a970508dad582e0ea60d5e6ad9d38b5.jpg",previewURL:"https://cdn.beatsaver.com/4f96ae058a970508dad582e0ea60d5e6ad9d38b5.mp3"}],createdAt:"2019-01-08T20:34:12Z",updatedAt:"2019-01-08T20:34:12Z",lastPublishedAt:"2019-01-08T20:34:12Z"},{id:"2293",name:"My Soul,Your Beats",description:"Over 10 hours of work went into this to make it as good as it could be\r\nI consider this a new beginning, all previous maps of mine pale in comparison",uploader:{id:47724,name:"dafrandle",uniqueSet:!0,hash:"5cff0b7598cc5a672c8527e9",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c8527e9?d=retro",type:"SIMPLE"},metadata:{bpm:145,duration:276,songName:"My Soul,Your Beats",songSubName:"Lia",songAuthorName:"dafrandle",levelAuthorName:"dafrandle"},stats:{plays:0,downloads:3582,upvotes:1440,downvotes:35,score:.9233},uploaded:"2018-11-27T23:47:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"abc11caed9ca86fda3dacc12dd0bcca51041ebe0",key:"2293",state:"Published",createdAt:"2018-11-27T23:47:18Z",sageScore:6,diffs:[{njs:9,offset:0,notes:505,bombs:0,obstacles:3,nps:1.9,length:642.375,characteristic:"Standard",difficulty:"Normal",events:3955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.81,paritySummary:{errors:77,warns:13,resets:0}},{njs:10,offset:0,notes:768,bombs:0,obstacles:26,nps:2.889,length:642.375,characteristic:"Standard",difficulty:"Hard",events:3955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.81,paritySummary:{errors:64,warns:24,resets:0}},{njs:11,offset:0,notes:1120,bombs:62,obstacles:29,nps:4.214,length:642.375,characteristic:"Standard",difficulty:"Expert",events:3955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.81,paritySummary:{errors:89,warns:40,resets:5}}],downloadURL:"https://cdn.beatsaver.com/abc11caed9ca86fda3dacc12dd0bcca51041ebe0.zip",coverURL:"https://cdn.beatsaver.com/abc11caed9ca86fda3dacc12dd0bcca51041ebe0.jpg",previewURL:"https://cdn.beatsaver.com/abc11caed9ca86fda3dacc12dd0bcca51041ebe0.mp3"}],createdAt:"2018-11-27T23:47:18Z",updatedAt:"2018-11-27T23:47:18Z",lastPublishedAt:"2018-11-27T23:47:18Z"},{id:"1a0ba",name:"[Electro Swing Pack] Wolfgang Lohr & Maskarade - Hit The Road Jack",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/0ObNR9n_dDs\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:124,duration:159,songName:"Hit The Road Jack",songSubName:"",songAuthorName:"Wolfgang Lohr & Maskarade",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:14063,upvotes:841,downvotes:11,score:.9232},uploaded:"2021-07-08T15:26:18.072Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"75f10751d58f6f1ab0bc36e94039a144256adccb",key:"1a0ba",state:"Published",createdAt:"2021-07-08T15:26:18.072Z",sageScore:4,diffs:[{njs:16,offset:-.25,notes:475,bombs:0,obstacles:0,nps:3.089,length:317.75,characteristic:"Standard",difficulty:"Expert",events:1846,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.75,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:750,bombs:0,obstacles:0,nps:4.878,length:317.75,characteristic:"Standard",difficulty:"ExpertPlus",events:1846,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:153.75,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/75f10751d58f6f1ab0bc36e94039a144256adccb.zip",coverURL:"https://cdn.beatsaver.com/75f10751d58f6f1ab0bc36e94039a144256adccb.jpg",previewURL:"https://cdn.beatsaver.com/75f10751d58f6f1ab0bc36e94039a144256adccb.mp3"}],createdAt:"2021-07-08T15:26:18.072Z",updatedAt:"2021-07-08T15:26:18.072Z",lastPublishedAt:"2021-07-08T15:26:18.072Z"},{id:"924a",name:'JoJo ~Sono Chi no Sadame~ [JoJo\'s Bizarre Adventure Opening] - Hiroaki "TOMMY" Tominaga',description:'Not many people know this but my full name is actually Joetastic Joestar ;)\n\n"JoJo ~Sono Chi no Sadame~" is the first opening of JoJo\'s Bizarre Adventure: Phantom Blood by Hiroaki "TOMMY" Tominaga.\n\nMap Preview: https://youtu.be/WPprA9AS35A',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:146,duration:263,songName:"JoJo ~Sono Chi no Sadame~",songSubName:"",songAuthorName:'Hiroaki "TOMMY" Tominaga',levelAuthorName:"Joetastic"},stats:{plays:0,downloads:6854,upvotes:1594,downvotes:42,score:.9232},uploaded:"2020-03-21T18:09:50.603Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eb2b28402e27f784a64f99d338696a2bdd59fe2c",key:"924a",state:"Published",createdAt:"2020-03-21T18:09:50.603Z",sageScore:5,diffs:[{njs:16,offset:0,notes:1305,bombs:0,obstacles:16,nps:5.053,length:628.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4918,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:258.288,paritySummary:{errors:30,warns:38,resets:0}}],downloadURL:"https://cdn.beatsaver.com/eb2b28402e27f784a64f99d338696a2bdd59fe2c.zip",coverURL:"https://cdn.beatsaver.com/eb2b28402e27f784a64f99d338696a2bdd59fe2c.jpg",previewURL:"https://cdn.beatsaver.com/eb2b28402e27f784a64f99d338696a2bdd59fe2c.mp3"}],createdAt:"2020-03-21T18:09:50.603Z",updatedAt:"2020-03-21T18:09:50.603Z",lastPublishedAt:"2020-03-21T18:09:50.603Z"},{id:"aa5c",name:"MOMOLAND - BAAM (Remaster)",description:"Expert+ Preview: https://www.youtube.com/watch?v=5PUSZT6jUaY\n\nMan, I have been doing this for a year now. I feel old. Well enjoy this remake of the first map I uploaded!\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725 ! Or drop by the Kpop discord at: https://discord.gg/c9uHGYP",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:127,duration:209,songName:"BAAM",songSubName:"Remastered Map",songAuthorName:"MOMOLAND",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:8638,upvotes:1222,downvotes:26,score:.9231},uploaded:"2020-05-25T19:34:51.367Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"72746e0a89246d11a8fe7f3a23113f4605980a09",key:"aa5c",state:"Published",createdAt:"2020-05-25T19:34:51.367Z",sageScore:5,diffs:[{njs:12,offset:.4,notes:551,bombs:0,obstacles:148,nps:2.706,length:431,characteristic:"Standard",difficulty:"Hard",events:2998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.622,paritySummary:{errors:4,warns:0,resets:0}},{njs:16,offset:-.2,notes:823,bombs:0,obstacles:120,nps:4.041,length:431.063,characteristic:"Standard",difficulty:"Expert",events:2998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.652,paritySummary:{errors:6,warns:2,resets:0}},{njs:18,offset:-.4,notes:885,bombs:0,obstacles:111,nps:4.346,length:431,characteristic:"Standard",difficulty:"ExpertPlus",events:2998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.622,paritySummary:{errors:3,warns:7,resets:0}}],downloadURL:"https://cdn.beatsaver.com/72746e0a89246d11a8fe7f3a23113f4605980a09.zip",coverURL:"https://cdn.beatsaver.com/72746e0a89246d11a8fe7f3a23113f4605980a09.jpg",previewURL:"https://cdn.beatsaver.com/72746e0a89246d11a8fe7f3a23113f4605980a09.mp3"}],createdAt:"2020-05-25T19:34:51.367Z",updatedAt:"2020-05-25T19:34:51.367Z",lastPublishedAt:"2020-05-25T19:34:51.367Z"},{id:"33dc",name:"CeeLo Green ft. Jack Black - Kung Fu Fighting",description:"I only realised this yesterday, but I've managed to make a map of this Chinese inspired classic just in time for the Lunar new year. So happy Chinese new year everybody and I hope you enjoy it!\r\nTime spent mapping: 8:49\r\n\r\nVideo Preview: https://www.youtube.com/watch?v=73jUl1rH0Fo\r\nBeastSaber: https://bsaber.com/members/stumi/",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:110,duration:140,songName:"Kung Fu Fighting",songSubName:"CeeLo Green ft.Jack Black",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:7920,upvotes:1959,downvotes:59,score:.9231},uploaded:"2019-02-05T21:06:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b653e83bdae8028e77e84f751d23d619bc55f6f7",key:"33dc",state:"Published",createdAt:"2019-02-05T21:06:09Z",sageScore:6,diffs:[{njs:10,offset:0,notes:154,bombs:0,obstacles:26,nps:1.26,length:224,characteristic:"Standard",difficulty:"Easy",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:122.182,paritySummary:{errors:16,warns:18,resets:0}},{njs:10,offset:0,notes:197,bombs:0,obstacles:24,nps:1.612,length:224,characteristic:"Standard",difficulty:"Normal",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:122.182,paritySummary:{errors:17,warns:32,resets:0}},{njs:11,offset:0,notes:351,bombs:0,obstacles:13,nps:2.873,length:224,characteristic:"Standard",difficulty:"Hard",events:1344,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:122.182,paritySummary:{errors:29,warns:29,resets:0}},{njs:14,offset:0,notes:502,bombs:0,obstacles:17,nps:4.109,length:224,characteristic:"Standard",difficulty:"Expert",events:1346,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:122.182,paritySummary:{errors:32,warns:40,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b653e83bdae8028e77e84f751d23d619bc55f6f7.zip",coverURL:"https://cdn.beatsaver.com/b653e83bdae8028e77e84f751d23d619bc55f6f7.jpg",previewURL:"https://cdn.beatsaver.com/b653e83bdae8028e77e84f751d23d619bc55f6f7.mp3"}],createdAt:"2019-02-05T21:06:09Z",updatedAt:"2019-02-05T21:06:09Z",lastPublishedAt:"2019-02-05T21:06:09Z"},{id:"24e",name:"Maculate - Get Schwifty (Andromulus Remix)",description:"Finished version! This track has 4 difficulties: Easy, Normal, Hard and Expert. So everyone can now get schwifty, regardless of skill level. \r\n\r\nThis is my first finished track, all feedback is welcome!",uploader:{id:53049,name:"enclose",uniqueSet:!1,hash:"5cff0b7398cc5a672c84ed3b",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ed3b?d=retro",type:"SIMPLE"},metadata:{bpm:200,duration:279,songName:"Get Schwifty (Andromulus Remix)",songSubName:"",songAuthorName:"Maculate",levelAuthorName:"enclose"},stats:{plays:0,downloads:5744,upvotes:4485,downvotes:191,score:.9231},uploaded:"2018-05-26T15:22:35Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"33d5c4fff97822eef1f02fc53bb0561f23489efe",key:"24e",state:"Published",createdAt:"2018-05-26T15:22:35Z",sageScore:6,diffs:[{njs:10,offset:0,notes:411,bombs:0,obstacles:77,nps:1.527,length:897,characteristic:"Standard",difficulty:"Easy",events:1673,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.1,paritySummary:{errors:120,warns:53,resets:0}},{njs:10,offset:0,notes:518,bombs:0,obstacles:120,nps:1.925,length:897,characteristic:"Standard",difficulty:"Normal",events:1754,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.1,paritySummary:{errors:123,warns:64,resets:0}},{njs:10,offset:0,notes:629,bombs:0,obstacles:131,nps:2.337,length:897,characteristic:"Standard",difficulty:"Hard",events:1890,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.1,paritySummary:{errors:119,warns:77,resets:0}},{njs:10,offset:0,notes:684,bombs:0,obstacles:220,nps:2.542,length:897,characteristic:"Standard",difficulty:"Expert",events:1905,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:269.1,paritySummary:{errors:112,warns:75,resets:0}}],downloadURL:"https://cdn.beatsaver.com/33d5c4fff97822eef1f02fc53bb0561f23489efe.zip",coverURL:"https://cdn.beatsaver.com/33d5c4fff97822eef1f02fc53bb0561f23489efe.jpg",previewURL:"https://cdn.beatsaver.com/33d5c4fff97822eef1f02fc53bb0561f23489efe.mp3"}],createdAt:"2018-05-26T15:22:35Z",updatedAt:"2018-05-26T15:22:35Z",lastPublishedAt:"2018-05-26T15:22:35Z"},{id:"13bea",name:"The Wall - (Buunshin Remix) [WALL MAP + CHROMA]",description:"Just wanna say that Rustic has inspired me, and has made me want to start mapping a while back, and with that, it has brought me many opportunities, and many friends.\n\nPrograms used\nScuffedWalls: https://github.com/thelightdesigner/ScuffedWalls\nbeatwalls: https://github.com/spookyGh0st/beatwalls\n\nNoodleExtensions: https://github.com/Aeroluna/NoodleExtensions/releases\n\nPreview: https://youtu.be/lFxGmGO2kww",uploader:{id:4284667,name:"tall_chilis_boi",uniqueSet:!0,hash:"5dec6d85fffaa6000679dc23",avatar:"https://cdn.beatsaver.com/avatar/427307106970894336.png",type:"DISCORD"},metadata:{bpm:172,duration:270,songName:"The Wall",songSubName:"(Buunshin Remix)",songAuthorName:"ABIS & Signal & Tasha Baxter",levelAuthorName:"Tall_Chilis_Boi"},stats:{plays:0,downloads:2353,upvotes:1376,downvotes:33,score:.9229},uploaded:"2021-02-08T08:27:12.773Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9192703d277e652e3dc367bc87c68107967c6898",key:"13bea",state:"Published",createdAt:"2021-02-08T08:27:12.773Z",sageScore:4,diffs:[{njs:20,offset:-.5,notes:768,bombs:0,obstacles:14814,nps:2.991,length:736,characteristic:"Standard",difficulty:"Expert",events:15872,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:256.744,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9192703d277e652e3dc367bc87c68107967c6898.zip",coverURL:"https://cdn.beatsaver.com/9192703d277e652e3dc367bc87c68107967c6898.jpg",previewURL:"https://cdn.beatsaver.com/9192703d277e652e3dc367bc87c68107967c6898.mp3"}],createdAt:"2021-02-08T08:27:12.773Z",updatedAt:"2021-02-08T08:27:12.773Z",lastPublishedAt:"2021-02-08T08:27:12.773Z"},{id:"9b89",name:"Stronger",description:"A wall map for this masterpiece of a song.\n----------------------------------------------\nPlease give feedback @Reddek#5864\nAnd thanks for playing!",uploader:{id:4233941,name:"reddek",uniqueSet:!0,hash:"5dbfb4426dea0b0006bd328d",avatar:"https://cdn.beatsaver.com/avatar/177436487086768129.png",type:"DISCORD"},metadata:{bpm:160,duration:207,songName:"Stronger",songSubName:"",songAuthorName:"TheFatRat, Slaydit & Anjulie",levelAuthorName:"Reddek"},stats:{plays:0,downloads:1299,upvotes:938,downvotes:15,score:.9229},uploaded:"2020-04-16T06:37:29.656Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e48afe3d1a2b94f5396f63e32972651495caf034",key:"9b89",state:"Published",createdAt:"2020-04-16T06:37:29.656Z",sageScore:4,diffs:[{njs:18,offset:0,notes:892,bombs:168,obstacles:2648,nps:4.471,length:532,characteristic:"Standard",difficulty:"ExpertPlus",events:3423,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:199.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e48afe3d1a2b94f5396f63e32972651495caf034.zip",coverURL:"https://cdn.beatsaver.com/e48afe3d1a2b94f5396f63e32972651495caf034.jpg",previewURL:"https://cdn.beatsaver.com/e48afe3d1a2b94f5396f63e32972651495caf034.mp3"}],createdAt:"2020-04-16T06:37:29.656Z",updatedAt:"2020-04-16T06:37:29.656Z",lastPublishedAt:"2020-04-16T06:37:29.656Z"},{id:"613b",name:"Seraphim On The Ring - Mitchie M ft. Hatsune Miku, Kagamine Rin, KAITO",description:'"Seraphim On The Ring" is a song by Mitchie M about pro wrestling match which Miku and Rin play against Meiko and Luka. The ringside commentator is KAITO and the referee is Len.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:175,duration:223,songName:"Seraphim On The Ring",songSubName:"",songAuthorName:"Mitchie M ft. Hatsune Miku, Kagamine Rin, KAITO",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2013,upvotes:992,downvotes:17,score:.9229},uploaded:"2019-09-04T09:20:18.405Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"605da022c1e9688e122688e3abf3ddc8321299a8",key:"613b",state:"Published",createdAt:"2019-09-04T09:20:18.405Z",sageScore:5,diffs:[{njs:12,offset:0,notes:679,bombs:0,obstacles:33,nps:3.215,length:616,characteristic:"Standard",difficulty:"Hard",events:5807,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.2,paritySummary:{errors:54,warns:41,resets:0}},{njs:14,offset:0,notes:913,bombs:0,obstacles:27,nps:4.323,length:616,characteristic:"Standard",difficulty:"Expert",events:5807,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.2,paritySummary:{errors:20,warns:21,resets:0}},{njs:16,offset:0,notes:1038,bombs:0,obstacles:30,nps:4.915,length:616,characteristic:"Standard",difficulty:"ExpertPlus",events:5807,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.2,paritySummary:{errors:33,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/605da022c1e9688e122688e3abf3ddc8321299a8.zip",coverURL:"https://cdn.beatsaver.com/605da022c1e9688e122688e3abf3ddc8321299a8.jpg",previewURL:"https://cdn.beatsaver.com/605da022c1e9688e122688e3abf3ddc8321299a8.mp3"}],createdAt:"2019-09-04T09:20:18.405Z",updatedAt:"2019-09-04T09:20:18.405Z",lastPublishedAt:"2019-09-04T09:20:18.405Z"},{id:"199e",name:"Super Mario 64 - Dire, Dire Docks (Wisp X Remix)",description:'Normal/Expert/Expert+ | BPM: 130 | Length: 3:23 | Notes: 376/688/1020\r\n\r\nI was just wondering how "Dire, Dire Docks" would look like in Beat Saber..\r\nThis is the result!\r\n\r\nLighting done with "Lightmap V2"\r\n\r\n12th Map.\r\n\r\nPreview:\r\nhttps://www.youtube.com/watch?v=dRprfDRvJJY\r\nSong:\r\nhttps://www.youtube.com/watch?v=56eIZKyhM6c',uploader:{id:4285825,name:"fefeland",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3bb",avatar:"https://cdn.beatsaver.com/avatar/119360573191225344.png",type:"DISCORD"},metadata:{bpm:130,duration:203,songName:"Dire, Dire Docks (Wisp X Remix)",songSubName:"Super Mario 64",songAuthorName:"FEFELAND",levelAuthorName:"fefeland"},stats:{plays:0,downloads:2005,upvotes:1351,downvotes:32,score:.9228},uploaded:"2018-10-10T20:02:06Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b8d647a30f15e33d77808f9a143f02e3af6016b4",key:"199e",state:"Published",createdAt:"2018-10-10T20:02:06Z",sageScore:5,diffs:[{njs:8,offset:0,notes:376,bombs:0,obstacles:50,nps:1.958,length:416,characteristic:"Standard",difficulty:"Normal",events:831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:72,warns:22,resets:0}},{njs:12,offset:0,notes:688,bombs:0,obstacles:51,nps:3.583,length:416,characteristic:"Standard",difficulty:"Expert",events:831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:46,warns:44,resets:0}},{njs:15,offset:0,notes:1020,bombs:0,obstacles:48,nps:5.313,length:416,characteristic:"Standard",difficulty:"ExpertPlus",events:831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:36,warns:32,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b8d647a30f15e33d77808f9a143f02e3af6016b4.zip",coverURL:"https://cdn.beatsaver.com/b8d647a30f15e33d77808f9a143f02e3af6016b4.jpg",previewURL:"https://cdn.beatsaver.com/b8d647a30f15e33d77808f9a143f02e3af6016b4.mp3"}],createdAt:"2018-10-10T20:02:06Z",updatedAt:"2018-10-10T20:02:06Z",lastPublishedAt:"2018-10-10T20:02:06Z"},{id:"65bb",name:"TWICE - Feel Special",description:"New Twice map by Aggrogahu and myself. I hope you enjoy it!\n\nKikaeaeon: Expert/Expert+\nAggrogahu: Hard/Normal",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:129,duration:208,songName:"Feel Special",songSubName:"",songAuthorName:"TWICE",levelAuthorName:"KikaeAeon & Aggrogahu"},stats:{plays:0,downloads:5121,upvotes:1156,downvotes:24,score:.9226},uploaded:"2019-09-25T05:14:20.078Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4644faf2fbb084c248d7e0f8d3592829ec7e19d0",key:"65bb",state:"Published",createdAt:"2019-09-25T05:14:20.078Z",sageScore:4,diffs:[{njs:10,offset:1,notes:351,bombs:0,obstacles:17,nps:1.747,length:432,characteristic:"Standard",difficulty:"Normal",events:1268,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.93,paritySummary:{errors:58,warns:30,resets:0}},{njs:10,offset:1,notes:552,bombs:0,obstacles:17,nps:2.747,length:432,characteristic:"Standard",difficulty:"Hard",events:1268,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.93,paritySummary:{errors:51,warns:36,resets:0}},{njs:12,offset:0,notes:762,bombs:0,obstacles:16,nps:3.792,length:432,characteristic:"Standard",difficulty:"Expert",events:1266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.93,paritySummary:{errors:16,warns:18,resets:0}},{njs:16,offset:0,notes:952,bombs:0,obstacles:36,nps:4.738,length:432,characteristic:"Standard",difficulty:"ExpertPlus",events:1266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.93,paritySummary:{errors:9,warns:9,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4644faf2fbb084c248d7e0f8d3592829ec7e19d0.zip",coverURL:"https://cdn.beatsaver.com/4644faf2fbb084c248d7e0f8d3592829ec7e19d0.jpg",previewURL:"https://cdn.beatsaver.com/4644faf2fbb084c248d7e0f8d3592829ec7e19d0.mp3"}],createdAt:"2019-09-25T05:14:20.078Z",updatedAt:"2019-09-25T05:14:20.078Z",lastPublishedAt:"2019-09-25T05:14:20.078Z"},{id:"48ff",name:"Sewayaki Kisune no Senko-san OP - Koyoi MofuMofu!!",description:"Twitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:103,duration:91,songName:"Koyoi MofuMofu",songSubName:"Agasa.K",songAuthorName:"Dack",levelAuthorName:"Dack"},stats:{plays:0,downloads:2294,upvotes:1317,downvotes:31,score:.9225},uploaded:"2019-04-28T12:14:58Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"52cba6c4432bca35081296a7e98be638f3f69c65",key:"48ff",state:"Published",createdAt:"2019-04-28T12:14:58Z",sageScore:2,diffs:[{njs:12,offset:0,notes:177,bombs:0,obstacles:0,nps:2.074,length:146.5,characteristic:"Standard",difficulty:"Normal",events:146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.34,paritySummary:{errors:10,warns:5,resets:0}},{njs:13,offset:0,notes:256,bombs:0,obstacles:0,nps:3,length:146.5,characteristic:"Standard",difficulty:"Hard",events:146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.34,paritySummary:{errors:13,warns:13,resets:0}},{njs:14,offset:0,notes:300,bombs:0,obstacles:0,nps:3.515,length:146.5,characteristic:"Standard",difficulty:"Expert",events:146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.34,paritySummary:{errors:6,warns:7,resets:0}},{njs:15,offset:0,notes:315,bombs:0,obstacles:0,nps:3.691,length:146.5,characteristic:"Standard",difficulty:"ExpertPlus",events:146,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.34,paritySummary:{errors:7,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/52cba6c4432bca35081296a7e98be638f3f69c65.zip",coverURL:"https://cdn.beatsaver.com/52cba6c4432bca35081296a7e98be638f3f69c65.jpg",previewURL:"https://cdn.beatsaver.com/52cba6c4432bca35081296a7e98be638f3f69c65.mp3"}],createdAt:"2019-04-28T12:14:58Z",updatedAt:"2019-04-28T12:14:58Z",lastPublishedAt:"2019-04-28T12:14:58Z"},{id:"27f6",name:'We All Lift Together - Keith Power (From "Warframe")',description:"Welcome to Fortuna. Explore the frigid landscape of Venus populated with new Corpus threats, subterranean mysteries and an ecosystem on the brink of destruction.\r\nPlaying movie (Hard) : https://youtu.be/M1s6G4ib5Ew",uploader:{id:43083,name:"trgsonic",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c78",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c852c78?d=retro",type:"SIMPLE"},metadata:{bpm:134,duration:155,songName:"We All Lift Together",songSubName:"",songAuthorName:"Keith Power",levelAuthorName:"TRGsonic"},stats:{plays:0,downloads:1436,upvotes:736,downvotes:8,score:.9224},uploaded:"2018-12-25T14:00:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"050d447ebe73685cdb5515867dd7f065e0001fb7",key:"27f6",state:"Published",createdAt:"2018-12-25T14:00:28Z",sageScore:6,diffs:[{njs:10,offset:0,notes:197,bombs:0,obstacles:24,nps:1.375,length:320,characteristic:"Standard",difficulty:"Easy",events:144,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:143.284,paritySummary:{errors:37,warns:23,resets:0}},{njs:10.01,offset:0,notes:304,bombs:6,obstacles:23,nps:2.122,length:320,characteristic:"Standard",difficulty:"Normal",events:144,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:143.284,paritySummary:{errors:30,warns:21,resets:0}},{njs:10.05,offset:0,notes:360,bombs:8,obstacles:24,nps:2.513,length:320,characteristic:"Standard",difficulty:"Hard",events:144,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:143.284,paritySummary:{errors:34,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/050d447ebe73685cdb5515867dd7f065e0001fb7.zip",coverURL:"https://cdn.beatsaver.com/050d447ebe73685cdb5515867dd7f065e0001fb7.jpg",previewURL:"https://cdn.beatsaver.com/050d447ebe73685cdb5515867dd7f065e0001fb7.mp3"}],createdAt:"2018-12-25T14:00:28Z",updatedAt:"2018-12-25T14:00:28Z",lastPublishedAt:"2018-12-25T14:00:28Z"},{id:"7b5f",name:"My Stick! - Bad Lip Reading (Standard, 90 degree)",description:"Happy New Year 2020! I am a huge fan of the Bad Lip Reading Star Wars songs. I probably account for half of the 100s of millions of views they have received on youtube! If you're not familiar with them, go check them out! This newest one - My Stick! - just came out a few days ago and as soon as I heard it, I wanted to map it. So here it is - Easy, Normal, Hard, Expert, and Expert 90 degree difficulties available. \n\nBig thanks to my playtesters Maybeemae, MajorPickle, and Brentastic! You guys really help put the polish on these maps!\n\nhttps://www.youtube.com/watch?v=372GmcbFwCI",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:126,duration:205,songName:"My Stick",songSubName:"",songAuthorName:"Bad Lip Reading",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:2769,upvotes:1048,downvotes:20,score:.9223},uploaded:"2020-01-01T01:33:52.347Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4837ebdf91168a5e26eb5beebda03ebef31e6841",key:"7b5f",state:"Published",createdAt:"2020-01-01T01:33:52.347Z",sageScore:4,diffs:[{njs:8,offset:0,notes:173,bombs:14,obstacles:38,nps:.881,length:412.5,characteristic:"Standard",difficulty:"Easy",events:795,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.429,paritySummary:{errors:47,warns:21,resets:5}},{njs:10,offset:0,notes:292,bombs:22,obstacles:38,nps:1.458,length:420.5,characteristic:"Standard",difficulty:"Normal",events:795,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.238,paritySummary:{errors:48,warns:72,resets:10}},{njs:13,offset:0,notes:572,bombs:22,obstacles:38,nps:2.857,length:420.5,characteristic:"Standard",difficulty:"Hard",events:795,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.238,paritySummary:{errors:33,warns:84,resets:10}},{njs:13,offset:0,notes:683,bombs:22,obstacles:38,nps:3.411,length:420.5,characteristic:"Standard",difficulty:"Expert",events:795,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.238,paritySummary:{errors:31,warns:31,resets:9}},{njs:13,offset:0,notes:577,bombs:22,obstacles:7,nps:2.882,length:420.5,characteristic:"90Degree",difficulty:"Expert",events:1050,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.238,paritySummary:{errors:34,warns:85,resets:10}}],downloadURL:"https://cdn.beatsaver.com/4837ebdf91168a5e26eb5beebda03ebef31e6841.zip",coverURL:"https://cdn.beatsaver.com/4837ebdf91168a5e26eb5beebda03ebef31e6841.jpg",previewURL:"https://cdn.beatsaver.com/4837ebdf91168a5e26eb5beebda03ebef31e6841.mp3"}],createdAt:"2020-01-01T01:33:52.347Z",updatedAt:"2020-01-01T01:33:52.347Z",lastPublishedAt:"2020-01-01T01:33:52.347Z"},{id:"9137",name:"Uno - Little Big",description:"https://www.youtube.com/watch?v=8hiHXbvsT8o",uploader:{id:4285760,name:"okdisplay",uniqueSet:!0,hash:"5cff0b7398cc5a672c84eda2",avatar:"https://cdn.beatsaver.com/avatar/404020982676717570.png",type:"DISCORD"},metadata:{bpm:142,duration:163,songName:"UNO",songSubName:"",songAuthorName:"Little Big",levelAuthorName:"OkDisplay"},stats:{plays:0,downloads:1734,upvotes:997,downvotes:18,score:.9223},uploaded:"2020-03-18T02:49:03.418Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"359433e3d701cc06b47ac0d7fbb9b077cd970c01",key:"9137",state:"Published",createdAt:"2020-03-18T02:49:03.418Z",sageScore:4,diffs:[{njs:15,offset:0,notes:706,bombs:0,obstacles:0,nps:4.54,length:368,characteristic:"Standard",difficulty:"Expert",events:1500,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.493,paritySummary:{errors:13,warns:14,resets:0}},{njs:17,offset:0,notes:705,bombs:9,obstacles:23,nps:4.534,length:368,characteristic:"Standard",difficulty:"ExpertPlus",events:1464,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.493,paritySummary:{errors:11,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/359433e3d701cc06b47ac0d7fbb9b077cd970c01.zip",coverURL:"https://cdn.beatsaver.com/359433e3d701cc06b47ac0d7fbb9b077cd970c01.jpg",previewURL:"https://cdn.beatsaver.com/359433e3d701cc06b47ac0d7fbb9b077cd970c01.mp3"}],createdAt:"2020-03-18T02:49:03.418Z",updatedAt:"2020-03-18T02:49:03.418Z",lastPublishedAt:"2020-03-18T02:49:03.418Z"},{id:"7310",name:"The Struts - Body Talks ft. Kesha",description:"There is a significant lack of The Struts maps out there, so figured I'd get the ball rolling with this one. \n\nThe expert+ map was made by the incredible ConnorJC. He has a great mapping style and regularly uploads charts in the expert to expert+ range. You can check him out here:\nhttps://www.youtube.com/channel/UC_XqKPpfBiWEYZ-dhcKRPBw\nhttps://bsaber.com/members/connorjc/\n\nAll other difficulties are included as well\n\nEnjoy!",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:186,duration:176,songName:"Body Talks",songSubName:"Ft. Kesha",songAuthorName:"The Struts",levelAuthorName:"Stumi & ConnorJC"},stats:{plays:0,downloads:1554,upvotes:760,downvotes:9,score:.9223},uploaded:"2019-12-01T13:43:45.996Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ed72bd798a0d05592ff63a5ad844cdff01a76800",key:"7310",state:"Published",createdAt:"2019-12-01T13:43:45.996Z",sageScore:6,diffs:[{njs:12,offset:0,notes:130,bombs:0,obstacles:54,nps:.766,length:526,characteristic:"Standard",difficulty:"Easy",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.677,paritySummary:{errors:26,warns:14,resets:0}},{njs:12,offset:0,notes:218,bombs:4,obstacles:60,nps:1.285,length:526,characteristic:"Standard",difficulty:"Normal",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.677,paritySummary:{errors:37,warns:26,resets:0}},{njs:14,offset:.8,notes:446,bombs:7,obstacles:65,nps:2.614,length:529,characteristic:"Standard",difficulty:"Hard",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.645,paritySummary:{errors:20,warns:10,resets:5}},{njs:16,offset:.4,notes:704,bombs:22,obstacles:67,nps:4.115,length:530.333,characteristic:"Standard",difficulty:"Expert",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.075,paritySummary:{errors:5,warns:7,resets:1}},{njs:19,offset:.25,notes:777,bombs:6,obstacles:25,nps:4.566,length:527.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2193,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.161,paritySummary:{errors:7,warns:8,resets:2}}],downloadURL:"https://cdn.beatsaver.com/ed72bd798a0d05592ff63a5ad844cdff01a76800.zip",coverURL:"https://cdn.beatsaver.com/ed72bd798a0d05592ff63a5ad844cdff01a76800.jpg",previewURL:"https://cdn.beatsaver.com/ed72bd798a0d05592ff63a5ad844cdff01a76800.mp3"}],createdAt:"2019-12-01T13:43:45.996Z",updatedAt:"2019-12-01T13:43:45.996Z",lastPublishedAt:"2019-12-01T13:43:45.996Z"},{id:"38ec",name:"The Bad Touch - Bloodhound Gang - BT90",description:'This map is part of a 90s songpack. Search "BT90" to find all the songs in the songpack.\r\nMap is created by Heisenberg_IRL. Check out https://www.twitch.tv/heisenberg_irl\r\nLights are made by XypherOrion. Check out https://www.twitch.tv/xypherorion\r\n\r\nSpecial thanks to Fafurion for feedback and playtesting',uploader:{id:27983,name:"heisenbergirl",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ec30",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ec30?d=retro",type:"SIMPLE"},metadata:{bpm:123,duration:234,songName:"The Bad Touch",songSubName:"Bloodhound Gang [BT90]",songAuthorName:"Heisenberg & XypherOrion",levelAuthorName:"heisenbergirl"},stats:{plays:0,downloads:5177,upvotes:2043,downvotes:65,score:.9223},uploaded:"2019-02-23T13:21:25Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d5e0ebff74ee79f517bbb580f3c55e389b09bfa0",key:"38ec",state:"Published",createdAt:"2019-02-23T13:21:25Z",sageScore:6,diffs:[{njs:14,offset:0,notes:809,bombs:0,obstacles:12,nps:3.694,length:449,characteristic:"Standard",difficulty:"Expert",events:2108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.024,paritySummary:{errors:55,warns:110,resets:0}},{njs:16,offset:0,notes:1062,bombs:2,obstacles:0,nps:4.849,length:449,characteristic:"Standard",difficulty:"ExpertPlus",events:2108,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.024,paritySummary:{errors:113,warns:137,resets:2}}],downloadURL:"https://cdn.beatsaver.com/d5e0ebff74ee79f517bbb580f3c55e389b09bfa0.zip",coverURL:"https://cdn.beatsaver.com/d5e0ebff74ee79f517bbb580f3c55e389b09bfa0.jpg",previewURL:"https://cdn.beatsaver.com/d5e0ebff74ee79f517bbb580f3c55e389b09bfa0.mp3"}],createdAt:"2019-02-23T13:21:25Z",updatedAt:"2019-02-23T13:21:25Z",lastPublishedAt:"2019-02-23T13:21:25Z"},{id:"abbf",name:"PSYQUI feat. Marpril - Girly Cupid [Noodle Extensions]",description:"Expert Preview: https://www.youtube.com/watch?v=oD8JbrtlhZc\n\nSubmission #47 | 2nd place in the Building Blocks 2020 mapping contest. I hope you enjoy my first dive into Noodle Extensions and Chroma. This was a blast to make!\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725 !",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:133,duration:244,songName:"Girly Cupid",songSubName:"feat. Marpril",songAuthorName:"PSYQUI",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:4637,upvotes:1327,downvotes:32,score:.9222},uploaded:"2020-05-29T01:13:29.257Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"09083ec4540755cac095737c4af6af2910c4e856",key:"abbf",state:"Published",createdAt:"2020-05-29T01:13:29.257Z",sageScore:3,diffs:[{njs:18,offset:-.2,notes:764,bombs:0,obstacles:36331,nps:3.232,length:524,characteristic:"Standard",difficulty:"Expert",events:3539,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:236.391,paritySummary:{errors:28,warns:16,resets:0}}],downloadURL:"https://cdn.beatsaver.com/09083ec4540755cac095737c4af6af2910c4e856.zip",coverURL:"https://cdn.beatsaver.com/09083ec4540755cac095737c4af6af2910c4e856.jpg",previewURL:"https://cdn.beatsaver.com/09083ec4540755cac095737c4af6af2910c4e856.mp3"}],createdAt:"2020-05-29T01:13:29.257Z",updatedAt:"2020-05-29T01:13:29.257Z",lastPublishedAt:"2020-05-29T01:13:29.257Z"},{id:"1f90",name:"RIOT - Overkill",description:"",uploader:{id:408,name:"nuketime",uniqueSet:!0,hash:"5cff0b7498cc5a672c8507f7",avatar:"https://cdn.beatsaver.com/avatar/175811186007343104.png",type:"DISCORD"},metadata:{bpm:174,duration:308,songName:"Overkill",songSubName:"RIOT",songAuthorName:"Nuketime",levelAuthorName:"Nuketime"},stats:{plays:0,downloads:7566,upvotes:8186,downvotes:415,score:.9222},uploaded:"2018-11-10T20:57:38Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2fddb136bda7f9e29b4cb6621d6d8e0f8a43b126",key:"1f90",state:"Published",createdAt:"2018-11-10T20:57:38Z",sageScore:5,diffs:[{njs:17,offset:0,notes:1812,bombs:108,obstacles:132,nps:6.121,length:858.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3602,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296.034,paritySummary:{errors:85,warns:90,resets:0},stars:7.32}],downloadURL:"https://cdn.beatsaver.com/2fddb136bda7f9e29b4cb6621d6d8e0f8a43b126.zip",coverURL:"https://cdn.beatsaver.com/2fddb136bda7f9e29b4cb6621d6d8e0f8a43b126.jpg",previewURL:"https://cdn.beatsaver.com/2fddb136bda7f9e29b4cb6621d6d8e0f8a43b126.mp3"}],createdAt:"2018-11-10T20:57:38Z",updatedAt:"2018-11-10T20:57:38Z",lastPublishedAt:"2018-11-10T20:57:38Z"},{id:"58e",name:"History Maker - Dean Fujioka",description:"Expert / Hard / Normal | Get your Beat Saber -- on ICE!!! The lighting for this is top notch ;)\r\n\r\nVideo: https://youtu.be/ZS8YwPvKLgw\r\n\r\nThis map is best practice compliant: https://bit.ly/2LjbURw",uploader:{id:44595,name:"awfulnaut",uniqueSet:!0,hash:"5cff0b7398cc5a672c84edac",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84edac?d=retro",type:"SIMPLE"},metadata:{bpm:201,duration:187,songName:"History Maker",songSubName:"Dean Fujioka",songAuthorName:"Awfulnaut",levelAuthorName:"awfulnaut"},stats:{plays:0,downloads:2623,upvotes:1327,downvotes:32,score:.9222},uploaded:"2018-06-17T19:41:50Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"998f9b0a3e8b85ad697e8a7aa2c8b7d1f70936ce",key:"58e",state:"Published",createdAt:"2018-06-17T19:41:50Z",sageScore:6,diffs:[{njs:10,offset:0,notes:513,bombs:12,obstacles:27,nps:2.836,length:606,characteristic:"Standard",difficulty:"Normal",events:1153,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.896,paritySummary:{errors:86,warns:4,resets:0},stars:1.77},{njs:10,offset:0,notes:566,bombs:0,obstacles:27,nps:3.129,length:606,characteristic:"Standard",difficulty:"Hard",events:1153,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.896,paritySummary:{errors:47,warns:48,resets:0}},{njs:10,offset:0,notes:566,bombs:0,obstacles:27,nps:3.129,length:606,characteristic:"Standard",difficulty:"Expert",events:1153,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.896,paritySummary:{errors:43,warns:35,resets:0}}],downloadURL:"https://cdn.beatsaver.com/998f9b0a3e8b85ad697e8a7aa2c8b7d1f70936ce.zip",coverURL:"https://cdn.beatsaver.com/998f9b0a3e8b85ad697e8a7aa2c8b7d1f70936ce.jpg",previewURL:"https://cdn.beatsaver.com/998f9b0a3e8b85ad697e8a7aa2c8b7d1f70936ce.mp3"}],createdAt:"2018-06-17T19:41:50Z",updatedAt:"2018-06-17T19:41:50Z",lastPublishedAt:"2018-06-17T19:41:50Z"},{id:"14bd",name:"Starship - We Built This City",description:"Collab map between BennyDaBeast, Rustic and GreatYazer\r\nExper / Hard / Normal\r\nhttps://www.youtube.com/watch?v=KnLnUBIbfbM\r\nhttps://streamable.com/s8xvc",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:143,duration:298,songName:"We Built this City",songSubName:"Starship",songAuthorName:"GreatYazer, Rustic, BennyDaBeast",levelAuthorName:"rustic"},stats:{plays:0,downloads:9482,upvotes:3568,downvotes:145,score:.9221},uploaded:"2018-09-12T19:05:18Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"477fac9561e8931c7efaf49faa065611348f159d",key:"14bd",state:"Published",createdAt:"2018-09-12T19:05:18Z",sageScore:5,diffs:[{njs:10,offset:0,notes:472,bombs:26,obstacles:32,nps:1.64,length:686,characteristic:"Standard",difficulty:"Normal",events:1843,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:287.832,paritySummary:{errors:64,warns:56,resets:0},stars:1.03},{njs:10,offset:0,notes:759,bombs:26,obstacles:34,nps:2.633,length:687,characteristic:"Standard",difficulty:"Hard",events:1843,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.252,paritySummary:{errors:69,warns:90,resets:0},stars:1.66},{njs:11,offset:0,notes:967,bombs:26,obstacles:36,nps:3.355,length:687,characteristic:"Standard",difficulty:"Expert",events:1843,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.252,paritySummary:{errors:71,warns:126,resets:0}}],downloadURL:"https://cdn.beatsaver.com/477fac9561e8931c7efaf49faa065611348f159d.zip",coverURL:"https://cdn.beatsaver.com/477fac9561e8931c7efaf49faa065611348f159d.jpg",previewURL:"https://cdn.beatsaver.com/477fac9561e8931c7efaf49faa065611348f159d.mp3"}],createdAt:"2018-09-12T19:05:18Z",updatedAt:"2018-09-12T19:05:18Z",lastPublishedAt:"2018-09-12T19:05:18Z"},{id:"10e6",name:"We Wont Be Alone",description:"And here it is! \r\n\r\nAnother highly requested map!\r\n\r\nEnjoy to your hearts content!\r\n\r\n(P.s Thanks to everyone who supports me in my mapping endeavors and appreciate my work! it means a lot to me!)",uploader:{id:4289111,name:"blackblazon",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ef34",avatar:"https://cdn.beatsaver.com/avatar/127162370538733568.png",type:"DISCORD"},metadata:{bpm:175,duration:236,songName:"We Wont Be Alone",songSubName:"Feint",songAuthorName:"BlackBlazon",levelAuthorName:"blackblazon"},stats:{plays:0,downloads:1611,upvotes:1677,downvotes:48,score:.9221},uploaded:"2018-08-20T13:09:23Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fdb563492b79e57464424f73aa95ccc719f44576",key:"10e6",state:"Published",createdAt:"2018-08-20T13:09:23Z",sageScore:5,diffs:[{njs:10,offset:0,notes:1017,bombs:0,obstacles:0,nps:4.461,length:665,characteristic:"Standard",difficulty:"Expert",events:1043,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228,paritySummary:{errors:15,warns:5,resets:0}},{njs:15,offset:0,notes:1017,bombs:0,obstacles:0,nps:4.461,length:665,characteristic:"Standard",difficulty:"ExpertPlus",events:1043,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228,paritySummary:{errors:15,warns:5,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fdb563492b79e57464424f73aa95ccc719f44576.zip",coverURL:"https://cdn.beatsaver.com/fdb563492b79e57464424f73aa95ccc719f44576.jpg",previewURL:"https://cdn.beatsaver.com/fdb563492b79e57464424f73aa95ccc719f44576.mp3"}],createdAt:"2018-08-20T13:09:23Z",updatedAt:"2018-08-20T13:09:23Z",lastPublishedAt:"2018-08-20T13:09:23Z"},{id:"1a0b6",name:"[Electro Swing Pack] The Electric Swing Circus - Empires",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/WJy6_2cTPYg\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:120,duration:173,songName:"Empires",songSubName:"",songAuthorName:"The Electric Swing Circus",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:12715,upvotes:577,downvotes:3,score:.922},uploaded:"2021-07-08T15:24:55.769Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cecc89118b3a75ea7d65ceff5949b3ef19fea716",key:"1a0b6",state:"Published",createdAt:"2021-07-08T15:24:55.769Z",sageScore:4,diffs:[{njs:16,offset:-.5,notes:522,bombs:0,obstacles:24,nps:3.173,length:329,characteristic:"Standard",difficulty:"Expert",events:2051,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:823,bombs:0,obstacles:0,nps:5.003,length:329,characteristic:"Standard",difficulty:"ExpertPlus",events:2051,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cecc89118b3a75ea7d65ceff5949b3ef19fea716.zip",coverURL:"https://cdn.beatsaver.com/cecc89118b3a75ea7d65ceff5949b3ef19fea716.jpg",previewURL:"https://cdn.beatsaver.com/cecc89118b3a75ea7d65ceff5949b3ef19fea716.mp3"}],createdAt:"2021-07-08T15:24:55.769Z",updatedAt:"2021-07-08T15:24:55.769Z",lastPublishedAt:"2021-07-08T15:24:55.769Z"},{id:"97ec",name:"TheFatRat ft. Laura Brehm - MAYDAY (Nightcore Mix)",description:"#214\n\nYoutube Preview : https://youtu.be/YuAvugqwLiA",uploader:{id:4284588,name:"rigid",uniqueSet:!0,hash:"5cff0b7598cc5a672c852224",avatar:"https://cdn.beatsaver.com/avatar/295613108947386368.png",type:"DISCORD"},metadata:{bpm:173,duration:217,songName:"MAYDAY (Nightcore Mix)",songSubName:"",songAuthorName:"TheFatRat ft. Laura Brehm",levelAuthorName:"Rigid"},stats:{plays:0,downloads:1384,upvotes:782,downvotes:10,score:.922},uploaded:"2020-04-06T03:03:12.881Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"596010af1d16182372e2145d3b1687ecfed46387",key:"97ec",state:"Published",createdAt:"2020-04-06T03:03:12.881Z",sageScore:4,diffs:[{njs:16,offset:0,notes:751,bombs:30,obstacles:128,nps:3.599,length:600,characteristic:"Standard",difficulty:"Expert",events:2311,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.092,paritySummary:{errors:0,warns:0,resets:5}}],downloadURL:"https://cdn.beatsaver.com/596010af1d16182372e2145d3b1687ecfed46387.zip",coverURL:"https://cdn.beatsaver.com/596010af1d16182372e2145d3b1687ecfed46387.jpg",previewURL:"https://cdn.beatsaver.com/596010af1d16182372e2145d3b1687ecfed46387.mp3"}],createdAt:"2020-04-06T03:03:12.881Z",updatedAt:"2020-04-06T03:03:12.881Z",lastPublishedAt:"2020-04-06T03:03:12.881Z"},{id:"33c2",name:"Drive By - Train",description:'Another non weeb song, "Drive by" by Train, one of my favorite songs from the early days. Brought it from Itunes a long time ago so it\'s the highest quality file you can get :)',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:122,duration:196,songName:"Drive By",songSubName:"Train",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3897,upvotes:1087,downvotes:22,score:.922},uploaded:"2019-02-05T09:08:27Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5d3f6821934945c581882c067ef44d7e8c086423",key:"33c2",state:"Published",createdAt:"2019-02-05T09:08:27Z",sageScore:6,diffs:[{njs:15,offset:0,notes:895,bombs:0,obstacles:6,nps:4.795,length:379.5,characteristic:"Standard",difficulty:"Expert",events:1734,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.639,paritySummary:{errors:67,warns:85,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5d3f6821934945c581882c067ef44d7e8c086423.zip",coverURL:"https://cdn.beatsaver.com/5d3f6821934945c581882c067ef44d7e8c086423.jpg",previewURL:"https://cdn.beatsaver.com/5d3f6821934945c581882c067ef44d7e8c086423.mp3"}],createdAt:"2019-02-05T09:08:27Z",updatedAt:"2019-02-05T09:08:27Z",lastPublishedAt:"2019-02-05T09:08:27Z"},{id:"edf",name:"VORACITY",description:"enjoy :)",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:200,duration:221,songName:"VORACITY",songSubName:"OVERLOAD III OP",songAuthorName:"ejiejidayo",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:4278,upvotes:3077,downvotes:119,score:.922},uploaded:"2018-08-10T09:36:58Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7e096457e053dc0ee70fb5d08ed10332e5d5b75b",key:"edf",state:"Published",createdAt:"2018-08-10T09:36:58Z",sageScore:4,diffs:[{njs:10,offset:0,notes:778,bombs:37,obstacles:10,nps:3.723,length:696.5,characteristic:"Standard",difficulty:"Expert",events:827,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.95,paritySummary:{errors:117,warns:85,resets:3}}],downloadURL:"https://cdn.beatsaver.com/7e096457e053dc0ee70fb5d08ed10332e5d5b75b.zip",coverURL:"https://cdn.beatsaver.com/7e096457e053dc0ee70fb5d08ed10332e5d5b75b.jpg",previewURL:"https://cdn.beatsaver.com/7e096457e053dc0ee70fb5d08ed10332e5d5b75b.mp3"}],createdAt:"2018-08-10T09:36:58Z",updatedAt:"2018-08-10T09:36:58Z",lastPublishedAt:"2018-08-10T09:36:58Z"},{id:"4f55",name:"Setting Sail, Coming Home (Bastion OST) - Darren Korb",description:"I remade my first map. Now with 75% less mid notes, and 300% more difficulty options! Disclaimer: Easy difficulty is actually Normal.\nSetting Sail, Coming Home is the credits theme for the game Bastion by Supergiant Games. It features vocals by Ashley Barrett and Darren Korb, who sing the verses of Zia and Zulf, respectively. As there are two vocalists in this song, I made two Normal difficulties, which each follow a different vocalist. The Hard and Expert difficulties follow both at the same time. Expert is mostly just a bit more fleshed out Hard, it's not too much more difficult.\nDefinitely check out this game if you haven't played it already.\nThanks to the playtesters Fruhead and CyanSnow on the modding Discord for testing this one.\nSee it played here:\nZia: https://youtu.be/WCcH3Sd6n-Y\nZulf: https://youtu.be/vcu_FX3c3t0\nHard: https://youtu.be/zUvWu9XglNA\nExpert: https://youtu.be/s2E2uvX5lJ4",uploader:{id:12233,name:"wolfb",uniqueSet:!0,hash:"5cff0b7698cc5a672c854e4f",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c854e4f?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:164,songName:"Setting Sail, Coming Home",songSubName:"Darren Korb",songAuthorName:"Wolfb",levelAuthorName:"wolfb"},stats:{plays:0,downloads:1272,upvotes:666,downvotes:6,score:.9219},uploaded:"2019-05-27T11:55:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"df2178c8d5cfa459861c263934e6a598b15a5452",key:"4f55",state:"Published",createdAt:"2019-05-27T11:55:36Z",sageScore:5,diffs:[{njs:10,offset:0,notes:251,bombs:0,obstacles:11,nps:1.569,length:320,characteristic:"Standard",difficulty:"Easy",events:1099,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:27,warns:5,resets:0}},{njs:10,offset:0,notes:242,bombs:0,obstacles:11,nps:1.513,length:320,characteristic:"Standard",difficulty:"Normal",events:1099,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:26,warns:7,resets:0}},{njs:12,offset:0,notes:368,bombs:0,obstacles:11,nps:2.3,length:320,characteristic:"Standard",difficulty:"Hard",events:1102,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:27,warns:36,resets:0}},{njs:14,offset:0,notes:444,bombs:0,obstacles:11,nps:2.775,length:320,characteristic:"Standard",difficulty:"Expert",events:1104,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:17,warns:37,resets:0}}],downloadURL:"https://cdn.beatsaver.com/df2178c8d5cfa459861c263934e6a598b15a5452.zip",coverURL:"https://cdn.beatsaver.com/df2178c8d5cfa459861c263934e6a598b15a5452.jpg",previewURL:"https://cdn.beatsaver.com/df2178c8d5cfa459861c263934e6a598b15a5452.mp3"}],createdAt:"2019-05-27T11:55:36Z",updatedAt:"2019-05-27T11:55:36Z",lastPublishedAt:"2019-05-27T11:55:36Z"},{id:"1f03",name:"Monster - Skillet (Kole Edit)",description:"2018-11-08: Reupload because of ranking! Scoreboards are unaffected.\r\n\r\nMonster by hard rock band Skillet was a request I got and I found it worthy and fun to make into a Beat Saber map, so here it is!\r\nSong has been edited and re-arranged to be tighter and not too repetitive.\r\n\r\nPreview:\r\nhttps://youtu.be/avTEevEonOA\r\n\r\nBPM: 135\r\nDuration: 1:52\r\nEasy, Normal, Hard and Expert difficulties.\r\n\r\nEasy: 247, 8 obstacles, 4 mines\r\nNormal: 300 notes, 8 obstacles, 8 mines\r\nHard: 423 notes, 8 obstacles, 8 mines\r\nExpert: 437 notes, 8 obstacles, 8 mines\r\n\r\nThanks to Edzo, RaZn, VenclaireVR, squeaksies and Todokete for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:135,duration:112,songName:"Monster",songSubName:"Skillet",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:8892,upvotes:4266,downvotes:185,score:.9219},uploaded:"2018-11-08T21:27:23Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5730ecc93a6bc9147bda83f7975791a03ba5b90b",key:"1f03",state:"Published",createdAt:"2018-11-08T21:27:23Z",sageScore:4,diffs:[{njs:10.5,offset:0,notes:247,bombs:4,obstacles:8,nps:2.365,length:235,characteristic:"Standard",difficulty:"Easy",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.444,paritySummary:{errors:47,warns:7,resets:2}},{njs:10.5,offset:0,notes:300,bombs:8,obstacles:8,nps:2.872,length:235,characteristic:"Standard",difficulty:"Normal",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.444,paritySummary:{errors:32,warns:20,resets:0}},{njs:11,offset:0,notes:423,bombs:8,obstacles:8,nps:4.05,length:235,characteristic:"Standard",difficulty:"Hard",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.444,paritySummary:{errors:77,warns:51,resets:0}},{njs:11,offset:0,notes:437,bombs:8,obstacles:8,nps:4.184,length:235,characteristic:"Standard",difficulty:"Expert",events:627,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.444,paritySummary:{errors:71,warns:71,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5730ecc93a6bc9147bda83f7975791a03ba5b90b.zip",coverURL:"https://cdn.beatsaver.com/5730ecc93a6bc9147bda83f7975791a03ba5b90b.jpg",previewURL:"https://cdn.beatsaver.com/5730ecc93a6bc9147bda83f7975791a03ba5b90b.mp3"}],createdAt:"2018-11-08T21:27:23Z",updatedAt:"2018-11-08T21:27:23Z",lastPublishedAt:"2018-11-08T21:27:23Z"},{id:"15c6",name:"Ghostbusters - Ray Parker Jr",description:"",uploader:{id:4285018,name:"majorpickle",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f792",avatar:"https://cdn.beatsaver.com/avatar/450358937657671680.png",type:"DISCORD"},metadata:{bpm:115.22,duration:246,songName:"Ghostbusters",songSubName:"",songAuthorName:"Ray Parker Jr.",levelAuthorName:"Majorpickle"},stats:{plays:0,downloads:7046,upvotes:1877,downvotes:58,score:.9219},uploaded:"2018-09-19T02:38:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cc424123372e316bd2fc9439bf0972aded811d04",state:"Published",createdAt:"2021-08-27T12:04:43.371828Z",sageScore:5,diffs:[{njs:10,offset:0,notes:651,bombs:15,obstacles:80,nps:2.828,length:442,characteristic:"Standard",difficulty:"Normal",events:3704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.168,paritySummary:{errors:25,warns:25,resets:4}},{njs:11,offset:0,notes:933,bombs:15,obstacles:80,nps:4.035,length:444.031,characteristic:"Standard",difficulty:"Hard",events:3704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.226,paritySummary:{errors:54,warns:62,resets:4}},{njs:15,offset:0,notes:933,bombs:15,obstacles:80,nps:4.035,length:444.031,characteristic:"Standard",difficulty:"Expert",events:3704,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.226,paritySummary:{errors:54,warns:62,resets:4}},{njs:13,offset:0,notes:921,bombs:15,obstacles:72,nps:3.983,length:444.031,characteristic:"360Degree",difficulty:"Expert",events:2719,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.226,paritySummary:{errors:51,warns:50,resets:6}}],downloadURL:"https://cdn.beatsaver.com/cc424123372e316bd2fc9439bf0972aded811d04.zip",coverURL:"https://cdn.beatsaver.com/cc424123372e316bd2fc9439bf0972aded811d04.jpg",previewURL:"https://cdn.beatsaver.com/cc424123372e316bd2fc9439bf0972aded811d04.mp3"}],createdAt:"2018-09-19T02:38:07Z",updatedAt:"2021-08-27T12:05:13.876602Z",lastPublishedAt:"2021-08-27T12:04:50.582582Z"},{id:"19e23",name:"Home Free - Sea Shanty Medley",description:"Home Free medleys are amazing. This one was kind of a chat request. Cinema included.",uploader:{id:4287802,name:"origintt",uniqueSet:!0,hash:"5ef66418cb25920006b50ff3",avatar:"https://cdn.beatsaver.com/avatar/414156328072773632.png",type:"DISCORD"},metadata:{bpm:99,duration:236,songName:"Sea Shanty Medley",songSubName:"",songAuthorName:"Home Free",levelAuthorName:"OriginTT"},stats:{plays:0,downloads:6705,upvotes:603,downvotes:4,score:.9218},uploaded:"2021-07-04T19:18:25.991Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1fb8f1cd4a7e05c0a2463e36522298f0b24353ad",key:"19e23",state:"Published",createdAt:"2021-07-04T19:18:25.991Z",sageScore:5,diffs:[{njs:19,offset:0,notes:990,bombs:0,obstacles:20,nps:4.341,length:376.316,characteristic:"Standard",difficulty:"ExpertPlus",events:1464,chroma:!1,me:!1,ne:!1,cinema:!0,seconds:228.07,paritySummary:{errors:5,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1fb8f1cd4a7e05c0a2463e36522298f0b24353ad.zip",coverURL:"https://cdn.beatsaver.com/1fb8f1cd4a7e05c0a2463e36522298f0b24353ad.jpg",previewURL:"https://cdn.beatsaver.com/1fb8f1cd4a7e05c0a2463e36522298f0b24353ad.mp3"}],createdAt:"2021-07-04T19:18:25.991Z",updatedAt:"2021-07-04T19:18:25.991Z",lastPublishedAt:"2021-07-04T19:18:25.991Z"},{id:"744f",name:"Fantastic Dreamer (TV Size) [Konosuba! Opening] - Machico",description:"This map was converted from one of my old maps.\n\nFeel free to DM me on discord @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:185,duration:91,songName:"Fantastic Dreamer (TV Size)",songSubName:"",songAuthorName:"Machico",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4444,upvotes:1290,downvotes:31,score:.9218},uploaded:"2019-12-07T07:21:35.291Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c86360baf99485e61e18a80d48470c38f0faf4d3",key:"744f",state:"Published",createdAt:"2019-12-07T07:21:35.291Z",sageScore:3,diffs:[{njs:11,offset:0,notes:256,bombs:0,obstacles:0,nps:2.99,length:264,characteristic:"Standard",difficulty:"Hard",events:1956,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.622,paritySummary:{errors:20,warns:16,resets:0}},{njs:13,offset:0,notes:371,bombs:0,obstacles:2,nps:4.333,length:264,characteristic:"Standard",difficulty:"Expert",events:1956,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.622,paritySummary:{errors:15,warns:25,resets:0}},{njs:15,offset:0,notes:490,bombs:0,obstacles:4,nps:5.723,length:264,characteristic:"Standard",difficulty:"ExpertPlus",events:1956,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:85.622,paritySummary:{errors:20,warns:24,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c86360baf99485e61e18a80d48470c38f0faf4d3.zip",coverURL:"https://cdn.beatsaver.com/c86360baf99485e61e18a80d48470c38f0faf4d3.jpg",previewURL:"https://cdn.beatsaver.com/c86360baf99485e61e18a80d48470c38f0faf4d3.mp3"}],createdAt:"2019-12-07T07:21:35.291Z",updatedAt:"2019-12-07T07:21:35.291Z",lastPublishedAt:"2019-12-07T07:21:35.291Z"},{id:"4a3f",name:"[Anniversary] I Remember - Tristam [Heisenberg]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:110,duration:231,songName:"I Remember",songSubName:"Tristam",songAuthorName:"Heisenberg",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:3832,upvotes:2835,downvotes:107,score:.9218},uploaded:"2019-05-03T14:09:51Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"349ef04192948a8404ab7942d2813be3e37cd8fd",key:"4a3f",state:"Published",createdAt:"2019-05-03T14:09:51Z",sageScore:8,diffs:[{njs:11,offset:0,notes:237,bombs:0,obstacles:4,nps:1.137,length:382,characteristic:"Standard",difficulty:"Easy",events:8143,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:13,warns:24,resets:0}},{njs:12,offset:0,notes:362,bombs:0,obstacles:6,nps:1.737,length:382,characteristic:"Standard",difficulty:"Normal",events:8143,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:50,warns:35,resets:0}},{njs:13,offset:0,notes:465,bombs:0,obstacles:6,nps:2.232,length:382,characteristic:"Standard",difficulty:"Hard",events:8143,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:24,warns:36,resets:0}},{njs:14,offset:0,notes:627,bombs:0,obstacles:16,nps:3.009,length:382,characteristic:"Standard",difficulty:"Expert",events:8143,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:15,warns:26,resets:0}},{njs:16,offset:0,notes:853,bombs:0,obstacles:17,nps:4.094,length:382,characteristic:"Standard",difficulty:"ExpertPlus",events:8153,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:208.364,paritySummary:{errors:43,warns:111,resets:0}}],downloadURL:"https://cdn.beatsaver.com/349ef04192948a8404ab7942d2813be3e37cd8fd.zip",coverURL:"https://cdn.beatsaver.com/349ef04192948a8404ab7942d2813be3e37cd8fd.jpg",previewURL:"https://cdn.beatsaver.com/349ef04192948a8404ab7942d2813be3e37cd8fd.mp3"}],createdAt:"2019-05-03T14:09:51Z",updatedAt:"2019-05-03T14:09:51Z",lastPublishedAt:"2019-05-03T14:09:51Z"},{id:"17ac",name:"Holiday - Green Day",description:"Preview: https://www.youtube.com/watch?v=3eya5H-dYCc\nAlways enjoy making green day songs! We need more of them on beat saber!\nExpert - Hard - Normal\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:146,duration:233,songName:"Holiday",songSubName:"Green Day",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:4708,upvotes:2355,downvotes:82,score:.9218},uploaded:"2018-09-28T14:34:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"403efd4b7ec08f129f45f0859323f2d0ee052b34",key:"17ac",state:"Published",createdAt:"2018-09-28T14:34:41Z",sageScore:5,diffs:[{njs:10,offset:0,notes:477,bombs:0,obstacles:42,nps:2.161,length:539,characteristic:"Standard",difficulty:"Normal",events:1703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.507,paritySummary:{errors:45,warns:16,resets:0}},{njs:10,offset:0,notes:857,bombs:0,obstacles:2,nps:3.872,length:540.313,characteristic:"Standard",difficulty:"Hard",events:1703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.046,paritySummary:{errors:40,warns:78,resets:0}},{njs:10,offset:0,notes:1075,bombs:14,obstacles:2,nps:4.747,length:552.875,characteristic:"Standard",difficulty:"Expert",events:1703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:227.209,paritySummary:{errors:44,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/403efd4b7ec08f129f45f0859323f2d0ee052b34.zip",coverURL:"https://cdn.beatsaver.com/403efd4b7ec08f129f45f0859323f2d0ee052b34.jpg",previewURL:"https://cdn.beatsaver.com/403efd4b7ec08f129f45f0859323f2d0ee052b34.mp3"}],createdAt:"2018-09-28T14:34:41Z",updatedAt:"2018-09-28T14:34:41Z",lastPublishedAt:"2018-09-28T14:34:41Z"},{id:"5c83",name:"The Kids Arent Alright - The Offspring",description:"Shoutouts to twitch.tv/bearlyj and twitch.tv/whipstickgostop for playtesting!",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:194,duration:183,songName:"The Kids Arent Alright",songSubName:"",songAuthorName:"The Offspring",levelAuthorName:"Ris"},stats:{plays:0,downloads:5715,upvotes:2235,downvotes:76,score:.9217},uploaded:"2019-08-12T23:40:01.490Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"20986d8f9b32820de9a1953bf11db91abd27db27",key:"5c83",state:"Published",createdAt:"2019-08-12T23:40:01.490Z",sageScore:4,diffs:[{njs:10,offset:1,notes:328,bombs:2,obstacles:3,nps:1.848,length:573.809,characteristic:"Standard",difficulty:"Normal",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.467,paritySummary:{errors:44,warns:50,resets:0}},{njs:12,offset:1,notes:553,bombs:8,obstacles:3,nps:3.116,length:573.809,characteristic:"Standard",difficulty:"Hard",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.467,paritySummary:{errors:70,warns:70,resets:0}},{njs:16,offset:1,notes:909,bombs:8,obstacles:3,nps:5.122,length:573.809,characteristic:"Standard",difficulty:"Expert",events:396,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.467,paritySummary:{errors:61,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/20986d8f9b32820de9a1953bf11db91abd27db27.zip",coverURL:"https://cdn.beatsaver.com/20986d8f9b32820de9a1953bf11db91abd27db27.jpg",previewURL:"https://cdn.beatsaver.com/20986d8f9b32820de9a1953bf11db91abd27db27.mp3"}],createdAt:"2019-08-12T23:40:01.490Z",updatedAt:"2019-08-12T23:40:01.490Z",lastPublishedAt:"2019-08-12T23:40:01.490Z"},{id:"4a45",name:"[Anniversary] Nothing Stopping Me (ft. Kat Nestel) - Vicetone [BennyDaBeast]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:223,songName:"Nothing Stopping Me (ft. Kat Nestel)",songSubName:"Vicetone",songAuthorName:"BennyDaBeast",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:3386,upvotes:2390,downvotes:84,score:.9217},uploaded:"2019-05-03T14:10:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"01e9554069556f1756cbfcf9ac233b68d98b19c8",key:"4a45",state:"Published",createdAt:"2019-05-03T14:10:40Z",sageScore:7,diffs:[{njs:10,offset:0,notes:403,bombs:104,obstacles:22,nps:1.568,length:544,characteristic:"Standard",difficulty:"Easy",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:257.008,paritySummary:{errors:61,warns:32,resets:16}},{njs:10,offset:0,notes:481,bombs:104,obstacles:22,nps:1.872,length:544,characteristic:"Standard",difficulty:"Normal",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:257.008,paritySummary:{errors:71,warns:49,resets:20}},{njs:12,offset:0,notes:647,bombs:104,obstacles:22,nps:2.517,length:544,characteristic:"Standard",difficulty:"Hard",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:257.008,paritySummary:{errors:105,warns:80,resets:18}},{njs:12,offset:0,notes:693,bombs:104,obstacles:22,nps:3.274,length:448,characteristic:"Standard",difficulty:"Expert",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.654,paritySummary:{errors:65,warns:109,resets:20}},{njs:15,offset:0,notes:914,bombs:96,obstacles:34,nps:4.318,length:448,characteristic:"Standard",difficulty:"ExpertPlus",events:2514,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.654,paritySummary:{errors:94,warns:128,resets:20}}],downloadURL:"https://cdn.beatsaver.com/01e9554069556f1756cbfcf9ac233b68d98b19c8.zip",coverURL:"https://cdn.beatsaver.com/01e9554069556f1756cbfcf9ac233b68d98b19c8.jpg",previewURL:"https://cdn.beatsaver.com/01e9554069556f1756cbfcf9ac233b68d98b19c8.mp3"}],createdAt:"2019-05-03T14:10:40Z",updatedAt:"2019-05-03T14:10:40Z",lastPublishedAt:"2019-05-03T14:10:40Z"},{id:"485a",name:"Lost in the Rhythm - Jamie Berry ft. Octavia Rose",description:"Got me twistin' and turnin' around in my Jimmy Choos\r\n\r\nOnce again get a variety of maps from the Funrankable team: Lighting and Ex+ by LittleAsi, Ex+ by Ryger, with Ex+, Expert, and Normal by baxter395. Enjoy each difficulty for a variety of novel styles.\r\n\r\nIf you enjoy our maps, please support the Funrankable Collective by contributing to our Patreon:\r\nhttps://www.patreon.com/funrankable\r\n\r\nThanks to these hip cats for playtesting and feedback: RedMagi, Qwasix",uploader:{id:37517,name:"funrankable",uniqueSet:!0,hash:"5cff0b7798cc5a672c8561ac",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8561ac?d=retro",type:"SIMPLE"},metadata:{bpm:121,duration:185,songName:"Lost in the Rhythm",songSubName:"Jamie Berry ft. Octavia Rose",songAuthorName:"Funrankable",levelAuthorName:"Funrankable"},stats:{plays:0,downloads:2942,upvotes:2309,downvotes:80,score:.9217},uploaded:"2019-04-25T19:03:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f819a2f44993ed7ea1630e103a106b2d1f7808ac",key:"485a",state:"Published",createdAt:"2019-04-25T19:03:46Z",sageScore:7,diffs:[{njs:11,offset:1,notes:350,bombs:0,obstacles:12,nps:2.028,length:348,characteristic:"Standard",difficulty:"Easy",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.562,paritySummary:{errors:48,warns:44,resets:0}},{njs:12,offset:1,notes:673,bombs:32,obstacles:6,nps:3.9,length:348,characteristic:"Standard",difficulty:"Normal",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.562,paritySummary:{errors:39,warns:20,resets:9}},{njs:14,offset:0,notes:785,bombs:207,obstacles:10,nps:4.549,length:348,characteristic:"Standard",difficulty:"Hard",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:172.562,paritySummary:{errors:37,warns:22,resets:11}},{njs:14,offset:0,notes:899,bombs:0,obstacles:4,nps:5.008,length:362,characteristic:"Standard",difficulty:"Expert",events:7794,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.504,paritySummary:{errors:38,warns:35,resets:0}},{njs:16,offset:0,notes:786,bombs:5,obstacles:79,nps:4.355,length:364,characteristic:"Standard",difficulty:"ExpertPlus",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.496,paritySummary:{errors:63,warns:97,resets:4}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:7779,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f819a2f44993ed7ea1630e103a106b2d1f7808ac.zip",coverURL:"https://cdn.beatsaver.com/f819a2f44993ed7ea1630e103a106b2d1f7808ac.jpg",previewURL:"https://cdn.beatsaver.com/f819a2f44993ed7ea1630e103a106b2d1f7808ac.mp3"}],createdAt:"2019-04-25T19:03:46Z",updatedAt:"2019-04-25T19:03:46Z",lastPublishedAt:"2019-04-25T19:03:46Z"},{id:"19ca",name:"Bubble Pop - Hyuna",description:"Made for Nichole!\r\nCheck her out on twitch: https://www.twitch.tv/lovingwaifuu\r\n\r\nSee it in action: https://www.youtube.com/watch?v=U2-JYSybh9Y\r\n\r\nThank you to my playtesters:\r\n\r\nQTpop (https://www.twitch.tv/qtpop)\r\nDuovr (https://www.twitch.tv/duovr)\r\nXypherorion (https://www.twitch.tv/Xypherorion)\r\n\r\nI stream playing and making maps for beat saber: https://www.twitch.tv/fafurion",uploader:{id:38202,name:"fafurion",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f945",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f945?d=retro",type:"SIMPLE"},metadata:{bpm:146,duration:214,songName:"Bubble Pop",songSubName:"Hyuna",songAuthorName:"Fafurion",levelAuthorName:"fafurion"},stats:{plays:0,downloads:8139,upvotes:2698,downvotes:100,score:.9217},uploaded:"2018-10-12T03:28:19Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"e8ed13a78cd1e566f754d0cb47d4b5cde8918abe",key:"19ca",state:"Published",createdAt:"2018-10-12T03:28:19Z",sageScore:6,diffs:[{njs:10,offset:0,notes:355,bombs:0,obstacles:2,nps:1.695,length:509.719,characteristic:"Standard",difficulty:"Easy",events:1211,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.473,paritySummary:{errors:15,warns:2,resets:0},stars:.91},{njs:10,offset:0,notes:497,bombs:0,obstacles:2,nps:2.373,length:509.719,characteristic:"Standard",difficulty:"Normal",events:1211,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.473,paritySummary:{errors:28,warns:3,resets:0}},{njs:10,offset:0,notes:677,bombs:0,obstacles:87,nps:3.232,length:509.719,characteristic:"Standard",difficulty:"Hard",events:1211,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.473,paritySummary:{errors:51,warns:47,resets:0},stars:2.17},{njs:13,offset:0,notes:791,bombs:0,obstacles:118,nps:3.776,length:509.719,characteristic:"Standard",difficulty:"Expert",events:1211,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:209.473,paritySummary:{errors:70,warns:64,resets:0},stars:2.8}],downloadURL:"https://cdn.beatsaver.com/e8ed13a78cd1e566f754d0cb47d4b5cde8918abe.zip",coverURL:"https://cdn.beatsaver.com/e8ed13a78cd1e566f754d0cb47d4b5cde8918abe.jpg",previewURL:"https://cdn.beatsaver.com/e8ed13a78cd1e566f754d0cb47d4b5cde8918abe.mp3"}],createdAt:"2018-10-12T03:28:19Z",updatedAt:"2018-10-12T03:28:19Z",lastPublishedAt:"2018-10-12T03:28:19Z"},{id:"3a4",name:"Boulevard of Broken Dreams - Green Day",description:"Expert - Hard - Normal\n1000+ Notes on Expert\nLighting Events\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:167,duration:266,songName:"Boulevard of Broken Dreams",songSubName:"Green Day",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:6999,upvotes:6552,downvotes:321,score:.9216},uploaded:"2018-06-04T08:30:49Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fa36428f6eed2648dade2fe320156adfaabe07b5",key:"3a4",state:"Published",createdAt:"2018-06-04T08:30:49Z",sageScore:5,diffs:[{njs:10,offset:0,notes:474,bombs:0,obstacles:0,nps:1.932,length:683,characteristic:"Standard",difficulty:"Normal",events:1076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.389,paritySummary:{errors:182,warns:9,resets:0}},{njs:10,offset:0,notes:747,bombs:0,obstacles:0,nps:3.044,length:683,characteristic:"Standard",difficulty:"Hard",events:1076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.389,paritySummary:{errors:97,warns:30,resets:0}},{njs:10,offset:0,notes:1049,bombs:0,obstacles:0,nps:4.275,length:683,characteristic:"Standard",difficulty:"Expert",events:1076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:245.389,paritySummary:{errors:91,warns:73,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fa36428f6eed2648dade2fe320156adfaabe07b5.zip",coverURL:"https://cdn.beatsaver.com/fa36428f6eed2648dade2fe320156adfaabe07b5.jpg",previewURL:"https://cdn.beatsaver.com/fa36428f6eed2648dade2fe320156adfaabe07b5.mp3"}],createdAt:"2018-06-04T08:30:49Z",updatedAt:"2018-06-04T08:30:49Z",lastPublishedAt:"2018-06-04T08:30:49Z"},{id:"10fe4",name:"We Like To Party (on the train tracks)",description:"Don't play on the tracks.\n\n\n\n\n\n\n\n\n\n\n\n\n(account definitely isn't a Mawntee alt account no sir)",uploader:{id:1602,name:"chief-queef",uniqueSet:!0,hash:"5f9a4d2a030219000627c2bf",avatar:"https://cdn.beatsaver.com/avatar/1602.jpg",type:"SIMPLE"},metadata:{bpm:136,duration:34,songName:"We Like To Party",songSubName:"",songAuthorName:"CHURCH OF LEL",levelAuthorName:"Chief Queef"},stats:{plays:0,downloads:2345,upvotes:1022,downvotes:20,score:.9215},uploaded:"2020-11-15T18:12:41.227Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d004ad1ee631ae38ba7f0d336a039da8beb0b552",key:"10fe4",state:"Published",createdAt:"2020-11-15T18:12:41.227Z",sageScore:5,diffs:[{njs:69,offset:0,notes:781,bombs:0,obstacles:0,nps:23.922,length:73.984,characteristic:"Lawless",difficulty:"Easy",events:939,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:32.64,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d004ad1ee631ae38ba7f0d336a039da8beb0b552.zip",coverURL:"https://cdn.beatsaver.com/d004ad1ee631ae38ba7f0d336a039da8beb0b552.jpg",previewURL:"https://cdn.beatsaver.com/d004ad1ee631ae38ba7f0d336a039da8beb0b552.mp3"}],createdAt:"2020-11-15T18:12:41.227Z",updatedAt:"2020-11-15T18:12:41.227Z",lastPublishedAt:"2020-11-15T18:12:41.227Z"},{id:"a72f",name:"The World of Tune - Onoken feat. GaQdan",description:"88-2",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:108,duration:217,songName:"The World of Tune",songSubName:"Tones and Souls",songAuthorName:"Onoken feat. GaQdan",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:814,upvotes:597,downvotes:4,score:.9215},uploaded:"2020-05-17T11:49:56.405Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"750910ebc1b4e958ed2266ba31786ba52569c6a5",key:"a72f",state:"Published",createdAt:"2020-05-17T11:49:56.405Z",sageScore:6,diffs:[{njs:13,offset:-.3,notes:400,bombs:0,obstacles:65,nps:1.893,length:380.393,characteristic:"Standard",difficulty:"Hard",events:1813,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.329,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:-.6,notes:761,bombs:0,obstacles:56,nps:3.601,length:380.393,characteristic:"Standard",difficulty:"Expert",events:1813,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.329,paritySummary:{errors:5,warns:5,resets:0}},{njs:17,offset:.2,notes:948,bombs:0,obstacles:57,nps:4.486,length:380.393,characteristic:"Standard",difficulty:"ExpertPlus",events:1813,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:211.329,paritySummary:{errors:3,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/750910ebc1b4e958ed2266ba31786ba52569c6a5.zip",coverURL:"https://cdn.beatsaver.com/750910ebc1b4e958ed2266ba31786ba52569c6a5.jpg",previewURL:"https://cdn.beatsaver.com/750910ebc1b4e958ed2266ba31786ba52569c6a5.mp3"}],createdAt:"2020-05-17T11:49:56.405Z",updatedAt:"2020-05-17T11:49:56.405Z",lastPublishedAt:"2020-05-17T11:49:56.405Z"},{id:"3b6c",name:"Happatai - YATTA!",description:"edited: fixed a mistake in the Hard mode\r\n\r\nG-R-EE-N LEAVES! Japanese YMCA tbh\r\nIf you know this song, you a legend\r\n\r\nYoutube Preview: coming soon\r\n\r\nBPM 133\r\nHard, Expert\r\n\r\nHave fun!\r\n\r\ncontact me on discord\r\nDiscord: ETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:133,duration:237,songName:"YATTA!",songSubName:"Happatai",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:1630,upvotes:874,downvotes:14,score:.9215},uploaded:"2019-03-04T07:04:15Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9a7a73b32c7ffbc48a352963eb7298a918269458",key:"3b6c",state:"Published",createdAt:"2019-03-04T07:04:15Z",sageScore:6,diffs:[{njs:12,offset:0,notes:729,bombs:14,obstacles:8,nps:3.192,length:506.25,characteristic:"Standard",difficulty:"Hard",events:1354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228.383,paritySummary:{errors:83,warns:23,resets:2}},{njs:12,offset:0,notes:833,bombs:14,obstacles:8,nps:3.647,length:506.25,characteristic:"Standard",difficulty:"Expert",events:1354,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228.383,paritySummary:{errors:75,warns:27,resets:2}}],downloadURL:"https://cdn.beatsaver.com/9a7a73b32c7ffbc48a352963eb7298a918269458.zip",coverURL:"https://cdn.beatsaver.com/9a7a73b32c7ffbc48a352963eb7298a918269458.jpg",previewURL:"https://cdn.beatsaver.com/9a7a73b32c7ffbc48a352963eb7298a918269458.mp3"}],createdAt:"2019-03-04T07:04:15Z",updatedAt:"2019-03-04T07:04:15Z",lastPublishedAt:"2019-03-04T07:04:15Z"},{id:"d411",name:"[FUTURE FUNK PACK] SUPER RISER! (Short Ver.) - Nanidato",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\n"SUPER RISER!" by Nanidato was sampled from Chieri Ito\'s "Merry Christmas" \n\nThis version of "SUPER RISER!" is a short edit I made to reduce the repetitive sections of the song near the end\n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:141,duration:155,songName:"SUPER RISER!",songSubName:"(Short Ver.)",songAuthorName:"Nanidato",levelAuthorName:"ETAN"},stats:{plays:0,downloads:3828,upvotes:766,downvotes:10,score:.9214},uploaded:"2020-08-11T17:47:02.338Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c6b7136536ef5647374198769b3211b2b2e4ee17",key:"d411",state:"Published",createdAt:"2020-08-11T17:47:02.338Z",sageScore:7,diffs:[{njs:10,offset:0,notes:158,bombs:0,obstacles:14,nps:1.066,length:347.5,characteristic:"Standard",difficulty:"Easy",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:147.872,paritySummary:{errors:57,warns:10,resets:0}},{njs:11,offset:1,notes:218,bombs:0,obstacles:14,nps:1.454,length:351.5,characteristic:"Standard",difficulty:"Normal",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.574,paritySummary:{errors:14,warns:2,resets:0}},{njs:13,offset:1,notes:398,bombs:0,obstacles:16,nps:2.654,length:351.5,characteristic:"Standard",difficulty:"Hard",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.574,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:.1,notes:578,bombs:0,obstacles:16,nps:3.854,length:351.5,characteristic:"Standard",difficulty:"Expert",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.574,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:-.4,notes:781,bombs:0,obstacles:15,nps:5.207,length:351.5,characteristic:"Standard",difficulty:"ExpertPlus",events:8420,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.574,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c6b7136536ef5647374198769b3211b2b2e4ee17.zip",coverURL:"https://cdn.beatsaver.com/c6b7136536ef5647374198769b3211b2b2e4ee17.jpg",previewURL:"https://cdn.beatsaver.com/c6b7136536ef5647374198769b3211b2b2e4ee17.mp3"}],createdAt:"2020-08-11T17:47:02.338Z",updatedAt:"2020-08-11T17:47:02.338Z",lastPublishedAt:"2020-08-11T17:47:02.338Z"},{id:"6e6e",name:"The Pretender - Foo Fighters",description:"Shoutout to twitch.tv/whipstickgostop for playtesting!",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:173,duration:271,songName:"The Pretender",songSubName:"",songAuthorName:"Foo Fighters",levelAuthorName:"Ris"},stats:{plays:0,downloads:6031,upvotes:2032,downvotes:67,score:.9213},uploaded:"2019-11-05T23:48:37.168Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"aa64d183dbdfd111f578e3ab80beeca2f61d13eb",key:"6e6e",state:"Published",createdAt:"2019-11-05T23:48:37.168Z",sageScore:2,diffs:[{njs:10,offset:0,notes:427,bombs:0,obstacles:6,nps:1.612,length:764,characteristic:"Standard",difficulty:"Normal",events:471,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:264.971,paritySummary:{errors:70,warns:44,resets:0}},{njs:12,offset:0,notes:641,bombs:0,obstacles:6,nps:2.418,length:764.5,characteristic:"Standard",difficulty:"Hard",events:471,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.145,paritySummary:{errors:78,warns:64,resets:0}},{njs:16,offset:.7,notes:958,bombs:4,obstacles:6,nps:3.613,length:764.5,characteristic:"Standard",difficulty:"Expert",events:471,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.145,paritySummary:{errors:64,warns:63,resets:2}}],downloadURL:"https://cdn.beatsaver.com/aa64d183dbdfd111f578e3ab80beeca2f61d13eb.zip",coverURL:"https://cdn.beatsaver.com/aa64d183dbdfd111f578e3ab80beeca2f61d13eb.jpg",previewURL:"https://cdn.beatsaver.com/aa64d183dbdfd111f578e3ab80beeca2f61d13eb.mp3"}],createdAt:"2019-11-05T23:48:37.168Z",updatedAt:"2019-11-05T23:48:37.168Z",lastPublishedAt:"2019-11-05T23:48:37.168Z"},{id:"68c5",name:"Sky Fracture VIP (ft. Miss Lina) - Getsix",description:"Ever wondered how one song would look like when mapped by several different mappers in their own mapping style? Then this map is for you! A big collaboration project started by Sykes19, it features a total of 17 maps and 6 unique lightshows, made by 15 mappers and 5 lighters. Special thanks to Getsix for making a Beat Saber edit of his song Sky Fracture VIP ft. Miss Lina!\n\nMapping Extensions mod required for some difficulties (see below).\nChromaLite mod highly recommended for Chroma colored lights.\nSongCore mod highly recommended for custom colors.\n\nStandard:\n1. techbutterfly (794 notes)\n2. Helen Carnate (833 notes)\n3. Bloodcloak (845 notes)\n4. Teuflum (1327 notes)\n5. Skyler Wallace (1329 notes)\n6. Raxan (1444 notes [found in No Arrows])\n7. LEh4nnes (1725 notes [found in No Arrows])\n\nLawless:\n1. Aeroluna (1355 notes)\n2. EncodeRed (1390 notes)\n3. xScaramouche (1585 notes)\n4. CyanSnow (1361 notes [Mapping Extensions])\n5. spooky ghost & Skyler Wallace (633 notes [Mapping Extensions])\n\nOne Saber:\n1. Skyler Wallace (775 notes)\n2. Kolezan (793 notes)\n3. 219278 (968 notes)\n4. 219278 (1104 notes)\n5. thelitlewiseowl (1347 notes)\n\nLightshows:\n1. Halcyon12 (17,993 lighting events)\n2. 219278 - (23,157 lighting events)\n3. Skeelie (26,500 lighting events)\n4. Aeroluna (29,982 lighting events)\n5. spooky ghost (27,387 lighting events, 26,047 walls [Mapping Extensions])\n6. 125K Lightshow (125,038 lighting events [found in No Arrows])",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:176,duration:219,songName:"Sky Fracture VIP",songSubName:"ft. Miss Lina",songAuthorName:"Getsix",levelAuthorName:"Various Mappers"},stats:{plays:0,downloads:4504,upvotes:2272,downvotes:79,score:.9213},uploaded:"2019-10-09T06:45:54.603Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"499e94f2ffb162dba02d4e499163a9cde3b925e5",key:"68c5",state:"Published",createdAt:"2019-10-09T06:45:54.603Z",sageScore:7,diffs:[{njs:16,offset:1,notes:794,bombs:0,obstacles:122,nps:2.019,length:1153.797,characteristic:"Standard",difficulty:"Easy",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:393.34,paritySummary:{errors:49,warns:43,resets:0}},{njs:15,offset:1,notes:833,bombs:34,obstacles:10,nps:3.858,length:633.356,characteristic:"Standard",difficulty:"Normal",events:29982,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:62,warns:52,resets:2}},{njs:16,offset:.75,notes:845,bombs:24,obstacles:64,nps:3.913,length:633.419,characteristic:"Standard",difficulty:"Hard",events:26500,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.938,paritySummary:{errors:12,warns:4,resets:8}},{njs:19,offset:0,notes:1327,bombs:84,obstacles:74,nps:6.146,length:633.356,characteristic:"Standard",difficulty:"Expert",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:18,warns:19,resets:11}},{njs:20,offset:0,notes:1329,bombs:29,obstacles:153,nps:6.155,length:633.356,characteristic:"Standard",difficulty:"ExpertPlus",events:27387,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:90,warns:100,resets:10}},{njs:16,offset:.75,notes:775,bombs:25,obstacles:215,nps:3.589,length:633.356,characteristic:"OneSaber",difficulty:"Easy",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:37,warns:62,resets:2}},{njs:16,offset:.75,notes:793,bombs:72,obstacles:54,nps:3.673,length:633.356,characteristic:"OneSaber",difficulty:"Normal",events:26500,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:32,warns:94,resets:3}},{njs:17,offset:.25,notes:968,bombs:0,obstacles:58,nps:4.483,length:633.356,characteristic:"OneSaber",difficulty:"Hard",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:8,warns:4,resets:0}},{njs:17,offset:.25,notes:1104,bombs:0,obstacles:58,nps:5.113,length:633.356,characteristic:"OneSaber",difficulty:"Expert",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:27,warns:23,resets:0}},{njs:19,offset:.125,notes:1347,bombs:26,obstacles:22,nps:6.236,length:633.656,characteristic:"OneSaber",difficulty:"ExpertPlus",events:27387,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.019,paritySummary:{errors:38,warns:85,resets:3}},{njs:22,offset:0,notes:1444,bombs:0,obstacles:37,nps:6.688,length:633.356,characteristic:"NoArrows",difficulty:"Hard",events:29982,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:9,warns:20,resets:0}},{njs:22,offset:0,notes:1725,bombs:118,obstacles:104,nps:7.989,length:633.356,characteristic:"NoArrows",difficulty:"Expert",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:10,warns:4,resets:13}},{njs:100,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"NoArrows",difficulty:"ExpertPlus",events:125018,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Normal",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Hard",events:26500,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Expert",events:29982,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:0,bombs:0,obstacles:26047,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:27387,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:1355,bombs:18,obstacles:0,nps:6.276,length:633.356,characteristic:"Lawless",difficulty:"Easy",events:29982,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:26,warns:28,resets:0}},{njs:17,offset:1,notes:1390,bombs:46,obstacles:65,nps:6.437,length:633.419,characteristic:"Lawless",difficulty:"Normal",events:23157,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.938,paritySummary:{errors:32,warns:18,resets:0}},{njs:19,offset:0,notes:1585,bombs:46,obstacles:25,nps:7.341,length:633.356,characteristic:"Lawless",difficulty:"Hard",events:17993,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:16,warns:14,resets:0}},{njs:21,offset:0,notes:1361,bombs:46,obstacles:1,nps:6.303,length:633.356,characteristic:"Lawless",difficulty:"Expert",events:26083,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:215.917,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:633,bombs:0,obstacles:26047,nps:3.077,length:603.356,characteristic:"Lawless",difficulty:"ExpertPlus",events:27387,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:205.69,paritySummary:{errors:64,warns:39,resets:0}}],downloadURL:"https://cdn.beatsaver.com/499e94f2ffb162dba02d4e499163a9cde3b925e5.zip",coverURL:"https://cdn.beatsaver.com/499e94f2ffb162dba02d4e499163a9cde3b925e5.jpg",previewURL:"https://cdn.beatsaver.com/499e94f2ffb162dba02d4e499163a9cde3b925e5.mp3"}],createdAt:"2019-10-09T06:45:54.603Z",updatedAt:"2019-10-09T06:45:54.603Z",lastPublishedAt:"2019-10-09T06:45:54.603Z"},{id:"612d",name:"[Anniversary] Overkill - RIOT [Heisenberg & Skyler Wallace]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:174,duration:310,songName:"Overkill",songSubName:"",songAuthorName:"RIOT",levelAuthorName:"Heisenberg & Skyler Wallace"},stats:{plays:0,downloads:2777,upvotes:1933,downvotes:62,score:.9213},uploaded:"2019-09-04T02:20:01.432Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8af36a369b051a4a82348dccd2051ee64530d12d",key:"612d",state:"Published",createdAt:"2019-09-04T02:20:01.432Z",sageScore:6,diffs:[{njs:15,offset:.75,notes:826,bombs:664,obstacles:25,nps:2.79,length:858.5,characteristic:"Standard",difficulty:"Hard",events:12607,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296.035,paritySummary:{errors:58,warns:88,resets:16}},{njs:17,offset:.25,notes:1114,bombs:668,obstacles:27,nps:3.763,length:858.5,characteristic:"Standard",difficulty:"Expert",events:12190,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296.034,paritySummary:{errors:60,warns:107,resets:16}},{njs:19,offset:.25,notes:1925,bombs:462,obstacles:1e3,nps:6.503,length:858.5,characteristic:"Standard",difficulty:"ExpertPlus",events:12513,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:296.035,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8af36a369b051a4a82348dccd2051ee64530d12d.zip",coverURL:"https://cdn.beatsaver.com/8af36a369b051a4a82348dccd2051ee64530d12d.jpg",previewURL:"https://cdn.beatsaver.com/8af36a369b051a4a82348dccd2051ee64530d12d.mp3"}],createdAt:"2019-09-04T02:20:01.432Z",updatedAt:"2019-09-04T02:20:01.432Z",lastPublishedAt:"2019-09-04T02:20:01.432Z"},{id:"5222",name:"To see the future [Sword Art Online Alternative: Gun Gale Online Ending]",description:"Preview:\r\nhttps://www.youtube.com/watch?v=DEp-eEgl1_w\r\n\r\nMAPPING EXTENSIONS REQUIRED for walls and such\r\nThis took forever but it was SOOO worth it\r\n\r\nThanks to Sehria_K for playtesting!\r\n\r\nSAO Alternative: GGO ED by LLENN (Tomori Kusunoki)\r\n\r\nPlease enjoy\r\ngimme feedback on Discord\r\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:137,duration:256,songName:"To see the future",songSubName:"Tomori Kusunoki",songAuthorName:"ETAN",levelAuthorName:"ETAN"},stats:{plays:0,downloads:3227,upvotes:940,downvotes:17,score:.9212},uploaded:"2019-06-07T21:47:12Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7e33f5491f94b5b3590864629579ed59f3f8fc90",key:"5222",state:"Published",createdAt:"2019-06-07T21:47:12Z",sageScore:6,diffs:[{njs:13,offset:0,notes:622,bombs:111,obstacles:692,nps:2.479,length:573,characteristic:"Standard",difficulty:"Hard",events:3793,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:250.949,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:924,bombs:92,obstacles:692,nps:3.68,length:573.25,characteristic:"Standard",difficulty:"Expert",events:3793,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:251.058,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7e33f5491f94b5b3590864629579ed59f3f8fc90.zip",coverURL:"https://cdn.beatsaver.com/7e33f5491f94b5b3590864629579ed59f3f8fc90.jpg",previewURL:"https://cdn.beatsaver.com/7e33f5491f94b5b3590864629579ed59f3f8fc90.mp3"}],createdAt:"2019-06-07T21:47:12Z",updatedAt:"2019-06-07T21:47:12Z",lastPublishedAt:"2019-06-07T21:47:12Z"},{id:"2ece",name:"#CookieJar - Red Velvet",description:"I love Nichole (LovingWaifuu) I made this chart for her\r\nFollow her twitch: https://www.twitch.tv/lovingwaifuu\r\nAlso follow me on twitch: https://www.twitch.tv/rinkusenpai\r\nThank you Redmagi and Don for the testplays!\r\nEdit: I fixed some weird stuff that happened with copy/paste and my stupidity, sorry about leaderboards",uploader:{id:16388,name:"rinkusenpai",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f6cc",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f6cc?d=retro",type:"SIMPLE"},metadata:{bpm:159,duration:214,songName:"#Cookie Jar",songSubName:"Red Velvet",songAuthorName:"RinkuSenpai",levelAuthorName:"rinkusenpai"},stats:{plays:0,downloads:2705,upvotes:1202,downvotes:28,score:.9212},uploaded:"2019-01-19T01:42:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ae11541d849b9126469c79f5ab61b088def692c1",key:"2ece",state:"Published",createdAt:"2019-01-19T01:42:07Z",sageScore:5,diffs:[{njs:12,offset:0,notes:821,bombs:0,obstacles:20,nps:4.029,length:540,characteristic:"Standard",difficulty:"Expert",events:2173,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.774,paritySummary:{errors:43,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ae11541d849b9126469c79f5ab61b088def692c1.zip",coverURL:"https://cdn.beatsaver.com/ae11541d849b9126469c79f5ab61b088def692c1.jpg",previewURL:"https://cdn.beatsaver.com/ae11541d849b9126469c79f5ab61b088def692c1.mp3"}],createdAt:"2019-01-19T01:42:07Z",updatedAt:"2019-01-19T01:42:07Z",lastPublishedAt:"2019-01-19T01:42:07Z"},{id:"83b",name:"Otter Pop (feat. Hollis) - Shawn Wasabi",description:"Difficulties: Expert+ Only\r\nMore Benny Originals: https://beatsaver.com/searchhtml.php?q=bennydabeast",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:93,duration:170,songName:"Otter Pop (feat. Hollis)",songSubName:"Shawn Wasabi",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:3164,upvotes:2048,downvotes:68,score:.9212},uploaded:"2018-07-06T21:44:56Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c7e15a9eaeaae0fe9dd8e4ad62cfd849e3cc6cc7",key:"83b",state:"Published",createdAt:"2018-07-06T21:44:56Z",sageScore:5,diffs:[{njs:10,offset:0,notes:706,bombs:2,obstacles:36,nps:4.275,length:256,characteristic:"Standard",difficulty:"ExpertPlus",events:235,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:165.161,paritySummary:{errors:89,warns:89,resets:1}}],downloadURL:"https://cdn.beatsaver.com/c7e15a9eaeaae0fe9dd8e4ad62cfd849e3cc6cc7.zip",coverURL:"https://cdn.beatsaver.com/c7e15a9eaeaae0fe9dd8e4ad62cfd849e3cc6cc7.jpg",previewURL:"https://cdn.beatsaver.com/c7e15a9eaeaae0fe9dd8e4ad62cfd849e3cc6cc7.mp3"}],createdAt:"2018-07-06T21:44:56Z",updatedAt:"2018-07-06T21:44:56Z",lastPublishedAt:"2018-07-06T21:44:56Z"},{id:"dd1d",name:"yasuoP - Electric Angel/えれくとりっく・えんじぇぅ - Kagamine Rin Kagamine Ren - ArrangeCover 【Wall Map】(Fixed)",description:"Fixed\n\n【Preview】\nhttps://youtu.be/RI2jxRwj6WY",uploader:{id:4285467,name:"fefy",uniqueSet:!0,hash:"5cff0b7798cc5a672c856908",avatar:"https://cdn.beatsaver.com/avatar/380656936460484620.png",type:"DISCORD"},metadata:{bpm:150,duration:192,songName:"えれくとりっく・えんじぇぅ",songSubName:"鏡音リン・鏡音レンアレンジカバー",songAuthorName:"ヤスオ",levelAuthorName:"Fefy〈ふぇふぃー〉"},stats:{plays:0,downloads:1627,upvotes:963,downvotes:18,score:.9211},uploaded:"2020-08-24T09:58:50.214Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bba2b6d3af3dc614c65c4b87b6a50f118ed181a8",key:"dd1d",state:"Published",createdAt:"2020-08-24T09:58:50.214Z",sageScore:3,diffs:[{njs:16,offset:0,notes:639,bombs:0,obstacles:39988,nps:3.41,length:468.5,characteristic:"Standard",difficulty:"Hard",events:5,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:187.4,paritySummary:{errors:14,warns:15,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bba2b6d3af3dc614c65c4b87b6a50f118ed181a8.zip",coverURL:"https://cdn.beatsaver.com/bba2b6d3af3dc614c65c4b87b6a50f118ed181a8.jpg",previewURL:"https://cdn.beatsaver.com/bba2b6d3af3dc614c65c4b87b6a50f118ed181a8.mp3"}],createdAt:"2020-08-24T09:58:50.214Z",updatedAt:"2020-08-24T09:58:50.214Z",lastPublishedAt:"2020-08-24T09:58:50.214Z"},{id:"86e9",name:"Best Day Of My Life - American Authors",description:'"Best Day of My Life" is a song by American pop rock band American Authors. The song was written by band members Zac Barnett, Dave Rublin, Matt Sanchez, and James Adam Shelley, along with producers Aaron Accetta and Shep Goodman. "Best Day of My Life" was originally recorded for release as a single by Mercury Records and Island Records on March 19, 2013.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:100,duration:194,songName:"Best Day Of My Life",songSubName:"",songAuthorName:"American Authors",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2731,upvotes:863,downvotes:14,score:.9211},uploaded:"2020-02-14T16:59:24.776Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6b253cbb5a2a81c2575e0778614bf009d7954834",key:"86e9",state:"Published",createdAt:"2020-02-14T16:59:24.776Z",sageScore:9,diffs:[{njs:8,offset:.4,notes:194,bombs:0,obstacles:4,nps:1.017,length:318,characteristic:"Standard",difficulty:"Easy",events:3091,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:28,warns:5,resets:0}},{njs:10,offset:.2,notes:399,bombs:0,obstacles:4,nps:2.091,length:318,characteristic:"Standard",difficulty:"Normal",events:3091,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:25,warns:24,resets:0}},{njs:12,offset:0,notes:634,bombs:0,obstacles:4,nps:3.323,length:318,characteristic:"Standard",difficulty:"Hard",events:3091,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:4,warns:5,resets:0}},{njs:14,offset:0,notes:837,bombs:0,obstacles:11,nps:4.387,length:318,characteristic:"Standard",difficulty:"Expert",events:3091,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:20,warns:20,resets:0}},{njs:16,offset:.4,notes:948,bombs:0,obstacles:11,nps:4.969,length:318,characteristic:"Standard",difficulty:"ExpertPlus",events:3095,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.8,paritySummary:{errors:15,warns:15,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6b253cbb5a2a81c2575e0778614bf009d7954834.zip",coverURL:"https://cdn.beatsaver.com/6b253cbb5a2a81c2575e0778614bf009d7954834.jpg",previewURL:"https://cdn.beatsaver.com/6b253cbb5a2a81c2575e0778614bf009d7954834.mp3"}],createdAt:"2020-02-14T16:59:24.776Z",updatedAt:"2020-02-14T16:59:24.776Z",lastPublishedAt:"2020-02-14T16:59:24.776Z"},{id:"5335",name:"David Guetta, Martin Garrix & Brooks - Like I Do",description:"This map - trust me - is sensational..\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:99,songName:"Like I Do",songSubName:"",songAuthorName:"David Guetta, Martin Garrix, Brooks",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:2486,upvotes:1153,downvotes:26,score:.9211},uploaded:"2019-06-16T19:05:31.814Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"59e1b8fa392e26bbcc528dcea08b80699efdbeb6",key:"5335",state:"Published",createdAt:"2019-06-16T19:05:31.814Z",sageScore:3,diffs:[{njs:11,offset:1,notes:171,bombs:0,obstacles:1,nps:1.91,length:191,characteristic:"Standard",difficulty:"Normal",events:4711,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.531,paritySummary:{errors:16,warns:3,resets:0}},{njs:13,offset:1,notes:234,bombs:0,obstacles:3,nps:2.6,length:192,characteristic:"Standard",difficulty:"Hard",events:4711,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:7,warns:0,resets:0}},{njs:15,offset:0,notes:305,bombs:4,obstacles:7,nps:3.407,length:191,characteristic:"Standard",difficulty:"Expert",events:4711,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.531,paritySummary:{errors:9,warns:6,resets:0}},{njs:17,offset:0,notes:397,bombs:12,obstacles:10,nps:4.411,length:192,characteristic:"Standard",difficulty:"ExpertPlus",events:4764,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:3,warns:2,resets:3}}],downloadURL:"https://cdn.beatsaver.com/59e1b8fa392e26bbcc528dcea08b80699efdbeb6.zip",coverURL:"https://cdn.beatsaver.com/59e1b8fa392e26bbcc528dcea08b80699efdbeb6.jpg",previewURL:"https://cdn.beatsaver.com/59e1b8fa392e26bbcc528dcea08b80699efdbeb6.mp3"}],createdAt:"2019-06-16T19:05:31.814Z",updatedAt:"2019-06-16T19:05:31.814Z",lastPublishedAt:"2019-06-16T19:05:31.814Z"},{id:"e44",name:"Big Girl (You Are Beautiful) - MIKA",description:"Prepare yourself for some big moves!\r\nPlaythrough : https://youtu.be/hzGaITR-648",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:116,duration:241,songName:"Big Girl (You Are Beatiful)",songSubName:"MIKA",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:3095,upvotes:1222,downvotes:29,score:.9211},uploaded:"2018-08-07T12:02:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6c4f86a126cd7465ec536837f3e73874e07068ef",key:"e44",state:"Published",createdAt:"2018-08-07T12:02:28Z",sageScore:5,diffs:[{njs:10,offset:0,notes:855,bombs:0,obstacles:18,nps:3.723,length:444,characteristic:"Standard",difficulty:"Expert",events:645,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:229.655,paritySummary:{errors:56,warns:63,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6c4f86a126cd7465ec536837f3e73874e07068ef.zip",coverURL:"https://cdn.beatsaver.com/6c4f86a126cd7465ec536837f3e73874e07068ef.jpg",previewURL:"https://cdn.beatsaver.com/6c4f86a126cd7465ec536837f3e73874e07068ef.mp3"}],createdAt:"2018-08-07T12:02:28Z",updatedAt:"2018-08-07T12:02:28Z",lastPublishedAt:"2018-08-07T12:02:28Z"},{id:"6bfa",name:"Approaching Nirvana - Alone",description:"https://www.youtube.com/watch?v=lZvGn7RUC7c",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:170,songName:"Alone",songSubName:"",songAuthorName:"Approaching Nirvana",levelAuthorName:"Rustic"},stats:{plays:0,downloads:1796,upvotes:1032,downvotes:21,score:.921},uploaded:"2019-10-24T19:54:05.671Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ccf70e940a4ec45c70a8f3ae7be18a2ea771461d",key:"6bfa",state:"Published",createdAt:"2019-10-24T19:54:05.671Z",sageScore:6,diffs:[{njs:18,offset:0,notes:416,bombs:0,obstacles:1689,nps:2.558,length:347,characteristic:"Standard",difficulty:"Expert",events:3383,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:162.656,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ccf70e940a4ec45c70a8f3ae7be18a2ea771461d.zip",coverURL:"https://cdn.beatsaver.com/ccf70e940a4ec45c70a8f3ae7be18a2ea771461d.jpg",previewURL:"https://cdn.beatsaver.com/ccf70e940a4ec45c70a8f3ae7be18a2ea771461d.mp3"}],createdAt:"2019-10-24T19:54:05.671Z",updatedAt:"2019-10-24T19:54:05.671Z",lastPublishedAt:"2019-10-24T19:54:05.671Z"},{id:"6330",name:"dj-Jo - The Legend of Zelda Ocarina of Time Title Theme Remix",description:"Ocarina of Time is one of my favorites games for the N64. Hope you guys enjoy it as much as I did",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:165,duration:249,songName:"The Legend of Zelda Ocarina of Time Title Theme Remix",songSubName:"",songAuthorName:"dj-Jo",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:2252,upvotes:670,downvotes:7,score:.9209},uploaded:"2019-09-13T19:15:16.984Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"35dffa3cbcaca2261d3bdd7306df9503fd9adc0f",key:"6330",state:"Published",createdAt:"2019-09-13T19:15:16.984Z",sageScore:6,diffs:[{njs:14,offset:0,notes:745,bombs:0,obstacles:28,nps:3.242,length:632,characteristic:"Standard",difficulty:"Expert",events:890,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:229.818,paritySummary:{errors:18,warns:7,resets:0}},{njs:16,offset:0,notes:955,bombs:0,obstacles:30,nps:4.155,length:632,characteristic:"Standard",difficulty:"ExpertPlus",events:1030,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:229.818,paritySummary:{errors:21,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/35dffa3cbcaca2261d3bdd7306df9503fd9adc0f.zip",coverURL:"https://cdn.beatsaver.com/35dffa3cbcaca2261d3bdd7306df9503fd9adc0f.jpg",previewURL:"https://cdn.beatsaver.com/35dffa3cbcaca2261d3bdd7306df9503fd9adc0f.mp3"}],createdAt:"2019-09-13T19:15:16.984Z",updatedAt:"2019-09-13T19:15:16.984Z",lastPublishedAt:"2019-09-13T19:15:16.984Z"},{id:"217",name:"Beat it - Michael Jackson",description:"Easy/Normal/Hard/Expert - Obstacles and mines purely for dance moves! 100% Expert Playthrough: https://bit.ly/2IKzCp3\r\n\r\n- Freeek =)",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:139,duration:143,songName:"Beat it",songSubName:"Michael Jackson",songAuthorName:"Freeek",levelAuthorName:"freeek"},stats:{plays:0,downloads:19417,upvotes:15233,downvotes:887,score:.9209},uploaded:"2018-05-25T14:20:19Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"4b2da842b687ec4cfbc948c583c21c79d4120de0",key:"217",state:"Published",createdAt:"2018-05-25T14:20:19Z",sageScore:5,diffs:[{njs:10,offset:0,notes:188,bombs:0,obstacles:84,nps:1.431,length:303.875,characteristic:"Standard",difficulty:"Easy",events:878,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:131.169,paritySummary:{errors:0,warns:0,resets:0},stars:.39},{njs:10,offset:0,notes:219,bombs:40,obstacles:70,nps:1.667,length:304,characteristic:"Standard",difficulty:"Normal",events:878,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:131.223,paritySummary:{errors:29,warns:8,resets:1},stars:.64},{njs:10,offset:0,notes:386,bombs:42,obstacles:72,nps:2.937,length:304,characteristic:"Standard",difficulty:"Hard",events:878,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:131.223,paritySummary:{errors:80,warns:49,resets:4},stars:1.7},{njs:10,offset:0,notes:623,bombs:46,obstacles:69,nps:4.741,length:304,characteristic:"Standard",difficulty:"Expert",events:878,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:131.223,paritySummary:{errors:87,warns:31,resets:2}}],downloadURL:"https://cdn.beatsaver.com/4b2da842b687ec4cfbc948c583c21c79d4120de0.zip",coverURL:"https://cdn.beatsaver.com/4b2da842b687ec4cfbc948c583c21c79d4120de0.jpg",previewURL:"https://cdn.beatsaver.com/4b2da842b687ec4cfbc948c583c21c79d4120de0.mp3"}],createdAt:"2018-05-25T14:20:19Z",updatedAt:"2018-05-25T14:20:19Z",lastPublishedAt:"2018-05-25T14:20:19Z"},{id:"bb4",name:"Octopath Traveler Main Theme - Yasunori Nishiki",description:"SS Full Combo: https://www.youtube.com/watch?v=zhwpW6ZfBqo",uploader:{id:41168,name:"edzo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f56a",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f56a?d=retro",type:"SIMPLE"},metadata:{bpm:264,duration:150,songName:"Octopath Traveler Main Theme",songSubName:"Yasunori Nishiki",songAuthorName:"Edzo",levelAuthorName:"edzo"},stats:{plays:0,downloads:1163,upvotes:518,downvotes:2,score:.9207},uploaded:"2018-07-25T01:41:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4ba6575e63038cc8bb747f7c1e56bf2202d551be",key:"bb4",state:"Published",createdAt:"2018-07-25T01:41:47Z",sageScore:4,diffs:[{njs:10,offset:0,notes:505,bombs:0,obstacles:5,nps:3.45,length:644,characteristic:"Standard",difficulty:"Expert",events:666,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:146.364,paritySummary:{errors:46,warns:29,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4ba6575e63038cc8bb747f7c1e56bf2202d551be.zip",coverURL:"https://cdn.beatsaver.com/4ba6575e63038cc8bb747f7c1e56bf2202d551be.jpg",previewURL:"https://cdn.beatsaver.com/4ba6575e63038cc8bb747f7c1e56bf2202d551be.mp3"}],createdAt:"2018-07-25T01:41:47Z",updatedAt:"2018-07-25T01:41:47Z",lastPublishedAt:"2018-07-25T01:41:47Z"},{id:"94cb",name:"Buttercup | By Jack Stauber | Charted By StyngMe |",description:"Difficulties: Hard\nEnjoy! <3",uploader:{id:30754,name:"styngme",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9cd",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9cd?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:202,songName:"Buttercup",songSubName:"",songAuthorName:"Jack Stauber",levelAuthorName:"StyngMe"},stats:{plays:0,downloads:1776,upvotes:692,downvotes:8,score:.9206},uploaded:"2020-03-29T01:21:28.921Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eb750f2dcec62ac3a816583854dbdee4514d8581",key:"94cb",state:"Published",createdAt:"2020-03-29T01:21:28.921Z",sageScore:2,diffs:[{njs:14,offset:0,notes:441,bombs:112,obstacles:41,nps:2.297,length:384,characteristic:"Standard",difficulty:"Hard",events:658,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:32,warns:19,resets:8}}],downloadURL:"https://cdn.beatsaver.com/eb750f2dcec62ac3a816583854dbdee4514d8581.zip",coverURL:"https://cdn.beatsaver.com/eb750f2dcec62ac3a816583854dbdee4514d8581.jpg",previewURL:"https://cdn.beatsaver.com/eb750f2dcec62ac3a816583854dbdee4514d8581.mp3"}],createdAt:"2020-03-29T01:21:28.921Z",updatedAt:"2020-03-29T01:21:28.921Z",lastPublishedAt:"2020-03-29T01:21:28.921Z"},{id:"a3a",name:"Platinum Disco - Yuka Iguchi",description:"One of the OPs in Nisemonogatari\r\nI know its a bit easy for an expert map. tried to keep it's flow mostly.\r\nBPM : 117, Duration 4:14\r\nDifficulties: Easy, Normal, Hard, Expert\r\n\r\nDemo : https://youtu.be/EV07KuV_DrA",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:117,duration:254,songName:"Platinum Disco",songSubName:"Yuka Iguchi",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:3105,upvotes:1914,downvotes:63,score:.9205},uploaded:"2018-07-18T00:14:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a372fee60c26b5e35861c71d9c38b4ef60974e93",key:"a3a",state:"Published",createdAt:"2018-07-18T00:14:28Z",sageScore:5,diffs:[{njs:10,offset:0,notes:264,bombs:0,obstacles:27,nps:1.059,length:486,characteristic:"Standard",difficulty:"Easy",events:605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.231,paritySummary:{errors:73,warns:54,resets:0}},{njs:10,offset:0,notes:483,bombs:0,obstacles:27,nps:1.938,length:486,characteristic:"Standard",difficulty:"Normal",events:605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.231,paritySummary:{errors:82,warns:100,resets:0}},{njs:10,offset:0,notes:738,bombs:0,obstacles:27,nps:2.961,length:486,characteristic:"Standard",difficulty:"Hard",events:605,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.231,paritySummary:{errors:107,warns:118,resets:0}},{njs:10,offset:0,notes:845,bombs:0,obstacles:27,nps:3.39,length:486,characteristic:"Standard",difficulty:"Expert",events:604,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:249.231,paritySummary:{errors:128,warns:111,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a372fee60c26b5e35861c71d9c38b4ef60974e93.zip",coverURL:"https://cdn.beatsaver.com/a372fee60c26b5e35861c71d9c38b4ef60974e93.jpg",previewURL:"https://cdn.beatsaver.com/a372fee60c26b5e35861c71d9c38b4ef60974e93.mp3"}],createdAt:"2018-07-18T00:14:28Z",updatedAt:"2018-07-18T00:14:28Z",lastPublishedAt:"2018-07-18T00:14:28Z"},{id:"b8d7",name:"Contradiction [The God of High School Opening] - KSUKE ft. Tyler Carter",description:'Everyone step to the left. Wait, wrong song xD but it does have walls that make you go left right down up.\n\n"Contradiction" is KSUKE\'s latest Single featuring American singer Tyler Carter. It is used as the opening song in the upcoming Crunchyroll anime adaption of The God of High School.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:130,duration:200,songName:"Contradiction",songSubName:"ft. Tyler Carter",songAuthorName:"KSUKE",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:9869,upvotes:1479,downvotes:42,score:.9204},uploaded:"2020-07-03T04:53:48.515Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"980cf4979240c9d2b1107a24d6143dd9b85f8098",key:"b8d7",state:"Published",createdAt:"2020-07-03T04:53:48.515Z",sageScore:4,diffs:[{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Easy",events:13893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:.35,notes:711,bombs:0,obstacles:70,nps:3.633,length:424,characteristic:"Standard",difficulty:"Hard",events:13893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.692,paritySummary:{errors:4,warns:2,resets:0}},{njs:16,offset:-.25,notes:1075,bombs:0,obstacles:110,nps:5.493,length:424,characteristic:"Standard",difficulty:"Expert",events:13893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.692,paritySummary:{errors:3,warns:4,resets:0}},{njs:20,offset:.4,notes:1219,bombs:0,obstacles:102,nps:6.229,length:424,characteristic:"Standard",difficulty:"ExpertPlus",events:13893,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.692,paritySummary:{errors:0,warns:10,resets:0}}],downloadURL:"https://cdn.beatsaver.com/980cf4979240c9d2b1107a24d6143dd9b85f8098.zip",coverURL:"https://cdn.beatsaver.com/980cf4979240c9d2b1107a24d6143dd9b85f8098.jpg",previewURL:"https://cdn.beatsaver.com/980cf4979240c9d2b1107a24d6143dd9b85f8098.mp3"}],createdAt:"2020-07-03T04:53:48.515Z",updatedAt:"2020-07-03T04:53:48.515Z",lastPublishedAt:"2020-07-03T04:53:48.515Z"},{id:"d565",name:"[FUTURE FUNK PACK] Idolstep Dreaming - Mikazuki BIGWAVE",description:'FUTURE FUNK MAP PACK\n2 songs uploaded everyday through August 10th - 14th!\n\n"Idolstep 夢見" by ミカヅキBIGWAVE was sampled from Hidemi Ishikawa\'s "めざめ" (Mezame). \n\nPlease look forward to the upcoming maps!\n\nDM any feedback on Discord\nETAN#8341',uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:105,duration:178,songName:"Idolstep Dreaming",songSubName:"",songAuthorName:"Mikazuki BIGWAVE",levelAuthorName:"ETAN"},stats:{plays:0,downloads:3733,upvotes:816,downvotes:13,score:.9203},uploaded:"2020-08-13T18:37:52.866Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"44bd3be82800591c926b63f16b02f34c85730130",key:"d565",state:"Published",createdAt:"2020-08-13T18:37:52.866Z",sageScore:6,diffs:[{njs:10,offset:1,notes:192,bombs:21,obstacles:37,nps:1.135,length:296,characteristic:"Standard",difficulty:"Easy",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.143,paritySummary:{errors:4,warns:2,resets:2}},{njs:12,offset:.5,notes:224,bombs:21,obstacles:37,nps:1.324,length:296,characteristic:"Standard",difficulty:"Normal",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.143,paritySummary:{errors:1,warns:0,resets:3}},{njs:12,offset:0,notes:361,bombs:19,obstacles:38,nps:2.134,length:296,characteristic:"Standard",difficulty:"Hard",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:169.143,paritySummary:{errors:0,warns:0,resets:1}},{njs:14,offset:-.2,notes:570,bombs:19,obstacles:38,nps:3.347,length:298,characteristic:"Standard",difficulty:"Expert",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.286,paritySummary:{errors:0,warns:0,resets:1}},{njs:16,offset:.5,notes:695,bombs:17,obstacles:34,nps:4.081,length:298,characteristic:"Standard",difficulty:"ExpertPlus",events:7255,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:170.286,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/44bd3be82800591c926b63f16b02f34c85730130.zip",coverURL:"https://cdn.beatsaver.com/44bd3be82800591c926b63f16b02f34c85730130.jpg",previewURL:"https://cdn.beatsaver.com/44bd3be82800591c926b63f16b02f34c85730130.mp3"}],createdAt:"2020-08-13T18:37:52.866Z",updatedAt:"2020-08-13T18:37:52.866Z",lastPublishedAt:"2020-08-13T18:37:52.866Z"},{id:"7b9a",name:"League of Legends - RISE (ft. The Glitch Mob, Mako, and The Word Alive)",description:"Prove yourself and RISE! Normal to Expert, custom lighting.\n\nExpert - 719 notes | 15 NJS | 0 bombs | 6 walls\nHard - 575 notes | 12 NJS | 0 bombs | 6 walls\nNormal - 411 notes | 10 NJS | 0 bombs | 6 walls",uploader:{id:30,name:"cookiesaber",uniqueSet:!0,hash:"5d1356c9f8b4040007dcb9fd",avatar:"https://www.gravatar.com/avatar/5d1356c9f8b4040007dcb9fd?d=retro",type:"SIMPLE"},metadata:{bpm:177,duration:194,songName:"RISE (ft. The Glitch Mob, Mako, and The Word Alive)",songSubName:"",songAuthorName:"League Of Legends",levelAuthorName:"cookie"},stats:{plays:0,downloads:4858,upvotes:1257,downvotes:32,score:.9202},uploaded:"2020-01-01T19:07:55.492Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0c296f8b51f4d7669987117f7b3fa68a1fd7d6b1",key:"7b9a",state:"Published",createdAt:"2020-01-01T19:07:55.492Z",sageScore:3,diffs:[{njs:10,offset:0,notes:411,bombs:0,obstacles:9,nps:2.323,length:522,characteristic:"Standard",difficulty:"Normal",events:874,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:176.949,paritySummary:{errors:14,warns:7,resets:0}},{njs:12,offset:0,notes:575,bombs:0,obstacles:6,nps:3.225,length:526,characteristic:"Standard",difficulty:"Hard",events:874,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.305,paritySummary:{errors:6,warns:6,resets:0}},{njs:15,offset:1,notes:719,bombs:0,obstacles:6,nps:4.032,length:526,characteristic:"Standard",difficulty:"Expert",events:875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.305,paritySummary:{errors:19,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0c296f8b51f4d7669987117f7b3fa68a1fd7d6b1.zip",coverURL:"https://cdn.beatsaver.com/0c296f8b51f4d7669987117f7b3fa68a1fd7d6b1.jpg",previewURL:"https://cdn.beatsaver.com/0c296f8b51f4d7669987117f7b3fa68a1fd7d6b1.mp3"}],createdAt:"2020-01-01T19:07:55.492Z",updatedAt:"2020-01-01T19:07:55.492Z",lastPublishedAt:"2020-01-01T19:07:55.492Z"},{id:"65e6",name:"Kamado Tanjiro no Uta - Kimetsu no Yaiba EP 19 ED",description:"Video https://youtu.be/szYb7faqnkQ\nVideo by Monteblanco: https://www.youtube.com/watch?v=aI7nCWuC-dc\nVideo by Rigid (PogU): https://youtu.be/pnETOIkHv-o",uploader:{id:14262,name:"suzuki.dll",uniqueSet:!0,hash:"5d664fb90a981e00064ede12",avatar:"https://cdn.beatsaver.com/avatar/14262.jpg",type:"SIMPLE"},metadata:{bpm:152,duration:329,songName:"Kamado Tanjiro no Uta",songSubName:"ft. Nami Nakagawa",songAuthorName:"Go Shiina",levelAuthorName:"Suzuki.DLL"},stats:{plays:0,downloads:2575,upvotes:1259,downvotes:32,score:.9202},uploaded:"2019-09-26T02:31:39.964Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"746847c0026657a7235d845b7d014335c47972da",key:"65e6",state:"Published",createdAt:"2019-09-26T02:31:39.964Z",sageScore:5,diffs:[{njs:12,offset:.5,notes:561,bombs:0,obstacles:173,nps:1.752,length:811,characteristic:"Standard",difficulty:"Hard",events:806,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:320.132,paritySummary:{errors:45,warns:34,resets:0}}],downloadURL:"https://cdn.beatsaver.com/746847c0026657a7235d845b7d014335c47972da.zip",coverURL:"https://cdn.beatsaver.com/746847c0026657a7235d845b7d014335c47972da.jpg",previewURL:"https://cdn.beatsaver.com/746847c0026657a7235d845b7d014335c47972da.mp3"}],createdAt:"2019-09-26T02:31:39.964Z",updatedAt:"2019-09-26T02:31:39.964Z",lastPublishedAt:"2019-09-26T02:31:39.964Z"},{id:"56b3",name:"Caravan Palace - Wonderland",description:"Easy, Normal, Hard, Expert, Expert+",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:104,duration:175,songName:"Wonderland",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:4852,upvotes:2516,downvotes:95,score:.9202},uploaded:"2019-07-13T05:01:13.826Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5bdd8ddebcce1e19bcd10ca8921b0d1ab7624506",key:"56b3",state:"Published",createdAt:"2019-07-13T05:01:13.826Z",sageScore:7,diffs:[{njs:12,offset:1,notes:182,bombs:0,obstacles:0,nps:1.088,length:290,characteristic:"Standard",difficulty:"Easy",events:219,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:167.308,paritySummary:{errors:56,warns:7,resets:0}},{njs:12,offset:1,notes:255,bombs:0,obstacles:0,nps:1.524,length:290,characteristic:"Standard",difficulty:"Normal",events:292,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:167.308,paritySummary:{errors:29,warns:17,resets:0}},{njs:14,offset:0,notes:450,bombs:0,obstacles:0,nps:2.685,length:290.5,characteristic:"Standard",difficulty:"Hard",events:499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:167.596,paritySummary:{errors:5,warns:4,resets:0}},{njs:15,offset:0,notes:487,bombs:0,obstacles:0,nps:2.906,length:290.5,characteristic:"Standard",difficulty:"Expert",events:525,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:167.596,paritySummary:{errors:4,warns:4,resets:0}},{njs:17,offset:.5,notes:713,bombs:5,obstacles:0,nps:4.243,length:291.25,characteristic:"Standard",difficulty:"ExpertPlus",events:797,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.029,paritySummary:{errors:8,warns:5,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5bdd8ddebcce1e19bcd10ca8921b0d1ab7624506.zip",coverURL:"https://cdn.beatsaver.com/5bdd8ddebcce1e19bcd10ca8921b0d1ab7624506.jpg",previewURL:"https://cdn.beatsaver.com/5bdd8ddebcce1e19bcd10ca8921b0d1ab7624506.mp3"}],createdAt:"2019-07-13T05:01:13.826Z",updatedAt:"2019-07-13T05:01:13.826Z",lastPublishedAt:"2019-07-13T05:01:13.826Z"},{id:"4131",name:"Nevada feat. Cozi Zuehlsdorff - Vicetone",description:"YouTube Preview: https://youtu.be/3gb2gH8eueI",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:124,duration:209,songName:"Nevada (feat. Cozi Zuehlsdorff)",songSubName:"Vicetone",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:2091,upvotes:1257,downvotes:32,score:.9202},uploaded:"2019-03-27T18:42:01Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5e847d92de6e01dfd5ce3491969b3939b4374699",key:"4131",state:"Published",createdAt:"2019-03-27T18:42:01Z",sageScore:6,diffs:[{njs:10,offset:0,notes:387,bombs:0,obstacles:54,nps:1.932,length:414,characteristic:"Standard",difficulty:"Hard",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.323,paritySummary:{errors:70,warns:23,resets:0}},{njs:12,offset:0,notes:616,bombs:0,obstacles:54,nps:3.075,length:414,characteristic:"Standard",difficulty:"Expert",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.323,paritySummary:{errors:84,warns:55,resets:0}},{njs:14,offset:0,notes:868,bombs:0,obstacles:57,nps:4.333,length:414,characteristic:"Standard",difficulty:"ExpertPlus",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.323,paritySummary:{errors:74,warns:61,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5e847d92de6e01dfd5ce3491969b3939b4374699.zip",coverURL:"https://cdn.beatsaver.com/5e847d92de6e01dfd5ce3491969b3939b4374699.jpg",previewURL:"https://cdn.beatsaver.com/5e847d92de6e01dfd5ce3491969b3939b4374699.mp3"}],createdAt:"2019-03-27T18:42:01Z",updatedAt:"2019-03-27T18:42:01Z",lastPublishedAt:"2019-03-27T18:42:01Z"},{id:"8b21",name:"Invaders Must Die - Prodigy",description:"It's time to get ready for some pumping beats and dancy moves with a beat map for a Prodigy song. With the full spread of skill levels, get ready to move and in the swing of the rhythm of this great track.\n\nThanks to Kival Evan and Sorukun for testing.",uploader:{id:32141,name:"amstradhero",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551be",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8551be?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:266,songName:"Invaders Must Die",songSubName:"",songAuthorName:"Prodigy",levelAuthorName:"AmstradHero"},stats:{plays:0,downloads:3044,upvotes:1276,downvotes:33,score:.9201},uploaded:"2020-02-27T09:40:25.643Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eaa2d06cfed4d6cd5b9e0b89d5860c88c7ca8be5",key:"8b21",state:"Published",createdAt:"2020-02-27T09:40:25.643Z",sageScore:7,diffs:[{njs:10,offset:0,notes:326,bombs:16,obstacles:28,nps:1.248,length:609.5,characteristic:"Standard",difficulty:"Easy",events:8086,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:17,warns:18,resets:7}},{njs:12,offset:1.35,notes:468,bombs:16,obstacles:31,nps:1.792,length:609.5,characteristic:"Standard",difficulty:"Normal",events:8084,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:26,warns:20,resets:8}},{njs:13,offset:1.125,notes:660,bombs:12,obstacles:31,nps:2.527,length:609.5,characteristic:"Standard",difficulty:"Hard",events:8084,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:36,warns:45,resets:5}},{njs:14,offset:1,notes:1102,bombs:8,obstacles:15,nps:4.219,length:609.5,characteristic:"Standard",difficulty:"Expert",events:8084,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:44,warns:69,resets:4}},{njs:16,offset:.5,notes:1141,bombs:4,obstacles:15,nps:4.368,length:609.5,characteristic:"Standard",difficulty:"ExpertPlus",events:8084,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:261.214,paritySummary:{errors:35,warns:57,resets:2}}],downloadURL:"https://cdn.beatsaver.com/eaa2d06cfed4d6cd5b9e0b89d5860c88c7ca8be5.zip",coverURL:"https://cdn.beatsaver.com/eaa2d06cfed4d6cd5b9e0b89d5860c88c7ca8be5.jpg",previewURL:"https://cdn.beatsaver.com/eaa2d06cfed4d6cd5b9e0b89d5860c88c7ca8be5.mp3"}],createdAt:"2020-02-27T09:40:25.643Z",updatedAt:"2020-02-27T09:40:25.643Z",lastPublishedAt:"2020-02-27T09:40:25.643Z"},{id:"57f1",name:"Impossible Geometry - The Stupendium ft. Chi-chi",description:"Watch the video here: https://www.youtube.com/watch?v=PnKxhbRqqx0",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:150,duration:211,songName:"Impossible Geometry",songSubName:"",songAuthorName:"The Stupendium ft. Chi-chi",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1475,upvotes:1166,downvotes:28,score:.9201},uploaded:"2019-07-19T18:24:56.241Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"84b16b7e9fe6e3b8f356be4f2dc0edc0a4178228",key:"57f1",state:"Published",createdAt:"2019-07-19T18:24:56.241Z",sageScore:5,diffs:[{njs:14,offset:0,notes:628,bombs:12,obstacles:42,nps:3.244,length:484,characteristic:"Standard",difficulty:"Expert",events:5545,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.6,paritySummary:{errors:53,warns:61,resets:0}}],downloadURL:"https://cdn.beatsaver.com/84b16b7e9fe6e3b8f356be4f2dc0edc0a4178228.zip",coverURL:"https://cdn.beatsaver.com/84b16b7e9fe6e3b8f356be4f2dc0edc0a4178228.jpg",previewURL:"https://cdn.beatsaver.com/84b16b7e9fe6e3b8f356be4f2dc0edc0a4178228.mp3"}],createdAt:"2019-07-19T18:24:56.241Z",updatedAt:"2019-07-19T18:24:56.241Z",lastPublishedAt:"2019-07-19T18:24:56.241Z"},{id:"53f0",name:"Panini - Lil Nas X",description:"“Panini” is the second single from Lil Nas X’s debut EP, 7, following his hit song, “Old Town Road. In this song, Lil Nas talks about his old fanbase and compares them to Panini, a character from the popular TV Series Chowder.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:77,duration:116,songName:"Panini",songSubName:"",songAuthorName:"Lil Nas X",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3360,upvotes:1212,downvotes:30,score:.9201},uploaded:"2019-06-22T05:07:06.657Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6bb8e702d51055767fbc89df9ec81517e1d0e74c",key:"53f0",state:"Published",createdAt:"2019-06-22T05:07:06.657Z",sageScore:6,diffs:[{njs:14,offset:0,notes:388,bombs:0,obstacles:0,nps:3.482,length:143,characteristic:"Standard",difficulty:"Expert",events:1247,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:111.429,paritySummary:{errors:17,warns:21,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6bb8e702d51055767fbc89df9ec81517e1d0e74c.zip",coverURL:"https://cdn.beatsaver.com/6bb8e702d51055767fbc89df9ec81517e1d0e74c.jpg",previewURL:"https://cdn.beatsaver.com/6bb8e702d51055767fbc89df9ec81517e1d0e74c.mp3"}],createdAt:"2019-06-22T05:07:06.657Z",updatedAt:"2019-06-22T05:07:06.657Z",lastPublishedAt:"2019-06-22T05:07:06.657Z"},{id:"1060",name:"X Gon' Give It To Ya Maybe",description:"Preview: \r\nhttps://www.youtube.com/watch?v=Q71NI5ohXhI\r\n\r\nOriginal mashup: https://www.youtube.com/watch?v=Fegs-XVKgnM",uploader:{id:4286278,name:"ruckus",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1d8",avatar:"https://cdn.beatsaver.com/avatar/239082462083284992.png",type:"DISCORD"},metadata:{bpm:120,duration:205,songName:"X Gon' Give It To Ya Maybe",songSubName:"oneboredjeu, Carly Rae Jepsen, DMX",songAuthorName:"Ruckus",levelAuthorName:"ruckus"},stats:{plays:0,downloads:4370,upvotes:2151,downvotes:76,score:.9201},uploaded:"2018-08-18T01:59:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b86e27ad9149c123b3a4f90b2bce62f656083b01",key:"1060",state:"Published",createdAt:"2018-08-18T01:59:54Z",sageScore:4,diffs:[{njs:14,offset:0,notes:815,bombs:0,obstacles:0,nps:4.163,length:391.5,characteristic:"Standard",difficulty:"Expert",events:1511,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:195.75,paritySummary:{errors:91,warns:118,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b86e27ad9149c123b3a4f90b2bce62f656083b01.zip",coverURL:"https://cdn.beatsaver.com/b86e27ad9149c123b3a4f90b2bce62f656083b01.jpg",previewURL:"https://cdn.beatsaver.com/b86e27ad9149c123b3a4f90b2bce62f656083b01.mp3"}],createdAt:"2018-08-18T01:59:54Z",updatedAt:"2018-08-18T01:59:54Z",lastPublishedAt:"2018-08-18T01:59:54Z"},{id:"5fc",name:"Waiting For Love - Avicii",description:"Avicii Waiting for love\r\nEasy, Normal, Hard, Expert\r\nRun Time : 3m 50s\r\nBPM 128.15\r\n\r\nFeedback would be greatly appreciated :)",uploader:{id:47059,name:"rocket",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1c0",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1c0?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:230,songName:"Waiting For Love",songSubName:"Avicii",songAuthorName:"Rocket",levelAuthorName:"rocket"},stats:{plays:0,downloads:12913,upvotes:5636,downvotes:276,score:.9201},uploaded:"2018-06-20T23:44:52Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"4b7cdfcf558f66acc4b7a506c2dd50fbd9a76354",key:"5fc",state:"Published",createdAt:"2018-06-20T23:44:52Z",sageScore:6,diffs:[{njs:10,offset:0,notes:266,bombs:8,obstacles:8,nps:1.184,length:480,characteristic:"Standard",difficulty:"Easy",events:1179,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:62,warns:23,resets:0},stars:1.1},{njs:10,offset:0,notes:485,bombs:6,obstacles:8,nps:2.158,length:480,characteristic:"Standard",difficulty:"Normal",events:1181,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:121,warns:51,resets:0},stars:1.54},{njs:10,offset:0,notes:742,bombs:14,obstacles:8,nps:3.302,length:479.966,characteristic:"Standard",difficulty:"Hard",events:1177,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.984,paritySummary:{errors:130,warns:53,resets:0}},{njs:10,offset:0,notes:875,bombs:11,obstacles:8,nps:3.893,length:480,characteristic:"Standard",difficulty:"Expert",events:1190,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:125,warns:100,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4b7cdfcf558f66acc4b7a506c2dd50fbd9a76354.zip",coverURL:"https://cdn.beatsaver.com/4b7cdfcf558f66acc4b7a506c2dd50fbd9a76354.jpg",previewURL:"https://cdn.beatsaver.com/4b7cdfcf558f66acc4b7a506c2dd50fbd9a76354.mp3"}],createdAt:"2018-06-20T23:44:52Z",updatedAt:"2018-06-20T23:44:52Z",lastPublishedAt:"2018-06-20T23:44:52Z"},{id:"a233",name:"[NoodleJams Vol.1] 5 Seconds of Summer - Teeth",description:"Coming down with the isolation blues? Why not check out my new release! This one includes my first time playing around with Chroma lighting, so make sure you download Chroma 2.0 from Mod Assistant! The lights were inspired by the music video for this track, including re-creating some of the effects shown in the video. A Lightshow is included if you'd like to just check them out separately.\n\nThanks to qwasyx, Dat360NoScope, Sorukun, helencarnate, Shutforever, Pyrowarfare, and ethan_mp4 for playtesting.\n\nAnd a special thanks to AaltopahWi for advice on using Chroma, Aeroluna for Chroma 2.0, and CyanSnow for Chroma conversion help!\n\nAnd now some song details:\nBPM: 139\nNotes: Ez - 401 ; N - 514 ; H - 630 ; Ex - 868 ; Ex+ - 946\nNPS: Ez - 1.93 ; N - 2.48 ; H - 3.04 ; Ex - 4.18 ; Ex+ - 4.56\nBombs: None!\nWalls: Ez - 55 ; N - 44 ; H - 34 ; Ex - 22 ; Ex+ - 28",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:139,duration:207,songName:"Teeth",songSubName:"",songAuthorName:"5 Seconds of Summer",levelAuthorName:"fruhead"},stats:{plays:0,downloads:4256,upvotes:884,downvotes:16,score:.92},uploaded:"2020-05-04T04:13:11.364Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0986c659b17b62f13098ff3598d781942eac9092",key:"a233",state:"Published",createdAt:"2020-05-04T04:13:11.364Z",sageScore:7,diffs:[{njs:10,offset:-.5,notes:401,bombs:0,obstacles:55,nps:2.002,length:464,characteristic:"Standard",difficulty:"Easy",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.288,paritySummary:{errors:49,warns:8,resets:0}},{njs:12,offset:.7,notes:514,bombs:0,obstacles:44,nps:2.566,length:464,characteristic:"Standard",difficulty:"Normal",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.288,paritySummary:{errors:8,warns:4,resets:0}},{njs:14,offset:.3,notes:630,bombs:0,obstacles:34,nps:3.145,length:464,characteristic:"Standard",difficulty:"Hard",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.288,paritySummary:{errors:5,warns:4,resets:0}},{njs:15,offset:.2,notes:868,bombs:0,obstacles:24,nps:4.334,length:464,characteristic:"Standard",difficulty:"Expert",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.288,paritySummary:{errors:4,warns:2,resets:0}},{njs:17,offset:0,notes:946,bombs:0,obstacles:28,nps:4.723,length:464.063,characteristic:"Standard",difficulty:"ExpertPlus",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:200.315,paritySummary:{errors:4,warns:2,resets:0}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:8266,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0986c659b17b62f13098ff3598d781942eac9092.zip",coverURL:"https://cdn.beatsaver.com/0986c659b17b62f13098ff3598d781942eac9092.jpg",previewURL:"https://cdn.beatsaver.com/0986c659b17b62f13098ff3598d781942eac9092.mp3"}],createdAt:"2020-05-04T04:13:11.364Z",updatedAt:"2020-05-04T04:13:11.364Z",lastPublishedAt:"2020-05-04T04:13:11.364Z"},{id:"cb19",name:"[Extra Sensory] Mick Gordon - At DOOM's Gate",description:'Rip and tear\n\n\nExtra super huge thank you to the following people for making this possible\nAeroluna- For making Noodle Extensions and updating Chroma\nReaxt- For helping with making the scripts used to create this map and for inspiring us to continue through with this project.\nArti- For making the core mod that allowed Noodle Extensions and Chroma to support the new values\n\nAnd thank you for putting up with my shit during this (again) :)\n\nThis map was released as a part of the "Extra Sensory" event.\n\nVideo: https://www.youtube.com/watch?v=21JWpIWhqjg',uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:161,duration:72,songName:"At DOOM's Gate",songSubName:"",songAuthorName:"Mick Gordon",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:7731,upvotes:2500,downvotes:95,score:.9199},uploaded:"2020-07-31T01:44:50.965Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b0ea07691e483e7f5b2d9a2daf6774b512a68855",key:"cb19",state:"Published",createdAt:"2020-07-31T01:44:50.965Z",sageScore:3,diffs:[{njs:19,offset:0,notes:342,bombs:0,obstacles:4190,nps:5.305,length:173,characteristic:"Standard",difficulty:"ExpertPlus",events:261,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:64.472,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b0ea07691e483e7f5b2d9a2daf6774b512a68855.zip",coverURL:"https://cdn.beatsaver.com/b0ea07691e483e7f5b2d9a2daf6774b512a68855.jpg",previewURL:"https://cdn.beatsaver.com/b0ea07691e483e7f5b2d9a2daf6774b512a68855.mp3"}],createdAt:"2020-07-31T01:44:50.965Z",updatedAt:"2020-07-31T01:44:50.965Z",lastPublishedAt:"2020-07-31T01:44:50.965Z"},{id:"570d",name:"Duel of the Fates (Techno Remix) - Star Wars",description:'|-o-| *Mapping Extensions Required* |-o-|\n"Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering."\nA Collab Between myself and EpicEwok. Audio Edit by Kolezan <3\nNotes Per Second:\nEasy / 1.2\nNormal / 1.5\nHard / 2.6\nExpert / 3.3\nExpert+ / 4.7\nSingle Saber (Expert) / 3.0\nFor Quest Users, we have a version without the walls for you here: https://beatsaver.com/beatmap/570c\nExpert+ Playthrough: https://streamable.com/3sftt\n',uploader:{id:11373,name:"redmagi",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e9d2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9d2?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:252,songName:"Duel of the Fates ",songSubName:"",songAuthorName:"Techno Remix",levelAuthorName:"Sha3dy D3stiny"},stats:{plays:0,downloads:9452,upvotes:2313,downvotes:85,score:.9199},uploaded:"2019-07-14T20:18:06.134Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"65c578117df8bae1c83c98b43e4218b23a8de3f3",key:"570d",state:"Published",createdAt:"2019-07-14T20:18:06.134Z",sageScore:7,diffs:[{njs:12,offset:0,notes:307,bombs:0,obstacles:190,nps:1.282,length:558.755,characteristic:"Standard",difficulty:"Easy",events:6138,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.466,paritySummary:{errors:32,warns:6,resets:0}},{njs:12,offset:0,notes:376,bombs:0,obstacles:190,nps:1.571,length:558.63,characteristic:"Standard",difficulty:"Normal",events:1272,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.413,paritySummary:{errors:14,warns:10,resets:0}},{njs:14,offset:0,notes:669,bombs:0,obstacles:190,nps:2.794,length:558.797,characteristic:"Standard",difficulty:"Hard",events:1272,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.484,paritySummary:{errors:15,warns:21,resets:0}},{njs:15,offset:0,notes:832,bombs:0,obstacles:190,nps:3.474,length:558.792,characteristic:"Standard",difficulty:"Expert",events:6138,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.482,paritySummary:{errors:33,warns:39,resets:0}},{njs:16,offset:0,notes:1191,bombs:0,obstacles:190,nps:4.97,length:559.125,characteristic:"Standard",difficulty:"ExpertPlus",events:6138,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.625,paritySummary:{errors:49,warns:67,resets:0}},{njs:15,offset:0,notes:750,bombs:0,obstacles:190,nps:3.131,length:558.917,characteristic:"OneSaber",difficulty:"Expert",events:6138,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:239.536,paritySummary:{errors:48,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/65c578117df8bae1c83c98b43e4218b23a8de3f3.zip",coverURL:"https://cdn.beatsaver.com/65c578117df8bae1c83c98b43e4218b23a8de3f3.jpg",previewURL:"https://cdn.beatsaver.com/65c578117df8bae1c83c98b43e4218b23a8de3f3.mp3"}],createdAt:"2019-07-14T20:18:06.134Z",updatedAt:"2019-07-14T20:18:06.134Z",lastPublishedAt:"2019-07-14T20:18:06.134Z"},{id:"4fe8",name:"Red Like Roses [One Saber] (RWBY: Volume 1 Soundtrack) - Jeff Williams ft. Casey Lee Williams",description:"Red like roses in one saber! Finally y'all can play this with a custom crescent rose saber and not look weird holding two! Further improved the sync on this from the original v2 of red like roses. Not all beats were mapped because its hard to hit consistent non stop 1/4s with only one saber but the ending section is still pretty tiring so prepare your arm :P. Map comes in two shades of Crescent Red.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:200,duration:194,songName:"Red Like Roses (One Saber)",songSubName:"Jeff Williams ft. Casey Lee Williams",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:3763,upvotes:648,downvotes:7,score:.9199},uploaded:"2019-05-30T13:34:51Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0fdfb6fb8788f52b78c981c85cf9f316e4b6f232",key:"4fe8",state:"Published",createdAt:"2019-05-30T13:34:51Z",sageScore:5,diffs:[{njs:14,offset:0,notes:463,bombs:2,obstacles:22,nps:2.47,length:627.987,characteristic:"OneSaber",difficulty:"Expert",events:641,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.396,paritySummary:{errors:18,warns:18,resets:1}}],downloadURL:"https://cdn.beatsaver.com/0fdfb6fb8788f52b78c981c85cf9f316e4b6f232.zip",coverURL:"https://cdn.beatsaver.com/0fdfb6fb8788f52b78c981c85cf9f316e4b6f232.jpg",previewURL:"https://cdn.beatsaver.com/0fdfb6fb8788f52b78c981c85cf9f316e4b6f232.mp3"}],createdAt:"2019-05-30T13:34:51Z",updatedAt:"2019-05-30T13:34:51Z",lastPublishedAt:"2019-05-30T13:34:51Z"},{id:"1bf",name:"Caravan Palace - Lone Digger",description:"Caravan Palace - Lone Digger\r\nEasy | Normal | Hard | Expert\r\nThis is a re-upload of my previous map, with improvements for hard, and a new, harder expert difficulty mapped by Squeaksies, as well as lower difficulties as iterations on my original map.\r\n\r\nBPM: 124\r\nDuration: 2:49\r\nNotes (Hard): 730\r\nNotes (Expert): 735\r\nPreview (Hard): https://youtu.be/NExvLUyeBUU\r\nPreview (Expert): https://youtu.be/NYmExXlpB0k",uploader:{id:45732,name:"calijor",uniqueSet:!1,hash:"5cff0b7298cc5a672c84ebb1",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ebb1?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:170,songName:"Lone Digger",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"calijor"},stats:{plays:0,downloads:13174,upvotes:16427,downvotes:987,score:.9199},uploaded:"2018-05-23T00:15:19Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"906160fd1f808e2f34f33c2ca5920118855c065d",key:"1bf",state:"Published",createdAt:"2018-05-23T00:15:19Z",sageScore:5,diffs:[{njs:10,offset:0,notes:313,bombs:0,obstacles:27,nps:1.931,length:334.938,characteristic:"Standard",difficulty:"Easy",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.067,paritySummary:{errors:80,warns:32,resets:0},stars:1.2},{njs:10,offset:0,notes:480,bombs:0,obstacles:27,nps:2.953,length:335.938,characteristic:"Standard",difficulty:"Normal",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.55,paritySummary:{errors:56,warns:112,resets:0}},{njs:10,offset:0,notes:730,bombs:0,obstacles:27,nps:4.491,length:335.938,characteristic:"Standard",difficulty:"Hard",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.55,paritySummary:{errors:157,warns:122,resets:0}},{njs:10,offset:0,notes:735,bombs:11,obstacles:2,nps:4.555,length:333.5,characteristic:"Standard",difficulty:"Expert",events:1198,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:161.371,paritySummary:{errors:163,warns:131,resets:5}}],downloadURL:"https://cdn.beatsaver.com/906160fd1f808e2f34f33c2ca5920118855c065d.zip",coverURL:"https://cdn.beatsaver.com/906160fd1f808e2f34f33c2ca5920118855c065d.jpg",previewURL:"https://cdn.beatsaver.com/906160fd1f808e2f34f33c2ca5920118855c065d.mp3"}],createdAt:"2018-05-23T00:15:19Z",updatedAt:"2018-05-23T00:15:19Z",lastPublishedAt:"2018-05-23T00:15:19Z"},{id:"17195",name:"Ayunda Risu - KING",description:"There's a lotta covers of KING, but Risu's definitely takes the cake\n\nThis was a special request from a good friend of mine\n\nDifficulties |\nExpert+\nExpert\nHard\nNormal\nEasy\n\nThank you for playing\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:166,duration:137,songName:"KING",songSubName:"",songAuthorName:"Ayunda Risu",levelAuthorName:"ETAN"},stats:{plays:0,downloads:3066,upvotes:829,downvotes:14,score:.9198},uploaded:"2021-04-24T01:55:50.843Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0d191cd2dfe9404e4f58b5520bbc9b7b9cafa8c7",key:"17195",state:"Published",createdAt:"2021-04-24T01:55:50.843Z",sageScore:6,diffs:[{njs:10,offset:0,notes:158,bombs:0,obstacles:11,nps:1.228,length:356,characteristic:"Standard",difficulty:"Easy",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:128.675,paritySummary:{errors:16,warns:2,resets:0}},{njs:12,offset:0,notes:206,bombs:0,obstacles:11,nps:1.601,length:356,characteristic:"Standard",difficulty:"Normal",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:128.675,paritySummary:{errors:26,warns:0,resets:0}},{njs:13,offset:.75,notes:397,bombs:0,obstacles:11,nps:3.06,length:359,characteristic:"Standard",difficulty:"Hard",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:129.759,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:.2,notes:528,bombs:0,obstacles:11,nps:3.98,length:367,characteristic:"Standard",difficulty:"Expert",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:132.651,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.2,notes:716,bombs:0,obstacles:11,nps:5.398,length:367,characteristic:"Standard",difficulty:"ExpertPlus",events:5937,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:132.651,paritySummary:{errors:0,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0d191cd2dfe9404e4f58b5520bbc9b7b9cafa8c7.zip",coverURL:"https://cdn.beatsaver.com/0d191cd2dfe9404e4f58b5520bbc9b7b9cafa8c7.jpg",previewURL:"https://cdn.beatsaver.com/0d191cd2dfe9404e4f58b5520bbc9b7b9cafa8c7.mp3"}],createdAt:"2021-04-24T01:55:50.843Z",updatedAt:"2021-04-24T01:55:50.843Z",lastPublishedAt:"2021-04-24T01:55:50.843Z"},{id:"142ea",name:"K/DA - VILLAIN (ft. Madison Beer, Kim Petras)",description:"From the unofficial music pack (K/DA ALL OUT) on BSaber.com\nPack: https://bsaber.com/kda-all-out/\nTrailer: https://youtu.be/e1ry_H86zqg\nPreview (Expert+): https://youtu.be/hrNAqEg6XPo\nLightshow: https://youtu.be/ZIqbGM4GjPc\n__________\nCredits🤍\nMapper: Sotarks\nLighter: Sotarks\nCurators: Pixelguy, JohnnyDee & joey\nSpecial Thanks: eliotttate & Belaya\nTrailer: Tuffiii\n__________\nCheck out K/DA🤍\nhttps://twitter.com/kda_music\nhttps://linktr.ee/kda_music\nProduced by Riot Games",uploader:{id:2523,name:"sotarks",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541fd",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8541fd?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:201,songName:"VILLAIN",songSubName:"",songAuthorName:"K/DA",levelAuthorName:"Sotarks"},stats:{plays:0,downloads:12713,upvotes:1439,downvotes:41,score:.9198},uploaded:"2021-02-17T18:04:42.442Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d0c3395e0cce21f1e03ea9352543e4aaef74b902",key:"142ea",state:"Published",createdAt:"2021-02-17T18:04:42.442Z",sageScore:7,diffs:[{njs:12,offset:-1.4371349,notes:225,bombs:0,obstacles:179,nps:1.174,length:511,characteristic:"Standard",difficulty:"Easy",events:2930,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.625,paritySummary:{errors:39,warns:1,resets:0}},{njs:12,offset:-1.4361658,notes:303,bombs:0,obstacles:139,nps:1.581,length:511,characteristic:"Standard",difficulty:"Normal",events:2930,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.625,paritySummary:{errors:3,warns:0,resets:0}},{njs:14,offset:.19046581,notes:526,bombs:0,obstacles:170,nps:2.667,length:526,characteristic:"Standard",difficulty:"Hard",events:2930,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:5,warns:0,resets:0}},{njs:16,offset:-.0027478295,notes:738,bombs:4,obstacles:177,nps:3.741,length:526,characteristic:"Standard",difficulty:"Expert",events:2930,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:2,warns:0,resets:1}},{njs:18,offset:-.3,notes:900,bombs:156,obstacles:121,nps:4.563,length:526,characteristic:"Standard",difficulty:"ExpertPlus",events:2985,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:2,warns:11,resets:9}}],downloadURL:"https://cdn.beatsaver.com/d0c3395e0cce21f1e03ea9352543e4aaef74b902.zip",coverURL:"https://cdn.beatsaver.com/d0c3395e0cce21f1e03ea9352543e4aaef74b902.jpg",previewURL:"https://cdn.beatsaver.com/d0c3395e0cce21f1e03ea9352543e4aaef74b902.mp3"}],createdAt:"2021-02-17T18:04:42.442Z",updatedAt:"2021-02-17T18:04:42.442Z",lastPublishedAt:"2021-02-17T18:04:42.442Z"},{id:"850a",name:"Ellie Goulding - Lights",description:"Wanted to map this for a little while, really fun song that I know should make for a fun map (hopefully I was able to deliver that)\n\nThanks to Sorukun and Eku for feedback and testing\n\nEnjoy!",uploader:{id:4286161,name:"amuga",uniqueSet:!0,hash:"5e0a61e546a0710006590f49",avatar:"https://cdn.beatsaver.com/avatar/92425939555713024.png",type:"DISCORD"},metadata:{bpm:120,duration:213,songName:"Lights",songSubName:"",songAuthorName:"Ellie Goulding",levelAuthorName:"Amuga"},stats:{plays:0,downloads:2383,upvotes:752,downvotes:11,score:.9198},uploaded:"2020-02-08T00:21:39.641Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3b3ef5f5438e7928fdb747004308e8a8d6a23dc8",key:"850a",state:"Published",createdAt:"2020-02-08T00:21:39.641Z",sageScore:4,diffs:[{njs:16,offset:-.25,notes:921,bombs:0,obstacles:13,nps:4.433,length:415.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2299,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.75,paritySummary:{errors:1,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3b3ef5f5438e7928fdb747004308e8a8d6a23dc8.zip",coverURL:"https://cdn.beatsaver.com/3b3ef5f5438e7928fdb747004308e8a8d6a23dc8.jpg",previewURL:"https://cdn.beatsaver.com/3b3ef5f5438e7928fdb747004308e8a8d6a23dc8.mp3"}],createdAt:"2020-02-08T00:21:39.641Z",updatedAt:"2020-02-08T00:21:39.641Z",lastPublishedAt:"2020-02-08T00:21:39.641Z"},{id:"332f",name:"Spin Me Around (Spin Edition) - Dead or Alive",description:'*DISCLAIMER*\r\nThere are optional Dot "Freestyle" Sections in this one! Be careful when attempting spins!\r\n*YOU HAVE BEEN WARNED!*\r\n\r\nExpert+ has a few 1/4 beat hits, but is otherwise the same as Expert. Both Expert and Expert+ have the Dot Freestyle sections.\r\n\r\nNotes per Second / Video Play-through:\r\nEasy: 1.7 / https://streamable.com/t95t1\r\nNormal: 2 / https://streamable.com/al3de\r\nHard: 2.5 / https://streamable.com/5z1h5\r\nExpert: 3.9 / https://streamable.com/lq07e\r\nExpert+: 4.2 / https://streamable.com/dfygc (With FREESTYLE Moves!)\r\n\r\nMany Thanks to Aggro for the inspiration for this VERY SILLY spin move and Fromen for letting me use his map as a baseline for this!',uploader:{id:11373,name:"redmagi",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e9d2",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9d2?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:188,songName:"Spin Me Round (Spin Edition)",songSubName:"Dead or Alive",songAuthorName:"Redmagi",levelAuthorName:"redmagi"},stats:{plays:0,downloads:4271,upvotes:1418,downvotes:40,score:.9198},uploaded:"2019-02-03T02:19:40Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1274bb0c32bb9e5bdb677ca7eca18a45d454aaf7",key:"332f",state:"Published",createdAt:"2019-02-03T02:19:40Z",sageScore:7,diffs:[{njs:10,offset:0,notes:318,bombs:0,obstacles:0,nps:1.732,length:392,characteristic:"Standard",difficulty:"Easy",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:38,warns:25,resets:0}},{njs:10,offset:0,notes:370,bombs:0,obstacles:2,nps:2.016,length:392,characteristic:"Standard",difficulty:"Normal",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:30,warns:15,resets:0}},{njs:10,offset:0,notes:479,bombs:0,obstacles:1,nps:2.609,length:392,characteristic:"Standard",difficulty:"Hard",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:43,warns:89,resets:0}},{njs:12,offset:0,notes:743,bombs:0,obstacles:0,nps:4.047,length:392,characteristic:"Standard",difficulty:"Expert",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:32,warns:56,resets:0}},{njs:14,offset:0,notes:792,bombs:0,obstacles:0,nps:4.314,length:392,characteristic:"Standard",difficulty:"ExpertPlus",events:11030,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.75,paritySummary:{errors:35,warns:70,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1274bb0c32bb9e5bdb677ca7eca18a45d454aaf7.zip",coverURL:"https://cdn.beatsaver.com/1274bb0c32bb9e5bdb677ca7eca18a45d454aaf7.jpg",previewURL:"https://cdn.beatsaver.com/1274bb0c32bb9e5bdb677ca7eca18a45d454aaf7.mp3"}],createdAt:"2019-02-03T02:19:40Z",updatedAt:"2019-02-03T02:19:40Z",lastPublishedAt:"2019-02-03T02:19:40Z"},{id:"9bdb",name:"Everything Black (feat. Mike Taylor) - Unlike Pluto",description:"This song is special to me :) Hope you enjoy!\n\nMaul-map by Trolav. Check out his other fantastic maps here -> https://beatsaver.com/uploader/5cff0b7598cc5a672c85368e\nExpert by Checkthepan. Check out his other awesome maps here -> https://beatsaver.com/uploader/5cff0b7398cc5a672c84f3d5\nExpert+ by me.\n\nPreviews:\n\nExpert+: https://youtu.be/gO2pLki8Hic\n\nExpert: https://youtu.be/oTF1tW2AKtg\n\nWann give some feedback? Hit me up on discord -> JohnnyDee#0002",uploader:{id:1991,name:"johnnydee",uniqueSet:!0,hash:"5d3e1593130e0e00069019f7",avatar:"https://www.gravatar.com/avatar/5d3e1593130e0e00069019f7?d=retro",type:"SIMPLE"},metadata:{bpm:98,duration:230,songName:"Everything Black",songSubName:"(feat. Mike Taylor)",songAuthorName:"Unlike Pluto",levelAuthorName:"Ramen Noodle"},stats:{plays:0,downloads:1934,upvotes:1017,downvotes:22,score:.9197},uploaded:"2020-04-17T07:02:17.945Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0d005c0ae0b1e3ff7c43aef0dbc7d40fdb02d8fb",key:"9bdb",state:"Published",createdAt:"2020-04-17T07:02:17.945Z",sageScore:5,diffs:[{njs:15,offset:.4,notes:714,bombs:0,obstacles:6,nps:3.167,length:368.188,characteristic:"Standard",difficulty:"Expert",events:2661,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.421,paritySummary:{errors:1,warns:1,resets:0}},{njs:17,offset:.4,notes:767,bombs:0,obstacles:122,nps:3.403,length:368.094,characteristic:"Standard",difficulty:"ExpertPlus",events:2250,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.364,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:.2,notes:717,bombs:0,obstacles:122,nps:3.182,length:368,characteristic:"NoArrows",difficulty:"Expert",events:2248,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.306,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0d005c0ae0b1e3ff7c43aef0dbc7d40fdb02d8fb.zip",coverURL:"https://cdn.beatsaver.com/0d005c0ae0b1e3ff7c43aef0dbc7d40fdb02d8fb.jpg",previewURL:"https://cdn.beatsaver.com/0d005c0ae0b1e3ff7c43aef0dbc7d40fdb02d8fb.mp3"}],createdAt:"2020-04-17T07:02:17.945Z",updatedAt:"2020-04-17T07:02:17.945Z",lastPublishedAt:"2020-04-17T07:02:17.945Z"},{id:"fc05",name:"EVERGLOW - LA DI DA",description:"This is a map, there's 3 difficulties which are respectively pretty hard for what they should be. \nExpert+ Preview: https://youtu.be/W8JN3NSaX9A\nRequests or complaints - Discord: SimplyMarvellous#0290 ",uploader:{id:4285134,name:"simplymarvellous",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f7a8",avatar:"https://cdn.beatsaver.com/avatar/189618441429319680.png",type:"DISCORD"},metadata:{bpm:164,duration:213,songName:"LA DI DA",songSubName:"",songAuthorName:"EVERGLOW",levelAuthorName:"simplymarvellous"},stats:{plays:0,downloads:7650,upvotes:825,downvotes:14,score:.9196},uploaded:"2020-10-09T07:03:45.316Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"000fbcb46c41cd0c363a80ae389333f7625e0921",key:"fc05",state:"Published",createdAt:"2020-10-09T07:03:45.316Z",sageScore:4,diffs:[{njs:14,offset:.4,notes:651,bombs:36,obstacles:166,nps:3.138,length:567,characteristic:"Standard",difficulty:"Hard",events:9456,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.439,paritySummary:{errors:1,warns:0,resets:12}},{njs:16,offset:0,notes:811,bombs:36,obstacles:172,nps:3.91,length:567,characteristic:"Standard",difficulty:"Expert",events:9456,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.439,paritySummary:{errors:0,warns:0,resets:9}},{njs:18,offset:-.4,notes:934,bombs:26,obstacles:172,nps:4.503,length:567,characteristic:"Standard",difficulty:"ExpertPlus",events:9456,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:207.439,paritySummary:{errors:0,warns:4,resets:6}}],downloadURL:"https://cdn.beatsaver.com/000fbcb46c41cd0c363a80ae389333f7625e0921.zip",coverURL:"https://cdn.beatsaver.com/000fbcb46c41cd0c363a80ae389333f7625e0921.jpg",previewURL:"https://cdn.beatsaver.com/000fbcb46c41cd0c363a80ae389333f7625e0921.mp3"}],createdAt:"2020-10-09T07:03:45.316Z",updatedAt:"2020-10-09T07:03:45.316Z",lastPublishedAt:"2020-10-09T07:03:45.316Z"},{id:"2b13",name:"Viva La Vida - Coldplay",description:"Love Viva La Vida, was one of my favorite childhood songs from Coldplay. 9 Years later, this song ages like fine wine. Just like Grenade, I brought this song off itunes so its the highest quality file you can get :)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:138,duration:243,songName:"Viva La Vida",songSubName:"Coldplay",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:5911,upvotes:1934,downvotes:66,score:.9196},uploaded:"2019-01-05T06:02:16Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"023f19dd2ae57e43b99d62c837d1c708020f635d",key:"2b13",state:"Published",createdAt:"2019-01-05T06:02:16Z",sageScore:5,diffs:[{njs:14,offset:0,notes:919,bombs:0,obstacles:41,nps:4.136,length:511,characteristic:"Standard",difficulty:"Hard",events:714,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.174,paritySummary:{errors:41,warns:35,resets:0}}],downloadURL:"https://cdn.beatsaver.com/023f19dd2ae57e43b99d62c837d1c708020f635d.zip",coverURL:"https://cdn.beatsaver.com/023f19dd2ae57e43b99d62c837d1c708020f635d.jpg",previewURL:"https://cdn.beatsaver.com/023f19dd2ae57e43b99d62c837d1c708020f635d.mp3"}],createdAt:"2019-01-05T06:02:16Z",updatedAt:"2019-01-05T06:02:16Z",lastPublishedAt:"2019-01-05T06:02:16Z"},{id:"21",name:"REOL feat. nqrse - LUVORATORRRRRY!",description:"Hard (353 notes) / Hard+ (455 notes) / Expert (526 notes) / 15 Obstacles / Video Demonstration: https://streamable.com/23ayv / Part 1 of the J-EDM Graduation series! Use this song pack to level up your game!",uploader:{id:48853,name:"datkami",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8a3",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8a3?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:139,songName:"LUVORATORRRRRY!",songSubName:"feat.nqrse",songAuthorName:"Reol",levelAuthorName:"datkami"},stats:{plays:0,downloads:4483,upvotes:4237,downvotes:195,score:.9196},uploaded:"2018-05-10T02:24:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c807689fefdae82aa79ba9c7f861118fb426b4cc",key:"21",state:"Published",createdAt:"2018-05-10T02:24:36Z",sageScore:5,diffs:[{njs:10,offset:0,notes:353,bombs:4,obstacles:15,nps:2.624,length:287,characteristic:"Standard",difficulty:"Normal",events:6e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.531,paritySummary:{errors:61,warns:33,resets:0}},{njs:10,offset:0,notes:455,bombs:4,obstacles:15,nps:3.382,length:287,characteristic:"Standard",difficulty:"Hard",events:6e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.531,paritySummary:{errors:75,warns:74,resets:0}},{njs:10,offset:0,notes:526,bombs:10,obstacles:15,nps:3.91,length:287,characteristic:"Standard",difficulty:"Expert",events:1e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:134.531,paritySummary:{errors:72,warns:78,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c807689fefdae82aa79ba9c7f861118fb426b4cc.zip",coverURL:"https://cdn.beatsaver.com/c807689fefdae82aa79ba9c7f861118fb426b4cc.jpg",previewURL:"https://cdn.beatsaver.com/c807689fefdae82aa79ba9c7f861118fb426b4cc.mp3"}],createdAt:"2018-05-10T02:24:36Z",updatedAt:"2018-05-10T02:24:36Z",lastPublishedAt:"2018-05-10T02:24:36Z"},{id:"6a14",name:"Sweet But Psycho - Ava Max",description:"Mapped by Drunkdwarf. Fun upbeat tune that's great for dancing. Any feedback is appreciated ",uploader:{id:36873,name:"drunkdwarf",uniqueSet:!0,hash:"5d9eea1e048dff0006e87333",avatar:"https://www.gravatar.com/avatar/5d9eea1e048dff0006e87333?d=retro",type:"SIMPLE"},metadata:{bpm:133,duration:189,songName:"Sweet But Psycho",songSubName:"",songAuthorName:"Ava Max",levelAuthorName:"Drunkdwarf"},stats:{plays:0,downloads:1850,upvotes:746,downvotes:11,score:.9195},uploaded:"2019-10-16T05:39:20.052Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"eed9239c036bce71b6d23cf90a3886fc88adb6ee",key:"6a14",state:"Published",createdAt:"2019-10-16T05:39:20.052Z",sageScore:4,diffs:[{njs:14,offset:0,notes:661,bombs:0,obstacles:23,nps:3.672,length:399,characteristic:"Standard",difficulty:"Expert",events:952,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:55,warns:49,resets:0}}],downloadURL:"https://cdn.beatsaver.com/eed9239c036bce71b6d23cf90a3886fc88adb6ee.zip",coverURL:"https://cdn.beatsaver.com/eed9239c036bce71b6d23cf90a3886fc88adb6ee.jpg",previewURL:"https://cdn.beatsaver.com/eed9239c036bce71b6d23cf90a3886fc88adb6ee.mp3"}],createdAt:"2019-10-16T05:39:20.052Z",updatedAt:"2019-10-16T05:39:20.052Z",lastPublishedAt:"2019-10-16T05:39:20.052Z"},{id:"11b01",name:"Merry Go Round of Life - Howl's Moving Castle (Joe Hisaishi)",description:"#302\n\nYoutube Preview : https://www.youtube.com/watch?v=q45z-XvFGeI\n\nDiscord Server : https://discord.gg/3ZSWSTh\nTwitch: https://www.twitch.tv/rigiiid\nTwitter: https://twitter.com/Rigid_bs\nYoutube : https://www.youtube.com/channel/UC36LRBThDdVFjCr-ZXOj-Uw",uploader:{id:4284588,name:"rigid",uniqueSet:!0,hash:"5cff0b7598cc5a672c852224",avatar:"https://cdn.beatsaver.com/avatar/295613108947386368.png",type:"DISCORD"},metadata:{bpm:165,duration:309,songName:"Merry-Go Round Of Life",songSubName:"",songAuthorName:"Joe Hisaishi",levelAuthorName:"Rigid"},stats:{plays:0,downloads:2060,upvotes:818,downvotes:14,score:.9194},uploaded:"2020-12-03T23:32:31.283Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d93e9ef74098ff490d0cd05e492f20c2be750ce2",key:"11b01",state:"Published",createdAt:"2020-12-03T23:32:31.283Z",sageScore:1,diffs:[{njs:17,offset:-.2,notes:1020,bombs:41,obstacles:18,nps:3.42,length:820.105,characteristic:"Standard",difficulty:"ExpertPlus",events:3102,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:298.22,paritySummary:{errors:1,warns:0,resets:3}}],downloadURL:"https://cdn.beatsaver.com/d93e9ef74098ff490d0cd05e492f20c2be750ce2.zip",coverURL:"https://cdn.beatsaver.com/d93e9ef74098ff490d0cd05e492f20c2be750ce2.jpg",previewURL:"https://cdn.beatsaver.com/d93e9ef74098ff490d0cd05e492f20c2be750ce2.mp3"}],createdAt:"2020-12-03T23:32:31.283Z",updatedAt:"2020-12-03T23:32:31.283Z",lastPublishedAt:"2020-12-03T23:32:31.283Z"},{id:"618a",name:"Teminite - Party Time",description:"Expert only\r\n",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:271,songName:"Party Time",songSubName:"",songAuthorName:"Teminite",levelAuthorName:"Rustic"},stats:{plays:0,downloads:1898,upvotes:1056,downvotes:24,score:.9194},uploaded:"2019-09-05T20:33:35.424Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"05aa128214d1adc3ca599a0475b6c422debc08e0",key:"618a",state:"Published",createdAt:"2019-09-05T20:33:35.424Z",sageScore:6,diffs:[{njs:18,offset:0,notes:953,bombs:112,obstacles:1389,nps:3.65,length:544,characteristic:"Standard",difficulty:"Expert",events:7206,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:261.12,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/05aa128214d1adc3ca599a0475b6c422debc08e0.zip",coverURL:"https://cdn.beatsaver.com/05aa128214d1adc3ca599a0475b6c422debc08e0.jpg",previewURL:"https://cdn.beatsaver.com/05aa128214d1adc3ca599a0475b6c422debc08e0.mp3"}],createdAt:"2019-09-05T20:33:35.424Z",updatedAt:"2019-09-05T20:33:35.424Z",lastPublishedAt:"2019-09-05T20:33:35.424Z"},{id:"3b82",name:"DJ Got Us Fallin In Love - Usher ft. Pitbull",description:'"DJ Got Us Fallin\' in Love" is a song by American R&B recording artist Usher featuring guest vocals from American rapper Pitbull.\r\n\r\nSong is brought from iTunes for the highest quality sound file :)',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:120,duration:222,songName:"DJ Got Us Fallin In Love",songSubName:"Usher ft. Pitbull",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2910,upvotes:819,downvotes:14,score:.9194},uploaded:"2019-03-04T16:58:43Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"96b8df29da4271f56c6777f11e69cd06669055fe",key:"3b82",state:"Published",createdAt:"2019-03-04T16:58:43Z",sageScore:5,diffs:[{njs:14,offset:0,notes:856,bombs:0,obstacles:5,nps:3.963,length:432,characteristic:"Standard",difficulty:"Expert",events:2006,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216,paritySummary:{errors:82,warns:85,resets:0}}],downloadURL:"https://cdn.beatsaver.com/96b8df29da4271f56c6777f11e69cd06669055fe.zip",coverURL:"https://cdn.beatsaver.com/96b8df29da4271f56c6777f11e69cd06669055fe.jpg",previewURL:"https://cdn.beatsaver.com/96b8df29da4271f56c6777f11e69cd06669055fe.mp3"}],createdAt:"2019-03-04T16:58:43Z",updatedAt:"2019-03-04T16:58:43Z",lastPublishedAt:"2019-03-04T16:58:43Z"},{id:"2649",name:"[Aurora Theory] Erik McClure - Soar",description:"The first map of the start of a new project for me :)\r\n\r\nA peaceful and comfy map, not intended to be super hard at all (unlike most of my other maps) but might be on the harder side of Expert.\r\nPeople need to give Erik McClure more recognition!\r\n\r\nDiscord: discord.gg/EVU9At2 (For updates regarding my maps, notifications for my streams, and a way to contact me)",uploader:{id:4288620,name:"hexagonial",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f2fb",avatar:"https://cdn.beatsaver.com/avatar/221442943045599232.png",type:"DISCORD"},metadata:{bpm:160,duration:350,songName:"Soar",songSubName:"Erik McClure",songAuthorName:"Hexagonial",levelAuthorName:"hexagonial"},stats:{plays:0,downloads:1468,upvotes:1099,downvotes:26,score:.9194},uploaded:"2018-12-16T21:04:48Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"087cedeab4b9e4c3a4b9c594c97bee6f446f0a77",key:"2649",state:"Published",createdAt:"2018-12-16T21:04:48Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1337,bombs:0,obstacles:71,nps:3.961,length:900,characteristic:"Standard",difficulty:"Expert",events:3056,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:337.5,paritySummary:{errors:26,warns:7,resets:0},stars:3.3}],downloadURL:"https://cdn.beatsaver.com/087cedeab4b9e4c3a4b9c594c97bee6f446f0a77.zip",coverURL:"https://cdn.beatsaver.com/087cedeab4b9e4c3a4b9c594c97bee6f446f0a77.jpg",previewURL:"https://cdn.beatsaver.com/087cedeab4b9e4c3a4b9c594c97bee6f446f0a77.mp3"}],createdAt:"2018-12-16T21:04:48Z",updatedAt:"2018-12-16T21:04:48Z",lastPublishedAt:"2018-12-16T21:04:48Z"},{id:"dfc3",name:"K/DA - THE BADDEST ft. (G)I-DLE, Bea Miller, Wolftyla",description:"Collab with ConnorJC. check out his maps! He did the 360 map",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:150,duration:162,songName:"Baddest",songSubName:"",songAuthorName:"KDA",levelAuthorName:"KikaeAeon & ConnorJC"},stats:{plays:0,downloads:4890,upvotes:2449,downvotes:94,score:.9193},uploaded:"2020-08-29T05:50:22.494Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c2a6c6aa907994353fef68370ebbda4da4ea4cc8",key:"dfc3",state:"Published",createdAt:"2020-08-29T05:50:22.494Z",sageScore:5,diffs:[{njs:10,offset:0,notes:274,bombs:0,obstacles:54,nps:1.713,length:400,characteristic:"Standard",difficulty:"Easy",events:901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:11,warns:2,resets:0}},{njs:10,offset:0,notes:321,bombs:0,obstacles:54,nps:2.006,length:400,characteristic:"Standard",difficulty:"Normal",events:1004,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:3,warns:0,resets:0}},{njs:12,offset:0,notes:464,bombs:0,obstacles:61,nps:2.9,length:400,characteristic:"Standard",difficulty:"Hard",events:1347,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:13,warns:13,resets:0}},{njs:14,offset:0,notes:608,bombs:0,obstacles:65,nps:3.8,length:400,characteristic:"Standard",difficulty:"Expert",events:1614,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:17,warns:23,resets:0}},{njs:16,offset:0,notes:851,bombs:0,obstacles:96,nps:5.319,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:2480,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:19,warns:41,resets:0}},{njs:19,offset:0,notes:944,bombs:6,obstacles:305,nps:5.9,length:400,characteristic:"360Degree",difficulty:"ExpertPlus",events:3408,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:160,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c2a6c6aa907994353fef68370ebbda4da4ea4cc8.zip",coverURL:"https://cdn.beatsaver.com/c2a6c6aa907994353fef68370ebbda4da4ea4cc8.jpg",previewURL:"https://cdn.beatsaver.com/c2a6c6aa907994353fef68370ebbda4da4ea4cc8.mp3"}],createdAt:"2020-08-29T05:50:22.494Z",updatedAt:"2020-08-29T05:50:22.494Z",lastPublishedAt:"2020-08-29T05:50:22.494Z"},{id:"5893",name:"Crypt of the NecroDancer - King Conga",description:"Hope you like this remap :) \n\n- ORYGINAL",uploader:{id:34774,name:"oryginal",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551e0",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8551e0?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:107,songName:"King Conga",songSubName:"",songAuthorName:"Danny Baranowsky",levelAuthorName:"ORYGINAL"},stats:{plays:0,downloads:1592,upvotes:741,downvotes:11,score:.9193},uploaded:"2019-07-23T14:43:05.570Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d0b4c5fcc3522f5b58d1ff2da7cfdd8086651078",key:"5893",state:"Published",createdAt:"2019-07-23T14:43:05.570Z",sageScore:4,diffs:[{njs:12,offset:0,notes:311,bombs:104,obstacles:30,nps:3.019,length:206,characteristic:"Standard",difficulty:"Hard",events:1160,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:103,paritySummary:{errors:15,warns:21,resets:4}},{njs:12,offset:0,notes:387,bombs:118,obstacles:23,nps:3.757,length:206,characteristic:"Standard",difficulty:"Expert",events:1160,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:103,paritySummary:{errors:9,warns:19,resets:4}}],downloadURL:"https://cdn.beatsaver.com/d0b4c5fcc3522f5b58d1ff2da7cfdd8086651078.zip",coverURL:"https://cdn.beatsaver.com/d0b4c5fcc3522f5b58d1ff2da7cfdd8086651078.jpg",previewURL:"https://cdn.beatsaver.com/d0b4c5fcc3522f5b58d1ff2da7cfdd8086651078.mp3"}],createdAt:"2019-07-23T14:43:05.570Z",updatedAt:"2019-07-23T14:43:05.570Z",lastPublishedAt:"2019-07-23T14:43:05.570Z"},{id:"3821",name:"Le Perv - Carpenter Brut (Hotline Miami 2 Soundtrack)",description:"Shoutouts to twitch.tv/lexington64 and twitch.tv/whipstickgostop for playtesting!",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:120,duration:259,songName:"Le Perv",songSubName:"Carpenter Brut",songAuthorName:"Ris",levelAuthorName:"Ris"},stats:{plays:0,downloads:1655,upvotes:983,downvotes:21,score:.9193},uploaded:"2019-02-21T02:57:32Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"57ad431c662057d428e920a8cd225bae5ab3d2c3",key:"3821",state:"Published",createdAt:"2019-02-21T02:57:32Z",sageScore:3,diffs:[{njs:10,offset:0,notes:488,bombs:0,obstacles:0,nps:1.91,length:511,characteristic:"Standard",difficulty:"Normal",events:369,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.5,paritySummary:{errors:109,warns:46,resets:0}},{njs:10,offset:0,notes:922,bombs:0,obstacles:0,nps:3.609,length:511,characteristic:"Standard",difficulty:"Hard",events:369,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.5,paritySummary:{errors:99,warns:85,resets:0}},{njs:12,offset:0,notes:1176,bombs:0,obstacles:0,nps:4.603,length:511,characteristic:"Standard",difficulty:"Expert",events:369,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.5,paritySummary:{errors:104,warns:99,resets:0}}],downloadURL:"https://cdn.beatsaver.com/57ad431c662057d428e920a8cd225bae5ab3d2c3.zip",coverURL:"https://cdn.beatsaver.com/57ad431c662057d428e920a8cd225bae5ab3d2c3.jpg",previewURL:"https://cdn.beatsaver.com/57ad431c662057d428e920a8cd225bae5ab3d2c3.mp3"}],createdAt:"2019-02-21T02:57:32Z",updatedAt:"2019-02-21T02:57:32Z",lastPublishedAt:"2019-02-21T02:57:32Z"},{id:"623c",name:"Lil Tecca - Ransom",description:"",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:180,duration:133,songName:"Ransom",songSubName:"",songAuthorName:"Lil Tecca",levelAuthorName:"KikaeAeon"},stats:{plays:0,downloads:2213,upvotes:1476,downvotes:44,score:.9192},uploaded:"2019-09-08T17:05:01.320Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ebdaaafecece7859d28ee1d80a94fa8b2b9992a3",key:"623c",state:"Published",createdAt:"2019-09-08T17:05:01.320Z",sageScore:5,diffs:[{njs:12,offset:0,notes:358,bombs:0,obstacles:31,nps:2.834,length:379,characteristic:"Standard",difficulty:"Expert",events:914,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:126.333,paritySummary:{errors:11,warns:13,resets:0}},{njs:16,offset:0,notes:571,bombs:0,obstacles:24,nps:4.52,length:379,characteristic:"Standard",difficulty:"ExpertPlus",events:684,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:126.333,paritySummary:{errors:12,warns:8,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ebdaaafecece7859d28ee1d80a94fa8b2b9992a3.zip",coverURL:"https://cdn.beatsaver.com/ebdaaafecece7859d28ee1d80a94fa8b2b9992a3.jpg",previewURL:"https://cdn.beatsaver.com/ebdaaafecece7859d28ee1d80a94fa8b2b9992a3.mp3"}],createdAt:"2019-09-08T17:05:01.320Z",updatedAt:"2019-09-08T17:05:01.320Z",lastPublishedAt:"2019-09-08T17:05:01.320Z"},{id:"2b56",name:"Pitbull Ft. Ke$ha - Timber",description:"Happy New Year! Here is a song I've been working on for a long time (With A LOT of procrastination). It didn't quite feel right with the notes being on beat so I extended them 1/16th off beat and it sounded a little better. Enjoy!\r\n\r\nVideo Preview of expert: https://youtu.be/ntGqRvV5hX4",uploader:{id:1974,name:"scottie2pottie",uniqueSet:!0,hash:"5cff0b7598cc5a672c85329f",avatar:"https://www.gravatar.com/avatar/5cff0b7598cc5a672c85329f?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:204,songName:"Timber",songSubName:"Pitbull",songAuthorName:"Scottie2Pottie",levelAuthorName:"scottie2pottie"},stats:{plays:0,downloads:4086,upvotes:1223,downvotes:32,score:.9191},uploaded:"2019-01-06T03:24:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ca709a09209760e19d9b63952aa208efc4663aef",key:"2b56",state:"Published",createdAt:"2019-01-06T03:24:10Z",sageScore:5,diffs:[{njs:10,offset:0,notes:721,bombs:4,obstacles:0,nps:3.616,length:432,characteristic:"Standard",difficulty:"Hard",events:1003,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.385,paritySummary:{errors:34,warns:15,resets:0}},{njs:10,offset:0,notes:932,bombs:4,obstacles:0,nps:4.674,length:432,characteristic:"Standard",difficulty:"Expert",events:1124,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.385,paritySummary:{errors:29,warns:31,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ca709a09209760e19d9b63952aa208efc4663aef.zip",coverURL:"https://cdn.beatsaver.com/ca709a09209760e19d9b63952aa208efc4663aef.jpg",previewURL:"https://cdn.beatsaver.com/ca709a09209760e19d9b63952aa208efc4663aef.mp3"}],createdAt:"2019-01-06T03:24:10Z",updatedAt:"2019-01-06T03:24:10Z",lastPublishedAt:"2019-01-06T03:24:10Z"},{id:"12db3",name:"Lindsey Sterling - Artemis ",description:"Made this a couple of months ago and totally didn't forget to upload it.\n\nThis was a special request by--I don't even know. I forgot. It's that old.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:190,duration:228,songName:"Artemis",songSubName:"",songAuthorName:"Lindsey Stirling",levelAuthorName:"Ab"},stats:{plays:0,downloads:1518,upvotes:602,downvotes:6,score:.919},uploaded:"2021-01-18T06:05:51.386Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a8df2df28d239a14b18f40855045eaca88a0c8e5",key:"12db3",state:"Published",createdAt:"2021-01-18T06:05:51.386Z",sageScore:3,diffs:[{njs:21,offset:0,notes:975,bombs:0,obstacles:2,nps:4.358,length:708.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1159,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.737,paritySummary:{errors:6,warns:5,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a8df2df28d239a14b18f40855045eaca88a0c8e5.zip",coverURL:"https://cdn.beatsaver.com/a8df2df28d239a14b18f40855045eaca88a0c8e5.jpg",previewURL:"https://cdn.beatsaver.com/a8df2df28d239a14b18f40855045eaca88a0c8e5.mp3"}],createdAt:"2021-01-18T06:05:51.386Z",updatedAt:"2021-01-18T06:05:51.386Z",lastPublishedAt:"2021-01-18T06:05:51.386Z"},{id:"2db1",name:"Huey Lewis - The Power of Love",description:"Here is my first map of 2019 covering 'The power of love' by Huey Lewis!\r\nAll difficulties are included from easy to expert, enjoy ;)\r\n\r\nBeastsaber: https://bsaber.com/members/stumi/\r\nVideo: https://www.youtube.com/watch?v=7aHevt6DVkc",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:119,duration:226,songName:"The power of love",songSubName:"Huey Lewis",songAuthorName:"Stumi",levelAuthorName:"stumi"},stats:{plays:0,downloads:6882,upvotes:1088,downvotes:26,score:.919},uploaded:"2019-01-14T18:26:26Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"bf261b573d7c649150ea1c23ec504130904b6aa2",key:"2db1",state:"Published",createdAt:"2019-01-14T18:26:26Z",sageScore:6,diffs:[{njs:10,offset:0,notes:311,bombs:0,obstacles:17,nps:1.449,length:425,characteristic:"Standard",difficulty:"Easy",events:1830,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.286,paritySummary:{errors:29,warns:22,resets:0}},{njs:10,offset:0,notes:489,bombs:0,obstacles:20,nps:2.278,length:425,characteristic:"Standard",difficulty:"Normal",events:1830,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.286,paritySummary:{errors:37,warns:55,resets:0}},{njs:11,offset:0,notes:697,bombs:0,obstacles:1,nps:3.247,length:425,characteristic:"Standard",difficulty:"Hard",events:1831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.286,paritySummary:{errors:41,warns:40,resets:0}},{njs:12,offset:0,notes:920,bombs:0,obstacles:0,nps:4.287,length:424.875,characteristic:"Standard",difficulty:"Expert",events:1831,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:214.223,paritySummary:{errors:59,warns:68,resets:0}}],downloadURL:"https://cdn.beatsaver.com/bf261b573d7c649150ea1c23ec504130904b6aa2.zip",coverURL:"https://cdn.beatsaver.com/bf261b573d7c649150ea1c23ec504130904b6aa2.jpg",previewURL:"https://cdn.beatsaver.com/bf261b573d7c649150ea1c23ec504130904b6aa2.mp3"}],createdAt:"2019-01-14T18:26:26Z",updatedAt:"2019-01-14T18:26:26Z",lastPublishedAt:"2019-01-14T18:26:26Z"},{id:"10377",name:"Marnik - Hocus Pocus (Original Mix)",description:"use CHROMA mod for\n - PanicEnvironment environment removal\n - Cool lights\n - to gain superpowers\n\nHappy Halloween!\n\nBPM | 130\nExpert+\nExpert\nHard\nNormal\nEasy\n\npreview: https://www.youtube.com/watch?v=DfzD_Ca4fp4\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:130,duration:242,songName:"Hocus Pocus",songSubName:"(Original Mix)",songAuthorName:"Marnik",levelAuthorName:"ETAN"},stats:{plays:0,downloads:7135,upvotes:1324,downvotes:37,score:.919},uploaded:"2020-10-25T22:28:11.819Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4e37c7070b9049ebbbf11ceab644d4ec4a01ca13",key:"10377",state:"Published",createdAt:"2020-10-25T22:28:11.819Z",sageScore:6,diffs:[{njs:9,offset:0,notes:232,bombs:0,obstacles:34,nps:.99,length:508,characteristic:"Standard",difficulty:"Easy",events:21660,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:40,warns:0,resets:0}},{njs:11,offset:1,notes:493,bombs:0,obstacles:34,nps:2.103,length:508,characteristic:"Standard",difficulty:"Normal",events:21660,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:0,warns:0,resets:0}},{njs:13,offset:.5,notes:693,bombs:0,obstacles:34,nps:2.956,length:508,characteristic:"Standard",difficulty:"Hard",events:21660,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:966,bombs:0,obstacles:34,nps:4.12,length:508,characteristic:"Standard",difficulty:"Expert",events:21660,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:0,warns:0,resets:0}},{njs:21,offset:.4,notes:1172,bombs:80,obstacles:34,nps:4.999,length:508,characteristic:"Standard",difficulty:"ExpertPlus",events:21661,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:234.462,paritySummary:{errors:6,warns:3,resets:34}}],downloadURL:"https://cdn.beatsaver.com/4e37c7070b9049ebbbf11ceab644d4ec4a01ca13.zip",coverURL:"https://cdn.beatsaver.com/4e37c7070b9049ebbbf11ceab644d4ec4a01ca13.jpg",previewURL:"https://cdn.beatsaver.com/4e37c7070b9049ebbbf11ceab644d4ec4a01ca13.mp3"}],createdAt:"2020-10-25T22:28:11.819Z",updatedAt:"2020-10-25T22:28:11.819Z",lastPublishedAt:"2020-10-25T22:28:11.819Z"},{id:"8367",name:"Martin Garrix & Dua Lipa - Scared To Be Lonely (Brooks Remix)",description:"Brooks does amazing remixes and this is probably one of my favourite ones\n\nVideo: https://youtu.be/OgmhqC5e9m8\n\nEasy: Notes: 132 NPS: 1.47 NJS: 10\nNormal: Notes: 164 NPS: 1.8 NJS: 12\nHard: Notes: 256 NPS: 2.82 NJS: 14\nExpert: Notes: 351 NPS: 3.86 NJS: 16\nExpert+: Notes: 417 NPS: 4.59 NJS: 18\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:104,songName:"Scared To Be Lonely",songSubName:"Brooks Remix",songAuthorName:"Martin Garrix ft. Dua Lipa",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:3240,upvotes:1111,downvotes:27,score:.919},uploaded:"2020-02-02T01:20:18.328Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"60dac314035b8f9da649286c587aa6377abf1f16",key:"8367",state:"Published",createdAt:"2020-02-02T01:20:18.328Z",sageScore:7,diffs:[{njs:10,offset:1,notes:132,bombs:0,obstacles:2,nps:1.467,length:192,characteristic:"Standard",difficulty:"Easy",events:2499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:8,warns:0,resets:0}},{njs:12,offset:.5,notes:164,bombs:0,obstacles:2,nps:1.803,length:194,characteristic:"Standard",difficulty:"Normal",events:2499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90.938,paritySummary:{errors:10,warns:2,resets:0}},{njs:14,offset:0,notes:256,bombs:0,obstacles:8,nps:2.815,length:194,characteristic:"Standard",difficulty:"Hard",events:2499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90.938,paritySummary:{errors:1,warns:1,resets:0}},{njs:16,offset:-.25,notes:351,bombs:0,obstacles:16,nps:3.86,length:194,characteristic:"Standard",difficulty:"Expert",events:2499,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90.938,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.5,notes:417,bombs:0,obstacles:34,nps:4.586,length:194,characteristic:"Standard",difficulty:"ExpertPlus",events:2498,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90.938,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/60dac314035b8f9da649286c587aa6377abf1f16.zip",coverURL:"https://cdn.beatsaver.com/60dac314035b8f9da649286c587aa6377abf1f16.jpg",previewURL:"https://cdn.beatsaver.com/60dac314035b8f9da649286c587aa6377abf1f16.mp3"}],createdAt:"2020-02-02T01:20:18.328Z",updatedAt:"2020-02-02T01:20:18.328Z",lastPublishedAt:"2020-02-02T01:20:18.328Z"},{id:"a90b",name:"[TheFatRat Pack] Xenogenesis - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nXenogenesis Stats:\nExpert+ - 955 Notes | 4.17 NPS\nExpert - 863 Notes | 3.77 NPS\nHard - 649 Notes | 2.84 NPS\nNormal - 439 Notes | 1.92 NPS\nEasy - 347 Notes | 1.52 NPS\n\nRoughly 7-8 Hours of work\nGameplay: https://youtu.be/YA0zBFQcLnc\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:145,duration:228,songName:"Xenogenesis",songSubName:"",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:4735,upvotes:1216,downvotes:32,score:.9189},uploaded:"2020-05-22T13:28:50.525Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"15ab8f50a6b1a7ff95955ba236426ab4edf9cb15",key:"a90b",state:"Published",createdAt:"2020-05-22T13:28:50.525Z",sageScore:5,diffs:[{njs:10,offset:0,notes:347,bombs:0,obstacles:53,nps:1.55,length:541,characteristic:"Standard",difficulty:"Easy",events:5971,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:54,warns:35,resets:0}},{njs:10,offset:0,notes:439,bombs:0,obstacles:97,nps:1.961,length:541,characteristic:"Standard",difficulty:"Normal",events:5971,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:30,warns:12,resets:0}},{njs:12.5,offset:1,notes:649,bombs:0,obstacles:121,nps:2.899,length:541,characteristic:"Standard",difficulty:"Hard",events:5971,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:6,warns:4,resets:0}},{njs:15,offset:.5,notes:863,bombs:0,obstacles:137,nps:3.855,length:541,characteristic:"Standard",difficulty:"Expert",events:6162,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:2,warns:1,resets:0}},{njs:17,offset:0,notes:955,bombs:0,obstacles:169,nps:4.266,length:541,characteristic:"Standard",difficulty:"ExpertPlus",events:6160,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.862,paritySummary:{errors:4,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/15ab8f50a6b1a7ff95955ba236426ab4edf9cb15.zip",coverURL:"https://cdn.beatsaver.com/15ab8f50a6b1a7ff95955ba236426ab4edf9cb15.jpg",previewURL:"https://cdn.beatsaver.com/15ab8f50a6b1a7ff95955ba236426ab4edf9cb15.mp3"}],createdAt:"2020-05-22T13:28:50.525Z",updatedAt:"2020-05-22T13:28:50.525Z",lastPublishedAt:"2020-05-22T13:28:50.525Z"},{id:"9b41",name:"Diving In Too Deep - NerdOut",description:"Diving In Too Deep, a Subnautica song created by NerdOut! All I can say is expect W A L L S ! ! !\n(Mapping Extensions required)",uploader:{id:23150,name:"kuritsadbs",uniqueSet:!0,hash:"5cff0b7698cc5a672c8537ef",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8537ef?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:195,songName:"Diving In Too Deep",songSubName:"",songAuthorName:"NerdOut",levelAuthorName:"KuritsaDBS"},stats:{plays:0,downloads:779,upvotes:512,downvotes:3,score:.9188},uploaded:"2020-04-15T11:53:14.568Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fe10d96acbb9a6416e1e7710270e12032b642288",key:"9b41",state:"Published",createdAt:"2020-04-15T11:53:14.568Z",sageScore:4,diffs:[{njs:16,offset:0,notes:481,bombs:0,obstacles:1919,nps:2.736,length:395.5,characteristic:"Standard",difficulty:"Expert",events:7541,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:175.778,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fe10d96acbb9a6416e1e7710270e12032b642288.zip",coverURL:"https://cdn.beatsaver.com/fe10d96acbb9a6416e1e7710270e12032b642288.jpg",previewURL:"https://cdn.beatsaver.com/fe10d96acbb9a6416e1e7710270e12032b642288.mp3"}],createdAt:"2020-04-15T11:53:14.568Z",updatedAt:"2020-04-15T11:53:14.568Z",lastPublishedAt:"2020-04-15T11:53:14.568Z"},{id:"7ba4",name:"Say So - Doja Cat",description:"Based on the Tik Tok dance meme song, Say So by Doja Cat.",uploader:{id:34446,name:"cartwheels",uniqueSet:!0,hash:"5e0cf5fbbe3a060006a86875",avatar:"https://www.gravatar.com/avatar/5e0cf5fbbe3a060006a86875?d=retro",type:"SIMPLE"},metadata:{bpm:111,duration:238,songName:"Say So",songSubName:"",songAuthorName:"Doja Cat",levelAuthorName:"mikey f"},stats:{plays:0,downloads:5177,upvotes:1523,downvotes:47,score:.9188},uploaded:"2020-01-02T00:07:45.673Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e931eac117453cea276351917c1af2b5f0a1c7df",key:"7ba4",state:"Published",createdAt:"2020-01-02T00:07:45.673Z",sageScore:5,diffs:[{njs:12,offset:0,notes:464,bombs:54,obstacles:11,nps:2.07,length:414.75,characteristic:"Standard",difficulty:"Normal",events:1366,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.189,paritySummary:{errors:49,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e931eac117453cea276351917c1af2b5f0a1c7df.zip",coverURL:"https://cdn.beatsaver.com/e931eac117453cea276351917c1af2b5f0a1c7df.jpg",previewURL:"https://cdn.beatsaver.com/e931eac117453cea276351917c1af2b5f0a1c7df.mp3"}],createdAt:"2020-01-02T00:07:45.673Z",updatedAt:"2020-01-02T00:07:45.673Z",lastPublishedAt:"2020-01-02T00:07:45.673Z"},{id:"500d",name:"Thunder - Imagine Dragons",description:"168 BPM / 3:00 Runtime\r\nEasy / 202 Notes\r\nNormal / 270 Notes\r\nHard / 400 Notes\r\nExpert / 505 Notes\r\nExpert+ / 660 Notes\r\n\r\nGameplay: Coming Soon",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:168,duration:180,songName:"Thunder",songSubName:"Imagine Dragons",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:8953,upvotes:3133,downvotes:134,score:.9188},uploaded:"2019-05-31T04:43:45Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1374613734d2d110f06783c7b7c32579e7a2808f",key:"500d",state:"Published",createdAt:"2019-05-31T04:43:45Z",sageScore:8,diffs:[{njs:10,offset:0,notes:202,bombs:0,obstacles:5,nps:1.178,length:480,characteristic:"Standard",difficulty:"Easy",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:38,warns:28,resets:0}},{njs:10,offset:0,notes:270,bombs:0,obstacles:7,nps:1.575,length:480,characteristic:"Standard",difficulty:"Normal",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:33,warns:31,resets:0}},{njs:10,offset:0,notes:400,bombs:0,obstacles:10,nps:2.333,length:480,characteristic:"Standard",difficulty:"Hard",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:55,warns:81,resets:0}},{njs:12,offset:0,notes:505,bombs:0,obstacles:13,nps:2.946,length:480,characteristic:"Standard",difficulty:"Expert",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:47,warns:64,resets:0}},{njs:14,offset:1,notes:660,bombs:4,obstacles:14,nps:3.85,length:480,characteristic:"Standard",difficulty:"ExpertPlus",events:4955,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:171.429,paritySummary:{errors:39,warns:64,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1374613734d2d110f06783c7b7c32579e7a2808f.zip",coverURL:"https://cdn.beatsaver.com/1374613734d2d110f06783c7b7c32579e7a2808f.jpg",previewURL:"https://cdn.beatsaver.com/1374613734d2d110f06783c7b7c32579e7a2808f.mp3"}],createdAt:"2019-05-31T04:43:45Z",updatedAt:"2019-05-31T04:43:45Z",lastPublishedAt:"2019-05-31T04:43:45Z"},{id:"4211",name:"Overkill - RIOT",description:"Thank you Everyone for the massive amount of support on this map. I'm very happy to release this as a V2 and hopefully you can all get some enjoyment like the first one did but with some very large QOL updates to the map as well that'll make the map in turn play much smoother and a ton of pattern changes that gives the map some more life! :D\r\n\r\nBig Thanks to RedMagi and Saut for modding and playtesting! :D",uploader:{id:408,name:"nuketime",uniqueSet:!0,hash:"5cff0b7498cc5a672c8507f7",avatar:"https://cdn.beatsaver.com/avatar/175811186007343104.png",type:"DISCORD"},metadata:{bpm:174,duration:308,songName:"Overkill",songSubName:"RIOT",songAuthorName:"Nuketime",levelAuthorName:"Nuketime"},stats:{plays:0,downloads:1444,upvotes:1211,downvotes:32,score:.9187},uploaded:"2019-03-30T19:12:13Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"aa94aeef877eecea90e4cf3795a84799056042e3",key:"4211",state:"Published",createdAt:"2019-03-30T19:12:13Z",sageScore:5,diffs:[{njs:19,offset:0,notes:1914,bombs:108,obstacles:368,nps:6.465,length:858.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3602,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:296.035,paritySummary:{errors:56,warns:53,resets:0}}],downloadURL:"https://cdn.beatsaver.com/aa94aeef877eecea90e4cf3795a84799056042e3.zip",coverURL:"https://cdn.beatsaver.com/aa94aeef877eecea90e4cf3795a84799056042e3.jpg",previewURL:"https://cdn.beatsaver.com/aa94aeef877eecea90e4cf3795a84799056042e3.mp3"}],createdAt:"2019-03-30T19:12:13Z",updatedAt:"2019-03-30T19:12:13Z",lastPublishedAt:"2019-03-30T19:12:13Z"},{id:"827d",name:"Robin Hustin x TobiMorrow - Light It Up (feat. Jex)",description:"Brings me back to when I made lights for this a long time ago. \n\nVideo: https://youtu.be/ttzkzmB39Bs\n\nEasy: Notes: 117 NPS: 1.31 NJS: 10\nNormal: Notes: 169 NPS: 1.9 NJS: 12\nHard: Notes: 237 NPS: 2.66 NJS: 14\nExpert: Notes: 325 NPS: 3.61 NJS: 16\nExpert+: Notes: 452 NPS: 5.02 NJS: 18\n\nCheck out my lightshows here: https://www.youtube.com/playlist?list=PLwl6dYq72JOYu1BnKl5WATa4Dh__ZJmuN",uploader:{id:14808,name:"halcyon12",uniqueSet:!0,hash:"5cff0b7698cc5a672c8547ad",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8547ad?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:102,songName:"Light It Up",songSubName:"ft. Jex",songAuthorName:"Robin Hustin, TobiMorrow",levelAuthorName:"Halcyon12"},stats:{plays:0,downloads:5922,upvotes:1375,downvotes:40,score:.9186},uploaded:"2020-01-29T22:25:19.574Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"22da796f08f777c437d4996d52ea1778e8e762ae",key:"827d",state:"Published",createdAt:"2020-01-29T22:25:19.574Z",sageScore:7,diffs:[{njs:10,offset:1,notes:117,bombs:0,obstacles:9,nps:1.312,length:190.25,characteristic:"Standard",difficulty:"Easy",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.18,paritySummary:{errors:2,warns:2,resets:0}},{njs:12,offset:.5,notes:169,bombs:0,obstacles:8,nps:1.895,length:190.25,characteristic:"Standard",difficulty:"Normal",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.18,paritySummary:{errors:4,warns:1,resets:0}},{njs:14,offset:0,notes:237,bombs:0,obstacles:17,nps:2.658,length:190.25,characteristic:"Standard",difficulty:"Hard",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:89.18,paritySummary:{errors:1,warns:0,resets:0}},{njs:16,offset:-.25,notes:325,bombs:0,obstacles:6,nps:3.611,length:192,characteristic:"Standard",difficulty:"Expert",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.5,notes:452,bombs:0,obstacles:16,nps:5.022,length:192,characteristic:"Standard",difficulty:"ExpertPlus",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:90,paritySummary:{errors:0,warns:0,resets:0}},{njs:12,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"ExpertPlus",events:3837,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/22da796f08f777c437d4996d52ea1778e8e762ae.zip",coverURL:"https://cdn.beatsaver.com/22da796f08f777c437d4996d52ea1778e8e762ae.jpg",previewURL:"https://cdn.beatsaver.com/22da796f08f777c437d4996d52ea1778e8e762ae.mp3"}],createdAt:"2020-01-29T22:25:19.574Z",updatedAt:"2020-01-29T22:25:19.574Z",lastPublishedAt:"2020-01-29T22:25:19.574Z"},{id:"105f5",name:"Porter Robinson & Madeon - Shelter",description:"A map that doesnt mess with chroma, but with boost lights\n\nBPM 100\nWonder (Expert)\n\nThis map was a special request from Lukken\n\npreview: https://www.youtube.com/watch?v=T1NscB2M4zI\n\nPlease enjoy\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:100,duration:221,songName:"Shelter",songSubName:"",songAuthorName:"Porter Robinson & Madeon",levelAuthorName:"ETAN"},stats:{plays:0,downloads:6551,upvotes:893,downvotes:18,score:.9185},uploaded:"2020-10-29T23:59:50.753Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1b3a2fa722e093cae37b52ba5d412496b3a20b82",key:"105f5",state:"Published",createdAt:"2020-10-29T23:59:50.753Z",sageScore:5,diffs:[{njs:16,offset:.4,notes:707,bombs:46,obstacles:13,nps:3.272,length:360.078,characteristic:"Standard",difficulty:"Expert",events:6858,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.047,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1b3a2fa722e093cae37b52ba5d412496b3a20b82.zip",coverURL:"https://cdn.beatsaver.com/1b3a2fa722e093cae37b52ba5d412496b3a20b82.jpg",previewURL:"https://cdn.beatsaver.com/1b3a2fa722e093cae37b52ba5d412496b3a20b82.mp3"}],createdAt:"2020-10-29T23:59:50.753Z",updatedAt:"2020-10-29T23:59:50.753Z",lastPublishedAt:"2020-10-29T23:59:50.753Z"},{id:"8b48",name:"Doja Cat - Boss Bitch",description:"This is my first Beat Saber map. Thank you to CheckThePan, PlusOneRabbit, CyanSnow, Aeroluna and everyone in Noodle for helping me get started. You are all great wonderful people I am honored to call friends. <3\nDuration: 2:14\nBPM: 126\nMapped NPS: 2.96\nNotes: 371",uploader:{id:4543,name:"dat360noscope",uniqueSet:!0,hash:"5e58387f521acf00068f9ad4",avatar:"https://www.gravatar.com/avatar/5e58387f521acf00068f9ad4?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:134,songName:"Boss Bitch",songSubName:"",songAuthorName:"Doja Cat",levelAuthorName:"Dat360NoScope"},stats:{plays:0,downloads:2843,upvotes:868,downvotes:17,score:.9185},uploaded:"2020-02-27T21:53:18.919Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2105facb044e1289ce1b84a9377bdd2a982f73e1",key:"8b48",state:"Published",createdAt:"2020-02-27T21:53:18.919Z",sageScore:4,diffs:[{njs:12,offset:0,notes:371,bombs:0,obstacles:87,nps:2.957,length:263.5,characteristic:"Standard",difficulty:"Hard",events:901,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:125.476,paritySummary:{errors:7,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2105facb044e1289ce1b84a9377bdd2a982f73e1.zip",coverURL:"https://cdn.beatsaver.com/2105facb044e1289ce1b84a9377bdd2a982f73e1.jpg",previewURL:"https://cdn.beatsaver.com/2105facb044e1289ce1b84a9377bdd2a982f73e1.mp3"}],createdAt:"2020-02-27T21:53:18.919Z",updatedAt:"2020-02-27T21:53:18.919Z",lastPublishedAt:"2020-02-27T21:53:18.919Z"},{id:"7067",name:"Sorairo Days (TV Size) [Gurren Lagann Opening] - Shoko Nakagawa",description:"This map was converted from one of my old maps.\n\nFeel free to DM me on discord @Joetastic#2501",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:174,duration:93,songName:"Sorairo Days (TV Size)",songSubName:"",songAuthorName:"Shoko Nakagawa",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2600,upvotes:940,downvotes:20,score:.9185},uploaded:"2019-11-17T06:13:49.456Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5a5f6a419abfcc998262b28f1fe4e3baa7d3d1bc",key:"7067",state:"Published",createdAt:"2019-11-17T06:13:49.456Z",sageScore:2,diffs:[{njs:10,offset:0,notes:212,bombs:0,obstacles:0,nps:2.726,length:225.5,characteristic:"Standard",difficulty:"Normal",events:1518,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:77.759,paritySummary:{errors:22,warns:13,resets:0}},{njs:11,offset:0,notes:290,bombs:0,obstacles:0,nps:3.729,length:225.5,characteristic:"Standard",difficulty:"Hard",events:1518,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:77.759,paritySummary:{errors:16,warns:7,resets:0}},{njs:13,offset:0,notes:332,bombs:0,obstacles:0,nps:4.27,length:225.5,characteristic:"Standard",difficulty:"Expert",events:1518,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:77.759,paritySummary:{errors:9,warns:11,resets:0}},{njs:15,offset:0,notes:469,bombs:0,obstacles:0,nps:5.978,length:227.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1543,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:78.448,paritySummary:{errors:22,warns:33,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5a5f6a419abfcc998262b28f1fe4e3baa7d3d1bc.zip",coverURL:"https://cdn.beatsaver.com/5a5f6a419abfcc998262b28f1fe4e3baa7d3d1bc.jpg",previewURL:"https://cdn.beatsaver.com/5a5f6a419abfcc998262b28f1fe4e3baa7d3d1bc.mp3"}],createdAt:"2019-11-17T06:13:49.456Z",updatedAt:"2019-11-17T06:13:49.456Z",lastPublishedAt:"2019-11-17T06:13:49.456Z"},{id:"19a",name:"NSP - Cool Patrol",description:"Normal, Hard, and Expert difficulties available. Relatively close to vanilla balancing.\r\n\r\nPreview: https://youtu.be/e5W5EhEE0V4\r\n\r\nBPM: 130\r\nNotes: 651 (Expert)\r\nDuration: 3:09",uploader:{id:45732,name:"calijor",uniqueSet:!1,hash:"5cff0b7298cc5a672c84ebb1",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ebb1?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:189,songName:"Cool Patrol",songSubName:"",songAuthorName:"Ninja Sex Party",levelAuthorName:"calijor"},stats:{plays:0,downloads:1119,upvotes:1325,downvotes:38,score:.9184},uploaded:"2018-05-22T04:53:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c87de9a5e4e8aa91d57403bde711033770b3c4a8",key:"19a",state:"Published",createdAt:"2018-05-22T04:53:18Z",sageScore:5,diffs:[{njs:10,offset:0,notes:434,bombs:0,obstacles:6,nps:2.351,length:399.938,characteristic:"Standard",difficulty:"Normal",events:1533,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.587,paritySummary:{errors:79,warns:32,resets:0}},{njs:10,offset:0,notes:560,bombs:0,obstacles:6,nps:3.034,length:399.938,characteristic:"Standard",difficulty:"Hard",events:1533,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.587,paritySummary:{errors:145,warns:31,resets:0}},{njs:10,offset:0,notes:651,bombs:0,obstacles:8,nps:3.527,length:399.938,characteristic:"Standard",difficulty:"Expert",events:1533,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:184.587,paritySummary:{errors:136,warns:48,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c87de9a5e4e8aa91d57403bde711033770b3c4a8.zip",coverURL:"https://cdn.beatsaver.com/c87de9a5e4e8aa91d57403bde711033770b3c4a8.jpg",previewURL:"https://cdn.beatsaver.com/c87de9a5e4e8aa91d57403bde711033770b3c4a8.mp3"}],createdAt:"2018-05-22T04:53:18Z",updatedAt:"2018-05-22T04:53:18Z",lastPublishedAt:"2018-05-22T04:53:18Z"},{id:"3c89",name:"99.9 // Mob Choir feat. Sajou no Hana",description:"99.9, the OP Mob Psycho 100 Season 2\r\nBy Mob Choir feat. Sajou no Hana\r\nVideo: https://youtu.be/Qbk-0-p60WY\r\n\r\nShoutout to Testers:\r\nRedMagi\r\nTrolav",uploader:{id:39365,name:"todokete",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee70",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee70?d=retro",type:"SIMPLE"},metadata:{bpm:168,duration:98,songName:"99.9",songSubName:"MOB CHOIR feat. sajou no hana",songAuthorName:"Todokete",levelAuthorName:"todokete"},stats:{plays:0,downloads:3540,upvotes:1704,downvotes:57,score:.9183},uploaded:"2019-03-08T16:51:17Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"15ba13d183c824f46d2fc68ff5d6ba52ced1fad5",key:"3c89",state:"Published",createdAt:"2019-03-08T16:51:17Z",sageScore:3,diffs:[{njs:10,offset:0,notes:175,bombs:0,obstacles:0,nps:1.976,length:248,characteristic:"Standard",difficulty:"Normal",events:3251,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.571,paritySummary:{errors:17,warns:14,resets:0},stars:1.03},{njs:11,offset:0,notes:274,bombs:0,obstacles:0,nps:3.094,length:248,characteristic:"Standard",difficulty:"Hard",events:3251,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.571,paritySummary:{errors:17,warns:5,resets:0},stars:1.73},{njs:13,offset:0,notes:376,bombs:0,obstacles:0,nps:4.245,length:248,characteristic:"Standard",difficulty:"Expert",events:3251,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.571,paritySummary:{errors:22,warns:35,resets:0}},{njs:16,offset:0,notes:482,bombs:0,obstacles:0,nps:5.442,length:248,characteristic:"Standard",difficulty:"ExpertPlus",events:3251,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.571,paritySummary:{errors:20,warns:35,resets:0}}],downloadURL:"https://cdn.beatsaver.com/15ba13d183c824f46d2fc68ff5d6ba52ced1fad5.zip",coverURL:"https://cdn.beatsaver.com/15ba13d183c824f46d2fc68ff5d6ba52ced1fad5.jpg",previewURL:"https://cdn.beatsaver.com/15ba13d183c824f46d2fc68ff5d6ba52ced1fad5.mp3"}],createdAt:"2019-03-08T16:51:17Z",updatedAt:"2019-03-08T16:51:17Z",lastPublishedAt:"2019-03-08T16:51:17Z"},{id:"1a0b7",name:"[Electro Swing Pack] Jamie Berry - Lost In The Rhythm (ft. Octavia Rose)",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/4O8l7rq4eHI\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:121,duration:186,songName:"Lost In The Rhythm",songSubName:"(ft. Octavia Rose)",songAuthorName:"Jamie Berry",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:13219,upvotes:666,downvotes:9,score:.9182},uploaded:"2021-07-08T15:24:57.679Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6d006d47880a45a134844f3787f3c184881d4673",key:"1a0b7",state:"Published",createdAt:"2021-07-08T15:24:57.679Z",sageScore:5,diffs:[{njs:16,offset:-.25,notes:591,bombs:0,obstacles:8,nps:3.274,length:364,characteristic:"Standard",difficulty:"Expert",events:3271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.496,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:821,bombs:0,obstacles:8,nps:4.549,length:364,characteristic:"Standard",difficulty:"ExpertPlus",events:3271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.496,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6d006d47880a45a134844f3787f3c184881d4673.zip",coverURL:"https://cdn.beatsaver.com/6d006d47880a45a134844f3787f3c184881d4673.jpg",previewURL:"https://cdn.beatsaver.com/6d006d47880a45a134844f3787f3c184881d4673.mp3"}],createdAt:"2021-07-08T15:24:57.679Z",updatedAt:"2021-07-08T15:24:57.679Z",lastPublishedAt:"2021-07-08T15:24:57.679Z"},{id:"84d6",name:"drop pop candy - Reol ft. Giga-P (+ Luka & Rin) [Std, 360 & 90]",description:"Another song by the amazing duo Reol and Giga-P, drop pop candy entered Hall of Fame just seven days after release!\n\nExpert+ guest difficulty by AaltopahWi! Everything else (Expert-Easy, 360, 90 and lighting) by me, Kolezan.\n\nThe Vocaloid song version with Megurine Luka and Kagamine Rin is also included!\nTo use this version do a file search in your Beat Saber_data/CustomLevels folder for “Reol_drop_pop_candy.egg”, open the folder which that file resides in, then rename “Reol_drop_pop_candy.egg” to “Reol_drop_pop_candy_Reol_and_Giga.egg”, and then rename “Reol_drop_pop_candy_Luka_and_Rin.egg” to “Reol_drop_pop_candy.egg”. Done!\n\nThanks to Maralade for pushing me to map this song sooner than later!\n\nMap is a tad harder than average, mostly to keep up with all the interesting points in the song. Map also contains custom map colors based on the music video.\n\nNo map video preview.\n\nBPM: 130\nDuration: 3:44\n\n== Standard mode: ==\nEasy:\nNPS 1.36, 306 notes, 50 walls, 0 bombs\n\nNormal:\nNPS 2.10, 470 notes, 16 walls, 0 bombs\n\nHard:\nNPS 2.86, 641 notes, 5 walls, 0 bombs\n\nExpert:\nNPS 3.85, 863 notes, 5 walls, 0 bombs\n\nExpert+ (by AaltopahWi):\nNPS 4.61, 1035 notes, 7 walls, 0 bombs\n\n== 360 degree mode: ==\nExpert:\nNPS 3.89, 873 notes, 39 walls, 0 bombs\n\n== 90 degree mode: ==\nExpert:\nNPS 3.89, 873 notes, 38 walls, 0 bombs\n\nThanks to Sorukun, fruhead, Checkthepan and Helen Carnate for playtesting!\n\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:130,duration:224,songName:"drop pop candy",songSubName:"ft. GigaP",songAuthorName:"Reol",levelAuthorName:"Kolezan (E+ by AaltopahWi)"},stats:{plays:0,downloads:2815,upvotes:1257,downvotes:35,score:.9182},uploaded:"2020-02-07T07:19:14.938Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"50e4c2101cc079a98f88e80aa7091e60bb6d1d31",key:"84d6",state:"Published",createdAt:"2020-02-07T07:19:14.938Z",sageScore:6,diffs:[{njs:9,offset:0,notes:306,bombs:0,obstacles:50,nps:1.42,length:467,characteristic:"Standard",difficulty:"Easy",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:215.538,paritySummary:{errors:80,warns:21,resets:0}},{njs:11,offset:1,notes:470,bombs:0,obstacles:16,nps:2.164,length:470.5,characteristic:"Standard",difficulty:"Normal",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.154,paritySummary:{errors:67,warns:51,resets:0}},{njs:14,offset:.5,notes:641,bombs:0,obstacles:5,nps:2.927,length:474.5,characteristic:"Standard",difficulty:"Hard",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:33,warns:21,resets:0}},{njs:17,offset:.125,notes:863,bombs:0,obstacles:5,nps:3.941,length:474.5,characteristic:"Standard",difficulty:"Expert",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:21,warns:36,resets:0}},{njs:19,offset:-.25,notes:1035,bombs:0,obstacles:7,nps:4.726,length:474.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2147,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:3,warns:6,resets:0}},{njs:15,offset:.25,notes:873,bombs:0,obstacles:38,nps:3.986,length:474.5,characteristic:"90Degree",difficulty:"Expert",events:2464,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:26,warns:37,resets:0}},{njs:15,offset:.25,notes:873,bombs:0,obstacles:39,nps:3.986,length:474.5,characteristic:"360Degree",difficulty:"Expert",events:2467,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219,paritySummary:{errors:26,warns:37,resets:0}}],downloadURL:"https://cdn.beatsaver.com/50e4c2101cc079a98f88e80aa7091e60bb6d1d31.zip",coverURL:"https://cdn.beatsaver.com/50e4c2101cc079a98f88e80aa7091e60bb6d1d31.jpg",previewURL:"https://cdn.beatsaver.com/50e4c2101cc079a98f88e80aa7091e60bb6d1d31.mp3"}],createdAt:"2020-02-07T07:19:14.938Z",updatedAt:"2020-02-07T07:19:14.938Z",lastPublishedAt:"2020-02-07T07:19:14.938Z"},{id:"68bb",name:"FREEDOM DiVE (ZipperKim Remix)",description:"Remixer: https://youtu.be/IQ7KvbSrm7M\n\nPreview: https://youtu.be/L2cs_elU7rE\n\n\nTwitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:140,duration:160,songName:"FREEDOM DiVE",songSubName:"(ZipperKim Remix)",songAuthorName:"xi",levelAuthorName:"Dack"},stats:{plays:0,downloads:4015,upvotes:1940,downvotes:70,score:.9181},uploaded:"2019-10-08T23:40:00.119Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"f1591bf3f2d821a48bb86214c9da47d8cff24046",key:"68bb",state:"Published",createdAt:"2019-10-08T23:40:00.119Z",sageScore:6,diffs:[{njs:14.5,offset:0,notes:529,bombs:4,obstacles:2,nps:3.547,length:348,characteristic:"Standard",difficulty:"Hard",events:3703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.143,paritySummary:{errors:0,warns:0,resets:1},stars:2.14},{njs:16,offset:0,notes:643,bombs:4,obstacles:0,nps:4.311,length:348,characteristic:"Standard",difficulty:"Expert",events:3703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.143,paritySummary:{errors:7,warns:4,resets:1},stars:2.84},{njs:18,offset:0,notes:752,bombs:4,obstacles:0,nps:5.042,length:348,characteristic:"Standard",difficulty:"ExpertPlus",events:3703,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:149.143,paritySummary:{errors:9,warns:11,resets:1},stars:4.16}],downloadURL:"https://cdn.beatsaver.com/f1591bf3f2d821a48bb86214c9da47d8cff24046.zip",coverURL:"https://cdn.beatsaver.com/f1591bf3f2d821a48bb86214c9da47d8cff24046.jpg",previewURL:"https://cdn.beatsaver.com/f1591bf3f2d821a48bb86214c9da47d8cff24046.mp3"}],createdAt:"2019-10-08T23:40:00.119Z",updatedAt:"2019-10-08T23:40:00.119Z",lastPublishedAt:"2019-10-08T23:40:00.119Z"},{id:"456d",name:"Wiz Khalifa - Black and Yellow",description:"Yeah, uh huh, you know what it is! It's a new map! Black and Yellow by Wiz Khalifa. The colors? Black and yellow, black and yellow, black and yellow, black and yellow.\r\nI think it's a fun map, so I hope you enjoy as well!\r\n\r\nAs always, you can give me feedback on Beast Saber or in Discord @Maarten#9596.\r\n\r\nPreview video: https://www.youtube.com/watch?v=fla0VfHh3WE",uploader:{id:57657,name:"pixelguymm",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541a8",avatar:"https://cdn.beatsaver.com/avatar/434386941547511818.png",type:"DISCORD"},metadata:{bpm:164,duration:102,songName:"Black and Yellow",songSubName:"Wiz Khalifa",songAuthorName:"Pixelguy",levelAuthorName:"pixelguymm"},stats:{plays:0,downloads:2927,upvotes:1171,downvotes:31,score:.9181},uploaded:"2019-04-13T08:58:48Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b03042e8647cca08cdc5b80e23ed569ef3dbc201",key:"456d",state:"Published",createdAt:"2019-04-13T08:58:48Z",sageScore:6,diffs:[{njs:12,offset:0,notes:144,bombs:0,obstacles:0,nps:1.55,length:254,characteristic:"Standard",difficulty:"Easy",events:1062,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:92.927,paritySummary:{errors:7,warns:0,resets:0}},{njs:12,offset:0,notes:208,bombs:0,obstacles:0,nps:2.23,length:255,characteristic:"Standard",difficulty:"Normal",events:1062,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:93.293,paritySummary:{errors:8,warns:8,resets:0}},{njs:14,offset:0,notes:293,bombs:16,obstacles:0,nps:3.135,length:255.5,characteristic:"Standard",difficulty:"Hard",events:1062,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:93.476,paritySummary:{errors:18,warns:14,resets:3}},{njs:16,offset:0,notes:402,bombs:20,obstacles:0,nps:4.301,length:255.5,characteristic:"Standard",difficulty:"Expert",events:1062,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:93.476,paritySummary:{errors:18,warns:16,resets:8}}],downloadURL:"https://cdn.beatsaver.com/b03042e8647cca08cdc5b80e23ed569ef3dbc201.zip",coverURL:"https://cdn.beatsaver.com/b03042e8647cca08cdc5b80e23ed569ef3dbc201.jpg",previewURL:"https://cdn.beatsaver.com/b03042e8647cca08cdc5b80e23ed569ef3dbc201.mp3"}],createdAt:"2019-04-13T08:58:48Z",updatedAt:"2019-04-13T08:58:48Z",lastPublishedAt:"2019-04-13T08:58:48Z"},{id:"6554",name:"Windows Down - Nightcore",description:"Youtube Preview: https://youtu.be/z-Iaze8Ac60",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:159,duration:159,songName:"Windows Down - Nightcore",songSubName:"",songAuthorName:"Nightcore Reality",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:697,upvotes:786,downvotes:14,score:.918},uploaded:"2019-09-23T01:31:55.127Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4bec5881a2090ab3e655fecdec1eed5324703c94",key:"6554",state:"Published",createdAt:"2019-09-23T01:31:55.127Z",sageScore:4,diffs:[{njs:15,offset:0,notes:518,bombs:20,obstacles:27,nps:3.348,length:410,characteristic:"Standard",difficulty:"Expert",events:646,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.717,paritySummary:{errors:0,warns:0,resets:6}}],downloadURL:"https://cdn.beatsaver.com/4bec5881a2090ab3e655fecdec1eed5324703c94.zip",coverURL:"https://cdn.beatsaver.com/4bec5881a2090ab3e655fecdec1eed5324703c94.jpg",previewURL:"https://cdn.beatsaver.com/4bec5881a2090ab3e655fecdec1eed5324703c94.mp3"}],createdAt:"2019-09-23T01:31:55.127Z",updatedAt:"2019-09-23T01:31:55.127Z",lastPublishedAt:"2019-09-23T01:31:55.127Z"},{id:"2bb7",name:"Join Us for a Bite (FNAF Sister Location) - JT Music feat. Andrea Storm Kaden",description:"BPM: 86 (172 at points)\r\nNotes: Hard - 628 , Expert - 745\r\nWalls: 14\r\n\r\nThanks to Redmagi for playtesting, and AaltopahWi for lighting advice.",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:86,duration:225,songName:"Join Us for a Bite (FNAF Sister Location)",songSubName:"JT Music feat. Andrea Storm Kaden",songAuthorName:"fruhead",levelAuthorName:"fruhead"},stats:{plays:0,downloads:1667,upvotes:993,downvotes:23,score:.918},uploaded:"2019-01-07T06:04:31Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"7974c174533415ccc43dcd75678aedd1aec44f96",key:"2bb7",state:"Published",createdAt:"2019-01-07T06:04:31Z",sageScore:6,diffs:[{njs:12,offset:0,notes:628,bombs:0,obstacles:14,nps:2.867,length:314,characteristic:"Standard",difficulty:"Hard",events:1759,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.07,paritySummary:{errors:43,warns:22,resets:0}},{njs:13,offset:0,notes:745,bombs:0,obstacles:14,nps:3.401,length:314,characteristic:"Standard",difficulty:"Expert",events:1760,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.07,paritySummary:{errors:30,warns:24,resets:0}}],downloadURL:"https://cdn.beatsaver.com/7974c174533415ccc43dcd75678aedd1aec44f96.zip",coverURL:"https://cdn.beatsaver.com/7974c174533415ccc43dcd75678aedd1aec44f96.jpg",previewURL:"https://cdn.beatsaver.com/7974c174533415ccc43dcd75678aedd1aec44f96.mp3"}],createdAt:"2019-01-07T06:04:31Z",updatedAt:"2019-01-07T06:04:31Z",lastPublishedAt:"2019-01-07T06:04:31Z"},{id:"e4",name:"Every Time We Touch - Cascada",description:"Expert Only\r\nTime - 3:19\r\nBPM - 142\r\nNotes- 564",uploader:{id:49373,name:"purphoros",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea98",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea98?d=retro",type:"SIMPLE"},metadata:{bpm:142,duration:199,songName:"Every Time We Touch",songSubName:"",songAuthorName:"Cascada",levelAuthorName:"purphoros"},stats:{plays:0,downloads:15282,upvotes:10721,downvotes:627,score:.918},uploaded:"2018-05-18T03:51:03Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"bc6c7ef1385db4c11c59736d2b32eacf48c95bd9",key:"e4",state:"Published",createdAt:"2018-05-18T03:51:03Z",sageScore:4,diffs:[{njs:10,offset:0,notes:564,bombs:0,obstacles:0,nps:3.178,length:420,characteristic:"Standard",difficulty:"Expert",events:10,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.465,paritySummary:{errors:108,warns:44,resets:0},stars:2.13}],downloadURL:"https://cdn.beatsaver.com/bc6c7ef1385db4c11c59736d2b32eacf48c95bd9.zip",coverURL:"https://cdn.beatsaver.com/bc6c7ef1385db4c11c59736d2b32eacf48c95bd9.jpg",previewURL:"https://cdn.beatsaver.com/bc6c7ef1385db4c11c59736d2b32eacf48c95bd9.mp3"}],createdAt:"2018-05-18T03:51:03Z",updatedAt:"2018-05-18T03:51:03Z",lastPublishedAt:"2018-05-18T03:51:03Z"},{id:"3519",name:"Happier Sunflower - Marshmello, Post Malone, Swae Lee, Bastille [Mashup by Dj Pyromania]",description:"Preview:\r\nhttps://www.youtube.com/watch?v=eRwvvhMrkcQ",uploader:{id:4286278,name:"ruckus",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f1d8",avatar:"https://cdn.beatsaver.com/avatar/239082462083284992.png",type:"DISCORD"},metadata:{bpm:100,duration:205,songName:"Happier Sunflower",songSubName:"Dj Pyromania, Marshmello, Post Malone, Bastille, Swae Lee",songAuthorName:"Ruckus",levelAuthorName:"ruckus"},stats:{plays:0,downloads:5342,upvotes:1788,downvotes:62,score:.918},uploaded:"2019-02-10T18:46:16Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ec8dc26331e1eff4d4fabeed45b927c49a61f8ca",key:"3519",state:"Published",createdAt:"2019-02-10T18:46:16Z",sageScore:5,diffs:[{njs:14,offset:0,notes:348,bombs:0,obstacles:24,nps:1.747,length:332,characteristic:"Standard",difficulty:"Normal",events:2700,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.2,paritySummary:{errors:24,warns:16,resets:0}},{njs:14,offset:0,notes:718,bombs:0,obstacles:31,nps:3.604,length:332.063,characteristic:"Standard",difficulty:"Expert",events:2700,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:199.238,paritySummary:{errors:47,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ec8dc26331e1eff4d4fabeed45b927c49a61f8ca.zip",coverURL:"https://cdn.beatsaver.com/ec8dc26331e1eff4d4fabeed45b927c49a61f8ca.jpg",previewURL:"https://cdn.beatsaver.com/ec8dc26331e1eff4d4fabeed45b927c49a61f8ca.mp3"}],createdAt:"2019-02-10T18:46:16Z",updatedAt:"2019-02-10T18:46:16Z",lastPublishedAt:"2019-02-10T18:46:16Z"},{id:"c767",name:"We'll Meet Again",description:"Decided to wall map this beautiful song, hope you all love it!\n---------------------------------------------\n\nQuestions? Feedback? Map not working? \nmessage me on discord: Reddek#5864",uploader:{id:4233941,name:"reddek",uniqueSet:!0,hash:"5dbfb4426dea0b0006bd328d",avatar:"https://cdn.beatsaver.com/avatar/177436487086768129.png",type:"DISCORD"},metadata:{bpm:192,duration:196,songName:"We'll Meet Again",songSubName:"",songAuthorName:"TheFatRat & Laura Brehm",levelAuthorName:"Reddek"},stats:{plays:0,downloads:1398,upvotes:758,downvotes:13,score:.9179},uploaded:"2020-07-25T12:21:48.657Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4e3bc64c9aca00a925848905caccd27b5f390573",key:"c767",state:"Published",createdAt:"2020-07-25T12:21:48.657Z",sageScore:3,diffs:[{njs:18,offset:0,notes:721,bombs:34,obstacles:17842,nps:4.006,length:576,characteristic:"Standard",difficulty:"ExpertPlus",events:2009,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:180,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/4e3bc64c9aca00a925848905caccd27b5f390573.zip",coverURL:"https://cdn.beatsaver.com/4e3bc64c9aca00a925848905caccd27b5f390573.jpg",previewURL:"https://cdn.beatsaver.com/4e3bc64c9aca00a925848905caccd27b5f390573.mp3"}],createdAt:"2020-07-25T12:21:48.657Z",updatedAt:"2020-07-25T12:21:48.657Z",lastPublishedAt:"2020-07-25T12:21:48.657Z"},{id:"b99e",name:"How You Like That - Blackpink",description:"All difficulties available.\n\nExpert+ preview (pre-release version): https://youtu.be/seIKt_PR7hg\n\nSpecial thanks to lilqbunny for setting up the audio.\n\nFollow me on Twitter u won't: https://twitter.com/aggrogahu\nCatch me live on Twitch: https://www.twitch.tv/aggrogahu\nJoin the KPOP Beat Saber discord: https://discord.gg/c9uHGYP",uploader:{id:4284613,name:"aggrogahu",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fdad",avatar:"https://cdn.beatsaver.com/avatar/158363872649150464.png",type:"DISCORD"},metadata:{bpm:130,duration:181,songName:"How You Like That",songSubName:"",songAuthorName:"Blackpink",levelAuthorName:"aggrogahu"},stats:{plays:0,downloads:11418,upvotes:1451,downvotes:45,score:.9179},uploaded:"2020-07-05T06:16:58.371Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"54f993f61f0ea48ddbb764f13936cc78799046a5",key:"b99e",state:"Published",createdAt:"2020-07-05T06:16:58.371Z",sageScore:7,diffs:[{njs:10,offset:1,notes:216,bombs:6,obstacles:16,nps:1.286,length:364,characteristic:"Standard",difficulty:"Easy",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168,paritySummary:{errors:37,warns:12,resets:4}},{njs:10,offset:1,notes:276,bombs:14,obstacles:19,nps:1.643,length:364,characteristic:"Standard",difficulty:"Normal",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168,paritySummary:{errors:38,warns:26,resets:7}},{njs:12,offset:1,notes:430,bombs:32,obstacles:19,nps:2.56,length:364,characteristic:"Standard",difficulty:"Hard",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168,paritySummary:{errors:34,warns:46,resets:9}},{njs:14,offset:.7,notes:631,bombs:30,obstacles:21,nps:3.749,length:364.667,characteristic:"Standard",difficulty:"Expert",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.308,paritySummary:{errors:18,warns:28,resets:8}},{njs:19,offset:-.3,notes:692,bombs:30,obstacles:30,nps:4.112,length:364.667,characteristic:"Standard",difficulty:"ExpertPlus",events:1462,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.308,paritySummary:{errors:16,warns:22,resets:8}}],downloadURL:"https://cdn.beatsaver.com/54f993f61f0ea48ddbb764f13936cc78799046a5.zip",coverURL:"https://cdn.beatsaver.com/54f993f61f0ea48ddbb764f13936cc78799046a5.jpg",previewURL:"https://cdn.beatsaver.com/54f993f61f0ea48ddbb764f13936cc78799046a5.mp3"}],createdAt:"2020-07-05T06:16:58.371Z",updatedAt:"2020-07-05T06:16:58.371Z",lastPublishedAt:"2020-07-05T06:16:58.371Z"},{id:"8647",name:"Pursuing My True Self - Persona 4",description:"80",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:119,duration:183,songName:"Pursuing My True Self",songSubName:"",songAuthorName:"Persona 4",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:5195,upvotes:1185,downvotes:32,score:.9179},uploaded:"2020-02-12T11:59:55.125Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"990f576d9b1045bc6aa4f7ab7a2231a1bd05e6fe",key:"8647",state:"Published",createdAt:"2020-02-12T11:59:55.125Z",sageScore:4,diffs:[{njs:12,offset:0,notes:605,bombs:0,obstacles:59,nps:3.354,length:357.75,characteristic:"Standard",difficulty:"Hard",events:1318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.378,paritySummary:{errors:11,warns:12,resets:0}},{njs:15,offset:-.4,notes:812,bombs:0,obstacles:47,nps:4.499,length:358,characteristic:"Standard",difficulty:"Expert",events:1318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.504,paritySummary:{errors:9,warns:23,resets:0}},{njs:17,offset:-.6,notes:921,bombs:0,obstacles:81,nps:5.102,length:358,characteristic:"Standard",difficulty:"ExpertPlus",events:1318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180.504,paritySummary:{errors:49,warns:77,resets:0}}],downloadURL:"https://cdn.beatsaver.com/990f576d9b1045bc6aa4f7ab7a2231a1bd05e6fe.zip",coverURL:"https://cdn.beatsaver.com/990f576d9b1045bc6aa4f7ab7a2231a1bd05e6fe.jpg",previewURL:"https://cdn.beatsaver.com/990f576d9b1045bc6aa4f7ab7a2231a1bd05e6fe.mp3"}],createdAt:"2020-02-12T11:59:55.125Z",updatedAt:"2020-02-12T11:59:55.125Z",lastPublishedAt:"2020-02-12T11:59:55.125Z"},{id:"5911",name:"Stars Tonight - Zeds Dead x DROELOE (collab w/ Rexxz & StyngMe)",description:"155 BPM - 2:47 Runtime\n\nStandard:\nEasy - 245 Notes\nNormal - 369 Notes\nHard - 442 Notes\nExpert - 535 Notes\nExpert+ - 700 Notes\n\nSingle Saber:\nHard - 346 Notes\nExpert - 415 Notes\nExpert+ - 556 Notes\n\nSkyler Wallace: Expert+, Easy - Hard, Single Saber\nStyngMe: Expert+\nRexxz: Lighting",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:155,duration:167,songName:"Stars Tonight",songSubName:"",songAuthorName:"Zeds Dead x Droeloe",levelAuthorName:"Skyler, StyngMe, & Rexxz"},stats:{plays:0,downloads:2895,upvotes:1490,downvotes:47,score:.9179},uploaded:"2019-07-27T04:11:18.419Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e9fe30a5d1c3d1f1ed1d1d0af33e83f52a22c2cb",key:"5911",state:"Published",createdAt:"2019-07-27T04:11:18.419Z",sageScore:8,diffs:[{njs:10,offset:0,notes:245,bombs:0,obstacles:14,nps:1.582,length:400,characteristic:"Standard",difficulty:"Easy",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:89,warns:16,resets:0}},{njs:10,offset:0,notes:369,bombs:0,obstacles:14,nps:2.383,length:400,characteristic:"Standard",difficulty:"Normal",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:97,warns:22,resets:0}},{njs:12,offset:1,notes:442,bombs:2,obstacles:16,nps:2.855,length:400,characteristic:"Standard",difficulty:"Hard",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:65,warns:28,resets:3}},{njs:14,offset:1,notes:535,bombs:6,obstacles:16,nps:3.455,length:400,characteristic:"Standard",difficulty:"Expert",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:22,warns:16,resets:5}},{njs:18,offset:.1,notes:700,bombs:6,obstacles:43,nps:4.521,length:400,characteristic:"Standard",difficulty:"ExpertPlus",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:39,warns:65,resets:0}},{njs:12,offset:1,notes:346,bombs:0,obstacles:14,nps:2.235,length:400,characteristic:"OneSaber",difficulty:"Hard",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:44,warns:16,resets:0}},{njs:14,offset:1,notes:415,bombs:2,obstacles:16,nps:2.68,length:400,characteristic:"OneSaber",difficulty:"Expert",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:31,warns:24,resets:2}},{njs:16,offset:.25,notes:556,bombs:6,obstacles:16,nps:3.591,length:400,characteristic:"OneSaber",difficulty:"ExpertPlus",events:6285,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:154.839,paritySummary:{errors:34,warns:108,resets:1}}],downloadURL:"https://cdn.beatsaver.com/e9fe30a5d1c3d1f1ed1d1d0af33e83f52a22c2cb.zip",coverURL:"https://cdn.beatsaver.com/e9fe30a5d1c3d1f1ed1d1d0af33e83f52a22c2cb.jpg",previewURL:"https://cdn.beatsaver.com/e9fe30a5d1c3d1f1ed1d1d0af33e83f52a22c2cb.mp3"}],createdAt:"2019-07-27T04:11:18.419Z",updatedAt:"2019-07-27T04:11:18.419Z",lastPublishedAt:"2019-07-27T04:11:18.419Z"},{id:"5395",name:"Alestorm - Mexico",description:"My first map, this song felt good to map because it's structurally simple and catchy. Beat Saber needs more metal and I want to make more maps so any feedback is appreciated :). \n\nExpert and Hard are mapped to be significantly easier than Expert+, so that more people can enjoy it. Here's a video of Expert+ playthrough: https://youtu.be/Y-0cYyZwxIY",uploader:{id:1207,name:"wyxi",uniqueSet:!0,hash:"5d0abf96b8c469000699075f",avatar:"https://www.gravatar.com/avatar/5d0abf96b8c469000699075f?d=retro",type:"SIMPLE"},metadata:{bpm:128,duration:192,songName:"Mexico",songSubName:"",songAuthorName:"Alestorm",levelAuthorName:"Wyxi"},stats:{plays:0,downloads:1445,upvotes:873,downvotes:18,score:.9177},uploaded:"2019-06-19T23:52:29.181Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fb5cda4446fdd4dd02cfb5510d00244842e4c392",key:"5395",state:"Published",createdAt:"2019-06-19T23:52:29.181Z",sageScore:6,diffs:[{njs:11,offset:1,notes:435,bombs:70,obstacles:23,nps:2.376,length:390.5,characteristic:"Standard",difficulty:"Hard",events:1282,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.047,paritySummary:{errors:76,warns:16,resets:0}},{njs:13,offset:1,notes:560,bombs:70,obstacles:23,nps:3.059,length:390.5,characteristic:"Standard",difficulty:"Expert",events:1282,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.047,paritySummary:{errors:55,warns:15,resets:0}},{njs:15,offset:0,notes:975,bombs:76,obstacles:23,nps:5.327,length:390.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1280,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.047,paritySummary:{errors:65,warns:64,resets:1}}],downloadURL:"https://cdn.beatsaver.com/fb5cda4446fdd4dd02cfb5510d00244842e4c392.zip",coverURL:"https://cdn.beatsaver.com/fb5cda4446fdd4dd02cfb5510d00244842e4c392.jpg",previewURL:"https://cdn.beatsaver.com/fb5cda4446fdd4dd02cfb5510d00244842e4c392.mp3"}],createdAt:"2019-06-19T23:52:29.181Z",updatedAt:"2019-06-19T23:52:29.181Z",lastPublishedAt:"2019-06-19T23:52:29.181Z"},{id:"4e8d",name:"Centipede (Visual Representation) - Knife Party",description:"Make sure you have SFX turned off and NoFail turned on!\r\nThis map is not intended to be passed, just sit back and enjoy the show! :)",uploader:{id:11127,name:"nicetomeetyou",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f5d1",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f5d1?d=retro",type:"SIMPLE"},metadata:{bpm:280,duration:145,songName:"Centipede (VISUAL)",songSubName:"Knife Party",songAuthorName:"NiceToMeetYou",levelAuthorName:"nicetomeetyou"},stats:{plays:0,downloads:2652,upvotes:1363,downvotes:41,score:.9177},uploaded:"2019-05-22T21:23:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8061055d363292dda7b055eefc1c5dbebb13e616",key:"4e8d",state:"Published",createdAt:"2019-05-22T21:23:54Z",sageScore:5,diffs:[{njs:23,offset:0,notes:9189,bombs:0,obstacles:0,nps:95.719,length:448,characteristic:"Standard",difficulty:"ExpertPlus",events:2178,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:96,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8061055d363292dda7b055eefc1c5dbebb13e616.zip",coverURL:"https://cdn.beatsaver.com/8061055d363292dda7b055eefc1c5dbebb13e616.jpg",previewURL:"https://cdn.beatsaver.com/8061055d363292dda7b055eefc1c5dbebb13e616.mp3"}],createdAt:"2019-05-22T21:23:54Z",updatedAt:"2019-05-22T21:23:54Z",lastPublishedAt:"2019-05-22T21:23:54Z"},{id:"4445",name:"Runaway Baby - Bruno Mars (V2)",description:"45\r\nremap https://beatsaver.com/browse/detail/2208-1528",uploader:{id:4285521,name:"ejiejidayo",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fc58",avatar:"https://cdn.beatsaver.com/avatar/224894241279574016.png",type:"DISCORD"},metadata:{bpm:164,duration:149,songName:"Runaway Baby V2",songSubName:"Bruno Mars",songAuthorName:"ejiejidayo",levelAuthorName:"ejiejidayo"},stats:{plays:0,downloads:3375,upvotes:1030,downvotes:25,score:.9177},uploaded:"2019-04-08T07:32:15Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6ae2ff433fb5a570eeb0801f30a01b446bde2c15",key:"4445",state:"Published",createdAt:"2019-04-08T07:32:15Z",sageScore:5,diffs:[{njs:11,offset:0,notes:614,bombs:0,obstacles:50,nps:4.463,length:376,characteristic:"Standard",difficulty:"Expert",events:1e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:137.561,paritySummary:{errors:60,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6ae2ff433fb5a570eeb0801f30a01b446bde2c15.zip",coverURL:"https://cdn.beatsaver.com/6ae2ff433fb5a570eeb0801f30a01b446bde2c15.jpg",previewURL:"https://cdn.beatsaver.com/6ae2ff433fb5a570eeb0801f30a01b446bde2c15.mp3"}],createdAt:"2019-04-08T07:32:15Z",updatedAt:"2019-04-08T07:32:15Z",lastPublishedAt:"2019-04-08T07:32:15Z"},{id:"46b1",name:"Bad Guy - Billie Eilish",description:"Lighting done by Rexxz",uploader:{id:21050,name:"dgrj4life",uniqueSet:!0,hash:"5cff0b7298cc5a672c84eaa1",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84eaa1?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:194,songName:"Bad Guy",songSubName:"Billie Eilish",songAuthorName:"DGRJ 4 Life & Rexxz",levelAuthorName:"dgrj4life"},stats:{plays:0,downloads:6662,upvotes:5055,downvotes:256,score:.9176},uploaded:"2019-04-17T23:25:17Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a6a8f5c9146321b609645eefb109197e301bfe71",key:"46b1",state:"Published",createdAt:"2019-04-17T23:25:17Z",sageScore:5,diffs:[{njs:14,offset:0,notes:761,bombs:8,obstacles:36,nps:4.003,length:427.766,characteristic:"Standard",difficulty:"Expert",events:7645,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.118,paritySummary:{errors:33,warns:49,resets:0}},{njs:16,offset:0,notes:918,bombs:8,obstacles:36,nps:4.829,length:427.766,characteristic:"Standard",difficulty:"ExpertPlus",events:7645,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:190.118,paritySummary:{errors:32,warns:67,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a6a8f5c9146321b609645eefb109197e301bfe71.zip",coverURL:"https://cdn.beatsaver.com/a6a8f5c9146321b609645eefb109197e301bfe71.jpg",previewURL:"https://cdn.beatsaver.com/a6a8f5c9146321b609645eefb109197e301bfe71.mp3"}],createdAt:"2019-04-17T23:25:17Z",updatedAt:"2019-04-17T23:25:17Z",lastPublishedAt:"2019-04-17T23:25:17Z"},{id:"431d",name:"PewDiePie - Congratulations",description:"UPDATED OFFSET PROBLEMS\r\n\r\nIt's time to 'slice' T-Series! Presenting PewDiePie's latest diss track \"Congratulations\" featuring David Paul Brown and Joel Gustaf “Roomie” Berghult. I hope you enjoy!\r\n\r\nPewDiePie's original video: https://www.youtube.com/watch?v=PHgc8Q6qTjc",uploader:{id:42921,name:"pianoluigi",uniqueSet:!0,hash:"5cff0b7698cc5a672c854076",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c854076?d=retro",type:"SIMPLE"},metadata:{bpm:136,duration:252,songName:"Congratulations",songSubName:"PewDiePie",songAuthorName:"PianoLuigi",levelAuthorName:"PianoLuigi"},stats:{plays:0,downloads:1157,upvotes:937,downvotes:21,score:.9176},uploaded:"2019-04-03T09:04:34Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"768776b15afc801f67a2244439938740349cbc74",key:"431d",state:"Published",createdAt:"2019-04-03T09:04:34Z",sageScore:5,diffs:[{njs:16,offset:0,notes:1099,bombs:32,obstacles:64,nps:4.488,length:555,characteristic:"Standard",difficulty:"ExpertPlus",events:2728,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.853,paritySummary:{errors:40,warns:33,resets:16}}],downloadURL:"https://cdn.beatsaver.com/768776b15afc801f67a2244439938740349cbc74.zip",coverURL:"https://cdn.beatsaver.com/768776b15afc801f67a2244439938740349cbc74.jpg",previewURL:"https://cdn.beatsaver.com/768776b15afc801f67a2244439938740349cbc74.mp3"}],createdAt:"2019-04-03T09:04:34Z",updatedAt:"2019-04-03T09:04:34Z",lastPublishedAt:"2019-04-03T09:04:34Z"},{id:"b7f8",name:"Sabaton - Swedish Pagans",description:"Nice song by Sabaton. Mapped Expert+, Expert, Hard.\n\nGenre: Power metal\nBPM: 135\nNPS: 4.41 / 3.63 / 2.78\nExpert+ playthrough: https://youtu.be/Yx3WPwvZ8wE\n\nCome root for Sweden in the beat saber world cup! :D\n\nSpecial thanks to SatanClaus for playtesting\n\nFeedback/complaints/anything: Wyxi#5211 on discord.\n\n\n",uploader:{id:1207,name:"wyxi",uniqueSet:!0,hash:"5d0abf96b8c469000699075f",avatar:"https://www.gravatar.com/avatar/5d0abf96b8c469000699075f?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:246,songName:"Swedish Pagans",songSubName:"",songAuthorName:"Sabaton",levelAuthorName:"Wyxi"},stats:{plays:0,downloads:1342,upvotes:572,downvotes:6,score:.9175},uploaded:"2020-06-30T14:44:54.069Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6e0fb56882443e1fc41c79dde364d4456828b328",key:"b7f8",state:"Published",createdAt:"2020-06-30T14:44:54.069Z",sageScore:4,diffs:[{njs:13,offset:.5,notes:685,bombs:0,obstacles:4,nps:2.97,length:519,characteristic:"Standard",difficulty:"Hard",events:2174,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.667,paritySummary:{errors:15,warns:17,resets:0}},{njs:16,offset:0,notes:894,bombs:0,obstacles:4,nps:3.876,length:519,characteristic:"Standard",difficulty:"Expert",events:2174,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.667,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:-.25,notes:1086,bombs:0,obstacles:4,nps:4.708,length:519,characteristic:"Standard",difficulty:"ExpertPlus",events:2174,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.667,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6e0fb56882443e1fc41c79dde364d4456828b328.zip",coverURL:"https://cdn.beatsaver.com/6e0fb56882443e1fc41c79dde364d4456828b328.jpg",previewURL:"https://cdn.beatsaver.com/6e0fb56882443e1fc41c79dde364d4456828b328.mp3"}],createdAt:"2020-06-30T14:44:54.069Z",updatedAt:"2020-06-30T14:44:54.069Z",lastPublishedAt:"2020-06-30T14:44:54.069Z"},{id:"6713",name:"A Bloody Beginning",description:"Get down with some Castlevania vibes with the first Halloween themed map to be released 1 day before October!\r\n\r\nLots of trial and edits have been done to make this map as perfect as possible for release! So we all hope you enjoy the Walls and the Lighting alongside the notes!\r\n\r\nCredits for such wonderful creations:\r\n\r\nYume - New Wall Mapper that's been sweeping the scene!\r\n\r\nKnowledge - A heavy hitting experienced light mapper\r\n\r\n219278 - Yeah i have no idea why their name is like this but they helped light the map so it doesn't matter!",uploader:{id:4289111,name:"blackblazon",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ef34",avatar:"https://cdn.beatsaver.com/avatar/127162370538733568.png",type:"DISCORD"},metadata:{bpm:126,duration:215,songName:"A Bloody Beginning",songSubName:"",songAuthorName:"Nokbient & bLiNd",levelAuthorName:"BlackBlazon"},stats:{plays:0,downloads:1748,upvotes:1023,downvotes:25,score:.9175},uploaded:"2019-09-30T23:49:36.638Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fc182c48abfc4750046eaed4dd6fe57ac8dd99fc",key:"6713",state:"Published",createdAt:"2019-09-30T23:49:36.638Z",sageScore:5,diffs:[{njs:18,offset:0,notes:959,bombs:0,obstacles:4567,nps:4.658,length:432.313,characteristic:"Standard",difficulty:"ExpertPlus",events:9945,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:205.863,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fc182c48abfc4750046eaed4dd6fe57ac8dd99fc.zip",coverURL:"https://cdn.beatsaver.com/fc182c48abfc4750046eaed4dd6fe57ac8dd99fc.jpg",previewURL:"https://cdn.beatsaver.com/fc182c48abfc4750046eaed4dd6fe57ac8dd99fc.mp3"}],createdAt:"2019-09-30T23:49:36.638Z",updatedAt:"2019-09-30T23:49:36.638Z",lastPublishedAt:"2019-09-30T23:49:36.638Z"},{id:"5223",name:"Gloryhammer - Rise Of The Chaos Wizards",description:"I said it once, I'll say it again: Beat Saber needs more Metal \\m/\r\nTherefore - again with *all* difficulties - I present to you:\r\n\r\nExpertPlus-Playthrough: https://vimeo.com/341011795",uploader:{id:40721,name:"dunklerturm",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fd7c",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84fd7c?d=retro",type:"SIMPLE"},metadata:{bpm:180,duration:235,songName:"Rise Of The Chaos Wizards",songSubName:"Gloryhammer",songAuthorName:"DunklerTurm",levelAuthorName:"DunklerTurm"},stats:{plays:0,downloads:1469,upvotes:844,downvotes:17,score:.9175},uploaded:"2019-06-07T22:14:16Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8e46e96da31b6224ae62b6d9eb9434ff93f791da",key:"5223",state:"Published",createdAt:"2019-06-07T22:14:16Z",sageScore:7,diffs:[{njs:12,offset:0,notes:211,bombs:4,obstacles:152,nps:.961,length:659,characteristic:"Standard",difficulty:"Easy",events:2944,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.667,paritySummary:{errors:31,warns:8,resets:0}},{njs:12,offset:0,notes:309,bombs:41,obstacles:136,nps:1.373,length:675,characteristic:"Standard",difficulty:"Normal",events:2944,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:59,warns:28,resets:3}},{njs:12,offset:0,notes:545,bombs:32,obstacles:84,nps:2.422,length:675,characteristic:"Standard",difficulty:"Hard",events:2944,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:56,warns:71,resets:0}},{njs:14,offset:0,notes:782,bombs:86,obstacles:84,nps:3.476,length:675,characteristic:"Standard",difficulty:"Expert",events:2944,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:55,warns:54,resets:0}},{njs:18,offset:0,notes:1106,bombs:95,obstacles:84,nps:4.916,length:675,characteristic:"Standard",difficulty:"ExpertPlus",events:5435,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225,paritySummary:{errors:70,warns:75,resets:1}}],downloadURL:"https://cdn.beatsaver.com/8e46e96da31b6224ae62b6d9eb9434ff93f791da.zip",coverURL:"https://cdn.beatsaver.com/8e46e96da31b6224ae62b6d9eb9434ff93f791da.jpg",previewURL:"https://cdn.beatsaver.com/8e46e96da31b6224ae62b6d9eb9434ff93f791da.mp3"}],createdAt:"2019-06-07T22:14:16Z",updatedAt:"2019-06-07T22:14:16Z",lastPublishedAt:"2019-06-07T22:14:16Z"},{id:"dc68",name:"Fallguys - Survive the fall",description:"f change BPM",uploader:{id:4284894,name:"emir",uniqueSet:!0,hash:"5d3dac6586729100069260cc",avatar:"https://cdn.beatsaver.com/avatar/331480642699395073.png",type:"DISCORD"},metadata:{bpm:165,duration:205,songName:"Fallguys - Survive the fall",songSubName:"",songAuthorName:"Fallguys",levelAuthorName:"Emir"},stats:{plays:0,downloads:1078,upvotes:889,downvotes:19,score:.9174},uploaded:"2020-08-23T10:11:49.857Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0c9598eefeed825dd9a6d9012d842d473ffb9b38",key:"dc68",state:"Published",createdAt:"2020-08-23T10:11:49.857Z",sageScore:6,diffs:[{njs:12,offset:0,notes:693,bombs:0,obstacles:17,nps:3.458,length:551.192,characteristic:"Standard",difficulty:"Hard",events:1367,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.433,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:884,bombs:0,obstacles:374,nps:4.41,length:551.192,characteristic:"Standard",difficulty:"Expert",events:1367,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.433,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.3,notes:1175,bombs:24,obstacles:10,nps:5.862,length:551.192,characteristic:"Standard",difficulty:"ExpertPlus",events:1367,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200.433,paritySummary:{errors:0,warns:0,resets:12}}],downloadURL:"https://cdn.beatsaver.com/0c9598eefeed825dd9a6d9012d842d473ffb9b38.zip",coverURL:"https://cdn.beatsaver.com/0c9598eefeed825dd9a6d9012d842d473ffb9b38.jpg",previewURL:"https://cdn.beatsaver.com/0c9598eefeed825dd9a6d9012d842d473ffb9b38.mp3"}],createdAt:"2020-08-23T10:11:49.857Z",updatedAt:"2020-08-23T10:11:49.857Z",lastPublishedAt:"2020-08-23T10:11:49.857Z"},{id:"b7b1",name:"No Rain - Blind Melon",description:"I still think of this song as recent, even though - wait for it - it's 28 years old this year. It's Blind Melon's 1992 hit, No Rain! I love the jazzy beat and dramatic moments in this song!\n\nNormal, Hard, Expert, ExpertPlus 360 and Expert 90 as well.\n\nBig thanks to my playtesters, MajorPickle, Maybeemae, and Brentastic! Couldn't do it without you guys - well, I could, just not as well!\n\n\nhttps://youtu.be/ZuLsxtvooCM",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:149,duration:216,songName:"No Rain",songSubName:"",songAuthorName:"Blind Melon",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:3758,upvotes:624,downvotes:8,score:.9174},uploaded:"2020-06-29T19:22:10.964Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c222e31735f0c61b7781c8f41864b8033e054d40",key:"b7b1",state:"Published",createdAt:"2020-06-29T19:22:10.964Z",sageScore:3,diffs:[{njs:10,offset:-.5,notes:333,bombs:0,obstacles:32,nps:1.613,length:511,characteristic:"Standard",difficulty:"Normal",events:529,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.772,paritySummary:{errors:31,warns:41,resets:0}},{njs:13,offset:.3,notes:601,bombs:0,obstacles:32,nps:2.905,length:512,characteristic:"Standard",difficulty:"Hard",events:529,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.175,paritySummary:{errors:19,warns:34,resets:0}},{njs:14,offset:.2,notes:704,bombs:0,obstacles:32,nps:3.403,length:512,characteristic:"Standard",difficulty:"Expert",events:529,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.175,paritySummary:{errors:40,warns:37,resets:0}},{njs:13,offset:.3,notes:601,bombs:0,obstacles:30,nps:2.905,length:512.001,characteristic:"90Degree",difficulty:"Expert",events:689,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.175,paritySummary:{errors:19,warns:34,resets:0}},{njs:13,offset:.3,notes:704,bombs:0,obstacles:32,nps:3.403,length:512.001,characteristic:"360Degree",difficulty:"ExpertPlus",events:708,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:206.175,paritySummary:{errors:40,warns:37,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c222e31735f0c61b7781c8f41864b8033e054d40.zip",coverURL:"https://cdn.beatsaver.com/c222e31735f0c61b7781c8f41864b8033e054d40.jpg",previewURL:"https://cdn.beatsaver.com/c222e31735f0c61b7781c8f41864b8033e054d40.mp3"}],createdAt:"2020-06-29T19:22:10.964Z",updatedAt:"2020-06-29T19:22:10.964Z",lastPublishedAt:"2020-06-29T19:22:10.964Z"},{id:"3c10",name:"Sword Art Online Opening Compilation",description:'So what do you do when you\'ve mapped every single SAO opening? You make a compilation of them of course! I originally wanted to combine the full version of all the songs which would result in a 40+ minute map but since Beat Saver has a size limit I decided to combine the TV edit versions of them instead.\r\n\r\nSongs are ordered in released date:\r\n\r\n1. "crossing field" by LiSA\r\n2. "INNOCENCE" by Aoi Eir\r\n3. "IGNITE" by Eir Aoi\r\n4. "courage" by Haruka Tomatsu \r\n5. "Catch the Moment" by LiSA\r\n6. "Thrill, Risk, Heartless" by LiSA\r\n7. "Ryuusei" by Aoi EiR\r\n8. "ADAMAS" by LiSA\r\n9. "RESISTER" by ASCA\r\n\r\nWhile most of the patterns are recycled from my own maps, I did remap/resync some of the older ones so they are on the same quality as my newer maps.\r\n\r\nMostly expert level but has some streams and technical sections which combined with the song\'s length I decided to put this as expert plus just to be safe.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:120,duration:841,songName:"Sword Art Online Opening Compilation",songSubName:"Various Artists",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4936,upvotes:1986,downvotes:74,score:.9174},uploaded:"2019-03-06T11:49:32Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e7ff277fbad063337af1e18bb273b0eb6fc03557",key:"3c10",state:"Published",createdAt:"2019-03-06T11:49:32Z",sageScore:1,diffs:[{njs:15,offset:0,notes:3814,bombs:44,obstacles:37,nps:4.553,length:1675.338,characteristic:"Standard",difficulty:"ExpertPlus",events:3960,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:837.669,paritySummary:{errors:327,warns:301,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e7ff277fbad063337af1e18bb273b0eb6fc03557.zip",coverURL:"https://cdn.beatsaver.com/e7ff277fbad063337af1e18bb273b0eb6fc03557.jpg",previewURL:"https://cdn.beatsaver.com/e7ff277fbad063337af1e18bb273b0eb6fc03557.mp3"}],createdAt:"2019-03-06T11:49:32Z",updatedAt:"2019-03-06T11:49:32Z",lastPublishedAt:"2019-03-06T11:49:32Z"},{id:"34a5",name:"Check Yes, Juliet - We The Kings",description:"Run Baby Run! Check Yes, Juliet by We The Kings, song is brought from Itunes so it's the highest quality sound file you can get.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:167,duration:217,songName:"Check Yes, Juliet",songSubName:"We The Kings",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1453,upvotes:597,downvotes:7,score:.9174},uploaded:"2019-02-09T08:16:38Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a6fff4353d6c0657fb6a3de381dd48458c563dcf",key:"34a5",state:"Published",createdAt:"2019-02-09T08:16:38Z",sageScore:6,diffs:[{njs:15,offset:0,notes:905,bombs:0,obstacles:0,nps:4.443,length:566.959,characteristic:"Standard",difficulty:"Expert",events:3427,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.698,paritySummary:{errors:61,warns:71,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a6fff4353d6c0657fb6a3de381dd48458c563dcf.zip",coverURL:"https://cdn.beatsaver.com/a6fff4353d6c0657fb6a3de381dd48458c563dcf.jpg",previewURL:"https://cdn.beatsaver.com/a6fff4353d6c0657fb6a3de381dd48458c563dcf.mp3"}],createdAt:"2019-02-09T08:16:38Z",updatedAt:"2019-02-09T08:16:38Z",lastPublishedAt:"2019-02-09T08:16:38Z"},{id:"78e",name:"Numb - Linkin Park",description:"Expert - Hard - Normal Charts\nCustom Lighting\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:110,duration:188,songName:"Numb",songSubName:"Linkin Park",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:11541,upvotes:7092,downvotes:389,score:.9174},uploaded:"2018-07-02T13:44:43Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2e6f858088c6d67e930e1bb357bd7455101b6626",key:"78e",state:"Published",createdAt:"2018-07-02T13:44:43Z",sageScore:6,diffs:[{njs:10,offset:0,notes:367,bombs:0,obstacles:39,nps:2.049,length:328.5,characteristic:"Standard",difficulty:"Normal",events:1134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:179.182,paritySummary:{errors:45,warns:26,resets:0},stars:.93},{njs:10,offset:0,notes:653,bombs:0,obstacles:50,nps:3.602,length:332.499,characteristic:"Standard",difficulty:"Hard",events:1134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.363,paritySummary:{errors:57,warns:43,resets:0},stars:1.86},{njs:10,offset:0,notes:899,bombs:0,obstacles:50,nps:4.958,length:332.5,characteristic:"Standard",difficulty:"Expert",events:1134,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.364,paritySummary:{errors:58,warns:58,resets:0},stars:2.59}],downloadURL:"https://cdn.beatsaver.com/2e6f858088c6d67e930e1bb357bd7455101b6626.zip",coverURL:"https://cdn.beatsaver.com/2e6f858088c6d67e930e1bb357bd7455101b6626.jpg",previewURL:"https://cdn.beatsaver.com/2e6f858088c6d67e930e1bb357bd7455101b6626.mp3"}],createdAt:"2018-07-02T13:44:43Z",updatedAt:"2018-07-02T13:44:43Z",lastPublishedAt:"2018-07-02T13:44:43Z"},{id:"13b20",name:"Pika Girl - S3RL",description:'did a slightly more "dancey" style of mapping with this one\n\nMap Preview: https://youtu.be/_lrXOS7a7Cs\n\nDifficulties: \nExpert+(6.53 NPS),\nExpert(4.5 NPS),\nHard(3.7 NPS). \n\nCustom lights, I used lolighter for the chorus, hand lit everything else. \n\nThanks to eZconfirmed and nuggie for playtesting! \n\nAny and all feedback appreciated:\nMeezoNugget#8186\n\nEnjoy! :)\n',uploader:{id:57121,name:"meezonugget",uniqueSet:!0,hash:"5e6b793f7abb0000068073d7",avatar:"https://cdn.beatsaver.com/avatar/146287428875976704.png",type:"DISCORD"},metadata:{bpm:175,duration:226,songName:"Pika Girl",songSubName:"",songAuthorName:"S3RL",levelAuthorName:"MeezoNugget"},stats:{plays:0,downloads:3445,upvotes:1105,downvotes:29,score:.9173},uploaded:"2021-02-07T00:20:32.184Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a30818f752cce3c87664570826bbf7b12b848a30",key:"13b20",state:"Published",createdAt:"2021-02-07T00:20:32.184Z",sageScore:4,diffs:[{njs:18,offset:.1,notes:837,bombs:0,obstacles:56,nps:3.817,length:639.5,characteristic:"Standard",difficulty:"Hard",events:5273,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.257,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:-.1,notes:1021,bombs:0,obstacles:54,nps:4.657,length:639.5,characteristic:"Standard",difficulty:"Expert",events:5273,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.257,paritySummary:{errors:0,warns:0,resets:0}},{njs:22,offset:-.3,notes:1482,bombs:7,obstacles:78,nps:6.759,length:639.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5273,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:219.257,paritySummary:{errors:0,warns:0,resets:2}}],downloadURL:"https://cdn.beatsaver.com/a30818f752cce3c87664570826bbf7b12b848a30.zip",coverURL:"https://cdn.beatsaver.com/a30818f752cce3c87664570826bbf7b12b848a30.jpg",previewURL:"https://cdn.beatsaver.com/a30818f752cce3c87664570826bbf7b12b848a30.mp3"}],createdAt:"2021-02-07T00:20:32.184Z",updatedAt:"2021-02-07T00:20:32.184Z",lastPublishedAt:"2021-02-07T00:20:32.184Z"},{id:"7288",name:"Megalovania - Camellia Remix (Kole Edit) [One saber]",description:"I don’t know much about Undertale nor Camellia, but when making this shorter edit of Camellia’s remix of Megalovania by Toby Fox I felt like mapping it, and as with any popular song I’m gonna make it in One Saber instead since there can never be enough One Saber. I also asked Skeelie if he wanted to make some fancy lighting, just like he did for Overkill, and he did! So here it is, Megalovania Remix by Camellia, as One Saber!\n\nChromaLite mod recommended for best lighting effects.\n\nNo map preview video. (Yet?)\n\nLighting (by Skeelie) preview:\nhttps://youtu.be/6b88SRuQaSQ\n\nBPM: 259\nDuration: 4:27\nEasy, Normal, Hard, Expert and Expert+ difficulties:\n\nEasy:\nNPS 1.32, 356 notes, 26 walls, 0 bombs\n\nNormal:\nNPS 1.66, 446 notes, 29 walls, 17 bombs\n\nHard:\nNPS 2.12, 568 notes, 30 walls, 53 bombs\n\nExpert:\nNPS 3.34, 895 notes, 25 walls, 51 bombs\n\nExpert+:\nNPS 4.65, 1247 notes, 20 walls, 48 bombs\n\nThanks to Redmagi and Skeelie for playtesting!\n\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:242,duration:267,songName:"Megalovania",songSubName:"Remix (Kole Edit)",songAuthorName:"Camellia",levelAuthorName:"Kolezan (Lighting by Skeelie)"},stats:{plays:0,downloads:6279,upvotes:1738,downvotes:61,score:.9173},uploaded:"2019-11-29T07:42:50.058Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ac6eb8bb6ce09461d164dcfe2ae24606bbdfa967",key:"7288",state:"Published",createdAt:"2019-11-29T07:42:50.058Z",sageScore:6,diffs:[{njs:11,offset:1,notes:356,bombs:0,obstacles:26,nps:1.392,length:1031.5,characteristic:"OneSaber",difficulty:"Easy",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.744,paritySummary:{errors:37,warns:45,resets:0}},{njs:13,offset:1,notes:446,bombs:17,obstacles:29,nps:1.744,length:1031.5,characteristic:"OneSaber",difficulty:"Normal",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.744,paritySummary:{errors:42,warns:49,resets:0}},{njs:15,offset:.7,notes:568,bombs:53,obstacles:30,nps:2.221,length:1031.5,characteristic:"OneSaber",difficulty:"Hard",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.744,paritySummary:{errors:34,warns:75,resets:10}},{njs:18,offset:0,notes:895,bombs:51,obstacles:25,nps:3.5,length:1031.5,characteristic:"OneSaber",difficulty:"Expert",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:255.744,paritySummary:{errors:28,warns:84,resets:3}},{njs:20,offset:1.2,notes:1247,bombs:48,obstacles:20,nps:4.857,length:1035.5,characteristic:"OneSaber",difficulty:"ExpertPlus",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256.736,paritySummary:{errors:27,warns:61,resets:5}},{njs:10,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:34390,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ac6eb8bb6ce09461d164dcfe2ae24606bbdfa967.zip",coverURL:"https://cdn.beatsaver.com/ac6eb8bb6ce09461d164dcfe2ae24606bbdfa967.jpg",previewURL:"https://cdn.beatsaver.com/ac6eb8bb6ce09461d164dcfe2ae24606bbdfa967.mp3"}],createdAt:"2019-11-29T07:42:50.058Z",updatedAt:"2019-11-29T07:42:50.058Z",lastPublishedAt:"2019-11-29T07:42:50.058Z"},{id:"709",name:"Weak - AJR",description:"Expert only but not really that hard. My third beat map.",uploader:{id:51936,name:"ryuk845",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f1fe",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f1fe?d=retro",type:"SIMPLE"},metadata:{bpm:124,duration:205,songName:"Weak - AJR",songSubName:"",songAuthorName:"Arcanthia",levelAuthorName:"ryuk845"},stats:{plays:0,downloads:4258,upvotes:1997,downvotes:75,score:.9173},uploaded:"2018-06-29T00:27:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e4e6311258b1caae45341d87470d0c0145ce3910",key:"709",state:"Published",createdAt:"2018-06-29T00:27:10Z",sageScore:4,diffs:[{njs:10,offset:0,notes:540,bombs:0,obstacles:5,nps:2.742,length:407,characteristic:"Standard",difficulty:"Expert",events:471,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.935,paritySummary:{errors:101,warns:65,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e4e6311258b1caae45341d87470d0c0145ce3910.zip",coverURL:"https://cdn.beatsaver.com/e4e6311258b1caae45341d87470d0c0145ce3910.jpg",previewURL:"https://cdn.beatsaver.com/e4e6311258b1caae45341d87470d0c0145ce3910.mp3"}],createdAt:"2018-06-29T00:27:10Z",updatedAt:"2018-06-29T00:27:10Z",lastPublishedAt:"2018-06-29T00:27:10Z"},{id:"8266",name:"Domino's Pizza Fresh Hack",description:"I dont know why I made this lol\n\nVideo links:\nhttps://www.youtube.com/watch?v=2-ifY2LPX_0&feature=youtu.be\nhttps://twitter.com/Dont_Shoot_MEE/status/1222536916601577472",uploader:{id:26973,name:"dontshootme",uniqueSet:!0,hash:"5dc4d17566e48d0006f882fc",avatar:"https://www.gravatar.com/avatar/5dc4d17566e48d0006f882fc?d=retro",type:"SIMPLE"},metadata:{bpm:107,duration:112,songName:"Domino's Pizza Fresh Hack",songSubName:"",songAuthorName:"Danny Fresh",levelAuthorName:"Dont-Shoot-ME"},stats:{plays:0,downloads:815,upvotes:882,downvotes:19,score:.9172},uploaded:"2020-01-29T15:07:20.809Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cb3069aeef3d13478f2ee5321a18e35e673c9691",key:"8266",state:"Published",createdAt:"2020-01-29T15:07:20.809Z",sageScore:1,diffs:[{njs:20,offset:0,notes:759,bombs:72,obstacles:4,nps:6.896,length:196.281,characteristic:"Standard",difficulty:"ExpertPlus",events:1569,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:110.064,paritySummary:{errors:4,warns:0,resets:5}}],downloadURL:"https://cdn.beatsaver.com/cb3069aeef3d13478f2ee5321a18e35e673c9691.zip",coverURL:"https://cdn.beatsaver.com/cb3069aeef3d13478f2ee5321a18e35e673c9691.jpg",previewURL:"https://cdn.beatsaver.com/cb3069aeef3d13478f2ee5321a18e35e673c9691.mp3"}],createdAt:"2020-01-29T15:07:20.809Z",updatedAt:"2020-01-29T15:07:20.809Z",lastPublishedAt:"2020-01-29T15:07:20.809Z"},{id:"653f",name:"Wolf In Sheep's Clothing [Nightcore] - Set It Off",description:"I actually like this song better in Nightcore. Plus it's quite a popular nightcore song on youtube with over 16 million views https://www.youtube.com/watch?v=Jvl2e6X6PA4",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:192.059,duration:163,songName:"Wolf In Sheep's Clothing (Nightcore)",songSubName:"",songAuthorName:"Set It Off",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1291,upvotes:884,downvotes:19,score:.9172},uploaded:"2019-09-22T18:58:41.682Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"410712794d58df7bc6249fed7fef50cf5e4391d6",key:"653f",state:"Published",createdAt:"2019-09-22T18:58:41.682Z",sageScore:5,diffs:[{njs:19,offset:0,notes:710,bombs:12,obstacles:2,nps:4.474,length:508,characteristic:"Standard",difficulty:"ExpertPlus",events:2207,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:158.701,paritySummary:{errors:45,warns:50,resets:0}}],downloadURL:"https://cdn.beatsaver.com/410712794d58df7bc6249fed7fef50cf5e4391d6.zip",coverURL:"https://cdn.beatsaver.com/410712794d58df7bc6249fed7fef50cf5e4391d6.jpg",previewURL:"https://cdn.beatsaver.com/410712794d58df7bc6249fed7fef50cf5e4391d6.mp3"}],createdAt:"2019-09-22T18:58:41.682Z",updatedAt:"2019-09-22T18:58:41.682Z",lastPublishedAt:"2019-09-22T18:58:41.682Z"},{id:"6078",name:"Youngblood - 5 Seconds of Summer",description:"Just an Expert level.",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:120,duration:204,songName:"Youngblood",songSubName:"",songAuthorName:"5 Seconds of Summer",levelAuthorName:"BennyDabeast"},stats:{plays:0,downloads:2815,upvotes:991,downvotes:24,score:.9171},uploaded:"2019-08-31T21:49:30.872Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"182e88e0e80450dd02bdcd6ac4924e3cc00d8673",key:"6078",state:"Published",createdAt:"2019-08-31T21:49:30.872Z",sageScore:4,diffs:[{njs:12,offset:1,notes:609,bombs:8,obstacles:41,nps:3.045,length:400,characteristic:"Standard",difficulty:"Hard",events:726,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200,paritySummary:{errors:86,warns:74,resets:3}},{njs:12,offset:0,notes:614,bombs:8,obstacles:41,nps:3.07,length:400,characteristic:"Standard",difficulty:"Expert",events:726,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:200,paritySummary:{errors:91,warns:74,resets:3}}],downloadURL:"https://cdn.beatsaver.com/182e88e0e80450dd02bdcd6ac4924e3cc00d8673.zip",coverURL:"https://cdn.beatsaver.com/182e88e0e80450dd02bdcd6ac4924e3cc00d8673.jpg",previewURL:"https://cdn.beatsaver.com/182e88e0e80450dd02bdcd6ac4924e3cc00d8673.mp3"}],createdAt:"2019-08-31T21:49:30.872Z",updatedAt:"2019-08-31T21:49:30.872Z",lastPublishedAt:"2019-08-31T21:49:30.872Z"},{id:"318f",name:"Awaken [League of Legends Season 2019 Soundtrack] - Valerie Broussard",description:"Made 4 versions of this map each with a different time signature but I think have I found the one I'm happy with. Awaken featuring Valerie Broussard, the soundtrack for League of Legends' 2019 Season Cinematic. Difficulty is a really easy expert but complex enough to not be put in hard. I brought the song off iTunes so it's the highest quality file you can get ;)",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:160,duration:194,songName:"Awaken",songSubName:"Valerie Broussard",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1940,upvotes:1731,downvotes:61,score:.9171},uploaded:"2019-01-27T08:19:46Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f2481180576b33bdc23e4f4f1a26eaf4e0e09aec",key:"318f",state:"Published",createdAt:"2019-01-27T08:19:46Z",sageScore:5,diffs:[{njs:15,offset:0,notes:519,bombs:30,obstacles:2,nps:2.836,length:488.09,characteristic:"Standard",difficulty:"Expert",events:872,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.034,paritySummary:{errors:40,warns:38,resets:2}}],downloadURL:"https://cdn.beatsaver.com/f2481180576b33bdc23e4f4f1a26eaf4e0e09aec.zip",coverURL:"https://cdn.beatsaver.com/f2481180576b33bdc23e4f4f1a26eaf4e0e09aec.jpg",previewURL:"https://cdn.beatsaver.com/f2481180576b33bdc23e4f4f1a26eaf4e0e09aec.mp3"}],createdAt:"2019-01-27T08:19:46Z",updatedAt:"2019-01-27T08:19:46Z",lastPublishedAt:"2019-01-27T08:19:46Z"},{id:"248e",name:"Dance, Dance - Fall Out Boy",description:"114.5 BPM / 3:01 Runtime\r\nEasy / 233 Notes\r\nNormal / 370 Notes\r\nHard / 495 Notes\r\nExpert / 726 Notes\r\n\r\nGameplay:\r\nhttps://youtu.be/fyj_fjaGpd8\r\nSong:\r\nhttps://www.youtube.com/watch?v=C6MOKXm8x50",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:114,duration:182,songName:"Dance, Dance",songSubName:"Fall Out Boy",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:5632,upvotes:2351,downvotes:95,score:.9171},uploaded:"2018-12-08T06:20:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"142d2cc083037d25dce744ef747eb3eb0f30ab72",key:"248e",state:"Published",createdAt:"2018-12-08T06:20:28Z",sageScore:5,diffs:[{njs:10,offset:0,notes:233,bombs:2,obstacles:15,nps:1.312,length:339,characteristic:"Standard",difficulty:"Easy",events:0,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:49,warns:18,resets:2}},{njs:10,offset:0,notes:370,bombs:8,obstacles:19,nps:2.083,length:339,characteristic:"Standard",difficulty:"Normal",events:3172,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:58,warns:16,resets:0}},{njs:10,offset:0,notes:495,bombs:0,obstacles:8,nps:2.787,length:339,characteristic:"Standard",difficulty:"Hard",events:3172,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:57,warns:32,resets:0}},{njs:12,offset:0,notes:726,bombs:34,obstacles:0,nps:4.087,length:339,characteristic:"Standard",difficulty:"Expert",events:3180,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:178.421,paritySummary:{errors:40,warns:27,resets:4}}],downloadURL:"https://cdn.beatsaver.com/142d2cc083037d25dce744ef747eb3eb0f30ab72.zip",coverURL:"https://cdn.beatsaver.com/142d2cc083037d25dce744ef747eb3eb0f30ab72.jpg",previewURL:"https://cdn.beatsaver.com/142d2cc083037d25dce744ef747eb3eb0f30ab72.mp3"}],createdAt:"2018-12-08T06:20:28Z",updatedAt:"2018-12-08T06:20:28Z",lastPublishedAt:"2018-12-08T06:20:28Z"},{id:"177e8",name:"{Modchart} Duumu & Slyleaf - Illuminate",description:"## IMPORTANT: This map will most likely be broken if you just hop into it. Please take the time to configure your game properly if you want to see it how it was intended. I know, it's super annoying, but there's nothing I can do about it. There's no better system. Basically if the intro to the map is white for like more than a second, you see the BTS logo, or if your walls look +'s than it's broken.\n\n!! WARNINGS !!\n- Use the newest versions of Chroma and NE (Available on ModAssistant), they'll allow for you to actually use the new environment enhancements. New NE will also SIGNIFICANTLY increase performance. I have not tested if this is playable on previous versions of NE.\n- Use all effects on lights. Remember this is expert not E+ so you need to adjust the \"Environment Effects\" setting. This map is by no means intense, but no flickering wasn't built for chroma and will break the lighting.\n- Turn off shockwave, as there's a bug where it cuts off distortion effects on walls that are under you\n- Turn on bloom, Beat Saber tries to make baked lighting on walls and they break on Noodle walls. You can ignore this if you have the mod that fixes this, although I don't know how the look will change.\n- Please disable NJSFixer, as this completely breaks the walls :(\n\nI've spent equal, if not, MORE time on this than Homesick. This map utilizes the new Chroma environment enhancements. I really went all out with it. I think this map is really unique and there are few, if not NO other maps so far that offer the experience this map gives right now. \n\nThis song means a lot to me. I've had this song added since summer 2019, it came up in my recommended and I fell in love with it. It's such an incredible vibe and it makes me feel super comfy. Duumu or Slyleaf, if you're reading this, you're incredible. I am yet to find any other song that makes me feel like this. I really hope you enjoy seeing what I imagine when listening to it.\n\nEnjoy.\n\nVideo: https://youtu.be/lFL3Gjy15oc",uploader:{id:4284246,name:"swifter1243",uniqueSet:!0,hash:"5dcf3af29eccad0006a0b45f",avatar:"https://cdn.beatsaver.com/avatar/166644275793100801.png",type:"DISCORD"},metadata:{bpm:100,duration:240,songName:"Illuminate",songSubName:"",songAuthorName:"Duumu, Slyleaf",levelAuthorName:"Swifter1243"},stats:{plays:0,downloads:1794,upvotes:900,downvotes:20,score:.917},uploaded:"2021-05-03T15:44:55.957Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f5f56ebdee279caae376daf1a6a703576aa08bcd",key:"177e8",state:"Published",createdAt:"2021-05-03T15:44:55.957Z",sageScore:3,diffs:[{njs:18,offset:-.4,notes:581,bombs:8,obstacles:0,nps:2.591,length:373.75,characteristic:"Standard",difficulty:"Hard",events:1367,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:224.25,paritySummary:{errors:0,warns:0,resets:3}},{njs:16,offset:1,notes:581,bombs:8,obstacles:8102,nps:2.591,length:373.75,characteristic:"Standard",difficulty:"Expert",events:2183,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:224.25,paritySummary:{errors:0,warns:0,resets:3}}],downloadURL:"https://cdn.beatsaver.com/f5f56ebdee279caae376daf1a6a703576aa08bcd.zip",coverURL:"https://cdn.beatsaver.com/f5f56ebdee279caae376daf1a6a703576aa08bcd.jpg",previewURL:"https://cdn.beatsaver.com/f5f56ebdee279caae376daf1a6a703576aa08bcd.mp3"}],createdAt:"2021-05-03T15:44:55.957Z",updatedAt:"2021-05-03T15:44:55.957Z",lastPublishedAt:"2021-05-03T15:44:55.957Z"},{id:"907f",name:"Alan Walker - Faded",description:"This will likely be my final map.\n\nThanks to the people who played my maps and thanks to the mapping community for the support.\n\nadieu.",uploader:{id:31355,name:"wonderfulsnowball",uniqueSet:!0,hash:"5d5be38aa959f6000650d725",avatar:"https://www.gravatar.com/avatar/5d5be38aa959f6000650d725?d=retro",type:"SIMPLE"},metadata:{bpm:90,duration:113,songName:"Faded",songSubName:"(Short Ver.)",songAuthorName:"Alan Walker",levelAuthorName:"WonderfulSnowball"},stats:{plays:0,downloads:6805,upvotes:2077,downvotes:80,score:.917},uploaded:"2020-03-15T23:33:05.468Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"72808dcf1d5e2f3b4d08ba98cec32d39d696ba91",key:"907f",state:"Published",createdAt:"2020-03-15T23:33:05.468Z",sageScore:7,diffs:[{njs:12,offset:0,notes:139,bombs:0,obstacles:0,nps:1.313,length:158.75,characteristic:"Standard",difficulty:"Easy",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:2,warns:2,resets:0}},{njs:12,offset:-.25,notes:212,bombs:0,obstacles:0,nps:2.003,length:158.75,characteristic:"Standard",difficulty:"Normal",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:2,warns:0,resets:0}},{njs:13,offset:-.5,notes:281,bombs:0,obstacles:2,nps:2.655,length:158.75,characteristic:"Standard",difficulty:"Hard",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:.25,notes:347,bombs:0,obstacles:2,nps:3.279,length:158.75,characteristic:"Standard",difficulty:"Expert",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:.25,notes:367,bombs:0,obstacles:3,nps:3.468,length:158.75,characteristic:"Standard",difficulty:"ExpertPlus",events:3151,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:105.833,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/72808dcf1d5e2f3b4d08ba98cec32d39d696ba91.zip",coverURL:"https://cdn.beatsaver.com/72808dcf1d5e2f3b4d08ba98cec32d39d696ba91.jpg",previewURL:"https://cdn.beatsaver.com/72808dcf1d5e2f3b4d08ba98cec32d39d696ba91.mp3"}],createdAt:"2020-03-15T23:33:05.468Z",updatedAt:"2020-03-15T23:33:05.468Z",lastPublishedAt:"2020-03-15T23:33:05.468Z"},{id:"6666",name:"Mick Gordon - Cyberdemon",description:"Rip and tear\r\n\r\nVideo: https://www.youtube.com/watch?v=pcqmDzUobEc",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:179.921,duration:224,songName:"Cyberdemon",songSubName:"",songAuthorName:"Mick Gordon",levelAuthorName:"CyanSnow"},stats:{plays:0,downloads:5676,upvotes:3668,downvotes:173,score:.917},uploaded:"2019-09-28T15:49:27.681Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"aaaa68fdb4e7ddb5634ee3afd80cb0b5dda2260c",key:"6666",state:"Published",createdAt:"2019-09-28T15:49:27.681Z",sageScore:6,diffs:[{njs:19,offset:.5,notes:1494,bombs:666,obstacles:3666,nps:6.829,length:656,characteristic:"Lawless",difficulty:"ExpertPlus",events:33666,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:218.763,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/aaaa68fdb4e7ddb5634ee3afd80cb0b5dda2260c.zip",coverURL:"https://cdn.beatsaver.com/aaaa68fdb4e7ddb5634ee3afd80cb0b5dda2260c.jpg",previewURL:"https://cdn.beatsaver.com/aaaa68fdb4e7ddb5634ee3afd80cb0b5dda2260c.mp3"}],createdAt:"2019-09-28T15:49:27.681Z",updatedAt:"2019-09-28T15:49:27.681Z",lastPublishedAt:"2019-09-28T15:49:27.681Z"},{id:"fb0f",name:"Michael Jackson - Thriller (James Egbert Dubstep Remix)",description:"Yet another great and dancy Dubstep mix of an MJ song.\nYou can follow me on twitch for more awesomeness at https://www.twitch.tv/pkdan\nVideo preview of the map: https://www.youtube.com/watch?v=ZuHcfSSPtig\n\nLength: 3:15\nNotes: 668 (Expert) / 991 (Expert+)\nNJS: 16 (Expert) / 20 (Expert+)\nBPM: 128",uploader:{id:4284639,name:"pkdan",uniqueSet:!0,hash:"5e6d07927abb00000681e8ee",avatar:"https://cdn.beatsaver.com/avatar/315553265091739650.png",type:"DISCORD"},metadata:{bpm:128,duration:195,songName:"Thriller (James Egbert Dubstep Remix)",songSubName:"",songAuthorName:"Michael Jackson",levelAuthorName:"pkdan"},stats:{plays:0,downloads:6967,upvotes:850,downvotes:18,score:.9168},uploaded:"2020-10-07T15:04:12.225Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5d5df852651bb568012635ff3a356efdd9372b80",key:"fb0f",state:"Published",createdAt:"2020-10-07T15:04:12.225Z",sageScore:4,diffs:[{njs:16,offset:-.2,notes:668,bombs:33,obstacles:8,nps:3.591,length:396.875,characteristic:"Standard",difficulty:"Expert",events:2296,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.035,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:.3,notes:991,bombs:33,obstacles:8,nps:5.327,length:396.875,characteristic:"Standard",difficulty:"ExpertPlus",events:2296,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.035,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5d5df852651bb568012635ff3a356efdd9372b80.zip",coverURL:"https://cdn.beatsaver.com/5d5df852651bb568012635ff3a356efdd9372b80.jpg",previewURL:"https://cdn.beatsaver.com/5d5df852651bb568012635ff3a356efdd9372b80.mp3"}],createdAt:"2020-10-07T15:04:12.225Z",updatedAt:"2020-10-07T15:04:12.225Z",lastPublishedAt:"2020-10-07T15:04:12.225Z"},{id:"ed2a",name:"NULCTRL (Meiso FLIP)",description:"POTENTIAL SEIZURE WARNING\n\nANTI-QUEST REUPLOAD\n\nIT IS HIGHLY RECCOMENDED TO PLAY WITH THE FOLLOWING ADVANCED GRAPHICS SETTINGS SET AS SUCH\n-BLOOM ON\n-DISTORTION ON\n-0 MAX SHOCKWAVE PARTICLES\n\nVideo: https://youtu.be/xGICwOKNa9Y\n\nSpecial thanks to https://i.imgur.com/VbKV9AX.jpg for feedback to make sure things weɹe actually good.\n\n",uploader:{id:4235136,name:"reaxt",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ab",avatar:"https://cdn.beatsaver.com/avatar/163052863038291970.png",type:"DISCORD"},metadata:{bpm:200,duration:215,songName:"NULCTRL MEISO FLIP",songSubName:"",songAuthorName:"Meiso",levelAuthorName:"Reaxt"},stats:{plays:0,downloads:1769,upvotes:1941,downvotes:73,score:.9168},uploaded:"2020-09-17T21:26:11.811Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"89b1de26baad93c63a6bdb3d9dbae7dc4972897b",key:"ed2a",state:"Published",createdAt:"2020-09-17T21:26:11.811Z",sageScore:3,diffs:[{njs:19,offset:.37,notes:2984,bombs:0,obstacles:1570,nps:14.22,length:699.5,characteristic:"Lawless",difficulty:"ExpertPlus",events:3557,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:209.85,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/89b1de26baad93c63a6bdb3d9dbae7dc4972897b.zip",coverURL:"https://cdn.beatsaver.com/89b1de26baad93c63a6bdb3d9dbae7dc4972897b.jpg",previewURL:"https://cdn.beatsaver.com/89b1de26baad93c63a6bdb3d9dbae7dc4972897b.mp3"}],createdAt:"2020-09-17T21:26:11.811Z",updatedAt:"2020-09-17T21:26:11.811Z",lastPublishedAt:"2020-09-17T21:26:11.811Z"},{id:"658e",name:"Take Back the Night - CaptainSparklez ft. TryHardNinja",description:"Take Back the Night, Written and Performed by TryHardNinja, Original Animation Produced and Directed by CaptainSparklez.\n\nCheck out the gameplay video here! https://www.youtube.com/watch?v=47Fnh08AEy4",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:126,duration:317,songName:"Take Back the Night",songSubName:"",songAuthorName:"CaptainSparklez ft. TryHardNinja",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1693,upvotes:611,downvotes:8,score:.9168},uploaded:"2019-09-24T02:56:43.768Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"0361c056cd4247d639eda648bf21e4eae4454f3e",key:"658e",state:"Published",createdAt:"2019-09-24T02:56:43.768Z",sageScore:6,diffs:[{njs:12,offset:0,notes:652,bombs:0,obstacles:62,nps:2.126,length:644,characteristic:"Standard",difficulty:"Hard",events:4659,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:306.667,paritySummary:{errors:56,warns:49,resets:0}},{njs:14,offset:0,notes:923,bombs:0,obstacles:85,nps:3.01,length:644,characteristic:"Standard",difficulty:"Expert",events:4659,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:306.667,paritySummary:{errors:52,warns:29,resets:0}},{njs:16,offset:0,notes:1051,bombs:0,obstacles:87,nps:3.427,length:644,characteristic:"Standard",difficulty:"ExpertPlus",events:4669,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:306.667,paritySummary:{errors:45,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/0361c056cd4247d639eda648bf21e4eae4454f3e.zip",coverURL:"https://cdn.beatsaver.com/0361c056cd4247d639eda648bf21e4eae4454f3e.jpg",previewURL:"https://cdn.beatsaver.com/0361c056cd4247d639eda648bf21e4eae4454f3e.mp3"}],createdAt:"2019-09-24T02:56:43.768Z",updatedAt:"2019-09-24T02:56:43.768Z",lastPublishedAt:"2019-09-24T02:56:43.768Z"},{id:"64c9",name:"You Don't Want Me (Crystal Skies Remix)",description:"My first wall map! On top of having walls, it also has Chroma lights!\n\nYou have a few options for playing, you can view the lightshow with or without walls, and you can play the map with or without walls. \n\nHere's a video of the walls and the lights :D https://www.youtube.com/watch?v=DkRDF8bbNjQ\n\nI did the whole map myself, but of course, I had some help from the lovely people on the BSMG. Thanks Kival Evan, Dni0, JENNAexe, Aeroluna and necrospook_ for the testplays! And also, another thanks to Aeroluna for helping me fix any bugs with the metadata for my map :)\n\nPS.: Beatcore, one of the song's artists, also released a new EP today that is really good! He's super unknown so go check it out on YouTube and Spotify if you get a chance. He's really talented :D\n\nYou Don't Want Me (Crystal Skies Remix) - Beatcore, Ashley Apollodor | 130 BPM | Expert+ Only (With and without walls) along with Lightshow and Lightshow/Wallshow | Fully mapped with custom lights and walls\n\n<3\n\n",uploader:{id:17131,name:"tranquillizeme",uniqueSet:!0,hash:"5cff0b7798cc5a672c85609e",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c85609e?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:233,songName:"You Don't Want Me",songSubName:"Crystal Skies Remix",songAuthorName:"Beatcore, Ashley Apollodor, Crystal Skies",levelAuthorName:"TranquillizeMe"},stats:{plays:0,downloads:1743,upvotes:851,downvotes:18,score:.9168},uploaded:"2019-09-20T22:30:43.842Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"fbf6f4775ff824facf83ad4a27f48d220466f21e",key:"64c9",state:"Published",createdAt:"2019-09-20T22:30:43.842Z",sageScore:8,diffs:[{njs:18,offset:0,notes:782,bombs:22,obstacles:0,nps:3.597,length:471,characteristic:"Standard",difficulty:"Expert",events:16275,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:217.385,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:782,bombs:22,obstacles:5003,nps:3.597,length:471,characteristic:"Standard",difficulty:"ExpertPlus",events:16275,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:217.385,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:16275,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:0,notes:0,bombs:0,obstacles:5003,nps:0,length:0,characteristic:"Lightshow",difficulty:"Normal",events:16275,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/fbf6f4775ff824facf83ad4a27f48d220466f21e.zip",coverURL:"https://cdn.beatsaver.com/fbf6f4775ff824facf83ad4a27f48d220466f21e.jpg",previewURL:"https://cdn.beatsaver.com/fbf6f4775ff824facf83ad4a27f48d220466f21e.mp3"}],createdAt:"2019-09-20T22:30:43.842Z",updatedAt:"2019-09-20T22:30:43.842Z",lastPublishedAt:"2019-09-20T22:30:43.842Z"},{id:"431c",name:"Shine (RWBY: Volume 2 Soundtrack) - Jeff Williams ft. Casey Lee Williams",description:'"Shine" is a single that was featured prominently in the episode: "Dance Dance Infiltration", where Team JNPR performed a synchronized dance routine to the song.',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:122,duration:260,songName:"Shine",songSubName:"Jeff Williams ft. Casey Lee Williams",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2411,upvotes:661,downvotes:10,score:.9168},uploaded:"2019-04-03T08:52:47Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f95bfca25401b117bd9bec202c741bd75f44141b",key:"431c",state:"Published",createdAt:"2019-04-03T08:52:47Z",sageScore:6,diffs:[{njs:14,offset:0,notes:969,bombs:0,obstacles:7,nps:3.818,length:516,characteristic:"Standard",difficulty:"Expert",events:1070,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:253.77,paritySummary:{errors:28,warns:33,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f95bfca25401b117bd9bec202c741bd75f44141b.zip",coverURL:"https://cdn.beatsaver.com/f95bfca25401b117bd9bec202c741bd75f44141b.jpg",previewURL:"https://cdn.beatsaver.com/f95bfca25401b117bd9bec202c741bd75f44141b.mp3"}],createdAt:"2019-04-03T08:52:47Z",updatedAt:"2019-04-03T08:52:47Z",lastPublishedAt:"2019-04-03T08:52:47Z"},{id:"3436",name:"Christopher Tin - Baba Yetu",description:"This song was recommended to me. Baba Yetu is theme song Civilization IV.",uploader:{id:4285018,name:"majorpickle",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f792",avatar:"https://cdn.beatsaver.com/avatar/450358937657671680.png",type:"DISCORD"},metadata:{bpm:92,duration:210,songName:"Baba Yetu",songSubName:"Christopher Tin",songAuthorName:"Majorpickle",levelAuthorName:"majorpickle"},stats:{plays:0,downloads:2763,upvotes:1090,downvotes:29,score:.9168},uploaded:"2019-02-07T03:44:18Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"60c7f5c08d38ad3664ad42874b874675a03da14a",key:"3436",state:"Published",createdAt:"2019-02-07T03:44:18Z",sageScore:4,diffs:[{njs:10,offset:0,notes:681,bombs:0,obstacles:86,nps:3.638,length:287,characteristic:"Standard",difficulty:"Expert",events:535,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.174,paritySummary:{errors:33,warns:19,resets:0}}],downloadURL:"https://cdn.beatsaver.com/60c7f5c08d38ad3664ad42874b874675a03da14a.zip",coverURL:"https://cdn.beatsaver.com/60c7f5c08d38ad3664ad42874b874675a03da14a.jpg",previewURL:"https://cdn.beatsaver.com/60c7f5c08d38ad3664ad42874b874675a03da14a.mp3"}],createdAt:"2019-02-07T03:44:18Z",updatedAt:"2019-02-07T03:44:18Z",lastPublishedAt:"2019-02-07T03:44:18Z"},{id:"2c5d",name:"Stay Frosty Royal Milk Tea - Fall Out Boy",description:"Expert Playthrough : https://youtu.be/mzmD9PYtW3I",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:146,duration:174,songName:"Stay Frosty Royal Milk Tea",songSubName:"Fall Out Boy",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:1134,upvotes:447,downvotes:2,score:.9168},uploaded:"2019-01-09T20:30:52Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c5b540769ac513b9ebf2f59f465823a9b73f6032",key:"2c5d",state:"Published",createdAt:"2019-01-09T20:30:52Z",sageScore:5,diffs:[{njs:10,offset:0,notes:296,bombs:6,obstacles:13,nps:1.801,length:400,characteristic:"Standard",difficulty:"Normal",events:855,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.384,paritySummary:{errors:38,warns:22,resets:0}},{njs:11,offset:0,notes:401,bombs:6,obstacles:13,nps:2.439,length:400,characteristic:"Standard",difficulty:"Hard",events:855,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.384,paritySummary:{errors:43,warns:31,resets:0}},{njs:13,offset:0,notes:512,bombs:8,obstacles:13,nps:3.115,length:400,characteristic:"Standard",difficulty:"Expert",events:855,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:164.384,paritySummary:{errors:46,warns:75,resets:0}}],downloadURL:"https://cdn.beatsaver.com/c5b540769ac513b9ebf2f59f465823a9b73f6032.zip",coverURL:"https://cdn.beatsaver.com/c5b540769ac513b9ebf2f59f465823a9b73f6032.jpg",previewURL:"https://cdn.beatsaver.com/c5b540769ac513b9ebf2f59f465823a9b73f6032.mp3"}],createdAt:"2019-01-09T20:30:52Z",updatedAt:"2019-01-09T20:30:52Z",lastPublishedAt:"2019-01-09T20:30:52Z"},{id:"446",name:"Simple and Clean - PLANITb Remix - Kingdom Hearts",description:"Normal / Hard / Expert\r\nLight show\r\n\r\nhttps://youtu.be/rYrIFjxeY0k",uploader:{id:52578,name:"xroninbladex",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea58",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea58?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:131,songName:"Simple and Clean",songSubName:"-PLANITb Remix-",songAuthorName:"xroninbladex",levelAuthorName:"xroninbladex"},stats:{plays:0,downloads:2370,upvotes:1567,downvotes:53,score:.9168},uploaded:"2018-06-08T14:55:59Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8390e3f33ef12a395602c4ae12df9250a730a629",key:"446",state:"Published",createdAt:"2018-06-08T14:55:59Z",sageScore:5,diffs:[{njs:10,offset:0,notes:198,bombs:2,obstacles:1,nps:1.89,length:227,characteristic:"Standard",difficulty:"Normal",events:525,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.769,paritySummary:{errors:11,warns:28,resets:0}},{njs:10,offset:0,notes:310,bombs:2,obstacles:1,nps:2.959,length:227,characteristic:"Standard",difficulty:"Hard",events:525,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.769,paritySummary:{errors:33,warns:74,resets:0}},{njs:10,offset:0,notes:376,bombs:2,obstacles:1,nps:3.589,length:227,characteristic:"Standard",difficulty:"Expert",events:525,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:104.769,paritySummary:{errors:49,warns:56,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8390e3f33ef12a395602c4ae12df9250a730a629.zip",coverURL:"https://cdn.beatsaver.com/8390e3f33ef12a395602c4ae12df9250a730a629.jpg",previewURL:"https://cdn.beatsaver.com/8390e3f33ef12a395602c4ae12df9250a730a629.mp3"}],createdAt:"2018-06-08T14:55:59Z",updatedAt:"2018-06-08T14:55:59Z",lastPublishedAt:"2018-06-08T14:55:59Z"},{id:"41b",name:"30 Seconds to Mars | Dangerous Night",description:"Normal/Hard/Expert\r\nExpert map is not that tough. Its a fairly slower song that flows nicely.",uploader:{id:41378,name:"greatyazer",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea71",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84ea71?d=retro",type:"SIMPLE"},metadata:{bpm:132,duration:200,songName:"Dangerous Night",songSubName:"30 Seconds to Mars",songAuthorName:"GreatYazer",levelAuthorName:"greatyazer"},stats:{plays:0,downloads:9071,upvotes:2404,downvotes:99,score:.9168},uploaded:"2018-06-07T17:49:47Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"85a675da674fb13e576f2ac9b61a5adc767b060a",key:"41b",state:"Published",createdAt:"2018-06-07T17:49:47Z",sageScore:5,diffs:[{njs:10,offset:0,notes:227,bombs:0,obstacles:53,nps:1.202,length:415.5,characteristic:"Standard",difficulty:"Normal",events:463,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.864,paritySummary:{errors:130,warns:10,resets:0},stars:.78},{njs:10,offset:0,notes:365,bombs:0,obstacles:59,nps:1.933,length:415.5,characteristic:"Standard",difficulty:"Hard",events:463,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.864,paritySummary:{errors:81,warns:31,resets:0},stars:1.2},{njs:10,offset:0,notes:520,bombs:0,obstacles:60,nps:2.753,length:415.5,characteristic:"Standard",difficulty:"Expert",events:463,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.864,paritySummary:{errors:60,warns:53,resets:0},stars:1.7}],downloadURL:"https://cdn.beatsaver.com/85a675da674fb13e576f2ac9b61a5adc767b060a.zip",coverURL:"https://cdn.beatsaver.com/85a675da674fb13e576f2ac9b61a5adc767b060a.jpg",previewURL:"https://cdn.beatsaver.com/85a675da674fb13e576f2ac9b61a5adc767b060a.mp3"}],createdAt:"2018-06-07T17:49:47Z",updatedAt:"2018-06-07T17:49:47Z",lastPublishedAt:"2018-06-07T17:49:47Z"},{id:"4f0f",name:"MOMOLAND - BAAM",description:'Whoot whoot, first map! Please enjoy and have fun!\nExpert+ is named "Alternate Expert" in game and is largely the same as Expert. The differences are at 1:05-1:24, 2:20-2:39, and 2:54-3:09 with Alt Expert being a little more intense and fun in my opinion. Still I found myself playing both Experts interchangeably so think of it as a little experimentation as I continue to learn.\n\nNEW! Expert Preview Video: https://www.youtube.com/watch?v=qA1811Z-uVo\nMirror: https://streamable.com/p634s\n\n1 Year Mapping Anniversary Remaster: https://beatsaver.com/beatmap/aa5c',uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:127,duration:208,songName:"BAAM",songSubName:"MOMOLAND",songAuthorName:"Bloodcloak",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:2222,upvotes:709,downvotes:12,score:.9167},uploaded:"2019-05-26T01:22:06Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d54ad194fe09598964d1c065887e52f2c4248b30",key:"4f0f",state:"Published",createdAt:"2019-05-26T01:22:06Z",sageScore:5,diffs:[{njs:10,offset:0,notes:576,bombs:0,obstacles:68,nps:2.91,length:419,characteristic:"Standard",difficulty:"Hard",events:1357,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.953,paritySummary:{errors:64,warns:46,resets:0}},{njs:12,offset:0,notes:783,bombs:0,obstacles:61,nps:3.955,length:419,characteristic:"Standard",difficulty:"Expert",events:1350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.953,paritySummary:{errors:83,warns:69,resets:0}},{njs:12,offset:0,notes:819,bombs:0,obstacles:67,nps:4.137,length:419,characteristic:"Standard",difficulty:"ExpertPlus",events:1350,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.953,paritySummary:{errors:89,warns:52,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d54ad194fe09598964d1c065887e52f2c4248b30.zip",coverURL:"https://cdn.beatsaver.com/d54ad194fe09598964d1c065887e52f2c4248b30.jpg",previewURL:"https://cdn.beatsaver.com/d54ad194fe09598964d1c065887e52f2c4248b30.mp3"}],createdAt:"2019-05-26T01:22:06Z",updatedAt:"2019-05-26T01:22:06Z",lastPublishedAt:"2019-05-26T01:22:06Z"},{id:"3714",name:"To The Stars - Braken (Monstercat Release)",description:"https://www.youtube.com/watch?v=105NIrAR4a4\r\nExpert+ only",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:175,duration:202,songName:"To The Stars",songSubName:"Braken",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:2451,upvotes:958,downvotes:23,score:.9167},uploaded:"2019-02-17T12:03:07Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"58fd2a28e6c3d6862084da1ec1b92c99090c5cd5",key:"3714",state:"Published",createdAt:"2019-02-17T12:03:07Z",sageScore:5,diffs:[{njs:14,offset:0,notes:996,bombs:0,obstacles:33,nps:5.34,length:544,characteristic:"Standard",difficulty:"ExpertPlus",events:2145,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:186.514,paritySummary:{errors:16,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/58fd2a28e6c3d6862084da1ec1b92c99090c5cd5.zip",coverURL:"https://cdn.beatsaver.com/58fd2a28e6c3d6862084da1ec1b92c99090c5cd5.jpg",previewURL:"https://cdn.beatsaver.com/58fd2a28e6c3d6862084da1ec1b92c99090c5cd5.mp3"}],createdAt:"2019-02-17T12:03:07Z",updatedAt:"2019-02-17T12:03:07Z",lastPublishedAt:"2019-02-17T12:03:07Z"},{id:"645a",name:"1788-L - A B Y S S",description:"",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:177,duration:179,songName:"A B Y S S",songSubName:"",songAuthorName:"1788-L",levelAuthorName:"Rustic"},stats:{plays:0,downloads:1417,upvotes:981,downvotes:24,score:.9167},uploaded:"2019-09-18T18:07:03.444Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5f85d131f63c7415967ba4414abef741686ece9c",key:"645a",state:"Published",createdAt:"2019-09-18T18:07:03.444Z",sageScore:6,diffs:[{njs:20,offset:0,notes:553,bombs:0,obstacles:3106,nps:3.224,length:506,characteristic:"Standard",difficulty:"ExpertPlus",events:9089,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:171.525,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5f85d131f63c7415967ba4414abef741686ece9c.zip",coverURL:"https://cdn.beatsaver.com/5f85d131f63c7415967ba4414abef741686ece9c.jpg",previewURL:"https://cdn.beatsaver.com/5f85d131f63c7415967ba4414abef741686ece9c.mp3"}],createdAt:"2019-09-18T18:07:03.444Z",updatedAt:"2019-09-18T18:07:03.444Z",lastPublishedAt:"2019-09-18T18:07:03.444Z"},{id:"5bc1",name:"Propaganda - Muse",description:"Please note that this track will get blocked automatically on YouTube.\n\nExpert Playthrough : https://vimeo.com/353093204",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:190,duration:182,songName:"Propaganda",songSubName:"",songAuthorName:"Muse",levelAuthorName:"NovaShaft"},stats:{plays:0,downloads:1728,upvotes:660,downvotes:10,score:.9167},uploaded:"2019-08-10T12:59:56.399Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"99738852493b819152a7651583f40b63bba70188",key:"5bc1",state:"Published",createdAt:"2019-08-10T12:59:56.399Z",sageScore:5,diffs:[{njs:11,offset:0,notes:366,bombs:0,obstacles:23,nps:2.093,length:553.75,characteristic:"Standard",difficulty:"Normal",events:900,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.868,paritySummary:{errors:32,warns:6,resets:0}},{njs:12,offset:0,notes:492,bombs:0,obstacles:24,nps:2.814,length:553.75,characteristic:"Standard",difficulty:"Hard",events:900,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.868,paritySummary:{errors:15,warns:8,resets:0}},{njs:14,offset:0,notes:620,bombs:0,obstacles:26,nps:3.546,length:553.75,characteristic:"Standard",difficulty:"Expert",events:900,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:174.868,paritySummary:{errors:19,warns:13,resets:0}}],downloadURL:"https://cdn.beatsaver.com/99738852493b819152a7651583f40b63bba70188.zip",coverURL:"https://cdn.beatsaver.com/99738852493b819152a7651583f40b63bba70188.jpg",previewURL:"https://cdn.beatsaver.com/99738852493b819152a7651583f40b63bba70188.mp3"}],createdAt:"2019-08-10T12:59:56.399Z",updatedAt:"2019-08-10T12:59:56.399Z",lastPublishedAt:"2019-08-10T12:59:56.399Z"},{id:"f003",name:"Calliope Mori - Excuse My Rudeness, But Could You Please RIP?",description:"Expert+ Preview: https://www.youtube.com/watch?v=XCZMtdvz91g\n\nYo, fellow Dead Beats, this has been stuck in my head ever since it came out. The original songs by Calliope are absolute fire. The others in HoloMyth as well as the rest of Hololive are amazing and you should expect more maps from this realm. \n\nI totally did not fall into the rabbit hole... If you have any issues with that then, 失礼しますが、RIP♡\n\nComments? Like it? Hate it? Let me know on Discord @Bloodcloak#5725 !",uploader:{id:71661,name:"bloodcloak",uniqueSet:!0,hash:"5cff0b7698cc5a672c8551d3",avatar:"https://cdn.beatsaver.com/avatar/205707707187986442.png",type:"DISCORD"},metadata:{bpm:124,duration:186,songName:"Excuse My Rudeness, But Could You Please RIP?",songSubName:"",songAuthorName:"Calliope Mori",levelAuthorName:"Bloodcloak"},stats:{plays:0,downloads:6752,upvotes:1803,downvotes:66,score:.9166},uploaded:"2020-09-21T22:48:02.152Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4b2a227ddb923ce3e6a3060530037014966037e2",key:"f003",state:"Published",createdAt:"2020-09-21T22:48:02.152Z",sageScore:2,diffs:[{njs:12,offset:.4,notes:361,bombs:0,obstacles:139,nps:1.992,length:374.5,characteristic:"Standard",difficulty:"Normal",events:2716,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.21,paritySummary:{errors:3,warns:0,resets:0}},{njs:12,offset:.4,notes:652,bombs:0,obstacles:105,nps:3.598,length:374.5,characteristic:"Standard",difficulty:"Hard",events:2716,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.21,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.2,notes:948,bombs:0,obstacles:72,nps:5.232,length:374.5,characteristic:"Standard",difficulty:"Expert",events:2716,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.21,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.4,notes:1105,bombs:0,obstacles:60,nps:6.098,length:374.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2716,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:181.21,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4b2a227ddb923ce3e6a3060530037014966037e2.zip",coverURL:"https://cdn.beatsaver.com/4b2a227ddb923ce3e6a3060530037014966037e2.jpg",previewURL:"https://cdn.beatsaver.com/4b2a227ddb923ce3e6a3060530037014966037e2.mp3"}],createdAt:"2020-09-21T22:48:02.152Z",updatedAt:"2020-09-21T22:48:02.152Z",lastPublishedAt:"2020-09-21T22:48:02.152Z"},{id:"a90a",name:"[TheFatRat Pack] Windfall - TheFatRat",description:'Here it is! The unofficial "TheFatRat" Music Pack in Beat Saber - with all beatmaps being singlehandedly made by me!\n\nAll songs included in TheFatRat Music Pack:\nMonody (ft. Laura Brehm) \nUnity \nWindfall \nXenogenesis \nTime Lapse \n\nGet the full song pack here: https://bsaber.com/thefatrat-music-pack/\n(Or you should just be able to find all the other ones on my beatsaver profile as well. Heres a link to my profile: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c)\n\nSongcore mod is recommended (for custom colours)\nPlays best on Origins Environment\n\nWindfall Stats:\nExpert+ - 1031 Notes | 4.53 NPS\nExpert - 826 Notes | 3.63 NPS\nHard - 683 Notes | 3.00 NPS\nNormal - 421 Notes | 1.85 NPS\nEasy - 277 Notes | 1.22 NPS\n\nRoughly 9 Hours of work\nGameplay: https://youtu.be/RW5Y6GifdDA\n\nObviously - A huge thanks to TheFatRat himself, for not only producing the songs in the first place (and allowing free access to use them for big and small content creators), but also being a huge inspiration to lots of artists out there and for making music that everyone can jam out to! We love you, TheFatRat!',uploader:{id:4284197,name:"timeweaver",uniqueSet:!0,hash:"5d47d586c5301900060b2f6c",avatar:"https://cdn.beatsaver.com/avatar/607399708121366529.png",type:"DISCORD"},metadata:{bpm:102,duration:227,songName:"Windfall",songSubName:"",songAuthorName:"TheFatRat",levelAuthorName:"Timeweaver"},stats:{plays:0,downloads:4210,upvotes:1147,downvotes:32,score:.9166},uploaded:"2020-05-22T13:28:49.981Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"29677eb4f5cb04e2698b16923eee804abce90f76",key:"a90a",state:"Published",createdAt:"2020-05-22T13:28:49.981Z",sageScore:5,diffs:[{njs:10,offset:1,notes:277,bombs:0,obstacles:39,nps:1.28,length:368,characteristic:"Standard",difficulty:"Easy",events:4238,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.471,paritySummary:{errors:40,warns:28,resets:0}},{njs:10,offset:1,notes:421,bombs:0,obstacles:41,nps:1.945,length:368,characteristic:"Standard",difficulty:"Normal",events:4238,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.471,paritySummary:{errors:59,warns:27,resets:0}},{njs:12,offset:.25,notes:683,bombs:0,obstacles:66,nps:3.096,length:375,characteristic:"Standard",difficulty:"Hard",events:4238,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.588,paritySummary:{errors:3,warns:0,resets:0}},{njs:14,offset:-.25,notes:826,bombs:0,obstacles:67,nps:3.735,length:376,characteristic:"Standard",difficulty:"Expert",events:4240,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.176,paritySummary:{errors:2,warns:0,resets:0}},{njs:18,offset:.325,notes:1031,bombs:0,obstacles:65,nps:4.618,length:379.5,characteristic:"Standard",difficulty:"ExpertPlus",events:4238,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.235,paritySummary:{errors:0,warns:1,resets:0}}],downloadURL:"https://cdn.beatsaver.com/29677eb4f5cb04e2698b16923eee804abce90f76.zip",coverURL:"https://cdn.beatsaver.com/29677eb4f5cb04e2698b16923eee804abce90f76.jpg",previewURL:"https://cdn.beatsaver.com/29677eb4f5cb04e2698b16923eee804abce90f76.mp3"}],createdAt:"2020-05-22T13:28:49.981Z",updatedAt:"2020-05-22T13:28:49.981Z",lastPublishedAt:"2020-05-22T13:28:49.981Z"},{id:"5270",name:"Gurenge - LiSA",description:"Kimetsuno Yaiba OP\r\n\r\nPreview : https://youtu.be/6AznmNIg68Y\r\nNJS : 14(Expert), 13(Hard)",uploader:{id:31044,name:"digiracko",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ed32",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ed32?d=retro",type:"SIMPLE"},metadata:{bpm:135,duration:238,songName:"Gurenge",songSubName:"LiSA",songAuthorName:"DigiRacko",levelAuthorName:"digiracko"},stats:{plays:0,downloads:5415,upvotes:3174,downvotes:145,score:.9166},uploaded:"2019-06-09T00:26:20Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9c71e86622967891482bf18c536ff3d03eb5af3f",key:"5270",state:"Published",createdAt:"2019-06-09T00:26:20Z",sageScore:4,diffs:[{njs:13,offset:1,notes:703,bombs:0,obstacles:0,nps:3.045,length:519.5,characteristic:"Standard",difficulty:"Hard",events:592,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.889,paritySummary:{errors:43,warns:33,resets:0}},{njs:14,offset:1,notes:974,bombs:0,obstacles:0,nps:4.218,length:519.5,characteristic:"Standard",difficulty:"Expert",events:593,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:230.889,paritySummary:{errors:79,warns:66,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9c71e86622967891482bf18c536ff3d03eb5af3f.zip",coverURL:"https://cdn.beatsaver.com/9c71e86622967891482bf18c536ff3d03eb5af3f.jpg",previewURL:"https://cdn.beatsaver.com/9c71e86622967891482bf18c536ff3d03eb5af3f.mp3"}],createdAt:"2019-06-09T00:26:20Z",updatedAt:"2019-06-09T00:26:20Z",lastPublishedAt:"2019-06-09T00:26:20Z"},{id:"2394",name:"Are You Gonna Be My Girl? - Jet",description:"All 5 difficulties. Had a lot of fun with this one :)\r\nAll charts down to normal are uniquely built.\r\n\r\nExpert+ Playthrough: https://youtu.be/5FhrP79pfVc",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:105,duration:218,songName:"Are you gonna be my Girl",songSubName:"Jet",songAuthorName:"Freeek",levelAuthorName:"freeek"},stats:{plays:0,downloads:5652,upvotes:2217,downvotes:89,score:.9166},uploaded:"2018-12-03T18:23:49Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"399b2bd6630fe3dcc7631f89ae391e6684fd6a07",key:"2394",state:"Published",createdAt:"2018-12-03T18:23:49Z",sageScore:7,diffs:[{njs:10,offset:0,notes:286,bombs:0,obstacles:36,nps:1.472,length:340,characteristic:"Standard",difficulty:"Easy",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:10,warns:1,resets:0}},{njs:10,offset:0,notes:369,bombs:0,obstacles:29,nps:1.899,length:340,characteristic:"Standard",difficulty:"Normal",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:36,warns:31,resets:0}},{njs:10,offset:0,notes:510,bombs:0,obstacles:25,nps:2.625,length:340,characteristic:"Standard",difficulty:"Hard",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:45,warns:49,resets:0}},{njs:12,offset:0,notes:757,bombs:0,obstacles:17,nps:3.896,length:340,characteristic:"Standard",difficulty:"Expert",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:37,warns:43,resets:0}},{njs:15,offset:0,notes:927,bombs:0,obstacles:13,nps:4.771,length:340,characteristic:"Standard",difficulty:"ExpertPlus",events:1906,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.286,paritySummary:{errors:42,warns:65,resets:0}}],downloadURL:"https://cdn.beatsaver.com/399b2bd6630fe3dcc7631f89ae391e6684fd6a07.zip",coverURL:"https://cdn.beatsaver.com/399b2bd6630fe3dcc7631f89ae391e6684fd6a07.jpg",previewURL:"https://cdn.beatsaver.com/399b2bd6630fe3dcc7631f89ae391e6684fd6a07.mp3"}],createdAt:"2018-12-03T18:23:49Z",updatedAt:"2018-12-03T18:23:49Z",lastPublishedAt:"2018-12-03T18:23:49Z"},{id:"451b",name:"Orion - Getsix",description:"Get your hunting instinct ready; let’s hunt some bloqs to this dynamic and emotional trip of a track. Think you have what it takes to keep up?\r\n\r\nHUGE thanks to Getsix for taking the time to make a new specific edit and mix of the song for this map! The edits include shortened intro, shorter synth lead parts and louder tribal drums, all for a better Beat Saber experience.\r\n\r\nPreview video:\r\nhttps://youtu.be/s6st6WoBd7k\r\n\r\nBPM: 130\r\nDuration: 3:58\r\nEasy, Normal, Hard, Expert and Expert+ difficulties.\r\n\r\nEasy: 253, 1 obstacles, 2 mines\r\nNormal: 365 notes, 1 obstacles, 4 mines\r\nHard: 556 notes, 1 obstacles, 8 mines\r\nExpert: 979 notes, 1 obstacles, 8 mines\r\nExpert+: 1048 notes, 1 obstacles, 8 mines\r\n\r\nThanks to Redmagi, Malakite and Helencarnate for playtesting!\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:130,duration:231,songName:"Orion (Beat Saber Edit)",songSubName:"Getsix",songAuthorName:"Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:3346,upvotes:1205,downvotes:35,score:.9165},uploaded:"2019-04-12T05:54:28Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"c86e3d35feeb08e4569dabe2389558ba40fa5bf7",key:"451b",state:"Published",createdAt:"2019-04-12T05:54:28Z",sageScore:7,diffs:[{njs:9,offset:0,notes:253,bombs:2,obstacles:1,nps:1.133,length:484,characteristic:"Standard",difficulty:"Easy",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.385,paritySummary:{errors:80,warns:17,resets:0}},{njs:10,offset:1,notes:365,bombs:4,obstacles:1,nps:1.634,length:484,characteristic:"Standard",difficulty:"Normal",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.385,paritySummary:{errors:74,warns:41,resets:0}},{njs:14,offset:0,notes:556,bombs:8,obstacles:1,nps:2.494,length:483,characteristic:"Standard",difficulty:"Hard",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.923,paritySummary:{errors:75,warns:61,resets:4}},{njs:17,offset:0,notes:979,bombs:8,obstacles:1,nps:4.392,length:483,characteristic:"Standard",difficulty:"Expert",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.923,paritySummary:{errors:76,warns:108,resets:2}},{njs:19,offset:0,notes:1048,bombs:8,obstacles:1,nps:4.701,length:483,characteristic:"Standard",difficulty:"ExpertPlus",events:2353,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.923,paritySummary:{errors:97,warns:112,resets:2}}],downloadURL:"https://cdn.beatsaver.com/c86e3d35feeb08e4569dabe2389558ba40fa5bf7.zip",coverURL:"https://cdn.beatsaver.com/c86e3d35feeb08e4569dabe2389558ba40fa5bf7.jpg",previewURL:"https://cdn.beatsaver.com/c86e3d35feeb08e4569dabe2389558ba40fa5bf7.mp3"}],createdAt:"2019-04-12T05:54:28Z",updatedAt:"2019-04-12T05:54:28Z",lastPublishedAt:"2019-04-12T05:54:28Z"},{id:"c209",name:"[Alphabeat - Pegboard Nerds Pack] Pegboard Nerds - Luigi's Mansion",description:"Part of the Pegboard Nerds Music Pack - Presented by the Alphabeat Mapping Group.\n\nAlphabeat is a mapping group that currently consists of 6 members, 4 of which have made this pack. This Pegboard Nerds pack is brought to you by Timeweaver, Rayman, KuritsaDVR & FireStrike!\n\nCheck out the other mappers' profiles here:\nTimeweaver - https://beatsaver.com/uploader/5d47d586c5301900060b2f6c\nFirestrike - https://beatsaver.com/uploader/5cff0b7698cc5a672c85479f\nKuritsaDVR - https://beatsaver.com/uploader/5cff0b7698cc5a672c8537ef\n\nThis map uses a custom platform made by Rayman (me!)! Download it here: https://modelsaber.com/Platforms/?id=1594988870\n\nAll songs included in this pack:\n- Gunslinga (Mapped by Rayman)\n- Coffins (Mapped by Rayman)\n- Superstar (Mapped by Timeweaver & Firestrike)\n- Razor Sharp (Mapped by Firestrike)\n- Luigi’s Mansion (Mapped by Rayman)\n- Try This (Mapped by Timeweaver & Firestrike)\n- Swamp Thing (Mapped by Rayman & KuritsaDVR)\n- Exterminate (Mapped by Timeweaver)\n- Disconnected (Mapped by Timeweaver & Firestrike)\n- Here it Comes (Mapped by KuritsaDVR & Timeweaver)\n\nGet the playlist here:\nhttps://bsaber.com/pegboard-nerds-pack/\n\nView the trailer here:\nhttps://youtu.be/b0fU5Rv_Zf0\n\nIncludes\n- 5 Standard Difficulties\n- 1 One Saber Difficulty\n- 1 360 Degree Difficulty\n- 1 90 Degree Difficulty",uploader:{id:4284994,name:"rayman9515",uniqueSet:!0,hash:"5dc6edac6dea0b0006c18486",avatar:"https://cdn.beatsaver.com/avatar/439017353892724736.png",type:"DISCORD"},metadata:{bpm:99,duration:229,songName:"Luigi's Mansion",songSubName:"",songAuthorName:"Pegboard Nerds",levelAuthorName:"Rayman9515"},stats:{plays:0,downloads:2446,upvotes:797,downvotes:16,score:.9164},uploaded:"2020-07-17T13:00:46.645Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e7cdcc86e136da49cce9747233131e819cabe951",key:"c209",state:"Published",createdAt:"2020-07-17T13:00:46.645Z",sageScore:4,diffs:[{njs:11,offset:.2,notes:332,bombs:0,obstacles:45,nps:1.491,length:365.803,characteristic:"Standard",difficulty:"Easy",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:10,warns:1,resets:0}},{njs:11,offset:.2,notes:471,bombs:0,obstacles:68,nps:2.115,length:365.803,characteristic:"Standard",difficulty:"Normal",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:20,warns:2,resets:0}},{njs:13,offset:0,notes:682,bombs:4,obstacles:67,nps:3.063,length:365.803,characteristic:"Standard",difficulty:"Hard",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:6,warns:0,resets:0}},{njs:16,offset:.5,notes:877,bombs:0,obstacles:71,nps:3.939,length:365.803,characteristic:"Standard",difficulty:"Expert",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:1184,bombs:0,obstacles:111,nps:5.318,length:365.803,characteristic:"Standard",difficulty:"ExpertPlus",events:3637,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:.25,notes:825,bombs:35,obstacles:136,nps:3.705,length:365.803,characteristic:"OneSaber",difficulty:"ExpertPlus",events:3635,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:2,warns:24,resets:0}},{njs:11,offset:.2,notes:471,bombs:0,obstacles:63,nps:2.115,length:365.803,characteristic:"90Degree",difficulty:"Normal",events:3875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:20,warns:2,resets:0}},{njs:11,offset:.2,notes:471,bombs:0,obstacles:63,nps:2.115,length:365.803,characteristic:"360Degree",difficulty:"Normal",events:3875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:221.699,paritySummary:{errors:20,warns:2,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e7cdcc86e136da49cce9747233131e819cabe951.zip",coverURL:"https://cdn.beatsaver.com/e7cdcc86e136da49cce9747233131e819cabe951.jpg",previewURL:"https://cdn.beatsaver.com/e7cdcc86e136da49cce9747233131e819cabe951.mp3"}],createdAt:"2020-07-17T13:00:46.645Z",updatedAt:"2020-07-17T13:00:46.645Z",lastPublishedAt:"2020-07-17T13:00:46.645Z"},{id:"d8",name:"Undertale - Megalovania (Cement City Remix) v.2",description:"I uploaded this song earlier today, but unfortunately not realizing an issue that I had made with the placement of 2 blocks that were near impossible to hit. Fixed and re-uploaded!\r\n\r\nDue to issues with EditSaber, I was unable to create any difficulties beyond Expert, as any changes made on one difficulty would carry over to the others.\r\n\r\nAlso this is my first beat map. Go easy. ;)",uploader:{id:48522,name:"kryptikos",uniqueSet:!0,hash:"5cff0b7298cc5a672c84eab4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84eab4?d=retro",type:"SIMPLE"},metadata:{bpm:126,duration:164,songName:"Megalovania (Cement City Remix)",songSubName:"Undertale",songAuthorName:"Kryptikos",levelAuthorName:"kryptikos"},stats:{plays:0,downloads:4306,upvotes:3e3,downvotes:135,score:.9164},uploaded:"2018-05-17T21:38:37Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2ee2deee264648432035f4abefa69b9dac86bd95",key:"d8",state:"Published",createdAt:"2018-05-17T21:38:37Z",sageScore:5,diffs:[{njs:10,offset:0,notes:566,bombs:32,obstacles:167,nps:3.631,length:327.313,characteristic:"Standard",difficulty:"Expert",events:1864,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:155.863,paritySummary:{errors:82,warns:57,resets:2}}],downloadURL:"https://cdn.beatsaver.com/2ee2deee264648432035f4abefa69b9dac86bd95.zip",coverURL:"https://cdn.beatsaver.com/2ee2deee264648432035f4abefa69b9dac86bd95.jpg",previewURL:"https://cdn.beatsaver.com/2ee2deee264648432035f4abefa69b9dac86bd95.mp3"}],createdAt:"2018-05-17T21:38:37Z",updatedAt:"2018-05-17T21:38:37Z",lastPublishedAt:"2018-05-17T21:38:37Z"},{id:"1a0be",name:"[Electro Swing Pack] Caravan Palace - Wonderland",description:"Nixie Presents: Electro Swing Pack!\n\n10 electro swing songs with expert and expert+ diffs to make your booty swing!\n\nGet The Pack: \nhttps://bsaber.com/electro-swing-pack/\n\nMap Gameplay:\nhttps://youtu.be/uFiLQLooDpQ\n\nComplete Pack Playthrough:\nhttps://youtu.be/yj9rw4MEh7s\n\nHeyya! After looking for some dancey electro swing maps, I noticed that there barely are any!\nSo I took matters into my own hands, learning mapping basically from scratch,\nscrapping my first failed attempts and then finally making a map that was good.\nI found it so fun that I ended up making 9 more maps,\nand fine tuned them with the help of the testplayers in BSMG,\nas well as the lovely curators from the bsaber discord.\n\nHuge thanks in particular to:\nMonstor, Bearly, Noxn, Bullet, Vaser888, Tocxx, Jafdy, Storm Knight and Pixelguy!\n\nIf you want to talk to me, here is my Discord:\nNixie.Korten#6944",uploader:{id:4286374,name:"nixiekorten",uniqueSet:!0,hash:"6096752e12772e0006e2f7e6",avatar:"https://cdn.beatsaver.com/avatar/840550221690699776.png",type:"DISCORD"},metadata:{bpm:104,duration:188,songName:"Wonderland",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"Nixie.Korten"},stats:{plays:0,downloads:14872,upvotes:794,downvotes:16,score:.9163},uploaded:"2021-07-08T15:26:38.489Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9752f2de4dd434c589ced6d89358b1fda6902d3f",key:"1a0be",state:"Published",createdAt:"2021-07-08T15:26:38.489Z",sageScore:3,diffs:[{njs:16,offset:.25,notes:671,bombs:0,obstacles:0,nps:3.779,length:307.75,characteristic:"Standard",difficulty:"Expert",events:1588,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.548,paritySummary:{errors:0,warns:0,resets:0}},{njs:21,offset:0,notes:837,bombs:0,obstacles:10,nps:4.714,length:307.75,characteristic:"Standard",difficulty:"ExpertPlus",events:1588,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:177.548,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9752f2de4dd434c589ced6d89358b1fda6902d3f.zip",coverURL:"https://cdn.beatsaver.com/9752f2de4dd434c589ced6d89358b1fda6902d3f.jpg",previewURL:"https://cdn.beatsaver.com/9752f2de4dd434c589ced6d89358b1fda6902d3f.mp3"}],createdAt:"2021-07-08T15:26:38.489Z",updatedAt:"2021-07-08T15:26:38.489Z",lastPublishedAt:"2021-07-08T15:26:38.489Z"},{id:"d191",name:"Seven Lions - Silent Skies (ft. Karra) | [Chroma RGB]",description:"Was only a lightshow at first but felt like mapping it too. \nSo here is Hard, Expert and Expert+ with my best lightshow so far (imo).\nhope you like it.\n\ntalk shit on discord: nitronik.exe#7974\n\nlightshow preview: https://www.youtube.com/watch?v=vpi-VG_nZg8&t=19s",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:140,duration:234,songName:"Silent Skies",songSubName:"(ft. Karra)",songAuthorName:"Seven Lions",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:4892,upvotes:725,downvotes:13,score:.9163},uploaded:"2020-08-08T18:33:55.424Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8434f521be275ae476b82c00201570ece88b395f",key:"d191",state:"Published",createdAt:"2020-08-08T18:33:55.424Z",sageScore:7,diffs:[{njs:12,offset:1,notes:491,bombs:6,obstacles:59,nps:2.238,length:512,characteristic:"Standard",difficulty:"Hard",events:8199,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.429,paritySummary:{errors:0,warns:0,resets:2}},{njs:16,offset:0,notes:813,bombs:6,obstacles:33,nps:3.704,length:512.083,characteristic:"Standard",difficulty:"Expert",events:8199,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.464,paritySummary:{errors:0,warns:0,resets:2}},{njs:20,offset:-.5,notes:1113,bombs:6,obstacles:32,nps:5.071,length:512.125,characteristic:"Standard",difficulty:"ExpertPlus",events:8199,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.482,paritySummary:{errors:0,warns:0,resets:2}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:8199,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8434f521be275ae476b82c00201570ece88b395f.zip",coverURL:"https://cdn.beatsaver.com/8434f521be275ae476b82c00201570ece88b395f.jpg",previewURL:"https://cdn.beatsaver.com/8434f521be275ae476b82c00201570ece88b395f.mp3"}],createdAt:"2020-08-08T18:33:55.424Z",updatedAt:"2020-08-08T18:33:55.424Z",lastPublishedAt:"2020-08-08T18:33:55.424Z"},{id:"6b96",name:"COALAMODE. - Nanairo Symphony [Your Lie in April Opening 2]",description:"You think it reached her?\n\nBPM 155 | Length 2:01\nExpert\nHard\nNormal\n\nplease enjoy\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:155,duration:122,songName:"Nanairo Symphony",songSubName:"",songAuthorName:"COALAMODE.",levelAuthorName:"ETAN"},stats:{plays:0,downloads:2462,upvotes:602,downvotes:8,score:.9163},uploaded:"2019-10-22T23:22:04.194Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cc3b824dcb605eb76fce944623758578094cd77d",key:"6b96",state:"Published",createdAt:"2019-10-22T23:22:04.194Z",sageScore:6,diffs:[{njs:11,offset:0,notes:207,bombs:0,obstacles:1,nps:1.857,length:288,characteristic:"Standard",difficulty:"Normal",events:3796,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:111.484,paritySummary:{errors:2,warns:2,resets:0}},{njs:12,offset:1,notes:282,bombs:0,obstacles:1,nps:2.53,length:288,characteristic:"Standard",difficulty:"Hard",events:3796,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:111.484,paritySummary:{errors:0,warns:1,resets:0}},{njs:16,offset:.5,notes:411,bombs:0,obstacles:1,nps:3.687,length:288,characteristic:"Standard",difficulty:"Expert",events:3796,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:111.484,paritySummary:{errors:4,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/cc3b824dcb605eb76fce944623758578094cd77d.zip",coverURL:"https://cdn.beatsaver.com/cc3b824dcb605eb76fce944623758578094cd77d.jpg",previewURL:"https://cdn.beatsaver.com/cc3b824dcb605eb76fce944623758578094cd77d.mp3"}],createdAt:"2019-10-22T23:22:04.194Z",updatedAt:"2019-10-22T23:22:04.194Z",lastPublishedAt:"2019-10-22T23:22:04.194Z"},{id:"42de",name:"Kamikaze - WALK THE MOON",description:"An older map that I have no idea why I never published. So here it is!",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:155,duration:198,songName:"Kamikaze",songSubName:"WALK THE MOON",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:3218,upvotes:950,downvotes:23,score:.9163},uploaded:"2019-04-01T22:12:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"63d2d5920e6676f63bf997ae606b6d1590cd8c8d",key:"42de",state:"Published",createdAt:"2019-04-01T22:12:10Z",sageScore:5,diffs:[{njs:10,offset:0,notes:231,bombs:0,obstacles:8,nps:1.203,length:496,characteristic:"Standard",difficulty:"Easy",events:266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:71,warns:20,resets:0}},{njs:10,offset:0,notes:259,bombs:0,obstacles:8,nps:1.349,length:496,characteristic:"Standard",difficulty:"Normal",events:266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:39,warns:23,resets:0}},{njs:10,offset:0,notes:442,bombs:0,obstacles:8,nps:2.302,length:496,characteristic:"Standard",difficulty:"Hard",events:266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:84,warns:55,resets:0}},{njs:12,offset:0,notes:487,bombs:0,obstacles:8,nps:2.536,length:496,characteristic:"Standard",difficulty:"Expert",events:266,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:192,paritySummary:{errors:87,warns:68,resets:0}}],downloadURL:"https://cdn.beatsaver.com/63d2d5920e6676f63bf997ae606b6d1590cd8c8d.zip",coverURL:"https://cdn.beatsaver.com/63d2d5920e6676f63bf997ae606b6d1590cd8c8d.jpg",previewURL:"https://cdn.beatsaver.com/63d2d5920e6676f63bf997ae606b6d1590cd8c8d.mp3"}],createdAt:"2019-04-01T22:12:10Z",updatedAt:"2019-04-01T22:12:10Z",lastPublishedAt:"2019-04-01T22:12:10Z"},{id:"18a6",name:"DJ Fresh - Louder (Doctor P & Flux Pavilion Remix)",description:"Expert / Hard / Normal\r\nhttps://www.youtube.com/watch?v=rfR4cbnB7T8",uploader:{id:12996,name:"rustic",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8c4",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8c4?d=retro",type:"SIMPLE"},metadata:{bpm:140,duration:128,songName:"Louder (Doctor P & Flux Pavilion Remix)",songSubName:"DJ Fresh",songAuthorName:"Rustic",levelAuthorName:"rustic"},stats:{plays:0,downloads:2475,upvotes:1159,downvotes:33,score:.9163},uploaded:"2018-10-04T12:37:14Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6b2cdc3638c97881753d83308c13eda1a490f0b2",key:"18a6",state:"Published",createdAt:"2018-10-04T12:37:14Z",sageScore:6,diffs:[{njs:10,offset:0,notes:249,bombs:0,obstacles:1,nps:2.06,length:282,characteristic:"Standard",difficulty:"Normal",events:2076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:120.857,paritySummary:{errors:10,warns:27,resets:0}},{njs:12,offset:0,notes:305,bombs:0,obstacles:2,nps:2.524,length:282,characteristic:"Standard",difficulty:"Hard",events:2076,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:120.857,paritySummary:{errors:10,warns:39,resets:0}},{njs:14,offset:0,notes:380,bombs:0,obstacles:14,nps:3.144,length:282,characteristic:"Standard",difficulty:"Expert",events:2364,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:120.857,paritySummary:{errors:11,warns:43,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6b2cdc3638c97881753d83308c13eda1a490f0b2.zip",coverURL:"https://cdn.beatsaver.com/6b2cdc3638c97881753d83308c13eda1a490f0b2.jpg",previewURL:"https://cdn.beatsaver.com/6b2cdc3638c97881753d83308c13eda1a490f0b2.mp3"}],createdAt:"2018-10-04T12:37:14Z",updatedAt:"2018-10-04T12:37:14Z",lastPublishedAt:"2018-10-04T12:37:14Z"},{id:"2529",name:"Back From The Dead - Skillet",description:"Song: Back From The Dead - Skillet\r\nMapper: KuritsaDBS\r\nAvailable difficulties: Expert\r\nPreview: Not available",uploader:{id:23150,name:"kuritsadbs",uniqueSet:!0,hash:"5cff0b7698cc5a672c8537ef",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c8537ef?d=retro",type:"SIMPLE"},metadata:{bpm:162,duration:215,songName:"Back From The Dead",songSubName:"Skillet",songAuthorName:"KuritsaDBS",levelAuthorName:"KuritsaDBS"},stats:{plays:0,downloads:844,upvotes:601,downvotes:8,score:.9162},uploaded:"2018-12-11T14:24:33Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"baa01d357ac94cdca55972aa6c925709e4595850",key:"2529",state:"Published",createdAt:"2018-12-11T14:24:33Z",sageScore:4,diffs:[{njs:14,offset:0,notes:593,bombs:44,obstacles:107,nps:2.911,length:550,characteristic:"Standard",difficulty:"Expert",events:754,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:203.704,paritySummary:{errors:33,warns:51,resets:0}}],downloadURL:"https://cdn.beatsaver.com/baa01d357ac94cdca55972aa6c925709e4595850.zip",coverURL:"https://cdn.beatsaver.com/baa01d357ac94cdca55972aa6c925709e4595850.jpg",previewURL:"https://cdn.beatsaver.com/baa01d357ac94cdca55972aa6c925709e4595850.mp3"}],createdAt:"2018-12-11T14:24:33Z",updatedAt:"2018-12-11T14:24:33Z",lastPublishedAt:"2018-12-11T14:24:33Z"},{id:"1897",name:"Song of the Ancients / Fate - NieR Gestalt & Replicant Original Soundtrack",description:"\"It's like I just found something special. Something very special.\"\r\n\r\n128BPM / 4:52 Runtime\r\nHard / 758 Notes\r\nExpert / 994 Notes\r\nExpert+ / 1108 Notes\r\n\r\nGameplay:\r\nhttps://youtu.be/0r-UkakLCwU\r\nListen to the song:\r\nhttps://www.youtube.com/watch?v=ady--PNMsfI\r\n\r\nI thought the amazing game, NieR Gestalt/Replicant, needed an amazing beat map to go with it. This song was a perfect fit :)\r\n[UPDATE]\r\nSomebody pointed out there was a mapping error during the acoustic guitar section. It's fixed.",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:128,duration:292,songName:"Song of the Ancients / Fate",songSubName:"NieR OST",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:1672,upvotes:860,downvotes:19,score:.9162},uploaded:"2018-10-04T00:33:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"4638d271b9974ec5bb851bb8629976078e781c97",key:"1897",state:"Published",createdAt:"2018-10-04T00:33:41Z",sageScore:6,diffs:[{njs:10,offset:0,notes:758,bombs:0,obstacles:16,nps:2.622,length:616,characteristic:"Standard",difficulty:"Hard",events:3742,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.75,paritySummary:{errors:81,warns:73,resets:0}},{njs:12,offset:0,notes:994,bombs:8,obstacles:32,nps:3.439,length:616,characteristic:"Standard",difficulty:"Expert",events:3742,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.75,paritySummary:{errors:55,warns:40,resets:0}},{njs:12,offset:0,notes:1108,bombs:8,obstacles:32,nps:3.833,length:616,characteristic:"Standard",difficulty:"ExpertPlus",events:3742,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:288.75,paritySummary:{errors:65,warns:47,resets:0}}],downloadURL:"https://cdn.beatsaver.com/4638d271b9974ec5bb851bb8629976078e781c97.zip",coverURL:"https://cdn.beatsaver.com/4638d271b9974ec5bb851bb8629976078e781c97.jpg",previewURL:"https://cdn.beatsaver.com/4638d271b9974ec5bb851bb8629976078e781c97.mp3"}],createdAt:"2018-10-04T00:33:41Z",updatedAt:"2018-10-04T00:33:41Z",lastPublishedAt:"2018-10-04T00:33:41Z"},{id:"9a36",name:"[Tokyo Machine Pack] Tokyo Machine - PLAY",description:"4/6\nPart of the Tokyo Machine Pack, a collab between Firestrike, Cyansnow and I.\nMap by me, lights by FireStrike.\n\nFireStrike's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c85479f\nCyanSnow's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c8543ac\n\nPlaylist: https://bsaber.com/tokyo-machine-pack/\n\nCheck out the trailer for the pack here: https://www.youtube.com/watch?v=lStPUnecsD8",uploader:{id:57657,name:"pixelguymm",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541a8",avatar:"https://cdn.beatsaver.com/avatar/434386941547511818.png",type:"DISCORD"},metadata:{bpm:128,duration:185,songName:"PLAY",songSubName:"",songAuthorName:"Tokyo Machine",levelAuthorName:"FireStrike & Pixel"},stats:{plays:0,downloads:1813,upvotes:598,downvotes:8,score:.9161},uploaded:"2020-04-12T18:07:52.070Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a9e447b8ea158c2b68f546935f704b270277f7f8",key:"9a36",state:"Published",createdAt:"2020-04-12T18:07:52.070Z",sageScore:5,diffs:[{njs:16,offset:-.3,notes:754,bombs:43,obstacles:0,nps:4.189,length:384,characteristic:"Standard",difficulty:"ExpertPlus",events:4444,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a9e447b8ea158c2b68f546935f704b270277f7f8.zip",coverURL:"https://cdn.beatsaver.com/a9e447b8ea158c2b68f546935f704b270277f7f8.jpg",previewURL:"https://cdn.beatsaver.com/a9e447b8ea158c2b68f546935f704b270277f7f8.mp3"}],createdAt:"2020-04-12T18:07:52.070Z",updatedAt:"2020-04-12T18:07:52.070Z",lastPublishedAt:"2020-04-12T18:07:52.070Z"},{id:"8108",name:"[Noodlegames] Ephixa - Wisdom (Zelda's Lullaby)",description:"The Ramen Noodle group is here to bring you a map pack full of our favorite video game soundtracks and game-inspired music! Ephixa's wonderful remix of Zelda's Lullaby is iconic, and a fantastic way to honor the beautiful rhythms in Ocarina of Time.",uploader:{id:4284569,name:"checkthepan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3d5",avatar:"https://cdn.beatsaver.com/avatar/184355369189900290.png",type:"DISCORD"},metadata:{bpm:140,duration:241,songName:"Wisdom (Zelda's Lullaby Link to the Future) ",songSubName:"[feat. Will & Tim] [From Legend of Zelda: Ocarina of Time]",songAuthorName:"Ephixa",levelAuthorName:"Checkthepan"},stats:{plays:0,downloads:2384,upvotes:696,downvotes:12,score:.9161},uploaded:"2020-01-24T23:15:35.818Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a603656eb8cdadcb6eda85ef408902c1f6125a8f",key:"8108",state:"Published",createdAt:"2020-01-24T23:15:35.818Z",sageScore:3,diffs:[{njs:11,offset:.25,notes:331,bombs:0,obstacles:28,nps:1.43,length:540.031,characteristic:"Standard",difficulty:"Normal",events:13016,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.442,paritySummary:{errors:77,warns:4,resets:0}},{njs:13,offset:.25,notes:560,bombs:16,obstacles:26,nps:2.42,length:540.031,characteristic:"Standard",difficulty:"Hard",events:13016,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.442,paritySummary:{errors:1,warns:1,resets:3}},{njs:16,offset:0,notes:769,bombs:24,obstacles:26,nps:3.323,length:540.031,characteristic:"Standard",difficulty:"Expert",events:13016,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.442,paritySummary:{errors:1,warns:0,resets:3}},{njs:19,offset:-.25,notes:930,bombs:65,obstacles:26,nps:4.018,length:540.031,characteristic:"Standard",difficulty:"ExpertPlus",events:13016,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:231.442,paritySummary:{errors:1,warns:0,resets:13}}],downloadURL:"https://cdn.beatsaver.com/a603656eb8cdadcb6eda85ef408902c1f6125a8f.zip",coverURL:"https://cdn.beatsaver.com/a603656eb8cdadcb6eda85ef408902c1f6125a8f.jpg",previewURL:"https://cdn.beatsaver.com/a603656eb8cdadcb6eda85ef408902c1f6125a8f.mp3"}],createdAt:"2020-01-24T23:15:35.818Z",updatedAt:"2020-01-24T23:15:35.818Z",lastPublishedAt:"2020-01-24T23:15:35.818Z"},{id:"4227",name:"Aladdin - A Whole New World",description:"This song makes me smile. Such a classic Disney song.\r\nAdded easy and normal difficulties. Hard is a bit slower now . Expert is the same speed as the previous upload.",uploader:{id:4285018,name:"majorpickle",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f792",avatar:"https://cdn.beatsaver.com/avatar/450358937657671680.png",type:"DISCORD"},metadata:{bpm:123,duration:162,songName:"A Whole New World (From Disney's ''Aladdin'')",songSubName:"Lea Salonga & Brad Kane",songAuthorName:"Majorpickle",levelAuthorName:"majorpickle"},stats:{plays:0,downloads:5615,upvotes:1291,downvotes:40,score:.9161},uploaded:"2019-03-30T22:52:43Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"882f3fd9b97b4ce107c1e9e1f944c491b86c47fe",key:"4227",state:"Published",createdAt:"2019-03-30T22:52:43Z",sageScore:5,diffs:[{njs:10,offset:0,notes:236,bombs:0,obstacles:118,nps:1.591,length:304,characteristic:"Standard",difficulty:"Easy",events:540,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.293,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:242,bombs:0,obstacles:117,nps:1.631,length:304,characteristic:"Standard",difficulty:"Normal",events:540,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.293,paritySummary:{errors:22,warns:0,resets:0}},{njs:10,offset:0,notes:420,bombs:0,obstacles:85,nps:2.83,length:304.125,characteristic:"Standard",difficulty:"Hard",events:539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.354,paritySummary:{errors:12,warns:11,resets:0}},{njs:11,offset:0,notes:420,bombs:0,obstacles:85,nps:2.83,length:304.125,characteristic:"Standard",difficulty:"Expert",events:539,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.354,paritySummary:{errors:12,warns:11,resets:0}}],downloadURL:"https://cdn.beatsaver.com/882f3fd9b97b4ce107c1e9e1f944c491b86c47fe.zip",coverURL:"https://cdn.beatsaver.com/882f3fd9b97b4ce107c1e9e1f944c491b86c47fe.jpg",previewURL:"https://cdn.beatsaver.com/882f3fd9b97b4ce107c1e9e1f944c491b86c47fe.mp3"}],createdAt:"2019-03-30T22:52:43Z",updatedAt:"2019-03-30T22:52:43Z",lastPublishedAt:"2019-03-30T22:52:43Z"},{id:"2569",name:"Celtic Woman - Carol Of The Bells",description:"Hard/Expert | BPM: 190 | Length: 2:18 | Notes: 333/560\r\n\r\nMerry Christmas and Happy Holidays! \r\nHad fun charting this one, I hope you have fun playing it :D\r\n\r\n16th Map.\r\n\r\nPreview:\r\nhttps://www.youtube.com/watch?v=zh9-XC1D5aU",uploader:{id:4285825,name:"fefeland",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f3bb",avatar:"https://cdn.beatsaver.com/avatar/119360573191225344.png",type:"DISCORD"},metadata:{bpm:190,duration:139,songName:"Carol Of The Bells",songSubName:"Celtic Woman",songAuthorName:"FEFELAND",levelAuthorName:"fefeland"},stats:{plays:0,downloads:1307,upvotes:598,downvotes:8,score:.9161},uploaded:"2018-12-13T02:40:05Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1df1374196f03c9bba1aed018e3de2595f79dce1",key:"2569",state:"Published",createdAt:"2018-12-13T02:40:05Z",sageScore:5,diffs:[{njs:12,offset:0,notes:333,bombs:0,obstacles:101,nps:2.491,length:423.375,characteristic:"Standard",difficulty:"Hard",events:790,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:133.697,paritySummary:{errors:20,warns:18,resets:0}},{njs:15,offset:0,notes:560,bombs:0,obstacles:105,nps:4.189,length:423.375,characteristic:"Standard",difficulty:"Expert",events:790,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:133.697,paritySummary:{errors:15,warns:9,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1df1374196f03c9bba1aed018e3de2595f79dce1.zip",coverURL:"https://cdn.beatsaver.com/1df1374196f03c9bba1aed018e3de2595f79dce1.jpg",previewURL:"https://cdn.beatsaver.com/1df1374196f03c9bba1aed018e3de2595f79dce1.mp3"}],createdAt:"2018-12-13T02:40:05Z",updatedAt:"2018-12-13T02:40:05Z",lastPublishedAt:"2018-12-13T02:40:05Z"},{id:"16894",name:"Joe Hisaishi - Merry-Go-Round (from 'Howl's Moving Castle')",description:"The popular theme from Studio Ghibli's 'Howl's Moving Castle'. Version from Joe Hisaishi's 'Dream Songs' album.\n\nThanks to Cyrix and vaser888 for early testplays, Timbo and Uninstaller for the excellent mods, and Qwasyx for further suggestions for improvement.\n\nZelazowa#3625",uploader:{id:4284834,name:"zelazowa",uniqueSet:!0,hash:"5ea5367d16c968000632663c",avatar:"https://cdn.beatsaver.com/avatar/94962140443578368.png",type:"DISCORD"},metadata:{bpm:160,duration:312,songName:"Merry-Go-Round",songSubName:"(from 'Howl's Moving Castle')",songAuthorName:"Joe Hisaishi",levelAuthorName:"Zelazowa"},stats:{plays:0,downloads:5833,upvotes:813,downvotes:17,score:.9161},uploaded:"2021-04-11T02:32:37.687Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"d30db93f2c3c5a152b84ca364a691ef10c4efdb9",key:"16894",state:"Published",createdAt:"2021-04-11T02:32:37.687Z",sageScore:5,diffs:[{njs:10,offset:0,notes:441,bombs:0,obstacles:94,nps:1.459,length:806.257,characteristic:"Standard",difficulty:"Easy",events:1833,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.346,paritySummary:{errors:169,warns:8,resets:0},stars:.91},{njs:12,offset:-.75,notes:594,bombs:0,obstacles:83,nps:1.964,length:806.324,characteristic:"Standard",difficulty:"Normal",events:1833,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.372,paritySummary:{errors:9,warns:4,resets:0},stars:1.22},{njs:14,offset:.75,notes:847,bombs:0,obstacles:34,nps:2.801,length:806.324,characteristic:"Standard",difficulty:"Hard",events:1834,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.372,paritySummary:{errors:0,warns:0,resets:0},stars:1.71},{njs:16,offset:.25,notes:1075,bombs:0,obstacles:30,nps:3.555,length:806.392,characteristic:"Standard",difficulty:"Expert",events:1834,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.397,paritySummary:{errors:0,warns:0,resets:0},stars:2.47},{njs:18,offset:-.1,notes:1236,bombs:0,obstacles:18,nps:4.088,length:806.257,characteristic:"Standard",difficulty:"ExpertPlus",events:1833,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:302.346,paritySummary:{errors:0,warns:0,resets:0},stars:5}],downloadURL:"https://cdn.beatsaver.com/d30db93f2c3c5a152b84ca364a691ef10c4efdb9.zip",coverURL:"https://cdn.beatsaver.com/d30db93f2c3c5a152b84ca364a691ef10c4efdb9.jpg",previewURL:"https://cdn.beatsaver.com/d30db93f2c3c5a152b84ca364a691ef10c4efdb9.mp3"}],createdAt:"2021-04-11T02:32:37.687Z",updatedAt:"2021-04-11T02:32:37.687Z",lastPublishedAt:"2021-04-11T02:32:37.687Z"},{id:"c213",name:"Pegboard Nerds - Rhythm Is A Dancer (ft. Tia Simone)",description:"The Pegboard Nerds Pack was planned months before I joined AlphaBeat, so obviously I wasn't planned in for it. \n\nI still felt like mapping a Pegboard Nerds song and the new track from the Monstercat Anniversary seemed like a good fit. You could see this as some kind of bonus map for the Pack, but it wont be included in the Playlist, because having 11 songs instead of 10 feels weird. \n\nIt's not as fleshed out as the maps in the Pack because I only joined a few days ago and wanted to release this around the same time the Pack comes out.\n\nI hope you enjoy it nevertheless!\n\nPreview: https://youtu.be/HEr8pkcDM7M\n\nFeedback on Discord: nitronik.exe#7974",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:128,duration:225,songName:"Rhythm Is A Dancer",songSubName:"(ft. Tia Simone)",songAuthorName:"Pegboard Nerds",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:2515,upvotes:942,downvotes:23,score:.916},uploaded:"2020-07-17T14:05:23.854Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3255f65dd6a7d4dd3c9c1cb800e854d58f5d2e88",key:"c213",state:"Published",createdAt:"2020-07-17T14:05:23.854Z",sageScore:6,diffs:[{njs:10,offset:1,notes:185,bombs:0,obstacles:0,nps:.851,length:464,characteristic:"Standard",difficulty:"Easy",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:217.5,paritySummary:{errors:69,warns:10,resets:0}},{njs:12,offset:.5,notes:328,bombs:0,obstacles:0,nps:1.508,length:464,characteristic:"Standard",difficulty:"Normal",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:217.5,paritySummary:{errors:6,warns:0,resets:0}},{njs:14,offset:0,notes:561,bombs:0,obstacles:0,nps:2.561,length:467.25,characteristic:"Standard",difficulty:"Hard",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.023,paritySummary:{errors:4,warns:0,resets:0}},{njs:16,offset:0,notes:812,bombs:0,obstacles:0,nps:3.707,length:467.25,characteristic:"Standard",difficulty:"Expert",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.023,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:-.5,notes:1150,bombs:0,obstacles:2,nps:5.251,length:467.25,characteristic:"Standard",difficulty:"ExpertPlus",events:3954,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:219.023,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/3255f65dd6a7d4dd3c9c1cb800e854d58f5d2e88.zip",coverURL:"https://cdn.beatsaver.com/3255f65dd6a7d4dd3c9c1cb800e854d58f5d2e88.jpg",previewURL:"https://cdn.beatsaver.com/3255f65dd6a7d4dd3c9c1cb800e854d58f5d2e88.mp3"}],createdAt:"2020-07-17T14:05:23.854Z",updatedAt:"2020-07-17T14:05:23.854Z",lastPublishedAt:"2020-07-17T14:05:23.854Z"},{id:"6e1f",name:"Good Times Roll - GRiZ x Big Gigantic",description:"Huge thanks to Awfulnaut for letting me use his existing Good Times Roll map to create this updated version. <3",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:200,duration:146,songName:"Good Times Roll",songSubName:"",songAuthorName:"Griz x Big Gigantic",levelAuthorName:"Awfulnaut, Ryger"},stats:{plays:0,downloads:639,upvotes:434,downvotes:2,score:.916},uploaded:"2019-11-04T02:30:11.352Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6cb7b184a496b917739bc59a9012029ebb9e340c",key:"6e1f",state:"Published",createdAt:"2019-11-04T02:30:11.352Z",sageScore:4,diffs:[{njs:10,offset:0,notes:354,bombs:0,obstacles:11,nps:2.551,length:462.5,characteristic:"Standard",difficulty:"Hard",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:13,warns:6,resets:0}},{njs:14,offset:0,notes:518,bombs:0,obstacles:12,nps:3.733,length:462.5,characteristic:"Standard",difficulty:"Expert",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:10,warns:21,resets:0}},{njs:15,offset:.5,notes:652,bombs:0,obstacles:10,nps:4.679,length:464.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:139.35,paritySummary:{errors:33,warns:19,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6cb7b184a496b917739bc59a9012029ebb9e340c.zip",coverURL:"https://cdn.beatsaver.com/6cb7b184a496b917739bc59a9012029ebb9e340c.jpg",previewURL:"https://cdn.beatsaver.com/6cb7b184a496b917739bc59a9012029ebb9e340c.mp3"}],createdAt:"2019-11-04T02:30:11.352Z",updatedAt:"2019-11-04T02:30:11.352Z",lastPublishedAt:"2019-11-04T02:30:11.352Z"},{id:"5b95",name:"The Living Tombstone - I Can't Fix You",description:"This is probably on the easier end of Expert+ so it should be enjoyable for those looking to step up from Expert after a little practice. This song has officially been tested to oblivion, but I am happy to hear any feedback.\n\nDifficulty: Expert+\nBPM: 174\nNotes: 1212\nNJS: 15\nNPS: 4.65\nSong Duration: 4:21\n\nPreview video can be found here: https://youtu.be/EkcKRlikwMY\n\nSpecial Thanks to Kival Evan for their playtesting and feedback!",uploader:{id:34679,name:"lukemortora",uniqueSet:!0,hash:"5cff0b7798cc5a672c855c16",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855c16?d=retro",type:"SIMPLE"},metadata:{bpm:174,duration:261,songName:"I Can't Fix You",songSubName:"",songAuthorName:"The Living Tombstone",levelAuthorName:"LukeMortora"},stats:{plays:0,downloads:1353,upvotes:1043,downvotes:28,score:.9159},uploaded:"2019-08-09T15:10:13.751Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d074bc64340208a777eea440ba5e5a24f9d65d54",key:"5b95",state:"Published",createdAt:"2019-08-09T15:10:13.751Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1212,bombs:117,obstacles:26,nps:4.971,length:707,characteristic:"Standard",difficulty:"ExpertPlus",events:2214,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:243.793,paritySummary:{errors:114,warns:78,resets:11}}],downloadURL:"https://cdn.beatsaver.com/d074bc64340208a777eea440ba5e5a24f9d65d54.zip",coverURL:"https://cdn.beatsaver.com/d074bc64340208a777eea440ba5e5a24f9d65d54.jpg",previewURL:"https://cdn.beatsaver.com/d074bc64340208a777eea440ba5e5a24f9d65d54.mp3"}],createdAt:"2019-08-09T15:10:13.751Z",updatedAt:"2019-08-09T15:10:13.751Z",lastPublishedAt:"2019-08-09T15:10:13.751Z"},{id:"3c1d",name:"Sound of an Orchestra - MIKA",description:"Expert Playthrough : https://youtu.be/Ql0bAjfNQ5M",uploader:{id:13320,name:"novashaft",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee55",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee55?d=retro",type:"SIMPLE"},metadata:{bpm:127,duration:180,songName:"Sound Of An Orchestra",songSubName:"MIKA",songAuthorName:"NovaShaft",levelAuthorName:"novashaft"},stats:{plays:0,downloads:2681,upvotes:693,downvotes:12,score:.9159},uploaded:"2019-03-06T16:56:54Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ab5ec7d8c0976c8acb1ed48889fce51666fabf45",key:"3c1d",state:"Published",createdAt:"2019-03-06T16:56:54Z",sageScore:5,diffs:[{njs:11,offset:0,notes:325,bombs:0,obstacles:24,nps:1.869,length:368,characteristic:"Standard",difficulty:"Normal",events:869,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.858,paritySummary:{errors:18,warns:7,resets:0}},{njs:13,offset:0,notes:386,bombs:0,obstacles:24,nps:2.22,length:368,characteristic:"Standard",difficulty:"Hard",events:869,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.858,paritySummary:{errors:36,warns:32,resets:0}},{njs:15,offset:0,notes:482,bombs:0,obstacles:24,nps:2.772,length:368,characteristic:"Standard",difficulty:"Expert",events:869,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:173.858,paritySummary:{errors:40,warns:45,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ab5ec7d8c0976c8acb1ed48889fce51666fabf45.zip",coverURL:"https://cdn.beatsaver.com/ab5ec7d8c0976c8acb1ed48889fce51666fabf45.jpg",previewURL:"https://cdn.beatsaver.com/ab5ec7d8c0976c8acb1ed48889fce51666fabf45.mp3"}],createdAt:"2019-03-06T16:56:54Z",updatedAt:"2019-03-06T16:56:54Z",lastPublishedAt:"2019-03-06T16:56:54Z"},{id:"ae9d",name:"A Cruel Angel's Thesis [22/7 Soundtrack] - Sakura Fujima",description:"A Cruel Angel's Thesis (Zankoku na Tenshi no Thesis) as covered by Sakura Fujima (CV: Sally Amaki.) from 22/7. It was originally sung by Takahashi Yoko as the opening of the anime Neon Genesis Evangelion. ",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:128,duration:92,songName:"A Cruel Angel's Thesis",songSubName:"",songAuthorName:"Sakura Fujima",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4289,upvotes:1204,downvotes:36,score:.9158},uploaded:"2020-06-05T07:07:17.017Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"40e47564d01e50840b0aa9a3191ff09a2e5b56a1",key:"ae9d",state:"Published",createdAt:"2020-06-05T07:07:17.017Z",sageScore:4,diffs:[{njs:12,offset:0,notes:222,bombs:0,obstacles:32,nps:2.536,length:186.75,characteristic:"Standard",difficulty:"Hard",events:2286,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.539,paritySummary:{errors:2,warns:2,resets:0}},{njs:14,offset:0,notes:347,bombs:0,obstacles:32,nps:3.932,length:188.25,characteristic:"Standard",difficulty:"Expert",events:2286,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.242,paritySummary:{errors:0,warns:2,resets:0}},{njs:16,offset:-.2,notes:413,bombs:0,obstacles:22,nps:4.68,length:188.25,characteristic:"Standard",difficulty:"ExpertPlus",events:2280,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:88.242,paritySummary:{errors:0,warns:3,resets:0}}],downloadURL:"https://cdn.beatsaver.com/40e47564d01e50840b0aa9a3191ff09a2e5b56a1.zip",coverURL:"https://cdn.beatsaver.com/40e47564d01e50840b0aa9a3191ff09a2e5b56a1.jpg",previewURL:"https://cdn.beatsaver.com/40e47564d01e50840b0aa9a3191ff09a2e5b56a1.mp3"}],createdAt:"2020-06-05T07:07:17.017Z",updatedAt:"2020-06-05T07:07:17.017Z",lastPublishedAt:"2020-06-05T07:07:17.017Z"},{id:"65b7",name:"My First Kiss - Nightcore",description:"Youtube Preview: https://youtu.be/KxdCEgDG-AI",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:174.803,duration:156,songName:"My First Kiss - Nightcore",songSubName:"",songAuthorName:"Nightcore",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:709,upvotes:713,downvotes:13,score:.9158},uploaded:"2019-09-25T01:39:37.237Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5723e29f0a39dcec76926c1fa8baf6e9a32c185b",key:"65b7",state:"Published",createdAt:"2019-09-25T01:39:37.237Z",sageScore:4,diffs:[{njs:15,offset:0,notes:623,bombs:4,obstacles:48,nps:4.134,length:439,characteristic:"Standard",difficulty:"Expert",events:743,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:150.684,paritySummary:{errors:0,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/5723e29f0a39dcec76926c1fa8baf6e9a32c185b.zip",coverURL:"https://cdn.beatsaver.com/5723e29f0a39dcec76926c1fa8baf6e9a32c185b.jpg",previewURL:"https://cdn.beatsaver.com/5723e29f0a39dcec76926c1fa8baf6e9a32c185b.mp3"}],createdAt:"2019-09-25T01:39:37.237Z",updatedAt:"2019-09-25T01:39:37.237Z",lastPublishedAt:"2019-09-25T01:39:37.237Z"},{id:"4a4c",name:"[Anniversary] The Thrill - Nero, Porter Robinson [Ruckus]",description:"Part of the Anniversary Song Pack",uploader:{id:37070,name:"anniversaryteam",uniqueSet:!0,hash:"5cff0b7798cc5a672c8565a3",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c8565a3?d=retro",type:"SIMPLE"},metadata:{bpm:160,duration:204,songName:"The Thrill (Porter Robinson Remix)",songSubName:"NERO, Porter Robinson",songAuthorName:"Ruckus",levelAuthorName:"AnniversaryTeam"},stats:{plays:0,downloads:2144,upvotes:1321,downvotes:42,score:.9158},uploaded:"2019-05-03T14:13:21Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"68496811309fe62303edde686eb160f8e45aa9ce",key:"4a4c",state:"Published",createdAt:"2019-05-03T14:13:21Z",sageScore:7,diffs:[{njs:10,offset:0,notes:232,bombs:0,obstacles:70,nps:1.197,length:516.688,characteristic:"Standard",difficulty:"Easy",events:9122,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.758,paritySummary:{errors:17,warns:7,resets:0}},{njs:12,offset:0,notes:489,bombs:0,obstacles:60,nps:2.524,length:516.692,characteristic:"Standard",difficulty:"Normal",events:9127,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.76,paritySummary:{errors:29,warns:20,resets:0}},{njs:13,offset:0,notes:635,bombs:0,obstacles:64,nps:3.274,length:517.188,characteristic:"Standard",difficulty:"Hard",events:9117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.945,paritySummary:{errors:34,warns:35,resets:0}},{njs:18,offset:0,notes:1128,bombs:0,obstacles:36,nps:5.816,length:517.188,characteristic:"Standard",difficulty:"Expert",events:9117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.945,paritySummary:{errors:36,warns:35,resets:0}},{njs:20,offset:0,notes:1115,bombs:0,obstacles:46,nps:5.749,length:517.188,characteristic:"Standard",difficulty:"ExpertPlus",events:9117,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.945,paritySummary:{errors:49,warns:73,resets:0}}],downloadURL:"https://cdn.beatsaver.com/68496811309fe62303edde686eb160f8e45aa9ce.zip",coverURL:"https://cdn.beatsaver.com/68496811309fe62303edde686eb160f8e45aa9ce.jpg",previewURL:"https://cdn.beatsaver.com/68496811309fe62303edde686eb160f8e45aa9ce.mp3"}],createdAt:"2019-05-03T14:13:21Z",updatedAt:"2019-05-03T14:13:21Z",lastPublishedAt:"2019-05-03T14:13:21Z"},{id:"a692",name:"[Noodle Touhou] Tare - VOLUPTE",description:"Easy, normal, hard, expert, expert+\r\n\r\nThis map is part of the first Touhou map pack brought to you by the Ramen Noodle mapper group! It contains all sorts of covers, arrangements and remix of the original Touhou soundtrack. We hope you enjoy it a lot!",uploader:{id:4235138,name:"CyanSnow",uniqueSet:!0,hash:"5cff0b7698cc5a672c8543ac",avatar:"https://cdn.beatsaver.com/avatar/154341137694326784.png",type:"DISCORD"},metadata:{bpm:128,duration:184,songName:"VOLUPTE",songSubName:"",songAuthorName:"Tare",levelAuthorName:"Aeroluna & CyanSnow"},stats:{plays:0,downloads:2792,upvotes:638,downvotes:10,score:.9156},uploaded:"2020-05-15T18:20:58.233Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"01ce5a3adc19e360ba0ffd8347f91b5dc974eb7c",key:"a692",state:"Published",createdAt:"2020-05-15T18:20:58.233Z",sageScore:6,diffs:[{njs:12,offset:.5,notes:254,bombs:0,obstacles:0,nps:1.411,length:384,characteristic:"Standard",difficulty:"Easy",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:6,warns:0,resets:0}},{njs:12,offset:.5,notes:404,bombs:0,obstacles:0,nps:2.244,length:384,characteristic:"Standard",difficulty:"Normal",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:1,warns:0,resets:0}},{njs:13,offset:.25,notes:541,bombs:0,obstacles:0,nps:3.006,length:384,characteristic:"Standard",difficulty:"Hard",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.25,notes:763,bombs:0,obstacles:0,nps:4.236,length:384.25,characteristic:"Standard",difficulty:"Expert",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180.117,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.5,notes:1009,bombs:0,obstacles:0,nps:5.602,length:384.25,characteristic:"Standard",difficulty:"ExpertPlus",events:13825,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:180.117,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/01ce5a3adc19e360ba0ffd8347f91b5dc974eb7c.zip",coverURL:"https://cdn.beatsaver.com/01ce5a3adc19e360ba0ffd8347f91b5dc974eb7c.jpg",previewURL:"https://cdn.beatsaver.com/01ce5a3adc19e360ba0ffd8347f91b5dc974eb7c.mp3"}],createdAt:"2020-05-15T18:20:58.233Z",updatedAt:"2020-05-15T18:20:58.233Z",lastPublishedAt:"2020-05-15T18:20:58.233Z"},{id:"9fab",name:"Doom Crossing: Eternal Horizons",description:"3 Difficulties Included! \n\nAnother side release of mine! This song's chorus is so catchy, it got stuck in my head for days! Also I've been playing a ton of Animal Crossing ^^ \n\nDoom Crossing: Eternal Horizons by The Chalkeaters ft. Natalia Natchan\n\nBPM: 160\n\nLights by Loloppe's autolighter, Lolighter! With some manual touch ups!",uploader:{id:4289037,name:"mystikmol",uniqueSet:!0,hash:"5cff0b7298cc5a672c84eb52",avatar:"https://cdn.beatsaver.com/avatar/67941140636114944.png",type:"DISCORD"},metadata:{bpm:160,duration:83,songName:"Doom Crossing: Eternal Horizons",songSubName:"Short ver.",songAuthorName:"The Chalkeaters ft. Natalia Natchan",levelAuthorName:"Mystikmol"},stats:{plays:0,downloads:3574,upvotes:1563,downvotes:55,score:.9156},uploaded:"2020-04-27T15:22:22.520Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"f8b391a5fd0922062f7e3c10ccc1967f91da20a2",key:"9fab",state:"Published",createdAt:"2020-04-27T15:22:22.520Z",sageScore:3,diffs:[{njs:12,offset:0,notes:153,bombs:0,obstacles:0,nps:2.082,length:196,characteristic:"Standard",difficulty:"Normal",events:1926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:73.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:261,bombs:0,obstacles:1,nps:3.551,length:196,characteristic:"Standard",difficulty:"Hard",events:1926,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:73.5,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:0,notes:491,bombs:0,obstacles:0,nps:6.68,length:196,characteristic:"Standard",difficulty:"ExpertPlus",events:1927,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:73.5,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/f8b391a5fd0922062f7e3c10ccc1967f91da20a2.zip",coverURL:"https://cdn.beatsaver.com/f8b391a5fd0922062f7e3c10ccc1967f91da20a2.jpg",previewURL:"https://cdn.beatsaver.com/f8b391a5fd0922062f7e3c10ccc1967f91da20a2.mp3"}],createdAt:"2020-04-27T15:22:22.520Z",updatedAt:"2020-04-27T15:22:22.520Z",lastPublishedAt:"2020-04-27T15:22:22.520Z"},{id:"12377",name:"Sangatsu no Phantasia - Pastel Rain",description:"use CHROMA mod for\n- cool lights\n- if you dont have chroma it'll just be greyed out PepeLaugh\n\nHappy New Years\n\nBPM | 135\nExpert+\nExpert\nHard\n\nThanks JohnnyDee for the playtest, what a qt\n\npreview: https://www.youtube.com/watch?v=hGq0EEsqgQQ\n\nthank you for playing\n\nDM any feedback on Discord\nETAN#8341",uploader:{id:4235140,name:"etan",uniqueSet:!0,hash:"5cff0b7798cc5a672c855775",avatar:"https://cdn.beatsaver.com/avatar/136373107559497728.png",type:"DISCORD"},metadata:{bpm:135,duration:212,songName:"Pastel Rain",songSubName:"",songAuthorName:"Sangatsu no Phantasia",levelAuthorName:"ETAN"},stats:{plays:0,downloads:4912,upvotes:776,downvotes:16,score:.9155},uploaded:"2021-01-03T08:08:53.577Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2c01774fdb9c4bcc53df1707ade85cea6f043477",key:"12377",state:"Published",createdAt:"2021-01-03T08:08:53.577Z",sageScore:5,diffs:[{njs:12,offset:.5,notes:576,bombs:0,obstacles:58,nps:2.775,length:467,characteristic:"Standard",difficulty:"Hard",events:16659,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:207.556,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:0,notes:882,bombs:0,obstacles:58,nps:4.249,length:467,characteristic:"Standard",difficulty:"Expert",events:16659,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:207.556,paritySummary:{errors:0,warns:1,resets:0}},{njs:19,offset:-.5,notes:1180,bombs:0,obstacles:57,nps:5.685,length:467,characteristic:"Standard",difficulty:"ExpertPlus",events:16659,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:207.556,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2c01774fdb9c4bcc53df1707ade85cea6f043477.zip",coverURL:"https://cdn.beatsaver.com/2c01774fdb9c4bcc53df1707ade85cea6f043477.jpg",previewURL:"https://cdn.beatsaver.com/2c01774fdb9c4bcc53df1707ade85cea6f043477.mp3"}],createdAt:"2021-01-03T08:08:53.577Z",updatedAt:"2021-01-03T08:08:53.577Z",lastPublishedAt:"2021-01-03T08:08:53.577Z"},{id:"1814",name:"Ghost",description:"???? ???? ? ????? ???? ?????????~\r\n\r\nEDIT: Fixed a double-down note.",uploader:{id:10509,name:"krydar",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fe84",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84fe84?d=retro",type:"SIMPLE"},metadata:{bpm:120,duration:262,songName:"Ghost",songSubName:"Mystery Skulls",songAuthorName:"Kry",levelAuthorName:"Krydar"},stats:{plays:0,downloads:509,upvotes:1012,downvotes:27,score:.9155},uploaded:"2018-09-30T15:03:57Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9430ecb46ce581ac51481d3a61e6fe3356dd4e61",key:"1814",state:"Published",createdAt:"2018-09-30T15:03:57Z",sageScore:5,diffs:[{njs:14,offset:0,notes:847,bombs:0,obstacles:138,nps:3.785,length:447.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2331,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:223.75,paritySummary:{errors:35,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9430ecb46ce581ac51481d3a61e6fe3356dd4e61.zip",coverURL:"https://cdn.beatsaver.com/9430ecb46ce581ac51481d3a61e6fe3356dd4e61.jpg",previewURL:"https://cdn.beatsaver.com/9430ecb46ce581ac51481d3a61e6fe3356dd4e61.mp3"}],createdAt:"2018-09-30T15:03:57Z",updatedAt:"2018-09-30T15:03:57Z",lastPublishedAt:"2018-09-30T15:03:57Z"},{id:"6773",name:"Survive Said The Prophet - MUKANJYO - Vinland Saga OP song",description:"Youtube Preview: https://youtu.be/EHrf40IwTR8",uploader:{id:23751,name:"monteblanco",uniqueSet:!0,hash:"5cff0b7798cc5a672c855ef5",avatar:"https://www.gravatar.com/avatar/5cff0b7798cc5a672c855ef5?d=retro",type:"SIMPLE"},metadata:{bpm:190,duration:188,songName:"Survive Said The Prophet",songSubName:"",songAuthorName:"MUKANJYO",levelAuthorName:"Monteblanco"},stats:{plays:0,downloads:924,upvotes:561,downvotes:7,score:.9154},uploaded:"2019-10-03T00:15:52.884Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"cee8a59f1ec8c8cd4672c5428dda6999777870ff",key:"6773",state:"Published",createdAt:"2019-10-03T00:15:52.884Z",sageScore:5,diffs:[{njs:16,offset:0,notes:975,bombs:8,obstacles:6,nps:5.305,length:582,characteristic:"Standard",difficulty:"ExpertPlus",events:1135,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:183.789,paritySummary:{errors:0,warns:0,resets:1}}],downloadURL:"https://cdn.beatsaver.com/cee8a59f1ec8c8cd4672c5428dda6999777870ff.zip",coverURL:"https://cdn.beatsaver.com/cee8a59f1ec8c8cd4672c5428dda6999777870ff.jpg",previewURL:"https://cdn.beatsaver.com/cee8a59f1ec8c8cd4672c5428dda6999777870ff.mp3"}],createdAt:"2019-10-03T00:15:52.884Z",updatedAt:"2019-10-03T00:15:52.884Z",lastPublishedAt:"2019-10-03T00:15:52.884Z"},{id:"5281",name:"TheFatRat & Phaera - Sunlight",description:"Aww Yeah, it's glitch-hop baby! Colors of the map are Orange(ish) and Dark Blue (similar to the cover image). I had a lot of fun making this map and I hope you enjoy as well!\r\n\r\nPreview: https://www.youtube.com/watch?v=MLAjVcqpBlY",uploader:{id:57657,name:"pixelguymm",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541a8",avatar:"https://cdn.beatsaver.com/avatar/434386941547511818.png",type:"DISCORD"},metadata:{bpm:106,duration:171,songName:"Sunlight",songSubName:"TheFatRat & Phaera",songAuthorName:"Pixelguy",levelAuthorName:"pixelguymm"},stats:{plays:0,downloads:701,upvotes:586,downvotes:8,score:.9154},uploaded:"2019-06-09T06:35:30Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"2d0ba779b5c8217f06a4c1267e8d872d4b46a4bb",key:"5281",state:"Published",createdAt:"2019-06-09T06:35:30Z",sageScore:4,diffs:[{njs:14,offset:0,notes:644,bombs:8,obstacles:36,nps:3.954,length:287.75,characteristic:"Standard",difficulty:"Expert",events:814,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:162.877,paritySummary:{errors:2,warns:2,resets:4}}],downloadURL:"https://cdn.beatsaver.com/2d0ba779b5c8217f06a4c1267e8d872d4b46a4bb.zip",coverURL:"https://cdn.beatsaver.com/2d0ba779b5c8217f06a4c1267e8d872d4b46a4bb.jpg",previewURL:"https://cdn.beatsaver.com/2d0ba779b5c8217f06a4c1267e8d872d4b46a4bb.mp3"}],createdAt:"2019-06-09T06:35:30Z",updatedAt:"2019-06-09T06:35:30Z",lastPublishedAt:"2019-06-09T06:35:30Z"},{id:"553e",name:"Happy Together (V2)",description:"Old map was borked since the last update, so here is a remade version, some patterns changed for more smooth, hard difficulty added.\n\nLights will feel old compare to what I do now",uploader:{id:4235153,name:"skeelie",uniqueSet:!0,hash:"5cff0b7698cc5a672c85507f",avatar:"https://cdn.beatsaver.com/avatar/119467937928052748.png",type:"DISCORD"},metadata:{bpm:121.2,duration:173,songName:"Happy Together",songSubName:"",songAuthorName:"The Turtles",levelAuthorName:"Skeelie"},stats:{plays:0,downloads:3463,upvotes:656,downvotes:11,score:.9153},uploaded:"2019-07-01T16:58:53.827Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"99d1d214dde61f736d5efd47da936476a5bd1e4e",key:"553e",state:"Published",createdAt:"2019-07-01T16:58:53.827Z",sageScore:3,diffs:[{njs:11,offset:0,notes:412,bombs:0,obstacles:0,nps:2.515,length:330.966,characteristic:"Standard",difficulty:"Hard",events:2137,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.845,paritySummary:{errors:32,warns:17,resets:0}},{njs:13,offset:0,notes:580,bombs:0,obstacles:0,nps:3.54,length:330.966,characteristic:"Standard",difficulty:"Expert",events:2137,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.845,paritySummary:{errors:52,warns:26,resets:0}}],downloadURL:"https://cdn.beatsaver.com/99d1d214dde61f736d5efd47da936476a5bd1e4e.zip",coverURL:"https://cdn.beatsaver.com/99d1d214dde61f736d5efd47da936476a5bd1e4e.jpg",previewURL:"https://cdn.beatsaver.com/99d1d214dde61f736d5efd47da936476a5bd1e4e.mp3"}],createdAt:"2019-07-01T16:58:53.827Z",updatedAt:"2019-07-01T16:58:53.827Z",lastPublishedAt:"2019-07-01T16:58:53.827Z"},{id:"540b",name:"Keep The Rave Alive - Jauz x Laser Laser Laser (collab w/Heisenberg)",description:"Requires Mapping Extensions Mod. Do not use Left-Handed/Mirror mode!\n\n128 BPM / 5:00 Runtime\nHard - 488 Notes\nExpert - 794 Notes\nExpert+ - 1157 Notes\n\nGameplay: https://youtu.be/lxfCwV_NZCA",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:128,duration:300,songName:"Keep The Rave Alive",songSubName:"Lazer Lazer Lazer",songAuthorName:"Jauz",levelAuthorName:"Skyler Wallace & Heisenberg"},stats:{plays:0,downloads:2589,upvotes:1571,downvotes:56,score:.9153},uploaded:"2019-06-22T18:12:49.515Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"511bfb7e192faa0615691c4e4e8d21bc162a84cf",key:"540b",state:"Published",createdAt:"2019-06-22T18:12:49.515Z",sageScore:8,diffs:[{njs:12,offset:1,notes:488,bombs:0,obstacles:1105,nps:1.712,length:608,characteristic:"Standard",difficulty:"Hard",events:16325,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:285,paritySummary:{errors:74,warns:77,resets:0}},{njs:16,offset:0,notes:794,bombs:8,obstacles:1105,nps:2.786,length:608,characteristic:"Standard",difficulty:"Expert",events:16325,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:285,paritySummary:{errors:51,warns:62,resets:4}},{njs:16,offset:0,notes:1157,bombs:0,obstacles:1105,nps:4.06,length:608,characteristic:"Standard",difficulty:"ExpertPlus",events:16325,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:285,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:16325,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}},{njs:19,offset:0,notes:0,bombs:0,obstacles:1105,nps:0,length:0,characteristic:"Lightshow",difficulty:"Normal",events:16325,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/511bfb7e192faa0615691c4e4e8d21bc162a84cf.zip",coverURL:"https://cdn.beatsaver.com/511bfb7e192faa0615691c4e4e8d21bc162a84cf.jpg",previewURL:"https://cdn.beatsaver.com/511bfb7e192faa0615691c4e4e8d21bc162a84cf.mp3"}],createdAt:"2019-06-22T18:12:49.515Z",updatedAt:"2019-06-22T18:12:49.515Z",lastPublishedAt:"2019-06-22T18:12:49.515Z"},{id:"321d",name:"Black Bullet [Black Bullet Opening] - fripSide",description:"Black Bullet, the opening song for the anime of the same name by Fripside!",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:155,duration:262,songName:"Black Bullet",songSubName:"FripSide",songAuthorName:"Joetastic",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:1907,upvotes:880,downvotes:21,score:.9152},uploaded:"2019-01-29T15:26:42Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9e25062d995e1e0958b4eba4e7ba56f053e00b2c",key:"321d",state:"Published",createdAt:"2019-01-29T15:26:42Z",sageScore:6,diffs:[{njs:15,offset:0,notes:1252,bombs:0,obstacles:44,nps:4.878,length:663,characteristic:"Standard",difficulty:"Expert",events:3992,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:256.645,paritySummary:{errors:80,warns:87,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9e25062d995e1e0958b4eba4e7ba56f053e00b2c.zip",coverURL:"https://cdn.beatsaver.com/9e25062d995e1e0958b4eba4e7ba56f053e00b2c.jpg",previewURL:"https://cdn.beatsaver.com/9e25062d995e1e0958b4eba4e7ba56f053e00b2c.mp3"}],createdAt:"2019-01-29T15:26:42Z",updatedAt:"2019-01-29T15:26:42Z",lastPublishedAt:"2019-01-29T15:26:42Z"},{id:"1e9b",name:"Du Hast by Rammstein (Kole Edit) [One Saber]",description:"UPDATED 6th november 2018: There were some misdirected notes and some minor flow issues that has now been corrected.You should now be able to get Full Combo much more intuitively! Please download again if you've played the map before as the scoreboards are reset. Sorry for the trouble!\r\n\r\nCan't have enough of Du Hast by Rammstein? Good! Cause here is a One Saber version of that song! If you play the regular (Dual Saber) version of this map then you'll find it familiar to that version.\r\n\r\nSong has been edited (shortened) to be tighter and not too repetitive.\r\n\r\n!! ONE SABER MODE MAP, start it from the ONE SABER MENU for best experience! !!\r\n\r\nPreview:\r\nhttps://youtu.be/wTAUDviTUcQ\r\n\r\nBPM: 125.09\r\nDuration: 2:57\r\nHard, Expert and Expert+ difficulties.\r\n\r\nHard: 331 notes, 0 obstacles, 0 mines\r\nExpert: 502 notes, 0 obstacles, 0 mines\r\nExpert+: 646 notes, 0 obstacles, 0 mines\r\n\r\nThanks to Hen Tie, ManDynasty, Red Magi and Civ for playtesting!\r\n\r\nRegular (Dual Saber) version here:\r\nhttps://beatsaver.com/browse/detail/6707-6348\r\n\r\nEnjoy!",uploader:{id:4285318,name:"kolezan",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fcbb",avatar:"https://cdn.beatsaver.com/avatar/220513618763055106.png",type:"DISCORD"},metadata:{bpm:125,duration:177,songName:"Du Hast (One Saber)",songSubName:"Rammstein",songAuthorName:"Level by Kolezan",levelAuthorName:"Kolezan"},stats:{plays:0,downloads:2751,upvotes:879,downvotes:21,score:.9152},uploaded:"2018-11-06T21:46:57Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e6cb01196d2256586c805df1baf910f8036005a7",key:"1e9b",state:"Published",createdAt:"2018-11-06T21:46:57Z",sageScore:4,diffs:[{njs:12,offset:0,notes:331,bombs:0,obstacles:0,nps:1.96,length:352,characteristic:"OneSaber",difficulty:"Hard",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:40,warns:38,resets:0}},{njs:12,offset:0,notes:501,bombs:0,obstacles:0,nps:2.967,length:352,characteristic:"OneSaber",difficulty:"Expert",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:42,warns:50,resets:0}},{njs:12,offset:0,notes:643,bombs:0,obstacles:0,nps:3.808,length:352,characteristic:"OneSaber",difficulty:"ExpertPlus",events:581,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:168.96,paritySummary:{errors:47,warns:51,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e6cb01196d2256586c805df1baf910f8036005a7.zip",coverURL:"https://cdn.beatsaver.com/e6cb01196d2256586c805df1baf910f8036005a7.jpg",previewURL:"https://cdn.beatsaver.com/e6cb01196d2256586c805df1baf910f8036005a7.mp3"}],createdAt:"2018-11-06T21:46:57Z",updatedAt:"2018-11-06T21:46:57Z",lastPublishedAt:"2018-11-06T21:46:57Z"},{id:"68a4",name:"Paramore - Misery Business",description:"A true story about the hardships of young love, from one of the leading pioneers of alternative rock. The patterns aim to capture the same fiery energy and jumpiness from its prime. Cheers!\n\nINFO:\nBPM: 173.01\nLength: 3:19\nAll Standard Difficulties\n\nCONTRIBUTORS:\nKival Evan - Tester (Expert+)\nHelenCarnate - Tester (Expert)\nCyanSnow - Tester (Expert+)\nLaser Wrath - Tester (All Standard Difficulties)",uploader:{id:4284238,name:"officialMECH",uniqueSet:!0,hash:"5d51c536c53019000612f266",avatar:"https://cdn.beatsaver.com/avatar/386290335401246721.png",type:"DISCORD"},metadata:{bpm:173.01,duration:200,songName:"Misery Business",songSubName:"",songAuthorName:"Paramore",levelAuthorName:"officialMECH"},stats:{plays:0,downloads:5443,upvotes:1673,downvotes:62,score:.9151},uploaded:"2019-10-08T16:59:29.069Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a46e07bb84c22dd1f371df0876fd828195b2c8ef",key:"68a4",state:"Published",createdAt:"2019-10-08T16:59:29.069Z",sageScore:8,diffs:[{njs:11,offset:0,notes:272,bombs:0,obstacles:38,nps:1.406,length:558,characteristic:"Standard",difficulty:"Easy",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:20,warns:13,resets:0}},{njs:11,offset:0,notes:360,bombs:0,obstacles:38,nps:1.86,length:558,characteristic:"Standard",difficulty:"Normal",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:54,warns:45,resets:0}},{njs:12,offset:0,notes:572,bombs:0,obstacles:38,nps:2.956,length:558,characteristic:"Standard",difficulty:"Hard",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:12,warns:8,resets:0}},{njs:15,offset:1,notes:946,bombs:2,obstacles:38,nps:4.889,length:558,characteristic:"Standard",difficulty:"Expert",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:6,warns:0,resets:0}},{njs:18,offset:.5,notes:1240,bombs:4,obstacles:38,nps:6.408,length:558,characteristic:"Standard",difficulty:"ExpertPlus",events:5e3,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:193.515,paritySummary:{errors:2,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a46e07bb84c22dd1f371df0876fd828195b2c8ef.zip",coverURL:"https://cdn.beatsaver.com/a46e07bb84c22dd1f371df0876fd828195b2c8ef.jpg",previewURL:"https://cdn.beatsaver.com/a46e07bb84c22dd1f371df0876fd828195b2c8ef.mp3"}],createdAt:"2019-10-08T16:59:29.069Z",updatedAt:"2019-10-08T16:59:29.069Z",lastPublishedAt:"2019-10-08T16:59:29.069Z"},{id:"225",name:"Clint Eastwood - Gorillaz",description:"Easy/Normal/Hard/Expert - Audio is as loud without clipping I swear! 100% Expert Playthrough: https://bit.ly/2LuFcxq\r\n\r\nHave fun! =D\r\n\r\n- Freeek =)",uploader:{id:47581,name:"freeek",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e8ad",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e8ad?d=retro",type:"SIMPLE"},metadata:{bpm:84,duration:200,songName:"Clint Eastwood",songSubName:"Gorillaz",songAuthorName:"unknow",levelAuthorName:"freeek"},stats:{plays:0,downloads:7585,upvotes:7017,downvotes:404,score:.9151},uploaded:"2018-05-25T20:58:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"507f0e09326d37e09dca08e3c2597f027dbe1940",key:"225",state:"Published",createdAt:"2018-05-25T20:58:36Z",sageScore:6,diffs:[{njs:10,offset:0,notes:297,bombs:0,obstacles:57,nps:1.575,length:264,characteristic:"Standard",difficulty:"Easy",events:1281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.571,paritySummary:{errors:0,warns:0,resets:0}},{njs:10,offset:0,notes:358,bombs:0,obstacles:62,nps:1.906,length:263,characteristic:"Standard",difficulty:"Normal",events:1281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:187.857,paritySummary:{errors:37,warns:18,resets:0}},{njs:10,offset:0,notes:514,bombs:0,obstacles:67,nps:2.721,length:264.5,characteristic:"Standard",difficulty:"Hard",events:1281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:188.929,paritySummary:{errors:65,warns:85,resets:0}},{njs:10,offset:0,notes:681,bombs:0,obstacles:67,nps:3.473,length:274.5,characteristic:"Standard",difficulty:"Expert",events:1281,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:196.071,paritySummary:{errors:97,warns:102,resets:0}}],downloadURL:"https://cdn.beatsaver.com/507f0e09326d37e09dca08e3c2597f027dbe1940.zip",coverURL:"https://cdn.beatsaver.com/507f0e09326d37e09dca08e3c2597f027dbe1940.jpg",previewURL:"https://cdn.beatsaver.com/507f0e09326d37e09dca08e3c2597f027dbe1940.mp3"}],createdAt:"2018-05-25T20:58:36Z",updatedAt:"2018-05-25T20:58:36Z",lastPublishedAt:"2018-05-25T20:58:36Z"},{id:"3dd6",name:"Saeed - Infected Mushroom",description:"Collab between Bomb, Heisenberg, Rexxz and Ruckus\r\nBomb: 0 - 1:32\r\nHeisenberg: 1:32 - 3:03\r\nRexxz: 3:03 - 5:22\r\nRuckus: 5:22 ->",uploader:{id:4284846,name:"rexxz",uniqueSet:!0,hash:"5cff0b7598cc5a672c85311e",avatar:"https://cdn.beatsaver.com/avatar/101849894876106752.png",type:"DISCORD"},metadata:{bpm:145,duration:397,songName:"Saeed",songSubName:"Infected Mushroom",songAuthorName:"Bomb, Heisenberg, Rexxz, Ruckus",levelAuthorName:"Rexxz"},stats:{plays:0,downloads:1406,upvotes:1143,downvotes:34,score:.9151},uploaded:"2019-03-13T20:51:03Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"3f3d4ad451b3671e881776c88a67148326ccc9c5",key:"3dd6",state:"Published",createdAt:"2019-03-13T20:51:03Z",sageScore:6,diffs:[{njs:14,offset:0,notes:821,bombs:0,obstacles:76,nps:2.176,length:912,characteristic:"Standard",difficulty:"Normal",events:22078,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:377.379,paritySummary:{errors:80,warns:20,resets:0}},{njs:15,offset:0,notes:1316,bombs:209,obstacles:43,nps:3.427,length:928,characteristic:"Standard",difficulty:"Expert",events:22039,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:384,paritySummary:{errors:57,warns:88,resets:2}},{njs:18,offset:0,notes:2169,bombs:470,obstacles:61,nps:5.57,length:941,characteristic:"Standard",difficulty:"ExpertPlus",events:22077,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:389.379,paritySummary:{errors:70,warns:68,resets:8}}],downloadURL:"https://cdn.beatsaver.com/3f3d4ad451b3671e881776c88a67148326ccc9c5.zip",coverURL:"https://cdn.beatsaver.com/3f3d4ad451b3671e881776c88a67148326ccc9c5.jpg",previewURL:"https://cdn.beatsaver.com/3f3d4ad451b3671e881776c88a67148326ccc9c5.mp3"}],createdAt:"2019-03-13T20:51:03Z",updatedAt:"2019-03-13T20:51:03Z",lastPublishedAt:"2019-03-13T20:51:03Z"},{id:"e4ae",name:"[Alphabeat - Marshmello Pack] Anne-Marie & Marshmello - FRIENDS",description:"Part of the Marshmello Music Pack - Presented by the Alphabeat Mapping Group.\n\nAlphabeat is back once again! This time, we bring a Marshmello Music Pack - mapped by 3 members of the group over 6 different songs (with a bonus Expert+ only song)!\n\nPreview:\nhttps://www.youtube.com/watch?v=bW00nvk7JgU\n\nTimeweaver: https://beatsaver.com/uploader/5d47d586c5301900060b2f6c\nNitronik.exe: https://beatsaver.com/uploader/5cff0b7798cc5a672c855d84\nFirestrike: https://beatsaver.com/uploader/5cff0b7698cc5a672c85479f\n\nWatch the Marshmello Music Pack Trailer, created by Pixelguy: \nhttps://youtu.be/pzNkJ7tFcHM\n\nAll songs included in this pack:\n- Be Kind (Firestrike)\n- Wolves (Timeweaver)\n- Summer (Firestrike)\n- FRIENDS (Nitronik.exe)\n- Falling To Pieces (Nitronik.exe)\n- Rescue Me (Nitronik.exe)\n- [Bonus Song] Chasing Colors (Timeweaver)\n\nChroma is recommended for the best experience.\nDon't forget to grab the Mello Notes created alongside this pack, by Nitronik.exe: https://modelsaber.com/Bloqs/?id=1599384157&pc\nGet the playlist here: https://bsaber.com/marshmello-pack/",uploader:{id:4284201,name:"nitronikexe",uniqueSet:!0,hash:"5cff0b7798cc5a672c855d84",avatar:"https://cdn.beatsaver.com/avatar/428230049704181760.png",type:"DISCORD"},metadata:{bpm:190,duration:204,songName:"FRIENDS",songSubName:"(ft. Anne Marie)",songAuthorName:"Marshmello",levelAuthorName:"nitronik.exe"},stats:{plays:0,downloads:4733,upvotes:874,downvotes:21,score:.915},uploaded:"2020-09-06T11:06:01.474Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6afef6c5baaf7348d0bb4107c78dc4e59ca511e2",key:"e4ae",state:"Published",createdAt:"2020-09-06T11:06:01.474Z",sageScore:7,diffs:[{njs:10,offset:.5,notes:171,bombs:0,obstacles:0,nps:.849,length:638,characteristic:"Standard",difficulty:"Easy",events:12015,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.474,paritySummary:{errors:169,warns:0,resets:0}},{njs:12,offset:0,notes:345,bombs:0,obstacles:0,nps:1.712,length:638,characteristic:"Standard",difficulty:"Normal",events:12015,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.474,paritySummary:{errors:0,warns:0,resets:0}},{njs:14,offset:-.5,notes:526,bombs:0,obstacles:0,nps:2.611,length:638,characteristic:"Standard",difficulty:"Hard",events:12015,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.474,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:.75,notes:710,bombs:0,obstacles:0,nps:3.516,length:639.5,characteristic:"Standard",difficulty:"Expert",events:12016,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.947,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:.25,notes:930,bombs:12,obstacles:16,nps:4.605,length:639.5,characteristic:"Standard",difficulty:"ExpertPlus",events:12015,chroma:!0,me:!1,ne:!1,cinema:!1,seconds:201.947,paritySummary:{errors:0,warns:3,resets:2}}],downloadURL:"https://cdn.beatsaver.com/6afef6c5baaf7348d0bb4107c78dc4e59ca511e2.zip",coverURL:"https://cdn.beatsaver.com/6afef6c5baaf7348d0bb4107c78dc4e59ca511e2.jpg",previewURL:"https://cdn.beatsaver.com/6afef6c5baaf7348d0bb4107c78dc4e59ca511e2.mp3"}],createdAt:"2020-09-06T11:06:01.474Z",updatedAt:"2020-09-06T11:06:01.474Z",lastPublishedAt:"2020-09-06T11:06:01.474Z"},{id:"ca40",name:"Kings & Queens - Ava Max",description:"A map requested by my sister so she can play it when she borrows my Quest for extended periods of time to practice her Beat Saber skills. ^_^\nShe helped me decide on some of the mapping decisions on this and helped me with play testing so some credit does go to her :D\n\nIf you have any suggestions about the map and would like to get in touch my discord is Edmard#5334\nNuff luv peeps!",uploader:{id:4285633,name:"edmard",uniqueSet:!0,hash:"5cff0b7798cc5a672c856604",avatar:"https://cdn.beatsaver.com/avatar/157188812462620672.png",type:"DISCORD"},metadata:{bpm:130,duration:162,songName:"Kings & Queens",songSubName:"",songAuthorName:"Ava Max",levelAuthorName:"Edmard"},stats:{plays:0,downloads:5634,upvotes:1649,downvotes:61,score:.915},uploaded:"2020-07-29T22:38:29.144Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"41d7c7b621d397db0723b55f75ab2ef6be1891e8",key:"ca40",state:"Published",createdAt:"2020-07-29T22:38:29.144Z",sageScore:3,diffs:[{njs:14,offset:0,notes:424,bombs:0,obstacles:29,nps:2.857,length:321.5,characteristic:"Standard",difficulty:"Hard",events:2338,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.385,paritySummary:{errors:0,warns:0,resets:0},stars:1.71},{njs:15,offset:0,notes:606,bombs:0,obstacles:25,nps:4.084,length:321.5,characteristic:"Standard",difficulty:"Expert",events:2338,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.385,paritySummary:{errors:0,warns:0,resets:0},stars:2.6},{njs:15,offset:-.3,notes:661,bombs:0,obstacles:22,nps:4.455,length:321.5,characteristic:"Standard",difficulty:"ExpertPlus",events:2338,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:148.385,paritySummary:{errors:0,warns:2,resets:0},stars:5.85}],downloadURL:"https://cdn.beatsaver.com/41d7c7b621d397db0723b55f75ab2ef6be1891e8.zip",coverURL:"https://cdn.beatsaver.com/41d7c7b621d397db0723b55f75ab2ef6be1891e8.jpg",previewURL:"https://cdn.beatsaver.com/41d7c7b621d397db0723b55f75ab2ef6be1891e8.mp3"}],createdAt:"2020-07-29T22:38:29.144Z",updatedAt:"2020-07-29T22:38:29.144Z",lastPublishedAt:"2020-07-29T22:38:29.144Z"},{id:"9a35",name:"[Tokyo Machine Pack] Tokyo Machine - PIXEL",description:"3/6\nPart of the Tokyo Machine Pack, a collab between Firestrike, Cyansnow and I.\nMap by me, lights by FireStrike.\n\nFireStrike's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c85479f\nCyanSnow's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c8543ac\n\nPlaylist: https://bsaber.com/tokyo-machine-pack/\n\nCheck out the trailer for the pack here: https://www.youtube.com/watch?v=lStPUnecsD8",uploader:{id:57657,name:"pixelguymm",uniqueSet:!0,hash:"5cff0b7698cc5a672c8541a8",avatar:"https://cdn.beatsaver.com/avatar/434386941547511818.png",type:"DISCORD"},metadata:{bpm:128,duration:201,songName:"PIXEL",songSubName:"",songAuthorName:"Tokyo Machine",levelAuthorName:"FireStrike & Pixel"},stats:{plays:0,downloads:1838,upvotes:650,downvotes:11,score:.915},uploaded:"2020-04-12T18:07:43.267Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b5d3d5f97d34fc85c0a2cf694631bdf125229304",key:"9a35",state:"Published",createdAt:"2020-04-12T18:07:43.267Z",sageScore:4,diffs:[{njs:18,offset:-.3,notes:1172,bombs:54,obstacles:4,nps:6.016,length:415.625,characteristic:"Standard",difficulty:"ExpertPlus",events:4372,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:194.824,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/b5d3d5f97d34fc85c0a2cf694631bdf125229304.zip",coverURL:"https://cdn.beatsaver.com/b5d3d5f97d34fc85c0a2cf694631bdf125229304.jpg",previewURL:"https://cdn.beatsaver.com/b5d3d5f97d34fc85c0a2cf694631bdf125229304.mp3"}],createdAt:"2020-04-12T18:07:43.267Z",updatedAt:"2020-04-12T18:07:43.267Z",lastPublishedAt:"2020-04-12T18:07:43.267Z"},{id:"c1d",name:"Good Times Roll",description:"Be sure to check out the other difficulties! There were certain patterns that I loved that only worked for some of the difficulties, and they're all super fun! Anyone playing Easy will find that Normal teaches you how to play harder maps while being very forgiving.\r\n\r\nAlso, I'm going on hiatus! This will be my last map for a good while since I'm back in school and also working full time. I'll still play here and there and maybe try to map a bit, but I likely won't release anything for several months. Hopefully this map will keep people satisfied for a while ;)\r\n\r\nhttps://youtu.be/vCbgECLTxpU",uploader:{id:44595,name:"awfulnaut",uniqueSet:!0,hash:"5cff0b7398cc5a672c84edac",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84edac?d=retro",type:"SIMPLE"},metadata:{bpm:200,duration:146,songName:"Good Times Roll",songSubName:"Griz x Big Gigantic",songAuthorName:"Awfulnaut",levelAuthorName:"awfulnaut"},stats:{plays:0,downloads:6704,upvotes:3141,downvotes:149,score:.915},uploaded:"2018-07-27T15:47:05Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"f22061809c798178786ca1b6e61b10ccbcbe8d28",key:"c1d",state:"Published",createdAt:"2018-07-27T15:47:05Z",sageScore:4,diffs:[{njs:10,offset:0,notes:356,bombs:8,obstacles:11,nps:2.566,length:462.5,characteristic:"Standard",difficulty:"Normal",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:95,warns:15,resets:4},stars:1.45},{njs:10,offset:0,notes:469,bombs:8,obstacles:11,nps:3.38,length:462.5,characteristic:"Standard",difficulty:"Hard",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:44,warns:29,resets:1},stars:1.88},{njs:10,offset:0,notes:519,bombs:0,obstacles:12,nps:3.741,length:462.5,characteristic:"Standard",difficulty:"Expert",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:24,warns:41,resets:0},stars:2.25},{njs:10,offset:0,notes:634,bombs:0,obstacles:12,nps:4.569,length:462.5,characteristic:"Standard",difficulty:"ExpertPlus",events:1208,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:138.75,paritySummary:{errors:34,warns:48,resets:0},stars:2.74}],downloadURL:"https://cdn.beatsaver.com/f22061809c798178786ca1b6e61b10ccbcbe8d28.zip",coverURL:"https://cdn.beatsaver.com/f22061809c798178786ca1b6e61b10ccbcbe8d28.jpg",previewURL:"https://cdn.beatsaver.com/f22061809c798178786ca1b6e61b10ccbcbe8d28.mp3"}],createdAt:"2018-07-27T15:47:05Z",updatedAt:"2018-07-27T15:47:05Z",lastPublishedAt:"2018-07-27T15:47:05Z"},{id:"e7ce",name:"[NoodleGames Vol.2] Rivers in the Desert - Persona 5",description:"The Ramen Noodle group is back again to bring you a map pack full of our favorite video game soundtracks and game-inspired music!\n\nHere's one of my 4 Persona maps for the pack! Hope you enjoy.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:130,duration:224,songName:"Rivers In the Desert",songSubName:"(Short Ver.)",songAuthorName:"Shoji Meguro",levelAuthorName:"Ab"},stats:{plays:0,downloads:3270,upvotes:741,downvotes:15,score:.9149},uploaded:"2020-09-10T19:20:12.870Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"6dd531f3920735b2b1b64f39442fcb753b4a52a7",key:"e7ce",state:"Published",createdAt:"2020-09-10T19:20:12.870Z",sageScore:4,diffs:[{njs:16,offset:-.25,notes:760,bombs:0,obstacles:0,nps:3.441,length:478.5,characteristic:"Standard",difficulty:"Expert",events:941,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.846,paritySummary:{errors:2,warns:2,resets:0}},{njs:17,offset:-.35,notes:824,bombs:0,obstacles:0,nps:3.731,length:478.5,characteristic:"Standard",difficulty:"ExpertPlus",events:946,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.846,paritySummary:{errors:2,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/6dd531f3920735b2b1b64f39442fcb753b4a52a7.zip",coverURL:"https://cdn.beatsaver.com/6dd531f3920735b2b1b64f39442fcb753b4a52a7.jpg",previewURL:"https://cdn.beatsaver.com/6dd531f3920735b2b1b64f39442fcb753b4a52a7.mp3"}],createdAt:"2020-09-10T19:20:12.870Z",updatedAt:"2020-09-10T19:20:12.870Z",lastPublishedAt:"2020-09-10T19:20:12.870Z"},{id:"d0be",name:"Bohemian Rhapsody - Queen",description:"Honestly, I never really liked that other version. And I'm sure some people would agree, so since it seemed like no one else was going fix it, I went and mapped it myself.\r\nEnjoy.\r\n\r\nP.S. - If kingpeuche ever plays this, good job man. Bohemian Rhapsody isn't an easy song to map, so I have some genuine respect for you.\r\n\r\nPlay kingpeuche's version(s) here: \r\nhttps://beatsaver.com/beatmap/4a6\r\nhttps://beatsaver.com/beatmap/77c\r\n\r\nSong Info:\r\nhttps://en.wikipedia.org/wiki/Bohemian_Rhapsody",uploader:{id:4284694,name:"jokidum",uniqueSet:!0,hash:"5e15518d47f1600006e912cc",avatar:"https://cdn.beatsaver.com/avatar/494282373094047745.png",type:"DISCORD"},metadata:{bpm:120,duration:356,songName:"Bohemian Rhapsody",songSubName:"- Queen",songAuthorName:"Queen",levelAuthorName:"Jokidum"},stats:{plays:0,downloads:8506,upvotes:1666,downvotes:62,score:.9149},uploaded:"2020-08-07T20:00:07.052Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d19b4abf7d83d2882a5bf1f2bdc3b03491ef3eaf",key:"d0be",state:"Published",createdAt:"2020-08-07T20:00:07.052Z",sageScore:2,diffs:[{njs:12,offset:0,notes:1100,bombs:0,obstacles:0,nps:3.303,length:666,characteristic:"Standard",difficulty:"Expert",events:2875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:333,paritySummary:{errors:4,warns:2,resets:0}},{njs:16,offset:0,notes:0,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Lightshow",difficulty:"Easy",events:2875,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d19b4abf7d83d2882a5bf1f2bdc3b03491ef3eaf.zip",coverURL:"https://cdn.beatsaver.com/d19b4abf7d83d2882a5bf1f2bdc3b03491ef3eaf.jpg",previewURL:"https://cdn.beatsaver.com/d19b4abf7d83d2882a5bf1f2bdc3b03491ef3eaf.mp3"}],createdAt:"2020-08-07T20:00:07.052Z",updatedAt:"2020-08-07T20:00:07.052Z",lastPublishedAt:"2020-08-07T20:00:07.052Z"},{id:"96ff",name:"Imagine Dragons - Warriors (2020 ReMap)",description:"Two years ago on the 24th July 2018 I released my first beat saber map of Warriors by Imagine Dragons. Well now its back! and its BIGGER, LOUDER and more EPIC than ever! \n\nThe map was completely remade from the ground up, so new audio, new lights and completely new difficulties. Don't worry though, the old warriors will still remain on beatsaver just in case anyone prefers playing it.\n\nThanks to Strofan and Layanmeta for playtesting :P\n\nMap preview: https://youtu.be/pdb5F0Q1cwo",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:78,duration:172,songName:"Warriors (2020 ReMap)",songSubName:"",songAuthorName:"Imagine Dragons",levelAuthorName:"Stumi"},stats:{plays:0,downloads:7111,upvotes:1861,downvotes:73,score:.9149},uploaded:"2020-04-03T16:29:45.360Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8ee2cc6242db4d138e620a347e3a2904f2a5b902",key:"96ff",state:"Published",createdAt:"2020-04-03T16:29:45.360Z",sageScore:5,diffs:[{njs:10,offset:0,notes:169,bombs:0,obstacles:67,nps:1.036,length:212,characteristic:"Standard",difficulty:"Easy",events:2808,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.077,paritySummary:{errors:32,warns:9,resets:0}},{njs:11,offset:0,notes:317,bombs:0,obstacles:82,nps:1.944,length:212,characteristic:"Standard",difficulty:"Normal",events:2808,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.077,paritySummary:{errors:52,warns:18,resets:0}},{njs:12,offset:.4,notes:506,bombs:4,obstacles:97,nps:3.103,length:212,characteristic:"Standard",difficulty:"Hard",events:2807,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.077,paritySummary:{errors:29,warns:11,resets:0}},{njs:16,offset:.2,notes:673,bombs:64,obstacles:130,nps:4.127,length:212,characteristic:"Standard",difficulty:"Expert",events:2808,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:163.077,paritySummary:{errors:20,warns:40,resets:11}}],downloadURL:"https://cdn.beatsaver.com/8ee2cc6242db4d138e620a347e3a2904f2a5b902.zip",coverURL:"https://cdn.beatsaver.com/8ee2cc6242db4d138e620a347e3a2904f2a5b902.jpg",previewURL:"https://cdn.beatsaver.com/8ee2cc6242db4d138e620a347e3a2904f2a5b902.mp3"}],createdAt:"2020-04-03T16:29:45.360Z",updatedAt:"2020-04-03T16:29:45.360Z",lastPublishedAt:"2020-04-03T16:29:45.360Z"},{id:"8f65",name:"Jump in the Line - Harry Belafonte",description:"My parents were big Harry Belafonte fans, and I grew up listening to this 1961 hit, Jump in the Line. In 1988, this song was a major part of the 1988 Michael Keaton classic, Beetlejuice. Who can forget Winona Ryder dancing in the air? Now you can dance along with her while slicing flying blocks!\n\nFully mapped Easy, Normal, Hard, Expert, Expert Plus Standard, and Expert Plus 360.\n\nThis song is part of my new song pack collaboration with MajorPickle: PickleTech Goes to the Movies - The 1980s.\n\nhttps://youtu.be/cbLl1ofeBZY",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:115,duration:223,songName:"Jump in the Line",songSubName:"",songAuthorName:"Harry Belafonte",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:2510,upvotes:830,downvotes:19,score:.9149},uploaded:"2020-03-13T04:10:43.592Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ba3e5d8bca161ef9e9f70383b6c33f83ecf8998a",key:"8f65",state:"Published",createdAt:"2020-03-13T04:10:43.592Z",sageScore:5,diffs:[{njs:8,offset:0,notes:274,bombs:0,obstacles:2,nps:1.256,length:418,characteristic:"Standard",difficulty:"Easy",events:919,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.087,paritySummary:{errors:67,warns:33,resets:0}},{njs:10,offset:0,notes:407,bombs:0,obstacles:2,nps:1.864,length:418.5,characteristic:"Standard",difficulty:"Normal",events:919,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:71,warns:55,resets:0}},{njs:12,offset:.5,notes:634,bombs:5,obstacles:2,nps:2.904,length:418.5,characteristic:"Standard",difficulty:"Hard",events:919,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:47,warns:51,resets:2}},{njs:12,offset:.5,notes:793,bombs:0,obstacles:2,nps:3.632,length:418.5,characteristic:"Standard",difficulty:"Expert",events:919,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:35,warns:46,resets:0}},{njs:13,offset:.5,notes:920,bombs:0,obstacles:2,nps:4.213,length:418.5,characteristic:"Standard",difficulty:"ExpertPlus",events:920,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:69,warns:77,resets:0}},{njs:13,offset:.5,notes:793,bombs:0,obstacles:2,nps:3.632,length:418.5,characteristic:"360Degree",difficulty:"ExpertPlus",events:1125,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.348,paritySummary:{errors:35,warns:46,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ba3e5d8bca161ef9e9f70383b6c33f83ecf8998a.zip",coverURL:"https://cdn.beatsaver.com/ba3e5d8bca161ef9e9f70383b6c33f83ecf8998a.jpg",previewURL:"https://cdn.beatsaver.com/ba3e5d8bca161ef9e9f70383b6c33f83ecf8998a.mp3"}],createdAt:"2020-03-13T04:10:43.592Z",updatedAt:"2020-03-13T04:10:43.592Z",lastPublishedAt:"2020-03-13T04:10:43.592Z"},{id:"8e35",name:"Beat It [Punk Goes Pop Vol.2] - Fall Out Boy ft. John Mayer",description:"The first song in my up and coming Punk Goes Pop Volume 2 playlist! A punk rock cover of Beat It as covered by Fall Out Boy featuring John Mayer. Original song by Michael Jackson.",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:150,duration:227,songName:"Beat It",songSubName:"ft. John Mayer",songAuthorName:"Fall Out Boy",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:4056,upvotes:935,downvotes:24,score:.9149},uploaded:"2020-03-08T05:50:10.166Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"88474a324602552647553aa9533596c7cd882c60",key:"8e35",state:"Published",createdAt:"2020-03-08T05:50:10.166Z",sageScore:5,diffs:[{njs:10,offset:0,notes:396,bombs:0,obstacles:8,nps:1.827,length:542,characteristic:"Standard",difficulty:"Easy",events:7559,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.8,paritySummary:{errors:44,warns:39,resets:0}},{njs:12,offset:0,notes:531,bombs:0,obstacles:8,nps:2.405,length:552,characteristic:"Standard",difficulty:"Normal",events:7559,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.8,paritySummary:{errors:43,warns:55,resets:0}},{njs:13.5,offset:0,notes:863,bombs:0,obstacles:6,nps:3.909,length:552,characteristic:"Standard",difficulty:"Hard",events:7559,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.8,paritySummary:{errors:50,warns:49,resets:0}},{njs:15,offset:0,notes:878,bombs:0,obstacles:6,nps:3.976,length:552,characteristic:"Standard",difficulty:"Expert",events:7559,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.8,paritySummary:{errors:47,warns:54,resets:0}}],downloadURL:"https://cdn.beatsaver.com/88474a324602552647553aa9533596c7cd882c60.zip",coverURL:"https://cdn.beatsaver.com/88474a324602552647553aa9533596c7cd882c60.jpg",previewURL:"https://cdn.beatsaver.com/88474a324602552647553aa9533596c7cd882c60.mp3"}],createdAt:"2020-03-08T05:50:10.166Z",updatedAt:"2020-03-08T05:50:10.166Z",lastPublishedAt:"2020-03-08T05:50:10.166Z"},{id:"7395",name:"Bruh Sound Effect #2",description:"tried to get it ranked\nthey said common sense to me\nquite a bruh moment\n\nhaiku written by yours truly (its a true story btw)",uploader:{id:4285820,name:"ezconfirmed",uniqueSet:!0,hash:"5d6444b8589aee0006ff76ad",avatar:"https://cdn.beatsaver.com/avatar/343415744324960256.png",type:"DISCORD"},metadata:{bpm:120,duration:4,songName:"Bruh Sound Effect #2",songSubName:"",songAuthorName:"Jame Benedict",levelAuthorName:"eZconfirmed"},stats:{plays:0,downloads:908,upvotes:807,downvotes:18,score:.9149},uploaded:"2019-12-03T19:19:01.005Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1c30514852ae45a9651d476fe748d2c9926facfc",key:"7395",state:"Published",createdAt:"2019-12-03T19:19:01.005Z",sageScore:1,diffs:[{njs:16,offset:0,notes:4,bombs:0,obstacles:0,nps:0,length:0,characteristic:"Standard",difficulty:"Normal",events:10,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:0,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1c30514852ae45a9651d476fe748d2c9926facfc.zip",coverURL:"https://cdn.beatsaver.com/1c30514852ae45a9651d476fe748d2c9926facfc.jpg",previewURL:"https://cdn.beatsaver.com/1c30514852ae45a9651d476fe748d2c9926facfc.mp3"}],createdAt:"2019-12-03T19:19:01.005Z",updatedAt:"2019-12-03T19:19:01.005Z",lastPublishedAt:"2019-12-03T19:19:01.005Z"},{id:"6361",name:"Choke - I DONT KNOW HOW BUT THEY FOUND ME",description:"Here's another fun and bouncy song! The lyrics are a bit...darker than the music would have you suggest though. So bite your tongue, and choke yourself to sleep.\n\nBPM: 120\nNPS: N - 2.45; H - 3.14; Ex - 3.96\nNotes: N - 482; H - 617; Ex - 778\nWalls: N - 28; H - 20; Ex - 17\nBombs: None!\n\nThanks to helencarnate and Checkthepan for testplaying!",uploader:{id:4285188,name:"fruhead",uniqueSet:!0,hash:"5cff0b7598cc5a672c852683",avatar:"https://cdn.beatsaver.com/avatar/174000100413145090.png",type:"DISCORD"},metadata:{bpm:120.251,duration:196,songName:"Choke",songSubName:"",songAuthorName:"I DONT KNOW HOW BUT THEY FOUND ME",levelAuthorName:"fruhead"},stats:{plays:0,downloads:1052,upvotes:388,downvotes:1,score:.9149},uploaded:"2019-09-14T17:56:33.555Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"ea073ec1320fd83c3b9c5e5be5fe2cb58e846b3f",key:"6361",state:"Published",createdAt:"2019-09-14T17:56:33.555Z",sageScore:6,diffs:[{njs:12,offset:0,notes:482,bombs:0,obstacles:28,nps:2.518,length:383.667,characteristic:"Standard",difficulty:"Normal",events:4223,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.433,paritySummary:{errors:8,warns:0,resets:0}},{njs:14,offset:0,notes:617,bombs:0,obstacles:20,nps:3.223,length:383.667,characteristic:"Standard",difficulty:"Hard",events:4223,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.433,paritySummary:{errors:3,warns:0,resets:0}},{njs:16,offset:0,notes:778,bombs:0,obstacles:17,nps:4.064,length:383.667,characteristic:"Standard",difficulty:"Expert",events:4223,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:191.433,paritySummary:{errors:4,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/ea073ec1320fd83c3b9c5e5be5fe2cb58e846b3f.zip",coverURL:"https://cdn.beatsaver.com/ea073ec1320fd83c3b9c5e5be5fe2cb58e846b3f.jpg",previewURL:"https://cdn.beatsaver.com/ea073ec1320fd83c3b9c5e5be5fe2cb58e846b3f.mp3"}],createdAt:"2019-09-14T17:56:33.555Z",updatedAt:"2019-09-14T17:56:33.555Z",lastPublishedAt:"2019-09-14T17:56:33.555Z"},{id:"8600",name:"Tom Sawyer - Rush",description:"My tribute to Rush.",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:88,duration:273,songName:"Tom Sawyer",songSubName:"",songAuthorName:"Rush",levelAuthorName:"Ris"},stats:{plays:0,downloads:2010,upvotes:806,downvotes:18,score:.9148},uploaded:"2020-02-11T03:37:38.994Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"1b39e3091cda17c7d35db7707e1f673a5e8ceb66",key:"8600",state:"Published",createdAt:"2020-02-11T03:37:38.994Z",sageScore:5,diffs:[{njs:10,offset:.5,notes:386,bombs:0,obstacles:0,nps:1.456,length:388.702,characteristic:"Standard",difficulty:"Normal",events:662,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.024,paritySummary:{errors:50,warns:42,resets:0}},{njs:12,offset:0,notes:748,bombs:0,obstacles:0,nps:2.822,length:388.702,characteristic:"Standard",difficulty:"Hard",events:662,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.024,paritySummary:{errors:74,warns:89,resets:0}},{njs:16,offset:.25,notes:1055,bombs:30,obstacles:0,nps:3.981,length:388.702,characteristic:"Standard",difficulty:"Expert",events:662,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:265.024,paritySummary:{errors:75,warns:86,resets:0}}],downloadURL:"https://cdn.beatsaver.com/1b39e3091cda17c7d35db7707e1f673a5e8ceb66.zip",coverURL:"https://cdn.beatsaver.com/1b39e3091cda17c7d35db7707e1f673a5e8ceb66.jpg",previewURL:"https://cdn.beatsaver.com/1b39e3091cda17c7d35db7707e1f673a5e8ceb66.mp3"}],createdAt:"2020-02-11T03:37:38.994Z",updatedAt:"2020-02-11T03:37:38.994Z",lastPublishedAt:"2020-02-11T03:37:38.994Z"},{id:"55d1",name:"Short Skirt Long Jacket - Cake",description:"Swing along with Cake's 2001 hit, Short Skirt Long Jacket. Even if you're not a Cake fan, you might remember this as the theme song for the TV show Chuck.\n\nFully mapped Easy, Normal, Hard, and Expert. Quest friendly!\n\nhttps://www.youtube.com/watch?v=1RKRbWus-qM",uploader:{id:78593,name:"techbutterfly",uniqueSet:!0,hash:"5cff0b7798cc5a672c8566f7",avatar:"https://cdn.beatsaver.com/avatar/527111497617506304.png",type:"DISCORD"},metadata:{bpm:120,duration:203,songName:"Short Skirt Long Jacket",songSubName:"",songAuthorName:"Cake",levelAuthorName:"TechButterfly"},stats:{plays:0,downloads:1700,upvotes:671,downvotes:12,score:.9148},uploaded:"2019-07-07T01:49:57.642Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"20b9326bd71db4454aba08df06b035ea536322a9",key:"55d1",state:"Published",createdAt:"2019-07-07T01:49:57.642Z",sageScore:5,diffs:[{njs:12,offset:0,notes:234,bombs:0,obstacles:4,nps:1.188,length:394,characteristic:"Standard",difficulty:"Easy",events:6191,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197,paritySummary:{errors:69,warns:25,resets:0}},{njs:13,offset:0,notes:358,bombs:0,obstacles:4,nps:1.815,length:394.5,characteristic:"Standard",difficulty:"Normal",events:6191,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:90,warns:48,resets:0}},{njs:15,offset:0,notes:562,bombs:0,obstacles:44,nps:2.849,length:394.5,characteristic:"Standard",difficulty:"Hard",events:6191,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:31,warns:49,resets:0}},{njs:17,offset:0,notes:669,bombs:0,obstacles:32,nps:3.392,length:394.5,characteristic:"Standard",difficulty:"Expert",events:6195,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.25,paritySummary:{errors:45,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/20b9326bd71db4454aba08df06b035ea536322a9.zip",coverURL:"https://cdn.beatsaver.com/20b9326bd71db4454aba08df06b035ea536322a9.jpg",previewURL:"https://cdn.beatsaver.com/20b9326bd71db4454aba08df06b035ea536322a9.mp3"}],createdAt:"2019-07-07T01:49:57.642Z",updatedAt:"2019-07-07T01:49:57.642Z",lastPublishedAt:"2019-07-07T01:49:57.642Z"},{id:"4a08",name:"Attack on Titan OP 5 | Shoukei to Shikabane no Michi | Shingeki no Kyojin OP 5| Mapped by Ab",description:"I offer all difficulties except Easy here. But Normal is pretty easy.\r\nSeizure warning I guess.",uploader:{id:15368,name:"theab",uniqueSet:!0,hash:"5cff0b7698cc5a672c853a14",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c853a14?d=retro",type:"SIMPLE"},metadata:{bpm:178,duration:89,songName:"Attack on Titan OP5 (Shoukei to Shikabane no Michi)",songSubName:"Linked Horizon",songAuthorName:"Ab",levelAuthorName:"TheAb"},stats:{plays:0,downloads:2844,upvotes:891,downvotes:22,score:.9148},uploaded:"2019-05-02T20:07:56Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"922afca4bfe670e6ebff75c18245035744193d22",key:"4a08",state:"Published",createdAt:"2019-05-02T20:07:56Z",sageScore:3,diffs:[{njs:10,offset:0,notes:146,bombs:5,obstacles:5,nps:1.685,length:257,characteristic:"Standard",difficulty:"Normal",events:5631,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:86.629,paritySummary:{errors:62,warns:1,resets:2}},{njs:13,offset:0,notes:238,bombs:12,obstacles:7,nps:2.747,length:257,characteristic:"Standard",difficulty:"Hard",events:5631,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:86.629,paritySummary:{errors:30,warns:9,resets:2}},{njs:15,offset:1,notes:373,bombs:4,obstacles:6,nps:4.306,length:257,characteristic:"Standard",difficulty:"Expert",events:5631,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:86.629,paritySummary:{errors:19,warns:20,resets:2}},{njs:18,offset:0,notes:555,bombs:1,obstacles:3,nps:6.599,length:249.5,characteristic:"Standard",difficulty:"ExpertPlus",events:5634,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:84.101,paritySummary:{errors:29,warns:39,resets:0}}],downloadURL:"https://cdn.beatsaver.com/922afca4bfe670e6ebff75c18245035744193d22.zip",coverURL:"https://cdn.beatsaver.com/922afca4bfe670e6ebff75c18245035744193d22.jpg",previewURL:"https://cdn.beatsaver.com/922afca4bfe670e6ebff75c18245035744193d22.mp3"}],createdAt:"2019-05-02T20:07:56Z",updatedAt:"2019-05-02T20:07:56Z",lastPublishedAt:"2019-05-02T20:07:56Z"},{id:"487c",name:"Don't Stop Me Now - Queen",description:"Huge thanks to WhipStickGoStop for the full combo vid!\r\nhttps://www.youtube.com/watch?v=RPDvDY2HT58\r\n\r\nPlaytesters <3 WhipStickGoStop, XORoseGold, MozzVR, Izzake",uploader:{id:4285169,name:"ryger",uniqueSet:!0,hash:"5cff0b7798cc5a672c855a42",avatar:"https://cdn.beatsaver.com/avatar/169266024502263808.png",type:"DISCORD"},metadata:{bpm:120,duration:214,songName:"Don't Stop Me Now",songSubName:"Queen",songAuthorName:"Ryger",levelAuthorName:"Ryger"},stats:{plays:0,downloads:5041,upvotes:1291,downvotes:42,score:.9148},uploaded:"2019-04-26T16:28:36Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"9db67df13260c4715d33068e3982071ca6e3e815",key:"487c",state:"Published",createdAt:"2019-04-26T16:28:36Z",sageScore:6,diffs:[{njs:12,offset:0,notes:734,bombs:0,obstacles:1,nps:3.677,length:519.002,characteristic:"Standard",difficulty:"ExpertPlus",events:3998,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:259.501,paritySummary:{errors:71,warns:56,resets:0}}],downloadURL:"https://cdn.beatsaver.com/9db67df13260c4715d33068e3982071ca6e3e815.zip",coverURL:"https://cdn.beatsaver.com/9db67df13260c4715d33068e3982071ca6e3e815.jpg",previewURL:"https://cdn.beatsaver.com/9db67df13260c4715d33068e3982071ca6e3e815.mp3"}],createdAt:"2019-04-26T16:28:36Z",updatedAt:"2019-04-26T16:28:36Z",lastPublishedAt:"2019-04-26T16:28:36Z"},{id:"243c",name:"Ocarina of Time Medley [Smash Bros Map Pack]",description:"by Michiko Naruke\r\n\r\nPart of the Smash Bros map pack!\r\n\r\nVideo: https://youtu.be/lw7EN7Xu-9c",uploader:{id:39365,name:"todokete",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ee70",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84ee70?d=retro",type:"SIMPLE"},metadata:{bpm:145,duration:114,songName:"Ocarina of Time Medley",songSubName:"Michiko Naruke",songAuthorName:"Todokete",levelAuthorName:"todokete"},stats:{plays:0,downloads:4995,upvotes:2238,downvotes:95,score:.9148},uploaded:"2018-12-07T00:16:02Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"00b539e86ea3f0b1e966544a297fb4942e499e6f",key:"243c",state:"Published",createdAt:"2018-12-07T00:16:02Z",sageScore:5,diffs:[{njs:11,offset:0,notes:239,bombs:0,obstacles:0,nps:2.179,length:265,characteristic:"Standard",difficulty:"Hard",events:882,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:109.655,paritySummary:{errors:34,warns:8,resets:0},stars:1.33},{njs:14,offset:0,notes:330,bombs:0,obstacles:0,nps:3.008,length:265,characteristic:"Standard",difficulty:"Expert",events:882,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:109.655,paritySummary:{errors:37,warns:37,resets:0},stars:2.97}],downloadURL:"https://cdn.beatsaver.com/00b539e86ea3f0b1e966544a297fb4942e499e6f.zip",coverURL:"https://cdn.beatsaver.com/00b539e86ea3f0b1e966544a297fb4942e499e6f.jpg",previewURL:"https://cdn.beatsaver.com/00b539e86ea3f0b1e966544a297fb4942e499e6f.mp3"}],createdAt:"2018-12-07T00:16:02Z",updatedAt:"2018-12-07T00:16:02Z",lastPublishedAt:"2018-12-07T00:16:02Z"},{id:"115c2",name:"[Wall Map] Alan Walker - Darkside (feat. Au/Ra and Tomine Harket)",description:"-FALL INTO THE DARKSIDE-\n\nMy first big wall map to feature ne 1.2 pogger, be prepared for a long load time and possible lag spikes.\nThanks to Rizthesnuggie and Liams2005 for contributing their maps and for putting up with my shit throughout this :)\nThanks to Krueger for answering all my programming questions.\n\nKrueger's Beatsaber Vids: https://www.youtube.com/watch?v=Q0hNfhk4Ngs&t=142s\nPlaythrough: https://www.youtube.com/watch?v=9BqzyBwFPE4\n\nmy ne tool: https://github.com/thelightdesigner/ScuffedWalls/releases/tag/v0.5.0-beta\n\nRequirements:\nNoodle Extensions\nChroma\nCustom JSON Data",uploader:{id:73008,name:"thelightdesigner",uniqueSet:!0,hash:"5cff0b7798cc5a672c85627a",avatar:"https://cdn.beatsaver.com/avatar/480555157952659489.png",type:"DISCORD"},metadata:{bpm:170,duration:178,songName:"Darkside",songSubName:"(ft. Au/Ra & Tomine Harket)",songAuthorName:"Alan Walker",levelAuthorName:"Liam, Riz & KyleT"},stats:{plays:0,downloads:3946,upvotes:1365,downvotes:46,score:.9147},uploaded:"2020-11-27T05:08:50.986Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"713e301fc4f774edf4ea1001a19dd5bf7e3f4ce6",key:"115c2",state:"Published",createdAt:"2020-11-27T05:08:50.986Z",sageScore:1,diffs:[{njs:16,offset:0,notes:500,bombs:24,obstacles:65952,nps:2.905,length:487.667,characteristic:"Standard",difficulty:"Hard",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:172.118,paritySummary:{errors:0,warns:0,resets:0}},{njs:17,offset:0,notes:610,bombs:36,obstacles:65952,nps:3.571,length:484,characteristic:"Standard",difficulty:"Expert",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:170.824,paritySummary:{errors:1,warns:0,resets:12}},{njs:18,offset:0,notes:866,bombs:0,obstacles:65952,nps:5.07,length:484,characteristic:"Standard",difficulty:"ExpertPlus",events:1,chroma:!0,me:!1,ne:!0,cinema:!1,seconds:170.824,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/713e301fc4f774edf4ea1001a19dd5bf7e3f4ce6.zip",coverURL:"https://cdn.beatsaver.com/713e301fc4f774edf4ea1001a19dd5bf7e3f4ce6.jpg",previewURL:"https://cdn.beatsaver.com/713e301fc4f774edf4ea1001a19dd5bf7e3f4ce6.mp3"}],createdAt:"2020-11-27T05:08:50.986Z",updatedAt:"2020-11-27T05:08:50.986Z",lastPublishedAt:"2020-11-27T05:08:50.986Z"},{id:"57cb",name:"CAN CAN WORLD",description:"Twitter: https://twitter.com/Dack731",uploader:{id:4285250,name:"dack",uniqueSet:!0,hash:"5cff0b7598cc5a672c852c6f",avatar:"https://cdn.beatsaver.com/avatar/297344689798119424.png",type:"DISCORD"},metadata:{bpm:158,duration:297,songName:"CAN CAN WORLD",songSubName:"",songAuthorName:"MAKKERONI",levelAuthorName:"Dack"},stats:{plays:0,downloads:813,upvotes:523,downvotes:6,score:.9147},uploaded:"2019-07-18T23:50:08.241Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d2dab61784b612b9b807e127260a81ed974315af",key:"57cb",state:"Published",createdAt:"2019-07-18T23:50:08.241Z",sageScore:3,diffs:[{njs:12,offset:0,notes:531,bombs:0,obstacles:114,nps:1.828,length:765,characteristic:"Standard",difficulty:"Normal",events:1776,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:290.506,paritySummary:{errors:14,warns:18,resets:0}},{njs:13,offset:0,notes:806,bombs:0,obstacles:114,nps:2.774,length:765,characteristic:"Standard",difficulty:"Hard",events:1776,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:290.506,paritySummary:{errors:12,warns:11,resets:0}},{njs:14,offset:0,notes:1150,bombs:0,obstacles:110,nps:3.959,length:765,characteristic:"Standard",difficulty:"Expert",events:1776,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:290.506,paritySummary:{errors:5,warns:9,resets:0}},{njs:17,offset:0,notes:1399,bombs:8,obstacles:114,nps:4.816,length:765,characteristic:"Standard",difficulty:"ExpertPlus",events:1784,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:290.506,paritySummary:{errors:31,warns:28,resets:2}}],downloadURL:"https://cdn.beatsaver.com/d2dab61784b612b9b807e127260a81ed974315af.zip",coverURL:"https://cdn.beatsaver.com/d2dab61784b612b9b807e127260a81ed974315af.jpg",previewURL:"https://cdn.beatsaver.com/d2dab61784b612b9b807e127260a81ed974315af.mp3"}],createdAt:"2019-07-18T23:50:08.241Z",updatedAt:"2019-07-18T23:50:08.241Z",lastPublishedAt:"2019-07-18T23:50:08.241Z"},{id:"66f",name:"This Is Gospel - Panic! At The Disco",description:"Expert - Hard - Normal Charts\nLighting Events\n\nhttps://twitter.com/TheDownyCat\nhttps://www.twitch.tv/downycat\nhttps://streamlabs.com/downycat/tip",uploader:{id:4285982,name:"downycat",uniqueSet:!0,hash:"5cff0b7398cc5a672c84ede5",avatar:"https://cdn.beatsaver.com/avatar/173538829888782336.png",type:"DISCORD"},metadata:{bpm:156,duration:180,songName:"This Is Gospel",songSubName:"Panic! At The Disco",songAuthorName:"DownyCat",levelAuthorName:"downycat"},stats:{plays:0,downloads:2221,upvotes:1421,downvotes:49,score:.9147},uploaded:"2018-06-24T10:25:39Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e14ecfe4def439051ae404353aae6aabc7d1e05f",key:"66f",state:"Published",createdAt:"2018-06-24T10:25:39Z",sageScore:4,diffs:[{njs:10,offset:0,notes:382,bombs:0,obstacles:14,nps:2.178,length:455.999,characteristic:"Standard",difficulty:"Normal",events:970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.384,paritySummary:{errors:47,warns:12,resets:0}},{njs:10,offset:0,notes:619,bombs:0,obstacles:14,nps:3.529,length:456,characteristic:"Standard",difficulty:"Hard",events:970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.385,paritySummary:{errors:77,warns:55,resets:0}},{njs:10,offset:0,notes:733,bombs:0,obstacles:14,nps:4.179,length:456,characteristic:"Standard",difficulty:"Expert",events:970,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:175.385,paritySummary:{errors:33,warns:25,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e14ecfe4def439051ae404353aae6aabc7d1e05f.zip",coverURL:"https://cdn.beatsaver.com/e14ecfe4def439051ae404353aae6aabc7d1e05f.jpg",previewURL:"https://cdn.beatsaver.com/e14ecfe4def439051ae404353aae6aabc7d1e05f.mp3"}],createdAt:"2018-06-24T10:25:39Z",updatedAt:"2018-06-24T10:25:39Z",lastPublishedAt:"2018-06-24T10:25:39Z"},{id:"4739",name:"Paramore - Decode",description:"Twilight = Hard\r\nParamore = Expert",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:164,duration:262,songName:"Decode",songSubName:"Paramore",songAuthorName:"KikaeAeon",levelAuthorName:"kikaeaeon"},stats:{plays:0,downloads:1976,upvotes:950,downvotes:25,score:.9146},uploaded:"2019-04-20T06:10:32Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"964d8f8c41aaf56aa2cfc06072eff70f599d6a3f",key:"4739",state:"Published",createdAt:"2019-04-20T06:10:32Z",sageScore:6,diffs:[{njs:10,offset:0,notes:616,bombs:0,obstacles:16,nps:2.556,length:658.75,characteristic:"Standard",difficulty:"Hard",events:798,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.006,paritySummary:{errors:20,warns:8,resets:0}},{njs:15,offset:0,notes:983,bombs:0,obstacles:16,nps:4.079,length:658.75,characteristic:"Standard",difficulty:"Expert",events:1165,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:241.006,paritySummary:{errors:28,warns:23,resets:0}}],downloadURL:"https://cdn.beatsaver.com/964d8f8c41aaf56aa2cfc06072eff70f599d6a3f.zip",coverURL:"https://cdn.beatsaver.com/964d8f8c41aaf56aa2cfc06072eff70f599d6a3f.jpg",previewURL:"https://cdn.beatsaver.com/964d8f8c41aaf56aa2cfc06072eff70f599d6a3f.mp3"}],createdAt:"2019-04-20T06:10:32Z",updatedAt:"2019-04-20T06:10:32Z",lastPublishedAt:"2019-04-20T06:10:32Z"},{id:"9a3f",name:"[Tokyo Machine Pack] Tokyo Machine - BUBBLES",description:"2/3\nPart of the Tokyo Machine Pack, a collab between Pixelguy, CyanSnow and I.\nMap and lights both by me.\n\nCyanSnow's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c8543ac\nPixelguymm's account: https://beatsaver.com/uploader/5cff0b7698cc5a672c8541a8\n\nCheck out the trailer for the pack here: https://www.youtube.com/watch?v=lStPUnecsD8",uploader:{id:3376,name:"firestrikecm",uniqueSet:!0,hash:"5cff0b7698cc5a672c85479f",avatar:"https://cdn.beatsaver.com/avatar/3376.jpg",type:"SIMPLE"},metadata:{bpm:128,duration:232,songName:"BUBBLES",songSubName:"",songAuthorName:"Tokyo Machine",levelAuthorName:"FireStrike"},stats:{plays:0,downloads:2141,upvotes:926,downvotes:24,score:.9145},uploaded:"2020-04-12T18:21:41.920Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d4b087ffab62b7994ce433969c21ef6b29462163",key:"9a3f",state:"Published",createdAt:"2020-04-12T18:21:41.920Z",sageScore:5,diffs:[{njs:20,offset:.7,notes:883,bombs:0,obstacles:10,nps:3.868,length:487,characteristic:"Standard",difficulty:"ExpertPlus",events:3192,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:228.281,paritySummary:{errors:3,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d4b087ffab62b7994ce433969c21ef6b29462163.zip",coverURL:"https://cdn.beatsaver.com/d4b087ffab62b7994ce433969c21ef6b29462163.jpg",previewURL:"https://cdn.beatsaver.com/d4b087ffab62b7994ce433969c21ef6b29462163.mp3"}],createdAt:"2020-04-12T18:21:41.920Z",updatedAt:"2020-04-12T18:21:41.920Z",lastPublishedAt:"2020-04-12T18:21:41.920Z"},{id:"7578",name:"Shape of You [Punk Goes Pop Vol.1] - Our Last Night",description:'A rock cover of "Shape of You" by rock band, Our Last Night. Original song by Ed Sheeran.\n\nEDIT: Fixed one missing note mismap',uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:192,duration:240,songName:"Shape of You (Rock Cover)",songSubName:"",songAuthorName:"Our Last Night",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:2427,upvotes:618,downvotes:10,score:.9145},uploaded:"2019-12-10T17:53:07.422Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"dfff04c4d50466e5a6c9b72466af5e72aee623c3",key:"7578",state:"Published",createdAt:"2019-12-10T17:53:07.422Z",sageScore:4,diffs:[{njs:16,offset:0,notes:1039,bombs:0,obstacles:6,nps:4.421,length:752,characteristic:"Standard",difficulty:"ExpertPlus",events:2377,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:235,paritySummary:{errors:59,warns:56,resets:0}}],downloadURL:"https://cdn.beatsaver.com/dfff04c4d50466e5a6c9b72466af5e72aee623c3.zip",coverURL:"https://cdn.beatsaver.com/dfff04c4d50466e5a6c9b72466af5e72aee623c3.jpg",previewURL:"https://cdn.beatsaver.com/dfff04c4d50466e5a6c9b72466af5e72aee623c3.mp3"}],createdAt:"2019-12-10T17:53:07.422Z",updatedAt:"2019-12-10T17:53:07.422Z",lastPublishedAt:"2019-12-10T17:53:07.422Z"},{id:"7375",name:"Martin O' Donnell - Tip of the Spear (Halo Reach)",description:"#16\nAnyone else hyped for Halo Reach tomorrow? I know I am, probably my favorite FPS franchise. Time to grind back to where I was (even though leveling is different). Anyway, here's one of the songs from the game.\n\nN/S:\nEasy: 0.84\nNormal: 1.22\nHard (Heroic): 2.12\nExpert (Legendary): 2.61\nLights: 666 (998 on expert/legendary somehow)",uploader:{id:4284294,name:"eop-glacier",uniqueSet:!0,hash:"5d50e360adb1a20006305ca0",avatar:"https://cdn.beatsaver.com/avatar/459209214376804363.png",type:"DISCORD"},metadata:{bpm:126,duration:186,songName:"Tip of the Spear",songSubName:"",songAuthorName:"Martin O' Donnell",levelAuthorName:"EOP Glacier"},stats:{plays:0,downloads:2106,upvotes:688,downvotes:13,score:.9145},uploaded:"2019-12-03T04:18:47.641Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"16e10bdc52ee5a515fab9661df0efffcaa3712d3",key:"7375",state:"Published",createdAt:"2019-12-03T04:18:47.641Z",sageScore:4,diffs:[{njs:11,offset:0,notes:158,bombs:0,obstacles:7,nps:1.009,length:329,characteristic:"Standard",difficulty:"Easy",events:663,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.667,paritySummary:{errors:6,warns:0,resets:0}},{njs:13,offset:0,notes:229,bombs:0,obstacles:10,nps:1.462,length:329,characteristic:"Standard",difficulty:"Normal",events:663,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.667,paritySummary:{errors:1,warns:0,resets:0}},{njs:15.5,offset:0,notes:397,bombs:0,obstacles:9,nps:2.533,length:329.075,characteristic:"Standard",difficulty:"Hard",events:663,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.702,paritySummary:{errors:2,warns:0,resets:0}},{njs:18,offset:.2,notes:489,bombs:0,obstacles:25,nps:3.121,length:329,characteristic:"Standard",difficulty:"Expert",events:995,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:156.667,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/16e10bdc52ee5a515fab9661df0efffcaa3712d3.zip",coverURL:"https://cdn.beatsaver.com/16e10bdc52ee5a515fab9661df0efffcaa3712d3.jpg",previewURL:"https://cdn.beatsaver.com/16e10bdc52ee5a515fab9661df0efffcaa3712d3.mp3"}],createdAt:"2019-12-03T04:18:47.641Z",updatedAt:"2019-12-03T04:18:47.641Z",lastPublishedAt:"2019-12-03T04:18:47.641Z"},{id:"5a7c",name:"Bon Jovi - Livin' on a Prayer",description:"Its been waay too long since I last released a map. Been on a break from Beatsaber lately but now that I'm back I hope I can carry on getting out monthly maps like I used to.\nThis song is victim to some pretty nasty variable BPM, but hopefully if I've done it right you wont be able to notice any timing issues ;) Regardless, Hopefully you can give it a go and let me know what you think!\nVideo preview: https://www.youtube.com/watch?v=eYKJrkcHj0I",uploader:{id:4785,name:"stumi",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f720",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f720?d=retro",type:"SIMPLE"},metadata:{bpm:121.8,duration:248,songName:"Livin' on a Prayer",songSubName:"",songAuthorName:"Bon Jovi",levelAuthorName:"Stumi"},stats:{plays:0,downloads:8093,upvotes:1356,downvotes:46,score:.9145},uploaded:"2019-08-03T20:42:08.797Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"8e4e798189ddecb9f49f624d6aa6a0648dd2650b",key:"5a7c",state:"Published",createdAt:"2019-08-03T20:42:08.797Z",sageScore:2,diffs:[{njs:10,offset:0,notes:253,bombs:4,obstacles:48,nps:1.12,length:458.614,characteristic:"Standard",difficulty:"Easy",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.918,paritySummary:{errors:59,warns:11,resets:2}},{njs:11,offset:0,notes:432,bombs:0,obstacles:90,nps:1.914,length:458.125,characteristic:"Standard",difficulty:"Normal",events:1974,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.677,paritySummary:{errors:58,warns:20,resets:0}},{njs:13,offset:0,notes:755,bombs:0,obstacles:79,nps:3.345,length:458.125,characteristic:"Standard",difficulty:"Hard",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.677,paritySummary:{errors:45,warns:58,resets:0}},{njs:15,offset:0,notes:920,bombs:0,obstacles:86,nps:4.077,length:458.125,characteristic:"Standard",difficulty:"Expert",events:1973,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:225.677,paritySummary:{errors:43,warns:47,resets:0}}],downloadURL:"https://cdn.beatsaver.com/8e4e798189ddecb9f49f624d6aa6a0648dd2650b.zip",coverURL:"https://cdn.beatsaver.com/8e4e798189ddecb9f49f624d6aa6a0648dd2650b.jpg",previewURL:"https://cdn.beatsaver.com/8e4e798189ddecb9f49f624d6aa6a0648dd2650b.mp3"}],createdAt:"2019-08-03T20:42:08.797Z",updatedAt:"2019-08-03T20:42:08.797Z",lastPublishedAt:"2019-08-03T20:42:08.797Z"},{id:"1fee",name:"Wavin' Flag (100k Contest)",description:"This is one of the 22 maps that were mapped for the 100k Contest where you can win over $7,000 in prizes. Go to https://bsaber.com/100k-contest/ to register!",uploader:{id:2521,name:"darkgrisen",uniqueSet:!0,hash:"5cff0b7398cc5a672c84fe44",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84fe44?d=retro",type:"SIMPLE"},metadata:{bpm:152,duration:215,songName:"Wavin' Flag (100k Contest)",songSubName:"K'NAAN",songAuthorName:"DarkGrisen",levelAuthorName:"DarkGrisen"},stats:{plays:0,downloads:4479,upvotes:1244,downvotes:40,score:.9145},uploaded:"2018-11-12T17:47:43Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"de9c89b59023a9e30e2c4dfc9b63dd30807b68cb",key:"1fee",state:"Published",createdAt:"2018-11-12T17:47:43Z",sageScore:6,diffs:[{njs:9,offset:0,notes:157,bombs:0,obstacles:2,nps:.765,length:520,characteristic:"Standard",difficulty:"Easy",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:18,warns:14,resets:0}},{njs:9,offset:0,notes:360,bombs:0,obstacles:2,nps:1.754,length:520,characteristic:"Standard",difficulty:"Normal",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:54,warns:25,resets:0}},{njs:10,offset:0,notes:496,bombs:0,obstacles:2,nps:2.416,length:520,characteristic:"Standard",difficulty:"Hard",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:46,warns:40,resets:0}},{njs:11,offset:0,notes:676,bombs:0,obstacles:2,nps:3.293,length:520,characteristic:"Standard",difficulty:"Expert",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:58,warns:79,resets:0}},{njs:12,offset:0,notes:869,bombs:0,obstacles:2,nps:4.234,length:520,characteristic:"Standard",difficulty:"ExpertPlus",events:528,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:205.263,paritySummary:{errors:47,warns:72,resets:0}}],downloadURL:"https://cdn.beatsaver.com/de9c89b59023a9e30e2c4dfc9b63dd30807b68cb.zip",coverURL:"https://cdn.beatsaver.com/de9c89b59023a9e30e2c4dfc9b63dd30807b68cb.jpg",previewURL:"https://cdn.beatsaver.com/de9c89b59023a9e30e2c4dfc9b63dd30807b68cb.mp3"}],createdAt:"2018-11-12T17:47:43Z",updatedAt:"2018-11-12T17:47:43Z",lastPublishedAt:"2018-11-12T17:47:43Z"},{id:"b741",name:"Eskimo Callboy - Hypa Hypa",description:"Genre: Post-Hardcore / Metalcore / Electronic\n\nIf you don't want to see flying words or don't have MappingExtensions, just play \"No Lyrics\" difficult.\n\nPreview by Kira Argenta: https://www.youtube.com/watch?v=pFSpAzmNbJo\nPreview by Superritchman: https://www.youtube.com/watch?v=XwGZQNPI08c\n\nFeedback (Discord): ExistenceExpire#9858\nFeedback and support: https://ko-fi.com/existenceexpire",uploader:{id:69683,name:"existenceexpire",uniqueSet:!0,hash:"5e9e16bb2a34090006a1aed5",avatar:"https://cdn.beatsaver.com/avatar/226078773517352960.png",type:"DISCORD"},metadata:{bpm:152,duration:210,songName:"Hypa Hypa",songSubName:"",songAuthorName:"Eskimo Callboy",levelAuthorName:"ExistenceExpire"},stats:{plays:0,downloads:1477,upvotes:662,downvotes:12,score:.9144},uploaded:"2020-06-28T18:04:59.590Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"b39e9d698422517226f24666ebd7ae3d7aaf244a",key:"b741",state:"Published",createdAt:"2020-06-28T18:04:59.590Z",sageScore:5,diffs:[{njs:18,offset:.15301132,notes:912,bombs:59,obstacles:0,nps:4.499,length:513.5,characteristic:"Standard",difficulty:"Expert",events:3501,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:202.697,paritySummary:{errors:6,warns:16,resets:8}},{njs:18,offset:.15301132,notes:912,bombs:59,obstacles:12486,nps:4.499,length:513.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3501,chroma:!1,me:!0,ne:!1,cinema:!1,seconds:202.697,paritySummary:{errors:6,warns:16,resets:8}}],downloadURL:"https://cdn.beatsaver.com/b39e9d698422517226f24666ebd7ae3d7aaf244a.zip",coverURL:"https://cdn.beatsaver.com/b39e9d698422517226f24666ebd7ae3d7aaf244a.jpg",previewURL:"https://cdn.beatsaver.com/b39e9d698422517226f24666ebd7ae3d7aaf244a.mp3"}],createdAt:"2020-06-28T18:04:59.590Z",updatedAt:"2020-06-28T18:04:59.590Z",lastPublishedAt:"2020-06-28T18:04:59.590Z"},{id:"5e06",name:"I Will Not Bow - Breaking Benjamin",description:"Shoutouts to twitch.tv/whipstickgostop and twitch.tv/xorosegold for playtesting!",uploader:{id:4285077,name:"ris",uniqueSet:!0,hash:"5cff0b7598cc5a672c8535df",avatar:"https://cdn.beatsaver.com/avatar/191597992061435904.png",type:"DISCORD"},metadata:{bpm:108,duration:218,songName:"I Will Not Bow",songSubName:"",songAuthorName:"Breaking Benjamin",levelAuthorName:"Ris"},stats:{plays:0,downloads:2375,upvotes:819,downvotes:19,score:.9144},uploaded:"2019-08-20T03:22:59.663Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"29c0a39db6a53375d2359f4a2a492a0ea784d04f",key:"5e06",state:"Published",createdAt:"2019-08-20T03:22:59.663Z",sageScore:4,diffs:[{njs:10,offset:1,notes:310,bombs:6,obstacles:4,nps:1.516,length:368,characteristic:"Standard",difficulty:"Normal",events:318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:204.444,paritySummary:{errors:60,warns:40,resets:0}},{njs:12,offset:1,notes:619,bombs:73,obstacles:4,nps:2.936,length:379.5,characteristic:"Standard",difficulty:"Hard",events:318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.833,paritySummary:{errors:59,warns:67,resets:0}},{njs:16,offset:0,notes:942,bombs:73,obstacles:4,nps:4.468,length:379.5,characteristic:"Standard",difficulty:"Expert",events:318,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.833,paritySummary:{errors:59,warns:69,resets:0}}],downloadURL:"https://cdn.beatsaver.com/29c0a39db6a53375d2359f4a2a492a0ea784d04f.zip",coverURL:"https://cdn.beatsaver.com/29c0a39db6a53375d2359f4a2a492a0ea784d04f.jpg",previewURL:"https://cdn.beatsaver.com/29c0a39db6a53375d2359f4a2a492a0ea784d04f.mp3"}],createdAt:"2019-08-20T03:22:59.663Z",updatedAt:"2019-08-20T03:22:59.663Z",lastPublishedAt:"2019-08-20T03:22:59.663Z"},{id:"29f8",name:"Camila Cabello - Havana (Remapped)",description:"Update: Added Hard Difficulty :)\r\n\r\nI know there's a map for Havana already, but I decided to make another version of it.\r\nPlaythrough:\r\nhttps://www.youtube.com/watch?v=d7KNm2BzcqA\r\n\r\nEnjoy!\r\n\r\n- ORYGINAL (aka guachitonico)",uploader:{id:45130,name:"guachitonico",uniqueSet:!0,hash:"5cff0b7698cc5a672c854035",avatar:"https://www.gravatar.com/avatar/5cff0b7698cc5a672c854035?d=retro",type:"SIMPLE"},metadata:{bpm:105,duration:220,songName:"Havana",songSubName:"Camila Cabello",songAuthorName:"Remapped by ORYGINAL",levelAuthorName:"guachitonico"},stats:{plays:0,downloads:2862,upvotes:1259,downvotes:41,score:.9144},uploaded:"2019-01-01T22:14:06Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"5d8e56195df0a9735b4c6db2884d3ee6a2f5acef",key:"29f8",state:"Published",createdAt:"2019-01-01T22:14:06Z",sageScore:6,diffs:[{njs:10,offset:0,notes:489,bombs:0,obstacles:9,nps:2.325,length:368,characteristic:"Standard",difficulty:"Hard",events:1019,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.286,paritySummary:{errors:68,warns:18,resets:0}},{njs:12,offset:0,notes:777,bombs:0,obstacles:9,nps:3.695,length:368,characteristic:"Standard",difficulty:"Expert",events:1019,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:210.286,paritySummary:{errors:45,warns:16,resets:0}}],downloadURL:"https://cdn.beatsaver.com/5d8e56195df0a9735b4c6db2884d3ee6a2f5acef.zip",coverURL:"https://cdn.beatsaver.com/5d8e56195df0a9735b4c6db2884d3ee6a2f5acef.jpg",previewURL:"https://cdn.beatsaver.com/5d8e56195df0a9735b4c6db2884d3ee6a2f5acef.mp3"}],createdAt:"2019-01-01T22:14:06Z",updatedAt:"2019-01-01T22:14:06Z",lastPublishedAt:"2019-01-01T22:14:06Z"},{id:"22bf",name:"Hold Me Down - Halsey",description:"YouTube Playthrough: https://www.youtube.com/channel/UCeG7cXNLr6dKSYBKqoUvcbQ\r\nDifficulties: Expert+, Expert, Hard, Normal, Easy\r\nNote Jump Speeds From E+ to Easy: 15, 13, 11, 10, 10\r\nLighting & Events: Yes\r\nBPM: 146",uploader:{id:30754,name:"styngme",uniqueSet:!1,hash:"5cff0b7298cc5a672c84e9cd",avatar:"https://www.gravatar.com/avatar/5cff0b7298cc5a672c84e9cd?d=retro",type:"SIMPLE"},metadata:{bpm:146,duration:208,songName:"Hold Me Down",songSubName:"Halsey",songAuthorName:"StyngMe",levelAuthorName:"styngme"},stats:{plays:0,downloads:4092,upvotes:1204,downvotes:38,score:.9144},uploaded:"2018-11-29T03:58:10Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"a6cced35a0ac357cc16d5e4328be59e52339a157",key:"22bf",state:"Published",createdAt:"2018-11-29T03:58:10Z",sageScore:7,diffs:[{njs:10,offset:0,notes:483,bombs:0,obstacles:59,nps:2.449,length:480,characteristic:"Standard",difficulty:"Easy",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:19,warns:15,resets:0}},{njs:10,offset:0,notes:588,bombs:0,obstacles:62,nps:2.981,length:480,characteristic:"Standard",difficulty:"Normal",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:40,warns:36,resets:0}},{njs:11,offset:0,notes:674,bombs:0,obstacles:65,nps:3.417,length:480,characteristic:"Standard",difficulty:"Hard",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:46,warns:53,resets:0}},{njs:13,offset:0,notes:697,bombs:0,obstacles:97,nps:3.533,length:480,characteristic:"Standard",difficulty:"Expert",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:53,warns:80,resets:0}},{njs:15,offset:0,notes:814,bombs:0,obstacles:114,nps:4.127,length:480,characteristic:"Standard",difficulty:"ExpertPlus",events:1826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:197.26,paritySummary:{errors:50,warns:75,resets:0}}],downloadURL:"https://cdn.beatsaver.com/a6cced35a0ac357cc16d5e4328be59e52339a157.zip",coverURL:"https://cdn.beatsaver.com/a6cced35a0ac357cc16d5e4328be59e52339a157.jpg",previewURL:"https://cdn.beatsaver.com/a6cced35a0ac357cc16d5e4328be59e52339a157.mp3"}],createdAt:"2018-11-29T03:58:10Z",updatedAt:"2018-11-29T03:58:10Z",lastPublishedAt:"2018-11-29T03:58:10Z"},{id:"198ba",name:"Hades - The Unseen Ones",description:'One of the many great game OSTs from the game Hades !\nThis time however.......we are talking rock and roll, the epic guitars by Masahiro Aoki and Daisuke Kurosawa directed by Darren Korb !\nSome of you that played the game may not of heard of this OST.....you will need to keep on playing to encounter it !\n\nWARNING : THE DESCRIPTION MAY CONTAIN SPOILERS, PLEASE TAKE NOTE !\n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \nIf you wish to take a lore dive with the OST based on my understanding of the story the characters POV, keep reading :D !\n...................................................................................................................................\nNarrator : Prince Zagreus, son of Hades - God of the Dead and ruler of the Underworld, has embarked on a mission to escape the Underworld to the surface.\nWhat started as a personal affair with his father and a personal will to breath fresh air from the surface turned into a dedicated mission as he discovered that his very own mother was alive and living on the surface !\nAfter the first initial escape in which Zagreus met up with her, he suddenly started to understand many circles in his life that were still very much opened thus far.\n\nUnfortunately.......each time Zagreus manages to escape and meet his mother for a chat, the Styx grant him only but a moment to exchange a few words with his mother on her cabin before he gets engulfed and taken aback to the underworld.\n\nDetermined to keep visiting his mother despite the ordeal and in order to understand why she was missing from his life, he keeps on going.\n\nHades, being unpleased by his sons rampage, decides to punish him by a "Pact of Punisment" in which Zagreus will need to sign in order to grow stronger on his expedition.\n\nOnce came a time where Zagreus pact option became increasingly intense that he had to resort to..... other punishment options that he did not know the consequences of.....\nMeanwhile, Zagreus is preparing for yet another escape attempt.\n\nZagreus : "Hmm.....which pact should I choose this time.......what\'s this? Extreme Measures?"\nNarrator : reading through the pact, Zagreus understood it meant that each underworld boss will be significantly stronger with new weapons at thier disposal.........including the last one that so happens to be his very own father !\nZagreus : "How hard can it be? let\'s go ! "\n\nNarrator: And thus Zagreus began yet another escape attempt, with the thought of the pact in his mind......\n\n.......Time goes by..............\n\nAfter fighting the Fury sisters, vanquishing the Hydra, beating Theseus and Asterius and braving through the Satyr tunnels, he finally arrives to his final showdown.....\nOpening the gates to the surface, Zagreus Green and Red eyes spot a figure in Golden-Red armor, this figure was also the final obstacle to his mothers cabin....\n\nThus the two begin a dialog :\nZagrues : "Think you can beat me this time, Father?"\nHades : "I was reviewing the terms of the Pact of Punishment to which you are bound.\nEven when my servants resort to extreme measures, they were still unable to surpass you then.\nSo now.....it is my turn !"\nZagrues : "Caught you unprepared, did I? After Theseus and his Macedonian, I half-expected to see you thundering around by some golden chariot of your own, drawn by sable steeds, that sort of thing\nBut......it\'s just you....."\nHades : "It is just me indeed.\nHowever...that should be more than necassary here.\nNo holding back this time Zagrues, are you ready?"\nZagrues : "Let\'s go !!" \n\nThus the two begin yet another brawl of darkness and blood.\nAfter exchanging countless blows, Zagrues manages to down his father twice but not before suffering a few himself, as Hades falls for the second time, Zagrues expects him to vanish back to the underwrold as would normally happen, however.......\n\nHades : " Urgh....no.......I am not......finished......with you........yet!!!"\nNarrator : and thus to Zagrues complete surprise, his father once again regains his balance and is fired with a fighting spirit he has never yet seen.\nHades : "I can still fight !!"\nZagrues : "Are you serious?!"\n\nHades : "DARKNESS !"\nNarrator : Hades vanishes once more and engulfes the entire region in darkness, which hinders Zagrues abillity to see and regains his whereabouts..........\nJust then, Zagrues remembered that he carried his father\'s keepsake sigil, one which allowed him to use his father\'s powers himself !\nZagrues : "Two can play at that game.........DARKNESS ! "\n\nAnd thus, both Hades and Zagrues vanished from the view of the naked eye, off to the final and decisive showdown of Blood and Darkness..........such is the familly......of The Unseen Ones.\n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\nAt long last I am happy to present you all one of the most pumping OSTs from the Hades soundtrack !\nTo make it more convenient, this map includes two mods to spice up the things !\nIn standard mode, you will be playing from Zagrues POV !\nHelp him beat and survive his fathers endless blows so he might see his mother once more !\nOr.....if you wish to take a different approach.\nIn One Saber mode you will infuse you sword with the power of darkness and take on the POV of no less than Hades himself !\nShow your son you can still best him in combat !\n.........................................................................................................................................\nMany thanks to monster, steg universe, Kaltern and the BSMG for providing the much needed feedback which helped forge this map and help get it to where it is now ! :)\n\nHope you enjoy ! :)\n\nMap preview by Javierattor - https://www.youtube.com/watch?v=namzq2MNvJ4\n',uploader:{id:4285616,name:"sp234",uniqueSet:!0,hash:"5f352ca7530c8e00061b14fe",avatar:"https://cdn.beatsaver.com/avatar/215418254980677643.png",type:"DISCORD"},metadata:{bpm:118,duration:248,songName:"Hades - The Unseen Ones",songSubName:"Game OST",songAuthorName:"Darren Korb",levelAuthorName:"Sp234"},stats:{plays:0,downloads:6435,upvotes:637,downvotes:11,score:.9143},uploaded:"2021-06-25T08:04:00.236Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"d93d094ae17f25dedaee7796f7ca9fc078dc5060",key:"198ba",state:"Published",createdAt:"2021-06-25T08:04:00.236Z",sageScore:5,diffs:[{njs:10,offset:.6,notes:554,bombs:0,obstacles:65,nps:2.269,length:480.25,characteristic:"Standard",difficulty:"Normal",events:5589,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.195,paritySummary:{errors:4,warns:0,resets:0}},{njs:13,offset:-.1,notes:812,bombs:4,obstacles:135,nps:3.325,length:480.25,characteristic:"Standard",difficulty:"Hard",events:5589,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.195,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.55,notes:1238,bombs:0,obstacles:160,nps:5.069,length:480.292,characteristic:"Standard",difficulty:"Expert",events:5591,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.216,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:-.55,notes:878,bombs:0,obstacles:113,nps:3.595,length:480.333,characteristic:"OneSaber",difficulty:"Expert",events:5589,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:244.237,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/d93d094ae17f25dedaee7796f7ca9fc078dc5060.zip",coverURL:"https://cdn.beatsaver.com/d93d094ae17f25dedaee7796f7ca9fc078dc5060.jpg",previewURL:"https://cdn.beatsaver.com/d93d094ae17f25dedaee7796f7ca9fc078dc5060.mp3"}],createdAt:"2021-06-25T08:04:00.236Z",updatedAt:"2021-06-25T08:04:00.236Z",lastPublishedAt:"2021-06-25T08:04:00.236Z"},{id:"9725",name:"Dua Lipa - Break My Heart",description:"Dua Lipa - Break My Heart\nThis is my second Dua Lipa map and it was super fun to make and test! I hope you enjoy it. \nSpecial thanks to Treetrain1YT for testing this many times on both Steam and Quest.\n\nNormal - 2.09 NPS, 470 Notes, 10 NJS\nHard - 2.92 NPS, 655 Notes, 12 NJS\nExpert - 3.63 NPS, 814 Notes, 16 NJS",uploader:{id:4285261,name:"yomama",uniqueSet:!0,hash:"5e23f0a1054bbd0007bc1ed4",avatar:"https://cdn.beatsaver.com/avatar/153595294792155137.png",type:"DISCORD"},metadata:{bpm:113,duration:223,songName:"Break My Heart",songSubName:"",songAuthorName:"Dua Lipa",levelAuthorName:"yomama"},stats:{plays:0,downloads:2890,upvotes:942,downvotes:25,score:.9143},uploaded:"2020-04-04T03:17:06.970Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e97457ce049dbd486326861e16125fac4bb24800",key:"9725",state:"Published",createdAt:"2020-04-04T03:17:06.970Z",sageScore:4,diffs:[{njs:10,offset:0,notes:470,bombs:0,obstacles:86,nps:2.15,length:411.75,characteristic:"Standard",difficulty:"Normal",events:872,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.628,paritySummary:{errors:31,warns:25,resets:0}},{njs:12,offset:0,notes:655,bombs:0,obstacles:96,nps:2.998,length:411.5,characteristic:"Standard",difficulty:"Hard",events:1619,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.496,paritySummary:{errors:76,warns:34,resets:0}},{njs:16,offset:.25,notes:814,bombs:0,obstacles:89,nps:3.725,length:411.5,characteristic:"Standard",difficulty:"Expert",events:2719,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:218.496,paritySummary:{errors:91,warns:58,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e97457ce049dbd486326861e16125fac4bb24800.zip",coverURL:"https://cdn.beatsaver.com/e97457ce049dbd486326861e16125fac4bb24800.jpg",previewURL:"https://cdn.beatsaver.com/e97457ce049dbd486326861e16125fac4bb24800.mp3"}],createdAt:"2020-04-04T03:17:06.970Z",updatedAt:"2020-04-04T03:17:06.970Z",lastPublishedAt:"2020-04-04T03:17:06.970Z"},{id:"3342",name:"No More Sorrow - Linkin Park",description:"133 BPM / 3:42 Runtime\r\nEasy / 288 Notes\r\nNormal / 394 Notes\r\nHard / 549 Notes\r\nExpert / 799 Notes\r\nExpert+ / 1032 Notes\r\n\r\nI was watching early Beat Saber gameplay and noticed how the player frequently put their sabers in the walls. It gave me an idea for the Expert+ map.\r\n\r\nGameplay: https://youtu.be/Wkng-fpz78w",uploader:{id:4284981,name:"skylerwallace",uniqueSet:!0,hash:"5cff0b7298cc5a672c84ea67",avatar:"https://cdn.beatsaver.com/avatar/398344856868487168.png",type:"DISCORD"},metadata:{bpm:133,duration:222,songName:"No More Sorrow",songSubName:"Linkin Park",songAuthorName:"Skyler Wallace",levelAuthorName:"skylerwallace"},stats:{plays:0,downloads:2978,upvotes:1002,downvotes:28,score:.9143},uploaded:"2019-02-03T07:55:09Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e80f867f37808cd7cf1450327a4b445d2d0d8f02",key:"3342",state:"Published",createdAt:"2019-02-03T07:55:09Z",sageScore:8,diffs:[{njs:10,offset:1,notes:288,bombs:7,obstacles:7,nps:1.321,length:482,characteristic:"Standard",difficulty:"Easy",events:5629,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:117,warns:6,resets:5}},{njs:10,offset:1,notes:394,bombs:5,obstacles:10,nps:1.807,length:482,characteristic:"Standard",difficulty:"Normal",events:5628,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:88,warns:17,resets:0}},{njs:10,offset:1,notes:549,bombs:4,obstacles:11,nps:2.518,length:482,characteristic:"Standard",difficulty:"Hard",events:5629,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:41,warns:20,resets:4}},{njs:12,offset:1,notes:799,bombs:4,obstacles:17,nps:3.664,length:482,characteristic:"Standard",difficulty:"Expert",events:5629,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:33,warns:35,resets:0}},{njs:14,offset:0,notes:1032,bombs:31,obstacles:73,nps:4.733,length:482,characteristic:"Standard",difficulty:"ExpertPlus",events:5629,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:217.444,paritySummary:{errors:45,warns:66,resets:10}}],downloadURL:"https://cdn.beatsaver.com/e80f867f37808cd7cf1450327a4b445d2d0d8f02.zip",coverURL:"https://cdn.beatsaver.com/e80f867f37808cd7cf1450327a4b445d2d0d8f02.jpg",previewURL:"https://cdn.beatsaver.com/e80f867f37808cd7cf1450327a4b445d2d0d8f02.mp3"}],createdAt:"2019-02-03T07:55:09Z",updatedAt:"2019-02-03T07:55:09Z",lastPublishedAt:"2019-02-03T07:55:09Z"},{id:"10674",name:"Spooky Scary Skeletons (Kasger DnB Remix)",description:"A nice Drum and Bass remix on theme with Halloween.\nYou can follow me on twitch for more awesomeness at https://www.twitch.tv/pkdan\nVideo preview of the map: https://www.youtube.com/watch?v=m3pFxj2jFHs&ab_channel=PKDan\n\nLength: 3:49\nNotes: 789 (Hard) / 1092 (Expert) / 1492 (Expert+)\nNJS: 14 (Hard) / 16 (Expert) / 20 (Expert+)\nBPM: 174",uploader:{id:4284639,name:"pkdan",uniqueSet:!0,hash:"5e6d07927abb00000681e8ee",avatar:"https://cdn.beatsaver.com/avatar/315553265091739650.png",type:"DISCORD"},metadata:{bpm:174,duration:229,songName:"Spooky Scary Skeletons (Kasger Remix)",songSubName:"",songAuthorName:"Andrew Gold",levelAuthorName:"pkdan"},stats:{plays:0,downloads:4006,upvotes:682,downvotes:13,score:.9142},uploaded:"2020-10-30T19:19:27.266Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"20341d92a0871dfdf2f8d39633274fdaa67a70ed",key:"10674",state:"Published",createdAt:"2020-10-30T19:19:27.266Z",sageScore:5,diffs:[{njs:14,offset:.3,notes:789,bombs:0,obstacles:2,nps:3.575,length:640,characteristic:"Standard",difficulty:"Hard",events:4093,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.69,paritySummary:{errors:0,warns:0,resets:0}},{njs:16,offset:0,notes:1092,bombs:0,obstacles:2,nps:4.948,length:640,characteristic:"Standard",difficulty:"Expert",events:4093,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.69,paritySummary:{errors:0,warns:0,resets:0}},{njs:20,offset:-.3,notes:1492,bombs:0,obstacles:2,nps:6.761,length:640,characteristic:"Standard",difficulty:"ExpertPlus",events:4093,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:220.69,paritySummary:{errors:0,warns:0,resets:0}}],downloadURL:"https://cdn.beatsaver.com/20341d92a0871dfdf2f8d39633274fdaa67a70ed.zip",coverURL:"https://cdn.beatsaver.com/20341d92a0871dfdf2f8d39633274fdaa67a70ed.jpg",previewURL:"https://cdn.beatsaver.com/20341d92a0871dfdf2f8d39633274fdaa67a70ed.mp3"}],createdAt:"2020-10-30T19:19:27.266Z",updatedAt:"2020-10-30T19:19:27.266Z",lastPublishedAt:"2020-10-30T19:19:27.266Z"},{id:"4e81",name:"Katy Perry - Firework",description:"Thank you Joetastic for the lossless file",uploader:{id:4285107,name:"kikaeaeon",uniqueSet:!0,hash:"5cff0b7498cc5a672c85109b",avatar:"https://cdn.beatsaver.com/avatar/103715469822816256.png",type:"DISCORD"},metadata:{bpm:124,duration:229,songName:"Firework",songSubName:"Katy Perry",songAuthorName:"KikaeAeon",levelAuthorName:"kikaeaeon"},stats:{plays:0,downloads:3779,upvotes:1331,downvotes:45,score:.9142},uploaded:"2019-05-22T14:18:50Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"410a4f5ae778f9072b9136f0df5e151156cd81e3",key:"4e81",state:"Published",createdAt:"2019-05-22T14:18:50Z",sageScore:5,diffs:[{njs:10,offset:0,notes:563,bombs:0,obstacles:17,nps:2.51,length:463.5,characteristic:"Standard",difficulty:"Hard",events:682,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.274,paritySummary:{errors:33,warns:7,resets:0}},{njs:15,offset:0,notes:927,bombs:0,obstacles:26,nps:4.133,length:463.5,characteristic:"Standard",difficulty:"ExpertPlus",events:988,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.274,paritySummary:{errors:25,warns:17,resets:0}}],downloadURL:"https://cdn.beatsaver.com/410a4f5ae778f9072b9136f0df5e151156cd81e3.zip",coverURL:"https://cdn.beatsaver.com/410a4f5ae778f9072b9136f0df5e151156cd81e3.jpg",previewURL:"https://cdn.beatsaver.com/410a4f5ae778f9072b9136f0df5e151156cd81e3.mp3"}],createdAt:"2019-05-22T14:18:50Z",updatedAt:"2019-05-22T14:18:50Z",lastPublishedAt:"2019-05-22T14:18:50Z"},{id:"1622c",name:"Gurenge (TV Size) [Demon Slayer: Kimetsu no Yaiba Opening] - LiSA",description:"",uploader:{id:58338,name:"Joetastic",uniqueSet:!0,hash:"5cff0b7498cc5a672c85050e",avatar:"https://cdn.beatsaver.com/avatar/227767566402191360.png",type:"DISCORD"},metadata:{bpm:135,duration:90,songName:"Gurenge (TV Size)",songSubName:"",songAuthorName:"LiSA",levelAuthorName:"Joetastic"},stats:{plays:0,downloads:16462,upvotes:896,downvotes:23,score:.9141},uploaded:"2021-04-01T08:54:27.557Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"62a63aa11f61623fdd69411bf73ab1082d4558d6",key:"1622c",state:"Published",createdAt:"2021-04-01T08:54:27.557Z",sageScore:5,diffs:[{njs:13,offset:0,notes:294,bombs:0,obstacles:10,nps:3.375,length:196,characteristic:"Standard",difficulty:"Hard",events:12271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.111,paritySummary:{errors:0,warns:0,resets:0}},{njs:15,offset:-.2,notes:399,bombs:0,obstacles:10,nps:4.58,length:196,characteristic:"Standard",difficulty:"Expert",events:12271,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.111,paritySummary:{errors:2,warns:2,resets:0}},{njs:18,offset:-.5,notes:482,bombs:0,obstacles:18,nps:5.533,length:196,characteristic:"Standard",difficulty:"ExpertPlus",events:12268,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:87.111,paritySummary:{errors:3,warns:5,resets:0}}],downloadURL:"https://cdn.beatsaver.com/62a63aa11f61623fdd69411bf73ab1082d4558d6.zip",coverURL:"https://cdn.beatsaver.com/62a63aa11f61623fdd69411bf73ab1082d4558d6.jpg",previewURL:"https://cdn.beatsaver.com/62a63aa11f61623fdd69411bf73ab1082d4558d6.mp3"}],createdAt:"2021-04-01T08:54:27.557Z",updatedAt:"2021-04-01T08:54:27.557Z",lastPublishedAt:"2021-04-01T08:54:27.557Z"},{id:"6888",name:"The Glory Days - Tia",description:"Expert and Hard diff companion to https://beatsaver.com/beatmap/56d0\nKikis lights, diffs by me. Modded by Fraies and Redmagi.",uploader:{id:4284577,name:"uninstaller",uniqueSet:!0,hash:"5cff0b7598cc5a672c85248e",avatar:"https://cdn.beatsaver.com/avatar/84840552935194624.png",type:"DISCORD"},metadata:{bpm:184,duration:254,songName:"The Glory Days",songSubName:"",songAuthorName:"Tia",levelAuthorName:"Kikis & Uninstaller"},stats:{plays:0,downloads:2754,upvotes:1511,downvotes:55,score:.9141},uploaded:"2019-10-08T01:17:01.471Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"a6ccabb105d0f2c24fe9f1dd6e4445782bc55616",key:"6888",state:"Published",createdAt:"2019-10-08T01:17:01.471Z",sageScore:6,diffs:[{njs:13,offset:0,notes:781,bombs:30,obstacles:11,nps:3.243,length:738.5,characteristic:"Standard",difficulty:"Hard",events:3865,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240.815,paritySummary:{errors:1,warns:1,resets:1},stars:2.04},{njs:15,offset:0,notes:1177,bombs:32,obstacles:11,nps:4.888,length:738.5,characteristic:"Standard",difficulty:"Expert",events:3865,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:240.815,paritySummary:{errors:0,warns:0,resets:3},stars:3.31}],downloadURL:"https://cdn.beatsaver.com/a6ccabb105d0f2c24fe9f1dd6e4445782bc55616.zip",coverURL:"https://cdn.beatsaver.com/a6ccabb105d0f2c24fe9f1dd6e4445782bc55616.jpg",previewURL:"https://cdn.beatsaver.com/a6ccabb105d0f2c24fe9f1dd6e4445782bc55616.mp3"}],createdAt:"2019-10-08T01:17:01.471Z",updatedAt:"2019-10-08T01:17:01.471Z",lastPublishedAt:"2019-10-08T01:17:01.471Z"},{id:"5c92",name:"Caravan Palace - Lone Digger",description:"\nBPM: 124 | 3 Difficulties (Expert+, Expert, Hard) | Lighting done by me\n---------------------------------------------------------------------------------------------\n[Expert+]\nNJS: 19\nNotes: 1255\n---------------------------------------------------------------------------------------------\n[Expert]\nNotes: 986\nNJS: 18\n---------------------------------------------------------------------------------------------\n[Hard]\nNotes: 652\nNJS: 17\n---------------------------------------------------------------------------------------------\n\nMy Discord if you want to give feedback or just talk to me: Yun0#1355",uploader:{id:18845,name:"yun0",uniqueSet:!0,hash:"5cff0b7398cc5a672c84f6ca",avatar:"https://cdn.beatsaver.com/avatar/18845.jpg",type:"SIMPLE"},metadata:{bpm:124,duration:231,songName:"Lone Digger",songSubName:"",songAuthorName:"Caravan Palace",levelAuthorName:"Yun0"},stats:{plays:0,downloads:2362,upvotes:1174,downvotes:37,score:.9141},uploaded:"2019-08-13T03:30:08.712Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"928da96d4e5fcfeb87ac1cc6fcf6287b2f4c5e2d",key:"5c92",state:"Published",createdAt:"2019-08-13T03:30:08.712Z",sageScore:6,diffs:[{njs:17,offset:0,notes:652,bombs:0,obstacles:4,nps:2.932,length:459.5,characteristic:"Standard",difficulty:"Hard",events:3826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.339,paritySummary:{errors:0,warns:0,resets:0}},{njs:18,offset:-.25,notes:986,bombs:0,obstacles:6,nps:4.435,length:459.5,characteristic:"Standard",difficulty:"Expert",events:3826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:222.339,paritySummary:{errors:3,warns:0,resets:0}},{njs:19,offset:.3,notes:1255,bombs:4,obstacles:49,nps:5.596,length:463.5,characteristic:"Standard",difficulty:"ExpertPlus",events:3826,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:224.274,paritySummary:{errors:9,warns:6,resets:2}}],downloadURL:"https://cdn.beatsaver.com/928da96d4e5fcfeb87ac1cc6fcf6287b2f4c5e2d.zip",coverURL:"https://cdn.beatsaver.com/928da96d4e5fcfeb87ac1cc6fcf6287b2f4c5e2d.jpg",previewURL:"https://cdn.beatsaver.com/928da96d4e5fcfeb87ac1cc6fcf6287b2f4c5e2d.mp3"}],createdAt:"2019-08-13T03:30:08.712Z",updatedAt:"2019-08-13T03:30:08.712Z",lastPublishedAt:"2019-08-13T03:30:08.712Z"},{id:"1bc4",name:"Without Me (Nurko & Miles Away Remix) - Halsey",description:"Difficulties: Expert+ Only",uploader:{id:30311,name:"bennydabeast",uniqueSet:!0,hash:"5cff0b7298cc5a672c84e98d",avatar:"https://cdn.beatsaver.com/avatar/30311.jpg",type:"SIMPLE"},metadata:{bpm:140,duration:257,songName:"Without Me (Nurko & Miles Away Remix)",songSubName:"Halsey",songAuthorName:"BennyDaBeast",levelAuthorName:"bennydabeast"},stats:{plays:0,downloads:1240,upvotes:681,downvotes:13,score:.9141},uploaded:"2018-10-23T03:10:41Z",automapper:!1,ranked:!1,qualified:!1,versions:[{hash:"e447ac77708869ac151546110aecda97acac2cab",key:"1bc4",state:"Published",createdAt:"2018-10-23T03:10:41Z",sageScore:5,diffs:[{njs:15,offset:0,notes:1206,bombs:0,obstacles:1,nps:4.885,length:576,characteristic:"Standard",difficulty:"ExpertPlus",events:1646,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:246.857,paritySummary:{errors:102,warns:151,resets:0}}],downloadURL:"https://cdn.beatsaver.com/e447ac77708869ac151546110aecda97acac2cab.zip",coverURL:"https://cdn.beatsaver.com/e447ac77708869ac151546110aecda97acac2cab.jpg",previewURL:"https://cdn.beatsaver.com/e447ac77708869ac151546110aecda97acac2cab.mp3"}],createdAt:"2018-10-23T03:10:41Z",updatedAt:"2018-10-23T03:10:41Z",lastPublishedAt:"2018-10-23T03:10:41Z"},{id:"900",name:"Limbo - Daddy Yankee",description:"If you don't at least try to limbo, you didn't really finish the map.",uploader:{id:50121,name:"ayewyn",uniqueSet:!1,hash:"5cff0b7398cc5a672c84f7ef",avatar:"https://www.gravatar.com/avatar/5cff0b7398cc5a672c84f7ef?d=retro",type:"SIMPLE"},metadata:{bpm:125,duration:225,songName:"Limbo",songSubName:"Daddy Yankee",songAuthorName:"Ayewyn",levelAuthorName:"ayewyn"},stats:{plays:0,downloads:6900,upvotes:2388,downvotes:106,score:.9141},uploaded:"2018-07-12T13:34:01Z",automapper:!1,ranked:!0,qualified:!1,versions:[{hash:"2738e2374b821b6aa9839f128a70caae8333cb1c",key:"900",state:"Published",createdAt:"2018-07-12T13:34:01Z",sageScore:5,diffs:[{njs:10,offset:0,notes:232,bombs:0,obstacles:24,nps:1.073,length:450.5,characteristic:"Standard",difficulty:"Easy",events:853,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.24,paritySummary:{errors:33,warns:76,resets:0},stars:.95},{njs:10,offset:0,notes:464,bombs:0,obstacles:12,nps:2.146,length:450.5,characteristic:"Standard",difficulty:"Normal",events:853,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.24,paritySummary:{errors:35,warns:141,resets:0}},{njs:10,offset:0,notes:637,bombs:0,obstacles:12,nps:2.943,length:451,characteristic:"Standard",difficulty:"Hard",events:853,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.48,paritySummary:{errors:34,warns:190,resets:0}},{njs:10,offset:0,notes:689,bombs:0,obstacles:12,nps:3.181,length:451.25,characteristic:"Standard",difficulty:"Expert",events:853,chroma:!1,me:!1,ne:!1,cinema:!1,seconds:216.6,paritySummary:{errors:44,warns:187,resets:0}}],downloadURL:"https://cdn.beatsaver.com/2738e2374b821b6aa9839f128a70caae8333cb1c.zip",coverURL:"https://cdn.beatsaver.com/2738e2374b821b6aa9839f128a70caae8333cb1c.jpg",previewURL:"https://cdn.beatsaver.com/2738e2374b821b6aa9839f128a70caae8333cb1c.mp3"}],createdAt:"2018-07-12T13:34:01Z",updatedAt:"2018-07-12T13:34:01Z",lastPublishedAt:"2018-07-12T13:34:01Z"}]},function(e,t,a){if(AFRAME.registerComponent("song-info-positioner",{schema:{victory:{default:!1}},update:function(){this.data.victory?this.el.object3D.position.y=-1.2:this.el.object3D.position.y=-1}}),window.AFRAME){const t=["song-info-positioner"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.progress.scale.x=1e-4})},update:function(e){this.progress.scale.x=1e-4},updateInfo:function(){const e=this.el.sceneEl.components.song.source;if(!e||!e.buffer)return;const t=this.el.sceneEl.components.song.getCurrentTime()/e.buffer.duration;t&&(this.progress.scale.x=t)},tick:function(){this.data.enabled&&this.updateInfo()}}),window.AFRAME){const t=["song-progress-info"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{this.audioAnalyser.resumeContext();const t=this.audioAnalyser.gainNode.gain;t.cancelScheduledValues(0),t.setValueAtTime(.05,0),this.source=e.detail,this.source.start(),this.el.emit("victory")},n),void this.audioAnalyser.refreshSource();!e.isBeatsPreloaded&&this.data.isBeatsPreloaded&&this.source&&this.startAudio(),!e.challengeId||t.challengeId?(e.isPlaying&&!t.isPlaying&&(this.audioAnalyser.suspendContext(),this.isAudioPlaying=!1),!e.isPlaying&&t.isPlaying&&this.source&&(this.audioAnalyser.resumeContext(),this.isAudioPlaying=!0)):this.stopAudio()}else this.onGameOver()},processAudio:function(){this.el.sceneEl.emit("songprocessstart",null,!1),this.getAudio().then(e=>{this.el.sceneEl.emit("songprocessfinish",null,!1)}).catch(console.error)},getAudio:function(){const e=this.data;return this.source&&this.stopAudio(),this.isAudioPlaying=!1,new Promise(t=>{e.analyserEl.addEventListener("audioanalyserbuffersource",e=>{this.source=e.detail,t(this.source)},n),this.analyserSetter.src=this.data.audio,e.analyserEl.setAttribute("audioanalyser",this.analyserSetter)})},stopAudio:function(){this.source?(this.source.onended=null,this.isAudioPlaying&&this.source.stop(),this.source.disconnect(),this.source=null,this.isAudioPlaying=!1):console.warn("[song] Tried to stopAudio, but not playing.")},onSongComplete:function(){this.data.isPlaying&&this.el.emit("songcomplete")},onGameOver:function(){this.isAudioPlaying=!1;const e=this.source.playbackRate;e.setValueAtTime(e.value,this.context.currentTime),e.linearRampToValueAtTime(0,this.context.currentTime+3.5);const t=this.audioAnalyser.gainNode.gain;t.setValueAtTime(t.value,this.context.currentTime),t.linearRampToValueAtTime(0,this.context.currentTime+3.5),setTimeout(()=>{this.data.isGameOver&&this.stopAudio()},3500)},onRestart:function(){this.isAudioPlaying=!1,this.source&&this.source.disconnect();this.audioAnalyser.gainNode.gain.cancelScheduledValues(0),this.data.analyserEl.addEventListener("audioanalyserbuffersource",e=>{this.source=e.detail,this.el.sceneEl.emit("songloadfinish",null,!1)},n),this.audioAnalyser.refreshSource()},onWallHitStart:function(){this.audioAnalyser.gainNode.gain.linearRampToValueAtTime(.1,this.context.currentTime+.1)},onWallHitEnd:function(){this.audioAnalyser.gainNode.gain.linearRampToValueAtTime(.5,this.context.currentTime+.1)},startAudio:function(){this.audioAnalyser.gainNode.gain.setValueAtTime(.5,this.context.currentTime),this.songStartTime=this.context.currentTime,this.source.onended=this.onSongComplete,this.source.start(0,r||0),this.isAudioPlaying=!0},getCurrentTime:function(){return this.context.currentTime-this.songStartTime}}),window.AFRAME){const t=["song"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n(Math.random()-.5)*this.data.radius*2,t=new THREE.BufferGeometry;this.material=this.el.sceneEl.systems.materials.stars;const a=[];for(let t=0;t{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{const n=a.detail.model.getObjectByName(t.name);e.setObject3D("mesh",n.clone()),e.setAttribute("material","shader","flat"),e.emit("subobjectloaded",null,!1)})}}),window.AFRAME){const t=["sub-object"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{if(1==e.key.length){const a=e.key.toLowerCase();if(!"abcdefghijklmnopqrstuvwxyz ".includes(a))return;if(this.data.maxLength>0&&this.rawValue.length>this.data.maxLength)return;this.rawValue+=a;var t=this.filter(this.rawValue);this.el.setAttribute("super-keyboard","value",t),this.updateTextInput(t),this.changeEventDetail.value=t,this.el.emit("superkeyboardchange",this.changeEventDetail)}else if("Shift"==e.key)this.shift=!this.shift;else if("Backspace"==e.key){this.rawValue=this.rawValue.substr(0,this.rawValue.length-1);t=this.filter(this.rawValue);this.el.setAttribute("super-keyboard","value",t),this.updateTextInput(t),this.changeEventDetail.value=t,this.el.emit("superkeyboardchange",this.changeEventDetail)}else"Escape"==e.key&&this.dismiss()}),document.addEventListener("show",this.open.bind(this)),this.hand=null,this.handListenersSet=!1,this.raycaster=null},update:function(e){var t=n[this.data.model],a=this.data.width,r=this.data.width/2;if(void 0!==t){e&&this.defaultValue===e.defaultValue?this.updateTextInput(this.filter(this.rawValue)):(this.rawValue=this.data.value,this.defaultValue=this.data.value,this.updateTextInput(this.filter(this.data.value))),this.data.width===e.width&&this.data.height===e.height&&this.data.keyColor===e.keyColor||(this.kbImg.setAttribute("geometry",{primitive:"plane",width:a,height:r}),this.kbImg.setAttribute("material",{shader:"flat",src:this.data.imagePath+"/"+t.img,color:this.data.keyColor,transparent:!0})),this.data.label===e.label&&this.data.labelColor===e.labelColor&&this.data.width===e.width||(this.label.setAttribute("text",{value:this.data.label,color:this.data.labelColor,width:this.data.width}),this.label.object3D.position.set(0,.3*a,-.02)),this.data.width===e.width&&this.data.keyBgColor===e.keyBgColor||this.initKeyColorPlane();var s="center"!==this.data.align?t.inputOffsetX*a:0;"right"===this.data.align&&(s*=-1),this.data.font===e.font&&this.data.inputColor===e.inputColor&&this.data.width===e.width&&this.data.align===e.align||this.textInput.setAttribute("text",{font:this.data.font,color:this.data.inputColor,width:a,wrapCount:t.wrapCount,align:this.data.align});for(var o=0;oo.x&&a.xo.y&&1-a.y [raycaster]"].join(",")),this.hand){if(!this.hand.hasLoaded)return void this.hand.addEventListener("loaded",this.setupHand.bind(this));var e=this.hand.components.raycaster,t={};if(e){if(this.hand.ownRaycaster=!1,this.data.injectToRaycasterObjects){var a=e.data.objects.split(",");-1===a.indexOf(".keyboardRaycastable")&&a.push(".keyboardRaycastable"),t.objects=a.join(",").replace(/^,/,""),this.hand.setAttribute("raycaster",t)}}else this.hand.ownRaycaster=!0,t.showLine=this.data.show,t.enabled=this.data.show,this.data.injectToRaycasterObjects&&(t.objects=".keyboardRaycastable"),this.hand.setAttribute("raycaster",t);this.raycaster=this.hand.components.raycaster}else console.error('super-keyboard: no controller found. Add with controller or specify with super-keyboard="hand: #selectorToController".')},filter:function(e){if(""===e)return"";for(var t=0;t0?e.substr(0,this.data.maxLength):e},click:function(e){if(this.keyHover){switch(this.keyHover.key){case"Enter":this.accept();break;case"Insert":return;case"Delete":this.rawValue=this.rawValue.substr(0,this.rawValue.length-1);var t=this.filter(this.rawValue);this.el.setAttribute("super-keyboard","value",t),this.updateTextInput(t),this.changeEventDetail.value=t,this.el.emit("superkeyboardchange",this.changeEventDetail);break;case"Shift":this.shift=!this.shift,this.keyHover.el.setAttribute("material","color",this.shift?this.data.keyHoverColor:this.data.keyBgColor);break;case"Escape":this.dismiss();break;default:if(this.data.maxLength>0&&this.rawValue.length>this.data.maxLength)break;this.rawValue+=this.shift?this.keyHover.key.toUpperCase():this.keyHover.key;t=this.filter(this.rawValue);this.el.setAttribute("super-keyboard","value",t),this.updateTextInput(t),this.changeEventDetail.value=t,this.el.emit("superkeyboardchange",this.changeEventDetail)}this.updateKeyColorPlane(this.keyHover.key,this.keyPressColor);var a=this;setTimeout((function(){a.updateKeyColorPlane(a.keyHover.key,a.keyHoverColor)}),100),this.updateCursorPosition()}},open:function(){this.el.object3D.visible=!0,this.hand&&this.hand.ownRaycaster&&this.hand.setAttribute("raycaster",{showLine:!0,enabled:!0})},close:function(){this.el.object3D.visible=!1,this.hand&&this.hand.ownRaycaster&&this.hand.setAttribute("raycaster",{showLine:!1,enabled:!1})},accept:function(){this.el.emit("superkeyboardinput",{value:this.data.value}),this.data.multipleInputs?(this.rawValue="",this.data.value="",this.updateTextInput("")):(this.el.object3D.visible=!1,this.hand&&this.hand.ownRaycaster&&this.hand.setAttribute("raycaster",{showLine:!1,enabled:!1}),this.data.show=!1)},dismiss:function(){this.data.value=this.defaultValue,this.updateTextInput(),this.el.object3D.visible=!1,this.hand&&this.hand.ownRaycaster&&this.hand.setAttribute("raycaster",{showLine:!1,enabled:!1}),this.el.emit("superkeyboarddismiss"),this.data.show=!1},blur:function(e){this.focused=!1,this.keyHover&&"Shift"!==this.keyHover.key&&this.updateKeyColorPlane(this.keyHover.key,this.keyBgColor),this.keyHover=null},hover:function(e){this.focused=!0},startBlinking:function(){this.stopBlinking(),this.intervalId=window.setInterval(this.blink.bind(this),this.data.blinkingSpeed)},stopBlinking:function(){window.clearInterval(this.intervalId),this.intervalId=0},blink:function(){this.cursor.object3D.visible=!this.cursor.object3D.visible},setCustomFilter:function(e){this.userFilterFunc=e},addCustomModel:function(e,t){e&&(n[e]=t)},updateCursorPosition:function(){var e=this.textInput.components.text.currentFont;if(!e){var t=this;return this.cursor.object3D.visible=!1,void window.setTimeout((function(){t.updateCursorPosition(),t.startBlinking()}),700)}var a=this.data.width,o=n[this.data.model],i=-this.inputRect.h/2*a/2.4+o.inputOffsetY*a,c=this.data.width/this.textInput.components.text.data.wrapCount,d=0,l=r[this.textInput.components.text.data.font];void 0===l&&(l=20);for(var u=0;u{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.detail&&"off"!==e.detail?this.setColor("color1",e.detail):this.setColor("color1","primary")}),e.sceneEl.addEventListener("curveoddstageeventcolor",e=>{e.detail&&"off"!==e.detail?this.setColor("color2",e.detail):this.setColor("color2","secondary")})},setColor:function(e,t){const a=this.el.components.material.material.uniforms[e].value,r=this.el.sceneEl.systems.materials.scheme[t];n.set(r),a.x=n.r,a.y=n.g,a.z=n.b}}),window.AFRAME){const t=["supercurve-color"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=1)return;const n=this.supercurve,r=n.curve;if(!r)return;this.curveProgress=this.curveProgress||0;const s=a.speed*(t/1e3);if(this.curveProgress+=s/this.supercurve.fullLength,this.data.target.components.material.material.uniforms.cameraPercent.value=this.curveProgress,this.curveProgress>=1)return this.curveProgress=1,void(this.data.target.components.material.material.uniforms.cameraPercent.value=this.curveProgress);r.getPointAt(this.curveProgress,this.el.object3D.position),this.songProgress=n.curveProgressToSongProgress(this.curveProgress),n.alignToCurve(this.songProgress,this.el.object3D)}}()}),window.AFRAME){const t=["supercurve","supercurve-follow"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0)){c=r;break}c=r-1}if(n[r=c]===a)return r/(s-1);var d=n[r];return(r+(a-d)/(n[r+1]-d))/(s-1)},getTangent:(o=new THREE.Vector3,i=new THREE.Vector3,function(e,t){var a,n=e-1e-4,r=e+1e-4;return n<0&&(n=0),r>1&&(r=1),this.getPoint(n,o),this.getPoint(r,i),t?(a=t).copy(i).sub(o):a=i.clone().sub(o),a.normalize()}),getTangentAt:function(e,t){var a=this.getUtoTmapping(e);return this.getTangent(a,t)},computeFrenetFrames:function(e,t){var s,o,i,c=new n,d=[],l=[],u=[],h=new n,m=new r;for(s=0;s<=e;s++)o=s/e,d[s]=this.getTangentAt(o),d[s].normalize();l[0]=new n,u[0]=new n;var p=Number.MAX_VALUE,f=Math.abs(d[0].x),b=Math.abs(d[0].y),y=Math.abs(d[0].z);for(f<=p&&(p=f,c.set(1,0,0)),b<=p&&(p=b,c.set(0,1,0)),y<=p&&c.set(0,0,1),h.crossVectors(d[0],c).normalize(),l[0].crossVectors(d[0],h),u[0].crossVectors(d[0],l[0]),s=1;s<=e;s++)l[s]=l[s-1].clone(),u[s]=u[s-1].clone(),h.crossVectors(d[s-1],d[s]),h.length()>Number.EPSILON&&(h.normalize(),i=Math.acos(a.clamp(d[s-1].dot(d[s]),-1,1)),l[s].applyMatrix4(m.makeRotationAxis(h,i))),u[s].crossVectors(d[s],l[s]);if(!0===t)for(i=Math.acos(a.clamp(l[0].dot(l[e]),-1,1)),i/=e,d[0].dot(h.crossVectors(l[0],l[e]))>0&&(i=-i),s=1;s<=e;s++)l[s].applyMatrix4(m.makeRotationAxis(d[s],i*s)),u[s].crossVectors(d[s],l[s]);return{tangents:d,normals:l,binormals:u}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){var e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),THREE.Curve=s},function(e,t){const a=THREE.Vector3,n=THREE.Curve;function r(){var e=0,t=0,a=0,n=0;function r(r,s,o,i){e=r,t=o,a=-3*r+3*s-2*o-i,n=2*r-2*s+o+i}return{initCatmullRom:function(e,t,a,n,s){r(t,a,s*(a-e),s*(n-t))},initNonuniformCatmullRom:function(e,t,a,n,s,o,i){var c=(t-e)/s-(a-e)/(s+o)+(a-t)/o,d=(a-t)/o-(n-t)/(o+i)+(n-a)/i;r(t,a,c*=o,d*=o)},calc:function(r){var s=r*r;return e+t*r+a*s+n*(s*r)}}}var s=new a,o=new r,i=new r,c=new r;function d(e,t,a,r){n.call(this),this.type="CatmullRomCurve3",this.points=e||[],this.closed=t||!1,this.curveType=a||"centripetal",this.tension=r||.5}d.prototype=Object.create(n.prototype),d.prototype.constructor=d,d.prototype.isCatmullRomCurve3=!0,d.prototype.getPoint=function(e,t){var n,r,d,l,u=t||new a,h=this.points,m=h.length,p=(m-(this.closed?0:1))*e,f=Math.floor(p),b=p-f;if(this.closed?f+=f>0?0:(Math.floor(Math.abs(f)/m)+1)*m:0===b&&f===m-1&&(f=m-2,b=1),this.closed||f>0?n=h[(f-1)%m]:(s.subVectors(h[0],h[1]).add(h[0]),n=s),r=h[f%m],d=h[(f+1)%m],this.closed||f+2{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;nthis.startTime+1e3&&(this.el.object3D.visible=!1,this.el.pause())}}),window.AFRAME){const t=["supercutfx"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0;e--)r=3*e,a[r]=a[r-3],a[r+1]=a[r-2],a[r+2]=a[r-1],r+=s,a[r]=a[r-3],a[r+1]=a[r-2],a[r+2]=a[r-1];this.target.getWorldPosition(n),a[0]=n.x,a[1]=n.y+o,a[2]=n.z-.1,a[s+0]=n.x,a[s+1]=n.y-o,a[s+2]=n.z-.1,this.geometry.attributes.position.needsUpdate=!0}}),window.AFRAME){const t=["tail"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=this.data.value&&(this.currentValue=this.data.value,this.data.emit&&this.el.emit("textcounterdone",null,!1),this.hasCompleted=!0),this.textValue.value=`${this.data.prefix}${this.decimals(this.currentValue)}${this.data.suffix}`,this.el.setAttribute("text",this.textValue))},decimals:function(e){var t=Math.pow(10,this.data.decimals);return(parseInt(e*t)/t).toFixed(this.data.decimals)}}),window.AFRAME){const t=["text-counter"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=t)return e.substring(0,t-3)+"...";return e}(this.data.value,this.data.length))}}),window.AFRAME){const t=["text-truncate"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;nthis.enabledTime+250&&(this.mesh.visible=!0),this.mesh.material.uniforms.pulse.value*=.9,this.sampleBladePosition())},pulse:function(){this.mesh.material.uniforms.pulse.value=1},addLayer:function(e){const t=this.bladeColor,a=this.colors,n=this.segments,r=this.vertices;let s=2/n;this.layers>=this.maxLayers&&(this.layers=0);const o=this.layers*e;e=o+e;const i=this.layers*n*18,c=this.layers*n*24;for(let d=0;d{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n1&&(a=1),t.getPointAt(a,e.object3D.position),t.alignToCurve(a,e.object3D),e.play(),this.tunnels.push(e),this.requestTunnel()},clearTunnels:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null);for(let e=0;ethis.curveFollowRig.object3D.position.z+5))return;{const t=this.tunnels.splice(e,1)[0];t.object3D.visible=!1,this.pool.returnEntity(t)}}}}),window.AFRAME){const t=["tunnels"],a=[],n=[];if(e.hot.dispose(e=>{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n=this.songPosition&&(this.isRaycastable=!0,this.el.setAttribute("data-wall-active",""),this.isCeiling||(this.el.setAttribute("data-weapon-particles",""),this.el.setAttribute("raycastable-game",""))),a>=this.backPosition+.01&&this.returnToPool()},onGenerate:function(e,t,a,n,r,s){const o=this.el;this.isCeiling=r,this.backPosition=s,this.songPosition=e,this.setWallGeometry(e,t,a,n,r),o.getObject3D("mesh").material.uniforms.opacity.value=0,o.object3D.position.y=-5,o.components.animation__fadein.beginAnimation(),o.components.animation__scalein.beginAnimation()},setWallGeometry:function(){const e=new THREE.Vector3,t=new THREE.Vector3,a=new THREE.Vector3;return function(n,r,s,o,i){const c=this.el.sceneEl.components["beat-system"],d=this.curveEl.components.supercurve,l=n,u=n+o/d.length,h=i?1.5:2.5,m=-1*c.horizontalPositions[r]-s/2+.25;t.x=m-s/2,a.x=m+s/2;const p=(this.geometry=new THREE.BoxBufferGeometry(s,h,1,1,1,30)).attributes.position.array;for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n{e.needsReplace=!0,t.forEach(e=>{delete AFRAME.components[e];const t=AFRAME.scenes[0].querySelectorAll(`[${e}]`);for(let a=0;a{delete AFRAME.shaders[e];const t=AFRAME.scenes[0].querySelectorAll("[material]");for(let a=0;a{delete AFRAME.systems[e],delete AFRAME.scenes[0].systems[e]})}),e.hot.data&&e.hot.data.needsReplace){t.forEach(e=>{const t="data-__hot-"+e,a=document.querySelectorAll(`[${t}]`);for(let n=0;n0,e.search.hasNext=e.search.page=t?e.substring(0,t-3)+"...":e:""}AFRAME.registerState({nonBindedStateKeys:["genres"],initialState:{activeHand:localStorage.getItem("hand")||"right",challenge:{audio:"",author:"",difficulty:"",beatmapCharacteristic:"",id:AFRAME.utils.getUrlParameter("challenge"),image:"",isBeatsPreloaded:!1,numBeats:void 0,songDuration:0,songName:"",songNameShort:"",songSubName:"",metadata:{}},colorPrimary:r.a.schemes[m].primary,colorScheme:m,colorSecondary:r.a.schemes[m].secondary,colorSecondaryBright:r.a.schemes[m].secondarybright,colorTertiary:r.a.schemes[m].tertiary,controllerType:"",damage:0,difficultyFilter:"All",difficultyFilterMenuOpen:!1,favorites:p,gameMode:"ride",genre:"",genres:a(195),genreMenuOpen:!1,has3DOFVR:!1,has6DOFVR:!1,hasSongLoadError:!1,hasVR:AFRAME.utils.device.checkHeadsetConnected()||"true"===AFRAME.utils.getUrlParameter("debugvr"),introActive:!h,inVR:"true"===AFRAME.utils.getUrlParameter("debugvr"),isIOS:AFRAME.utils.device.isIOS(),isGameOver:!1,isLoading:!1,isMenuOpening:!h,isPaused:!1,isPlaying:!1,isSearching:!1,isSongProcessing:!1,isVictory:!1,isZipFetching:!1,leaderboard:[],leaderboardFetched:!1,leaderboardQualified:!1,leaderboardNames:"",leaderboardScores:"",mainMenuActive:!1,menuActive:h,menuDifficulties:[],menuDifficultiesIds:[],menuSelectedChallenge:{author:"",difficulty:"",beatmapCharacteristic:"",downloads:"",downloadsText:"",genre:"",id:"",index:-1,image:"",isFavorited:!1,numBeats:void 0,songDuration:0,songInfoText:"",songLength:void 0,numBeats:void 0,songName:"",songSubName:"",version:"",metadata:{}},optionsMenuOpen:!1,playlist:"",playlists:a(196),playlistMenuOpen:!1,playlistTitle:"",score:{accuracy:100,accuracyScore:0,accuracyInt:100,activePanel:!1,beatsHit:0,beatsMissed:0,beatsText:"",combo:0,finalAccuracy:100,maxCombo:0,rank:"",score:0},search:{activePanel:!0,page:0,hasError:!1,hasNext:!1,hasPrev:!1,query:"",queryText:"",results:[],songNameTexts:"",songSubNameTexts:"",url:"",urlPage:0},searchResultsPage:[],speed:10,hitsDebugString:""},handlers:{activehandswap:e=>{e.activeHand="right"===e.activeHand?"left":"right",localStorage.setItem("activeHand",e.activeHand)},beathit:(e,t)=>{e.damage>.25&&(e.damage-=.25),e.score.beatsHit++,e.score.combo++,e.score.combo>e.score.maxCombo&&(e.score.maxCombo=e.score.combo),t.score=isNaN(t.score)?100:t.score,e.score.accuracyScore+=t.percent,e.score.score+=Math.floor(t.score),R(e)},beatmiss:e=>{e.score.beatsMissed++,w(e),R(e)},beatwrong:e=>{e.score.beatsMissed++,w(e),R(e)},beatloaderpreloadfinish:e=>{e.menuActive||(e.challenge.isBeatsPreloaded=!0)},colorschemechange:(e,t)=>{e.colorScheme=t,e.colorPrimary=r.a.schemes[t].primary,e.colorSecondary=r.a.schemes[t].secondary,e.colorSecondaryBright=r.a.schemes[t].secondarybright,e.colorTertiary=r.a.schemes[t].tertiary,localStorage.setItem("colorScheme",t)},controllerconnected:(e,t)=>{e.controllerType=t.name,e.has6DOFVR=-1!==["oculus-quest-controls","oculus-touch-controls","vive-controls","windows-motion-controls","generic-tracked-controller-controls"].indexOf(e.controllerType),e.has3DOFVR=-1!==["oculus-go-controls","daydream-controls"].indexOf(e.controllerType)},debugbeatpositioning:e=>{e.gameMode="classic",e.introActive=!1,e.menuActive=!1},debuggameplay:e=>{A(e),Object.assign(e.challenge,e.menuSelectedChallenge),e.menuActive=!1,e.menuSelectedChallenge.id="",e.isSearching=!1,e.isLoading=!1},debuggameover:e=>{e.isGameOver=!0,e.menuActive=!1},debugloading:e=>{u.id="-1",Object.assign(e.menuSelectedChallenge,u),Object.assign(e.challenge,u),e.menuActive=!1,e.isSongProcessing=!0},debugvictory:e=>{Object.assign(e.menuSelectedChallenge,u),Object.assign(e.challenge,u),e.isVictory=!0,e.leaderboardQualified=!0,e.menuActive=!1,e.score.accuracy=74.99,e.score.beatsHit=125,e.score.beatsMissed=125,e.score.maxCombo=123,e.score.rank="A",e.score.score=9001,e.introActive=!1,E(e)},difficultyfilter:(e,t)=>{e.difficultyFilter=t,e.difficultyFilterMenuOpen=!1,e.menuSelectedChallenge.id=""},difficultyfiltermenuclose:e=>{e.difficultyFilterMenuOpen=!1},difficultyfiltermenuopen:e=>{e.difficultyFilterMenuOpen=!0},displayconnected:e=>{if(e.hasVR=!0,!c)try{"getVRDisplays"in navigator&&navigator.getVRDisplays().then(e=>{e.length&&(c=!0)})}catch(e){}},favoritetoggle:e=>{const t=e.menuSelectedChallenge.id,a=o[t];if(a)if(e.menuSelectedChallenge.isFavorited){e.menuSelectedChallenge.isFavorited=!1;for(let a=0;ae.id===t).length)return;e.favorites.push(a),localStorage.setItem("favorites-v2",JSON.stringify(e.favorites))}},gamemenuresume:e=>{e.isPaused=!1},gamemenurestart:e=>{A(e),e.challenge.isBeatsPreloaded=!1,e.isGameOver=!1,e.isPaused=!1,e.isLoading=!0,e.isVictory=!1,e.leaderboardQualified=!1},gamemenuexit:e=>{A(e),e.challenge.isBeatsPreloaded=!1,e.isGameOver=!1,e.isPaused=!1,e.isVictory=!1,e.menuActive=!0,e.menuSelectedChallenge.id=e.challenge.id,e.menuSelectedChallenge.difficulty=e.challenge.difficulty,e.menuSelectedChallenge.beatmapCharacteristic=e.challenge.beatmapCharacteristic,e.menuSelectedChallenge.difficultyId=e.challenge.difficultyId,e.challenge.id="",e.leaderboardQualified=!1},gamemode:(e,t)=>{e.gameMode=t},genreclear:e=>{e.genre="",e.menuSelectedChallenge.id=""},genreselect:(e,t)=>{e.genre=t,e.genreMenuOpen=!1,e.menuSelectedChallenge.id="",e.playlist="",e.search.query=""},genremenuclose:e=>{e.genreMenuOpen=!1},genremenuopen:e=>{e.genreMenuOpen=!0},keyboardclose:e=>{e.isSearching=!1},keyboardopen:e=>{e.isSearching=!0,e.menuSelectedChallenge.id=""},leaderboard:(e,t)=>{e.leaderboard.length=0,e.leaderboardFetched=!0,e.leaderboardNames="",e.leaderboardScores="";for(let a=0;a{e.has6DOFVR&&(e.leaderboardQualified=!0)},leaderboardscoreadded:(e,t)=>{for(let a=0;a=e.leaderboard[a].score||a>=e.leaderboard.length-1){e.leaderboard.splice(a,0,t.scoreData);break}e.leaderboardNames="",e.leaderboardScores="";for(let t=0;t{e.leaderboardQualified=!1},menuback:e=>{e.difficultyFilterMenuOpen=!1,e.genreMenuOpen=!1,e.isSearching=!1,e.optionsMenuOpen=!1,e.playlistMenuOpen=!1},menuchallengeselect:(e,t)=>{let a=o[t];if(!a)return;Object.assign(e.menuSelectedChallenge,a),e.menuSelectedChallenge.songName=b(a.metadata.songName,24),e.menuDifficulties.length=0,e.menuDifficultiesIds.length=0;const n=JSON.parse(a.metadata.characteristics);for(const t of Object.keys(n))if(!["90Degree","360Degree"].includes(t))for(const a of Object.keys(n[t])){if(null===n[t][a])continue;let r=d[a],s=r;"Standard"!==t&&(s=t+"\n"+s),e.menuDifficulties.unshift({id:t+"-"+a,filename:a+t,difficultyName:r,renderName:s,beatmapCharacteristic:t,difficulty:a})}e.menuDifficulties.sort(v);for(const t of e.menuDifficulties)e.menuDifficultiesIds.push(t.id);const r=e.menuDifficulties[0];e.menuSelectedChallenge.difficulty=r.difficulty,e.menuSelectedChallenge.beatmapCharacteristic=r.beatmapCharacteristic,e.menuSelectedChallenge.difficultyId=r.id,e.menuSelectedChallenge.image=e.menuSelectedChallenge.coverURL,T(e,a),e.challenge.audio="",S(e),e.isSearching=!1;const s=!!e.favorites.filter(e=>e.id===t).length;e.menuSelectedChallenge.isFavorited=s,x(e),e.leaderboardLoading=!0,e.hasSongLoadError=!1,l[t]&&(e.hasSongLoadError=!0)},menuchallengeunselect:e=>{e.menuSelectedChallenge.id="",e.menuSelectedChallenge.difficultyId="",e.menuSelectedChallenge.difficulty="",e.menuSelectedChallenge.beatmapCharacteristic="",x(e)},menudifficultyselect:(e,t)=>{let a;for(const n of e.menuDifficulties)if(n.id===t){a=n;break}e.menuSelectedChallenge.difficultyId=t,e.menuSelectedChallenge.difficulty=a.difficulty,e.menuSelectedChallenge.beatmapCharacteristic=a.beatmapCharacteristic,T(e,e.menuSelectedChallenge),x(e),e.leaderboardLoading=!0},menuopeningend:e=>{e.isMenuOpening=!1},minehit:e=>{w(e)},optionsmenuopen:e=>{e.optionsMenuOpen=!0},pausegame:e=>{e.isPlaying&&(e.isPaused=!0)},playbuttonclick:e=>{if(""===e.menuSelectedChallenge.id)return;if(l[e.menuSelectedChallenge.id])return;let t="frontpage";e.playlist&&(t="playlist"),e.search.query&&(t="search"),e.genre&&(t="genre"),gtag("event","songsource",{event_label:t}),A(e),Object.assign(e.challenge,e.menuSelectedChallenge),gtag("event","difficulty",{event_label:e.challenge.difficulty}),e.menuActive=!1,e.menuSelectedChallenge.id="",e.menuSelectedChallenge.difficulty="",e.menuSelectedChallenge.beatmapCharacteristic="",e.isSearching=!1,e.isLoading=!0,e.loadingText="Loading...",gtag("event","colorscheme",{event_label:e.colorScheme})},playlistclear:(e,t)=>{e.menuSelectedChallenge.id="",e.playlist=""},playlistselect:(e,t)=>{e.genre="",e.menuSelectedChallenge.id="",e.playlist=t.id,e.playlistTitle=t.title,e.playlistMenuOpen=!1,e.search.query=""},playlistmenuclose:e=>{e.playlistMenuOpen=!1},playlistmenuopen:e=>{e.playlistMenuOpen=!0},searcherror:(e,t)=>{e.search.hasError=!0},searchprevpage:e=>{0!==e.search.page&&(e.search.page--,f(e))},searchnextpage:e=>{e.search.page>Math.floor(e.search.results.length/6)||(e.search.page++,f(e),void 0!==e.search.url&&e.search.page+3>Math.floor(e.search.results.length/6)&&(e.search.urlPage=e.search.urlPage+1,fetch(e.search.url.replaceAll("CURRENT_PAGE_INDEX",e.search.urlPage)).then(e=>e.json()).then(t=>{var a=(t.docs||t.maps).map(s);for(e.search.results.push(...a),i=0;i{var a;for(e.search.hasError=!1,e.search.page=0,e.search.url=t.url,e.search.urlPage=t.urlPage,e.search.query=t.query,e.search.queryText=b(t.query,10),e.search.results=t.results,a=0;a{if(gtag("event","songcomplete",{event_label:e.gameMode}),"ride"===e.gameMode||!e.inVR)return e.challenge.isBeatsPreloaded=!1,e.isVictory=!1,e.menuActive=!0,void(e.challenge.id="");e.isVictory=!0,e.score.score=isNaN(e.score.score)?0:e.score.score,R(e),e.score.finalAccuracy=e.score.accuracy;const t=parseFloat(e.score.accuracy);e.score.rank=t>=97?"S":t>=90?"A":t>=80?"B":t>=70?"C":t>=60?"D":"F",E(e)},songloadcancel:e=>{e.challenge.isBeatsPreloaded=!1,e.challenge.audio="",e.challenge.id="",e.challenge.version="",e.isZipFetching=!1,e.isLoading=!1,e.isSongProcessing=!1,e.menuActive=!0},songloaderror:e=>{l[e.menuSelectedChallenge.id||e.challenge.id]=!0,e.hasSongLoadError=!0,e.loadingText="Sorry! There was an error loading this song.\nPlease select another song.",e.challenge.id="",e.challenge.isBeatsPreloaded=!1,e.isSongProcessing=!1,e.isZipFetching=!1},songprocessfinish:e=>{e.isSongProcessing=!1,e.isLoading=!1},songprocessstart:e=>{e.isSongProcessing=!0,e.loadingText="Wrapping up..."},"enter-vr":e=>{e.inVR=AFRAME.utils.device.checkHeadsetConnected(),AFRAME.utils.device.isMobile()||(gtag("event","entervr",{}),AFRAME.utils.device.isOculusBrowser()&>ag("event","oculusbrowser",{}))},"exit-vr":e=>{e.inVR=!1,e.isPlaying&&(e.isPaused=!0)},startgame:e=>{e.introActive=!1,e.menuActive=!0},victoryfake:e=>{e.score.accuracy="74.99",e.score.rank="C"},wallhitstart:e=>{w(e)},ziploaderend:(e,t)=>{e.challenge.audio=t.audio,e.hasSongLoadError=!1,e.menuSelectedChallenge.version="",e.isZipFetching=!1},ziploaderstart:e=>{e.challenge.isBeatsPreloaded=!1,e.isZipFetching=!0},debughits:e=>{e.enableHitsDebug=!0},setHitsDebug:(e,t)=>{e.enableHitsDebug&&(e.hitsDebugString="HitDataV7 "+JSON.stringify(t,null,2))}},computeState:e=>{e.isPlaying=!(e.menuActive||e.isLoading||e.isPaused||e.isVictory||e.isGameOver||e.isZipFetching||e.isSongProcessing||!e.challenge.id||e.introActive);const t=e.menuActive||e.isPaused||e.isVictory||e.isGameOver||e.isLoading||e.introActive;e.leftRaycasterActive=t&&"left"===e.activeHand&&e.inVR,e.rightRaycasterActive=t&&"right"===e.activeHand&&e.inVR,e.mainMenuActive=e.menuActive&&!e.genreMenuOpen&&!e.difficultyFilterMenuOpen&&!e.playlistMenuOpen&&!e.optionsMenuOpen&&!e.isSearching,e.score.active="ride"!==e.gameMode&&e.inVR&&(e.isPlaying||e.isPaused)}});const y=["easy","normal","hard","expert","expertPlus"],g=["Standard"];function v(e,t){const a=y.indexOf(e.difficulty),n=y.indexOf(t.difficulty);if(an)return 1;const r=g.indexOf(e.beatmapCharacteristic),s=g.indexOf(t.beatmapCharacteristic);return r>s?-1:r=0&&u.splice(t,1)}function y(e){var t=document.createElement("style");if(void 0===e.attrs.type&&(e.attrs.type="text/css"),void 0===e.attrs.nonce){var n=function(){0;return a.nc}();n&&(e.attrs.nonce=n)}return g(t,e.attrs),f(e,t),t}function g(e,t){Object.keys(t).forEach((function(a){e.setAttribute(a,t[a])}))}function v(e,t){var a,n,r,s;if(t.transform&&e.css){if(!(s="function"==typeof t.transform?t.transform(e.css):t.transform.default(e.css)))return function(){};e.css=s}if(t.singleton){var o=l++;a=d||(d=y(t)),n=S.bind(null,a,o,!1),r=S.bind(null,a,o,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(a=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",g(t,e.attrs),f(e,t),t}(t),n=x.bind(null,a,t),r=function(){b(a),a.href&&URL.revokeObjectURL(a.href)}):(a=y(t),n=E.bind(null,a),r=function(){b(a)});return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else r()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var a=p(e,t);return m(a,t),function(e){for(var n=[],r=0;r\n\n \n\n \n\n \n \n\n \n \n\n \n \n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \x3c!-- --\x3e\n --\x3e\n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\x3c!-- Macro is a templating function. It is rendered into the HTML below with searchResults(). --\x3e\n\n\n\n\n\n\n\x3c!-- Menu container begins here. --\x3e\n\n\n \n\n \n \n\n \n\x3c!-- TODO: Sort the layout based on the IDs. --\x3e\n\n\n\n\x3c!-- All search result text merged and spaced out. --\x3e\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n \n\n\n \n\n \n\n \x3c!-- Top-aligned. --\x3e\n \x3c!-- Uses bind-for and bind-item to render difficulties. --\x3e\n \n \n \n \n \n \n\n \x3c!-- Selected challenge info. --\x3e\n \n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n \n \n \n\n \n\n \n \n\n \n \n \n\n \x3c!-- --\x3e\n\n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n \n\n\x3c!-- --\x3e\n\n\n\x3c!-- Search. --\x3e\n\n\n\n\n \n \n\n\n\x3c!-- Top menu buttons. --\x3e\n\n\n\n\n \x3c!-- Playlist menu toggle. --\x3e\n \n \n \n \n\n \n \n \n\n \n \n\n \x3c!-- Search toggle. --\x3e\n \n \n \n \n\n \n \n \n\n \n \n\n \x3c!-- Difficulty menu toggle. --\x3e\n \x3c!-- \n \n \n \n\n \n --\x3e\n\n \x3c!-- Genre menu toggle. --\x3e\n \n \n \n \n\n \n \n \n\n \n \n\n\n\x3c!-- Options menu toggle. --\x3e\n\n \n \n \n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n \n \n\n\n \n \n \n \n\n\n \n\n\n \n \n \n \n\n\n \n\n \n \n\n\n \n \n \n \n\n\n \n\n\n \n \n \n \n\n\n \n\n\n \n \n \n \n\n\n \n\n \n\n \n\n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\x3c!-- Victory. --\x3e\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n \n\n \n \n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n\n \n \n \x3c!--slice9="width: 1.5; height: 0.24"--\x3e\n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n\n\n\n\n\n\n \n\n \n\n\n\n\n \n\n \n\n \n\n\x3c!-- --\x3e\n\n \n\n \n\n \n\n \n\n \n\n \n\n \x3c!-- --\x3e\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n \n \n\n \n \n\n \n \n\n\x3c!-- --\x3e\n \x3c!-- --\x3e\n\n\n\n\n\x3c!-- Titles. --\x3e\n\n \n \n \n\n\n\n\n \x3c!-- Actions. --\x3e\n \n \n \n\n \n \n \n\n \n \n \n\n \x3c!-- Song info. --\x3e\n \n \n\n \n\n \n \n \n \n \n\n\x3c!-- --\x3e\n\n \x3c!-- Beat pieces, explosions, fx, and weapon trail. --\x3e\n \n\n \x3c!-- Supercut FX rings. --\x3e\n \n \n \n \n \n \n \n \n \n\n \x3c!-- Player. --\x3e\n \n \n \n \n\n \n \n\n \n \n \n \n \n\n \x3c!-- Blade. --\x3e\n \n \n \n \n \n \n\n \n \n \n \n\n \x3c!-- Punch. --\x3e\n \n \n \n \n \n\n \x3c!-- Ride. --\x3e\n \n \n \n \n\n \n \n \n \n \n \n \n\n \x3c!-- Blade. --\x3e\n \n \n \n \n \n \n\n \n \n \n \n\n \x3c!-- Punch. --\x3e\n \n \n \n \n \n\n \x3c!-- Ride. --\x3e\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n\n \n \n\n';document.addEventListener("DOMContentLoaded",(function(){let e=document.getElementById("app");e||(e=document.createElement("div"),e.id="app",document.body.appendChild(e));e.innerHTML=n}));{const t=a(236).DiffDOM;if(e.hot.accept(),e.hot.data&&e.hot.data.oldHtml){const a=e.hot.data.oldHtml,r=new t,s=document.createElement("div");s.innerHTML=a;const o=document.createElement("div");o.innerHTML=n;const i=r.diff(s.querySelector("a-scene"),o.querySelector("a-scene"));r.apply(document.querySelector("a-scene"),i)}e.hot.dispose(e=>{e.oldHtml=n})}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";function n(e,t,a){let r;return"#text"===e.nodeName?r=a.document.createTextNode(e.data):"#comment"===e.nodeName?r=a.document.createComment(e.data):("svg"===e.nodeName||t?(r=a.document.createElementNS("http://www.w3.org/2000/svg",e.nodeName),t=!0):r=a.document.createElement(e.nodeName),e.attributes&&Object.entries(e.attributes).forEach(([e,t])=>r.setAttribute(e,t)),e.childNodes&&e.childNodes.forEach(e=>r.appendChild(n(e,t,a))),a.valueDiffing&&(e.value&&(r.value=e.value),e.checked&&(r.checked=e.checked),e.selected&&(r.selected=e.selected))),r}function r(e,t){for(t=t.slice();t.length>0;){if(!e.childNodes)return!1;const a=t.splice(0,1)[0];e=e.childNodes[a]}return e}function s(e,t,a){let s,o,i,c,d,l=r(e,t[a._const.route]);const u={diff:t,node:l};if(a.preDiffApply(u))return!0;switch(t[a._const.action]){case a._const.addAttribute:if(!l||!l.setAttribute)return!1;l.setAttribute(t[a._const.name],t[a._const.value]);break;case a._const.modifyAttribute:if(!l||!l.setAttribute)return!1;l.setAttribute(t[a._const.name],t[a._const.newValue]),"INPUT"===l.nodeName&&"value"===t[a._const.name]&&(l.value=t[a._const.oldValue]);break;case a._const.removeAttribute:if(!l||!l.removeAttribute)return!1;l.removeAttribute(t[a._const.name]);break;case a._const.modifyTextElement:if(!l||3!==l.nodeType)return!1;a.textDiff(l,l.data,t[a._const.oldValue],t[a._const.newValue]);break;case a._const.modifyValue:if(!l||void 0===l.value)return!1;l.value=t[a._const.newValue];break;case a._const.modifyComment:if(!l||void 0===l.data)return!1;a.textDiff(l,l.data,t[a._const.oldValue],t[a._const.newValue]);break;case a._const.modifyChecked:if(!l||void 0===l.checked)return!1;l.checked=t[a._const.newValue];break;case a._const.modifySelected:if(!l||void 0===l.selected)return!1;l.selected=t[a._const.newValue];break;case a._const.replaceElement:l.parentNode.replaceChild(n(t[a._const.newValue],"http://www.w3.org/2000/svg"===l.namespaceURI,a),l);break;case a._const.relocateGroup:c=Array(...new Array(t.groupLength)).map(()=>l.removeChild(l.childNodes[t[a._const.from]])),c.forEach((e,n)=>{0===n&&(o=l.childNodes[t[a._const.to]]),l.insertBefore(e,o||null)});break;case a._const.removeElement:l.parentNode.removeChild(l);break;case a._const.addElement:i=t[a._const.route].slice(),d=i.splice(i.length-1,1)[0],l=r(e,i),l.insertBefore(n(t[a._const.element],"http://www.w3.org/2000/svg"===l.namespaceURI,a),l.childNodes[d]||null);break;case a._const.removeTextElement:if(!l||3!==l.nodeType)return!1;l.parentNode.removeChild(l);break;case a._const.addTextElement:if(i=t[a._const.route].slice(),d=i.splice(i.length-1,1)[0],s=a.document.createTextNode(t[a._const.value]),l=r(e,i),!l||!l.childNodes)return!1;l.insertBefore(s,l.childNodes[d]||null);break;default:console.log("unknown action")}return u.newNode=s,a.postDiffApply(u),!0}function o(e,t,a){const n=e[t];e[t]=e[a],e[a]=n}function i(e,t,a){t.length||(t=[t]),(t=t.slice()).reverse(),t.forEach(t=>{!function(e,t,a){switch(t[a._const.action]){case a._const.addAttribute:t[a._const.action]=a._const.removeAttribute,s(e,t,a);break;case a._const.modifyAttribute:o(t,a._const.oldValue,a._const.newValue),s(e,t,a);break;case a._const.removeAttribute:t[a._const.action]=a._const.addAttribute,s(e,t,a);break;case a._const.modifyTextElement:case a._const.modifyValue:case a._const.modifyComment:case a._const.modifyChecked:case a._const.modifySelected:case a._const.replaceElement:o(t,a._const.oldValue,a._const.newValue),s(e,t,a);break;case a._const.relocateGroup:o(t,a._const.from,a._const.to),s(e,t,a);break;case a._const.removeElement:t[a._const.action]=a._const.addElement,s(e,t,a);break;case a._const.addElement:t[a._const.action]=a._const.removeElement,s(e,t,a);break;case a._const.removeTextElement:t[a._const.action]=a._const.addTextElement,s(e,t,a);break;case a._const.addTextElement:t[a._const.action]=a._const.removeTextElement,s(e,t,a);break;default:console.log("unknown action")}}(e,t,a)})}a.r(t),a.d(t,"DiffDOM",(function(){return x})),a.d(t,"TraceLogger",(function(){return T}));class c{constructor(e={}){Object.entries(e).forEach(([e,t])=>this[e]=t)}toString(){return JSON.stringify(this)}setValue(e,t){return this[e]=t,this}}function d(e){const t=[];return"#text"!==e.nodeName&&"#comment"!==e.nodeName&&(t.push(e.nodeName),e.attributes&&(e.attributes.class&&t.push(`${e.nodeName}.${e.attributes.class.replace(/ /g,".")}`),e.attributes.id&&t.push(`${e.nodeName}#${e.attributes.id}`))),t}function l(e){const t={},a={};return e.forEach(e=>{d(e).forEach(e=>{const n=e in t;n||e in a?n&&(delete t[e],a[e]=!0):t[e]=!0})}),t}function u(e,t){const a=l(e),n=l(t),r={};return Object.keys(a).forEach(e=>{n[e]&&(r[e]=!0)}),r}function h(e){return delete e.outerDone,delete e.innerDone,delete e.valueDone,!e.childNodes||e.childNodes.every(h)}function m(e,t){if(!["nodeName","value","checked","selected","data"].every(a=>e[a]===t[a]))return!1;if(Boolean(e.attributes)!==Boolean(t.attributes))return!1;if(Boolean(e.childNodes)!==Boolean(t.childNodes))return!1;if(e.attributes){const a=Object.keys(e.attributes),n=Object.keys(t.attributes);if(a.length!==n.length)return!1;if(!a.every(a=>e.attributes[a]===t.attributes[a]))return!1}if(e.childNodes){if(e.childNodes.length!==t.childNodes.length)return!1;if(!e.childNodes.every((e,a)=>m(e,t.childNodes[a])))return!1}return!0}function p(e,t,a,n,r){if(!e||!t)return!1;if(e.nodeName!==t.nodeName)return!1;if("#text"===e.nodeName)return!!r||e.data===t.data;if(e.nodeName in a)return!0;if(e.attributes&&t.attributes){if(e.attributes.id){if(e.attributes.id!==t.attributes.id)return!1;if(`${e.nodeName}#${e.attributes.id}`in a)return!0}if(e.attributes.class&&e.attributes.class===t.attributes.class){if(`${e.nodeName}.${e.attributes.class.replace(/ /g,".")}`in a)return!0}}if(n)return!0;const s=e.childNodes?e.childNodes.slice().reverse():[],o=t.childNodes?t.childNodes.slice().reverse():[];if(s.length!==o.length)return!1;if(r)return s.every((e,t)=>e.nodeName===o[t].nodeName);{const e=u(s,o);return s.every((t,a)=>p(t,o[a],e,!0,!0))}}function f(e){return JSON.parse(JSON.stringify(e))}function b(e,t,a,n){let r=0,s=[];const o=e.length,i=t.length,c=Array(...new Array(o+1)).map(()=>[]),l=u(e,t);let h=o===i;h&&e.some((e,a)=>{const n=d(e),r=d(t[a]);return n.length!==r.length?(h=!1,!0):(n.some((e,t)=>{if(e!==r[t])return h=!1,!0}),!h||void 0)});for(let d=0;d=r&&(r=c[d+1][e+1],s=[d+1,e+1]))}}return 0!==r&&{oldValue:s[0]-r,newValue:s[1]-r,length:r}}function y(e,t){return Array(...new Array(e)).map(()=>t)}class g{constructor(){this.list=[]}add(e){this.list.push(...e)}forEach(e){this.list.forEach(t=>e(t))}}function v(e,t){let a,n,r=e;for(t=t.slice();t.length>0;){if(!r.childNodes)return!1;n=t.splice(0,1)[0],a=r,r=r.childNodes[n]}return{node:r,parentNode:a,nodeIndex:n}}function w(e,t,a){return t.forEach(t=>{!function(e,t,a){const n=v(e,t[a._const.route]);let r=n.node;const s=n.parentNode,o=n.nodeIndex,i=[],c={diff:t,node:r};if(a.preDiffApply(c))return!0;let d,l,u,h;switch(t[a._const.action]){case a._const.addAttribute:r.attributes||(r.attributes={}),r.attributes[t[a._const.name]]=t[a._const.value],"checked"===t[a._const.name]?r.checked=!0:"selected"===t[a._const.name]?r.selected=!0:"INPUT"===r.nodeName&&"value"===t[a._const.name]&&(r.value=t[a._const.value]);break;case a._const.modifyAttribute:r.attributes[t[a._const.name]]=t[a._const.newValue];break;case a._const.removeAttribute:delete r.attributes[t[a._const.name]],0===Object.keys(r.attributes).length&&delete r.attributes,"checked"===t[a._const.name]?r.checked=!1:"selected"===t[a._const.name]?delete r.selected:"INPUT"===r.nodeName&&"value"===t[a._const.name]&&delete r.value;break;case a._const.modifyTextElement:r.data=t[a._const.newValue];break;case a._const.modifyValue:r.value=t[a._const.newValue];break;case a._const.modifyComment:r.data=t[a._const.newValue];break;case a._const.modifyChecked:r.checked=t[a._const.newValue];break;case a._const.modifySelected:r.selected=t[a._const.newValue];break;case a._const.replaceElement:d=f(t[a._const.newValue]),d.outerDone=!0,d.innerDone=!0,d.valueDone=!0,s.childNodes[o]=d;break;case a._const.relocateGroup:l=r.childNodes.splice(t[a._const.from],t.groupLength).reverse(),l.forEach(e=>r.childNodes.splice(t[a._const.to],0,e)),r.subsets&&r.subsets.forEach(e=>{if(t[a._const.from]t[a._const.from]){e.oldValue-=t.groupLength;const n=e.oldValue+e.length-t[a._const.to];n>0&&(i.push({oldValue:t[a._const.to]+t.groupLength,newValue:e.newValue+e.length-n,length:n}),e.length-=n)}else if(t[a._const.from]>t[a._const.to]&&e.oldValue>t[a._const.to]&&e.oldValue0&&(i.push({oldValue:t[a._const.to]+t.groupLength,newValue:e.newValue+e.length-n,length:n}),e.length-=n)}else e.oldValue===t[a._const.from]&&(e.oldValue=t[a._const.to])});break;case a._const.removeElement:s.childNodes.splice(o,1),s.subsets&&s.subsets.forEach(e=>{e.oldValue>o?e.oldValue-=1:e.oldValue===o?e.delete=!0:e.oldValueo&&(e.oldValue+e.length-1===o?e.length--:(i.push({newValue:e.newValue+o-e.oldValue,oldValue:o,length:e.length-o+e.oldValue-1}),e.length=o-e.oldValue))}),r=s;break;case a._const.addElement:u=t[a._const.route].slice(),h=u.splice(u.length-1,1)[0],r=v(e,u).node,d=f(t[a._const.element]),d.outerDone=!0,d.innerDone=!0,d.valueDone=!0,r.childNodes||(r.childNodes=[]),h>=r.childNodes.length?r.childNodes.push(d):r.childNodes.splice(h,0,d),r.subsets&&r.subsets.forEach(e=>{if(e.oldValue>=h)e.oldValue+=1;else if(e.oldValueh){const t=e.oldValue+e.length-h;i.push({newValue:e.newValue+e.length-t,oldValue:h+1,length:t}),e.length-=t}});break;case a._const.removeTextElement:s.childNodes.splice(o,1),"TEXTAREA"===s.nodeName&&delete s.value,s.subsets&&s.subsets.forEach(e=>{e.oldValue>o?e.oldValue-=1:e.oldValue===o?e.delete=!0:e.oldValueo&&(e.oldValue+e.length-1===o?e.length--:(i.push({newValue:e.newValue+o-e.oldValue,oldValue:o,length:e.length-o+e.oldValue-1}),e.length=o-e.oldValue))}),r=s;break;case a._const.addTextElement:u=t[a._const.route].slice(),h=u.splice(u.length-1,1)[0],d={},d.nodeName="#text",d.data=t[a._const.value],r=v(e,u).node,r.childNodes||(r.childNodes=[]),h>=r.childNodes.length?r.childNodes.push(d):r.childNodes.splice(h,0,d),"TEXTAREA"===r.nodeName&&(r.value=t[a._const.newValue]),r.subsets&&r.subsets.forEach(e=>{if(e.oldValue>=h&&(e.oldValue+=1),e.oldValueh){const t=e.oldValue+e.length-h;i.push({newValue:e.newValue+e.length-t,oldValue:h+1,length:t}),e.length-=t}});break;default:console.log("unknown action")}r.subsets&&(r.subsets=r.subsets.filter(e=>!e.delete&&e.oldValue!==e.newValue),i.length&&(r.subsets=r.subsets.concat(i))),c.newNode=d,a.postDiffApply(c)}(e,t,a)}),!0}function A(e,t){const a={};if(a.nodeName=e.nodeName,"#text"===a.nodeName||"#comment"===a.nodeName)a.data=e.data;else{if(e.attributes&&e.attributes.length>0){a.attributes={};Array.prototype.slice.call(e.attributes).forEach(e=>a.attributes[e.name]=e.value)}if("TEXTAREA"===a.nodeName)a.value=e.value;else if(e.childNodes&&e.childNodes.length>0){a.childNodes=[];Array.prototype.slice.call(e.childNodes).forEach(e=>a.childNodes.push(A(e,t)))}t.valueDiffing&&(void 0!==e.checked&&e.type&&["radio","checkbox"].includes(e.type.toLowerCase())?a.checked=e.checked:void 0!==e.value&&(a.value=e.value),void 0!==e.selected&&(a.selected=e.selected))}return a}class S{constructor(e,t,a){this.options=a,this.t1=A(e,this.options),this.t2=A(t,this.options),this.diffcount=0,this.foundAll=!1,this.debug&&(this.t1Orig=A(e,this.options),this.t2Orig=A(t,this.options)),this.tracker=new g}init(){return this.findDiffs(this.t1,this.t2)}findDiffs(e,t){let a;do{if(this.options.debug&&(this.diffcount+=1,this.diffcount>this.options.diffcap))throw window.diffError=[this.t1Orig,this.t2Orig],new Error(`surpassed diffcap:${JSON.stringify(this.t1Orig)} -> ${JSON.stringify(this.t2Orig)}`);a=this.findNextDiff(e,t,[]),0===a.length&&(m(e,t)||(this.foundAll?(console.error("Could not find remaining diffs!"),console.log({t1:e,t2:t})):(this.foundAll=!0,h(e),a=this.findNextDiff(e,t,[])))),a.length>0&&(this.foundAll=!1,this.tracker.add(a),w(e,a,this.options))}while(a.length>0);return this.tracker.list}findNextDiff(e,t,a){let n,r;if(this.options.maxDepth&&a.length>this.options.maxDepth)return[];if(!e.outerDone){if(n=this.findOuterDiff(e,t,a),this.filterOuterDiff&&(r=this.filterOuterDiff(e,t,n),r&&(n=r)),n.length>0)return e.outerDone=!0,n;e.outerDone=!0}if(!e.innerDone){if(n=this.findInnerDiff(e,t,a),n.length>0)return n;e.innerDone=!0}if(this.options.valueDiffing&&!e.valueDone){if(n=this.findValueDiff(e,t,a),n.length>0)return e.valueDone=!0,n;e.valueDone=!0}return[]}findOuterDiff(e,t,a){const n=[];let r,s,o,i,d,l;if(e.nodeName!==t.nodeName)return[(new c).setValue(this.options._const.action,this.options._const.replaceElement).setValue(this.options._const.oldValue,f(e)).setValue(this.options._const.newValue,f(t)).setValue(this.options._const.route,a)];if(a.length&&this.options.maxChildCount&&e.childNodes&&t.childNodes&&e.childNodes.length>this.options.maxChildCount&&t.childNodes.length>this.options.maxChildCount){const n=e.childNodes.length{r[i.oldValue+e]=!0,s[i.newValue+e]=!0};for(;i;)if(i=b(a,n,r,s),i){o.push(i);Array(...new Array(i.length)).map(c).forEach(e=>d(e))}return e.subsets=o,e.subsetsAge=100,o}(e,t):[],r=e.childNodes?e.childNodes:[],s=t.childNodes?t.childNodes:[];let o,i=[],d=0;if(n.length>0&&(i=this.attemptGroupRelocation(e,t,n,a),i.length>0))return i;const l=Math.max(r.length,s.length);r.length!==s.length&&(o=!0);for(let e=0;e{const t=e.oldValue+e.length,a=e.newValue+e.length;for(let a=e.oldValue;am+1&&"#text"===e.childNodes[m+1].nodeName;)if(m+=1,t.childNodes[r].data===e.childNodes[m].data){h=!0;break}if(!h)return g.push((new c).setValue(this.options._const.action,this.options._const.modifyTextElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.oldValue,u.data).setValue(this.options._const.newValue,t.childNodes[r].data)),g}g.push((new c).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.value,u.data)),s.splice(r,1),b=Math.min(s.length,o.length),r-=1}else g.push((new c).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.element,f(u))),s.splice(r,1),b=Math.min(s.length,o.length),r-=1;else if(!0===o[r])u=t.childNodes[r],"#text"===u.nodeName?(g.push((new c).setValue(this.options._const.action,this.options._const.addTextElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.value,u.data)),s.splice(r,0,!0),b=Math.min(s.length,o.length),y-=1):(g.push((new c).setValue(this.options._const.action,this.options._const.addElement).setValue(this.options._const.route,n.concat(r)).setValue(this.options._const.element,f(u))),s.splice(r,0,!0),b=Math.min(s.length,o.length),y-=1);else if(s[r]!==o[r]){if(g.length>0)return g;if(l=a[s[r]],d=Math.min(l.newValue,e.childNodes.length-l.length),d!==l.oldValue){i=!1;for(let t=0;t{Object.prototype.hasOwnProperty.call(this.options,e)||(this.options[e]=t)}),!this.options._const){const e=["addAttribute","modifyAttribute","removeAttribute","modifyTextElement","relocateGroup","removeElement","addElement","removeTextElement","addTextElement","replaceElement","modifyValue","modifyChecked","modifySelected","modifyComment","action","route","oldValue","newValue","element","group","from","to","name","value","data","attributes","nodeName","childNodes","checked","selected"];this.options._const={},this.options.compress?e.forEach((e,t)=>this.options._const[e]=t):e.forEach(e=>this.options._const[e]=e)}this.DiffFinder=S}apply(e,t){return function(e,t,a){return t.every(t=>s(e,t,a))}(e,t,this.options)}undo(e,t){return i(e,t,this.options)}diff(e,t){return new this.DiffFinder(e,t,this.options).init()}}class T{constructor(e={}){this.pad="│ ",this.padding="",this.tick=1,this.messages=[];const t=(e,t)=>{const a=e[t];e[t]=(...n)=>{this.fin(t,Array.prototype.slice.call(n));const r=a.apply(e,n);return this.fout(t,r),r}};for(let a in e)"function"==typeof e[a]&&t(e,a);this.log("┌ TRACELOG START")}fin(e,t){this.padding+=this.pad,this.log("├─> entering "+e,t)}fout(e,t){this.log("│<──┘ generated return value",t),this.padding=this.padding.substring(0,this.padding.length-this.pad.length)}format(e,t){return`${function(e){for(e=""+e;e.length<4;)e="0"+e;return e}(t)}> ${this.padding}${e}`}log(){let e=Array.prototype.slice.call(arguments);const t=function(e){return e?"string"==typeof e?e:e instanceof HTMLElement?e.outerHTML||"":e instanceof Array?`[${e.map(t).join(",")}]`:e.toString()||e.valueOf()||"":""};e=e.map(t).join(", "),this.messages.push(this.format(e,this.tick++))}toString(){let e="└───";for(;e.length<=this.padding.length+this.pad.length;)e+="× ";let t=this.padding;return this.padding="",e=this.format(e,this.tick),this.padding=t,`${this.messages.join("\n")}\n${e}`}}}]); \ No newline at end of file diff --git a/build/zip.js b/build/zip.js index 1dbbc510..7b604f21 100644 --- a/build/zip.js +++ b/build/zip.js @@ -1,8 +1,8 @@ -!function(e){var t=this.webpackHotUpdate;this.webpackHotUpdate=function(e,n){!function(e,t){if(!w[e]||!v[e])return;for(var n in v[e]=!1,t)Object.prototype.hasOwnProperty.call(t,n)&&(p[n]=t[n]);0==--b&&0===y&&x()}(e,n),t&&t(e,n)};var n,r=!0,i="e16857bdd73fadc8c7c1",o={},a=[],s=[];function l(e){var t=R[e];if(!t)return O;var r=function(r){return t.hot.active?(R[r]?-1===R[r].parents.indexOf(e)&&R[r].parents.push(e):(a=[e],n=r),-1===t.children.indexOf(r)&&t.children.push(r)):(console.warn("[HMR] unexpected require("+r+") from disposed module "+e),a=[]),O(r)},i=function(e){return{configurable:!0,enumerable:!0,get:function(){return O[e]},set:function(t){O[e]=t}}};for(var o in O)Object.prototype.hasOwnProperty.call(O,o)&&"e"!==o&&"t"!==o&&Object.defineProperty(r,o,i(o));return r.e=function(e){return"ready"===h&&c("prepare"),y++,O.e(e).then(t,(function(e){throw t(),e}));function t(){y--,"prepare"===h&&(m[e]||S(e),0===y&&0===b&&x())}},r.t=function(e,t){return 1&t&&(e=r(e)),O.t(e,-2&t)},r}function u(t){var r={_acceptedDependencies:{},_declinedDependencies:{},_selfAccepted:!1,_selfDeclined:!1,_selfInvalidated:!1,_disposeHandlers:[],_main:n!==t,active:!0,accept:function(e,t){if(void 0===e)r._selfAccepted=!0;else if("function"==typeof e)r._selfAccepted=e;else if("object"==typeof e)for(var n=0;n=0&&r._disposeHandlers.splice(t,1)},invalidate:function(){switch(this._selfInvalidated=!0,h){case"idle":(p={})[t]=e[t],c("ready");break;case"ready":A(t);break;case"prepare":case"check":case"dispose":case"apply":(g=g||[]).push(t)}},check:k,apply:T,status:function(e){if(!e)return h;f.push(e)},addStatusHandler:function(e){f.push(e)},removeStatusHandler:function(e){var t=f.indexOf(e);t>=0&&f.splice(t,1)},data:o[t]};return n=void 0,r}var f=[],h="idle";function c(e){h=e;for(var t=0;t0;){var i=r.pop(),o=i.id,a=i.chain;if((f=R[o])&&(!f.hot._selfAccepted||f.hot._selfInvalidated)){if(f.hot._selfDeclined)return{type:"self-declined",chain:a,moduleId:o};if(f.hot._main)return{type:"unaccepted",chain:a,moduleId:o};for(var s=0;s ")),x.type){case"self-declined":r.onDeclined&&r.onDeclined(x),r.ignoreDeclined||(T=new Error("Aborted because of self decline: "+x.moduleId+U));break;case"declined":r.onDeclined&&r.onDeclined(x),r.ignoreDeclined||(T=new Error("Aborted because of declined dependency: "+x.moduleId+" in "+x.parentId+U));break;case"unaccepted":r.onUnaccepted&&r.onUnaccepted(x),r.ignoreUnaccepted||(T=new Error("Aborted because "+h+" is not accepted"+U));break;case"accepted":r.onAccepted&&r.onAccepted(x),A=!0;break;case"disposed":r.onDisposed&&r.onDisposed(x),I=!0;break;default:throw new Error("Unexception type "+x.type)}if(T)return c("abort"),Promise.reject(T);if(A)for(h in v[h]=p[h],b(m,x.outdatedModules),x.outdatedDependencies)Object.prototype.hasOwnProperty.call(x.outdatedDependencies,h)&&(y[h]||(y[h]=[]),b(y[h],x.outdatedDependencies[h]));I&&(b(m,[x.moduleId]),v[h]=k)}var z,D=[];for(l=0;l0;)if(h=B.pop(),f=R[h]){var P={},F=f.hot._disposeHandlers;for(u=0;u=0&&C.parents.splice(z,1))}}for(h in y)if(Object.prototype.hasOwnProperty.call(y,h)&&(f=R[h]))for(N=y[h],u=0;u=0&&f.children.splice(z,1);c("apply"),void 0!==_&&(i=_,_=void 0);for(h in p=void 0,v)Object.prototype.hasOwnProperty.call(v,h)&&(e[h]=v[h]);var Z=null;for(h in y)if(Object.prototype.hasOwnProperty.call(y,h)&&(f=R[h])){N=y[h];var j=[];for(l=0;l=0&&r._disposeHandlers.splice(t,1)},invalidate:function(){switch(this._selfInvalidated=!0,h){case"idle":(p={})[t]=e[t],c("ready");break;case"ready":A(t);break;case"prepare":case"check":case"dispose":case"apply":(g=g||[]).push(t)}},check:k,apply:T,status:function(e){if(!e)return h;f.push(e)},addStatusHandler:function(e){f.push(e)},removeStatusHandler:function(e){var t=f.indexOf(e);t>=0&&f.splice(t,1)},data:o[t]};return n=void 0,r}var f=[],h="idle";function c(e){h=e;for(var t=0;t0;){var i=r.pop(),o=i.id,a=i.chain;if((f=R[o])&&(!f.hot._selfAccepted||f.hot._selfInvalidated)){if(f.hot._selfDeclined)return{type:"self-declined",chain:a,moduleId:o};if(f.hot._main)return{type:"unaccepted",chain:a,moduleId:o};for(var s=0;s ")),x.type){case"self-declined":r.onDeclined&&r.onDeclined(x),r.ignoreDeclined||(T=new Error("Aborted because of self decline: "+x.moduleId+U));break;case"declined":r.onDeclined&&r.onDeclined(x),r.ignoreDeclined||(T=new Error("Aborted because of declined dependency: "+x.moduleId+" in "+x.parentId+U));break;case"unaccepted":r.onUnaccepted&&r.onUnaccepted(x),r.ignoreUnaccepted||(T=new Error("Aborted because "+h+" is not accepted"+U));break;case"accepted":r.onAccepted&&r.onAccepted(x),A=!0;break;case"disposed":r.onDisposed&&r.onDisposed(x),I=!0;break;default:throw new Error("Unexception type "+x.type)}if(T)return c("abort"),Promise.reject(T);if(A)for(h in v[h]=p[h],b(m,x.outdatedModules),x.outdatedDependencies)Object.prototype.hasOwnProperty.call(x.outdatedDependencies,h)&&(y[h]||(y[h]=[]),b(y[h],x.outdatedDependencies[h]));I&&(b(m,[x.moduleId]),v[h]=k)}var z,D=[];for(l=0;l0;)if(h=B.pop(),f=R[h]){var P={},F=f.hot._disposeHandlers;for(u=0;u=0&&C.parents.splice(z,1))}}for(h in y)if(Object.prototype.hasOwnProperty.call(y,h)&&(f=R[h]))for(N=y[h],u=0;u=0&&f.children.splice(z,1);c("apply"),void 0!==_&&(i=_,_=void 0);for(h in p=void 0,v)Object.prototype.hasOwnProperty.call(v,h)&&(e[h]=v[h]);var Z=null;for(h in y)if(Object.prototype.hasOwnProperty.call(y,h)&&(f=R[h])){N=y[h];var j=[];for(l=0;l * @license MIT */ -var r=n(207),i=n(208),o=n(30);function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return C(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(e).length;default:if(r)return C(e).length;t=(""+t).toLowerCase(),r=!0}}function _(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,n);case"utf8":case"utf-8":return T(this,t,n);case"ascii":return L(this,t,n);case"latin1":case"binary":return A(this,t,n);case"base64":return x(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function g(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function b(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,i);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,i){var o,a=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var f=-1;for(o=n;os&&(n=s-l),o=n;o>=0;o--){for(var h=!0,c=0;ci&&(r=i):r=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function x(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function T(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:u>223?3:u>191?2:1;if(i+h<=n)switch(h){case 1:u<128&&(f=u);break;case 2:128==(192&(o=e[i+1]))&&(l=(31&u)<<6|63&o)>127&&(f=l);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(l=(15&u)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(f=l);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(f=l)}null===f?(f=65533,h=1):f>65535&&(f-=65536,r.push(f>>>10&1023|55296),f=56320|1023&f),r.push(f),i+=h}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,i){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(o,a),u=this.slice(r,i),f=e.slice(t,n),h=0;hi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return m(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":return w(this,e,t,n);case"latin1":case"binary":return E(this,e,t,n);case"base64":return k(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function L(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ir)&&(n=r);for(var i="",o=t;on)throw new RangeError("Trying to access beyond buffer length")}function U(e,t,n,r,i,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function z(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function D(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function M(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(e,t,n,r,o){return o||M(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function B(e,t,n,r,o){return o||M(e,0,n,8),i.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(i*=256);)r+=this[e+--t]*i;return r},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],i=1,o=0;++o=(i*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||U(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):z(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):z(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):D(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);U(this,e,t,n,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);U(this,e,t,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):z(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):z(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):D(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return N(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return N(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function Z(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(P,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function j(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,n(1))},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var l,u=[],f=!1,h=-1;function c(){f&&l&&(f=!1,l.length?u=l.concat(u):h=-1,u.length&&d())}function d(){if(!f){var e=s(c);f=!0;for(var t=u.length;t;){for(l=u,u=[];++h1)for(var n=1;n0&&a.length>i&&!a.warned){a.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=a.length,s=l,console&&console.warn&&console.warn(s)}return e}function h(){for(var e=[],t=0;t0&&(a=t[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var l=i[e];if(void 0===l)return!1;if("function"==typeof l)o(l,this,t);else{var u=l.length,f=_(l,u);for(n=0;n=0;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return d(this,e,!0)},s.prototype.rawListeners=function(e){return d(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},s.prototype.listenerCount=p,s.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(e,t,n){"use strict";(function(t,r,i){var o=n(12);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=y;var s,l=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:o.nextTick;y.WritableState=b;var u=n(10);u.inherits=n(4);var f={deprecate:n(217)},h=n(32),c=n(13).Buffer,d=i.Uint8Array||function(){};var p,_=n(33);function g(){}function b(e,t){s=s||n(5),e=e||{};var r=t instanceof s;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,u=e.writableHighWaterMark,f=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(u||0===u)?u:f,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,i){--t.pendingcb,n?(o.nextTick(i,r),o.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(i(r),e._writableState.errorEmitted=!0,e.emit("error",r),S(e,t))}(e,n,r,t,i);else{var a=E(n);a||n.corked||n.bufferProcessing||!n.bufferedRequest||w(e,n),r?l(v,e,n,a,i):v(e,n,a,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function y(e){if(s=s||n(5),!(p.call(y,this)||this instanceof s))return new y(e);this._writableState=new b(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),h.call(this)}function m(e,t,n,r,i,o,a){t.writelen=r,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function v(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),o=t.corkedRequestsFree;o.entry=n;for(var s=0,l=!0;n;)i[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;i.allBuffers=l,m(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;n;){var u=n.chunk,f=n.encoding,h=n.callback;if(m(e,t,!1,t.objectMode?1:u.length,u,f,h),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function k(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),S(e,t)}))}function S(e,t){var n=E(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,o.nextTick(k,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}u.inherits(y,h),b.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(b.prototype,"buffer",{get:f.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof b)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},y.prototype.write=function(e,t,n){var r,i=this._writableState,a=!1,s=!i.objectMode&&(r=e,c.isBuffer(r)||r instanceof d);return s&&!c.isBuffer(e)&&(e=function(e){return c.from(e)}(e)),"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=g),i.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),o.nextTick(t,n)}(this,n):(s||function(e,t,n,r){var i=!0,a=!1;return null===n?a=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),o.nextTick(r,a),i=!1),i}(this,i,e,n))&&(i.pendingcb++,a=function(e,t,n,r,i,o){if(!n){var a=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=c.from(t,n));return t}(t,r,i);r!==a&&(n=!0,i="buffer",r=a)}var s=t.objectMode?1:r.length;t.length+=s;var l=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(y.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),y.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},y.prototype._writev=null,y.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,S(e,t),n&&(t.finished?o.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=_.destroy,y.prototype._undestroy=_.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(3),n(215).setImmediate,n(1))},,,,,,,,,function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";(function(t,r){var i=n(12);e.exports=m;var o,a=n(30);m.ReadableState=y;n(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=n(32),u=n(13).Buffer,f=t.Uint8Array||function(){};var h=n(10);h.inherits=n(4);var c=n(212),d=void 0;d=c&&c.debuglog?c.debuglog("stream"):function(){};var p,_=n(213),g=n(33);h.inherits(m,l);var b=["error","close","destroy","pause","resume"];function y(e,t){e=e||{};var r=t instanceof(o=o||n(5));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,a=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(a||0===a)?a:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new _,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=n(34).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function m(e){if(o=o||n(5),!(this instanceof m))return new m(e);this._readableState=new y(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function v(e,t,n,r,i){var o,a=e._readableState;null===t?(a.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,k(e)}(e,a)):(i||(o=function(e,t){var n;r=t,u.isBuffer(r)||r instanceof f||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(a,t)),o?e.emit("error",o):a.objectMode||t&&t.length>0?("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),r?a.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):w(e,a,t,!0):a.ended?e.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(t=a.decoder.write(t),a.objectMode||0!==t.length?w(e,a,t,!1):x(e,a)):w(e,a,t,!1))):r||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function k(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(d("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(S,e):S(e))}function S(e){d("emit readable"),e.emit("readable"),R(e)}function x(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(T,e,t))}function T(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++r}return t.length-=r,i}(e,t):function(e,t){var n=u.allocUnsafe(e),r=t.head,i=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var o=r.data,a=e>o.length?o.length:e;if(o.copy(n,n.length-e,0,a),0===(e-=a)){a===o.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++i}return t.length-=i,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function I(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(U,t,e))}function U(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function z(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return d("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?I(this):k(this),null;if(0===(e=E(e,t))&&t.ended)return 0===t.length&&I(this),null;var r,i=t.needReadable;return d("need readable",i),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&I(this)),null!==r&&this.emit("data",r),r},m.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},m.prototype.pipe=function(e,t){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,d("pipe count=%d opts=%j",o.pipesCount,t);var l=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?f:m;function u(t,r){d("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,d("cleanup"),e.removeListener("close",b),e.removeListener("finish",y),e.removeListener("drain",h),e.removeListener("error",g),e.removeListener("unpipe",u),n.removeListener("end",f),n.removeListener("end",m),n.removeListener("data",_),c=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function f(){d("onend"),e.end()}o.endEmitted?i.nextTick(l):n.once("end",l),e.on("unpipe",u);var h=function(e){return function(){var t=e._readableState;d("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,R(e))}}(n);e.on("drain",h);var c=!1;var p=!1;function _(t){d("ondata"),p=!1,!1!==e.write(t)||p||((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==z(o.pipes,e))&&!c&&(d("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,p=!0),n.pause())}function g(t){d("onerror",t),m(),e.removeListener("error",g),0===s(e,"error")&&e.emit("error",t)}function b(){e.removeListener("finish",y),m()}function y(){d("onfinish"),e.removeListener("close",b),m()}function m(){d("unpipe"),n.unpipe(e)}return n.on("data",_),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",g),e.once("close",b),e.once("finish",y),e.emit("pipe",n),o.flowing||(d("pipe resume"),n.resume()),e},m.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function f(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function h(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function c(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):""}t.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return i>0&&(e.lastNeed=i-1),i;if(--r=0)return i>0&&(e.lastNeed=i-2),i;if(--r=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){"use strict";e.exports=a;var r=n(5),i=n(10);function o(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length=0;s--)if(l[s]!=u[s])return!1;for(s=l.length-1;s>=0;s--)if(a=l[s],!h(e[a],t[a]))return!1;return!0}(e,t):e==t}function c(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function d(e,t){return!(!e||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(e):e instanceof t||!0===t.call({},e))}function p(e,t,n,i){var o;r.isString(n)&&(i=n,n=null);try{t()}catch(e){o=e}if(i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),e&&!o&&u(o,n,"Missing expected exception"+i),!e&&d(o,n)&&u(o,n,"Got unwanted exception"+i),e&&o&&n&&!d(o,n)||!e&&o)throw o}a.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return l(JSON.stringify(e.actual,s),128)+" "+e.operator+" "+l(JSON.stringify(e.expected,s),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||u;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,i=t.name,o=r.indexOf("\n"+i);if(o>=0){var a=r.indexOf("\n",o+1);r=r.substring(a+1)}this.stack=r}}},r.inherits(a.AssertionError,Error),a.fail=u,a.ok=f,a.equal=function(e,t,n){e!=t&&u(e,t,n,"==",a.equal)},a.notEqual=function(e,t,n){e==t&&u(e,t,n,"!=",a.notEqual)},a.deepEqual=function(e,t,n){h(e,t)||u(e,t,n,"deepEqual",a.deepEqual)},a.notDeepEqual=function(e,t,n){h(e,t)&&u(e,t,n,"notDeepEqual",a.notDeepEqual)},a.strictEqual=function(e,t,n){e!==t&&u(e,t,n,"===",a.strictEqual)},a.notStrictEqual=function(e,t,n){e===t&&u(e,t,n,"!==",a.notStrictEqual)},a.throws=function(e,t,n){p.apply(this,[!0].concat(i.call(arguments)))},a.doesNotThrow=function(e,t){p.apply(this,[!1].concat(i.call(arguments)))},a.ifError=function(e){if(e)throw e};var _=Object.keys||function(e){var t=[];for(var n in e)o.call(e,n)&&t.push(n);return t}},function(e,t,n){(function(e){var r=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),n={},r=0;r=o)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),l=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(n)?r.showHidden=n:n&&t._extend(r,n),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=l),f(r,e,r.depth)}function l(e,t){var n=s.styles[t];return n?"["+s.colors[n][0]+"m"+e+"["+s.colors[n][1]+"m":e}function u(e,t){return e}function f(e,n,r){if(e.customInspect&&n&&k(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,e);return b(i)||(i=f(e,i,r)),i}var o=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(b(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(g(t))return e.stylize(""+t,"number");if(p(t))return e.stylize(""+t,"boolean");if(_(t))return e.stylize("null","null")}(e,n);if(o)return o;var a=Object.keys(n),s=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(n)),E(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return h(n);if(0===a.length){if(k(n)){var l=n.name?": "+n.name:"";return e.stylize("[Function"+l+"]","special")}if(m(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(w(n))return e.stylize(Date.prototype.toString.call(n),"date");if(E(n))return h(n)}var u,v="",S=!1,x=["{","}"];(d(n)&&(S=!0,x=["[","]"]),k(n))&&(v=" [Function"+(n.name?": "+n.name:"")+"]");return m(n)&&(v=" "+RegExp.prototype.toString.call(n)),w(n)&&(v=" "+Date.prototype.toUTCString.call(n)),E(n)&&(v=" "+h(n)),0!==a.length||S&&0!=n.length?r<0?m(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),u=S?function(e,t,n,r,i){for(var o=[],a=0,s=t.length;a=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(u,v,x)):x[0]+v+x[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function c(e,t,n,r,i,o){var a,s,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(s=e.stylize("[Setter]","special")),A(r,i)||(a="["+i+"]"),s||(e.seen.indexOf(l.value)<0?(s=_(n)?f(e,l.value,null):f(e,l.value,n-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),y(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function d(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function _(e){return null===e}function g(e){return"number"==typeof e}function b(e){return"string"==typeof e}function y(e){return void 0===e}function m(e){return v(e)&&"[object RegExp]"===S(e)}function v(e){return"object"==typeof e&&null!==e}function w(e){return v(e)&&"[object Date]"===S(e)}function E(e){return v(e)&&("[object Error]"===S(e)||e instanceof Error)}function k(e){return"function"==typeof e}function S(e){return Object.prototype.toString.call(e)}function x(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(n){if(y(o)&&(o=e.env.NODE_DEBUG||""),n=n.toUpperCase(),!a[n])if(new RegExp("\\b"+n+"\\b","i").test(o)){var r=e.pid;a[n]=function(){var e=t.format.apply(t,arguments);console.error("%s %d: %s",n,r,e)}}else a[n]=function(){};return a[n]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=d,t.isBoolean=p,t.isNull=_,t.isNullOrUndefined=function(e){return null==e},t.isNumber=g,t.isString=b,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=m,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=k,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(228);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function L(){var e=new Date,t=[x(e.getHours()),x(e.getMinutes()),x(e.getSeconds())].join(":");return[e.getDate(),T[e.getMonth()],t].join(" ")}function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",L(),t.format.apply(t,arguments))},t.inherits=n(4),t._extend=function(e,t){if(!t||!v(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function O(e,t){if(!e){var n=new Error("Promise was rejected with a falsy value");n.reason=e,e=n}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(R&&e[R]){var t;if("function"!=typeof(t=e[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,R,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,n,r=new Promise((function(e,r){t=e,n=r})),i=[],o=0;o>>16&65535|0,a=0;0!==n;){n-=a=n>2e3?2e3:n;do{o=o+(i=i+t[r++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0}},function(e,t,n){"use strict";var r=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();e.exports=function(e,t,n,i){var o=r,a=i+n;e^=-1;for(var s=i;s>>8^o[255&(e^t[s])];return-1^e}},function(e,t,n){"use strict";function r(e,t){return e.readUInt32LE(t)+4294967296*e.readUInt32LE(t+4)}function i(e){var t=arguments;return new Error(e.replace(/{(\d+)}/g,(function(e,n){var r=t[+n+1];return void 0===r?e:r})))}t.readEOCDRecord=function(e,t){e.read(-65557,(function(n,o){if(n)return t(n);if(o.length<22)return t(i("expected at least 22 bytes for End Of Central Directory got {0}",o.length));var a={},s=o.lastIndexOf("PK");if(-1===s)return t(i("End Of Central Directory not found"));var l=o.slice(s);if(0!==l.readUInt16LE(4))return t(i("spanned zip files are not supported"));a.entryCount=l.readUInt16LE(10),a.cdSize=l.readUInt32LE(12),a.cdOffset=l.readUInt32LE(16);var u=l.readUInt16LE(20);a.comment=l.toString("utf-8",22,22+u),console.assert(a.comment.length===u,"expected "+u+" bytes for zip file comment got "+a.comment.length),65535===a.entryCount||4294967295===a.cdSize||4294967295===a.cdOffset?function(e,t,n){!function(e,t,n){e.read(t-20,t,(function(e,t){if(e)return n(e);if(t.length<20)return n(i("expected at least 20 bytes for Zip64 End Of Central Directory Locator got {0}",t.length));if(117853008!==t.readUInt32LE(0))return n(i("Zip64 End Of Central Directory Locator not found"));var o=r(t,8);if(1!==t.readUInt32LE(16))return n(i("spanned zip files are not supported"));n(null,o)}))}(e,t,(function(t,o){if(t)return n(t);e.read(o,o+56,(function(e,t){if(e)return n(e);if(t.length<56)return n(i("expected at least 56 bytes for Zip64 End Of Central Directory got {0}",t.length));var o={};if(101075792!==t.readUInt32LE(0))return n(i("Zip64 End Of Central Directory not found"));o.entryCount=r(t,32),o.cdSize=r(t,40),o.cdOffset=r(t,48),n(null,o)}))}))}(e,s,(function(e,n){n&&(n.comment=a.comment),t(e,n)})):t(null,a)}))},t.readUInt64LE=r,t.E=i,t.cp437ToUnicode=function(e){var t,n=[0,9786,9787,9829,9830,9827,9824,8226,9688,9675,9689,9794,9792,9834,9835,9788,9658,9668,8597,8252,182,167,9644,8616,8593,8595,8594,8592,8735,8596,9650,9660,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,8962,199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,225,237,243,250,241,209,170,186,191,8976,172,189,188,161,171,187,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,8801,177,8805,8804,8992,8993,247,8776,176,8729,183,8730,8319,178,9632,160],r=new Array(e.length),i=r.length;for(t=0;t0)throw new Error("Invalid string. Length must be a multiple of 4");var l=e.length;a="="===e.charAt(l-2)?2:"="===e.charAt(l-1)?1:0,s=new t(3*e.length/4-a),i=a>0?e.length-4:e.length;var f=0;function h(e){s[f++]=e}for(n=0,r=0;n>16),h((65280&o)>>8),h(255&o);return 2===a?h(255&(o=u(e.charAt(n))<<2|u(e.charAt(n+1))>>4)):1===a&&(h((o=u(e.charAt(n))<<10|u(e.charAt(n+1))<<4|u(e.charAt(n+2))>>2)>>8&255),h(255&o)),s},e.fromByteArray=function(e){var t,n,r,i,o=e.length%3,a="";function s(e){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)}for(t=0,r=e.length-o;t>18&63)+s(i>>12&63)+s(i>>6&63)+s(63&i);switch(o){case 1:a+=s((n=e[e.length-1])>>2),a+=s(n<<4&63),a+="==";break;case 2:a+=s((n=(e[e.length-2]<<8)+e[e.length-1])>>10),a+=s(n>>4&63),a+=s(n<<2&63),a+="="}return a}}(t)},function(e,t){t.read=function(e,t,n,r,i){var o,a,s=8*i-r-1,l=(1<>1,f=-7,h=n?i-1:0,c=n?-1:1,d=e[t+h];for(h+=c,o=d&(1<<-f)-1,d>>=-f,f+=s;f>0;o=256*o+e[t+h],h+=c,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=r;f>0;a=256*a+e[t+h],h+=c,f-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,r),o-=u}return(d?-1:1)*a*Math.pow(2,o-r)},t.write=function(e,t,n,r,i,o){var a,s,l,u=8*o-i-1,f=(1<>1,c=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,_=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+h>=1?c/l:c*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=f?(s=0,a=f):a+h>=1?(s=(t*l-1)*Math.pow(2,i),a+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;e[n+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[n+d]=255&a,d+=p,a/=256,u-=8);e[n+d-p]|=128*_}},function(e,t,n){"use strict";var r=n(210),i=n(219),o=n(40);function a(e,t){try{var n=new r(e);o.readEOCDRecord(n,(function(e,r){t(e,e?null:new i(n,r))}))}catch(e){t(e)}}e.exports=function(e,t){if("string"==typeof e){var n=new XMLHttpRequest;n.addEventListener("readystatechange",(function(){4===this.readyState&&(200===this.status?a(this.response,t):t(o.E("network error: {0} {1}",this.status,this.statusText)))}));try{n.open("GET",e),n.responseType="blob",n.send()}catch(e){t(e)}}else a(e,t)}},function(e,t,n){"use strict";(function(t){var r=n(211);function i(e){if(!(this instanceof i))return new i(e);if(!(e instanceof Blob||-1!==["[object Blob]","[object File]"].indexOf(Object.prototype.toString.call(e))))throw new TypeError('"blob" argument must be an instance of Blob or File');this._blob=e}e.exports=i,i.prototype.read=function(e,n,r){if("function"==typeof e?r=e:"function"==typeof n&&(r=n,n=this._blob.size),"function"!=typeof r)throw new TypeError('"callback" argument must be a function');e=~~e,n=void 0===n?this._blob.size:~~n;var i=new FileReader;i.addEventListener("loadend",(function e(){this.removeEventListener("loadend",e),r(this.error,this.result?t.from(this.result):null)})),i.readAsArrayBuffer(this._blob.slice(e,n))},i.prototype.createReadStream=function(e){return new r(this._blob,e)}}).call(this,n(2).Buffer)},function(e,t,n){"use strict";(function(t){var r=n(9).Readable;function i(e,n){n||(n={}),void 0===n.highWaterMark&&(n.highWaterMark=65536),r.call(this,n);var i=~~n.start,o=void 0===n.end?e.size:~~n.end;this._blob=e.slice(i,o),this._end=this._blob.size,this._pos=0,this._reader=new FileReader;var a=this;this._loadendListener=function(){this.error?a.destroy(this.error):(a._pos+=this.result.byteLength,a.push(t.from(this.result)))},this._reader.addEventListener("loadend",this._loadendListener),this.on("end",(function(){this.destroy()}))}e.exports=i,i.prototype=Object.create(r.prototype),i.prototype.constructor=i,Object.defineProperties(i.prototype,{readableLength:{get:function(){return this._readableState.length}},ended:{get:function(){return this._pos>=this._end}}}),i.prototype._read=function(e){this.destroyed||(this.ended?this.push(null):this._reader.readAsArrayBuffer(this._blob.slice(this._pos,this._pos+e)))},i.prototype._destroy=function(e,t){t(e),this._reader.readyState===FileReader.LOADING&&this._reader.abort(),this._reader.removeEventListener("loadend",this._loadendListener),this._reader=null}}).call(this,n(2).Buffer)},function(e,t){},function(e,t,n){"use strict";var r=n(13).Buffer,i=n(214);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t,n,i,o=r.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,n=o,i=s,t.copy(n,i),s+=a.data.length,a=a.next;return o},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(216),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(1))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,o,a,s,l=1,u={},f=!1,h=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){p(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){p(e.data)},r=function(e){o.port2.postMessage(e)}):h&&"onreadystatechange"in h.createElement("script")?(i=h.documentElement,r=function(e){var t=h.createElement("script");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(p,0,e)}:(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&p(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(a+t,"*")}),c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n0;){if(this.readableLength<46){if(this.ended)return f(s("expected at least 46 bytes for Central File Header got {0}",this.readableLength));break}var e=this.read(46),n=new h;if(33639248!==e.readUInt32LE(0))return f(s("invalide Central File Header signature"));n.versionMadeBy=e.readUInt16LE(4),n.versionNeededToExtract=e.readUInt16LE(6),n.generalPurposeBitFlag=e.readUInt16LE(8),n.compressionMethod=e.readUInt16LE(10),n.lastModTime=e.readUInt16LE(12),n.lastModDate=e.readUInt16LE(14),n.crc32=e.readUInt32LE(16),n.compressedSize=e.readUInt32LE(20),n.uncompressedSize=e.readUInt32LE(24);var i=e.readUInt16LE(28),a=e.readUInt16LE(30),c=e.readUInt16LE(32);n.internalAttributes=e.readUInt16LE(36),n.externalAttributes=e.readUInt32LE(38),n.localHeaderOffset=e.readUInt32LE(42);var d=i+a+c;if(this.readableLength6){var a=1===i.readUInt8(0),s=r.unsigned(o)===i.readUInt32LE(1),l=i.toString("utf8",5);a&&s&&l.length>0&&(n[e]=l)}}))})),4294967295===n.compressedSize||4294967295===n.uncompressedSize||4294967295===n.localHeaderOffset){var w=n.extraFields.filter((function(e){return 1===e.headerId}))[0];if(!w)return f(s("Zip64 Extended Information Extra Field not found"));var E=0,k=["uncompressedSize","compressedSize","localHeaderOffset"];for(var S in k){var x=k[S];if(4294967295===n[x])try{n[x]=l(w.data,E),E+=8}catch(e){return f(s("invalid Zip64 Extended Information Extra Field: {0} not found",x))}}}o.entries.push(n)}this.read(0)}))},f.prototype.readEntryData=function(e,t,n){if(e.encrypted)n(s("encrypted files are not supported"));else if(0===e.compressionMethod||8===e.compressionMethod){var a=this;this._reader.read(e.localHeaderOffset,e.localHeaderOffset+30,(function(l,u){if(l)return n(l);if(u.length<30)return n(s("expected at least 30 bytes for Local File Header got {1}",u.length));if(67324752!==u.readUInt32LE(0))return n(s("invalid Local File Header signature"));var f=u.readUInt16LE(26),h=u.readUInt16LE(28),c=e.localHeaderOffset+30+f+h,d=a._reader.createReadStream({start:c,end:c+e.compressedSize});if(8===e.compressionMethod){var p=i();d=d.on("error",(function(e){p.destroy(e)})).pipe(p)}if(t){var _,g=new o({transform:function(e,t,n){_=r(e,_),n(null,e)},flush:function(t){t(_.readUInt32BE(0)===e.crc32?null:s("corrupted file: crc check fails"))}});d=d.on("error",(function(e){g.destroy(e)})).pipe(g)}n(null,d)}))}else n(s("compression method is not supported"))},Object.defineProperties(h.prototype,{encrypted:{get:function(){return 1==(1&this.generalPurposeBitFlag)}},lastModDateTime:{get:function(){return new Date(1980+(this.lastModDate>>9&127),(this.lastModDate>>5&15)-1,31&this.lastModDate,this.lastModTime>>11&31,this.lastModTime>>5&63,2*(31&this.lastModTime))}}})}).call(this,n(2).Buffer)},function(e,t,n){var r=n(2).Buffer,i=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];function o(e){if(r.isBuffer(e))return e;var t="function"==typeof r.alloc&&"function"==typeof r.from;if("number"==typeof e)return t?r.alloc(e):new r(e);if("string"==typeof e)return t?r.from(e):new r(e);throw new Error("input must be buffer, number, or string, received "+typeof e)}function a(e){var t=o(4);return t.writeInt32BE(e,0),t}function s(e,t){e=o(e),r.isBuffer(t)&&(t=t.readUInt32BE(0));for(var n=-1^~~t,a=0;a>>8;return-1^n}function l(){return a(s.apply(null,arguments))}"undefined"!=typeof Int32Array&&(i=new Int32Array(i)),l.signed=function(){return s.apply(null,arguments)},l.unsigned=function(){return s.apply(null,arguments)>>>0},e.exports=l},function(e,t,n){"use strict";(function(e){var r=n(2).Buffer,i=n(222).Transform,o=n(227),a=n(37),s=n(36).ok,l=n(2).kMaxLength,u="Cannot create final Buffer. It would be larger than 0x"+l.toString(16)+" bytes";o.Z_MIN_WINDOWBITS=8,o.Z_MAX_WINDOWBITS=15,o.Z_DEFAULT_WINDOWBITS=15,o.Z_MIN_CHUNK=64,o.Z_MAX_CHUNK=1/0,o.Z_DEFAULT_CHUNK=16384,o.Z_MIN_MEMLEVEL=1,o.Z_MAX_MEMLEVEL=9,o.Z_DEFAULT_MEMLEVEL=8,o.Z_MIN_LEVEL=-1,o.Z_MAX_LEVEL=9,o.Z_DEFAULT_LEVEL=o.Z_DEFAULT_COMPRESSION;for(var f=Object.keys(o),h=0;h=l?a=new RangeError(u):t=r.concat(i,o),i=[],e.close(),n(a,t)}e.on("error",(function(t){e.removeListener("end",s),e.removeListener("readable",a),n(t)})),e.on("end",s),e.end(t),a()}function y(e,t){if("string"==typeof t&&(t=r.from(t)),!r.isBuffer(t))throw new TypeError("Not a string or buffer");var n=e._finishFlushFlag;return e._processChunk(t,n)}function m(e){if(!(this instanceof m))return new m(e);L.call(this,e,o.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);L.call(this,e,o.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);L.call(this,e,o.GZIP)}function E(e){if(!(this instanceof E))return new E(e);L.call(this,e,o.GUNZIP)}function k(e){if(!(this instanceof k))return new k(e);L.call(this,e,o.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);L.call(this,e,o.INFLATERAW)}function x(e){if(!(this instanceof x))return new x(e);L.call(this,e,o.UNZIP)}function T(e){return e===o.Z_NO_FLUSH||e===o.Z_PARTIAL_FLUSH||e===o.Z_SYNC_FLUSH||e===o.Z_FULL_FLUSH||e===o.Z_FINISH||e===o.Z_BLOCK}function L(e,n){var a=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!T(e.flush))throw new Error("Invalid flush flag: "+e.flush);if(e.finishFlush&&!T(e.finishFlush))throw new Error("Invalid flush flag: "+e.finishFlush);if(this._flushFlag=e.flush||o.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:o.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!r.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new o.Zlib(n);var s=this;this._hadError=!1,this._handle.onerror=function(e,n){A(s),s._hadError=!0;var r=new Error(e);r.errno=n,r.code=t.codes[n],s.emit("error",r)};var l=t.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(l=e.level);var u=t.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(u=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,u,e.dictionary),this._buffer=r.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!a._handle},configurable:!0,enumerable:!0})}function A(t,n){n&&e.nextTick(n),t._handle&&(t._handle.close(),t._handle=null)}function R(e){e.emit("close")}Object.defineProperty(t,"codes",{enumerable:!0,value:Object.freeze(d),writable:!1}),t.Deflate=m,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=k,t.InflateRaw=S,t.Unzip=x,t.createDeflate=function(e){return new m(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new k(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new x(e)},t.deflate=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new m(t),e,n)},t.deflateSync=function(e,t){return y(new m(t),e)},t.gzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new w(t),e,n)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new k(t),e,n)},t.deflateRawSync=function(e,t){return y(new k(t),e)},t.unzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new x(t),e,n)},t.unzipSync=function(e,t){return y(new x(t),e)},t.inflate=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new v(t),e,n)},t.inflateSync=function(e,t){return y(new v(t),e)},t.gunzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new E(t),e,n)},t.gunzipSync=function(e,t){return y(new E(t),e)},t.inflateRaw=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new S(t),e,n)},t.inflateRawSync=function(e,t){return y(new S(t),e)},a.inherits(L,i),L.prototype.params=function(n,r,i){if(nt.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+n);if(r!=t.Z_FILTERED&&r!=t.Z_HUFFMAN_ONLY&&r!=t.Z_RLE&&r!=t.Z_FIXED&&r!=t.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==n||this._strategy!==r){var a=this;this.flush(o.Z_SYNC_FLUSH,(function(){s(a._handle,"zlib binding closed"),a._handle.params(n,r),a._hadError||(a._level=n,a._strategy=r,i&&i())}))}else e.nextTick(i)},L.prototype.reset=function(){return s(this._handle,"zlib binding closed"),this._handle.reset()},L.prototype._flush=function(e){this._transform(r.alloc(0),"",e)},L.prototype.flush=function(t,n){var i=this,a=this._writableState;("function"==typeof t||void 0===t&&!n)&&(n=t,t=o.Z_FULL_FLUSH),a.ended?n&&e.nextTick(n):a.ending?n&&this.once("end",n):a.needDrain?n&&this.once("drain",(function(){return i.flush(t,n)})):(this._flushFlag=t,this.write(r.alloc(0),"",n))},L.prototype.close=function(t){A(this,t),e.nextTick(R,this)},L.prototype._transform=function(e,t,n){var i,a=this._writableState,s=(a.ending||a.ended)&&(!e||a.length===e.length);return null===e||r.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=a.length&&(this._flushFlag=this._opts.flush||o.Z_NO_FLUSH)),void this._processChunk(e,i,n)):n(new Error("zlib binding closed")):n(new Error("invalid input"))},L.prototype._processChunk=function(e,t,n){var i=e&&e.length,o=this._chunkSize-this._offset,a=0,f=this,h="function"==typeof n;if(!h){var c,d=[],p=0;this.on("error",(function(e){c=e})),s(this._handle,"zlib binding closed");do{var _=this._handle.writeSync(t,e,a,i,this._buffer,this._offset,o)}while(!this._hadError&&y(_[0],_[1]));if(this._hadError)throw c;if(p>=l)throw A(this),new RangeError(u);var g=r.concat(d,p);return A(this),g}s(this._handle,"zlib binding closed");var b=this._handle.write(t,e,a,i,this._buffer,this._offset,o);function y(l,u){if(this&&(this.buffer=null,this.callback=null),!f._hadError){var c=o-u;if(s(c>=0,"have should not go down"),c>0){var _=f._buffer.slice(f._offset,f._offset+c);f._offset+=c,h?f.push(_):(d.push(_),p+=_.length)}if((0===u||f._offset>=f._chunkSize)&&(o=f._chunkSize,f._offset=0,f._buffer=r.allocUnsafe(f._chunkSize)),0===u){if(a+=i-l,i=l,!h)return!0;var g=f._handle.write(t,e,a,i,f._buffer,f._offset,f._chunkSize);return g.callback=y,void(g.buffer=e)}if(!h)return!1;n()}}b.buffer=e,b.callback=y},a.inherits(m,L),a.inherits(v,L),a.inherits(w,L),a.inherits(E,L),a.inherits(k,L),a.inherits(S,L),a.inherits(x,L)}).call(this,n(3))},function(e,t,n){e.exports=i;var r=n(20).EventEmitter;function i(){r.call(this)}n(4)(i,r),i.Readable=n(9),i.Writable=n(223),i.Duplex=n(224),i.Transform=n(225),i.PassThrough=n(226),i.Stream=i,i.prototype.pipe=function(e,t){var n=this;function i(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",i),e.on("drain",o),e._isStdio||t&&!1===t.end||(n.on("end",s),n.on("close",l));var a=!1;function s(){a||(a=!0,e.end())}function l(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function u(e){if(f(),0===r.listenerCount(this,"error"))throw e}function f(){n.removeListener("data",i),e.removeListener("drain",o),n.removeListener("end",s),n.removeListener("close",l),n.removeListener("error",u),e.removeListener("error",u),n.removeListener("end",f),n.removeListener("close",f),e.removeListener("close",f)}return n.on("error",u),e.on("error",u),n.on("end",f),n.on("close",f),e.on("close",f),e.emit("pipe",n),e}},function(e,t,n){e.exports=n(21)},function(e,t,n){e.exports=n(5)},function(e,t,n){e.exports=n(9).Transform},function(e,t,n){e.exports=n(9).PassThrough},function(e,t,n){"use strict";(function(e,r){var i=n(36),o=n(229),a=n(230),s=n(233),l=n(236);for(var u in l)t[u]=l[u];t.NONE=0,t.DEFLATE=1,t.INFLATE=2,t.GZIP=3,t.GUNZIP=4,t.DEFLATERAW=5,t.INFLATERAW=6,t.UNZIP=7;function f(e){if("number"!=typeof e||et.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}f.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,"close before init"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?a.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},f.prototype.write=function(e,t,n,r,i,o,a){return this._write(!0,e,t,n,r,i,o,a)},f.prototype.writeSync=function(e,t,n,r,i,o,a){return this._write(!1,e,t,n,r,i,o,a)},f.prototype._write=function(n,o,a,s,l,u,f,h){if(i.equal(arguments.length,8),i(this.init_done,"write before init"),i(this.mode!==t.NONE,"already finalized"),i.equal(!1,this.write_in_progress,"write already in progress"),i.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,i.equal(!1,void 0===o,"must provide flush value"),this.write_in_progress=!0,o!==t.Z_NO_FLUSH&&o!==t.Z_PARTIAL_FLUSH&&o!==t.Z_SYNC_FLUSH&&o!==t.Z_FULL_FLUSH&&o!==t.Z_FINISH&&o!==t.Z_BLOCK)throw new Error("Invalid flush value");if(null==a&&(a=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=a,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=u,this.strm.next_out=f,this.flush=o,!n)return this._process(),this._checkError()?this._afterSync():void 0;var c=this;return r.nextTick((function(){c._process(),c._after()})),this},f.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},f.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=a.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},f.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error("unexpected end of file"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},f.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},f.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},f.prototype.init=function(e,n,r,o,a){i(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),i(e>=8&&e<=15,"invalid windowBits"),i(n>=-1&&n<=9,"invalid compression level"),i(r>=1&&r<=9,"invalid memlevel"),i(o===t.Z_FILTERED||o===t.Z_HUFFMAN_ONLY||o===t.Z_RLE||o===t.Z_FIXED||o===t.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(n,e,r,o,a),this._setDictionary()},f.prototype.params=function(){throw new Error("deflateParams Not supported")},f.prototype.reset=function(){this._reset(),this._setDictionary()},f.prototype._init=function(e,n,r,i,l){switch(this.level=e,this.windowBits=n,this.memLevel=r,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new o,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=a.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==t.Z_OK&&this._error("Init error"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},f.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=a.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error("Failed to set dictionary")}},f.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=a.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error("Failed to reset stream")},t.Zlib=f}).call(this,n(2).Buffer,n(3))},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,n){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},function(e,t,n){"use strict";var r,i=n(14),o=n(231),a=n(38),s=n(39),l=n(232);function u(e,t){return e.msg=l[t],t}function f(e){return(e<<1)-(e>4?9:0)}function h(e){for(var t=e.length;--t>=0;)e[t]=0}function c(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(i.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function d(e,t){o._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,c(e.strm)}function p(e,t){e.pending_buf[e.pending++]=t}function _(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function g(e,t){var n,r,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,u=e.window,f=e.w_mask,h=e.prev,c=e.strstart+258,d=u[o+a-1],p=u[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(u[(n=t)+a]===p&&u[n+a-1]===d&&u[n]===u[o]&&u[++n]===u[o+1]){o+=2,n++;do{}while(u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&oa){if(e.match_start=t,a=r,r>=s)break;d=u[o+a-1],p=u[o+a]}}}while((t=h[t&f])>l&&0!=--i);return a<=e.lookahead?a:e.lookahead}function b(e){var t,n,r,o,l,u,f,h,c,d,p=e.w_size;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-262)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=n=e.hash_size;do{r=e.head[--t],e.head[t]=r>=p?r-p:0}while(--n);t=n=p;do{r=e.prev[--t],e.prev[t]=r>=p?r-p:0}while(--n);o+=p}if(0===e.strm.avail_in)break;if(u=e.strm,f=e.window,h=e.strstart+e.lookahead,c=o,d=void 0,(d=u.avail_in)>c&&(d=c),n=0===d?0:(u.avail_in-=d,i.arraySet(f,u.input,u.next_in,d,h),1===u.state.wrap?u.adler=a(u.adler,f,d,h):2===u.state.wrap&&(u.adler=s(u.adler,f,d,h)),u.next_in+=d,u.total_in+=d,d),e.lookahead+=n,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(r=o._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=o._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,r-=16),o<1||o>9||8!==n||r<8||r>15||t<0||t>9||a<0||a>4)return u(e,-2);8===r&&(r=9);var l=new w;return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=r,l.w_size=1<e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(b(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((0===e.strstart||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,d(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-262&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(d(e,!1),e.strm.avail_out),1)})),new v(4,4,8,4,y),new v(4,5,16,8,y),new v(4,6,32,32,y),new v(4,4,16,16,m),new v(8,16,32,32,m),new v(8,16,128,128,m),new v(8,32,128,256,m),new v(32,128,258,1024,m),new v(32,258,258,4096,m)],t.deflateInit=function(e,t){return S(e,t,8,15,8,0)},t.deflateInit2=S,t.deflateReset=k,t.deflateResetKeep=E,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?-2:(e.state.gzhead=t,0):-2},t.deflate=function(e,t){var n,i,a,l;if(!e||!e.state||t>5||t<0)return e?u(e,-2):-2;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||666===i.status&&4!==t)return u(e,0===e.avail_out?-5:-2);if(i.strm=e,n=i.last_flush,i.last_flush=t,42===i.status)if(2===i.wrap)e.adler=0,p(i,31),p(i,139),p(i,8),i.gzhead?(p(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),p(i,255&i.gzhead.time),p(i,i.gzhead.time>>8&255),p(i,i.gzhead.time>>16&255),p(i,i.gzhead.time>>24&255),p(i,9===i.level?2:i.strategy>=2||i.level<2?4:0),p(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(p(i,255&i.gzhead.extra.length),p(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(p(i,0),p(i,0),p(i,0),p(i,0),p(i,0),p(i,9===i.level?2:i.strategy>=2||i.level<2?4:0),p(i,3),i.status=113);else{var g=8+(i.w_bits-8<<4)<<8;g|=(i.strategy>=2||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(g|=32),g+=31-g%31,i.status=113,_(i,g),0!==i.strstart&&(_(i,e.adler>>>16),_(i,65535&e.adler)),e.adler=1}if(69===i.status)if(i.gzhead.extra){for(a=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),c(e),a=i.pending,i.pending!==i.pending_buf_size));)p(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){a=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),c(e),a=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexa&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),0===l&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){a=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),c(e),a=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexa&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),0===l&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&c(e),i.pending+2<=i.pending_buf_size&&(p(i,255&e.adler),p(i,e.adler>>8&255),e.adler=0,i.status=113)):i.status=113),0!==i.pending){if(c(e),0===e.avail_out)return i.last_flush=-1,0}else if(0===e.avail_in&&f(t)<=f(n)&&4!==t)return u(e,-5);if(666===i.status&&0!==e.avail_in)return u(e,-5);if(0!==e.avail_in||0!==i.lookahead||0!==t&&666!==i.status){var y=2===i.strategy?function(e,t){for(var n;;){if(0===e.lookahead&&(b(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(d(e,!1),0===e.strm.avail_out)?1:2}(i,t):3===i.strategy?function(e,t){for(var n,r,i,a,s=e.window;;){if(e.lookahead<=258){if(b(e),e.lookahead<=258&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=s[i=e.strstart-1])===s[++i]&&r===s[++i]&&r===s[++i]){a=e.strstart+258;do{}while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=o._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(d(e,!1),0===e.strm.avail_out)?1:2}(i,t):r[i.level].func(i,t);if(3!==y&&4!==y||(i.status=666),1===y||3===y)return 0===e.avail_out&&(i.last_flush=-1),0;if(2===y&&(1===t?o._tr_align(i):5!==t&&(o._tr_stored_block(i,0,0,!1),3===t&&(h(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),c(e),0===e.avail_out))return i.last_flush=-1,0}return 4!==t?0:i.wrap<=0?1:(2===i.wrap?(p(i,255&e.adler),p(i,e.adler>>8&255),p(i,e.adler>>16&255),p(i,e.adler>>24&255),p(i,255&e.total_in),p(i,e.total_in>>8&255),p(i,e.total_in>>16&255),p(i,e.total_in>>24&255)):(_(i,e.adler>>>16),_(i,65535&e.adler)),c(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?u(e,-2):(e.state=null,113===t?u(e,-3):0):-2},t.deflateSetDictionary=function(e,t){var n,r,o,s,l,u,f,c,d=t.length;if(!e||!e.state)return-2;if(2===(s=(n=e.state).wrap)||1===s&&42!==n.status||n.lookahead)return-2;for(1===s&&(e.adler=a(e.adler,t,d,0)),n.wrap=0,d>=n.w_size&&(0===s&&(h(n.head),n.strstart=0,n.block_start=0,n.insert=0),c=new i.Buf8(n.w_size),i.arraySet(c,t,d-n.w_size,n.w_size,0),t=c,d=n.w_size),l=e.avail_in,u=e.next_in,f=e.input,e.avail_in=d,e.next_in=0,e.input=t,b(n);n.lookahead>=3;){r=n.strstart,o=n.lookahead-2;do{n.ins_h=(n.ins_h<=0;)e[t]=0}var o=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],a=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],l=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);i(u);var f=new Array(60);i(f);var h=new Array(512);i(h);var c=new Array(256);i(c);var d=new Array(29);i(d);var p,_,g,b=new Array(30);function y(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}function m(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function v(e){return e<256?h[e]:h[256+(e>>>7)]}function w(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function E(e,t,n){e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function x(e,t,n){var r,i,o=new Array(16),a=0;for(r=1;r<=15;r++)o[r]=a=a+n[r-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=S(o[s]++,s))}}function T(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function L(e){e.bi_valid>8?w(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function A(e,t,n,r){var i=2*t,o=2*n;return e[i]>1;n>=1;n--)R(e,o,n);i=l;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],R(e,o,1),r=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=r,o[2*i]=o[2*n]+o[2*r],e.depth[i]=(e.depth[n]>=e.depth[r]?e.depth[n]:e.depth[r])+1,o[2*n+1]=o[2*r+1]=i,e.heap[1]=i++,R(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,r,i,o,a,s,l=t.dyn_tree,u=t.max_code,f=t.stat_desc.static_tree,h=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,_=0;for(o=0;o<=15;o++)e.bl_count[o]=0;for(l[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n<573;n++)(o=l[2*l[2*(r=e.heap[n])+1]+1]+1)>p&&(o=p,_++),l[2*r+1]=o,r>u||(e.bl_count[o]++,a=0,r>=d&&(a=c[r-d]),s=l[2*r],e.opt_len+=s*(o+a),h&&(e.static_len+=s*(f[2*r+1]+a)));if(0!==_){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,_-=2}while(_>0);for(o=p;0!==o;o--)for(r=e.bl_count[o];0!==r;)(i=e.heap[--n])>u||(l[2*i+1]!==o&&(e.opt_len+=(o-l[2*i+1])*l[2*i],l[2*i+1]=o),r--)}}(e,t),x(o,u,e.bl_count)}function U(e,t,n){var r,i,o=-1,a=t[1],s=0,l=7,u=4;for(0===a&&(l=138,u=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=a,a=t[2*(r+1)+1],++s>=7;r<30;r++)for(b[r]=i<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),I(e,e.l_desc),I(e,e.d_desc),a=function(e){var t;for(U(e,e.dyn_ltree,e.l_desc.max_code),U(e,e.dyn_dtree,e.d_desc.max_code),I(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*l[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=i&&(i=o)):i=o=n+5,n+4<=i&&-1!==t?M(e,t,n,r):4===e.strategy||o===i?(E(e,2+(r?1:0),3),O(e,u,f)):(E(e,4+(r?1:0),3),function(e,t,n,r){var i;for(E(e,t-257,5),E(e,n-1,5),E(e,r-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(c[n]+256+1)]++,e.dyn_dtree[2*v(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){E(e,2,3),k(e,256,u),function(e){16===e.bi_valid?(w(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,n){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(e,t,n){"use strict";var r=n(14),i=n(38),o=n(39),a=n(234),s=n(235);function l(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function u(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new r.Buf32(852),t.distcode=t.distdyn=new r.Buf32(592),t.sane=1,t.back=-1,0):-2}function h(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,f(e)):-2}function c(e,t){var n,r;return e&&e.state?(r=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?-2:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,h(e))):-2}function d(e,t){var n,r;return e?(r=new u,e.state=r,r.window=null,0!==(n=c(e,t))&&(e.state=null),n):-2}var p,_,g=!0;function b(e){if(g){var t;for(p=new r.Buf32(512),_=new r.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(1,e.lens,0,288,p,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(2,e.lens,0,32,_,0,e.work,{bits:5}),g=!1}e.lencode=p,e.lenbits=9,e.distcode=_,e.distbits=5}function y(e,t,n,i){var o,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(r.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((o=a.wsize-a.wnext)>i&&(o=i),r.arraySet(a.window,t,n-i,o,a.wnext),(i-=o)?(r.arraySet(a.window,t,n-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=o(n.check,M,2,0),_=0,g=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&_)<<8)+(_>>8))%31){e.msg="incorrect header check",n.mode=30;break}if(8!=(15&_)){e.msg="unknown compression method",n.mode=30;break}if(g-=4,O=8+(15&(_>>>=4)),0===n.wbits)n.wbits=O;else if(O>n.wbits){e.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(M[0]=255&_,M[1]=_>>>8&255,n.check=o(n.check,M,2,0)),_=0,g=0,n.mode=3;case 3:for(;g<32;){if(0===d)break e;d--,_+=u[h++]<>>8&255,M[2]=_>>>16&255,M[3]=_>>>24&255,n.check=o(n.check,M,4,0)),_=0,g=0,n.mode=4;case 4:for(;g<16;){if(0===d)break e;d--,_+=u[h++]<>8),512&n.flags&&(M[0]=255&_,M[1]=_>>>8&255,n.check=o(n.check,M,2,0)),_=0,g=0,n.mode=5;case 5:if(1024&n.flags){for(;g<16;){if(0===d)break e;d--,_+=u[h++]<>>8&255,n.check=o(n.check,M,2,0)),_=0,g=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((w=n.length)>d&&(w=d),w&&(n.head&&(O=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,u,h,w,O)),512&n.flags&&(n.check=o(n.check,u,w,h)),d-=w,h+=w,n.length-=w),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===d)break e;w=0;do{O=u[h+w++],n.head&&O&&n.length<65536&&(n.head.name+=String.fromCharCode(O))}while(O&&w>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=12;break;case 10:for(;g<32;){if(0===d)break e;d--,_+=u[h++]<>>=7&g,g-=7&g,n.mode=27;break}for(;g<3;){if(0===d)break e;d--,_+=u[h++]<>>=1)){case 0:n.mode=14;break;case 1:if(b(n),n.mode=20,6===t){_>>>=2,g-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=30}_>>>=2,g-=2;break;case 14:for(_>>>=7&g,g-=7&g;g<32;){if(0===d)break e;d--,_+=u[h++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&_,_=0,g=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(w=n.length){if(w>d&&(w=d),w>p&&(w=p),0===w)break e;r.arraySet(f,u,h,w,c),d-=w,h+=w,p-=w,c+=w,n.length-=w;break}n.mode=12;break;case 17:for(;g<14;){if(0===d)break e;d--,_+=u[h++]<>>=5,g-=5,n.ndist=1+(31&_),_>>>=5,g-=5,n.ncode=4+(15&_),_>>>=4,g-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=30;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,g-=3}for(;n.have<19;)n.lens[N[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,U={bits:n.lenbits},I=s(0,n.lens,0,19,n.lencode,0,n.work,U),n.lenbits=U.bits,I){e.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,T=65535&D,!((S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>>=S,g-=S,n.lens[n.have++]=T;else{if(16===T){for(z=S+2;g>>=S,g-=S,0===n.have){e.msg="invalid bit length repeat",n.mode=30;break}O=n.lens[n.have-1],w=3+(3&_),_>>>=2,g-=2}else if(17===T){for(z=S+3;g>>=S)),_>>>=3,g-=3}else{for(z=S+7;g>>=S)),_>>>=7,g-=7}if(n.have+w>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=30;break}for(;w--;)n.lens[n.have++]=O}}if(30===n.mode)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,U={bits:n.lenbits},I=s(1,n.lens,0,n.nlen,n.lencode,0,n.work,U),n.lenbits=U.bits,I){e.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,U={bits:n.distbits},I=s(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,U),n.distbits=U.bits,I){e.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(d>=6&&p>=258){e.next_out=c,e.avail_out=p,e.next_in=h,e.avail_in=d,n.hold=_,n.bits=g,a(e,v),c=e.next_out,f=e.output,p=e.avail_out,h=e.next_in,u=e.input,d=e.avail_in,_=n.hold,g=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;x=(D=n.lencode[_&(1<>>16&255,T=65535&D,!((S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>L)])>>>16&255,T=65535&D,!(L+(S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>>=L,g-=L,n.back+=L}if(_>>>=S,g-=S,n.back+=S,n.length=T,0===x){n.mode=26;break}if(32&x){n.back=-1,n.mode=12;break}if(64&x){e.msg="invalid literal/length code",n.mode=30;break}n.extra=15&x,n.mode=22;case 22:if(n.extra){for(z=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;x=(D=n.distcode[_&(1<>>16&255,T=65535&D,!((S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>L)])>>>16&255,T=65535&D,!(L+(S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>>=L,g-=L,n.back+=L}if(_>>>=S,g-=S,n.back+=S,64&x){e.msg="invalid distance code",n.mode=30;break}n.offset=T,n.extra=15&x,n.mode=24;case 24:if(n.extra){for(z=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===p)break e;if(w=v-p,n.offset>w){if((w=n.offset-w)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=30;break}w>n.wnext?(w-=n.wnext,E=n.wsize-w):E=n.wnext-w,w>n.length&&(w=n.length),k=n.window}else k=f,E=c-n.offset,w=n.length;w>p&&(w=p),p-=w,n.length-=w;do{f[c++]=k[E++]}while(--w);0===n.length&&(n.mode=21);break;case 26:if(0===p)break e;f[c++]=n.length,p--,n.mode=21;break;case 27:if(n.wrap){for(;g<32;){if(0===d)break e;d--,_|=u[h++]<>>=v=m>>>24,p-=v,0===(v=m>>>16&255))T[o++]=65535&m;else{if(!(16&v)){if(0==(64&v)){m=_[(65535&m)+(d&(1<>>=v,p-=v),p<15&&(d+=x[r++]<>>=v=m>>>24,p-=v,!(16&(v=m>>>16&255))){if(0==(64&v)){m=g[(65535&m)+(d&(1<l){e.msg="invalid distance too far back",n.mode=30;break e}if(d>>>=v,p-=v,E>(v=o-a)){if((v=E-v)>f&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(k=0,S=c,0===h){if(k+=u-v,v2;)T[o++]=S[k++],T[o++]=S[k++],T[o++]=S[k++],w-=3;w&&(T[o++]=S[k++],w>1&&(T[o++]=S[k++]))}else{k=o-E;do{T[o++]=T[k++],T[o++]=T[k++],T[o++]=T[k++],w-=3}while(w>2);w&&(T[o++]=T[k++],w>1&&(T[o++]=T[k++]))}break}}break}}while(r>3,d&=(1<<(p-=w<<3))-1,e.next_in=r,e.next_out=o,e.avail_in=r=1&&0===M[T];T--);if(L>T&&(L=T),0===T)return u[f++]=20971520,u[f++]=20971520,c.bits=1,0;for(x=1;x0&&(0===e||1!==T))return-1;for(N[1]=0,k=1;k<15;k++)N[k+1]=N[k]+M[k];for(S=0;S852||2===e&&I>592)return 1;for(;;){m=k-R,h[S]y?(v=B[P+h[S]],w=z[D+h[S]]):(v=96,w=0),d=1<>R)+(p-=d)]=m<<24|v<<16|w|0}while(0!==p);for(d=1<>=1;if(0!==d?(U&=d-1,U+=d):U=0,S++,0==--M[k]){if(k===T)break;k=t[n+h[S]]}if(k>L&&(U&g)!==_){for(0===R&&(R=L),b+=x,O=1<<(A=k-R);A+R852||2===e&&I>592)return 1;u[_=U&g]=L<<24|A<<16|b-f|0}}return 0!==U&&(u[b+U]=k-R<<24|64<<16|0),c.bits=L,0}},function(e,t,n){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}}]); \ No newline at end of file +var r=n(206),i=n(207),o=n(30);function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return C(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(e).length;default:if(r)return C(e).length;t=(""+t).toLowerCase(),r=!0}}function _(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,n);case"utf8":case"utf-8":return T(this,t,n);case"ascii":return L(this,t,n);case"latin1":case"binary":return A(this,t,n);case"base64":return x(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function g(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function b(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,i);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,i){var o,a=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var f=-1;for(o=n;os&&(n=s-l),o=n;o>=0;o--){for(var h=!0,c=0;ci&&(r=i):r=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function x(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function T(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:u>223?3:u>191?2:1;if(i+h<=n)switch(h){case 1:u<128&&(f=u);break;case 2:128==(192&(o=e[i+1]))&&(l=(31&u)<<6|63&o)>127&&(f=l);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(l=(15&u)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(f=l);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(f=l)}null===f?(f=65533,h=1):f>65535&&(f-=65536,r.push(f>>>10&1023|55296),f=56320|1023&f),r.push(f),i+=h}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,i){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(o,a),u=this.slice(r,i),f=e.slice(t,n),h=0;hi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return m(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":return w(this,e,t,n);case"latin1":case"binary":return E(this,e,t,n);case"base64":return k(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function L(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ir)&&(n=r);for(var i="",o=t;on)throw new RangeError("Trying to access beyond buffer length")}function U(e,t,n,r,i,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function z(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function D(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function M(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(e,t,n,r,o){return o||M(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function B(e,t,n,r,o){return o||M(e,0,n,8),i.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(i*=256);)r+=this[e+--t]*i;return r},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],i=1,o=0;++o=(i*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||U(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):z(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):z(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):D(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);U(this,e,t,n,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);U(this,e,t,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):z(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):z(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):D(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||U(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return N(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return N(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function Z(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(P,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function j(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,n(1))},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var l,u=[],f=!1,h=-1;function c(){f&&l&&(f=!1,l.length?u=l.concat(u):h=-1,u.length&&d())}function d(){if(!f){var e=s(c);f=!0;for(var t=u.length;t;){for(l=u,u=[];++h1)for(var n=1;n0&&a.length>i&&!a.warned){a.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=a.length,s=l,console&&console.warn&&console.warn(s)}return e}function h(){for(var e=[],t=0;t0&&(a=t[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var l=i[e];if(void 0===l)return!1;if("function"==typeof l)o(l,this,t);else{var u=l.length,f=_(l,u);for(n=0;n=0;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return d(this,e,!0)},s.prototype.rawListeners=function(e){return d(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},s.prototype.listenerCount=p,s.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(e,t,n){"use strict";(function(t,r,i){var o=n(12);function a(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=y;var s,l=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:o.nextTick;y.WritableState=b;var u=n(10);u.inherits=n(4);var f={deprecate:n(216)},h=n(32),c=n(13).Buffer,d=i.Uint8Array||function(){};var p,_=n(33);function g(){}function b(e,t){s=s||n(5),e=e||{};var r=t instanceof s;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,u=e.writableHighWaterMark,f=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(u||0===u)?u:f,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,i){--t.pendingcb,n?(o.nextTick(i,r),o.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(i(r),e._writableState.errorEmitted=!0,e.emit("error",r),S(e,t))}(e,n,r,t,i);else{var a=E(n);a||n.corked||n.bufferProcessing||!n.bufferedRequest||w(e,n),r?l(v,e,n,a,i):v(e,n,a,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function y(e){if(s=s||n(5),!(p.call(y,this)||this instanceof s))return new y(e);this._writableState=new b(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),h.call(this)}function m(e,t,n,r,i,o,a){t.writelen=r,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function v(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),o=t.corkedRequestsFree;o.entry=n;for(var s=0,l=!0;n;)i[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;i.allBuffers=l,m(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;n;){var u=n.chunk,f=n.encoding,h=n.callback;if(m(e,t,!1,t.objectMode?1:u.length,u,f,h),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function k(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),S(e,t)}))}function S(e,t){var n=E(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,o.nextTick(k,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}u.inherits(y,h),b.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(b.prototype,"buffer",{get:f.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof b)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},y.prototype.write=function(e,t,n){var r,i=this._writableState,a=!1,s=!i.objectMode&&(r=e,c.isBuffer(r)||r instanceof d);return s&&!c.isBuffer(e)&&(e=function(e){return c.from(e)}(e)),"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=g),i.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),o.nextTick(t,n)}(this,n):(s||function(e,t,n,r){var i=!0,a=!1;return null===n?a=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),o.nextTick(r,a),i=!1),i}(this,i,e,n))&&(i.pendingcb++,a=function(e,t,n,r,i,o){if(!n){var a=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=c.from(t,n));return t}(t,r,i);r!==a&&(n=!0,i="buffer",r=a)}var s=t.objectMode?1:r.length;t.length+=s;var l=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(y.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),y.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},y.prototype._writev=null,y.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,S(e,t),n&&(t.finished?o.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=_.destroy,y.prototype._undestroy=_.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(3),n(214).setImmediate,n(1))},,,,,,,,,function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";(function(t,r){var i=n(12);e.exports=m;var o,a=n(30);m.ReadableState=y;n(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=n(32),u=n(13).Buffer,f=t.Uint8Array||function(){};var h=n(10);h.inherits=n(4);var c=n(211),d=void 0;d=c&&c.debuglog?c.debuglog("stream"):function(){};var p,_=n(212),g=n(33);h.inherits(m,l);var b=["error","close","destroy","pause","resume"];function y(e,t){e=e||{};var r=t instanceof(o=o||n(5));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,a=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(a||0===a)?a:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new _,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=n(34).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function m(e){if(o=o||n(5),!(this instanceof m))return new m(e);this._readableState=new y(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function v(e,t,n,r,i){var o,a=e._readableState;null===t?(a.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,k(e)}(e,a)):(i||(o=function(e,t){var n;r=t,u.isBuffer(r)||r instanceof f||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(a,t)),o?e.emit("error",o):a.objectMode||t&&t.length>0?("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),r?a.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):w(e,a,t,!0):a.ended?e.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(t=a.decoder.write(t),a.objectMode||0!==t.length?w(e,a,t,!1):x(e,a)):w(e,a,t,!1))):r||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function k(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(d("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(S,e):S(e))}function S(e){d("emit readable"),e.emit("readable"),R(e)}function x(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(T,e,t))}function T(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++r}return t.length-=r,i}(e,t):function(e,t){var n=u.allocUnsafe(e),r=t.head,i=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var o=r.data,a=e>o.length?o.length:e;if(o.copy(n,n.length-e,0,a),0===(e-=a)){a===o.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++i}return t.length-=i,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function I(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(U,t,e))}function U(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function z(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return d("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?I(this):k(this),null;if(0===(e=E(e,t))&&t.ended)return 0===t.length&&I(this),null;var r,i=t.needReadable;return d("need readable",i),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&I(this)),null!==r&&this.emit("data",r),r},m.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},m.prototype.pipe=function(e,t){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,d("pipe count=%d opts=%j",o.pipesCount,t);var l=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?f:m;function u(t,r){d("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,d("cleanup"),e.removeListener("close",b),e.removeListener("finish",y),e.removeListener("drain",h),e.removeListener("error",g),e.removeListener("unpipe",u),n.removeListener("end",f),n.removeListener("end",m),n.removeListener("data",_),c=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function f(){d("onend"),e.end()}o.endEmitted?i.nextTick(l):n.once("end",l),e.on("unpipe",u);var h=function(e){return function(){var t=e._readableState;d("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,R(e))}}(n);e.on("drain",h);var c=!1;var p=!1;function _(t){d("ondata"),p=!1,!1!==e.write(t)||p||((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==z(o.pipes,e))&&!c&&(d("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,p=!0),n.pause())}function g(t){d("onerror",t),m(),e.removeListener("error",g),0===s(e,"error")&&e.emit("error",t)}function b(){e.removeListener("finish",y),m()}function y(){d("onfinish"),e.removeListener("close",b),m()}function m(){d("unpipe"),n.unpipe(e)}return n.on("data",_),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",g),e.once("close",b),e.once("finish",y),e.emit("pipe",n),o.flowing||(d("pipe resume"),n.resume()),e},m.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function f(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function h(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function c(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):""}t.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return i>0&&(e.lastNeed=i-1),i;if(--r=0)return i>0&&(e.lastNeed=i-2),i;if(--r=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){"use strict";e.exports=a;var r=n(5),i=n(10);function o(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length=0;s--)if(l[s]!=u[s])return!1;for(s=l.length-1;s>=0;s--)if(a=l[s],!h(e[a],t[a]))return!1;return!0}(e,t):e==t}function c(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function d(e,t){return!(!e||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(e):e instanceof t||!0===t.call({},e))}function p(e,t,n,i){var o;r.isString(n)&&(i=n,n=null);try{t()}catch(e){o=e}if(i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),e&&!o&&u(o,n,"Missing expected exception"+i),!e&&d(o,n)&&u(o,n,"Got unwanted exception"+i),e&&o&&n&&!d(o,n)||!e&&o)throw o}a.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return l(JSON.stringify(e.actual,s),128)+" "+e.operator+" "+l(JSON.stringify(e.expected,s),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||u;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,i=t.name,o=r.indexOf("\n"+i);if(o>=0){var a=r.indexOf("\n",o+1);r=r.substring(a+1)}this.stack=r}}},r.inherits(a.AssertionError,Error),a.fail=u,a.ok=f,a.equal=function(e,t,n){e!=t&&u(e,t,n,"==",a.equal)},a.notEqual=function(e,t,n){e==t&&u(e,t,n,"!=",a.notEqual)},a.deepEqual=function(e,t,n){h(e,t)||u(e,t,n,"deepEqual",a.deepEqual)},a.notDeepEqual=function(e,t,n){h(e,t)&&u(e,t,n,"notDeepEqual",a.notDeepEqual)},a.strictEqual=function(e,t,n){e!==t&&u(e,t,n,"===",a.strictEqual)},a.notStrictEqual=function(e,t,n){e===t&&u(e,t,n,"!==",a.notStrictEqual)},a.throws=function(e,t,n){p.apply(this,[!0].concat(i.call(arguments)))},a.doesNotThrow=function(e,t){p.apply(this,[!1].concat(i.call(arguments)))},a.ifError=function(e){if(e)throw e};var _=Object.keys||function(e){var t=[];for(var n in e)o.call(e,n)&&t.push(n);return t}},function(e,t,n){(function(e){var r=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),n={},r=0;r=o)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}})),l=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(n)?r.showHidden=n:n&&t._extend(r,n),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=l),f(r,e,r.depth)}function l(e,t){var n=s.styles[t];return n?"["+s.colors[n][0]+"m"+e+"["+s.colors[n][1]+"m":e}function u(e,t){return e}function f(e,n,r){if(e.customInspect&&n&&k(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,e);return b(i)||(i=f(e,i,r)),i}var o=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(b(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(g(t))return e.stylize(""+t,"number");if(p(t))return e.stylize(""+t,"boolean");if(_(t))return e.stylize("null","null")}(e,n);if(o)return o;var a=Object.keys(n),s=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(n)),E(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return h(n);if(0===a.length){if(k(n)){var l=n.name?": "+n.name:"";return e.stylize("[Function"+l+"]","special")}if(m(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(w(n))return e.stylize(Date.prototype.toString.call(n),"date");if(E(n))return h(n)}var u,v="",S=!1,x=["{","}"];(d(n)&&(S=!0,x=["[","]"]),k(n))&&(v=" [Function"+(n.name?": "+n.name:"")+"]");return m(n)&&(v=" "+RegExp.prototype.toString.call(n)),w(n)&&(v=" "+Date.prototype.toUTCString.call(n)),E(n)&&(v=" "+h(n)),0!==a.length||S&&0!=n.length?r<0?m(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),u=S?function(e,t,n,r,i){for(var o=[],a=0,s=t.length;a=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(u,v,x)):x[0]+v+x[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function c(e,t,n,r,i,o){var a,s,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(s=e.stylize("[Setter]","special")),A(r,i)||(a="["+i+"]"),s||(e.seen.indexOf(l.value)<0?(s=_(n)?f(e,l.value,null):f(e,l.value,n-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),y(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function d(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function _(e){return null===e}function g(e){return"number"==typeof e}function b(e){return"string"==typeof e}function y(e){return void 0===e}function m(e){return v(e)&&"[object RegExp]"===S(e)}function v(e){return"object"==typeof e&&null!==e}function w(e){return v(e)&&"[object Date]"===S(e)}function E(e){return v(e)&&("[object Error]"===S(e)||e instanceof Error)}function k(e){return"function"==typeof e}function S(e){return Object.prototype.toString.call(e)}function x(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(n){if(y(o)&&(o=e.env.NODE_DEBUG||""),n=n.toUpperCase(),!a[n])if(new RegExp("\\b"+n+"\\b","i").test(o)){var r=e.pid;a[n]=function(){var e=t.format.apply(t,arguments);console.error("%s %d: %s",n,r,e)}}else a[n]=function(){};return a[n]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=d,t.isBoolean=p,t.isNull=_,t.isNullOrUndefined=function(e){return null==e},t.isNumber=g,t.isString=b,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=m,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=k,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(227);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function L(){var e=new Date,t=[x(e.getHours()),x(e.getMinutes()),x(e.getSeconds())].join(":");return[e.getDate(),T[e.getMonth()],t].join(" ")}function A(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",L(),t.format.apply(t,arguments))},t.inherits=n(4),t._extend=function(e,t){if(!t||!v(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function O(e,t){if(!e){var n=new Error("Promise was rejected with a falsy value");n.reason=e,e=n}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(R&&e[R]){var t;if("function"!=typeof(t=e[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,R,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,n,r=new Promise((function(e,r){t=e,n=r})),i=[],o=0;o>>16&65535|0,a=0;0!==n;){n-=a=n>2e3?2e3:n;do{o=o+(i=i+t[r++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0}},function(e,t,n){"use strict";var r=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();e.exports=function(e,t,n,i){var o=r,a=i+n;e^=-1;for(var s=i;s>>8^o[255&(e^t[s])];return-1^e}},function(e,t,n){"use strict";function r(e,t){return e.readUInt32LE(t)+4294967296*e.readUInt32LE(t+4)}function i(e){var t=arguments;return new Error(e.replace(/{(\d+)}/g,(function(e,n){var r=t[+n+1];return void 0===r?e:r})))}t.readEOCDRecord=function(e,t){e.read(-65557,(function(n,o){if(n)return t(n);if(o.length<22)return t(i("expected at least 22 bytes for End Of Central Directory got {0}",o.length));var a={},s=o.lastIndexOf("PK");if(-1===s)return t(i("End Of Central Directory not found"));var l=o.slice(s);if(0!==l.readUInt16LE(4))return t(i("spanned zip files are not supported"));a.entryCount=l.readUInt16LE(10),a.cdSize=l.readUInt32LE(12),a.cdOffset=l.readUInt32LE(16);var u=l.readUInt16LE(20);a.comment=l.toString("utf-8",22,22+u),console.assert(a.comment.length===u,"expected "+u+" bytes for zip file comment got "+a.comment.length),65535===a.entryCount||4294967295===a.cdSize||4294967295===a.cdOffset?function(e,t,n){!function(e,t,n){e.read(t-20,t,(function(e,t){if(e)return n(e);if(t.length<20)return n(i("expected at least 20 bytes for Zip64 End Of Central Directory Locator got {0}",t.length));if(117853008!==t.readUInt32LE(0))return n(i("Zip64 End Of Central Directory Locator not found"));var o=r(t,8);if(1!==t.readUInt32LE(16))return n(i("spanned zip files are not supported"));n(null,o)}))}(e,t,(function(t,o){if(t)return n(t);e.read(o,o+56,(function(e,t){if(e)return n(e);if(t.length<56)return n(i("expected at least 56 bytes for Zip64 End Of Central Directory got {0}",t.length));var o={};if(101075792!==t.readUInt32LE(0))return n(i("Zip64 End Of Central Directory not found"));o.entryCount=r(t,32),o.cdSize=r(t,40),o.cdOffset=r(t,48),n(null,o)}))}))}(e,s,(function(e,n){n&&(n.comment=a.comment),t(e,n)})):t(null,a)}))},t.readUInt64LE=r,t.E=i,t.cp437ToUnicode=function(e){var t,n=[0,9786,9787,9829,9830,9827,9824,8226,9688,9675,9689,9794,9792,9834,9835,9788,9658,9668,8597,8252,182,167,9644,8616,8593,8595,8594,8592,8735,8596,9650,9660,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,8962,199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,225,237,243,250,241,209,170,186,191,8976,172,189,188,161,171,187,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,8801,177,8805,8804,8992,8993,247,8776,176,8729,183,8730,8319,178,9632,160],r=new Array(e.length),i=r.length;for(t=0;t0)throw new Error("Invalid string. Length must be a multiple of 4");var l=e.length;a="="===e.charAt(l-2)?2:"="===e.charAt(l-1)?1:0,s=new t(3*e.length/4-a),i=a>0?e.length-4:e.length;var f=0;function h(e){s[f++]=e}for(n=0,r=0;n>16),h((65280&o)>>8),h(255&o);return 2===a?h(255&(o=u(e.charAt(n))<<2|u(e.charAt(n+1))>>4)):1===a&&(h((o=u(e.charAt(n))<<10|u(e.charAt(n+1))<<4|u(e.charAt(n+2))>>2)>>8&255),h(255&o)),s},e.fromByteArray=function(e){var t,n,r,i,o=e.length%3,a="";function s(e){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)}for(t=0,r=e.length-o;t>18&63)+s(i>>12&63)+s(i>>6&63)+s(63&i);switch(o){case 1:a+=s((n=e[e.length-1])>>2),a+=s(n<<4&63),a+="==";break;case 2:a+=s((n=(e[e.length-2]<<8)+e[e.length-1])>>10),a+=s(n>>4&63),a+=s(n<<2&63),a+="="}return a}}(t)},function(e,t){t.read=function(e,t,n,r,i){var o,a,s=8*i-r-1,l=(1<>1,f=-7,h=n?i-1:0,c=n?-1:1,d=e[t+h];for(h+=c,o=d&(1<<-f)-1,d>>=-f,f+=s;f>0;o=256*o+e[t+h],h+=c,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=r;f>0;a=256*a+e[t+h],h+=c,f-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,r),o-=u}return(d?-1:1)*a*Math.pow(2,o-r)},t.write=function(e,t,n,r,i,o){var a,s,l,u=8*o-i-1,f=(1<>1,c=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,_=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+h>=1?c/l:c*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=f?(s=0,a=f):a+h>=1?(s=(t*l-1)*Math.pow(2,i),a+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;e[n+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[n+d]=255&a,d+=p,a/=256,u-=8);e[n+d-p]|=128*_}},function(e,t,n){"use strict";var r=n(209),i=n(218),o=n(40);function a(e,t){try{var n=new r(e);o.readEOCDRecord(n,(function(e,r){t(e,e?null:new i(n,r))}))}catch(e){t(e)}}e.exports=function(e,t){if("string"==typeof e){var n=new XMLHttpRequest;n.addEventListener("readystatechange",(function(){4===this.readyState&&(200===this.status?a(this.response,t):t(o.E("network error: {0} {1}",this.status,this.statusText)))}));try{n.open("GET",e),n.responseType="blob",n.send()}catch(e){t(e)}}else a(e,t)}},function(e,t,n){"use strict";(function(t){var r=n(210);function i(e){if(!(this instanceof i))return new i(e);if(!(e instanceof Blob||-1!==["[object Blob]","[object File]"].indexOf(Object.prototype.toString.call(e))))throw new TypeError('"blob" argument must be an instance of Blob or File');this._blob=e}e.exports=i,i.prototype.read=function(e,n,r){if("function"==typeof e?r=e:"function"==typeof n&&(r=n,n=this._blob.size),"function"!=typeof r)throw new TypeError('"callback" argument must be a function');e=~~e,n=void 0===n?this._blob.size:~~n;var i=new FileReader;i.addEventListener("loadend",(function e(){this.removeEventListener("loadend",e),r(this.error,this.result?t.from(this.result):null)})),i.readAsArrayBuffer(this._blob.slice(e,n))},i.prototype.createReadStream=function(e){return new r(this._blob,e)}}).call(this,n(2).Buffer)},function(e,t,n){"use strict";(function(t){var r=n(9).Readable;function i(e,n){n||(n={}),void 0===n.highWaterMark&&(n.highWaterMark=65536),r.call(this,n);var i=~~n.start,o=void 0===n.end?e.size:~~n.end;this._blob=e.slice(i,o),this._end=this._blob.size,this._pos=0,this._reader=new FileReader;var a=this;this._loadendListener=function(){this.error?a.destroy(this.error):(a._pos+=this.result.byteLength,a.push(t.from(this.result)))},this._reader.addEventListener("loadend",this._loadendListener),this.on("end",(function(){this.destroy()}))}e.exports=i,i.prototype=Object.create(r.prototype),i.prototype.constructor=i,Object.defineProperties(i.prototype,{readableLength:{get:function(){return this._readableState.length}},ended:{get:function(){return this._pos>=this._end}}}),i.prototype._read=function(e){this.destroyed||(this.ended?this.push(null):this._reader.readAsArrayBuffer(this._blob.slice(this._pos,this._pos+e)))},i.prototype._destroy=function(e,t){t(e),this._reader.readyState===FileReader.LOADING&&this._reader.abort(),this._reader.removeEventListener("loadend",this._loadendListener),this._reader=null}}).call(this,n(2).Buffer)},function(e,t){},function(e,t,n){"use strict";var r=n(13).Buffer,i=n(213);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t,n,i,o=r.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,n=o,i=s,t.copy(n,i),s+=a.data.length,a=a.next;return o},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(215),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(1))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,o,a,s,l=1,u={},f=!1,h=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){p(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){p(e.data)},r=function(e){o.port2.postMessage(e)}):h&&"onreadystatechange"in h.createElement("script")?(i=h.documentElement,r=function(e){var t=h.createElement("script");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(p,0,e)}:(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&p(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(a+t,"*")}),c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n0;){if(this.readableLength<46){if(this.ended)return f(s("expected at least 46 bytes for Central File Header got {0}",this.readableLength));break}var e=this.read(46),n=new h;if(33639248!==e.readUInt32LE(0))return f(s("invalide Central File Header signature"));n.versionMadeBy=e.readUInt16LE(4),n.versionNeededToExtract=e.readUInt16LE(6),n.generalPurposeBitFlag=e.readUInt16LE(8),n.compressionMethod=e.readUInt16LE(10),n.lastModTime=e.readUInt16LE(12),n.lastModDate=e.readUInt16LE(14),n.crc32=e.readUInt32LE(16),n.compressedSize=e.readUInt32LE(20),n.uncompressedSize=e.readUInt32LE(24);var i=e.readUInt16LE(28),a=e.readUInt16LE(30),c=e.readUInt16LE(32);n.internalAttributes=e.readUInt16LE(36),n.externalAttributes=e.readUInt32LE(38),n.localHeaderOffset=e.readUInt32LE(42);var d=i+a+c;if(this.readableLength6){var a=1===i.readUInt8(0),s=r.unsigned(o)===i.readUInt32LE(1),l=i.toString("utf8",5);a&&s&&l.length>0&&(n[e]=l)}}))})),4294967295===n.compressedSize||4294967295===n.uncompressedSize||4294967295===n.localHeaderOffset){var w=n.extraFields.filter((function(e){return 1===e.headerId}))[0];if(!w)return f(s("Zip64 Extended Information Extra Field not found"));var E=0,k=["uncompressedSize","compressedSize","localHeaderOffset"];for(var S in k){var x=k[S];if(4294967295===n[x])try{n[x]=l(w.data,E),E+=8}catch(e){return f(s("invalid Zip64 Extended Information Extra Field: {0} not found",x))}}}o.entries.push(n)}this.read(0)}))},f.prototype.readEntryData=function(e,t,n){if(e.encrypted)n(s("encrypted files are not supported"));else if(0===e.compressionMethod||8===e.compressionMethod){var a=this;this._reader.read(e.localHeaderOffset,e.localHeaderOffset+30,(function(l,u){if(l)return n(l);if(u.length<30)return n(s("expected at least 30 bytes for Local File Header got {1}",u.length));if(67324752!==u.readUInt32LE(0))return n(s("invalid Local File Header signature"));var f=u.readUInt16LE(26),h=u.readUInt16LE(28),c=e.localHeaderOffset+30+f+h,d=a._reader.createReadStream({start:c,end:c+e.compressedSize});if(8===e.compressionMethod){var p=i();d=d.on("error",(function(e){p.destroy(e)})).pipe(p)}if(t){var _,g=new o({transform:function(e,t,n){_=r(e,_),n(null,e)},flush:function(t){t(_.readUInt32BE(0)===e.crc32?null:s("corrupted file: crc check fails"))}});d=d.on("error",(function(e){g.destroy(e)})).pipe(g)}n(null,d)}))}else n(s("compression method is not supported"))},Object.defineProperties(h.prototype,{encrypted:{get:function(){return 1==(1&this.generalPurposeBitFlag)}},lastModDateTime:{get:function(){return new Date(1980+(this.lastModDate>>9&127),(this.lastModDate>>5&15)-1,31&this.lastModDate,this.lastModTime>>11&31,this.lastModTime>>5&63,2*(31&this.lastModTime))}}})}).call(this,n(2).Buffer)},function(e,t,n){var r=n(2).Buffer,i=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];function o(e){if(r.isBuffer(e))return e;var t="function"==typeof r.alloc&&"function"==typeof r.from;if("number"==typeof e)return t?r.alloc(e):new r(e);if("string"==typeof e)return t?r.from(e):new r(e);throw new Error("input must be buffer, number, or string, received "+typeof e)}function a(e){var t=o(4);return t.writeInt32BE(e,0),t}function s(e,t){e=o(e),r.isBuffer(t)&&(t=t.readUInt32BE(0));for(var n=-1^~~t,a=0;a>>8;return-1^n}function l(){return a(s.apply(null,arguments))}"undefined"!=typeof Int32Array&&(i=new Int32Array(i)),l.signed=function(){return s.apply(null,arguments)},l.unsigned=function(){return s.apply(null,arguments)>>>0},e.exports=l},function(e,t,n){"use strict";(function(e){var r=n(2).Buffer,i=n(221).Transform,o=n(226),a=n(37),s=n(36).ok,l=n(2).kMaxLength,u="Cannot create final Buffer. It would be larger than 0x"+l.toString(16)+" bytes";o.Z_MIN_WINDOWBITS=8,o.Z_MAX_WINDOWBITS=15,o.Z_DEFAULT_WINDOWBITS=15,o.Z_MIN_CHUNK=64,o.Z_MAX_CHUNK=1/0,o.Z_DEFAULT_CHUNK=16384,o.Z_MIN_MEMLEVEL=1,o.Z_MAX_MEMLEVEL=9,o.Z_DEFAULT_MEMLEVEL=8,o.Z_MIN_LEVEL=-1,o.Z_MAX_LEVEL=9,o.Z_DEFAULT_LEVEL=o.Z_DEFAULT_COMPRESSION;for(var f=Object.keys(o),h=0;h=l?a=new RangeError(u):t=r.concat(i,o),i=[],e.close(),n(a,t)}e.on("error",(function(t){e.removeListener("end",s),e.removeListener("readable",a),n(t)})),e.on("end",s),e.end(t),a()}function y(e,t){if("string"==typeof t&&(t=r.from(t)),!r.isBuffer(t))throw new TypeError("Not a string or buffer");var n=e._finishFlushFlag;return e._processChunk(t,n)}function m(e){if(!(this instanceof m))return new m(e);L.call(this,e,o.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);L.call(this,e,o.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);L.call(this,e,o.GZIP)}function E(e){if(!(this instanceof E))return new E(e);L.call(this,e,o.GUNZIP)}function k(e){if(!(this instanceof k))return new k(e);L.call(this,e,o.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);L.call(this,e,o.INFLATERAW)}function x(e){if(!(this instanceof x))return new x(e);L.call(this,e,o.UNZIP)}function T(e){return e===o.Z_NO_FLUSH||e===o.Z_PARTIAL_FLUSH||e===o.Z_SYNC_FLUSH||e===o.Z_FULL_FLUSH||e===o.Z_FINISH||e===o.Z_BLOCK}function L(e,n){var a=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!T(e.flush))throw new Error("Invalid flush flag: "+e.flush);if(e.finishFlush&&!T(e.finishFlush))throw new Error("Invalid flush flag: "+e.finishFlush);if(this._flushFlag=e.flush||o.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:o.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!r.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new o.Zlib(n);var s=this;this._hadError=!1,this._handle.onerror=function(e,n){A(s),s._hadError=!0;var r=new Error(e);r.errno=n,r.code=t.codes[n],s.emit("error",r)};var l=t.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(l=e.level);var u=t.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(u=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,u,e.dictionary),this._buffer=r.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!a._handle},configurable:!0,enumerable:!0})}function A(t,n){n&&e.nextTick(n),t._handle&&(t._handle.close(),t._handle=null)}function R(e){e.emit("close")}Object.defineProperty(t,"codes",{enumerable:!0,value:Object.freeze(d),writable:!1}),t.Deflate=m,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=k,t.InflateRaw=S,t.Unzip=x,t.createDeflate=function(e){return new m(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new k(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new x(e)},t.deflate=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new m(t),e,n)},t.deflateSync=function(e,t){return y(new m(t),e)},t.gzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new w(t),e,n)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new k(t),e,n)},t.deflateRawSync=function(e,t){return y(new k(t),e)},t.unzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new x(t),e,n)},t.unzipSync=function(e,t){return y(new x(t),e)},t.inflate=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new v(t),e,n)},t.inflateSync=function(e,t){return y(new v(t),e)},t.gunzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new E(t),e,n)},t.gunzipSync=function(e,t){return y(new E(t),e)},t.inflateRaw=function(e,t,n){return"function"==typeof t&&(n=t,t={}),b(new S(t),e,n)},t.inflateRawSync=function(e,t){return y(new S(t),e)},a.inherits(L,i),L.prototype.params=function(n,r,i){if(nt.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+n);if(r!=t.Z_FILTERED&&r!=t.Z_HUFFMAN_ONLY&&r!=t.Z_RLE&&r!=t.Z_FIXED&&r!=t.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==n||this._strategy!==r){var a=this;this.flush(o.Z_SYNC_FLUSH,(function(){s(a._handle,"zlib binding closed"),a._handle.params(n,r),a._hadError||(a._level=n,a._strategy=r,i&&i())}))}else e.nextTick(i)},L.prototype.reset=function(){return s(this._handle,"zlib binding closed"),this._handle.reset()},L.prototype._flush=function(e){this._transform(r.alloc(0),"",e)},L.prototype.flush=function(t,n){var i=this,a=this._writableState;("function"==typeof t||void 0===t&&!n)&&(n=t,t=o.Z_FULL_FLUSH),a.ended?n&&e.nextTick(n):a.ending?n&&this.once("end",n):a.needDrain?n&&this.once("drain",(function(){return i.flush(t,n)})):(this._flushFlag=t,this.write(r.alloc(0),"",n))},L.prototype.close=function(t){A(this,t),e.nextTick(R,this)},L.prototype._transform=function(e,t,n){var i,a=this._writableState,s=(a.ending||a.ended)&&(!e||a.length===e.length);return null===e||r.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=a.length&&(this._flushFlag=this._opts.flush||o.Z_NO_FLUSH)),void this._processChunk(e,i,n)):n(new Error("zlib binding closed")):n(new Error("invalid input"))},L.prototype._processChunk=function(e,t,n){var i=e&&e.length,o=this._chunkSize-this._offset,a=0,f=this,h="function"==typeof n;if(!h){var c,d=[],p=0;this.on("error",(function(e){c=e})),s(this._handle,"zlib binding closed");do{var _=this._handle.writeSync(t,e,a,i,this._buffer,this._offset,o)}while(!this._hadError&&y(_[0],_[1]));if(this._hadError)throw c;if(p>=l)throw A(this),new RangeError(u);var g=r.concat(d,p);return A(this),g}s(this._handle,"zlib binding closed");var b=this._handle.write(t,e,a,i,this._buffer,this._offset,o);function y(l,u){if(this&&(this.buffer=null,this.callback=null),!f._hadError){var c=o-u;if(s(c>=0,"have should not go down"),c>0){var _=f._buffer.slice(f._offset,f._offset+c);f._offset+=c,h?f.push(_):(d.push(_),p+=_.length)}if((0===u||f._offset>=f._chunkSize)&&(o=f._chunkSize,f._offset=0,f._buffer=r.allocUnsafe(f._chunkSize)),0===u){if(a+=i-l,i=l,!h)return!0;var g=f._handle.write(t,e,a,i,f._buffer,f._offset,f._chunkSize);return g.callback=y,void(g.buffer=e)}if(!h)return!1;n()}}b.buffer=e,b.callback=y},a.inherits(m,L),a.inherits(v,L),a.inherits(w,L),a.inherits(E,L),a.inherits(k,L),a.inherits(S,L),a.inherits(x,L)}).call(this,n(3))},function(e,t,n){e.exports=i;var r=n(20).EventEmitter;function i(){r.call(this)}n(4)(i,r),i.Readable=n(9),i.Writable=n(222),i.Duplex=n(223),i.Transform=n(224),i.PassThrough=n(225),i.Stream=i,i.prototype.pipe=function(e,t){var n=this;function i(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",i),e.on("drain",o),e._isStdio||t&&!1===t.end||(n.on("end",s),n.on("close",l));var a=!1;function s(){a||(a=!0,e.end())}function l(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function u(e){if(f(),0===r.listenerCount(this,"error"))throw e}function f(){n.removeListener("data",i),e.removeListener("drain",o),n.removeListener("end",s),n.removeListener("close",l),n.removeListener("error",u),e.removeListener("error",u),n.removeListener("end",f),n.removeListener("close",f),e.removeListener("close",f)}return n.on("error",u),e.on("error",u),n.on("end",f),n.on("close",f),e.on("close",f),e.emit("pipe",n),e}},function(e,t,n){e.exports=n(21)},function(e,t,n){e.exports=n(5)},function(e,t,n){e.exports=n(9).Transform},function(e,t,n){e.exports=n(9).PassThrough},function(e,t,n){"use strict";(function(e,r){var i=n(36),o=n(228),a=n(229),s=n(232),l=n(235);for(var u in l)t[u]=l[u];t.NONE=0,t.DEFLATE=1,t.INFLATE=2,t.GZIP=3,t.GUNZIP=4,t.DEFLATERAW=5,t.INFLATERAW=6,t.UNZIP=7;function f(e){if("number"!=typeof e||et.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}f.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,"close before init"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?a.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},f.prototype.write=function(e,t,n,r,i,o,a){return this._write(!0,e,t,n,r,i,o,a)},f.prototype.writeSync=function(e,t,n,r,i,o,a){return this._write(!1,e,t,n,r,i,o,a)},f.prototype._write=function(n,o,a,s,l,u,f,h){if(i.equal(arguments.length,8),i(this.init_done,"write before init"),i(this.mode!==t.NONE,"already finalized"),i.equal(!1,this.write_in_progress,"write already in progress"),i.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,i.equal(!1,void 0===o,"must provide flush value"),this.write_in_progress=!0,o!==t.Z_NO_FLUSH&&o!==t.Z_PARTIAL_FLUSH&&o!==t.Z_SYNC_FLUSH&&o!==t.Z_FULL_FLUSH&&o!==t.Z_FINISH&&o!==t.Z_BLOCK)throw new Error("Invalid flush value");if(null==a&&(a=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=a,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=u,this.strm.next_out=f,this.flush=o,!n)return this._process(),this._checkError()?this._afterSync():void 0;var c=this;return r.nextTick((function(){c._process(),c._after()})),this},f.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},f.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=a.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},f.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error("unexpected end of file"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},f.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},f.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},f.prototype.init=function(e,n,r,o,a){i(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),i(e>=8&&e<=15,"invalid windowBits"),i(n>=-1&&n<=9,"invalid compression level"),i(r>=1&&r<=9,"invalid memlevel"),i(o===t.Z_FILTERED||o===t.Z_HUFFMAN_ONLY||o===t.Z_RLE||o===t.Z_FIXED||o===t.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(n,e,r,o,a),this._setDictionary()},f.prototype.params=function(){throw new Error("deflateParams Not supported")},f.prototype.reset=function(){this._reset(),this._setDictionary()},f.prototype._init=function(e,n,r,i,l){switch(this.level=e,this.windowBits=n,this.memLevel=r,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new o,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=a.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==t.Z_OK&&this._error("Init error"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},f.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=a.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error("Failed to set dictionary")}},f.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=a.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error("Failed to reset stream")},t.Zlib=f}).call(this,n(2).Buffer,n(3))},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,n){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},function(e,t,n){"use strict";var r,i=n(14),o=n(230),a=n(38),s=n(39),l=n(231);function u(e,t){return e.msg=l[t],t}function f(e){return(e<<1)-(e>4?9:0)}function h(e){for(var t=e.length;--t>=0;)e[t]=0}function c(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(i.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function d(e,t){o._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,c(e.strm)}function p(e,t){e.pending_buf[e.pending++]=t}function _(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function g(e,t){var n,r,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,u=e.window,f=e.w_mask,h=e.prev,c=e.strstart+258,d=u[o+a-1],p=u[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(u[(n=t)+a]===p&&u[n+a-1]===d&&u[n]===u[o]&&u[++n]===u[o+1]){o+=2,n++;do{}while(u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&oa){if(e.match_start=t,a=r,r>=s)break;d=u[o+a-1],p=u[o+a]}}}while((t=h[t&f])>l&&0!=--i);return a<=e.lookahead?a:e.lookahead}function b(e){var t,n,r,o,l,u,f,h,c,d,p=e.w_size;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-262)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=n=e.hash_size;do{r=e.head[--t],e.head[t]=r>=p?r-p:0}while(--n);t=n=p;do{r=e.prev[--t],e.prev[t]=r>=p?r-p:0}while(--n);o+=p}if(0===e.strm.avail_in)break;if(u=e.strm,f=e.window,h=e.strstart+e.lookahead,c=o,d=void 0,(d=u.avail_in)>c&&(d=c),n=0===d?0:(u.avail_in-=d,i.arraySet(f,u.input,u.next_in,d,h),1===u.state.wrap?u.adler=a(u.adler,f,d,h):2===u.state.wrap&&(u.adler=s(u.adler,f,d,h)),u.next_in+=d,u.total_in+=d,d),e.lookahead+=n,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(r=o._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=o._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,r-=16),o<1||o>9||8!==n||r<8||r>15||t<0||t>9||a<0||a>4)return u(e,-2);8===r&&(r=9);var l=new w;return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=r,l.w_size=1<e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(b(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((0===e.strstart||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,d(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-262&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(d(e,!1),e.strm.avail_out),1)})),new v(4,4,8,4,y),new v(4,5,16,8,y),new v(4,6,32,32,y),new v(4,4,16,16,m),new v(8,16,32,32,m),new v(8,16,128,128,m),new v(8,32,128,256,m),new v(32,128,258,1024,m),new v(32,258,258,4096,m)],t.deflateInit=function(e,t){return S(e,t,8,15,8,0)},t.deflateInit2=S,t.deflateReset=k,t.deflateResetKeep=E,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?-2:(e.state.gzhead=t,0):-2},t.deflate=function(e,t){var n,i,a,l;if(!e||!e.state||t>5||t<0)return e?u(e,-2):-2;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||666===i.status&&4!==t)return u(e,0===e.avail_out?-5:-2);if(i.strm=e,n=i.last_flush,i.last_flush=t,42===i.status)if(2===i.wrap)e.adler=0,p(i,31),p(i,139),p(i,8),i.gzhead?(p(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),p(i,255&i.gzhead.time),p(i,i.gzhead.time>>8&255),p(i,i.gzhead.time>>16&255),p(i,i.gzhead.time>>24&255),p(i,9===i.level?2:i.strategy>=2||i.level<2?4:0),p(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(p(i,255&i.gzhead.extra.length),p(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(p(i,0),p(i,0),p(i,0),p(i,0),p(i,0),p(i,9===i.level?2:i.strategy>=2||i.level<2?4:0),p(i,3),i.status=113);else{var g=8+(i.w_bits-8<<4)<<8;g|=(i.strategy>=2||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(g|=32),g+=31-g%31,i.status=113,_(i,g),0!==i.strstart&&(_(i,e.adler>>>16),_(i,65535&e.adler)),e.adler=1}if(69===i.status)if(i.gzhead.extra){for(a=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),c(e),a=i.pending,i.pending!==i.pending_buf_size));)p(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){a=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),c(e),a=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexa&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),0===l&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){a=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),c(e),a=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexa&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),0===l&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&c(e),i.pending+2<=i.pending_buf_size&&(p(i,255&e.adler),p(i,e.adler>>8&255),e.adler=0,i.status=113)):i.status=113),0!==i.pending){if(c(e),0===e.avail_out)return i.last_flush=-1,0}else if(0===e.avail_in&&f(t)<=f(n)&&4!==t)return u(e,-5);if(666===i.status&&0!==e.avail_in)return u(e,-5);if(0!==e.avail_in||0!==i.lookahead||0!==t&&666!==i.status){var y=2===i.strategy?function(e,t){for(var n;;){if(0===e.lookahead&&(b(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(d(e,!1),0===e.strm.avail_out)?1:2}(i,t):3===i.strategy?function(e,t){for(var n,r,i,a,s=e.window;;){if(e.lookahead<=258){if(b(e),e.lookahead<=258&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=s[i=e.strstart-1])===s[++i]&&r===s[++i]&&r===s[++i]){a=e.strstart+258;do{}while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=o._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(d(e,!1),0===e.strm.avail_out)?1:2}(i,t):r[i.level].func(i,t);if(3!==y&&4!==y||(i.status=666),1===y||3===y)return 0===e.avail_out&&(i.last_flush=-1),0;if(2===y&&(1===t?o._tr_align(i):5!==t&&(o._tr_stored_block(i,0,0,!1),3===t&&(h(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),c(e),0===e.avail_out))return i.last_flush=-1,0}return 4!==t?0:i.wrap<=0?1:(2===i.wrap?(p(i,255&e.adler),p(i,e.adler>>8&255),p(i,e.adler>>16&255),p(i,e.adler>>24&255),p(i,255&e.total_in),p(i,e.total_in>>8&255),p(i,e.total_in>>16&255),p(i,e.total_in>>24&255)):(_(i,e.adler>>>16),_(i,65535&e.adler)),c(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?u(e,-2):(e.state=null,113===t?u(e,-3):0):-2},t.deflateSetDictionary=function(e,t){var n,r,o,s,l,u,f,c,d=t.length;if(!e||!e.state)return-2;if(2===(s=(n=e.state).wrap)||1===s&&42!==n.status||n.lookahead)return-2;for(1===s&&(e.adler=a(e.adler,t,d,0)),n.wrap=0,d>=n.w_size&&(0===s&&(h(n.head),n.strstart=0,n.block_start=0,n.insert=0),c=new i.Buf8(n.w_size),i.arraySet(c,t,d-n.w_size,n.w_size,0),t=c,d=n.w_size),l=e.avail_in,u=e.next_in,f=e.input,e.avail_in=d,e.next_in=0,e.input=t,b(n);n.lookahead>=3;){r=n.strstart,o=n.lookahead-2;do{n.ins_h=(n.ins_h<=0;)e[t]=0}var o=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],a=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],l=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);i(u);var f=new Array(60);i(f);var h=new Array(512);i(h);var c=new Array(256);i(c);var d=new Array(29);i(d);var p,_,g,b=new Array(30);function y(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}function m(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function v(e){return e<256?h[e]:h[256+(e>>>7)]}function w(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function E(e,t,n){e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function x(e,t,n){var r,i,o=new Array(16),a=0;for(r=1;r<=15;r++)o[r]=a=a+n[r-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=S(o[s]++,s))}}function T(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function L(e){e.bi_valid>8?w(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function A(e,t,n,r){var i=2*t,o=2*n;return e[i]>1;n>=1;n--)R(e,o,n);i=l;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],R(e,o,1),r=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=r,o[2*i]=o[2*n]+o[2*r],e.depth[i]=(e.depth[n]>=e.depth[r]?e.depth[n]:e.depth[r])+1,o[2*n+1]=o[2*r+1]=i,e.heap[1]=i++,R(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,r,i,o,a,s,l=t.dyn_tree,u=t.max_code,f=t.stat_desc.static_tree,h=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,_=0;for(o=0;o<=15;o++)e.bl_count[o]=0;for(l[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n<573;n++)(o=l[2*l[2*(r=e.heap[n])+1]+1]+1)>p&&(o=p,_++),l[2*r+1]=o,r>u||(e.bl_count[o]++,a=0,r>=d&&(a=c[r-d]),s=l[2*r],e.opt_len+=s*(o+a),h&&(e.static_len+=s*(f[2*r+1]+a)));if(0!==_){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,_-=2}while(_>0);for(o=p;0!==o;o--)for(r=e.bl_count[o];0!==r;)(i=e.heap[--n])>u||(l[2*i+1]!==o&&(e.opt_len+=(o-l[2*i+1])*l[2*i],l[2*i+1]=o),r--)}}(e,t),x(o,u,e.bl_count)}function U(e,t,n){var r,i,o=-1,a=t[1],s=0,l=7,u=4;for(0===a&&(l=138,u=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=a,a=t[2*(r+1)+1],++s>=7;r<30;r++)for(b[r]=i<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),I(e,e.l_desc),I(e,e.d_desc),a=function(e){var t;for(U(e,e.dyn_ltree,e.l_desc.max_code),U(e,e.dyn_dtree,e.d_desc.max_code),I(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*l[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=i&&(i=o)):i=o=n+5,n+4<=i&&-1!==t?M(e,t,n,r):4===e.strategy||o===i?(E(e,2+(r?1:0),3),O(e,u,f)):(E(e,4+(r?1:0),3),function(e,t,n,r){var i;for(E(e,t-257,5),E(e,n-1,5),E(e,r-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(c[n]+256+1)]++,e.dyn_dtree[2*v(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){E(e,2,3),k(e,256,u),function(e){16===e.bi_valid?(w(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,n){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(e,t,n){"use strict";var r=n(14),i=n(38),o=n(39),a=n(233),s=n(234);function l(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function u(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new r.Buf32(852),t.distcode=t.distdyn=new r.Buf32(592),t.sane=1,t.back=-1,0):-2}function h(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,f(e)):-2}function c(e,t){var n,r;return e&&e.state?(r=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?-2:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,h(e))):-2}function d(e,t){var n,r;return e?(r=new u,e.state=r,r.window=null,0!==(n=c(e,t))&&(e.state=null),n):-2}var p,_,g=!0;function b(e){if(g){var t;for(p=new r.Buf32(512),_=new r.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(1,e.lens,0,288,p,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(2,e.lens,0,32,_,0,e.work,{bits:5}),g=!1}e.lencode=p,e.lenbits=9,e.distcode=_,e.distbits=5}function y(e,t,n,i){var o,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(r.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((o=a.wsize-a.wnext)>i&&(o=i),r.arraySet(a.window,t,n-i,o,a.wnext),(i-=o)?(r.arraySet(a.window,t,n-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=o(n.check,M,2,0),_=0,g=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&_)<<8)+(_>>8))%31){e.msg="incorrect header check",n.mode=30;break}if(8!=(15&_)){e.msg="unknown compression method",n.mode=30;break}if(g-=4,O=8+(15&(_>>>=4)),0===n.wbits)n.wbits=O;else if(O>n.wbits){e.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(M[0]=255&_,M[1]=_>>>8&255,n.check=o(n.check,M,2,0)),_=0,g=0,n.mode=3;case 3:for(;g<32;){if(0===d)break e;d--,_+=u[h++]<>>8&255,M[2]=_>>>16&255,M[3]=_>>>24&255,n.check=o(n.check,M,4,0)),_=0,g=0,n.mode=4;case 4:for(;g<16;){if(0===d)break e;d--,_+=u[h++]<>8),512&n.flags&&(M[0]=255&_,M[1]=_>>>8&255,n.check=o(n.check,M,2,0)),_=0,g=0,n.mode=5;case 5:if(1024&n.flags){for(;g<16;){if(0===d)break e;d--,_+=u[h++]<>>8&255,n.check=o(n.check,M,2,0)),_=0,g=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((w=n.length)>d&&(w=d),w&&(n.head&&(O=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,u,h,w,O)),512&n.flags&&(n.check=o(n.check,u,w,h)),d-=w,h+=w,n.length-=w),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===d)break e;w=0;do{O=u[h+w++],n.head&&O&&n.length<65536&&(n.head.name+=String.fromCharCode(O))}while(O&&w>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=12;break;case 10:for(;g<32;){if(0===d)break e;d--,_+=u[h++]<>>=7&g,g-=7&g,n.mode=27;break}for(;g<3;){if(0===d)break e;d--,_+=u[h++]<>>=1)){case 0:n.mode=14;break;case 1:if(b(n),n.mode=20,6===t){_>>>=2,g-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=30}_>>>=2,g-=2;break;case 14:for(_>>>=7&g,g-=7&g;g<32;){if(0===d)break e;d--,_+=u[h++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&_,_=0,g=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(w=n.length){if(w>d&&(w=d),w>p&&(w=p),0===w)break e;r.arraySet(f,u,h,w,c),d-=w,h+=w,p-=w,c+=w,n.length-=w;break}n.mode=12;break;case 17:for(;g<14;){if(0===d)break e;d--,_+=u[h++]<>>=5,g-=5,n.ndist=1+(31&_),_>>>=5,g-=5,n.ncode=4+(15&_),_>>>=4,g-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=30;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,g-=3}for(;n.have<19;)n.lens[N[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,U={bits:n.lenbits},I=s(0,n.lens,0,19,n.lencode,0,n.work,U),n.lenbits=U.bits,I){e.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,T=65535&D,!((S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>>=S,g-=S,n.lens[n.have++]=T;else{if(16===T){for(z=S+2;g>>=S,g-=S,0===n.have){e.msg="invalid bit length repeat",n.mode=30;break}O=n.lens[n.have-1],w=3+(3&_),_>>>=2,g-=2}else if(17===T){for(z=S+3;g>>=S)),_>>>=3,g-=3}else{for(z=S+7;g>>=S)),_>>>=7,g-=7}if(n.have+w>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=30;break}for(;w--;)n.lens[n.have++]=O}}if(30===n.mode)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,U={bits:n.lenbits},I=s(1,n.lens,0,n.nlen,n.lencode,0,n.work,U),n.lenbits=U.bits,I){e.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,U={bits:n.distbits},I=s(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,U),n.distbits=U.bits,I){e.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(d>=6&&p>=258){e.next_out=c,e.avail_out=p,e.next_in=h,e.avail_in=d,n.hold=_,n.bits=g,a(e,v),c=e.next_out,f=e.output,p=e.avail_out,h=e.next_in,u=e.input,d=e.avail_in,_=n.hold,g=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;x=(D=n.lencode[_&(1<>>16&255,T=65535&D,!((S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>L)])>>>16&255,T=65535&D,!(L+(S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>>=L,g-=L,n.back+=L}if(_>>>=S,g-=S,n.back+=S,n.length=T,0===x){n.mode=26;break}if(32&x){n.back=-1,n.mode=12;break}if(64&x){e.msg="invalid literal/length code",n.mode=30;break}n.extra=15&x,n.mode=22;case 22:if(n.extra){for(z=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;x=(D=n.distcode[_&(1<>>16&255,T=65535&D,!((S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>L)])>>>16&255,T=65535&D,!(L+(S=D>>>24)<=g);){if(0===d)break e;d--,_+=u[h++]<>>=L,g-=L,n.back+=L}if(_>>>=S,g-=S,n.back+=S,64&x){e.msg="invalid distance code",n.mode=30;break}n.offset=T,n.extra=15&x,n.mode=24;case 24:if(n.extra){for(z=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===p)break e;if(w=v-p,n.offset>w){if((w=n.offset-w)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=30;break}w>n.wnext?(w-=n.wnext,E=n.wsize-w):E=n.wnext-w,w>n.length&&(w=n.length),k=n.window}else k=f,E=c-n.offset,w=n.length;w>p&&(w=p),p-=w,n.length-=w;do{f[c++]=k[E++]}while(--w);0===n.length&&(n.mode=21);break;case 26:if(0===p)break e;f[c++]=n.length,p--,n.mode=21;break;case 27:if(n.wrap){for(;g<32;){if(0===d)break e;d--,_|=u[h++]<>>=v=m>>>24,p-=v,0===(v=m>>>16&255))T[o++]=65535&m;else{if(!(16&v)){if(0==(64&v)){m=_[(65535&m)+(d&(1<>>=v,p-=v),p<15&&(d+=x[r++]<>>=v=m>>>24,p-=v,!(16&(v=m>>>16&255))){if(0==(64&v)){m=g[(65535&m)+(d&(1<l){e.msg="invalid distance too far back",n.mode=30;break e}if(d>>>=v,p-=v,E>(v=o-a)){if((v=E-v)>f&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(k=0,S=c,0===h){if(k+=u-v,v2;)T[o++]=S[k++],T[o++]=S[k++],T[o++]=S[k++],w-=3;w&&(T[o++]=S[k++],w>1&&(T[o++]=S[k++]))}else{k=o-E;do{T[o++]=T[k++],T[o++]=T[k++],T[o++]=T[k++],w-=3}while(w>2);w&&(T[o++]=T[k++],w>1&&(T[o++]=T[k++]))}break}}break}}while(r>3,d&=(1<<(p-=w<<3))-1,e.next_in=r,e.next_out=o,e.avail_in=r=1&&0===M[T];T--);if(L>T&&(L=T),0===T)return u[f++]=20971520,u[f++]=20971520,c.bits=1,0;for(x=1;x0&&(0===e||1!==T))return-1;for(N[1]=0,k=1;k<15;k++)N[k+1]=N[k]+M[k];for(S=0;S852||2===e&&I>592)return 1;for(;;){m=k-R,h[S]y?(v=B[P+h[S]],w=z[D+h[S]]):(v=96,w=0),d=1<>R)+(p-=d)]=m<<24|v<<16|w|0}while(0!==p);for(d=1<>=1;if(0!==d?(U&=d-1,U+=d):U=0,S++,0==--M[k]){if(k===T)break;k=t[n+h[S]]}if(k>L&&(U&g)!==_){for(0===R&&(R=L),b+=x,O=1<<(A=k-R);A+R852||2===e&&I>592)return 1;u[_=U&g]=L<<24|A<<16|b-f|0}}return 0!==U&&(u[b+U]=k-R<<24|64<<16|0),c.bits=L,0}},function(e,t,n){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}}]); \ No newline at end of file