-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathw-cards.js
1 lines (1 loc) · 124 KB
/
w-cards.js
1
!function(e){var t={};function o(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(n,i,function(t){return e[t]}.bind(null,i));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="/assets/",o(o.s=15)}([function(e,t,o){"use strict";o.d(t,"e",(function(){return r})),o.d(t,"a",(function(){return s})),o.d(t,"h",(function(){return a})),o.d(t,"p",(function(){return l})),o.d(t,"n",(function(){return c})),o.d(t,"g",(function(){return u})),o.d(t,"l",(function(){return d})),o.d(t,"b",(function(){return h})),o.d(t,"i",(function(){return p})),o.d(t,"c",(function(){return T})),o.d(t,"j",(function(){return f})),o.d(t,"m",(function(){return S})),o.d(t,"f",(function(){return _})),o.d(t,"k",(function(){return m})),o.d(t,"d",(function(){return A})),o.d(t,"o",(function(){return g}));o(1);var n=o(6);const i=new(o.n(n).a)(window.navigator.userAgent),r=!i.mobile()&&!i.phone()&&!i.tablet();const s="webgl_api",a=Math.min(window.devicePixelRatio,2),l={width:window.innerWidth,height:window.innerHeight},c=(e,t)=>{l.width=e,l.height=t};let u=null;const d=e=>{u=e};let h=null;const p=e=>{h=e};let T=null;const f=e=>{T=e};let b=null;const S=e=>{b=e};let _=null;const m=e=>{_=e},A={width:0,height:0},g=(e,t)=>{A.width=e,A.height=t}},function(e,t,o){"use strict";var n=o(3),i=o(2);class r extends n.EventEmitter{constructor(){super(),window.broadcaster=this}emit(...e){super.emit(...e),i.a.query.debug&&console.log("Broadcaster emit:",...e)}}const s=new r;t.a=s},function(e,t,o){"use strict";var n=o(4),i=o.n(n);const r=e=>!!/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e);var s=class{constructor(){r(window.location.hostname);this.whitelist=["gl.jojo.ninja","jojo.ninja"]}setConfig(e){e&&(this.config=e)}setWhiteList(e){Array.isArray(e)?this.whitelist=e:this.whitelist=[e]}parseQuery(){let e=!1;if(this.whitelist.forEach(t=>{t===window.location.hostname&&(e=!0)}),!r(window.location.hostname)&&!e)return;const t=i.a.parse(window.location.href.replace(/#/g,"hexa"),!0);for(const e in t.query)"config"===e&&(this[e]=JSON.parse(t.query[e])),"config"!==e&&("true"===t.query[e]?this[e]=!0:"false"===t.query[e]?this[e]=!1:this[e]=t.query[e])}},a=o(5),l=o.n(a),c=o(1);t.a=new class{constructor(){window.SuperConfig=window.superConfig=this,this.query=new s,this.broadCaster=c.a}destroy(){for(const e in this.gui.folders)try{this.gui.removeFolder(this.gui.folders[e])}catch(e){}}init(e={},t){if(t&&this.query.setWhiteList(t),this.query.parseQuery(),this.query.debug&&!this.gui&&(this.gui=new l.a.GUI,this.gui.folders={}),this.query.config){for(const t in e)this.query.config.hasOwnProperty(t)||(this.config=e,this.query.setConfig(e));for(const t in this.query.config)e.hasOwnProperty(t)||(this.config=e,this.query.setConfig(e))}else this.query.setConfig(e);if(!this.query.debug)return this.config=e||{},void this.createGetterSetter(this,this.config);this.destroy(),this.query.config&&(this.gui.folders.config=this.gui.addFolder("config"),this.query.open&&this.gui.folders.config.open(),this.config=this.query.config,this.parseConfig(this.config,this.gui.folders.config),this.createGetterSetter(this,this.config),this.updateConfig()),this.gui.folders.root=this.gui.addFolder("experiment"),this.query.open&&this.gui.folders.root.open(),this.gui.folders.root.add(this,"reload"),this.gui.folders.root.add(this,"log")}createGetterSetter(e,t){for(const o in t)"object"==typeof t[o]?void 0!==t[o].value?Object.defineProperty(e,o,{configurable:!0,get:()=>t[o].value}):(e[o]={},this.createGetterSetter(e[o],t[o])):Object.defineProperty(e,o,{configurable:!0,get:()=>t[o]})}exist(e){return void 0!==this[e]}updateConfig(){const e=this.getParams(!0);window.history.pushState("experiment","Title",`${window.location.origin+window.location.pathname+e}`)}getParams(e=!0){let t="?";for(const e in this.query)"config"!==e&&""!==e&&"whitelist"!==e&&(t+=`${e}=${this.query[e]}&`);return e?`${t}config=${JSON.stringify(this.config)}`:`${t}`}log(){this.updateConfig(),console.log("Current Config:"),console.log(this.config),console.log(JSON.stringify(this.config))}reload(){const e=this.getParams(!1);window.history.pushState("experiment","Title",`${window.location.origin+window.location.pathname+e}`),location.reload()}parseConfig(e,t,o){const n="config"===(o=o||"config")?"":o,i=n?`_${n}`:"";for(const n in e){const r=e[n];"object"!=typeof r&&-1===n.indexOf("range")?-1!==n.indexOf("color")||-1!==n.indexOf("Color")?(e[n]=e[n].replace("hexa","#"),t.addColor(e,n).onChange(()=>{this.updateConfig(),c.a.emit(`gui${i}_${n}`)})):t.add(e,n).onChange(()=>{this.updateConfig(),c.a.emit(`gui${i}_${n}`)}):"object"==typeof r&&void 0!==r.min?(this.gui.folders[n]=this.gui.folders[o].addFolder(n),this.query.open&&this.gui.folders[n].open(),this.gui.folders[n].add(r,"value").min(r.min).max(r.max).step(r.step||.01).onChange(()=>{c.a.emit(`gui${i}_${n}`),this.updateConfig()})):"object"==typeof r&&void 0!==r.options?(this.gui.folders[n]=this.gui.folders[o].addFolder(n),this.query.open&&this.gui.folders[n].open(),this.gui.folders[n].add(r,"value",r.options).onChange(()=>{c.a.emit(`gui${i}_${n}`),this.updateConfig()})):"object"==typeof r&&(this.gui.folders[n]=o?this.gui.folders[o].addFolder(n):this.gui.folders.config.addFolder(n),this.query.open&&this.gui.folders[n].open(),this.parseConfig(r,this.gui.folders[n],n,o||"config"))}}}},function(e,t,o){"use strict";var n,i="object"==typeof Reflect?Reflect:null,r=i&&"function"==typeof i.apply?i.apply:function(e,t,o){return Function.prototype.apply.call(e,t,o)};n=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var s=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function d(e,t,o,n){var i,r,s,a;if(c(o),void 0===(r=e._events)?(r=e._events=Object.create(null),e._eventsCount=0):(void 0!==r.newListener&&(e.emit("newListener",t,o.listener?o.listener:o),r=e._events),s=r[t]),void 0===s)s=r[t]=o,++e._eventsCount;else if("function"==typeof s?s=r[t]=n?[o,s]:[s,o]:n?s.unshift(o):s.push(o),(i=u(e))>0&&s.length>i&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,a=l,console&&console.warn&&console.warn(a)}return e}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(e,t,o){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:o},i=h.bind(n);return i.listener=o,n.wrapFn=i,i}function T(e,t,o){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?o?[i.listener||i]:[i]:o?function(e){for(var t=new Array(e.length),o=0;o<t.length;++o)t[o]=e[o].listener||e[o];return t}(i):b(i,i.length)}function f(e){var t=this._events;if(void 0!==t){var o=t[e];if("function"==typeof o)return 1;if(void 0!==o)return o.length}return 0}function b(e,t){for(var o=new Array(t),n=0;n<t;++n)o[n]=e[n];return o}Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return l},set:function(e){if("number"!=typeof e||e<0||s(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");l=e}}),a.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||s(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},a.prototype.getMaxListeners=function(){return u(this)},a.prototype.emit=function(e){for(var t=[],o=1;o<arguments.length;o++)t.push(arguments[o]);var n="error"===e,i=this._events;if(void 0!==i)n=n&&void 0===i.error;else if(!n)return!1;if(n){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var l=i[e];if(void 0===l)return!1;if("function"==typeof l)r(l,this,t);else{var c=l.length,u=b(l,c);for(o=0;o<c;++o)r(u[o],this,t)}return!0},a.prototype.addListener=function(e,t){return d(this,e,t,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(e,t){return d(this,e,t,!0)},a.prototype.once=function(e,t){return c(t),this.on(e,p(this,e,t)),this},a.prototype.prependOnceListener=function(e,t){return c(t),this.prependListener(e,p(this,e,t)),this},a.prototype.removeListener=function(e,t){var o,n,i,r,s;if(c(t),void 0===(n=this._events))return this;if(void 0===(o=n[e]))return this;if(o===t||o.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,o.listener||t));else if("function"!=typeof o){for(i=-1,r=o.length-1;r>=0;r--)if(o[r]===t||o[r].listener===t){s=o[r].listener,i=r;break}if(i<0)return this;0===i?o.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(o,i),1===o.length&&(n[e]=o[0]),void 0!==n.removeListener&&this.emit("removeListener",e,s||t)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(e){var t,o,n;if(void 0===(o=this._events))return this;if(void 0===o.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==o[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete o[e]),this;if(0===arguments.length){var i,r=Object.keys(o);for(n=0;n<r.length;++n)"removeListener"!==(i=r[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=o[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},a.prototype.listeners=function(e){return T(this,e,!0)},a.prototype.rawListeners=function(e){return T(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},a.prototype.listenerCount=f,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(e,t,o){"use strict";function n(){this._protocol=null,this._href="",this._port=-1,this._query=null,this.auth=null,this.slashes=null,this.host=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null,this._prependSlash=!1}var i=o(7);n.queryString=i,n.prototype.parse=function(e,t,o,i){if("string"!=typeof e)throw new TypeError("Parameter 'url' must be a string, not "+typeof e);for(var r=0,s=e.length-1;e.charCodeAt(r)<=32;)r++;for(;e.charCodeAt(s)<=32;)s--;if(r=this._parseProtocol(e,r,s),"javascript"!==this._protocol){r=this._parseHost(e,r,s,o);var a=this._protocol;!this.hostname&&(this.slashes||a&&!S[a])&&(this.hostname=this.host="")}if(r<=s){var l=e.charCodeAt(r);47===l||92===l?this._parsePath(e,r,s,i):63===l?this._parseQuery(e,r,s,i):35===l?this._parseHash(e,r,s,i):"javascript"!==this._protocol?this._parsePath(e,r,s,i):this.pathname=e.slice(r,s+1)}if(!this.pathname&&this.hostname&&this._slashProtocols[this._protocol]&&(this.pathname="/"),t){var c=this.search;null==c&&(c=this.search=""),63===c.charCodeAt(0)&&(c=c.slice(1)),this.query=n.queryString.parse(c)}},n.prototype.resolve=function(e){return this.resolveObject(n.parse(e,!1,!0)).format()},n.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",o=this.pathname||"",i=this.hash||"",r=this.search||"",l="",c=this.hostname||"",u=this.port||"",d=!1,h="",p=this.query;if(p&&"object"==typeof p&&(l=n.queryString.stringify(p)),r||(r=l?"?"+l:""),t&&58!==t.charCodeAt(t.length-1)&&(t+=":"),this.host)d=e+this.host;else if(c){c.indexOf(":")>-1&&(c="["+c+"]"),d=e+c+(u?":"+u:"")}var T=this.slashes||(!t||S[t])&&!1!==d;return t?h=t+(T?"//":""):T&&(h="//"),T&&o&&47!==o.charCodeAt(0)&&(o="/"+o),r&&63!==r.charCodeAt(0)&&(r="?"+r),i&&35!==i.charCodeAt(0)&&(i="#"+i),h+(!1===d?"":d)+(o=s(o))+(r=a(r))+i},n.prototype.resolveObject=function(e){"string"==typeof e&&(e=n.parse(e,!1,!0));var t=this._clone();if(t.hash=e.hash,!e.href)return t._href="",t;if(e.slashes&&!e._protocol)return e._copyPropsTo(t,!0),S[t._protocol]&&t.hostname&&!t.pathname&&(t.pathname="/"),t._href="",t;if(e._protocol&&e._protocol!==t._protocol){if(!S[e._protocol])return e._copyPropsTo(t,!1),t._href="",t;if(t._protocol=e._protocol,e.host||"javascript"===e._protocol)t.pathname=e.pathname;else{for(var o=(e.pathname||"").split("/");o.length&&!(e.host=o.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==o[0]&&o.unshift(""),o.length<2&&o.unshift(""),t.pathname=o.join("/")}return t.search=e.search,t.host=e.host||"",t.auth=e.auth,t.hostname=e.hostname||e.host,t._port=e._port,t.slashes=t.slashes||e.slashes,t._href="",t}var i=t.pathname&&47===t.pathname.charCodeAt(0),r=e.host||e.pathname&&47===e.pathname.charCodeAt(0),s=r||i||t.host&&e.pathname,a=s,l=t.pathname&&t.pathname.split("/")||[],c=(o=e.pathname&&e.pathname.split("/")||[],t._protocol&&!S[t._protocol]);if(c&&(t.hostname="",t._port=-1,t.host&&(""===l[0]?l[0]=t.host:l.unshift(t.host)),t.host="",e._protocol&&(e.hostname="",e._port=-1,e.host&&(""===o[0]?o[0]=e.host:o.unshift(e.host)),e.host=""),s=s&&(""===o[0]||""===l[0])),r)t.host=e.host?e.host:t.host,t.hostname=e.hostname?e.hostname:t.hostname,t.search=e.search,l=o;else if(o.length)l||(l=[]),l.pop(),l=l.concat(o),t.search=e.search;else if(e.search){if(c)t.hostname=t.host=l.shift(),(T=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@"))&&(t.auth=T.shift(),t.host=t.hostname=T.shift());return t.search=e.search,t._href="",t}if(!l.length)return t.pathname=null,t._href="",t;for(var u=l.slice(-1)[0],d=(t.host||e.host)&&("."===u||".."===u)||""===u,h=0,p=l.length;p>=0;p--)"."===(u=l[p])?l.splice(p,1):".."===u?(l.splice(p,1),h++):h&&(l.splice(p,1),h--);if(!s&&!a)for(;h--;h)l.unshift("..");!s||""===l[0]||l[0]&&47===l[0].charCodeAt(0)||l.unshift(""),d&&"/"!==l.join("/").substr(-1)&&l.push("");var T,f=""===l[0]||l[0]&&47===l[0].charCodeAt(0);c&&(t.hostname=t.host=f?"":l.length?l.shift():"",(T=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@"))&&(t.auth=T.shift(),t.host=t.hostname=T.shift()));return(s=s||t.host&&l.length)&&!f&&l.unshift(""),t.pathname=0===l.length?null:l.join("/"),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes,t._href="",t};var r=o(10);n.prototype._hostIdna=function(e){return r.toASCII(e)};var s=n.prototype._escapePathName=function(e){return l(e,35,63)?function(e){return e.replace(/[?#]/g,(function(e){return encodeURIComponent(e)}))}(e):e},a=n.prototype._escapeSearch=function(e){return l(e,35,-1)?function(e){return e.replace(/#/g,(function(e){return encodeURIComponent(e)}))}(e):e};function l(e,t,o){for(var n=0,i=e.length;n<i;++n){var r=e.charCodeAt(n);if(r===t||r===o)return!0}return!1}function c(e){var t=new Uint8Array(128);return e.forEach((function(e){if("number"==typeof e)t[e]=1;else for(var o=e[0],n=e[1],i=o;i<=n;++i)t[i]=1})),t}n.prototype._parseProtocol=function(e,t,o){for(var n=!1,i=this._protocolCharacters,r=t;r<=o;++r){var s=e.charCodeAt(r);if(58===s){var a=e.slice(t,r);return n&&(a=a.toLowerCase()),this._protocol=a,r+1}if(1!==i[s])return t;s<97&&(n=!0)}return t},n.prototype._parseAuth=function(e,t,o,n){var i=e.slice(t,o+1);n&&(i=decodeURIComponent(i)),this.auth=i},n.prototype._parsePort=function(e,t,o){for(var n=0,i=!1,r=!0,s=t;s<=o;++s){var a=e.charCodeAt(s);if(!(48<=a&&a<=57)){r=!1,92!==a&&47!==a||(r=!0);break}n=10*n+(a-48),i=!0}return 0===n&&!i||!r?(r||(this._port=-2),0):(this._port=n,s-t)},n.prototype._parseHost=function(e,t,o,n){var i=this._hostEndingCharacters,r=e.charCodeAt(t),s=e.charCodeAt(t+1);if(47!==r&&92!==r||47!==s&&92!==s){if(!this._protocol||S[this._protocol])return t}else{if(this.slashes=!0,0===t){if(o<2)return t;if(!function(e,t,o,n){for(var i=e.length,r=o;r<i;++r){var s=e.charCodeAt(r);if(s===t)return!0;if(1===n[s])return!1}return!1}(e,64,2,i)&&!n)return this.slashes=null,t}t+=2}for(var a=!1,l=!1,c=t,u=o,d=0,h=0,p=!1,T=-1,f=t;f<=o;++f){if(64===(_=e.charCodeAt(f)))T=f;else if(37===_)p=!0;else if(1===i[_])break}if(T>-1&&(this._parseAuth(e,t,T-1,p),t=c=T+1),91===e.charCodeAt(t)){for(f=t+1;f<=o;++f){if(93===(_=e.charCodeAt(f))){58===e.charCodeAt(f+1)&&(d=this._parsePort(e,f+2,o)+1);var b=e.slice(t+1,f).toLowerCase();return this.hostname=b,this.host=this._port>0?"["+b+"]:"+this._port:"["+b+"]",this.pathname="/",f+d+1}}return t}for(f=t;f<=o;++f){if(h>62)return this.hostname=this.host=e.slice(t,f),f;var _;if(58===(_=e.charCodeAt(f))){d=this._parsePort(e,f+1,o)+1,u=f-1;break}if(_<97){if(46===_)h=-1;else if(65<=_&&_<=90)a=!0;else if(!(45===_||95===_||43===_||48<=_&&_<=57)){0===i[_]&&0===this._noPrependSlashHostEnders[_]&&(this._prependSlash=!0),u=f-1;break}}else if(_>=123){if(_<=126){0===this._noPrependSlashHostEnders[_]&&(this._prependSlash=!0),u=f-1;break}l=!0}_,h++}if(u+1!==t&&u-c<=256){b=e.slice(c,u+1);a&&(b=b.toLowerCase()),l&&(b=this._hostIdna(b)),this.hostname=b,this.host=this._port>0?b+":"+this._port:b}return u+1+d},n.prototype._copyPropsTo=function(e,t){t||(e._protocol=this._protocol),e._href=this._href,e._port=this._port,e._prependSlash=this._prependSlash,e.auth=this.auth,e.slashes=this.slashes,e.host=this.host,e.hostname=this.hostname,e.hash=this.hash,e.search=this.search,e.pathname=this.pathname},n.prototype._clone=function(){var e=new n;return e._protocol=this._protocol,e._href=this._href,e._port=this._port,e._prependSlash=this._prependSlash,e.auth=this.auth,e.slashes=this.slashes,e.host=this.host,e.hostname=this.hostname,e.hash=this.hash,e.search=this.search,e.pathname=this.pathname,e},n.prototype._getComponentEscaped=function(e,t,o,n){for(var i=t,r=t,s="",a=n?this._afterQueryAutoEscapeMap:this._autoEscapeMap;r<=o;++r){var l=a[e.charCodeAt(r)];""!==l&&void 0!==l&&(i<r&&(s+=e.slice(i,r)),s+=l,i=r+1)}return i<r+1&&(s+=e.slice(i,r)),s},n.prototype._parsePath=function(e,t,o,n){for(var i,r=t,s=o,a=!1,l=this._autoEscapeCharacters,c=-2===this._port?"/:":"",u=t;u<=o;++u){var d=e.charCodeAt(u);if(35===d){this._parseHash(e,u,o,n),s=u-1;break}if(63===d){this._parseQuery(e,u,o,n),s=u-1;break}n||a||1!==l[d]||(a=!0)}r>s?this.pathname=""===c?"/":c:(i=a?this._getComponentEscaped(e,r,s,!1):e.slice(r,s+1),this.pathname=""===c?this._prependSlash?"/"+i:i:c+i)},n.prototype._parseQuery=function(e,t,o,n){for(var i,r=t,s=o,a=!1,l=this._autoEscapeCharacters,c=t;c<=o;++c){var u=e.charCodeAt(c);if(35===u){this._parseHash(e,c,o,n),s=c-1;break}n||a||1!==l[u]||(a=!0)}r>s?this.search="":(i=a?this._getComponentEscaped(e,r,s,!0):e.slice(r,s+1),this.search=i)},n.prototype._parseHash=function(e,t,o,n){this.hash=t>o?"":n?e.slice(t,o+1):this._getComponentEscaped(e,t,o,!0)},Object.defineProperty(n.prototype,"port",{get:function(){return this._port>=0?""+this._port:null},set:function(e){this._port=null==e?-1:parseInt(e,10)}}),Object.defineProperty(n.prototype,"query",{get:function(){var e=this._query;if(null!=e)return e;var t=this.search;return t&&(63===t.charCodeAt(0)&&(t=t.slice(1)),""!==t)?(this._query=t,t):t},set:function(e){this._query=e}}),Object.defineProperty(n.prototype,"path",{get:function(){var e=this.pathname||"",t=this.search||"";return e||t?e+t:null==e&&t?"/"+t:null},set:function(){}}),Object.defineProperty(n.prototype,"protocol",{get:function(){var e=this._protocol;return e?e+":":e},set:function(e){if("string"==typeof e){var t=e.length-1;58===e.charCodeAt(t)?this._protocol=e.slice(0,t):this._protocol=e}else null==e&&(this._protocol=null)}}),Object.defineProperty(n.prototype,"href",{get:function(){var e=this._href;return e||(e=this._href=this.format()),e},set:function(e){this._href=e}}),n.parse=function(e,t,o,i){if(e instanceof n)return e;var r=new n;return r.parse(e,!!t,!!o,!!i),r},n.format=function(e){return"string"==typeof e&&(e=n.parse(e)),e instanceof n?e.format():n.prototype.format.call(e)},n.resolve=function(e,t){return n.parse(e,!1,!0).resolve(t)},n.resolveObject=function(e,t){return e?n.parse(e,!1,!0).resolveObject(t):t};for(var u=["<",">",'"',"`"," ","\r","\n","\t","{","}","|","\\","^","`","'"],d=new Array(128),h=0,p=d.length;h<p;++h)d[h]="";for(h=0,p=u.length;h<p;++h){var T=u[h],f=encodeURIComponent(T);f===T&&(f=escape(T)),d[T.charCodeAt(0)]=f}var b=d.slice();d[92]="/";var S=n.prototype._slashProtocols={http:!0,https:!0,gopher:!0,file:!0,ftp:!0,"http:":!0,"https:":!0,"gopher:":!0,"file:":!0,"ftp:":!0};n.prototype._protocolCharacters=c([[97,122],[65,90],46,43,45]),n.prototype._hostEndingCharacters=c([35,63,47,92]),n.prototype._autoEscapeCharacters=c(u.map((function(e){return e.charCodeAt(0)}))),n.prototype._noPrependSlashHostEnders=c(["<",">","'","`"," ","\r","\n","\t","{","}","|","^","`",'"',"%",";"].map((function(e){return e.charCodeAt(0)}))),n.prototype._autoEscapeMap=d,n.prototype._afterQueryAutoEscapeMap=b,e.exports=n,n.replace=function(){o.c.url={exports:n}}},function(e,t,o){!function(e){"use strict";function t(e,t){var o=e.__state.conversionName.toString(),n=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),c=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===o||"SIX_CHAR_HEX"===o){for(var u=e.hex.toString(16);u.length<6;)u="0"+u;return"#"+u}return"CSS_RGB"===o?"rgb("+n+","+i+","+r+")":"CSS_RGBA"===o?"rgba("+n+","+i+","+r+","+s+")":"HEX"===o?"0x"+e.hex.toString(16):"RGB_ARRAY"===o?"["+n+","+i+","+r+"]":"RGBA_ARRAY"===o?"["+n+","+i+","+r+","+s+"]":"RGB_OBJ"===o?"{r:"+n+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===o?"{r:"+n+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===o?"{h:"+a+",s:"+l+",v:"+c+"}":"HSVA_OBJ"===o?"{h:"+a+",s:"+l+",v:"+c+",a:"+s+"}":"unknown format"}function o(e,t,o){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(O.recalculateRGB(this,t,o),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(O.recalculateRGB(this,t,o),this.__state.space="RGB"),this.__state[t]=e}})}function n(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(O.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(O.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}function i(e){if("0"===e||g.isUndefined(e))return 0;var t=e.match(k);return g.isNull(t)?0:parseFloat(t[1])}function r(e){var t=e.toString();return t.indexOf(".")>-1?t.length-t.indexOf(".")-1:0}function s(e,t,o,n,i){return n+(e-t)/(o-t)*(i-n)}function a(e,t,o,n){e.style.background="",g.each(z,(function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+o+" 0%, "+n+" 100%); "}))}function l(e,t,o){var n=document.createElement("li");return t&&n.appendChild(t),o?e.__ul.insertBefore(n,o):e.__ul.appendChild(n),e.onResize(),n}function c(e){R.unbind(window,"resize",e.__resizeHandler),e.saveToLocalStorageIfPossible&&R.unbind(window,"unload",e.saveToLocalStorageIfPossible)}function u(e,t){var o=e.__preset_select[e.__preset_select.selectedIndex];o.innerHTML=t?o.value+"*":o.value}function d(e,t){var o=e.getRoot(),n=o.__rememberedObjects.indexOf(t.object);if(-1!==n){var i=o.__rememberedObjectIndecesToControllers[n];if(void 0===i&&(i={},o.__rememberedObjectIndecesToControllers[n]=i),i[t.property]=t,o.load&&o.load.remembered){var r=o.load.remembered,s=void 0;if(r[e.preset])s=r[e.preset];else{if(!r[$])return;s=r[$]}if(s[n]&&void 0!==s[n][t.property]){var a=s[n][t.property];t.initialValue=a,t.setValue(a)}}}}function h(e,t,o,n){if(void 0===t[o])throw new Error('Object "'+t+'" has no property "'+o+'"');var i=void 0;if(n.color)i=new K(t,o);else{var r=[t,o].concat(n.factoryArgs);i=Y.apply(e,r)}n.before instanceof D&&(n.before=n.before.__li),d(e,i),R.addClass(i.domElement,"c");var s=document.createElement("span");R.addClass(s,"property-name"),s.innerHTML=i.property;var a=document.createElement("div");a.appendChild(s),a.appendChild(i.domElement);var c=l(e,a,n.before);return R.addClass(c,se.CLASS_CONTROLLER_ROW),i instanceof K?R.addClass(c,"color"):R.addClass(c,w(i.getValue())),function(e,t,o){if(o.__li=t,o.__gui=e,g.extend(o,{options:function(t){if(arguments.length>1){var n=o.__li.nextElementSibling;return o.remove(),h(e,o.object,o.property,{before:n,factoryArgs:[g.toArray(arguments)]})}if(g.isArray(t)||g.isObject(t)){var i=o.__li.nextElementSibling;return o.remove(),h(e,o.object,o.property,{before:i,factoryArgs:[t]})}},name:function(e){return o.__li.firstElementChild.firstElementChild.innerHTML=e,o},listen:function(){return o.__gui.listen(o),o},remove:function(){return o.__gui.remove(o),o}}),o instanceof U){var n=new W(o.object,o.property,{min:o.__min,max:o.__max,step:o.__step});g.each(["updateDisplay","onChange","onFinishChange","step","min","max"],(function(e){var t=o[e],i=n[e];o[e]=n[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(n,e),t.apply(o,e)}})),R.addClass(t,"has-slider"),o.domElement.insertBefore(n.domElement,o.domElement.firstElementChild)}else if(o instanceof W){var i=function(t){if(g.isNumber(o.__min)&&g.isNumber(o.__max)){var n=o.__li.firstElementChild.firstElementChild.innerHTML,i=o.__gui.__listening.indexOf(o)>-1;o.remove();var r=h(e,o.object,o.property,{before:o.__li.nextElementSibling,factoryArgs:[o.__min,o.__max,o.__step]});return r.name(n),i&&r.listen(),r}return t};o.min=g.compose(i,o.min),o.max=g.compose(i,o.max)}else o instanceof V?(R.bind(t,"click",(function(){R.fakeEvent(o.__checkbox,"click")})),R.bind(o.__checkbox,"click",(function(e){e.stopPropagation()}))):o instanceof j?(R.bind(t,"click",(function(){R.fakeEvent(o.__button,"click")})),R.bind(t,"mouseover",(function(){R.addClass(o.__button,"hover")})),R.bind(t,"mouseout",(function(){R.removeClass(o.__button,"hover")}))):o instanceof K&&(R.addClass(t,"color"),o.updateDisplay=g.compose((function(e){return t.style.borderLeftColor=o.__color.toString(),e}),o.updateDisplay),o.updateDisplay());o.setValue=g.compose((function(t){return e.getRoot().__preset_select&&o.isModified()&&u(e.getRoot(),!0),t}),o.setValue)}(e,c,i),e.__controllers.push(i),i}function p(e,t){return document.location.href+"."+t}function T(e,t,o){var n=document.createElement("option");n.innerHTML=t,n.value=t,e.__preset_select.appendChild(n),o&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function f(e,t){t.style.display=e.useLocalStorage?"block":"none"}function b(e){var t=e.__save_row=document.createElement("li");R.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),R.addClass(t,"save-row");var o=document.createElement("span");o.innerHTML=" ",R.addClass(o,"button gears");var n=document.createElement("span");n.innerHTML="Save",R.addClass(n,"button"),R.addClass(n,"save");var i=document.createElement("span");i.innerHTML="New",R.addClass(i,"button"),R.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",R.addClass(r,"button"),R.addClass(r,"revert");var s=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?g.each(e.load.remembered,(function(t,o){T(e,o,o===e.preset)})):T(e,$,!1),R.bind(s,"change",(function(){for(var t=0;t<e.__preset_select.length;t++)e.__preset_select[t].innerHTML=e.__preset_select[t].value;e.preset=this.value})),t.appendChild(s),t.appendChild(o),t.appendChild(n),t.appendChild(i),t.appendChild(r),ee){var a=document.getElementById("dg-local-explain"),l=document.getElementById("dg-local-storage");document.getElementById("dg-save-locally").style.display="block","true"===localStorage.getItem(p(0,"isLocal"))&&l.setAttribute("checked","checked"),f(e,a),R.bind(l,"change",(function(){e.useLocalStorage=!e.useLocalStorage,f(e,a)}))}var c=document.getElementById("dg-new-constructor");R.bind(c,"keydown",(function(e){!e.metaKey||67!==e.which&&67!==e.keyCode||te.hide()})),R.bind(o,"click",(function(){c.innerHTML=JSON.stringify(e.getSaveObject(),void 0,2),te.show(),c.focus(),c.select()})),R.bind(n,"click",(function(){e.save()})),R.bind(i,"click",(function(){var t=prompt("Enter a new preset name.");t&&e.saveAs(t)})),R.bind(r,"click",(function(){e.revert()}))}function S(e,t){e.domElement.style.width=t+"px",e.__save_row&&e.autoPlace&&(e.__save_row.style.width=t+"px"),e.__closeButton&&(e.__closeButton.style.width=t+"px")}function _(e,t){var o={};return g.each(e.__rememberedObjects,(function(n,i){var r={},s=e.__rememberedObjectIndecesToControllers[i];g.each(s,(function(e,o){r[o]=t?e.initialValue:e.getValue()})),o[i]=r})),o}var m=Array.prototype.forEach,A=Array.prototype.slice,g={BREAK:{},extend:function(e){return this.each(A.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(o){this.isUndefined(t[o])||(e[o]=t[o])}.bind(this))}),this),e},defaults:function(e){return this.each(A.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(o){this.isUndefined(e[o])&&(e[o]=t[o])}.bind(this))}),this),e},compose:function(){var e=A.call(arguments);return function(){for(var t=A.call(arguments),o=e.length-1;o>=0;o--)t=[e[o].apply(this,t)];return t[0]}},each:function(e,t,o){if(e)if(m&&e.forEach&&e.forEach===m)e.forEach(t,o);else if(e.length===e.length+0){var n,i=void 0;for(i=0,n=e.length;i<n;i++)if(i in e&&t.call(o,e[i],i)===this.BREAK)return}else for(var r in e)if(t.call(o,e[r],r)===this.BREAK)return},defer:function(e){setTimeout(e,0)},debounce:function(e,t,o){var n=void 0;return function(){var i=this,r=arguments,s=o||!n;clearTimeout(n),n=setTimeout((function(){n=null,o||e.apply(i,r)}),t),s&&e.apply(i,r)}},toArray:function(e){return e.toArray?e.toArray():A.call(e)},isUndefined:function(e){return void 0===e},isNull:function(e){return null===e},isNaN:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){return isNaN(e)})),isArray:Array.isArray||function(e){return e.constructor===Array},isObject:function(e){return e===Object(e)},isNumber:function(e){return e===e+0},isString:function(e){return e===e+""},isBoolean:function(e){return!1===e||!0===e},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)}},v=[{litmus:g.isString,conversions:{THREE_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString()+t[1].toString()+t[2].toString()+t[2].toString()+t[3].toString()+t[3].toString(),0)}},write:t},SIX_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9]{6})$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString(),0)}},write:t},CSS_RGB:{read:function(e){var t=e.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3])}},write:t},CSS_RGBA:{read:function(e){var t=e.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3]),a:parseFloat(t[4])}},write:t}}},{litmus:g.isNumber,conversions:{HEX:{read:function(e){return{space:"HEX",hex:e,conversionName:"HEX"}},write:function(e){return e.hex}}}},{litmus:g.isArray,conversions:{RGB_ARRAY:{read:function(e){return 3===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2]}},write:function(e){return[e.r,e.g,e.b]}},RGBA_ARRAY:{read:function(e){return 4===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2],a:e[3]}},write:function(e){return[e.r,e.g,e.b,e.a]}}}},{litmus:g.isObject,conversions:{RGBA_OBJ:{read:function(e){return!!(g.isNumber(e.r)&&g.isNumber(e.g)&&g.isNumber(e.b)&&g.isNumber(e.a))&&{space:"RGB",r:e.r,g:e.g,b:e.b,a:e.a}},write:function(e){return{r:e.r,g:e.g,b:e.b,a:e.a}}},RGB_OBJ:{read:function(e){return!!(g.isNumber(e.r)&&g.isNumber(e.g)&&g.isNumber(e.b))&&{space:"RGB",r:e.r,g:e.g,b:e.b}},write:function(e){return{r:e.r,g:e.g,b:e.b}}},HSVA_OBJ:{read:function(e){return!!(g.isNumber(e.h)&&g.isNumber(e.s)&&g.isNumber(e.v)&&g.isNumber(e.a))&&{space:"HSV",h:e.h,s:e.s,v:e.v,a:e.a}},write:function(e){return{h:e.h,s:e.s,v:e.v,a:e.a}}},HSV_OBJ:{read:function(e){return!!(g.isNumber(e.h)&&g.isNumber(e.s)&&g.isNumber(e.v))&&{space:"HSV",h:e.h,s:e.s,v:e.v}},write:function(e){return{h:e.h,s:e.s,v:e.v}}}}}],P=void 0,M=void 0,C=function(){M=!1;var e=arguments.length>1?g.toArray(arguments):arguments[0];return g.each(v,(function(t){if(t.litmus(e))return g.each(t.conversions,(function(t,o){if(P=t.read(e),!1===M&&!1!==P)return M=P,P.conversionName=o,P.conversion=t,g.BREAK})),g.BREAK})),M},y=void 0,G={hsv_to_rgb:function(e,t,o){var n=Math.floor(e/60)%6,i=e/60-Math.floor(e/60),r=o*(1-t),s=o*(1-i*t),a=o*(1-(1-i)*t),l=[[o,a,r],[s,o,r],[r,o,a],[r,s,o],[a,r,o],[o,r,s]][n];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,o){var n=Math.min(e,t,o),i=Math.max(e,t,o),r=i-n,s=void 0;return 0===i?{h:NaN,s:0,v:0}:(s=e===i?(t-o)/r:t===i?2+(o-e)/r:4+(e-t)/r,(s/=6)<0&&(s+=1),{h:360*s,s:r/i,v:i/255})},rgb_to_hex:function(e,t,o){var n=this.hex_with_component(0,2,e);return n=this.hex_with_component(n,1,t),this.hex_with_component(n,0,o)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,o){return o<<(y=8*t)|e&~(255<<y)}},w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},H=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),B=function e(t,o,n){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,o);if(void 0===i){var r=Object.getPrototypeOf(t);return null===r?void 0:e(r,o,n)}if("value"in i)return i.value;var s=i.get;return void 0!==s?s.call(n):void 0},x=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},I=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},O=function(){function e(){if(E(this,e),this.__state=C.apply(this,arguments),!1===this.__state)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return H(e,[{key:"toString",value:function(){return t(this)}},{key:"toHexString",value:function(){return t(this,!0)}},{key:"toOriginal",value:function(){return this.__state.conversion.write(this)}}]),e}();O.recalculateRGB=function(e,t,o){if("HEX"===e.__state.space)e.__state[t]=G.component_from_hex(e.__state.hex,o);else{if("HSV"!==e.__state.space)throw new Error("Corrupted color state");g.extend(e.__state,G.hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}},O.recalculateHSV=function(e){var t=G.rgb_to_hsv(e.r,e.g,e.b);g.extend(e.__state,{s:t.s,v:t.v}),g.isNaN(t.h)?g.isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=t.h},O.COMPONENTS=["r","g","b","h","s","v","hex","a"],o(O.prototype,"r",2),o(O.prototype,"g",1),o(O.prototype,"b",0),n(O.prototype,"h"),n(O.prototype,"s"),n(O.prototype,"v"),Object.defineProperty(O.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(O.prototype,"hex",{get:function(){return"HEX"!==!this.__state.space&&(this.__state.hex=G.rgb_to_hex(this.r,this.g,this.b)),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}});var D=function(){function e(t,o){E(this,e),this.initialValue=t[o],this.domElement=document.createElement("div"),this.object=t,this.property=o,this.__onChange=void 0,this.__onFinishChange=void 0}return H(e,[{key:"onChange",value:function(e){return this.__onChange=e,this}},{key:"onFinishChange",value:function(e){return this.__onFinishChange=e,this}},{key:"setValue",value:function(e){return this.object[this.property]=e,this.__onChange&&this.__onChange.call(this,e),this.updateDisplay(),this}},{key:"getValue",value:function(){return this.object[this.property]}},{key:"updateDisplay",value:function(){return this}},{key:"isModified",value:function(){return this.initialValue!==this.getValue()}}]),e}(),L={};g.each({HTMLEvents:["change"],MouseEvents:["click","mousemove","mousedown","mouseup","mouseover"],KeyboardEvents:["keydown"]},(function(e,t){g.each(e,(function(e){L[e]=t}))}));var k=/(\d+(\.\d+)?)px/,R={makeSelectable:function(e,t){void 0!==e&&void 0!==e.style&&(e.onselectstart=t?function(){return!1}:function(){},e.style.MozUserSelect=t?"auto":"none",e.style.KhtmlUserSelect=t?"auto":"none",e.unselectable=t?"on":"off")},makeFullscreen:function(e,t,o){var n=o,i=t;g.isUndefined(i)&&(i=!0),g.isUndefined(n)&&(n=!0),e.style.position="absolute",i&&(e.style.left=0,e.style.right=0),n&&(e.style.top=0,e.style.bottom=0)},fakeEvent:function(e,t,o,n){var i=o||{},r=L[t];if(!r)throw new Error("Event type "+t+" not supported.");var s=document.createEvent(r);switch(r){case"MouseEvents":var a=i.x||i.clientX||0,l=i.y||i.clientY||0;s.initMouseEvent(t,i.bubbles||!1,i.cancelable||!0,window,i.clickCount||1,0,0,a,l,!1,!1,!1,!1,0,null);break;case"KeyboardEvents":var c=s.initKeyboardEvent||s.initKeyEvent;g.defaults(i,{cancelable:!0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,keyCode:void 0,charCode:void 0}),c(t,i.bubbles||!1,i.cancelable,window,i.ctrlKey,i.altKey,i.shiftKey,i.metaKey,i.keyCode,i.charCode);break;default:s.initEvent(t,i.bubbles||!1,i.cancelable||!0)}g.defaults(s,n),e.dispatchEvent(s)},bind:function(e,t,o,n){var i=n||!1;return e.addEventListener?e.addEventListener(t,o,i):e.attachEvent&&e.attachEvent("on"+t,o),R},unbind:function(e,t,o,n){var i=n||!1;return e.removeEventListener?e.removeEventListener(t,o,i):e.detachEvent&&e.detachEvent("on"+t,o),R},addClass:function(e,t){if(void 0===e.className)e.className=t;else if(e.className!==t){var o=e.className.split(/ +/);-1===o.indexOf(t)&&(o.push(t),e.className=o.join(" ").replace(/^\s+/,"").replace(/\s+$/,""))}return R},removeClass:function(e,t){if(t)if(e.className===t)e.removeAttribute("class");else{var o=e.className.split(/ +/),n=o.indexOf(t);-1!==n&&(o.splice(n,1),e.className=o.join(" "))}else e.className=void 0;return R},hasClass:function(e,t){return new RegExp("(?:^|\\s+)"+t+"(?:\\s+|$)").test(e.className)||!1},getWidth:function(e){var t=getComputedStyle(e);return i(t["border-left-width"])+i(t["border-right-width"])+i(t["padding-left"])+i(t["padding-right"])+i(t.width)},getHeight:function(e){var t=getComputedStyle(e);return i(t["border-top-width"])+i(t["border-bottom-width"])+i(t["padding-top"])+i(t["padding-bottom"])+i(t.height)},getOffset:function(e){var t=e,o={left:0,top:0};if(t.offsetParent)do{o.left+=t.offsetLeft,o.top+=t.offsetTop,t=t.offsetParent}while(t);return o},isActive:function(e){return e===document.activeElement&&(e.type||e.href)}},V=function(e){function t(e,o){E(this,t);var n=I(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o)),i=n;return n.__prev=n.getValue(),n.__checkbox=document.createElement("input"),n.__checkbox.setAttribute("type","checkbox"),R.bind(n.__checkbox,"change",(function(){i.setValue(!i.__prev)}),!1),n.domElement.appendChild(n.__checkbox),n.updateDisplay(),n}return x(t,D),H(t,[{key:"setValue",value:function(e){var o=B(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,e);return this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue()),this.__prev=this.getValue(),o}},{key:"updateDisplay",value:function(){return!0===this.getValue()?(this.__checkbox.setAttribute("checked","checked"),this.__checkbox.checked=!0,this.__prev=!0):(this.__checkbox.checked=!1,this.__prev=!1),B(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),N=function(e){function t(e,o,n){E(this,t);var i=I(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o)),r=n,s=i;if(i.__select=document.createElement("select"),g.isArray(r)){var a={};g.each(r,(function(e){a[e]=e})),r=a}return g.each(r,(function(e,t){var o=document.createElement("option");o.innerHTML=t,o.setAttribute("value",e),s.__select.appendChild(o)})),i.updateDisplay(),R.bind(i.__select,"change",(function(){var e=this.options[this.selectedIndex].value;s.setValue(e)})),i.domElement.appendChild(i.__select),i}return x(t,D),H(t,[{key:"setValue",value:function(e){var o=B(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,e);return this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue()),o}},{key:"updateDisplay",value:function(){return R.isActive(this.__select)?this:(this.__select.value=this.getValue(),B(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this))}}]),t}(),F=function(e){function t(e,o){function n(){r.setValue(r.__input.value)}E(this,t);var i=I(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o)),r=i;return i.__input=document.createElement("input"),i.__input.setAttribute("type","text"),R.bind(i.__input,"keyup",n),R.bind(i.__input,"change",n),R.bind(i.__input,"blur",(function(){r.__onFinishChange&&r.__onFinishChange.call(r,r.getValue())})),R.bind(i.__input,"keydown",(function(e){13===e.keyCode&&this.blur()})),i.updateDisplay(),i.domElement.appendChild(i.__input),i}return x(t,D),H(t,[{key:"updateDisplay",value:function(){return R.isActive(this.__input)||(this.__input.value=this.getValue()),B(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),X=function(e){function t(e,o,n){E(this,t);var i=I(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o)),s=n||{};return i.__min=s.min,i.__max=s.max,i.__step=s.step,g.isUndefined(i.__step)?0===i.initialValue?i.__impliedStep=1:i.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(i.initialValue))/Math.LN10))/10:i.__impliedStep=i.__step,i.__precision=r(i.__impliedStep),i}return x(t,D),H(t,[{key:"setValue",value:function(e){var o=e;return void 0!==this.__min&&o<this.__min?o=this.__min:void 0!==this.__max&&o>this.__max&&(o=this.__max),void 0!==this.__step&&o%this.__step!=0&&(o=Math.round(o/this.__step)*this.__step),B(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,o)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=r(e),this}}]),t}(),W=function(e){function t(e,o,n){function i(){l.__onFinishChange&&l.__onFinishChange.call(l,l.getValue())}function r(e){var t=c-e.clientY;l.setValue(l.getValue()+t*l.__impliedStep),c=e.clientY}function s(){R.unbind(window,"mousemove",r),R.unbind(window,"mouseup",s),i()}E(this,t);var a=I(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o,n));a.__truncationSuspended=!1;var l=a,c=void 0;return a.__input=document.createElement("input"),a.__input.setAttribute("type","text"),R.bind(a.__input,"change",(function(){var e=parseFloat(l.__input.value);g.isNaN(e)||l.setValue(e)})),R.bind(a.__input,"blur",(function(){i()})),R.bind(a.__input,"mousedown",(function(e){R.bind(window,"mousemove",r),R.bind(window,"mouseup",s),c=e.clientY})),R.bind(a.__input,"keydown",(function(e){13===e.keyCode&&(l.__truncationSuspended=!0,this.blur(),l.__truncationSuspended=!1,i())})),a.updateDisplay(),a.domElement.appendChild(a.__input),a}return x(t,X),H(t,[{key:"updateDisplay",value:function(){return this.__input.value=this.__truncationSuspended?this.getValue():function(e,t){var o=Math.pow(10,t);return Math.round(e*o)/o}(this.getValue(),this.__precision),B(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),U=function(e){function t(e,o,n,i,r){function a(e){e.preventDefault();var t=h.__background.getBoundingClientRect();return h.setValue(s(e.clientX,t.left,t.right,h.__min,h.__max)),!1}function l(){R.unbind(window,"mousemove",a),R.unbind(window,"mouseup",l),h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}function c(e){var t=e.touches[0].clientX,o=h.__background.getBoundingClientRect();h.setValue(s(t,o.left,o.right,h.__min,h.__max))}function u(){R.unbind(window,"touchmove",c),R.unbind(window,"touchend",u),h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}E(this,t);var d=I(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o,{min:n,max:i,step:r})),h=d;return d.__background=document.createElement("div"),d.__foreground=document.createElement("div"),R.bind(d.__background,"mousedown",(function(e){document.activeElement.blur(),R.bind(window,"mousemove",a),R.bind(window,"mouseup",l),a(e)})),R.bind(d.__background,"touchstart",(function(e){1===e.touches.length&&(R.bind(window,"touchmove",c),R.bind(window,"touchend",u),c(e))})),R.addClass(d.__background,"slider"),R.addClass(d.__foreground,"slider-fg"),d.updateDisplay(),d.__background.appendChild(d.__foreground),d.domElement.appendChild(d.__background),d}return x(t,X),H(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",B(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),j=function(e){function t(e,o,n){E(this,t);var i=I(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o)),r=i;return i.__button=document.createElement("div"),i.__button.innerHTML=void 0===n?"Fire":n,R.bind(i.__button,"click",(function(e){return e.preventDefault(),r.fire(),!1})),R.addClass(i.__button,"button"),i.domElement.appendChild(i.__button),i}return x(t,D),H(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(),K=function(e){function t(e,o){function n(e){u(e),R.bind(window,"mousemove",u),R.bind(window,"touchmove",u),R.bind(window,"mouseup",r),R.bind(window,"touchend",r)}function i(e){d(e),R.bind(window,"mousemove",d),R.bind(window,"touchmove",d),R.bind(window,"mouseup",s),R.bind(window,"touchend",s)}function r(){R.unbind(window,"mousemove",u),R.unbind(window,"touchmove",u),R.unbind(window,"mouseup",r),R.unbind(window,"touchend",r),c()}function s(){R.unbind(window,"mousemove",d),R.unbind(window,"touchmove",d),R.unbind(window,"mouseup",s),R.unbind(window,"touchend",s),c()}function l(){var e=C(this.value);!1!==e?(p.__color.__state=e,p.setValue(p.__color.toOriginal())):this.value=p.__color.toString()}function c(){p.__onFinishChange&&p.__onFinishChange.call(p,p.__color.toOriginal())}function u(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__saturation_field.getBoundingClientRect(),o=e.touches&&e.touches[0]||e,n=o.clientX,i=o.clientY,r=(n-t.left)/(t.right-t.left),s=1-(i-t.top)/(t.bottom-t.top);return s>1?s=1:s<0&&(s=0),r>1?r=1:r<0&&(r=0),p.__color.v=s,p.__color.s=r,p.setValue(p.__color.toOriginal()),!1}function d(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__hue_field.getBoundingClientRect(),o=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return o>1?o=1:o<0&&(o=0),p.__color.h=360*o,p.setValue(p.__color.toOriginal()),!1}E(this,t);var h=I(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o));h.__color=new O(h.getValue()),h.__temp=new O(0);var p=h;h.domElement=document.createElement("div"),R.makeSelectable(h.domElement,!1),h.__selector=document.createElement("div"),h.__selector.className="selector",h.__saturation_field=document.createElement("div"),h.__saturation_field.className="saturation-field",h.__field_knob=document.createElement("div"),h.__field_knob.className="field-knob",h.__field_knob_border="2px solid ",h.__hue_knob=document.createElement("div"),h.__hue_knob.className="hue-knob",h.__hue_field=document.createElement("div"),h.__hue_field.className="hue-field",h.__input=document.createElement("input"),h.__input.type="text",h.__input_textShadow="0 1px 1px ",R.bind(h.__input,"keydown",(function(e){13===e.keyCode&&l.call(this)})),R.bind(h.__input,"blur",l),R.bind(h.__selector,"mousedown",(function(){R.addClass(this,"drag").bind(window,"mouseup",(function(){R.removeClass(p.__selector,"drag")}))})),R.bind(h.__selector,"touchstart",(function(){R.addClass(this,"drag").bind(window,"touchend",(function(){R.removeClass(p.__selector,"drag")}))}));var T=document.createElement("div");return g.extend(h.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),g.extend(h.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:h.__field_knob_border+(h.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),g.extend(h.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),g.extend(h.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),g.extend(T.style,{width:"100%",height:"100%",background:"none"}),a(T,"top","rgba(0,0,0,0)","#000"),g.extend(h.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),function(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}(h.__hue_field),g.extend(h.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:h.__input_textShadow+"rgba(0,0,0,0.7)"}),R.bind(h.__saturation_field,"mousedown",n),R.bind(h.__saturation_field,"touchstart",n),R.bind(h.__field_knob,"mousedown",n),R.bind(h.__field_knob,"touchstart",n),R.bind(h.__hue_field,"mousedown",i),R.bind(h.__hue_field,"touchstart",i),h.__saturation_field.appendChild(T),h.__selector.appendChild(h.__field_knob),h.__selector.appendChild(h.__saturation_field),h.__selector.appendChild(h.__hue_field),h.__hue_field.appendChild(h.__hue_knob),h.domElement.appendChild(h.__input),h.domElement.appendChild(h.__selector),h.updateDisplay(),h}return x(t,D),H(t,[{key:"updateDisplay",value:function(){var e=C(this.getValue());if(!1!==e){var t=!1;g.each(O.COMPONENTS,(function(o){if(!g.isUndefined(e[o])&&!g.isUndefined(this.__color.__state[o])&&e[o]!==this.__color.__state[o])return t=!0,{}}),this),t&&g.extend(this.__color.__state,e)}g.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var o=this.__color.v<.5||this.__color.s>.5?255:0,n=255-o;g.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+o+","+o+","+o+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,a(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),g.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+o+","+o+","+o+")",textShadow:this.__input_textShadow+"rgba("+n+","+n+","+n+",.7)"})}}]),t}(),z=["-moz-","-o-","-webkit-","-ms-",""],Q=function(e,t){var o=t||document,n=document.createElement("style");n.type="text/css",n.innerHTML=e;var i=o.getElementsByTagName("head")[0];try{i.appendChild(n)}catch(e){}},Y=function(e,t){var o=e[t];return g.isArray(arguments[2])||g.isObject(arguments[2])?new N(e,t,arguments[2]):g.isNumber(o)?g.isNumber(arguments[2])&&g.isNumber(arguments[3])?g.isNumber(arguments[4])?new U(e,t,arguments[2],arguments[3],arguments[4]):new U(e,t,arguments[2],arguments[3]):g.isNumber(arguments[4])?new W(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new W(e,t,{min:arguments[2],max:arguments[3]}):g.isString(o)?new F(e,t):g.isFunction(o)?new j(e,t,""):g.isBoolean(o)?new V(e,t):null},q=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},J=function(){function e(){E(this,e),this.backgroundElement=document.createElement("div"),g.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),R.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),g.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;R.bind(this.backgroundElement,"click",(function(){t.hide()}))}return H(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),g.defer((function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"}))}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",R.unbind(e.domElement,"webkitTransitionEnd",t),R.unbind(e.domElement,"transitionend",t),R.unbind(e.domElement,"oTransitionEnd",t)};R.bind(this.domElement,"webkitTransitionEnd",t),R.bind(this.domElement,"transitionend",t),R.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-R.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-R.getHeight(this.domElement)/2+"px"}}]),e}(),Z=function(e){if("undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n");Q(Z);var $="Default",ee=function(){try{return!!window.localStorage}catch(e){return!1}}(),te=void 0,oe=!0,ne=void 0,ie=!1,re=[],se=function e(t){var o=this,n=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),R.addClass(this.domElement,"dg"),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],n=g.defaults(n,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),n=g.defaults(n,{resizable:n.autoPlace,hideable:n.autoPlace}),g.isUndefined(n.load)?n.load={preset:$}:n.preset&&(n.load.preset=n.preset),g.isUndefined(n.parent)&&n.hideable&&re.push(this),n.resizable=g.isUndefined(n.parent)&&n.resizable,n.autoPlace&&g.isUndefined(n.scrollable)&&(n.scrollable=!0);var i=ee&&"true"===localStorage.getItem(p(0,"isLocal")),r=void 0,s=void 0;if(Object.defineProperties(this,{parent:{get:function(){return n.parent}},scrollable:{get:function(){return n.scrollable}},autoPlace:{get:function(){return n.autoPlace}},closeOnTop:{get:function(){return n.closeOnTop}},preset:{get:function(){return o.parent?o.getRoot().preset:n.load.preset},set:function(e){o.parent?o.getRoot().preset=e:n.load.preset=e,function(e){for(var t=0;t<e.__preset_select.length;t++)e.__preset_select[t].value===e.preset&&(e.__preset_select.selectedIndex=t)}(this),o.revert()}},width:{get:function(){return n.width},set:function(e){n.width=e,S(o,e)}},name:{get:function(){return n.name},set:function(e){n.name=e,s&&(s.innerHTML=n.name)}},closed:{get:function(){return n.closed},set:function(t){n.closed=t,n.closed?R.addClass(o.__ul,e.CLASS_CLOSED):R.removeClass(o.__ul,e.CLASS_CLOSED),this.onResize(),o.__closeButton&&(o.__closeButton.innerHTML=t?e.TEXT_OPEN:e.TEXT_CLOSED)}},load:{get:function(){return n.load}},useLocalStorage:{get:function(){return i},set:function(e){ee&&(i=e,e?R.bind(window,"unload",r):R.unbind(window,"unload",r),localStorage.setItem(p(0,"isLocal"),e))}}}),g.isUndefined(n.parent)){if(this.closed=n.closed||!1,R.addClass(this.domElement,e.CLASS_MAIN),R.makeSelectable(this.domElement,!1),ee&&i){o.useLocalStorage=!0;var a=localStorage.getItem(p(0,"gui"));a&&(n.load=JSON.parse(a))}this.__closeButton=document.createElement("div"),this.__closeButton.innerHTML=e.TEXT_CLOSED,R.addClass(this.__closeButton,e.CLASS_CLOSE_BUTTON),n.closeOnTop?(R.addClass(this.__closeButton,e.CLASS_CLOSE_TOP),this.domElement.insertBefore(this.__closeButton,this.domElement.childNodes[0])):(R.addClass(this.__closeButton,e.CLASS_CLOSE_BOTTOM),this.domElement.appendChild(this.__closeButton)),R.bind(this.__closeButton,"click",(function(){o.closed=!o.closed}))}else{void 0===n.closed&&(n.closed=!0);var c=document.createTextNode(n.name);R.addClass(c,"controller-name"),s=l(o,c),R.addClass(this.__ul,e.CLASS_CLOSED),R.addClass(s,"title"),R.bind(s,"click",(function(e){return e.preventDefault(),o.closed=!o.closed,!1})),n.closed||(this.closed=!1)}n.autoPlace&&(g.isUndefined(n.parent)&&(oe&&(ne=document.createElement("div"),R.addClass(ne,"dg"),R.addClass(ne,e.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(ne),oe=!1),ne.appendChild(this.domElement),R.addClass(this.domElement,e.CLASS_AUTO_PLACE)),this.parent||S(o,n.width)),this.__resizeHandler=function(){o.onResizeDebounced()},R.bind(window,"resize",this.__resizeHandler),R.bind(this.__ul,"webkitTransitionEnd",this.__resizeHandler),R.bind(this.__ul,"transitionend",this.__resizeHandler),R.bind(this.__ul,"oTransitionEnd",this.__resizeHandler),this.onResize(),n.resizable&&function(e){function t(t){return t.preventDefault(),e.width+=i-t.clientX,e.onResize(),i=t.clientX,!1}function o(){R.removeClass(e.__closeButton,se.CLASS_DRAG),R.unbind(window,"mousemove",t),R.unbind(window,"mouseup",o)}function n(n){return n.preventDefault(),i=n.clientX,R.addClass(e.__closeButton,se.CLASS_DRAG),R.bind(window,"mousemove",t),R.bind(window,"mouseup",o),!1}var i=void 0;e.__resize_handle=document.createElement("div"),g.extend(e.__resize_handle.style,{width:"6px",marginLeft:"-3px",height:"200px",cursor:"ew-resize",position:"absolute"}),R.bind(e.__resize_handle,"mousedown",n),R.bind(e.__closeButton,"mousedown",n),e.domElement.insertBefore(e.__resize_handle,e.domElement.firstElementChild)}(this),r=function(){ee&&"true"===localStorage.getItem(p(0,"isLocal"))&&localStorage.setItem(p(0,"gui"),JSON.stringify(o.getSaveObject()))},this.saveToLocalStorageIfPossible=r,n.parent||function(){var e=o.getRoot();e.width+=1,g.defer((function(){e.width-=1}))}()};se.toggleHide=function(){ie=!ie,g.each(re,(function(e){e.domElement.style.display=ie?"none":""}))},se.CLASS_AUTO_PLACE="a",se.CLASS_AUTO_PLACE_CONTAINER="ac",se.CLASS_MAIN="main",se.CLASS_CONTROLLER_ROW="cr",se.CLASS_TOO_TALL="taller-than-window",se.CLASS_CLOSED="closed",se.CLASS_CLOSE_BUTTON="close-button",se.CLASS_CLOSE_TOP="close-top",se.CLASS_CLOSE_BOTTOM="close-bottom",se.CLASS_DRAG="drag",se.DEFAULT_WIDTH=245,se.TEXT_CLOSED="Close Controls",se.TEXT_OPEN="Open Controls",se._keydownHandler=function(e){"text"===document.activeElement.type||72!==e.which&&72!==e.keyCode||se.toggleHide()},R.bind(window,"keydown",se._keydownHandler,!1),g.extend(se.prototype,{add:function(e,t){return h(this,e,t,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(e,t){return h(this,e,t,{color:!0})},remove:function(e){this.__ul.removeChild(e.__li),this.__controllers.splice(this.__controllers.indexOf(e),1);var t=this;g.defer((function(){t.onResize()}))},destroy:function(){if(this.parent)throw new Error("Only the root GUI should be removed with .destroy(). For subfolders, use gui.removeFolder(folder) instead.");this.autoPlace&&ne.removeChild(this.domElement);var e=this;g.each(this.__folders,(function(t){e.removeFolder(t)})),R.unbind(window,"keydown",se._keydownHandler,!1),c(this)},addFolder:function(e){if(void 0!==this.__folders[e])throw new Error('You already have a folder in this GUI by the name "'+e+'"');var t={name:e,parent:this};t.autoPlace=this.autoPlace,this.load&&this.load.folders&&this.load.folders[e]&&(t.closed=this.load.folders[e].closed,t.load=this.load.folders[e]);var o=new se(t);this.__folders[e]=o;var n=l(this,o.domElement);return R.addClass(n,"folder"),o},removeFolder:function(e){this.__ul.removeChild(e.domElement.parentElement),delete this.__folders[e.name],this.load&&this.load.folders&&this.load.folders[e.name]&&delete this.load.folders[e.name],c(e);var t=this;g.each(e.__folders,(function(t){e.removeFolder(t)})),g.defer((function(){t.onResize()}))},open:function(){this.closed=!1},close:function(){this.closed=!0},hide:function(){this.domElement.style.display="none"},show:function(){this.domElement.style.display=""},onResize:function(){var e=this.getRoot();if(e.scrollable){var t=R.getOffset(e.__ul).top,o=0;g.each(e.__ul.childNodes,(function(t){e.autoPlace&&t===e.__save_row||(o+=R.getHeight(t))})),window.innerHeight-t-20<o?(R.addClass(e.domElement,se.CLASS_TOO_TALL),e.__ul.style.height=window.innerHeight-t-20+"px"):(R.removeClass(e.domElement,se.CLASS_TOO_TALL),e.__ul.style.height="auto")}e.__resize_handle&&g.defer((function(){e.__resize_handle.style.height=e.__ul.offsetHeight+"px"})),e.__closeButton&&(e.__closeButton.style.width=e.width+"px")},onResizeDebounced:g.debounce((function(){this.onResize()}),50),remember:function(){if(g.isUndefined(te)&&((te=new J).domElement.innerHTML='<div id="dg-save" class="dg dialogue">\n\n Here\'s the new load parameter for your <code>GUI</code>\'s constructor:\n\n <textarea id="dg-new-constructor"></textarea>\n\n <div id="dg-save-locally">\n\n <input id="dg-local-storage" type="checkbox"/> Automatically save\n values to <code>localStorage</code> on exit.\n\n <div id="dg-local-explain">The values saved to <code>localStorage</code> will\n override those passed to <code>dat.GUI</code>\'s constructor. This makes it\n easier to work incrementally, but <code>localStorage</code> is fragile,\n and your friends may not see the same values you do.\n\n </div>\n\n </div>\n\n</div>'),this.parent)throw new Error("You can only call remember on a top level GUI.");var e=this;g.each(Array.prototype.slice.call(arguments),(function(t){0===e.__rememberedObjects.length&&b(e),-1===e.__rememberedObjects.indexOf(t)&&e.__rememberedObjects.push(t)})),this.autoPlace&&S(this,this.width)},getRoot:function(){for(var e=this;e.parent;)e=e.parent;return e},getSaveObject:function(){var e=this.load;return e.closed=this.closed,this.__rememberedObjects.length>0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=_(this)),e.folders={},g.each(this.__folders,(function(t,o){e.folders[o]=t.getSaveObject()})),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=_(this),u(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[$]=_(this,!0)),this.load.remembered[e]=_(this),this.preset=e,T(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){g.each(this.__controllers,(function(t){this.getRoot().load.remembered?d(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())}),this),g.each(this.__folders,(function(e){e.revert(e)})),e||u(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&function e(t){0!==t.length&&q.call(window,(function(){e(t)})),g.each(t,(function(e){e.updateDisplay()}))}(this.__listening)},updateDisplay:function(){g.each(this.__controllers,(function(e){e.updateDisplay()})),g.each(this.__folders,(function(e){e.updateDisplay()}))}});var ae={Color:O,math:G,interpret:C},le={Controller:D,BooleanController:V,OptionController:N,StringController:F,NumberController:X,NumberControllerBox:W,NumberControllerSlider:U,FunctionController:j,ColorController:K},ce={dom:R},ue={GUI:se},de=se,he={color:ae,controllers:le,dom:ce,gui:ue,GUI:de};e.color=ae,e.controllers=le,e.dom=ce,e.gui=ue,e.GUI=de,e.default=he,Object.defineProperty(e,"__esModule",{value:!0})}(t)},function(e,t,o){(e.exports?function(t){e.exports=t()}:o(13))((function(){"use strict";var e,t={mobileDetectRules:{phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6",Dell:"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",Samsung:"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533",Asus:"Asus.*Galaxy|PadFone.*Mobile",NokiaLumia:"Lumia [0-9]{3,4}",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo (3DS|Switch)",Amoi:"Amoi",INQ:"INQ",OnePlus:"ONEPLUS",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",GoogleTablet:"Android.*Pixel C",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",NokiaLumiaTablet:"Lumia 2520",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z930|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android.*\\bG1\\b(?!\\))",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9|TECNO DP8D",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",VerizonTablet:"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",KocasoTablet:"\\b(TB-1207)\\b",HisenseTablet:"\\b(F5281|E2371)\\b",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",iPadOS:"CPU OS 13",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+",Skyfire:"Skyfire",Edge:"Mobile Safari/[.0-9]* Edge",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari",WeChat:"\\bMicroMessenger\\b",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",PaleMoon:"Android.*PaleMoon|Mobile.*PaleMoon"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:["Firefox/[VER]","FxiOS/[VER]"],Fennec:"Fennec/[VER]",Edge:"Edge/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]",UCBrowser:["UCWEB[VER]","UC.*Browser/[VER]"],MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",SamsungBrowser:"SamsungBrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",PaleMoon:"PaleMoon/[VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",Goanna:"Goanna/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}},detectMobileBrowsers:{fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i}},o=Object.prototype.hasOwnProperty;function n(e,t){return null!=e&&null!=t&&e.toLowerCase()===t.toLowerCase()}function i(e,t){var o,n,i=e.length;if(!i||!t)return!1;for(o=t.toLowerCase(),n=0;n<i;++n)if(o===e[n].toLowerCase())return!0;return!1}function r(e){for(var t in e)o.call(e,t)&&(e[t]=new RegExp(e[t],"i"))}function s(e,t){this.ua=function(e){return(e||"").substr(0,500)}(e),this._cache={},this.maxPhoneWidth=t||600}return t.FALLBACK_PHONE="UnknownPhone",t.FALLBACK_TABLET="UnknownTablet",t.FALLBACK_MOBILE="UnknownMobile",e="isArray"in Array?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},function(){var n,i,s,a,l,c,u=t.mobileDetectRules;for(n in u.props)if(o.call(u.props,n)){for(i=u.props[n],e(i)||(i=[i]),l=i.length,a=0;a<l;++a)(c=(s=i[a]).indexOf("[VER]"))>=0&&(s=s.substring(0,c)+"([\\w._\\+]+)"+s.substring(c+5)),i[a]=new RegExp(s,"i");u.props[n]=i}r(u.oss),r(u.phones),r(u.tablets),r(u.uas),r(u.utils),u.oss0={WindowsPhoneOS:u.oss.WindowsPhoneOS,WindowsMobileOS:u.oss.WindowsMobileOS}}(),t.findMatch=function(e,t){for(var n in e)if(o.call(e,n)&&e[n].test(t))return n;return null},t.findMatches=function(e,t){var n=[];for(var i in e)o.call(e,i)&&e[i].test(t)&&n.push(i);return n},t.getVersionStr=function(e,n){var i,r,s,a,l=t.mobileDetectRules.props;if(o.call(l,e))for(s=(i=l[e]).length,r=0;r<s;++r)if(null!==(a=i[r].exec(n)))return a[1];return null},t.getVersion=function(e,o){var n=t.getVersionStr(e,o);return n?t.prepareVersionNo(n):NaN},t.prepareVersionNo=function(e){var t;return 1===(t=e.split(/[a-z._ \/\-]/i)).length&&(e=t[0]),t.length>1&&(e=t[0]+".",t.shift(),e+=t.join("")),Number(e)},t.isMobileFallback=function(e){return t.detectMobileBrowsers.fullPattern.test(e)||t.detectMobileBrowsers.shortPattern.test(e.substr(0,4))},t.isTabletFallback=function(e){return t.detectMobileBrowsers.tabletPattern.test(e)},t.prepareDetectionCache=function(e,o,n){if(void 0===e.mobile){var i,r,a;if(r=t.findMatch(t.mobileDetectRules.tablets,o))return e.mobile=e.tablet=r,void(e.phone=null);if(i=t.findMatch(t.mobileDetectRules.phones,o))return e.mobile=e.phone=i,void(e.tablet=null);t.isMobileFallback(o)?void 0===(a=s.isPhoneSized(n))?(e.mobile=t.FALLBACK_MOBILE,e.tablet=e.phone=null):a?(e.mobile=e.phone=t.FALLBACK_PHONE,e.tablet=null):(e.mobile=e.tablet=t.FALLBACK_TABLET,e.phone=null):t.isTabletFallback(o)?(e.mobile=e.tablet=t.FALLBACK_TABLET,e.phone=null):e.mobile=e.tablet=e.phone=null}},t.mobileGrade=function(e){var t=null!==e.mobile();return e.os("iOS")&&e.version("iPad")>=4.3||e.os("iOS")&&e.version("iPhone")>=3.1||e.os("iOS")&&e.version("iPod")>=3.1||e.version("Android")>2.1&&e.is("Webkit")||e.version("Windows Phone OS")>=7||e.is("BlackBerry")&&e.version("BlackBerry")>=6||e.match("Playbook.*Tablet")||e.version("webOS")>=1.4&&e.match("Palm|Pre|Pixi")||e.match("hp.*TouchPad")||e.is("Firefox")&&e.version("Firefox")>=12||e.is("Chrome")&&e.is("AndroidOS")&&e.version("Android")>=4||e.is("Skyfire")&&e.version("Skyfire")>=4.1&&e.is("AndroidOS")&&e.version("Android")>=2.3||e.is("Opera")&&e.version("Opera Mobi")>11&&e.is("AndroidOS")||e.is("MeeGoOS")||e.is("Tizen")||e.is("Dolfin")&&e.version("Bada")>=2||(e.is("UC Browser")||e.is("Dolfin"))&&e.version("Android")>=2.3||e.match("Kindle Fire")||e.is("Kindle")&&e.version("Kindle")>=3||e.is("AndroidOS")&&e.is("NookTablet")||e.version("Chrome")>=11&&!t||e.version("Safari")>=5&&!t||e.version("Firefox")>=4&&!t||e.version("MSIE")>=7&&!t||e.version("Opera")>=10&&!t?"A":e.os("iOS")&&e.version("iPad")<4.3||e.os("iOS")&&e.version("iPhone")<3.1||e.os("iOS")&&e.version("iPod")<3.1||e.is("Blackberry")&&e.version("BlackBerry")>=5&&e.version("BlackBerry")<6||e.version("Opera Mini")>=5&&e.version("Opera Mini")<=6.5&&(e.version("Android")>=2.3||e.is("iOS"))||e.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||e.version("Opera Mobi")>=11&&e.is("SymbianOS")?"B":(e.version("BlackBerry")<5||e.match("MSIEMobile|Windows CE.*Mobile")||e.version("Windows Mobile"),"C")},t.detectOS=function(e){return t.findMatch(t.mobileDetectRules.oss0,e)||t.findMatch(t.mobileDetectRules.oss,e)},t.getDeviceSmallerSide=function(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height},s.prototype={constructor:s,mobile:function(){return t.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.mobile},phone:function(){return t.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.phone},tablet:function(){return t.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.tablet},userAgent:function(){return void 0===this._cache.userAgent&&(this._cache.userAgent=t.findMatch(t.mobileDetectRules.uas,this.ua)),this._cache.userAgent},userAgents:function(){return void 0===this._cache.userAgents&&(this._cache.userAgents=t.findMatches(t.mobileDetectRules.uas,this.ua)),this._cache.userAgents},os:function(){return void 0===this._cache.os&&(this._cache.os=t.detectOS(this.ua)),this._cache.os},version:function(e){return t.getVersion(e,this.ua)},versionStr:function(e){return t.getVersionStr(e,this.ua)},is:function(e){return i(this.userAgents(),e)||n(e,this.os())||n(e,this.phone())||n(e,this.tablet())||i(t.findMatches(t.mobileDetectRules.utils,this.ua),e)},match:function(e){return e instanceof RegExp||(e=new RegExp(e,"i")),e.test(this.ua)},isPhoneSized:function(e){return s.isPhoneSized(e||this.maxPhoneWidth)},mobileGrade:function(){return void 0===this._cache.grade&&(this._cache.grade=t.mobileGrade(this)),this._cache.grade}},"undefined"!=typeof window&&window.screen?s.isPhoneSized=function(e){return e<0?void 0:t.getDeviceSmallerSide()<=e}:s.isPhoneSized=function(){},s._impl=t,s.version="1.4.4 2019-09-21",s}))},function(e,t,o){"use strict";t.decode=t.parse=o(8),t.encode=t.stringify=o(9)},function(e,t,o){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,o,r){t=t||"&",o=o||"=";var s={};if("string"!=typeof e||0===e.length)return s;var a=/\+/g;e=e.split(t);var l=1e3;r&&"number"==typeof r.maxKeys&&(l=r.maxKeys);var c=e.length;l>0&&c>l&&(c=l);for(var u=0;u<c;++u){var d,h,p,T,f=e[u].replace(a,"%20"),b=f.indexOf(o);b>=0?(d=f.substr(0,b),h=f.substr(b+1)):(d=f,h=""),p=decodeURIComponent(d),T=decodeURIComponent(h),n(s,p)?i(s[p])?s[p].push(T):s[p]=[s[p],T]:s[p]=T}return s};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,o){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,o,a){return t=t||"&",o=o||"=",null===e&&(e=void 0),"object"==typeof e?r(s(e),(function(s){var a=encodeURIComponent(n(s))+o;return i(e[s])?r(e[s],(function(e){return a+encodeURIComponent(n(e))})).join(t):a+encodeURIComponent(n(e[s]))})).join(t):a?encodeURIComponent(n(a))+o+encodeURIComponent(n(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function r(e,t){if(e.map)return e.map(t);for(var o=[],n=0;n<e.length;n++)o.push(t(e[n],n));return o}var s=Object.keys||function(e){var t=[];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.push(o);return t}},function(e,t,o){(function(e,n){var i;!function(r){t&&t.nodeType,e&&e.nodeType;var s="object"==typeof n&&n;s.global!==s&&s.window!==s&&s.self;var a,l=2147483647,c=/^xn--/,u=/[^\x20-\x7E]/,d=/[\x2E\u3002\uFF0E\uFF61]/g,h={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},p=Math.floor,T=String.fromCharCode;function f(e){throw new RangeError(h[e])}function b(e,t){for(var o=e.length,n=[];o--;)n[o]=t(e[o]);return n}function S(e,t){var o=e.split("@"),n="";return o.length>1&&(n=o[0]+"@",e=o[1]),n+b((e=e.replace(d,".")).split("."),t).join(".")}function _(e){for(var t,o,n=[],i=0,r=e.length;i<r;)(t=e.charCodeAt(i++))>=55296&&t<=56319&&i<r?56320==(64512&(o=e.charCodeAt(i++)))?n.push(((1023&t)<<10)+(1023&o)+65536):(n.push(t),i--):n.push(t);return n}function m(e){return b(e,(function(e){var t="";return e>65535&&(t+=T((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=T(e)})).join("")}function A(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function g(e,t,o){var n=0;for(e=o?p(e/700):e>>1,e+=p(e/t);e>455;n+=36)e=p(e/35);return p(n+36*e/(e+38))}function v(e){var t,o,n,i,r,s,a,c,u,d,h,T=[],b=e.length,S=0,_=128,A=72;for((o=e.lastIndexOf("-"))<0&&(o=0),n=0;n<o;++n)e.charCodeAt(n)>=128&&f("not-basic"),T.push(e.charCodeAt(n));for(i=o>0?o+1:0;i<b;){for(r=S,s=1,a=36;i>=b&&f("invalid-input"),((c=(h=e.charCodeAt(i++))-48<10?h-22:h-65<26?h-65:h-97<26?h-97:36)>=36||c>p((l-S)/s))&&f("overflow"),S+=c*s,!(c<(u=a<=A?1:a>=A+26?26:a-A));a+=36)s>p(l/(d=36-u))&&f("overflow"),s*=d;A=g(S-r,t=T.length+1,0==r),p(S/t)>l-_&&f("overflow"),_+=p(S/t),S%=t,T.splice(S++,0,_)}return m(T)}function P(e){var t,o,n,i,r,s,a,c,u,d,h,b,S,m,v,P=[];for(b=(e=_(e)).length,t=128,o=0,r=72,s=0;s<b;++s)(h=e[s])<128&&P.push(T(h));for(n=i=P.length,i&&P.push("-");n<b;){for(a=l,s=0;s<b;++s)(h=e[s])>=t&&h<a&&(a=h);for(a-t>p((l-o)/(S=n+1))&&f("overflow"),o+=(a-t)*S,t=a,s=0;s<b;++s)if((h=e[s])<t&&++o>l&&f("overflow"),h==t){for(c=o,u=36;!(c<(d=u<=r?1:u>=r+26?26:u-r));u+=36)v=c-d,m=36-d,P.push(T(A(d+v%m,0))),c=p(v/m);P.push(T(A(c,0))),r=g(o,S,n==i),o=0,++n}++o,++t}return P.join("")}a={version:"1.4.1",ucs2:{decode:_,encode:m},decode:v,encode:P,toASCII:function(e){return S(e,(function(e){return u.test(e)?"xn--"+P(e):e}))},toUnicode:function(e){return S(e,(function(e){return c.test(e)?v(e.slice(4).toLowerCase()):e}))}},void 0===(i=function(){return a}.call(t,o,t,e))||(e.exports=i)}()}).call(this,o(11)(e),o(12))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(e){"object"==typeof window&&(o=window)}e.exports=o},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,o){"use strict";o.r(t);var n=o(0);o(2);const i=Object.create(null);function r(e){return i[e]?i[e]:null}i.get=r,i.getClone=r,i.set=function(e,t){i[e]||(i[e]=t)};class s extends THREE.Scene{constructor(){super(),this.camera=new THREE.PerspectiveCamera(45,n.p.width/n.p.height,1,1e3),this.camera.position.z=1,n.i(this.camera)}onClickHoldProgress(){}onClickHold(){}update(){}mouseInteraction(e){}render(e){e.render(this,this.camera)}computeFovBounds(){this.fovHeight=2*Math.tan(this.camera.fov*Math.PI/180/2)*this.camera.position.z,this.fovWidth=this.fovHeight*this.camera.aspect,n.o(this.fovWidth,this.fovHeight)}resize(){n.n(n.c.clientWidth,n.c.clientHeight),this.camera.aspect=n.p.width/n.p.height,this.camera.updateProjectionMatrix(),this.computeFovBounds(),n.g.setSize(n.p.width,n.p.height,!1)}}const a=new THREE.PlaneBufferGeometry(1,1,1,1);class l extends THREE.Object3D{constructor(e){super(),this.el=e,this.hoverColor=n.f.cardStainColor,this.uniforms={u_ratio:{value:new THREE.Vector2(1,1)},u_mouse:{value:new THREE.Vector2(0,0)},u_time:{value:1},u_alpha:{value:0},u_progressHover:{value:0},u_res:{value:new THREE.Vector2(n.p.width,n.p.height)},uColor:{value:new THREE.Color(n.f.cardColor)},uColorHover:{value:new THREE.Color(this.hoverColor)}},this.el.parentNode.addEventListener("mouseenter",()=>{TweenLite.to(this.uniforms.u_progressHover,.4,{value:1})}),this.el.parentNode.addEventListener("mouseleave",()=>{TweenLite.to(this.uniforms.u_progressHover,.4,{value:0})}),this.el.parentNode.addEventListener("click",()=>{SuperConfig.broadCaster.emit("click")}),this.mesh=new THREE.Mesh(a,new THREE.ShaderMaterial({uniforms:this.uniforms,vertexShader:"#define GLSLIFY 1\nvarying vec2 v_uv;\n\nvoid main() {\n v_uv = uv;\n vec3 pos = position;\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\n}\n",fragmentShader:"#define GLSLIFY 1\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec4 mod289(vec4 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec4 permute(vec4 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nvec4 taylorInvSqrt(vec4 r)\n{\n return 1.79284291400159 - 0.85373472095314 * r;\n}\n\nfloat snoise(vec3 v)\n {\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n// First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n// Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n // x0 = x0 - 0.0 + 0.0 * C.xxx;\n // x1 = x0 - i1 + 1.0 * C.xxx;\n // x2 = x0 - i2 + 2.0 * C.xxx;\n // x3 = x0 - 1.0 + 3.0 * C.xxx;\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n// Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n// Gradients: 7x7 points over a square, mapped onto an octahedron.\n// The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;\n //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n//Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n// Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n }\n\nuniform float u_time;\nuniform float u_alpha;\n\nuniform vec2 u_res;\nuniform vec2 u_mouse;\nuniform vec3 uColor;\nuniform vec3 uColorHover;\nuniform float u_progressHover;\n\nvarying vec2 v_uv;\n\nfloat circle(in vec2 _st, in float _radius, in float blurriness){\n vec2 dist = _st;\n\t return 1. - smoothstep(_radius-(_radius*blurriness), _radius+(_radius*blurriness), dot(dist,dist)*4.0);\n}\n\nvoid main() {\n vec2 resolution = u_res * PR;\n vec2 uv = v_uv;\n vec2 uv_h = v_uv;\n float time = u_time * 0.05;\n\n float progressHover = u_progressHover;\n\n vec2 st = gl_FragCoord.xy / resolution.xy - vec2(.5);\n st.y *= resolution.y / resolution.x;\n\n vec2 mouse = vec2((u_mouse.x / u_res.x) * 2. - 1.,-(u_mouse.y / u_res.y) * 2. + 1.) * -.5;\n mouse.y *= resolution.y / resolution.x;\n\n float shape = (uv.x + uv.y - 2. + progressHover * 2.7 + 1. * 2.7) * 2.;\n\nfloat grd = 0.1 * progressHover;\n\n float sqr = 100. * ((smoothstep(0., grd, uv.x) - smoothstep(1. - grd, 1., uv.x)) * (smoothstep(0., grd, uv.y) - smoothstep(1. - grd, 1., uv.y))) - 10.;\n\n vec2 cpos = st + mouse;\n\n float c = circle(cpos, .04, 2.) * 50.;\n\n float pct = smoothstep(.99, 1., shape);\n float finalMask = smoothstep(.0, .1, sqr - c);\n\n float c2 = circle(cpos, .02 * 0.8, 2.);\n\n float offX = uv.x + sin(uv.y + time * 2.);\n float offY = uv.y - time * .2 - cos(time * 2.) * 0.1;\n float nc = (snoise(vec3(offX, offY, time * .5) * 8.));\n float nh = (snoise(vec3(offX, offY, time * .5 ) * 2.)) * .03;\n\n float finalMask2 = smoothstep(.99, 1., pow(c2, 2.) * 4. + nc * (1.));\n vec3 final = mix(uColor,uColorHover, finalMask2 * u_progressHover);\n\n gl_FragColor = vec4(final, u_alpha * finalMask) ;\n}\n",transparent:!0,defines:{PI:Math.PI,PR:window.devicePixelRatio.toFixed(1)}})),this.add(this.mesh),this.tick=0,this.alpha=0}show(){TweenLite.to(this,.8,{alpha:1,delay:.4})}hide(){TweenLite.to(this.uniforms.u_alpha,.4,{value:0})}update(e,t,o){this.tick++,this.uniforms.u_mouse.value=e,this.uniforms.u_time.value+=t,this.uniforms.u_alpha.value=o*this.alpha;const i=this.el.getBoundingClientRect();this.bounds={left:i.left,top:i.top,width:i.width,height:i.height},this.position.x=-this.cam.width/2+this.scale.x/2,this.position.y=this.cam.height/2-this.scale.y/2,this.position.x+=this.bounds.left/n.p.width*this.cam.width,this.position.y-=this.bounds.top/n.p.height*this.cam.height}resize(){this.uniforms.u_res.value.x=n.p.width,this.uniforms.u_res.value.y=n.p.height;const e=this.el.getBoundingClientRect();this.bounds={left:e.left,top:e.top,width:e.width,height:e.height},this.cam={width:n.d.width*(n.b.position.z-this.position.z),height:n.d.height*(n.b.position.z-this.position.z)};const t=this.bounds.width/n.p.width||.001,o=this.bounds.height/n.p.height||.001;this.scale.x=this.cam.width*t,this.scale.y=this.cam.height*o}}class c extends s{constructor(e){super(),this.trackClass=e.productClass,this.clock=new THREE.Clock,this.mouse=new THREE.Vector2(0,0);const t=document.querySelectorAll(`.${this.trackClass}`);this.trackables=[],t.forEach(e=>{const t=new l(e);this.add(t),this.trackables.push(t)}),this.trackables.forEach(e=>{e.show()}),this.resize()}mouseInteraction(e){"mousemove"===e.type&&(this.mouse.x=e.clientX,this.mouse.y=e.clientY)}update(){let e=1;""!==n.f.smoothScroll.style.opacity&&(e=n.f.smoothScroll.style.opacity);const t=this.clock.getDelta();this.trackables.forEach(o=>{o.update(this.mouse,t,e)})}render(e){e.clear(),e.render(this,this.camera)}resize(){super.resize(),this.trackables.forEach(e=>{e.resize()})}}function u(e){const t=e.style.transform.split(/\w+\(|\);?/);let o=[0,0,0];return t[1]&&(o=t[1].split(/,\s?/g).map(parseFloat)),{x:o[0],y:o[1],z:o[2]}}o.d(t,"default",(function(){return d}));class d{constructor(e){window.gl=this,this.options=e,e.smoothScroll=document.querySelector(".vs-section"),e.cardColor=e.cardColor?e.cardColor:"#e2d4bf",e.backgroundColor=e.backgroundColor?e.backgroundColor:"#eddfcc",e.cardStainColor=e.cardStainColor?e.cardStainColor:"#d5c8b6",this.smoothScroll=e.smoothScroll;const t=u(this.smoothScroll);n.k(e),n.m(t),n.j(e.canvas),n.n(n.c.clientWidth,n.c.clientHeight),this.scene=new THREE.Scene,this.renderer=new THREE.WebGLRenderer({canvas:e.canvas,preserveDrawingBuffer:!0}),this.renderer.setPixelRatio(n.h),this.renderer.setSize(n.p.width,n.p.height,!1),this.renderer.setClearColor(new THREE.Color(this.options.backgroundColor),1),n.l(this.renderer)}start(){this.paused=!1,this._init(),this._events(),this._tick()}pause(){this.paused=!0}resume(){this.paused=!1}load(e){return new Promise(e=>{Promise.all([]).then(t=>{e(t)})})}loadImage(e,t){return new Promise(o=>{loader.load(t,t=>{i.set(e,t),o()})})}_init(){this.mouse=new THREE.Vector2,this.mouseEase=new THREE.Vector2,this.mouseMultipler=new THREE.Vector2(1,1),this.currentScene=null,this.products=new c(this.options),this.currentScene=this.products}_events(){}mouseInteraction(e){if("mousedown"===e.type&&(this.down=!0,this.startTime=Date.now()),"mouseup"===e.type&&(this.down=!1),"mousemove"===e.type&&this.mousemove(e),this.currentScene)if("click"===e.type){Math.abs(this.startTime-Date.now())/1e3<.5&&this.currentScene.mouseInteraction(e)}else this.currentScene.mouseInteraction(e)}mousemove(e){this.mouse.x=2*(e.clientX/n.p.width-.5),this.mouse.y=2*-(e.clientY/n.p.height-.5),this.mouse.x*=this.mouseMultipler.x,this.mouse.y*=this.mouseMultipler.y}_tick(){this.raf=window.requestAnimationFrame(this._tick.bind(this)),this.paused||(this.update(),this.render(),this.postRender())}update(){const e=u(this.smoothScroll);if(n.m(e),this.down){const e=Math.abs(this.startTime-Date.now());this.currentScene.onClickHoldProgress(e/1e3),e/1e3>1&&(this.down=!1,this.currentScene&&this.currentScene.onClickHold())}this.mouseEase.x+=.1*(this.mouse.x-this.mouseEase.x),this.mouseEase.y+=.1*(this.mouse.y-this.mouseEase.y),this.currentScene&&this.currentScene.update(this.mouseEase)}render(){this.renderer.clear(),this.currentScene&&this.currentScene.render(this.renderer)}postRender(){}resize(){this.currentScene&&this.currentScene.resize()}}},function(e,t,o){"use strict";o.r(t);var n=o(2),i=o(1),r=o(0),s=o(3);var a={controls:!1,skipClickHold:!1,bgColor:"#eddfcc",cardColor:"#f5efe7",cardHoverColor:"#f2083f"};n.a.init(a,["localhost","clients.jojo.ninja"]);class l extends s.EventEmitter{start(e){if(r.e)return new Promise(t=>{window.webglApi=this;let n=o(14);n.default&&(n=n.default),this.webgl=new n(e),i.a.on(r.a,(e,t)=>{this.emit(e,t)})})}events(){window.addEventListener("resize",e=>{this.webgl.resize(e)}),window.addEventListener("click",e=>{this.webgl.mouseInteraction(e)}),window.addEventListener("mousedown",e=>{this.webgl.mouseInteraction(e)}),window.addEventListener("mousemove",e=>{this.webgl.mouseInteraction(e)}),window.addEventListener("mouseup",e=>{this.webgl.mouseInteraction(e)}),window.addEventListener("touchstart",e=>{this.webgl.mouseInteraction(e)}),window.addEventListener("touchmove",e=>{this.webgl.mouseInteraction(e)}),window.addEventListener("touchend",e=>{this.webgl.mouseInteraction(e)})}pause(){this.webgl.pause()}resume(){this.webgl.resume()}load(e){return new Promise(t=>{r.e&&this.webgl.load(e).then(()=>{this.events(),this.webgl.start(),t()})})}}var c=new l;window.WannabeProduct=c}]);