diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 6ce89d0e..00000000 --- a/.eslintignore +++ /dev/null @@ -1,6 +0,0 @@ -CookieMonster.js -CookieMonster.user.js -src/*.js -!src/CookieMonster.js -!src/*/* -dist/* diff --git a/.eslintrc.js b/.eslintrc.js index deeecb55..5a6d452f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,19 +9,26 @@ module.exports = { b64_to_utf8: 'readonly', utf8_to_b64: 'readonly', BeautifyAll: 'readonly', + PlaySound: 'readonly', }, extends: ['airbnb-base', 'plugin:prettier/recommended'], parserOptions: { ecmaVersion: 12, }, + ignorePatterns: ['*CookieMonster*.js', 'dist/*', 'node_modules/*'], rules: { 'import/no-mutable-exports': 'off', 'no-plusplus': ['error', { allowForLoopAfterthoughts: true }], - 'no-new-func': 'off', 'func-names': 'off', - 'no-console': 'off', - 'no-alert': 'off', - 'no-restricted-globals': 'off', 'prefer-destructuring': ['error', { object: true, array: false }], + 'max-len': [ + 1, + { + code: 100, + ignoreComments: true, + ignoreStrings: true, + ignoreTemplateLiterals: true, + }, + ], }, }; diff --git a/.prettierrc.json b/.prettierrc.json index 94099675..a20502b7 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,5 +1,4 @@ { "singleQuote": true, - "trailingComma": "all", - "printWidth": 80 + "trailingComma": "all" } diff --git a/CookieMonster.js b/CookieMonster.js index 82003b5f..b0040f94 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -1,2 +1,2 @@ /*! For license information please see CookieMonster.js.LICENSE.txt */ -(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,n,i,a=((i={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",i.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?i.node(o):e.document))throw new Error("Missing root node");for(var n=o.querySelectorAll(t),a=new RegExp("(^|\\s)("+i.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(i.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(n=e.document.createElement("input"),!(!n.setAttribute||(n.setAttribute("type","color"),"color"!=n.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={},o=arguments[2];return t[a=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={};var n=arguments[1];for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(i.dataProp))return!0;for(var t=1;t=3&&(n=l[0].match(s))&&(i=l[1].match(s))&&(a=l[2].match(s)))return o.format="rgb",o.rgba=[parseFloat(n[1])||0,parseFloat(i[1])||0,parseFloat(a[1])||0,null],l.length>=4&&(r=l[3].match(s))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],n=0;ns[n]&&-t[n]+e[n]+l[n]/2>s[n]/2&&e[n]+l[n]-d[n]>=0?e[n]+l[n]-d[n]:e[n],-t[a]+e[a]+l[a]+d[a]-p+p*r>s[a]?-t[a]+e[a]+l[a]/2>s[a]/2&&e[a]+l[a]-p-p*r>=0?e[a]+l[a]-p-p*r:e[a]+l[a]-p+p*r:e[a]+l[a]-p+p*r>=0?e[a]+l[a]-p+p*r:e[a]+l[a]-p-p*r];else var u=[e[n],e[a]+l[a]-p+p*r];var m=u[n],h=u[a],g=o.fixed?"fixed":"absolute",f=(u[0]+d[0]>e[0]||u[0]0?Math.ceil(l/o):0,i=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),a=e.paletteHeight?Math.min(e.paletteHeight,i):i),n&&(r=n*a+(n-1)*e.paletteSpacing),{cols:o,rows:n,cellW:i,cellH:a,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=i.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!a(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{a(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=i.strList(e),o=0;o127.5},this.hide=function(){p()&&(i.removeClass(n.targetElement,i.pub.activeClassName),i.picker.wrap.parentNode.removeChild(i.picker.wrap),delete i.picker.owner)},this.show=function(){l()},this.redraw=function(){p()&&l()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||i.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(i.setDataAttr(this.targetElement,"current-color",t),e&i.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&i.flags.leaveAlpha)&&this.alphaElement){var n=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(n)}e&i.flags.leavePreview||!this.previewElement||((i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),p()&&(s(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var n=[];if(e){n.push({image:i.genColorPreviewGradient(e,t,o?o-i.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var a=i.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);n.push({image:"url('"+a.canvas.toDataURL()+"')",position:(t||"left")+" top",size:a.width+"px "+a.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else n.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},l=0;l=0;h-=1){var g=m[h];if(g)if(i.pub.presets.hasOwnProperty(g)){for(var u in i.pub.presets[g])if(i.pub.presets[g].hasOwnProperty(u))try{a(u,i.pub.presets[g][u])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",g)}var f=["preset"];for(var u in o)if(o.hasOwnProperty(u)&&-1===f.indexOf(u))try{a(u,o[u])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=i.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=i.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof i.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,i.addClass(this.targetElement,i.pub.className),i.instances.push(this),i.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),i.isButtonEmpty(this.targetElement))){i.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var C=i.getCompStyle(this.targetElement);(parseFloat(C["min-width"])||0)-1){var G=i.parseColorString(b);this._currentFormat=G?G.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(b),void 0!==k&&this.processAlphaInput(k)}}).pub.className="jscolor",i.pub.activeClassName="jscolor-active",i.pub.looseJSON=!0,i.pub.presets={},i.pub.presets.default={},i.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},i.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},i.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},i.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},i.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},i.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},i.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},i.pub.sliderInnerSpace=3,i.pub.chessboardSize=8,i.pub.chessboardColor1="#666666",i.pub.chessboardColor2="#999999",i.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],i.pub.init=function(){if(!i.initialized)for(e.document.addEventListener("mousedown",i.onDocumentMouseDown,!1),e.document.addEventListener("keyup",i.onDocumentKeyUp,!1),e.addEventListener("resize",i.onWindowResize,!1),e.addEventListener("scroll",i.onWindowScroll,!1),i.pub.install(),i.initialized=!0;i.readyQueue.length;)i.readyQueue.shift()()},i.pub.install=function(e){var t=!0;try{i.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(i.pub.lookupClass)try{i.installBySelector("input."+i.pub.lookupClass+", button."+i.pub.lookupClass,e)}catch(e){}return t},i.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(i.initialized?e():i.readyQueue.push(e),!0)},i.pub.trigger=function(e){var t=function(){i.triggerGlobal(e)};i.initialized?t():i.pub.ready(t)},i.pub.hide=function(){i.picker&&i.picker.owner&&i.picker.owner.hide()},i.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),i.genColorPreviewCanvas(e).canvas.toDataURL()},i.pub.background=function(e){var t=[];t.push(i.genColorPreviewGradient(e));var o=i.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},i.pub.options={},i.pub.lookupClass="jscolor",i.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+i.docsRef),!1},i.register(),i.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=a),a}))}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e={};const t=["","","M","G","T","P","E","Z","Y"],n=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],i=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let a,r,s,c,d,p,u,m,h,g,f,C,y,b,k,G,v,w=[],x=[],T=[],M={};const S="CMText",B="CMBack",P="Blue",E="Green",N="Yellow",O="Orange",F="Red",W="Purple",L="Gray",A="Pink",j="Brown",U=[L,P,E,N,O,F,W,A,j],D=[["GoldCookTooltipPlaceholder","Calculated with Golden Switch off","200px"],["GoldCookDragonsFortuneTooltipPlaceholder","Calculated with Golden Switch off and at least one golden cookie on-screen","240px"],["PrestMaxTooltipPlaceholder","The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","320px"],["NextPrestTooltipPlaceholder","Calculated with cookies gained from wrinklers and Chocolate egg","200px"],["HeavenChipMaxTooltipPlaceholder","The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","330px"],["ResetTooltipPlaceholder","The bonus income you would get from new prestige levels unlocked at 100% of its potential and from ascension achievements if you have the same buildings/upgrades after reset","370px"],["ChoEggTooltipPlaceholder","The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg","300px"],["ChainNextLevelPlaceholder","Cheated cookies might break this formula","250px"]],H={};let R,$,I=0,z=-1,V=[],_=1,X=1,Q=1;const q=[10,15,30,60,300,600,900,1800],Y=[1,5,10,15,30],K={Frenzy:N,"Dragon Harvest":j,"Elder frenzy":E,Clot:F,"Click frenzy":P,Dragonflight:A};let J,Z,ee,te,oe,ne,ie,ae={},re="";function le(o,a,r){const l=e.ScaleDecimals+1;if(o===1/0)return"Infinity";if(void 0===o)return"0";if(0===e.Scale)return M.Beautify(o,a);if(Number.isFinite(o)){let s="";if(0===o)return o.toString();if(o>.001&&o=.01&&o=.01&&o=.01&&o315576e4)return"XX:XX:XX:XX:XX";c+=(i<10?"0":"")+i+":",c+=(a<10?"0":"")+a+":",c+=(r<10?"0":"")+r+":",c+=(l<10?"0":"")+l+":",c+=(s<10?"0":"")+s}else{if(n>7776e5)return o?"Over 9000 days!":">9000d";c+=i>0?i+(o?1===i?" year":" years":"y")+", ":"",c+=a>0?a+(o?1===a?" day":" days":"d")+", ":"",(c.length>0||r>0)&&(c+=r+(o?1===r?" hour":" hours":"h")+", "),(c.length>0||l>0)&&(c+=l+(o?1===l?" minute":" minutes":"m")+", "),c+=s+(o?1===s?" second":" seconds":"s")}return c}function ce(t){let o,n;return t<=0?(n=e.TimeFormat?"00:00:00:00:00":"Done!",o=E):(n=se(t),o=t>300?F:t>60?O:N),{text:n,color:o}}let de,pe,ue,me,he,ge,fe,Ce,ye,be,ke,Ge,ve,we,xe,Te,Me,Se,Be,Pe,Ee,Ne,Oe,Fe,We,Le,Ae,je,Ue,De,He,Re,$e,Ie,ze,Ve=0,_e=0,Xe=0,Qe=0,qe=0,Ye=0,Ke=0,Je=0,Ze=0,et=0,tt=0,ot=0,nt=0,it=0,at=0,rt=1,lt=1,st=1,ct=0,dt=0,pt=0,ut=0,mt={},ht={},gt={},ft=0,Ct=0,yt=[0,null],bt=0,kt=0,Gt={},vt={},wt={},xt={},Tt={},Mt=0,St=0,Bt=[],Pt=0,Et=0,Nt=[],Ot=0,Ft=0,Wt=[],Lt=0,At=0,jt=[],Ut=0,Dt=0,Ht={},Rt={},$t=0,It=0,zt=[],Vt={},_t=0,Xt={0:[0,0,0],1:[0,0,0],2:[0,0,0],3:[0,0,0],4:[0,0,0],5:[0,0,0],6:[0,0,0],7:[0,0,0],8:[0,0,0],9:[0,0,0],10:[0,0,0]},Qt=[],qt=[],Yt=[];function Kt(e){let t=0;return Game.dragonAuras[Ae].name!==e&&Game.dragonAuras[je].name!==e||(t=1),"Reality Bending"!==Game.dragonAuras[Ae].name&&"Reality Bending"!==Game.dragonAuras[je].name||(t+=.1),t}function Jt(){let e=.25;return e*=1+Kt("Earth Shatterer"),e}function Zt(e,t){return void 0===$e[e]?void 0===t?1:t:$e[e]}function eo(e){const t=qt[e];return(1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function to(e){if(Game.hasGod){void 0===Qt.Temple.minigame&&(Qt.Temple.minigame=Game.Objects.Temple.minigame);const t=Qt.Temple.minigame.gods[e];if(Ue===t.id)return 1;if(De===t.id)return 2;if(He===t.id)return 3}return!1}function oo(e,t){let o=t;if(eo("Season savings")&&(o*=.99),eo("Santa's dominion")&&(o*=.99),eo("Faberge egg")&&(o*=.99),eo("Divine discount")&&(o*=.99),eo("Fortune #100")&&(o*=.99),o*=1-.02*Kt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&eo(e.fortune.name)&&(o*=.93),o*=Zt("buildingCost"),Qt.Temple.minigameLoaded){const e=to("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function no(e,t,o,n,i,a){const r=void 0===a?0:a;let l=i,s=o,c=0;-1===i&&(l=s),i||(l=Game.buyBulk);for(let o=0;o0&&(c+=o,s-=1)}return c}function io(){let t=Game.buyBulk;if(1===Game.buyMode?X=t:t=X,1===t?t=mt:10===t?t=ht:100===t&&(t=gt),1===Game.buyMode?1===e.BuildColor?Object.keys(t).forEach((o=>{l(`productPrice${Game.Objects[o].id}`).style.color=e.Colors[t[o].color]})):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(mt).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=le(no(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&e.SortBuildings){let o;1===e.SortBuildings?(o=Object.keys(mt).map((e=>{const t=mt[e];return t.name=e,t.id=Game.Objects[e].id,t})),o.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const o=t[e];return o.name=e,o.id=Game.Objects[e].id,o})),o.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const t=mt[e];return t.name=e,t.id=Game.Objects[e].id,t}));e.sort(((e,t)=>e.id-t.id));for(let t=0;t0){let e=0,t=0,o=0,n=0,i=0,a=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;eU.indexOf(t.color)?1:U.indexOf(e.color)e.price-t.price));const o=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let e=0;e{let n,i=Game.buyBulk;1===Game.buyMode?_=i:i=_,1===i&&(i=mt),10===i&&(i=ht),100===i&&(i=gt),t+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[t].childNodes[1].textContent=Game.Objects[o].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[t].textContent=le(i[o].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].className=S+i[o].color,n=e.PPDisplayTime?se(Math.round(i[o].pp)):le(Math.round(i[o].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].textContent=n;const a=ce((Game.Objects[o].bulkPrice-(Game.cookies+lo()))/ro());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[t].className=S+a.color,"Done!"===a.text&&Game.cookies{!Game.Tiers[e.tieredUpgrades[o].tier].special&&eo(e.tieredUpgrades[o].name)&&(t*=2)})),Object.keys(e.synergies).forEach((o=>{if(eo(e.synergies[o].name)){const n=e.synergies[o];n.buildingTie1.name===e.name?t*=1+.05*n.buildingTie2.amount:n.buildingTie2.name===e.name&&(t*=1+.001*n.buildingTie1.amount)}})),e.fortune&&eo(e.fortune.name)&&(t*=1.07),e.grandma&&eo(e.grandma.name)&&(t*=1+.01*Qt.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&eo(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){default:t*=1;break;case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06}return t}function yo(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;eo("Thousand fingers")&&(t+=.1),eo("Million fingers")&&(t*=5),eo("Billion fingers")&&(t*=10),eo("Trillion fingers")&&(t*=20),eo("Quadrillion fingers")&&(t*=20),eo("Quintillion fingers")&&(t*=20),eo("Sextillion fingers")&&(t*=20),eo("Septillion fingers")&&(t*=20),eo("Octillion fingers")&&(t*=20),eo("Nonillion fingers")&&(t*=20);let o=1,n=0;return Object.keys(Qt).forEach((e=>{"Cursor"!==Qt[e].name&&(n+=Qt[e].amount)})),t*=n,o*=Co(e),o*=Game.magicCpS("Cursor"),o*=Zt("cursorCps"),Game.ComputeCps(.1,eo("Reinforced index finger")+eo("Carpal tunnel prevention cream")+eo("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{eo(Game.GrandmaSynergies[e])&&(o*=2)})),eo("Bingo center/Research facility")&&(o*=4),eo("Ritual rolling pins")&&(o*=2),eo("Naughty list")&&(o*=2),eo("Elderwort biscuits")&&(o*=1.02),o*=Zt("grandmaCps"),eo("Cat ladies"))for(let e=0;e{"Grandma"!==Qt[e].name&&(i+=Qt[e].amount)})),o*=1+.01*Kt("Elder Battalion")*i,o*=Game.magicCpS(t.name),(t.baseCps+n)*o}:o.cps=function(e){let t=1;return t*=Co(e),t*=Game.magicCpS(e.name),e.baseCPS*t},o.baseCps=t.baseCps,o.name=t.name,o.tieredUpgrades=t.tieredUpgrades,o.synergies=t.synergies,o.fortune=t.fortune,o.grandma=t.grandma,o.baseCPS=t.baseCps,o.id=t.id,o.vanilla=t.vanilla,o}function bo(e){const t=Game.Upgrades[e],o={};return o.power=t.power,"function"==typeof o.power&&("Sugar crystal cookies"===t.name?o.power=function(){let e=5;return Object.keys(Qt).forEach((t=>{Qt[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(eo("Starlove")&&(e=3),Game.hasGod){const t=to("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function ko(){Ne=Game.UpgradesOwned,Oe=Game.pledges,Fe=Game.AchievementsOwned,We=Game.heavenlyPower,Le=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Qt[e];void 0===o&&(Qt[e]=yo(e),o=Qt[e],co(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&("Temple"===t.name&&(Ue=t.minigame.slot[0],De=t.minigame.slot[1],He=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Qt[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=qt[e];void 0===o&&(qt[e]=bo(e),o=qt[e]),o.bought=t.bought,qt[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=Yt[e];void 0===o&&(Yt[e]=fo(e),o=Yt[e]),o.won=t.won,Yt[e]=o})),go(),Ae=Ve,je=_e}function Go(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className="CMTextBlue",t.textContent=e,t}function vo(e){e.appendChild(Go("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(Go("Bonus Cookies per Click")),e.lastChild.style.display="none";const o=document.createElement("div");o.style.marginBottom="4px",o.style.color="white",o.style.display="none",o.id="CMTooltipCookiePerClick",e.appendChild(o),e.appendChild(Go("Payback Period"));const n=document.createElement("div");n.style.marginBottom="4px",n.id="CMTooltipPP",e.appendChild(n),e.appendChild(Go("Time Left"));const i=document.createElement("div");if(i.id="CMTooltipTime",e.appendChild(i),"b"===ee){e.appendChild(Go("Production left till next achievement")),e.lastChild.id="CMTooltipProductionHeader";const t=document.createElement("div");t.id="CMTooltipProduction",e.appendChild(t)}}function wo(e,t,o){let n=e,i=0;for(;n{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function To(){null!==l("CMDispTooltipWarningParent")&&(0===e.ToolWarnPos?(l("CMDispTooltipWarningParent").style.top="auto",l("CMDispTooltipWarningParent").style.margin="4px -4px",l("CMDispTooltipWarningParent").style.padding="3px 4px"):(l("CMDispTooltipWarningParent").style.right="auto",l("CMDispTooltipWarningParent").style.margin="4px",l("CMDispTooltipWarningParent").style.padding="4px 3px"))}function Mo(){if(ko(),"none"!==l("tooltipAnchor").style.display&&l("CMTooltipArea")){l("CMTooltipArea").innerHTML="";const t=function(){l("tooltip").firstChild.style.paddingBottom="4px";const e=document.createElement("div");return e.style.border="1px solid",e.style.padding="4px",e.style.margin="0px -4px",e.id="CMTooltipBorder",e.className="CMTextGray",e}();l("CMTooltipArea").appendChild(t),"b"===ee?function(){if(1===e.TooltipBuildUpgrade&&1===Game.buyMode){let t;if(vo(l("CMTooltipBorder")),1===Game.buyMode?Q=t:t=Q,1===Game.buyBulk?t=mt:10===Game.buyBulk?t=ht:100===Game.buyBulk&&(t=gt),J=Game.Objects[te].bulkPrice,Z=t[te].bonus,1===e.TooltipBuildUpgrade&&1===Game.buyMode){l("CMTooltipIncome").textContent=le(Z,2);const o=Math.round(Z/Game.cookiesPs*1e4);Number.isFinite(o)&&0!==o?l("CMTooltipIncome").textContent+=` (${o/100}% of income)`:l("CMTooltipIncome").textContent+=` (<0${e.ScaleSeparator?",":"."}01% of income)`,l("CMTooltipBorder").className=S+t[te].color,e.PPDisplayTime?l("CMTooltipPP").textContent=se(t[te].pp):l("CMTooltipPP").textContent=le(t[te].pp,2),l("CMTooltipPP").className=S+t[te].color;const n=ce((J-(Game.cookies+lo()))/ro());l("CMTooltipTime").textContent=n.text,"Done!"===n.text&&Game.cookiest.plantsById[t.plot[te[1]][te[0]][0]-1].matureBase,o=t.plantsById[t.plot[te[1]][te[0]][0]-1].name;l("CMTooltipBorder").appendChild(Go("Reward (Current / Maximum)"));const n=document.createElement("div");n.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(n),"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${le(60*Game.cookiesPs*30)}`:"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${le(60*Game.cookiesPs*3)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${le(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${le(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===ee?function(){const{minigame:t}=Game.Objects.Farm;if(e.TooltipLump){l("CMTooltipBorder").appendChild(Go("Cookies gained from harvesting:"));let e=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let n=0;n<6;n++)for(let i=0;i<6;i++)if(t.plot[n][i][0]>=1){const a=t.plot[n][i],r=t.plantsById[a[0]-1],l=r.name;let s=!0;o&&r.immortal&&(s=!1),a[1]0&&t=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",l("CMTimerBarGCTime").textContent=Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps),n+=1),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",l("CMTimerBarRenTime").textContent=Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps),n+=1):l("CMTimerBarRen").style.display="none";const i={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((t=>{if(Game.buffs[t]){const a=so(Game.buffs[t].name,Game.buffs[t].name,[{id:`${Game.buffs[t].name}Bar`}]);a.style.display="";let r="";r=void 0!==K[Game.buffs[t].name]?K[Game.buffs[t].name]:W,a.lastChild.children[1].className=B+r,a.lastChild.children[1].style.color="black",2===e.TimerBarOverlay?a.lastChild.children[1].textContent=`${Math.round(Game.buffs[t].time/Game.buffs[t].maxTime*100)}%`:a.lastChild.children[1].textContent="",a.lastChild.children[1].style.width=`${Math.round(Game.buffs[t].time*(o-8*Math.ceil(Game.buffs[t].time/Game.fps).toString().length)/Game.buffs[t].maxTime)}px`,a.lastChild.children[2].textContent=Math.ceil(Game.buffs[t].time/Game.fps),n+=1,i[Game.buffs[t].name]=a}})),Object.keys(i).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(i[e])})),0!==n&&(l("CMTimerBar").style.height=12*n+2+"px"),ie!==n&&(ie=n,mo())}}(),po(),Mo(),function(){if(1===e.TooltipWrink&&1===I){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===V[t]||void 0===V[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const n=document.createElement("div");n.style.textAlign="center",n.id="CMTooltipWrinkler",o.appendChild(n),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),z=t,V[t]=1}}else V[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===e.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[z],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[z].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Qt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=le(e)}}(),e.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu(),e.Scale){let e=l("cookies").innerHTML.replace(/.*(?=
)/i,le(Game.cookies));Game.prefs.monospace&&(e=`${e}`),l("cookies").innerHTML=e}}class Bo{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){let t=e;t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length);let o=0;for(let e=this.queue.length-1;e>=0&&e>this.queue.length-1-t;e--)o+=this.queue[e];return 0===o?0:o/t}}function Po(){const t=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let o=Game.cookies+_t;Game.cpsSucked>0&&(o+=ft),Ut=Math.max(Game.cookiesEarned,o),o*=.05;const n=t-fe,i=Math.max(0,Game.cookies-Ce)/n,a=Math.max(0,ft-ye)/n,r=Math.max(0,yt[0]-be)/n,l=Math.max(0,o-ut)/n,s=(Game.cookieClicks-ke)/n;for(let e=0;ezt[30][0]?F:W,0!==Number(e.PPSecondsLowerLimit)&&o/ro()0&&(n=F),n}function No(t,o){Object.keys(t).forEach((n=>{if(e.PPRigidelMode&&1===o)t[n].color=L;else{t[n].color=Eo(t[n],Game.Objects[n].getSumPrice(o));for(let o=0;o{const i=Game.Objects[n].getSumPrice(o);Game.cookiesPs?t[n].pp=Math.max(i-(Game.cookies+lo()),0)/Game.cookiesPs+i/t[n].bonus:t[n].pp=i/t[n].bonus,e.PPRigidelMode&&1===o||zt.push([t[n].pp,o])}))}function Fo(){!function(){It=1/0,zt=[],void 0===e.PPExcludeTop&&(e.PPExcludeTop=0),Oo(mt,1),Oo(ht,10),Oo(gt,100),zt.sort(((e,t)=>e[0]-t[0]));let t=0;if(e.PPOnlyConsiderBuyable)for(;zt[t][1]>Game.cookies&&(t+=1,zt.length!==t+1););It=zt[e.PPExcludeTop][t],No(mt,1),No(ht,10),No(gt,100)}(),Object.keys(Gt).forEach((e=>{Game.cookiesPs?Gt[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+lo()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/Gt[e].bonus:Gt[e].pp=Game.Upgrades[e].getPrice()/Gt[e].bonus,Number.isNaN(Gt[e].pp)&&(Gt[e].pp=1/0),Gt[e].color=Eo(Gt[e],Game.Upgrades[e].getPrice())}))}function Wo(e,t,o,n,i){let a=o,r=0;for(let o=0;o{if(Game.Objects[e].minigameLoaded&&Game.Objects[e].minigame.effs){const o=Game.Objects[e].minigame.effs;Object.keys(o).forEach((e=>{t[e]?t[e]*=o[e]:t[e]=o[e]}))}})),$e=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(Le)*We*function(){let e=0;if(eo("Heavenly chip secret")&&(e+=.05),eo("Heavenly cookie stand")&&(e+=.2),eo("Heavenly bakery")&&(e+=.25),eo("Heavenly confectionery")&&(e+=.25),eo("Heavenly key")&&(e+=.25),e*=1+.05*Kt("Dragon God"),eo("Lucky digit")&&(e*=1.01),eo("Lucky number")&&(e*=1.01),eo("Lucky payout")&&(e*=1.01),Game.hasGod){const t=to("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=Zt("cps"),eo("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];eo(o.name)&&("function"==typeof o.power?e*=1+.01*qt[o.name].power(qt[o.name]):e*=1+.01*o.power)})),eo("Specialized chocolate chips")&&(e*=1.01),eo("Designer cocoa beans")&&(e*=1.02),eo("Underworld ovens")&&(e*=1.03),eo("Exotic nuts")&&(e*=1.04),eo("Arcane sugar")&&(e*=1.05),eo("Increased merriness")&&(e*=1.15),eo("Improved jolliness")&&(e*=1.15),eo("A lump of coal")&&(e*=1.01),eo("An itchy sweater")&&(e*=1.01),eo("Santa's dominion")&&(e*=1.2),eo("Fortune #100")&&(e*=1.01),eo("Fortune #101")&&(e*=1.07),eo("Dragon scale")&&(e*=1.03);let o=1;if(to){let t=to("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=to("ages"),1===t?e*=1+.15*Math.sin(Date.now()/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(Date.now()/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(Date.now()/1e3/86400*Math.PI*2)),t=to("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=to("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=to("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}eo("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const n=Fe/25;let i=1;if(eo("Santa's milk and cookies")&&(i*=1.05),i*=1+.05*Kt("Breath of Milk"),to){const e=to("mother");1===e?i*=1.1:2===e?i*=1.05:3===e&&(i*=1.03)}i*=Zt("milk");let a=1;eo("Kitten helpers")&&(a*=1+.1*n*i),eo("Kitten workers")&&(a*=1+.125*n*i),eo("Kitten engineers")&&(a*=1+.15*n*i),eo("Kitten overseers")&&(a*=1+.175*n*i),eo("Kitten managers")&&(a*=1+.2*n*i),eo("Kitten accountants")&&(a*=1+.2*n*i),eo("Kitten specialists")&&(a*=1+.2*n*i),eo("Kitten experts")&&(a*=1+.2*n*i),eo("Kitten consultants")&&(a*=1+.2*n*i),eo("Kitten assistants to the regional manager")&&(a*=1+.175*n*i),eo("Kitten marketeers")&&(a*=1+.15*n*i),eo("Kitten analysts")&&(a*=1+.125*n*i),eo("Kitten executives")&&(a*=1+.115*n*i),eo("Kitten angels")&&(a*=1+.1*n*i),eo("Fortune #103")&&(a*=1+.05*n*i),Object.keys(Qt).forEach((e=>{const t=Qt[e];let a=t.cps(t);1!==Game.ascensionMode&&(a*=(1+.01*t.level)*o),"Grandma"===t.name&&eo("Milkhelp® lactose intolerance relief tablets")&&(a*=1+.05*n*i),Ie+=t.amount*a})),eo('"egg"')&&(Ie+=9),e*=a;let r=1;if(eo("Chicken egg")&&(r*=1.01),eo("Duck egg")&&(r*=1.01),eo("Turkey egg")&&(r*=1.01),eo("Quail egg")&&(r*=1.01),eo("Robin egg")&&(r*=1.01),eo("Ostrich egg")&&(r*=1.01),eo("Cassowary egg")&&(r*=1.01),eo("Salmon roe")&&(r*=1.01),eo("Frogspawn")&&(r*=1.01),eo("Shark egg")&&(r*=1.01),eo("Turtle egg")&&(r*=1.01),eo("Ant larva")&&(r*=1.01),eo("Century egg")){let e=10*Math.floor((Date.now()-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),dt=1+.1*(1-(1-e/100)**3),r*=dt}e*=r,eo("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+Kt("Radiant Appetite");const l=Ie*e;Object.keys(Game.CpsAchievements).forEach((e=>{l>=Game.CpsAchievements[e].threshold&&Lo(Game.CpsAchievements[e].name)})),ze=l;const{n:s}=Game.shimmerTypes.golden,c=Kt("Dragon's Fortune");for(let t=0;t{eo(e[o])&&(t+=.1)}))}e*=t}if(eo("Shimmering veil [off]")){let t=.5;eo("Reinforced membrane")&&(t+=.1),e*=1+t}eo("Magic shenanigans")&&(e*=1e3),eo("Occult obstruction")&&(e*=0),Ie=Game.runModHookOnValue("cps",Ie),e*=xo(),Ie*=e}const jo=["Fortune #001","Fortune #002","Fortune #003","Fortune #004","Fortune #005","Fortune #006","Fortune #007","Fortune #008","Fortune #009","Fortune #010","Fortune #011","Fortune #012","Fortune #013","Fortune #014","Fortune #015","Fortune #016","Fortune #017","Fortune #018","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],Uo=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],Do=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],Ho=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],Ro=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function $o(e){return Yt[e]?Yt[e].won:0}function Io(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{eo(Game.GrandmaSynergies[t])&&(e+=1)})),!$o("Elder")&&e>=7&&Lo("Elder"),!$o("Veteran")&&e>=14&&Lo("Veteran");let t=0,o=1,n=1,i=1e5;Object.keys(Qt).forEach((e=>{t+=Qt[e].amount,i=Math.min(Qt[e].amount,i),$o("Mathematician")||Qt[e].amount=1&&Lo("One with everything"),1===o&&Lo("Mathematician"),1===n&&Lo("Base 10"),i>=100&&Lo("Centennial"),i>=150&&Lo("Centennial and a half"),i>=200&&Lo("Bicentennial"),i>=250&&Lo("Bicentennial and a half"),i>=300&&Lo("Tricentennial"),i>=350&&Lo("Tricentennial and a half"),i>=400&&Lo("Quadricentennial"),i>=450&&Lo("Quadricentennial and a half"),i>=500&&Lo("Quincentennial"),i>=550&&Lo("Quincentennial and a half"),i>=600&&Lo("Sexcentennial"),t>=100&&Lo("Builder"),t>=500&&Lo("Architect"),t>=1e3&&Lo("Engineer"),t>=2e3&&Lo("Lord of Constructs"),t>=4e3&&Lo("Grand design"),t>=8e3&&Lo("Ecumenopolis"),Ne>=20&&Lo("Enhancer"),Ne>=50&&Lo("Augmenter"),Ne>=100&&Lo("Upgrader"),Ne>=200&&Lo("Lord of Progress"),Ne>=300&&Lo("The full picture"),Ne>=400&&Lo("When there's nothing left to add"),t>=4e3&&Ne>=300&&Lo("Polymath"),t>=8e3&&Ne>=400&&Lo("Renaissance baker"),Qt.Cursor.amount+Qt.Grandma.amount>=777&&Lo("The elder scrolls");let a=!0;Object.keys(Uo).forEach((e=>{eo(Uo[e])||(a=!1)})),a&&Lo("Spooky cookies");let r=!0;if(Object.keys(Do).forEach((e=>{eo(Do[e])||(r=!1)})),r&&Lo("Let it snow"),eo("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{eo(e[o].name)&&(t+=1)})),t>=e.length&&Lo("O Fortuna")}}function zo(e){const t={};return Object.keys(Game.Objects).forEach((o=>{t[o]={},t[o].bonus=function(e,t){ko(),Qt[e].amount+=t;const o=Qt[e];"Cursor"===e?(o.amount>=1&&Lo("Click"),o.amount>=2&&Lo("Double-click"),o.amount>=50&&Lo("Mouse wheel"),o.amount>=100&&Lo("Of Mice and Men"),o.amount>=200&&Lo("The Digital"),o.amount>=300&&Lo("Extreme polydactyly"),o.amount>=400&&Lo("Dr. T"),o.amount>=500&&Lo("Thumbs, phalanges, metacarpals"),o.amount>=600&&Lo("With her finger and her thumb"),o.amount>=700&&Lo("Gotta hand it to you"),o.amount>=800&&Lo("The devil's workshop")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&Lo(Game.Objects[o.name].tieredAchievs[e].name)}));const n=Fe;return Ao(),Io(),n!==Fe&&Ao(),Ie-Game.cookiesPs}(o,e),1!==e&&(Be=1)})),t}function Vo(){Object.keys(Game.Objects).forEach((e=>{mt[e].price=Wo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),ht[e].price=Wo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),gt[e].price=Wo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)}))}function _o(){mt=zo(1),ht=zo(10),gt=zo(100),Gt=[],Object.keys(Game.Upgrades).forEach((t=>{const o=function(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){ko(),"Shimmering veil [on]"===qt[e].name?qt["Shimmering veil [off]"].bought=0:"Golden switch [on]"===qt[e].name?qt["Golden switch [off]"].bought=0:qt[e].bought=(qt[e].bought+1)%2,qt[e],Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Ne+=1),"Elder Pledge"===e?(Oe+=1,Oe>0&&Lo("Elder nap"),Oe>=5&&Lo("Elder slumber")):"Elder Covenant"===e?Lo("Elder calm"):"Prism heart biscuits"===e?Lo("Lovely cookies"):"Heavenly key"===e&&Lo("Wholesome");const t=Fe;Ao(),Io(),t!==Fe&&Ao();const o=function(){let e=0;eo("Thousand fingers")&&(e+=.1),eo("Million fingers")&&(e*=5),eo("Billion fingers")&&(e*=10),eo("Trillion fingers")&&(e*=20),eo("Quadrillion fingers")&&(e*=20),eo("Quintillion fingers")&&(e*=20),eo("Sextillion fingers")&&(e*=20),eo("Septillion fingers")&&(e*=20),eo("Octillion fingers")&&(e*=20),eo("Nonillion fingers")&&(e*=20);let t=0;Object.keys(Qt).forEach((e=>{t+=Qt[e].amount})),t-=Qt.Cursor.amount,e*=t,eo("Plastic mouse")&&(e+=.01*Ie),eo("Iron mouse")&&(e+=.01*Ie),eo("Titanium mouse")&&(e+=.01*Ie),eo("Adamantium mouse")&&(e+=.01*Ie),eo("Unobtainium mouse")&&(e+=.01*Ie),eo("Eludium mouse")&&(e+=.01*Ie),eo("Wishalloy mouse")&&(e+=.01*Ie),eo("Fantasteel mouse")&&(e+=.01*Ie),eo("Nevercrack mouse")&&(e+=.01*Ie),eo("Armythril mouse")&&(e+=.01*Ie),eo("Technobsidian mouse")&&(e+=.01*Ie),eo("Plasmarble mouse")&&(e+=.01*Ie),eo("Miraculite mouse")&&(e+=.01*Ie),eo("Fortune #104")&&(e+=.01*Ie);let o=1;if(eo("Santa's helpers")&&(o*=1.1),eo("Cookie egg")&&(o*=1.1),eo("Halo gloves")&&(o*=1.1),eo("Dragon claw")&&(o*=1.03),eo("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,eo("Luminous gloves")?20:10)),o*=Zt("click"),Qt.Temple.minigameLoaded&&to){const e=to("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}Object.keys(Game.buffs).forEach((e=>{void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick)})),o*=1+.05*Kt("Dragon Cursor");let n=o*Game.ComputeCps(1,eo("Reinforced index finger")+eo("Carpal tunnel prevention cream")+eo("Ambidextrous"),e);return n=Game.runModHookOnValue("cookiesPerClick",n),Game.hasBuff("Cursed finger")&&(n=Game.buffs["Cursed finger"].power),n}()-Game.computedMouseCps;return o?[Ie-Game.cookiesPs,o]:[Ie-Game.cookiesPs]}return[]}(t);"Elder Pledge"===t?(Gt[t]={bonus:Game.cookiesPs-Ge},1===e.CalcWrink?Gt[t].bonus-=ve:2===e.CalcWrink&&(Gt[t].bonus-=we),Number.isFinite(Gt[t].bonus)||(Gt[t].bonus=0)):(Gt[t]={},o[0]&&(Gt[t].bonus=o[0]),o[1]&&(Gt[t].bonusMouse=o[1]))}))}function Xo(e,t,o){let n=0,i=0,a=0,r=0,l=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;a0?e/=t:e=0,Bt=Xo(7,e,lt),Mt=2*Bt[1]/lt,St=Bt[2]/60/60/6/rt,Nt=Xo(6,e,st),Pt=2*Nt[1]/st,Et=Nt[2]/60/60/6/rt,Wt=Xo(7,7*e,lt),Ot=2*Wt[1]/lt,Ft=Wt[2]/60/60/6/rt,jt=Xo(6,7*e,st),Lt=2*jt[1]/st,At=jt[2]/60/60/6/rt}function qo(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),n=e-Me,i=Math.max(0,o-Se)/n;for(let e=0;e{e.push(Game.Upgrades[t])})),e.sort((function(e,t){return e.order>t.order?1:e.order{const o=e[t];if(0===o.bought){let e="";e+=function(e){let t="crate upgrade missing";"prestige"===e.pool&&(t+=" heavenly");let o=0;Game.prefs.crates||(o=1),o&&(t+=" noFrame");let{icon:n}=e;e.iconFunction&&(n=e.iconFunction());const i=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?xt+=e:"cookie"===o.pool?Tt+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(wt+=e)}}))}function Ko(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),pt=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(pt*=2)}}function Jo(){qe=900*at/.15,qe*=rt;const e=xo();e>0?qe/=e:qe=0,Ye=lt*(.15*qe)+13,Ke=st*(.15*qe)+13,Je=7*qe,Ze=lt*(.15*Je)+13,et=st*(.15*Je)+13,tt=2*qe,ot=.15*tt,nt=0;let t=0,o=0;Object.keys(Game.Objects).forEach((e=>{Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&(o+=1)})),Object.keys(Game.Objects).forEach((e=>{(Game.Objects[e].amountnt&&(nt=2*Game.Objects[e].price,it=e)}))}function Zo(){let e=1,t=1,o=1;eo("Green yeast digestives")&&(o*=1.01),eo("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),lt=o*e,st=o*t,rt=1,0===Game.shimmerTypes.golden.n&&(rt*=1+1.23*Game.auraMult("Dragon's Fortune"))}function en(){ft=0,Ct=0,yt=[0,null];for(let e=0;eyt[0]&&(yt=[t,e]))}}function tn(){go(),en(),Jo(),Zo(),Qo(),Yo(),Ko(),de=new Bo(q[q.length-1]),pe=new Bo(q[q.length-1]),ue=new Bo(q[q.length-1]),me=new Bo(q[q.length-1]),he=new Bo(Y[Y.length-1]),ge=new Bo(5),qo(),Po(),_o(),Vo(),Fo()}const on={BotBar:1,TimerBar:1,TimerBarPos:0,TimerBarOverlay:2,BuildColor:1,PPDisplayTime:0,UpBarColor:1,UpgradeBarFixedPos:1,CalcWrink:0,CPSMode:1,AvgCPSHist:3,AvgClicksHist:0,PPExcludeTop:0,PPRigidelMode:0,PPSecondsLowerLimit:0,PPOnlyConsiderBuyable:0,ToolWarnBon:1,Title:1,GeneralSound:1,GCNotification:0,GCFlash:1,GCSound:1,GCVolume:100,GCSoundURL:"https://freesound.org/data/previews/66/66717_931655-lq.mp3",FortuneNotification:0,FortuneFlash:1,FortuneSound:1,FortuneVolume:100,FortuneSoundURL:"https://freesound.org/data/previews/174/174027_3242494-lq.mp3",SeaNotification:0,SeaFlash:1,SeaSound:1,SeaVolume:100,SeaSoundURL:"https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3",GardFlash:1,GardSound:1,GardVolume:100,GardSoundURL:"https://freesound.org/data/previews/103/103046_861714-lq.mp3",MagicNotification:0,MagicFlash:1,MagicSound:1,MagicVolume:100,MagicSoundURL:"https://freesound.org/data/previews/221/221683_1015240-lq.mp3",WrinklerNotification:0,WrinklerFlash:1,WrinklerSound:1,WrinklerVolume:100,WrinklerSoundURL:"https://freesound.org/data/previews/124/124186_8043-lq.mp3",WrinklerMaxNotification:0,WrinklerMaxFlash:1,WrinklerMaxSound:1,WrinklerMaxVolume:100,WrinklerMaxSoundURL:"https://freesound.org/data/previews/152/152743_15663-lq.mp3",TooltipBuildUpgrade:1,TooltipAmor:0,ToolWarnLucky:1,ToolWarnLuckyFrenzy:1,ToolWarnConjure:1,ToolWarnConjureFrenzy:1,ToolWarnEdifice:1,ToolWarnUser:0,ToolWarnPos:1,TooltipGrim:1,TooltipWrink:1,TooltipLump:1,TooltipPlots:1,TooltipPantheon:1,DragonAuraInfo:1,TooltipAscendButton:1,Stats:1,MissingUpgrades:1,UpStats:1,TimeFormat:0,DetailedTime:1,GrimoireBar:1,HeavenlyChipsTarget:1,ShowMissedGC:1,Scale:2,ScaleDecimals:2,ScaleSeparator:0,ScaleCutoff:999999,Colors:{Blue:"#4bb8f0",Green:"#00ff00",Yellow:"#ffff00",Orange:"#ff7f00",Red:"#ff0000",Purple:"#ff00ff",Gray:"#b3b3b3",Pink:"#ff1493",Brown:"#8b4513"},SortBuildings:0,SortUpgrades:0,GCTimer:1,Favicon:1,WrinklerButtons:1,HideSectionsButtons:0,BulkBuyBlock:0,Header:{BarsColors:1,Calculation:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Tooltip:1,Statistics:1,Notation:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Misc:1,InfoTab:1}},nn=function(e){if(1===e){const e=function(){try{Notification.requestPermission().then()}catch(e){return!1}return!0};"Notification"in window?e()?Notification.requestPermission().then():Notification.requestPermission():console.log("This browser does not support notifications.")}};function an(){1===e.BotBar?(l("CMBotBar").style.display="",po()):l("CMBotBar").style.display="none",mo()}function rn(){BeautifyAll(),Game.RefreshStore(),Game.RebuildUpgrades(),po(),io(),ao()}function ln(){let t="";for(let o=0;o0?Ht.wrath?l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}class cn{constructor(e,t){this.type=e,this.group=t}}class dn extends cn{constructor(e,t,o,n,i,a=null){super(e,t),this.label=o,this.desc=n,this.toggle=i,a&&(this.func=a)}}class pn extends cn{constructor(e,t,o,n){super(e,t),this.label=o,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}}class un extends cn{constructor(e,t,o,n,i,a){super(e,t),this.label=o,this.desc=n,this.min=i,this.max=a}}const mn={BotBar:new dn("bool","BarsColors",["Bottom Bar OFF","Bottom Bar ON"],"Building Information",!0,(function(){an()})),TimerBar:new dn("bool","BarsColors",["Timer Bar OFF","Timer Bar ON"],"Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(function(){ho()})),TimerBarPos:new dn("bool","BarsColors",["Timer Bar Position (Top Left)","Timer Bar Position (Bottom)"],"Placement of the Timer Bar",!1,(function(){0===e.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),mo()})),TimerBarOverlay:new dn("bool","BarsColors",["Timer Bar Overlay OFF","Timer Bar Overlay Only Seconds","Timer Bar Overlay Full"],"Overlay on timers displaying seconds and/or percentage left",!0),SortBuildings:new dn("bool","BarsColors",["Sort Buildings: Default","Sort Buildings: PP of x1 purchase","Sort Buildings: PP of selected bulk mode"],"Sort the display of buildings in either default order or by PP",!1,(function(){io()})),SortUpgrades:new dn("bool","BarsColors",["Sort Upgrades: Default","Sort Upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(function(){ao()})),BuildColor:new dn("bool","BarsColors",["Building Colors OFF","Building Colors ON"],"Color code buildings",!0,(function(){io()})),PPDisplayTime:new dn("bool","BarsColors",["PP As Value (Standard)","PP As Time Unit"],"Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.",!1),UpBarColor:new dn("bool","BarsColors",["Upgrade Colors/Bar OFF","Upgrade Colors with Bar ON","Upgrade Colors without Bar ON"],"Color code upgrades and optionally add a counter bar",!1,(function(){1===e.UpBarColor?(l("CMUpgradeBar").style.display="",ao()):2===e.UpBarColor?(l("CMUpgradeBar").style.display="none",ao()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),Colors:new class extends cn{constructor(e,t,o,n){super(e,t),this.desc=o,this.func=n}}("color","BarsColors",{Blue:"Color Blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels",Green:"Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels",Yellow:"Color Yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels",Orange:"Color Orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels",Red:"Color Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels",Purple:"Color Purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels",Gray:"Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar",Pink:"Color Pink. Used for Dragonflight bar",Brown:"Color Brown. Used for Dragon Harvest bar"},(function(){ln()})),UpgradeBarFixedPos:new dn("bool","BarsColors",["Upgrade Bar Fixed Position OFF","Upgrade Bar Fixed Position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(function(){1===e.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),CalcWrink:new dn("bool","Calculation",["Calculate with Wrinklers OFF","Calculate with Wrinklers ON","Calculate with Single Fattest Wrinkler ON"],"Calculate times and average Cookies Per Second with (only the single non-shiny fattest) Wrinklers",!0,(function(){Re=!0})),CPSMode:new dn("bool","Calculation",["Current Cookies Per Second","Average Cookies Per Second"],"Calculate times using current Cookies Per Second or average Cookies Per Second",!1),AvgCPSHist:new dn("bool","Calculation",["Average CPS for past 10s","Average CPS for past 15s","Average CPS for past 30s","Average CPS for past 1m","Average CPS for past 5m","Average CPS for past 10m","Average CPS for past 15m","Average CPS for past 30m"],"How much time average Cookies Per Second should consider",!1),AvgClicksHist:new dn("bool","Calculation",["Average Cookie Clicks for past 1s","Average Cookie Clicks for past 5s","Average Cookie Clicks for past 10s","Average Cookie Clicks for past 15s","Average Cookie Clicks for past 30s"],"How much time average Cookie Clicks should consider",!1),PPExcludeTop:new dn("bool","Calculation",["Don't Ignore Any","Ignore 1st Best","Ignore 1st and 2nd Best","Ignore 1st, 2nd and 3rd Best"],"Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPRigidelMode:new dn("bool","Calculation",["Rigidel Mode OFF","Rigidel Mode ON"],'Makes CookieMonster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',!0),PPSecondsLowerLimit:new un("numscale","Calculation","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),PPOnlyConsiderBuyable:new dn("bool","Calculation",["Don't Ignore Non-Buyable","Ignore Non-Buyable"],"Makes CookieMonster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),ToolWarnBon:new dn("bool","Calculation",["Calculate Tooltip Warning With Bonus CPS OFF","Calculate Tooltip Warning With Bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),Title:new dn("bool","NotificationGeneral",["Title OFF","Title ON","Title Pinned Tab Highlight"],'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns; "!" means that Golden Cookie/Reindeer can spawn',!0),GeneralSound:new dn("bool","NotificationGeneral",["Consider Game Volume Setting OFF","Consider Game Volume Setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new dn("bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when Golden Cookie spawns",!0,(function(){nn(e.GCNotification)})),GCFlash:new dn("bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on Golden Cookie",!0),GCSound:new dn("bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on Golden Cookie",!0),GCVolume:new pn("vol","NotificationGC",[],"Volume"),GCSoundURL:new dn("url","NotificationGC","Sound URL:","URL of the sound to be played when a Golden Cookie spawns"),FortuneNotification:new dn("bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when Fortune Cookie is on the Ticker",!0,(function(){nn(e.FortuneNotification)})),FortuneFlash:new dn("bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on Fortune Cookie",!0),FortuneSound:new dn("bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on Fortune Cookie",!0),FortuneVolume:new pn("vol","NotificationFC",[],"Volume"),FortuneSoundURL:new dn("url","NotificationFC","Sound URL:","URL of the sound to be played when the Ticker has a Fortune Cookie"),SeaNotification:new dn("bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on Season Popup",!0,(function(){nn(e.SeaNotification)})),SeaFlash:new dn("bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on Season Popup",!0),SeaSound:new dn("bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on Season Popup",!0),SeaVolume:new pn("vol","NotificationSea",[],"Volume"),SeaSoundURL:new dn("url","NotificationSea","Sound URL:","URL of the sound to be played when a Season Special spawns"),GardFlash:new dn("bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on Garden Tick",!0),GardSound:new dn("bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on Garden Tick",!0),GardVolume:new pn("vol","NotificationGard",[],"Volume"),GardSoundURL:new dn("url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new dn("bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(function(){nn(e.MagicNotification)})),MagicFlash:new dn("bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),MagicSound:new dn("bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new pn("vol","NotificationMagi",[],"Volume"),MagicSoundURL:new dn("url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new dn("bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a Wrinkler appears",!0,(function(){nn(e.WrinklerNotification)})),WrinklerFlash:new dn("bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a Wrinkler appears",!0),WrinklerSound:new dn("bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a Wrinkler appears",!0),WrinklerVolume:new pn("vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new dn("url","NotificationWrink","Sound URL:","URL of the sound to be played when a Wrinkler appears"),WrinklerMaxNotification:new dn("bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of Wrinklers has appeared",!0,(function(){nn(e.WrinklerMaxNotification)})),WrinklerMaxFlash:new dn("bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxSound:new dn("bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxVolume:new pn("vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new dn("url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of Wrinklers has appeared"),TooltipBuildUpgrade:new dn("bool","Tooltip",["Building/Upgrade Tooltip Information OFF","Building/Upgrade Tooltip Information ON"],"Extra information in Building/Upgrade tooltips",!0),TooltipAmor:new dn("bool","Tooltip",["Buildings Tooltip Amortization Information OFF","Buildings Tooltip Amortization Information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new dn("bool","Tooltip",["Tooltip Lucky Warning OFF","Tooltip Lucky Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new dn("bool","Tooltip",["Tooltip Lucky Frenzy Warning OFF","Tooltip Lucky Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new dn("bool","Tooltip",["Tooltip Conjure Warning OFF","Tooltip Conjure Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new dn("bool","Tooltip",["Tooltip Conjure Frenzy Warning OFF","Tooltip Conjure Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new dn("bool","Tooltip",["Tooltip Edifice Warning OFF","Tooltip Edifice Warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new un("numscale","Tooltip","Tooltip Warning At x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnPos:new dn("bool","Tooltip",["Tooltip Warning Position (Left)","Tooltip Warning Position (Bottom)"],"Placement of the warning boxes",!1,(function(){To()})),TooltipGrim:new dn("bool","Tooltip",["Grimoire Tooltip Information OFF","Grimoire Tooltip Information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new dn("bool","Tooltip",["Wrinkler Tooltip OFF","Wrinkler Tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new dn("bool","Tooltip",["Sugar Lump Tooltip OFF","Sugar Lump Tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new dn("bool","Tooltip",["Garden Plots Tooltip OFF","Garden Plots Tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipPantheon:new dn("bool","Tooltip",["Show Extra Info Pantheon Tooltip OFF","Show Extra Info Pantheon Tooltip ON"],"Shows additional info in the pantheon tooltip",!0),DragonAuraInfo:new dn("bool","Tooltip",["Extra Dragon Aura Info OFF","Extra Dragon Aura Info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),TooltipAscendButton:new dn("bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new dn("bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new dn("bool","Statistics",["Missing Upgrades OFF","Missing Upgrades ON"],"Shows Missing upgrades in Stats Menu. This feature can be laggy for users with a low amount of unlocked achievements.",!0),UpStats:new dn("bool","Statistics",["Statistics Update Rate (Default)","Statistics Update Rate (1s)"],"Default Game rate is once every 5 seconds",!1),TimeFormat:new dn("bool","Statistics",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX"],"Change the time format",!1),DetailedTime:new dn("bool","Statistics",["Detailed Time OFF","Detailed Time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(function(){1===e.DetailedTime?Game.sayTime=$:Game.sayTime=M.sayTime})),GrimoireBar:new dn("bool","Statistics",["Grimoire Magic Meter Timer OFF","Grimoire Magic Meter Timer ON"],"A timer on how long before the Grimoire magic meter is full",!0),HeavenlyChipsTarget:new un("numscale","Statistics","Heavenly Chips Target: ",'Use this to set a Heavenly Chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new dn("bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many Golden Cookies you have missed",!0),Scale:new dn("bool","Notation",["Game's Setting Scale","Metric","Short Scale","Short Scale (Abbreviated)","Scientific Notation","Engineering Notation"],"Change how long numbers are handled",!1,(function(){rn()})),ScaleDecimals:new dn("bool","Notation",["1 decimals","2 decimals","3 decimals"],'Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game\'s Setting Scale"',!1,(function(){rn()})),ScaleSeparator:new dn("bool","Notation",[". for decimals (Standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(function(){rn()})),ScaleCutoff:new un("numscale","Notation","Notation Cut-off Point: ","The number from which CookieMonster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),GCTimer:new dn("bool","Miscellaneous",["Golden Cookie Timer OFF","Golden Cookie Timer ON"],"A timer on the Golden Cookie when it has been spawned",!0,(function(){1===e.GCTimer?Object.keys(ae).forEach((e=>{ae[e].style.display="block",ae[e].style.left=Vt[e].l.style.left,ae[e].style.top=Vt[e].l.style.top})):Object.keys(ae).forEach((e=>ae[e].style.display="none"))})),Favicon:new dn("bool","Miscellaneous",["Favicon OFF","Favicon ON"],"Update favicon with Golden/Wrath Cookie",!0,(function(){sn()})),WrinklerButtons:new dn("bool","Miscellaneous",["Extra Wrinkler Buttons OFF","Extra Wrinkler Buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(function(){e.WrinklerButtons?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")})),HideSectionsButtons:new dn("bool","Miscellaneous",["Hide Upgrades/Buildings Button OFF","Hide Upgrades/Buildings Button ON"],"Show buttons for hiding and showing the upgrades and buildings section in the right column",!0,(function(){e.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),BulkBuyBlock:new dn("bool","Miscellaneous",["Block Bulk Buying OFF","Block Bulk Buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0)};function hn(){return JSON.stringify({settings:e,version:"2.031.6"})}function gn(){if(Xe!==Game.dragonLevel||Re){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const t=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount{if(e=n,Game.Objects[e].amount{Qt[e]=yo(e)})),qt=[],Object.keys(Game.Upgrades).forEach((e=>{qt[e]=bo(e)})),Yt=[],Object.keys(Game.Achievements).forEach((e=>{Yt[e]=fo(e)})),ko()}let yn=!1;function bn(t,o){1===e[o]&&3===t&&!1===yn||1===t?(l("CMWhiteScreen").style.opacity="0.5",3===t?(l("CMWhiteScreen").style.display="inline",setTimeout((function(){bn(2,o)}),1e3/Game.fps)):setTimeout((function(){bn(0,o)}),1e3/Game.fps)):2===t?(l("CMWhiteScreen").style.opacity="1",setTimeout((function(){bn(1,o)}),1e3/Game.fps)):0===t&&(l("CMWhiteScreen").style.display="none")}function kn(t,o,n,i){if((1===e[o]||i)&&!1===yn){const o=new Audio(t);e.GeneralSound?o.volume=e[n]/100*(Game.volume/100):o.volume=e[n]/100,o.play()}}function Gn(t,o,n){1===e[t]&&"hidden"===document.visibilityState&&!1===yn&&new Notification(o,{body:n,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})}function vn(){if(ne!==Game.OnAscend&&(ne=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===e.BotBar&&(l("CMBotBar").style.display="none"),1===e.TimerBar&&(l("CMTimerBar").style.display="none")):(an(),ho()),uo()),!Game.OnAscend&&0===Game.AscendTimer){a!==Object.keys(Game.mods).length&&(Cn(),tn(),a=Object.keys(Game.mods).length),Re&&(_o(),Game.Has("Golden switch [off]")?(ko(),qt["Golden switch [off]"].bought=0,Ao(),at=Ie):at=Game.cookiesPs,Zo(),Jo(),Yo(),Qo(),gn(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)Xt[e][t]=fn(e,t)}(),Ko(),function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const t=Game.Objects.Bank.minigame.goods;let o=0;Object.keys(t).forEach((e=>{const n=t[e];o+=n.stock*n.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;ko();let t=2;5!==Ae&&18!==Ae||(t-=1),5!==je&&18!==je||(t-=1),Ae=5,je=18;for(let e=0;e{Qt[t].amount>0&&(e=t)})),Qt[e].amount-=1,Ee-=1}return Object.keys(Qt).forEach((t=>{const o=Qt[t];e+=no(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),_t=e}(),Re=0);const t=Game.auraMult("Fierce Hoarder")>0;!Pe&&t?(Pe=!0,Be=1):Pe&&!t&&(Pe=!1,Be=1),Be&&(Vo(),Be=0),function(){en(),Fo(),function(){bt=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Qt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}kt=e,bt=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t}(),Po(),qo();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);$t=se(e/ro())}(),k=0,Vt={},Object.keys(Game.shimmers).forEach((e=>{Vt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(Ht=Game.shimmers[e],k+=1)})),Object.keys(ae).forEach((e=>{void 0===Vt[e]&&(ae[e].parentNode.removeChild(ae[e]),delete ae[e])})),C!==Game.shimmerTypes.golden.n?(C=Game.shimmerTypes.golden.n,C&&(y{void 0===ae[Game.shimmers[t].id]&&function(t){const o=document.createElement("div");o.id=`GCTimer${t.id}`,o.style.width="96px",o.style.height="96px",o.style.position="absolute",o.style.zIndex="10000000001",o.style.textAlign="center",o.style.lineHeight="96px",o.style.fontFamily='"Kavoon", Georgia, serif',o.style.fontSize="35px",o.style.cursor="pointer",o.style.display="block",0===e.GCTimer&&(o.style.display="none"),o.style.left=t.l.style.left,o.style.top=t.l.style.top,o.onclick=function(){t.pop()},o.onmouseover=function(){t.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",t.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},o.onmouseout=function(){t.l.style.filter="",t.l.style.webkitFilter=""},ae[t.id]=o,l("shimmers").appendChild(o)}(Game.shimmers[t])}))),sn(),y=k,0===k&&(Ht=0)):1===e.GCTimer&&C&&Object.keys(ae).forEach((e=>{ae[e].style.opacity=Vt[e].l.style.opacity,ae[e].style.transform=Vt[e].l.style.transform,ae[e].textContent=Math.ceil(Vt[e].life/Game.fps)})),g!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(g=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,g&&(bn(3,"FortuneFlash"),kn(e.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),Gn("FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),h!==Game.shimmerTypes.reindeer.spawned&&(h=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(Rt=Game.shimmers[e])})),bn(3,"SeaFlash"),kn(e.SeaSoundURL,"SeaSound","SeaVolume",!1),Gn("SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!")),Game.Objects.Farm.minigameLoaded&&f!==Game.Objects.Farm.minigame.nextStep&&(0!==f&&f0){let t=0;Object.keys(Game.wrinklers).forEach((e=>{2===Game.wrinklers[e].phase&&(t+=1)})),t>G?(G=t,t===Game.getWrinklersMax()&&e.WrinklerMaxFlash?bn(3,"WrinklerMaxFlash"):bn(3,"WrinklerFlash"),t===Game.getWrinklersMax()&&e.WrinklerMaxSound?kn(e.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):kn(e.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),t===Game.getWrinklersMax()&&e.WrinklerMaxNotification?Gn("WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):Gn("WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):G=t}}()}}function wn(){const e=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),t=e.match(/CookieMonster.*(;|$)/);if(null!==t){const o=e.replace(t[0],`CookieMonster:${hn()}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(o)}!END!`))}}function xn(t){if(void 0!==localStorage.CMConfig&&delete localStorage.CMConfig,void 0!==t){e=t;let o=!1;Object.keys(on).forEach((t=>{void 0===e[t]?(o=!0,e[t]=on[t]):"Header"!==t&&"Colors"!==t?-1===t.indexOf("SoundURL")?e[t]>-1&&e[t]{void 0!==e[t][n]&&e[t][n]>-1&&e[t][n]<2||(o=!0,e[t][n]=on[t][n])})):Object.keys(on.Colors).forEach((n=>{void 0!==e[t][n]&&"string"==typeof e[t][n]||(o=!0,e[t][n]=on[t][n])}))})),o&&wn(),vn(),Object.keys(on).forEach((e=>{"Header"!==e&&void 0!==mn[e].func&&mn[e].func()}))}else xn(on)}function Tn(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Mn(t,o){if("b"===t){if(l("tooltip").innerHTML=Game.Objects[o].tooltip(),1===e.TooltipAmor){const e=Wo(Game.Objects[o],Game.Objects[o].basePrice,0,Game.Objects[o].free,Game.Objects[o].amount),t=e-Game.Objects[o].totalCookies;t>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${le(t)} ${1===Math.floor(t)?"cookie":"cookies"} left to amortize (${ce((e-Game.Objects[o].totalCookies)/(Game.Objects[o].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(le(Game.Objects[o].bulkPrice)).join(le((Game.Objects[o],Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Game.buyBulk,1))))}else if("u"===t){if(!Game.UpgradesInStore[o])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[o],"store")}else"s"===t?l("tooltip").innerHTML=Game.lumpTooltip():"g"===t?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(o)():"p"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(o[0],o[1])():"ha"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"wb"===t?l("tooltip").innerHTML="":"pag"===t?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(o)():"pas"===t&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(o[0])());if("b"===t&&1===Game.buyMode||"u"===t||"s"===t||"g"===t||"p"===t&&!Game.keys[16]||"ha"===t||"wb"===t||"pag"===t||"pas"===t&&-1!==o[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return ee=t,te=o,Mo(),l("tooltip").innerHTML}function Sn(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(x[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("g",`${e}`)}),"this"),Game.tooltip.wobble()})}))}function Bn(){if(!u&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:t}=Game.Objects["Wizard tower"];d=t.draw,Game.Objects["Wizard tower"].minigame.draw=function(){d(),1===e.GrimoireBar&&t.magic1&&(e.Header[t]=0),wn()}function Ln(t,o){const n=document.createElement("div");n.className="title",n.style.padding="0px 16px",n.style.opacity="0.7",n.style.fontSize="17px",n.style.fontFamily='"Kavoon", Georgia, serif',n.appendChild(document.createTextNode(`${t} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[o]?"-":"+",i.onclick=function(){Wn(o),Game.UpdateMenu()},n.appendChild(i),n}function An(e,t,o,n){const i=document.createElement("div");i.className="listing";const a=document.createElement("b");if(a.textContent=t,i.appendChild(a),"withTooltip"===e){i.className="listing",i.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(H[n].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",i.appendChild(e)}return i.appendChild(document.createTextNode(": ")),i.appendChild(o),i}function jn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const n=document.createElement("div"),i=document.createElement("div");i.style.minWidth="140px",i.style.marginBottom="4px";const a=document.createElement("div");return a.className="name",a.style.marginBottom="4px",a.style.textAlign="center",a.textContent="Missing",i.appendChild(a),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),i.appendChild(o)})),n.appendChild(i),o.onmouseover=function(){Game.tooltip.draw(this,escape(n.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Un(t){const o=document.createElement("div");if(o.className="subsection",o.appendChild(t),o.appendChild(Ln("Lucky Cookies","Lucky")),e.Header.Lucky&&o.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+lo()0&&(t.appendChild(An("basic","Heavenly Chips To Target Set In Settings (CUR)",document.createTextNode(le(e)))),t.appendChild(An("basic","Time To Target (CUR, Current 5 Second Average)",document.createTextNode(se(e/ct)))))}const l=function(e){let t=Game.cookiesPs;ko(),0===qt["Heavenly key"].bought&&(qt["Heavenly chip secret"].bought=1,qt["Heavenly cookie stand"].bought=1,qt["Heavenly bakery"].bought=1,qt["Heavenly confectionery"].bought=1,qt["Heavenly key"].bought=1,Ao(),t=Ie,ko()),Ut>=1e6&&Lo("Sacrifice"),Ut>=1e9&&Lo("Oblivion"),Ut>=1e12&&Lo("From scratch"),Ut>=1e15&&Lo("Nihilism"),Ut>=1e18&&Lo("Dematerialize"),Ut>=1e21&&Lo("Nil zero zilch"),Ut>=1e24&&Lo("Transcendence"),Ut>=1e27&&Lo("Obliterate"),Ut>=1e30&&Lo("Negative void"),Ut>=1e33&&Lo("To crumbs, you say?"),Ut>=1e36&&Lo("You get nothing"),Ut>=1e39&&Lo("Humble rebeginnings"),Ut>=1e42&&Lo("The end of the world"),Ut>=1e45&&Lo("Oh, you're back"),Ut>=1e48&&Lo("Lazarus"),Ut>=1e51&&Lo("Smurf account"),Ut>=1e54&&Lo("If at first you don't succeed"),qt["Heavenly chip secret"].bought=1,qt["Heavenly cookie stand"].bought=1,qt["Heavenly bakery"].bought=1,qt["Heavenly confectionery"].bought=1,qt["Heavenly key"].bought=1,Le=e;const o=Fe;Ao(),Io(),o!==Fe&&Ao();const n=Ie-t;return Le=Game.prestige,n}(o),s=document.createDocumentFragment();s.appendChild(document.createTextNode(le(l)));const c=Math.round(l/Game.cookiesPs*1e4);if(Number.isFinite(c)&&0!==c){const e=document.createElement("small");e.textContent=` (${c/100}% of income)`,s.appendChild(e)}t.appendChild(An("withTooltip","Reset Bonus Income",s,"ResetTooltipPlaceholder"));const d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),p=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),u=p-d;if(!Game.Has("Lucky digit")){let e=7-p%10;e<0&&(e+=10);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(An("basic",'Next "Lucky Digit" (total / reset)',i))}if(!Game.Has("Lucky number")){let e=777-p%1e3;e<0&&(e+=1e3);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(An("basic",'Next "Lucky Number" (total / reset)',i))}if(!Game.Has("Lucky payout")){let e=777777-p%1e6;e<0&&(e+=1e6);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(An("basic",'Next "Lucky Payout" (total / reset)',i))}return t}()),Game.cpsSucked>0&&(o.appendChild(Ln("Wrinklers","Wrink")),e.Header.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${le(ft)} / ${le(Ct)} `));const t=document.createElement("a");t.textContent="Pop All Normal",t.className="option",t.onclick=function(){Tn()},e.appendChild(t),o.appendChild(An("basic","Rewards of Popping (All/Normal)",e));const n=document.createDocumentFragment();n.appendChild(document.createTextNode(`${le(yt[0])} `));const i=document.createElement("a");i.textContent="Pop Single Fattest",i.className="option",i.onclick=function(){null!==yt[1]&&(Game.wrinklers[yt[1]].hp=0)},n.appendChild(i),o.appendChild(An("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==yt[1]?yt[1]:"None"})`,n))}if(o.appendChild(function(){const t=document.createElement("div");t.className="CMStatsSeasonSection";let o=!1;const n=[];Object.keys(Uo).forEach((e=>{Game.Has(Uo[e])||(n.push(Uo[e]),o=!0)}));const i=[];Object.keys(Do).forEach((e=>{Game.Has(Do[e])||(i.push(Do[e]),o=!0)}));const a=[];Object.keys(Ho).forEach((e=>{Game.Has(Ho[e])||(a.push(Ho[e]),o=!0)}));const r=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(r.push(Game.eggDrops[e]),o=!0)}));const l=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(l.push(Game.rareEggDrops[e]),o=!0)}));const s=[];Object.keys(Ro).forEach((e=>{Game.HasUnlocked(Ro[e])||(s.push(Ro[e]),o=!0)}));const c=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),d=Game.Has("Century egg");if(("christmas"===Game.season||o||c||d)&&(t.appendChild(Ln("Season Specials","Sea")),e.Header.Sea)){if(0!==n.length){t.appendChild(An("basic","Halloween cookies left to buy",jn(n)));let e=.95;if(Game.HasAchiev("Spooky cookies")&&(e=.8),Game.Has("Starterror")&&(e*=.9),e*=1/Game.dropRateMult(),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}t.appendChild(An("basic","Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${le(100*(1-e))}% / ${le(100*(1-.9*e))}%`)))}if(0!==i.length){t.appendChild(An("basic","Christmas cookies left to buy",jn(i)));let e=.8;if(Game.HasAchiev("Let it snow")&&(e=.6),e*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(e*=.95),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}t.appendChild(An("basic","Chance of receiving a cookie from reindeer",document.createTextNode(`${le(100*(1-e))}%`)))}0!==a.length&&t.appendChild(An("basic","Valentine cookies left to buy",jn(a)));const e=function(e){let t=e*(1/Game.dropRateMult());if(Game.HasAchiev("Hide & seek champion")&&(t*=.7),Game.Has("Omelette")&&(t*=.9),Game.Has("Starspawn")&&(t*=.9),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=1-t,n=Game.eggDrops.length-r.length,i=Game.rareEggDrops.length-l.length,a=.9*o*(1-n/Game.eggDrops.length),s=.1*o*(1-i/Game.rareEggDrops.length),c=.9*o*(n/Game.eggDrops.length)+.1*o*(i/Game.rareEggDrops.length);return[a+.9*c*(1-n/Game.eggDrops.length),s+.1*c*(1-i/Game.rareEggDrops.length)]};0!==r.length&&(t.appendChild(An("basic","Normal easter eggs left to unlock",jn(r))),t.appendChild(An("basic","Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${le(100*e(.98)[0])}% / ${le(100*e(.9)[0])}%`)))),0!==l.length&&(t.appendChild(An("basic","Rare easter eggs left to unlock",jn(l))),t.appendChild(An("basic","Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${le(100*e(.98)[1])}% / ${le(100*e(.9)[1])}%`)))),0!==s.length&&t.appendChild(An("basic","Rare plant drops left to unlock",jn(s))),"christmas"===Game.season&&t.appendChild(An("basic","Reindeer reward",document.createTextNode(le(pt)))),c&&t.appendChild(An("withTooltip","Chocolate egg cookies",document.createTextNode(le(ut)),"ChoEggTooltipPlaceholder")),d&&t.appendChild(An("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(dt-1))/100+"%")))}return t}()),o.appendChild(Ln("Miscellaneous","Misc")),e.Header.Misc){if(o.appendChild(An("basic",`Average Cookies Per Second (Past ${q[e.AvgCPSHist]<60?`${q[e.AvgCPSHist]} seconds`:q[e.AvgCPSHist]/60+(3===e.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(le(ro(),3)))),o.appendChild(An("basic",`Average Cookie Clicks Per Second (Past ${Y[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(le(vt,1)))),Game.Has("Fortune cookies")){const e=[];Object.keys(jo).forEach((t=>{Game.Has(jo[t])||e.push(jo[t])})),0!==e.length&&o.appendChild(An("basic","Fortune Upgrades Left to Buy",jn(e)))}if(e.ShowMissedGC&&o.appendChild(An("basic","Missed Golden Cookies",document.createTextNode(le(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),o.appendChild(An("basic","Time till autosave",e))}}l("menu").insertBefore(o,l("menu").childNodes[2]),e.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&xt){const t=xt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=xt,e.appendChild(i)}else if("Upgrades"===e.children[0].innerHTML){if(wt){const t=wt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(n),e.insertBefore(o,e.childNodes[3]);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=wt,e.insertBefore(i,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Tt){const t=Tt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Tt,e.appendChild(i)}}}))}const Dn={BarsColors:"Bars/Colors",Calculation:"Calculation",Notification:"Notification",Tooltip:"Tooltips and additional insights",Statistics:"Statistics",Notation:"Notation",Miscellaneous:"Miscellaneous"},Hn={NotificationGeneral:"General Notifications",NotificationGC:"Golden Cookie",NotificationFC:"Fortune Cookie",NotificationSea:"Season Special",NotificationGard:"Garden Tick",NotificationMagi:"Full Magic Bar",NotificationWrink:"Wrinkler",NotificationWrinkMax:"Maximum Wrinklers"};function Rn(t,o){const n=document.createElement("div");n.className="title",n.style.opacity="0.7",n.style.fontSize="17px",n.appendChild(document.createTextNode(`${o} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[t]?"-":"+",i.onclick=function(){Wn(t),Game.UpdateMenu()},n.appendChild(i),n}function $n(t){const o=document.createElement("div");if(o.className="listing","bool"===mn[t].type){const n=document.createElement("a");mn[t].toggle&&0===e[t]?n.className="option off":n.className="option",n.id=On+t,n.onclick=function(){!function(t){e[t]+=1,e[t]===mn[t].label.length?(e[t]=0,mn[t].toggle&&(l(On+t).className="option off")):l(On+t).className="option",void 0!==mn[t].func&&mn[t].func(),l(On+t).innerHTML=mn[t].label[e[t]],wn()}(t)},n.textContent=mn[t].label[e[t]],o.appendChild(n);const i=document.createElement("label");return i.textContent=mn[t].desc,o.appendChild(i),o}if("vol"===mn[t].type){const n=document.createElement("div");n.className="sliderBox";const i=document.createElement("div");i.style.float="left",i.innerHTML=mn[t].desc,n.appendChild(i);const a=document.createElement("div");a.id=`slider${t}right`,a.style.float="right",a.innerHTML=`${e[t]}%`,n.appendChild(a);const r=document.createElement("input");r.className="slider",r.id=`slider${t}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=e[t],r.oninput=function(){Fn(t)},r.onchange=function(){Fn(t)},n.appendChild(r),o.appendChild(n);const l=document.createElement("a");return l.className="option",l.onclick=function(){kn(e[t.replace("Volume","SoundURL")],t.replace("Volume","Sound"),t,!0)},l.textContent="Test sound",o.appendChild(l),o}if("url"===mn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${mn[t].label} `,o.appendChild(n);const i=document.createElement("input");i.id=On+t,i.className="option",i.type="text",i.readOnly=!0,i.setAttribute("value",e[t]),i.style.width="300px",o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("input");a.id=`${On+t}Prompt`,a.className="option",a.type="text",a.setAttribute("value",e[t]);const r=document.createElement("a");r.className="option",r.onclick=function(){Game.Prompt(a.outerHTML,[["Save",function(){e[`${t}`]=l(`CMConfig${t}Prompt`).value,wn(),Game.ClosePrompt(),Game.UpdateMenu()}],"Cancel"])},r.textContent="Edit",o.appendChild(r);const s=document.createElement("label");return s.textContent=mn[t].desc,o.appendChild(s),o}if("color"===mn[t].type){o.className="";for(let t=0;tthis.max&&console.log("TEST"),e[t]=this.value,wn(),rn()},o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("label");return a.textContent=mn[t].desc,o.appendChild(a),o}return o}function In(t){if(1===e.TimerBar&&0===e.TimerBarPos){const e=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=e,t(),Game.mouseY+=e}else t()}function zn(){M.Beautify=Beautify,Beautify=le,M.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){M.CalculateGains(),Re=1},M.tooltip={},M.tooltip.draw=Game.tooltip.draw,M.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){M.tooltip.drawMod(e,t,o)},M.tooltip.update=Game.tooltip.update,M.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){M.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let t=0;1===e.ToolWarnLucky&&1===e.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(t=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-t-46)}px`}}()},M.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){In(M.UpdateWrinklers)},M.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){In(M.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(function(){In(Game.ClickCookie)}),!1),M.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){M.RebuildUpgrades(),T=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(T[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("u",`${e}`)}),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},M.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(t){(!e.BulkBuyBlock||Game.ObjectsById[t].bulkPrice-1;--e)if(Game.ObjectsById[e-1].amount>0){const o=Qt[Game.ObjectsById[e].name].name;Qt[o].amount-=1,Ee-=1,t=Qt[o].basePrice*Game.priceIncrease**Math.max(0,Qt[o].amount-1-Qt[o].free),t=Game.modifyBuildingPrice(Qt[o],t),t=Math.ceil(t);break}const o=Fe;return Ao(),Io(),o!==Fe&&Ao(),[Ie-Game.cookiesPs,t]}(t),n=se(o/(e+Game.cookiesPs)),i=le(e/Game.cookiesPs);l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const a=document.createElement("div");a.style.minWidth="200px",a.style.textAlign="center",a.textContent=`Picking this aura will change CPS by ${le(e)} (${i}% of current CPS).`,l("dragonAuraInfo").appendChild(a);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${n} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(t)},M.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){M.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${Qe}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},M.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==Nn().picker&&void 0!==Nn().picker.owner||(M.UpdateMenu(),function(){const t=document.createElement("div");t.className="title","prefs"===Game.onMenu?(t.textContent="Cookie Monster Settings",function(t){const o=document.createDocumentFragment();o.appendChild(t),Object.keys(Dn).forEach((t=>{const n=Rn(t,Dn[t]);o.appendChild(n),e.Header[t]&&("Notification"===t?Object.keys(Hn).forEach((t=>{const n=Rn(t,Hn[t]);n.style.fontSize="15px",n.style.opacity="0.5",o.appendChild(n),e.Header[t]&&Object.keys(mn).forEach((e=>{mn[e].group===t&&o.appendChild($n(e))}))})):Object.keys(mn).forEach((e=>{mn[e].group===t&&o.appendChild($n(e))})))}));const n=document.createElement("div");n.className="listing";const i=document.createElement("a");i.className="option",i.onclick=function(){xn(on)},i.textContent="Restore Default",n.appendChild(i),o.appendChild(n),l("menu").childNodes[2].insertBefore(o,l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}(t)):"stats"===Game.onMenu?e.Stats&&(t.textContent="Cookie Monster Statistics",Un(t)):"log"===Game.onMenu&&(t.textContent="Cookie Monster ",function(t){const o=document.createElement("div");o.className="subsection";const n=document.createElement("span");if(n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=e.Header.InfoTab?"-":"+",n.onclick=function(){Wn("InfoTab"),Game.UpdateMenu()},t.appendChild(n),o.appendChild(t),e.Header.InfoTab){const e=document.createElement("div");e.innerHTML='
\n Cookie Monster\n offers a wide range of tools and statistics to enhance your game experience.\n It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
\n Progess on new updates and all previous release notes can be found on the GitHub page linked above!
\n Please also report any bugs you may find over there!
\n
\n ',o.appendChild(e);const t=document.createElement("div");t.innerHTML='
\nThe latest update (v 2.031.6) has revamped the way PP is colourcoded. In the previous versions this was not always correct and we had some settings that made it even more incorrect. With this update Cookie Monster compares the PP of a building to all other possibilities (also buying 10 or 100) of a building and colors the PP accordingly.
\nThis means that if it is better to buy 10 of a building immediately rather than to buy in increments of 1 Cookie Monster will now show this! In this case the buy 1 option will be yellow, while the buy 10 option will be green.
\nThis also means that you will see some more diverse colors. Rather than coloring according to arbitrary "middle values" Cookie Monster now uses a top 10, 20 and 30. While this might take some getting used to we believe the new system is much better in conveying useful information to the user while also being more correct!
\n
\nThis update also implements the following functions:
\n- Added a tooltip displaying the reward to the extra pop wrinkler buttons
\n- Added tooltips to the Gods in the Pantheon
\n- The tooltip for Elder Pledge now displays correctly, although it takes some time to load after Cookie Monster has been loaded
\n- You can now test the volume and sound of notifications in the settings screen
\n- The bottom bar will now flicker less and each column has received a bit of padding
\n- Introduced new colour scheme for PP, see the explanation of colors in the Readme or the settings
\n- Added option to show buttons that can hide the upgrade and building section
\n- Added option to display PP as a time unit, note that these are only approximations. PP does not translate directly into time (the name is deceptive, we know...)
\n- Statistics page now shows chance for random drops when they have not been achieved
\n- In a later hotfix we have added a Rigidel mode that will colour all buy 1 options grey
\n
\nThis update fixes the following bugs:
\n- Incorrect amount for "required for max plant reward" in statistics page
\n- Fixed the tooltips of the \'?\' buttons in the statistics page not showing
\n- Fixed some unclear settings descriptions
\n
\nPlease submit any bug reports or feature requests to the GitHub page!\n
\n
\n',o.appendChild(t)}const i=l("menu").children[1];i.insertBefore(o,i.children[1])}(t))}())},M.sayTime=Game.sayTime,$=function(e,t){return Number.isNaN(e)||e<=0?M.sayTime(e,t):se(e/Game.fps,1)},M.Logic=Game.Logic,Game.Logic=function(){M.Logic();let t="Cookie Clicker";"fools"===Game.season&&(t="Cookie Baker"),re=`${Game.OnAscend?"Ascending! ":""}${le(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${t}`,function(){if(Game.OnAscend||0===e.Title)document.title=re;else if(1===e.Title){let e,t,o,n=!1,i=!1;e=Ht?Ht.wrath?`[W${Math.ceil(Ht.life/Game.fps)}]`:`[G${Math.ceil(Ht.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,g&&(n=!0,t="[F]"),"christmas"===Game.season&&(i=!0,o=h?`[R${Math.ceil(Rt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let a=re;"["===a.charAt(0)&&(a=a.substring(a.lastIndexOf("]")+1)),document.title=`${e+(n?t:"")+(i?o:"")} ${a}`}else if(2===e.Title){let e="",t=!1;Ht&&(t=!0,Ht.wrath?e+=`[W${Math.ceil(Ht.life/Game.fps)}]`:e+=`[G${Math.ceil(Ht.life/Game.fps)}]`),g&&(t=!0,e+="[F]"),"christmas"===Game.season&&h&&(e+=`[R${Math.ceil(Rt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const t=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),o=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let n="";n+=`You've been on this run for ${""===o?"not very long":o}.
`,n+='
',Game.prestige>0&&(n+=`Your prestige level is currently ${le(Game.prestige)}.
(CpS +${le(Game.prestige)}%)`,n+='
'),n+=Se<1?"Ascending now would grant you no prestige.":Se<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${le(Se)} prestige levels (+${le(Se)}% CpS)
and ${le(Se)} heavenly chips to spend.`,n+='
',n+=`You need ${le(t)} more cookies for the next level.
`,n+=e.TooltipAscendButton?`
It takes ${$t} to reach the next level and you are making ${le(ct,2)} chips on average in the last 5 seconds.
`:"",l("ascendTooltip").innerHTML=n}()}}function Vn(){Cn(),Jo(),tn(),a=Object.keys(Game.mods).length,v=document.createElement("style"),v.type="text/css",v.id="CMCSS",document.head.appendChild(v),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColor="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),n=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=S+t,o.textContent=e,o},i=o.appendChild(document.createElement("tr"));i.style.fontWeight="bold",i.appendChild(n("CM 2.031.6",N)),o.appendChild(document.createElement("tr")).appendChild(n("Bonus Income",P)),o.appendChild(document.createElement("tr")).appendChild(n("Payback Period",P)),o.appendChild(document.createElement("tr")).appendChild(n("Time Left",P)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{co(e)}))}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColor="black";const t=so("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",color:L},{id:"CMTimerBarGCBar",color:W}]);e.appendChild(t);const o=so("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",color:L},{id:"CMTimerBarRenBar",color:O}]);e.appendChild(o);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColor="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const n=document.createElement("span");return n.className=B+e,n.style.display="inline-block",n.style.height="10px",n.style.width="10px",n.style.marginRight="4px",o.appendChild(n),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(P,"Better than the best PP of a building option")),e.appendChild(o(E,"Same as the best PP building option")),e.appendChild(o(N,"Within the top 10 of PP for buildings")),e.appendChild(o(O,"Within the top 20 of PP for buildings")),e.appendChild(o(F,"Within the top 30 of PP for buildings")),e.appendChild(o(W,"Outside of the top 30 of PP for buildings")),e.appendChild(o(L,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=S+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",P)),e.appendChild(o("CMUpgradeBarGreen",E)),e.appendChild(o("CMUpgradeBarYellow",N)),e.appendChild(o("CMUpgradeBarOrange",O)),e.appendChild(o("CMUpgradeBarRed",F)),e.appendChild(o("CMUpgradeBarPurple",W)),e.appendChild(o("CMUpgradeBarGray",L)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMWhiteScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMSectionHidButtons",e.style.textAlign="center";const t=document.createElement("a");t.className="option",t.onclick=function(){"flex"===l("upgrades").style.display?(l("upgrades").style.display="none",l("toggleUpgrades").style.display="none",l("techUpgrades").style.display="none",l("vaultUpgrades").style.display="none"):(l("upgrades").style.display="flex",0!==l("toggleUpgrades").children.length&&(l("toggleUpgrades").style.display="block"),0!==l("techUpgrades").children.length&&(l("techUpgrades").style.display="block"),0!==l("vaultUpgrades").children.length&&(l("vaultUpgrades").style.display="block"))},t.textContent="Hide/Show Upgrades",e.appendChild(t);const o=document.createElement("a");o.className="option",o.onclick=function(){"grid"===l("products").style.display?l("products").style.display="none":l("products").style.display="grid"},o.textContent="Hide/Show Buildings",e.appendChild(o),l("store").insertBefore(e,l("store").childNodes[2])}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}(),Object.keys(D).forEach((e=>{!function(e,t,o){const n=document.createElement("div");n.id=e;const i=document.createElement("div");i.style.minWidth=o,i.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="left",a.textContent=t,i.appendChild(a),n.appendChild(i),H[e]=n}(D[e][0],D[e][1],D[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){Tn()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("wb","PopAll")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==yt[1]&&(Game.wrinklers[yt[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("wb","PopFattest")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(w[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("b",`${e}`)}),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(r=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("s","Lump")}),"this"),Game.tooltip.wobble()}),m=Game.LoadMinigames,Game.LoadMinigames=function(){m(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("ha","HarvestAllButton")}),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("p",[`${t[0]}`,`${t[2]}`])}),"this"),Game.tooltip.wobble()}}))),Sn(),function(){if(Game.Objects.Temple.minigameLoaded){for(let e=0;e<11;e+=1)l(`templeGod${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("pag",e)}),"this"),Game.tooltip.wobble()};for(let e=0;e<3;e+=1)l(`templeSlot${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("pas",[e,Game.Objects.Temple.minigame.slot[e]])}),"this"),Game.tooltip.wobble()}}}(),Pn()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){I=1},l("backgroundLeftCanvas").onmouseout=function(){I=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{V[e]=0}))},zn(),Pn(),Game.CalculateGains(),xn(),R=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.031.6 loaded!"):Game.Notify("Cookie Monster version 2.031.6 loaded!","","",1,1),Game.Win("Third-party")}const _n={init:function(){yn=!0;let e=!0;Game.version!==Number("2.031")&&(e=confirm("Cookie Monster version 2.031.6 is meant for Game version 2.031. Loading a different version may cause errors. Do you still want to load Cookie Monster?")),e&&(Vn(),Game.registerHook("draw",So),Game.registerHook("logic",vn),yn=!1)},load:function(e){const t=JSON.parse(e);Cn(),xn(t.settings),"2.031.6"!==t.version&&(Game.prefs.popups?Game.Popup("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!"):Game.Notify("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!","","",0,1))},save:hn};Game.registerMod("CookieMonster",_n)})()})(); +(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,n,i,a=((i={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",i.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?i.node(o):e.document))throw new Error("Missing root node");for(var n=o.querySelectorAll(t),a=new RegExp("(^|\\s)("+i.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(i.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(n=e.document.createElement("input"),!(!n.setAttribute||(n.setAttribute("type","color"),"color"!=n.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={},o=arguments[2];return t[a=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={};var n=arguments[1];for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(i.dataProp))return!0;for(var t=1;t=3&&(n=l[0].match(s))&&(i=l[1].match(s))&&(a=l[2].match(s)))return o.format="rgb",o.rgba=[parseFloat(n[1])||0,parseFloat(i[1])||0,parseFloat(a[1])||0,null],l.length>=4&&(r=l[3].match(s))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],n=0;ns[n]&&-t[n]+e[n]+l[n]/2>s[n]/2&&e[n]+l[n]-d[n]>=0?e[n]+l[n]-d[n]:e[n],-t[a]+e[a]+l[a]+d[a]-p+p*r>s[a]?-t[a]+e[a]+l[a]/2>s[a]/2&&e[a]+l[a]-p-p*r>=0?e[a]+l[a]-p-p*r:e[a]+l[a]-p+p*r:e[a]+l[a]-p+p*r>=0?e[a]+l[a]-p+p*r:e[a]+l[a]-p-p*r];else var u=[e[n],e[a]+l[a]-p+p*r];var m=u[n],h=u[a],g=o.fixed?"fixed":"absolute",f=(u[0]+d[0]>e[0]||u[0]0?Math.ceil(l/o):0,i=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),a=e.paletteHeight?Math.min(e.paletteHeight,i):i),n&&(r=n*a+(n-1)*e.paletteSpacing),{cols:o,rows:n,cellW:i,cellH:a,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=i.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!a(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{a(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=i.strList(e),o=0;o127.5},this.hide=function(){p()&&(i.removeClass(n.targetElement,i.pub.activeClassName),i.picker.wrap.parentNode.removeChild(i.picker.wrap),delete i.picker.owner)},this.show=function(){l()},this.redraw=function(){p()&&l()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||i.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(i.setDataAttr(this.targetElement,"current-color",t),e&i.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&i.flags.leaveAlpha)&&this.alphaElement){var n=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(n)}e&i.flags.leavePreview||!this.previewElement||((i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),p()&&(s(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var n=[];if(e){n.push({image:i.genColorPreviewGradient(e,t,o?o-i.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var a=i.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);n.push({image:"url('"+a.canvas.toDataURL()+"')",position:(t||"left")+" top",size:a.width+"px "+a.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else n.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},l=0;l=0;h-=1){var g=m[h];if(g)if(i.pub.presets.hasOwnProperty(g)){for(var u in i.pub.presets[g])if(i.pub.presets[g].hasOwnProperty(u))try{a(u,i.pub.presets[g][u])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",g)}var f=["preset"];for(var u in o)if(o.hasOwnProperty(u)&&-1===f.indexOf(u))try{a(u,o[u])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=i.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=i.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof i.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,i.addClass(this.targetElement,i.pub.className),i.instances.push(this),i.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),i.isButtonEmpty(this.targetElement))){i.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var C=i.getCompStyle(this.targetElement);(parseFloat(C["min-width"])||0)-1){var G=i.parseColorString(b);this._currentFormat=G?G.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(b),void 0!==k&&this.processAlphaInput(k)}}).pub.className="jscolor",i.pub.activeClassName="jscolor-active",i.pub.looseJSON=!0,i.pub.presets={},i.pub.presets.default={},i.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},i.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},i.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},i.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},i.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},i.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},i.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},i.pub.sliderInnerSpace=3,i.pub.chessboardSize=8,i.pub.chessboardColor1="#666666",i.pub.chessboardColor2="#999999",i.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],i.pub.init=function(){if(!i.initialized)for(e.document.addEventListener("mousedown",i.onDocumentMouseDown,!1),e.document.addEventListener("keyup",i.onDocumentKeyUp,!1),e.addEventListener("resize",i.onWindowResize,!1),e.addEventListener("scroll",i.onWindowScroll,!1),i.pub.install(),i.initialized=!0;i.readyQueue.length;)i.readyQueue.shift()()},i.pub.install=function(e){var t=!0;try{i.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(i.pub.lookupClass)try{i.installBySelector("input."+i.pub.lookupClass+", button."+i.pub.lookupClass,e)}catch(e){}return t},i.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(i.initialized?e():i.readyQueue.push(e),!0)},i.pub.trigger=function(e){var t=function(){i.triggerGlobal(e)};i.initialized?t():i.pub.ready(t)},i.pub.hide=function(){i.picker&&i.picker.owner&&i.picker.owner.hide()},i.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),i.genColorPreviewCanvas(e).canvas.toDataURL()},i.pub.background=function(e){var t=[];t.push(i.genColorPreviewGradient(e));var o=i.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},i.pub.options={},i.pub.lookupClass="jscolor",i.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+i.docsRef),!1},i.register(),i.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=a),a}))}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e={};function t(){e.WrinklerButtons&&Game.elderWrath?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")}const n=["","","M","G","T","P","E","Z","Y"],i=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],a=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let r,s,c,d,p,u,m,h,g,f,C,y,b,k,G,v,w,x=[],T=[],M=[],S={},B=Date.now(),P=Date.now();const E="CMText",N="CMBack",O="Blue",F="Green",W="Yellow",L="Orange",A="Red",j="Purple",D="Gray",H="Pink",U="Brown",$=[D,O,F,W,L,A,j,H,U],R=[["GoldCookTooltipPlaceholder","Calculated with Golden Switch off","200px"],["GoldCookDragonsFortuneTooltipPlaceholder","Calculated with Golden Switch off and at least one golden cookie on-screen","240px"],["PrestMaxTooltipPlaceholder","The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","320px"],["NextPrestTooltipPlaceholder","Calculated with cookies gained from wrinklers and Chocolate egg","200px"],["HeavenChipMaxTooltipPlaceholder","The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","330px"],["ResetTooltipPlaceholder","The bonus income you would get from new prestige levels unlocked at 100% of its potential and from ascension achievements if you have the same buildings/upgrades after reset","370px"],["ChoEggTooltipPlaceholder","The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg","300px"],["ChainNextLevelPlaceholder","Cheated cookies might break this formula","250px"],["FavouriteSettingPlaceholder","Click to set this setting as favourite and show it in 'favourite' settings at the top of the Cookie Monster Settings","250px"]],I={};let z,V,_=0,Q=-1,X=[],q=1,Y=1,K=1;const J=[10,15,30,60,300,600,900,1800],Z=[1,5,10,15,30],ee={Frenzy:W,"Dragon Harvest":U,"Elder frenzy":F,Clot:A,"Click frenzy":O,Dragonflight:H};let te,oe,ne,ie,ae,re,le,se={},ce="",de=[];function pe(t,o,r){const l=e.ScaleDecimals+1;if(t===1/0)return"Infinity";if(void 0===t)return"0";if(0===e.Scale)return S.Beautify(t,o);if(Number.isFinite(t)){if(t<0)return`-${pe(Math.abs(t))}`;let s="";if(0===t)return t.toString();if(t>.001&&t=.01&&t=.01&&t=.01&&t315576e4)return"XX:XX:XX:XX:XX";c+=(i<10?"0":"")+i+":",c+=(a<10?"0":"")+a+":",c+=(r<10?"0":"")+r+":",c+=(l<10?"0":"")+l+":",c+=(s<10?"0":"")+s}else{if(n>7776e5)return o?"Over 9000 days!":">9000d";c+=i>0?i+(o?1===i?" year":" years":"y")+", ":"",c+=a>0?a+(o?1===a?" day":" days":"d")+", ":"",(c.length>0||r>0)&&(c+=r+(o?1===r?" hour":" hours":"h")+", "),(c.length>0||l>0)&&(c+=l+(o?1===l?" minute":" minutes":"m")+", "),c+=s+(o?1===s?" second":" seconds":"s")}return c}function me(t){let o,n;return t<=0?(n=e.TimeFormat?"00:00:00:00:00":"Done!",o=F):(n=ue(t),o=t>300?A:t>60?L:W),{text:n,color:o}}let he,ge,fe,Ce,ye,be,ke,Ge,ve,we,xe,Te,Me,Se,Be,Pe,Ee,Ne,Oe,Fe,We,Le,Ae,je,De,He,Ue,$e,Re,Ie,ze,Ve,_e,Qe,Xe,qe,Ye=0,Ke=0,Je=0,Ze=0,et=0,tt=0,ot=0,nt=0,it=0,at=0,rt=0,lt=0,st=0,ct=0,dt=0,pt=1,ut=1,mt=1,ht=0,gt=0,ft=0,Ct=0,yt={},bt={},kt={},Gt=0,vt=0,wt=[0,null],xt=0,Tt=0,Mt={},St={},Bt={},Pt={},Et={},Nt=0,Ot=0,Ft=[],Wt=0,Lt=0,At=[],jt=0,Dt=0,Ht=[],Ut=0,$t=0,Rt=[],It=0,zt=0,Vt={},_t={},Qt=0,Xt=0,qt=[],Yt={},Kt=0,Jt={0:[0,0,0],1:[0,0,0],2:[0,0,0],3:[0,0,0],4:[0,0,0],5:[0,0,0],6:[0,0,0],7:[0,0,0],8:[0,0,0],9:[0,0,0],10:[0,0,0]},Zt=[],eo=[],to=[];function oo(e){let t=0;return Game.dragonAuras[$e].name!==e&&Game.dragonAuras[Re].name!==e||(t=1),"Reality Bending"!==Game.dragonAuras[$e].name&&"Reality Bending"!==Game.dragonAuras[Re].name||(t+=.1),t}function no(){let e=.25;return e*=1+oo("Earth Shatterer"),e}function io(e,t){return void 0===Qe[e]?void 0===t?1:t:Qe[e]}function ao(e){const t=eo[e];return(1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function ro(e){if(Game.hasGod){void 0===Zt.Temple.minigame&&(Zt.Temple.minigame=Game.Objects.Temple.minigame);const t=Zt.Temple.minigame.gods[e];if(Ie===t.id)return 1;if(ze===t.id)return 2;if(Ve===t.id)return 3}return!1}function lo(e,t){let o=t;if(ao("Season savings")&&(o*=.99),ao("Santa's dominion")&&(o*=.99),ao("Faberge egg")&&(o*=.99),ao("Divine discount")&&(o*=.99),ao("Fortune #100")&&(o*=.99),o*=1-.02*oo("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&ao(e.fortune.name)&&(o*=.93),o*=io("buildingCost"),Zt.Temple.minigameLoaded){const e=ro("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function so(e,t,o,n,i,a){const r=void 0===a?0:a;let l=i,s=o,c=0;-1===i&&(l=s),i||(l=Game.buyBulk);for(let o=0;o0&&(c+=o,s-=1)}return c}function co(){let t=Game.buyBulk;if(1===Game.buyMode?Y=t:t=Y,1===t?t=yt:10===t?t=bt:100===t&&(t=kt),1===Game.buyMode?1===e.BuildColour?Object.keys(t).forEach((o=>{l(`productPrice${Game.Objects[o].id}`).style.color=e[`Colour${t[o].color}`]})):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(yt).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=pe(so(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&e.SortBuildings){let o;1===e.SortBuildings?(o=Object.keys(yt).map((e=>{const t=yt[e];return t.name=e,t.id=Game.Objects[e].id,t})),o.sort((function(e,t){return $.indexOf(e.color)>$.indexOf(t.color)?1:$.indexOf(e.color)<$.indexOf(t.color)||e.pp{const o=t[e];return o.name=e,o.id=Game.Objects[e].id,o})),o.sort((function(e,t){return $.indexOf(e.color)>$.indexOf(t.color)?1:$.indexOf(e.color)<$.indexOf(t.color)||e.pp{const t=yt[e];return t.name=e,t.id=Game.Objects[e].id,t}));e.sort(((e,t)=>e.id-t.id));for(let t=0;t0){let e=0,t=0,o=0,n=0,i=0,a=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;e$.indexOf(t.color)?1:$.indexOf(e.color)<$.indexOf(t.color)||e.ppe.price-t.price));const o=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let e=0;e{let n,i=Game.buyBulk;1===Game.buyMode?q=i:i=q,1===i&&(i=yt),10===i&&(i=bt),100===i&&(i=kt),t+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[t].childNodes[1].textContent=Game.Objects[o].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[t].textContent=pe(i[o].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].className=E+i[o].color,n=e.PPDisplayTime?ue(Math.round(i[o].pp)):pe(Math.round(i[o].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].textContent=n;const a=me((Game.Objects[o].bulkPrice-(Game.cookies+mo()))/uo());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[t].className=E+a.color,"Done!"===a.text&&Game.cookies{!Game.Tiers[e.tieredUpgrades[o].tier].special&&ao(e.tieredUpgrades[o].name)&&(t*=2)})),Object.keys(e.synergies).forEach((o=>{if(ao(e.synergies[o].name)){const n=e.synergies[o];n.buildingTie1.name===e.name?t*=1+.05*n.buildingTie2.amount:n.buildingTie2.name===e.name&&(t*=1+.001*n.buildingTie1.amount)}})),e.fortune&&ao(e.fortune.name)&&(t*=1.07),e.grandma&&ao(e.grandma.name)&&(t*=1+.01*Zt.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&ao(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){default:t*=1;break;case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06}return t}function wo(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;ao("Thousand fingers")&&(t+=.1),ao("Million fingers")&&(t*=5),ao("Billion fingers")&&(t*=10),ao("Trillion fingers")&&(t*=20),ao("Quadrillion fingers")&&(t*=20),ao("Quintillion fingers")&&(t*=20),ao("Sextillion fingers")&&(t*=20),ao("Septillion fingers")&&(t*=20),ao("Octillion fingers")&&(t*=20),ao("Nonillion fingers")&&(t*=20);let o=1,n=0;return Object.keys(Zt).forEach((e=>{"Cursor"!==Zt[e].name&&(n+=Zt[e].amount)})),t*=n,o*=vo(e),o*=Game.magicCpS("Cursor"),o*=io("cursorCps"),Game.ComputeCps(.1,ao("Reinforced index finger")+ao("Carpal tunnel prevention cream")+ao("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{ao(Game.GrandmaSynergies[e])&&(o*=2)})),ao("Bingo center/Research facility")&&(o*=4),ao("Ritual rolling pins")&&(o*=2),ao("Naughty list")&&(o*=2),ao("Elderwort biscuits")&&(o*=1.02),o*=io("grandmaCps"),ao("Cat ladies"))for(let e=0;e{"Grandma"!==Zt[e].name&&(i+=Zt[e].amount)})),o*=1+.01*oo("Elder Battalion")*i,o*=Game.magicCpS(t.name),(t.baseCps+n)*o}:o.cps=function(e){let t=1;return t*=vo(e),t*=Game.magicCpS(e.name),e.baseCPS*t},o.baseCps=t.baseCps,o.name=t.name,o.tieredUpgrades=t.tieredUpgrades,o.synergies=t.synergies,o.fortune=t.fortune,o.grandma=t.grandma,o.baseCPS=t.baseCps,o.id=t.id,o.vanilla=t.vanilla,o}function xo(e){const t=Game.Upgrades[e],o={};return o.power=t.power,"function"==typeof o.power&&("Sugar crystal cookies"===t.name?o.power=function(){let e=5;return Object.keys(Zt).forEach((t=>{Zt[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(ao("Starlove")&&(e=3),Game.hasGod){const t=ro("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function To(){Ae=Game.UpgradesOwned,je=Game.pledges,De=Game.AchievementsOwned,He=Game.heavenlyPower,Ue=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Zt[e];void 0===o&&(Zt[e]=wo(e),o=Zt[e],go(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&("Temple"===t.name&&(Ie=t.minigame.slot[0],ze=t.minigame.slot[1],Ve=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Zt[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=eo[e];void 0===o&&(eo[e]=xo(e),o=eo[e]),o.bought=t.bought,eo[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=to[e];void 0===o&&(to[e]=Go(e),o=to[e]),o.won=t.won,to[e]=o})),ko(),$e=Ye,Re=Ke}function Mo(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className="CMTextBlue",t.textContent=e,t}function So(e){e.appendChild(Mo("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(Mo("Bonus Cookies per Click")),e.lastChild.style.display="none";const o=document.createElement("div");o.style.marginBottom="4px",o.style.color="white",o.style.display="none",o.id="CMTooltipCookiePerClick",e.appendChild(o),e.appendChild(Mo("Payback Period"));const n=document.createElement("div");n.style.marginBottom="4px",n.id="CMTooltipPP",e.appendChild(n),e.appendChild(Mo("Time Left"));const i=document.createElement("div");if(i.id="CMTooltipTime",e.appendChild(i),"b"===ne){e.appendChild(Mo("Production left till next achievement")),e.lastChild.id="CMTooltipProductionHeader";const t=document.createElement("div");t.id="CMTooltipProduction",e.appendChild(t)}}function Bo(e,t,o){let n=e,i=0;for(;n{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function Eo(){null!==l("CMDispTooltipWarningParent")&&(0===e.ToolWarnPos?(l("CMDispTooltipWarningParent").style.top="auto",l("CMDispTooltipWarningParent").style.margin="4px -4px",l("CMDispTooltipWarningParent").style.padding="3px 4px"):(l("CMDispTooltipWarningParent").style.right="auto",l("CMDispTooltipWarningParent").style.margin="4px",l("CMDispTooltipWarningParent").style.padding="4px 3px"))}function No(){if(To(),"none"!==l("tooltipAnchor").style.display&&l("CMTooltipArea")){l("CMTooltipArea").innerHTML="";const t=function(){l("tooltip").firstChild.style.paddingBottom="4px";const e=document.createElement("div");return e.style.border="1px solid",e.style.padding="4px",e.style.margin="0px -4px",e.id="CMTooltipBorder",e.className="CMTextGray",e}();l("CMTooltipArea").appendChild(t),"b"===ne?function(){if(1===e.TooltipBuildUpgrade&&1===Game.buyMode){let t;if(So(l("CMTooltipBorder")),1===Game.buyMode?K=t:t=K,1===Game.buyBulk?t=yt:10===Game.buyBulk?t=bt:100===Game.buyBulk&&(t=kt),te=Game.Objects[ie].bulkPrice,oe=t[ie].bonus,1===e.TooltipBuildUpgrade&&1===Game.buyMode){l("CMTooltipIncome").textContent=pe(oe,2);const o=Math.round(oe/Game.cookiesPs*1e4);Number.isFinite(o)&&0!==o?l("CMTooltipIncome").textContent+=` (${o/100}% of income)`:l("CMTooltipIncome").textContent+=` (<0${e.ScaleSeparator?",":"."}01% of income)`,l("CMTooltipBorder").className=E+t[ie].color,e.PPDisplayTime?l("CMTooltipPP").textContent=ue(t[ie].pp):l("CMTooltipPP").textContent=pe(t[ie].pp,2),l("CMTooltipPP").className=E+t[ie].color;const n=me((te-(Game.cookies+mo()))/uo());l("CMTooltipTime").textContent=n.text,"Done!"===n.text&&Game.cookiest.plantsById[t.plot[ie[1]][ie[0]][0]-1].mature,o=t.plantsById[t.plot[ie[1]][ie[0]][0]-1].name;l("CMTooltipBorder").appendChild(Mo("Reward (Current / Maximum)"));const n=document.createElement("div");n.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(n),"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${e?pe(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${pe(60*Game.cookiesPs*30)}`:"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${e?pe(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${pe(60*Game.cookiesPs*3)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${e?pe(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${pe(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${e?pe(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${pe(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===ne?function(){const{minigame:t}=Game.Objects.Farm;if(e.TooltipLump){l("CMTooltipBorder").appendChild(Mo("Cookies gained from harvesting:"));let e=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let n=0;n<6;n++)for(let i=0;i<6;i++)if(t.plot[n][i][0]>=1){const a=t.plot[n][i],r=t.plantsById[a[0]-1],l=r.name;let s=!0;o&&r.immortal&&(s=!1),a[1]0&&t=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",l("CMTimerBarGCTime").textContent=Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps),n+=1),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",l("CMTimerBarRenTime").textContent=Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps),n+=1):l("CMTimerBarRen").style.display="none";const i={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((t=>{if(Game.buffs[t]){const a=ho(Game.buffs[t].name,Game.buffs[t].name,[{id:`${Game.buffs[t].name}Bar`}]);a.style.display="";let r="";r=void 0!==ee[Game.buffs[t].name]?ee[Game.buffs[t].name]:j,a.lastChild.children[1].className=N+r,a.lastChild.children[1].style.color="black",2===e.TimerBarOverlay?a.lastChild.children[1].textContent=`${Math.round(Game.buffs[t].time/Game.buffs[t].maxTime*100)}%`:a.lastChild.children[1].textContent="",a.lastChild.children[1].style.width=`${Math.round(Game.buffs[t].time*(o-8*Math.ceil(Game.buffs[t].time/Game.fps).toString().length)/Game.buffs[t].maxTime)}px`,a.lastChild.children[2].textContent=Math.ceil(Game.buffs[t].time/Game.fps),n+=1,i[Game.buffs[t].name]=a}})),Object.keys(i).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(i[e])})),0!==n&&(l("CMTimerBar").style.height=12*n+2+"px"),le!==n&&(le=n,yo())}}(),fo(),No(),function(){if(1===e.TooltipWrink&&1===_){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===X[t]||void 0===X[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const n=document.createElement("div");n.style.textAlign="center",n.id="CMTooltipWrinkler",o.appendChild(n),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),Q=t,X[t]=1}}else X[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===e.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[Q],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[Q].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Zt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=pe(e)}}(),e.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu(),t(),e.Scale){let e=l("cookies").innerHTML.replace(/.*(?=
)/i,pe(Game.cookies));Game.prefs.monospace&&(e=`${e}`),l("cookies").innerHTML=e}}function Fo(){he.addLatest(Game.computedMouseCps)}class Wo{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){let t=e;t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length);let o=0;for(let e=this.queue.length-1;e>=0&&e>this.queue.length-1-t;e--)o+=this.queue[e];return 0===o?0:o/t}calcSum(e){let t=e;return t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length),0===t?0:this.queue.slice(-t).reduce(((e,t)=>e+t),0)}}function Lo(){const t=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let o=Game.cookies+Kt;Game.cpsSucked>0&&(o+=Gt),It=Math.max(Game.cookiesEarned,o),o*=.05;const n=t-Ge,i=Math.max(0,Game.cookies-ve)/n,a=Math.max(0,Gt-we)/n,r=Math.max(0,wt[0]-xe)/n,l=Math.max(0,o-Ct)/n,s=(Game.cookieClicks-Te)/n;for(let e=0;e0&&(n=A),n}function jo(t,o){Object.keys(t).forEach((n=>{if(e.PPRigidelMode&&1===o)t[n].color=D;else{t[n].color=Ao(t[n],Game.Objects[n].getSumPrice(o));for(let o=0;o{const i=Game.Objects[n].getSumPrice(o);Game.cookiesPs?t[n].pp=Math.max(i-(Game.cookies+mo()),0)/Game.cookiesPs+i/t[n].bonus:t[n].pp=i/t[n].bonus,e.PPRigidelMode&&1===o||qt.push([t[n].pp,o])}))}function Ho(){!function(){Xt=1/0,qt=[],void 0===e.PPExcludeTop&&(e.PPExcludeTop=0),Do(yt,1),Do(bt,10),Do(kt,100),qt.sort(((e,t)=>e[0]-t[0]));let t=0;if(e.PPOnlyConsiderBuyable)for(;qt[t][1]>Game.cookies&&(t+=1,qt.length!==t+1););Xt=qt[e.PPExcludeTop][t],jo(yt,1),jo(bt,10),jo(kt,100)}(),Object.keys(Mt).forEach((e=>{Game.cookiesPs?Mt[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+mo()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/Mt[e].bonus:Mt[e].pp=Game.Upgrades[e].getPrice()/Mt[e].bonus,Number.isNaN(Mt[e].pp)&&(Mt[e].pp=1/0),Mt[e].color=Ao(Mt[e],Game.Upgrades[e].getPrice())}))}function Uo(e,t,o,n,i){let a=o,r=0;for(let o=0;o{if(Game.Objects[e].minigameLoaded&&Game.Objects[e].minigame.effs){const o=Game.Objects[e].minigame.effs;Object.keys(o).forEach((e=>{t[e]?t[e]*=o[e]:t[e]=o[e]}))}})),Qe=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(Ue)*He*function(){let e=0;if(ao("Heavenly chip secret")&&(e+=.05),ao("Heavenly cookie stand")&&(e+=.2),ao("Heavenly bakery")&&(e+=.25),ao("Heavenly confectionery")&&(e+=.25),ao("Heavenly key")&&(e+=.25),e*=1+.05*oo("Dragon God"),ao("Lucky digit")&&(e*=1.01),ao("Lucky number")&&(e*=1.01),ao("Lucky payout")&&(e*=1.01),Game.hasGod){const t=ro("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=io("cps"),ao("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];ao(o.name)&&("function"==typeof o.power?e*=1+.01*eo[o.name].power(eo[o.name]):e*=1+.01*o.power)})),ao("Specialized chocolate chips")&&(e*=1.01),ao("Designer cocoa beans")&&(e*=1.02),ao("Underworld ovens")&&(e*=1.03),ao("Exotic nuts")&&(e*=1.04),ao("Arcane sugar")&&(e*=1.05),ao("Increased merriness")&&(e*=1.15),ao("Improved jolliness")&&(e*=1.15),ao("A lump of coal")&&(e*=1.01),ao("An itchy sweater")&&(e*=1.01),ao("Santa's dominion")&&(e*=1.2),ao("Fortune #100")&&(e*=1.01),ao("Fortune #101")&&(e*=1.07),ao("Dragon scale")&&(e*=1.03);let o=1;if(ro){let t=ro("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=ro("ages"),1===t?e*=1+.15*Math.sin(B/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(B/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(B/1e3/86400*Math.PI*2)),t=ro("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=ro("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=ro("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}ao("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const n=De/25;let i=1;if(ao("Santa's milk and cookies")&&(i*=1.05),i*=1+.05*oo("Breath of Milk"),ro){const e=ro("mother");1===e?i*=1.1:2===e?i*=1.05:3===e&&(i*=1.03)}i*=io("milk");let a=1;ao("Kitten helpers")&&(a*=1+.1*n*i),ao("Kitten workers")&&(a*=1+.125*n*i),ao("Kitten engineers")&&(a*=1+.15*n*i),ao("Kitten overseers")&&(a*=1+.175*n*i),ao("Kitten managers")&&(a*=1+.2*n*i),ao("Kitten accountants")&&(a*=1+.2*n*i),ao("Kitten specialists")&&(a*=1+.2*n*i),ao("Kitten experts")&&(a*=1+.2*n*i),ao("Kitten consultants")&&(a*=1+.2*n*i),ao("Kitten assistants to the regional manager")&&(a*=1+.175*n*i),ao("Kitten marketeers")&&(a*=1+.15*n*i),ao("Kitten analysts")&&(a*=1+.125*n*i),ao("Kitten executives")&&(a*=1+.115*n*i),ao("Kitten angels")&&(a*=1+.1*n*i),ao("Fortune #103")&&(a*=1+.05*n*i),Object.keys(Zt).forEach((e=>{const t=Zt[e];let a=t.cps(t);1!==Game.ascensionMode&&(a*=(1+.01*t.level)*o),"Grandma"===t.name&&ao("Milkhelp® lactose intolerance relief tablets")&&(a*=1+.05*n*i),Xe+=t.amount*a})),ao('"egg"')&&(Xe+=9),e*=a;let r=1;if(ao("Chicken egg")&&(r*=1.01),ao("Duck egg")&&(r*=1.01),ao("Turkey egg")&&(r*=1.01),ao("Quail egg")&&(r*=1.01),ao("Robin egg")&&(r*=1.01),ao("Ostrich egg")&&(r*=1.01),ao("Cassowary egg")&&(r*=1.01),ao("Salmon roe")&&(r*=1.01),ao("Frogspawn")&&(r*=1.01),ao("Shark egg")&&(r*=1.01),ao("Turtle egg")&&(r*=1.01),ao("Ant larva")&&(r*=1.01),ao("Century egg")){let e=10*Math.floor((P-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),gt=1+.1*(1-(1-e/100)**3),r*=gt}e*=r,ao("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+oo("Radiant Appetite");const l=Xe*e;Object.keys(Game.CpsAchievements).forEach((e=>{l>=Game.CpsAchievements[e].threshold&&$o(Game.CpsAchievements[e].name)})),qe=l;const{n:s}=Game.shimmerTypes.golden,c=oo("Dragon's Fortune");for(let t=0;t{ao(e[o])&&(t+=.1)}))}e*=t}if(ao("Shimmering veil [off]")){let t=.5;ao("Reinforced membrane")&&(t+=.1),e*=1+t}ao("Magic shenanigans")&&(e*=1e3),ao("Occult obstruction")&&(e*=0),Xe=Game.runModHookOnValue("cps",Xe),e*=Po(),Xe*=e}const Io=["Fortune #001","Fortune #002","Fortune #003","Fortune #004","Fortune #005","Fortune #006","Fortune #007","Fortune #008","Fortune #009","Fortune #010","Fortune #011","Fortune #012","Fortune #013","Fortune #014","Fortune #015","Fortune #016","Fortune #017","Fortune #018","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],zo=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],Vo=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],_o=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],Qo=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function Xo(e){return to[e]?to[e].won:0}function qo(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{ao(Game.GrandmaSynergies[t])&&(e+=1)})),!Xo("Elder")&&e>=7&&$o("Elder"),!Xo("Veteran")&&e>=14&&$o("Veteran");let t=0,o=1,n=1,i=1e5;Object.keys(Zt).forEach((e=>{t+=Zt[e].amount,i=Math.min(Zt[e].amount,i),Xo("Mathematician")||Zt[e].amount=1&&$o("One with everything"),1===o&&$o("Mathematician"),1===n&&$o("Base 10"),i>=100&&$o("Centennial"),i>=150&&$o("Centennial and a half"),i>=200&&$o("Bicentennial"),i>=250&&$o("Bicentennial and a half"),i>=300&&$o("Tricentennial"),i>=350&&$o("Tricentennial and a half"),i>=400&&$o("Quadricentennial"),i>=450&&$o("Quadricentennial and a half"),i>=500&&$o("Quincentennial"),i>=550&&$o("Quincentennial and a half"),i>=600&&$o("Sexcentennial"),t>=100&&$o("Builder"),t>=500&&$o("Architect"),t>=1e3&&$o("Engineer"),t>=2e3&&$o("Lord of Constructs"),t>=4e3&&$o("Grand design"),t>=8e3&&$o("Ecumenopolis"),Ae>=20&&$o("Enhancer"),Ae>=50&&$o("Augmenter"),Ae>=100&&$o("Upgrader"),Ae>=200&&$o("Lord of Progress"),Ae>=300&&$o("The full picture"),Ae>=400&&$o("When there's nothing left to add"),t>=4e3&&Ae>=300&&$o("Polymath"),t>=8e3&&Ae>=400&&$o("Renaissance baker"),Zt.Cursor.amount+Zt.Grandma.amount>=777&&$o("The elder scrolls");let a=!0;Object.keys(zo).forEach((e=>{ao(zo[e])||(a=!1)})),a&&$o("Spooky cookies");let r=!0;if(Object.keys(Vo).forEach((e=>{ao(Vo[e])||(r=!1)})),r&&$o("Let it snow"),ao("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{ao(e[o].name)&&(t+=1)})),t>=e.length&&$o("O Fortuna")}}function Yo(e){const t={};return Object.keys(Game.Objects).forEach((o=>{t[o]={},t[o].bonus=function(e,t){To(),Zt[e].amount+=t;const o=Zt[e];"Cursor"===e?(o.amount>=1&&$o("Click"),o.amount>=2&&$o("Double-click"),o.amount>=50&&$o("Mouse wheel"),o.amount>=100&&$o("Of Mice and Men"),o.amount>=200&&$o("The Digital"),o.amount>=300&&$o("Extreme polydactyly"),o.amount>=400&&$o("Dr. T"),o.amount>=500&&$o("Thumbs, phalanges, metacarpals"),o.amount>=600&&$o("With her finger and her thumb"),o.amount>=700&&$o("Gotta hand it to you"),o.amount>=800&&$o("The devil's workshop")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&$o(Game.Objects[o.name].tieredAchievs[e].name)}));const n=De;return Ro(),qo(),n!==De&&Ro(),Xe-Game.cookiesPs}(o,e),1!==e&&(Fe=1)})),t}function Ko(){Object.keys(Game.Objects).forEach((e=>{yt[e].price=Uo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),bt[e].price=Uo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),kt[e].price=Uo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)}))}function Jo(){yt=Yo(1),bt=Yo(10),kt=Yo(100),Mt=[],Object.keys(Game.Upgrades).forEach((t=>{const o=function(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){To(),"Shimmering veil [on]"===eo[e].name?eo["Shimmering veil [off]"].bought=0:"Golden switch [on]"===eo[e].name?eo["Golden switch [off]"].bought=0:eo[e].bought=(eo[e].bought+1)%2,Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Ae+=1),"Elder Pledge"===e?(je+=1,je>0&&$o("Elder nap"),je>=5&&$o("Elder slumber")):"Elder Covenant"===e?$o("Elder calm"):"Prism heart biscuits"===e?$o("Lovely cookies"):"Heavenly key"===e&&$o("Wholesome");const t=De;Ro(),qo(),t!==De&&Ro();const o=function(){let e=0;ao("Thousand fingers")&&(e+=.1),ao("Million fingers")&&(e*=5),ao("Billion fingers")&&(e*=10),ao("Trillion fingers")&&(e*=20),ao("Quadrillion fingers")&&(e*=20),ao("Quintillion fingers")&&(e*=20),ao("Sextillion fingers")&&(e*=20),ao("Septillion fingers")&&(e*=20),ao("Octillion fingers")&&(e*=20),ao("Nonillion fingers")&&(e*=20);let t=0;Object.keys(Zt).forEach((e=>{t+=Zt[e].amount})),t-=Zt.Cursor.amount,e*=t,ao("Plastic mouse")&&(e+=.01*Xe),ao("Iron mouse")&&(e+=.01*Xe),ao("Titanium mouse")&&(e+=.01*Xe),ao("Adamantium mouse")&&(e+=.01*Xe),ao("Unobtainium mouse")&&(e+=.01*Xe),ao("Eludium mouse")&&(e+=.01*Xe),ao("Wishalloy mouse")&&(e+=.01*Xe),ao("Fantasteel mouse")&&(e+=.01*Xe),ao("Nevercrack mouse")&&(e+=.01*Xe),ao("Armythril mouse")&&(e+=.01*Xe),ao("Technobsidian mouse")&&(e+=.01*Xe),ao("Plasmarble mouse")&&(e+=.01*Xe),ao("Miraculite mouse")&&(e+=.01*Xe),ao("Fortune #104")&&(e+=.01*Xe);let o=1;if(ao("Santa's helpers")&&(o*=1.1),ao("Cookie egg")&&(o*=1.1),ao("Halo gloves")&&(o*=1.1),ao("Dragon claw")&&(o*=1.03),ao("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,ao("Luminous gloves")?20:10)),o*=io("click"),Zt.Temple.minigameLoaded&&ro){const e=ro("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}Object.keys(Game.buffs).forEach((e=>{void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick)})),o*=1+.05*oo("Dragon Cursor");let n=o*Game.ComputeCps(1,ao("Reinforced index finger")+ao("Carpal tunnel prevention cream")+ao("Ambidextrous"),e);return n=Game.runModHookOnValue("cookiesPerClick",n),Game.hasBuff("Cursed finger")&&(n=Game.buffs["Cursed finger"].power),n}()-Game.computedMouseCps;return o?[Xe-Game.cookiesPs,o]:[Xe-Game.cookiesPs]}return[]}(t);"Elder Pledge"===t?(Mt[t]={bonus:Game.cookiesPs-Me},1===e.CalcWrink?Mt[t].bonus-=Se:2===e.CalcWrink&&(Mt[t].bonus-=Be),Number.isFinite(Mt[t].bonus)||(Mt[t].bonus=0)):(Mt[t]={},o[0]&&(Mt[t].bonus=o[0]),o[1]&&(Mt[t].bonusMouse=o[1]))}))}function Zo(e,t,o){let n=0,i=0,a=0,r=0,l=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;a0?e/=t:e=0,Ft=Zo(7,e,ut),Nt=2*Ft[1]/ut,Ot=Ft[2]/60/60/6/pt,At=Zo(6,e,mt),Wt=2*At[1]/mt,Lt=At[2]/60/60/6/pt,Ht=Zo(7,7*e,ut),jt=2*Ht[1]/ut,Dt=Ht[2]/60/60/6/pt,Rt=Zo(6,7*e,mt),Ut=2*Rt[1]/mt,$t=Rt[2]/60/60/6/pt}function tn(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),n=e-Ne,i=Math.max(0,o-Oe)/n;for(let e=0;e{e.push(Game.Upgrades[t])})),e.sort((function(e,t){return e.order>t.order?1:e.order{const o=e[t];if(0===o.bought){let e="";e+=function(e){let t="crate upgrade missing";"prestige"===e.pool&&(t+=" heavenly");let o=0;Game.prefs.crates||(o=1),o&&(t+=" noFrame");let{icon:n}=e;e.iconFunction&&(n=e.iconFunction());const i=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?Pt+=e:"cookie"===o.pool?Et+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(Bt+=e)}}))}function nn(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),ft=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(ft*=2)}}function an(){et=900*dt/.15,et*=pt;const e=Po();e>0?et/=e:et=0,tt=ut*(.15*et)+13,ot=mt*(.15*et)+13,nt=7*et,it=ut*(.15*nt)+13,at=mt*(.15*nt)+13,rt=2*et,lt=.15*rt,st=0;let t=0,o=0;Object.keys(Game.Objects).forEach((e=>{Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&(o+=1)})),Object.keys(Game.Objects).forEach((e=>{(Game.Objects[e].amountst&&(st=2*Game.Objects[e].price,ct=e)}))}function rn(){let e=1,t=1,o=1;ao("Green yeast digestives")&&(o*=1.01),ao("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),ut=o*e,mt=o*t,pt=1,0===Game.shimmerTypes.golden.n&&(pt*=1+1.23*Game.auraMult("Dragon's Fortune"))}function ln(){Gt=0,vt=0,wt=[0,null];for(let e=0;ewt[0]&&(wt=[t,e]))}}function sn(){ko(),ln(),an(),rn(),en(),on(),nn(),ge=new Wo(J[J.length-1]),fe=new Wo(J[J.length-1]),Ce=new Wo(J[J.length-1]),ye=new Wo(J[J.length-1]),be=new Wo(Z[Z.length-1]),ke=new Wo(5),he=new Wo(20*Z[Z.length-1]),tn(),Lo(),Jo(),Ko(),Ho()}const cn={CPSMode:1,AvgCPSHist:3,AvgClicksHist:0,CalcWrink:0,Scale:2,ScaleDecimals:2,ScaleSeparator:0,ScaleCutoff:999999,TimeFormat:0,DetailedTime:1,PPDisplayTime:0,BuildColour:1,PPOnlyConsiderBuyable:0,PPExcludeTop:0,PPRigidelMode:0,PPSecondsLowerLimit:0,ColourBlue:"#4bb8f0",ColourGreen:"#00ff00",ColourYellow:"#ffff00",ColourOrange:"#ff7f00",ColourRed:"#ff0000",ColourPurple:"#ff00ff",ColourGray:"#b3b3b3",ColourPink:"#ff1493",ColourBrown:"#8b4513",BotBar:1,TimerBar:1,TimerBarPos:0,TimerBarOverlay:2,UpBarColour:1,UpgradeBarFixedPos:1,SortBuildings:0,SortUpgrades:0,DragonAuraInfo:1,GrimoireBar:1,GCTimer:1,Favicon:1,WrinklerButtons:1,HideSectionsButtons:0,TooltipBuildUpgrade:1,TooltipAmor:0,ToolWarnLucky:1,ToolWarnLuckyFrenzy:1,ToolWarnConjure:1,ToolWarnConjureFrenzy:1,ToolWarnEdifice:1,ToolWarnUser:0,ToolWarnBon:1,ToolWarnPos:1,TooltipGrim:1,TooltipWrink:1,TooltipLump:1,TooltipPlots:1,TooltipPantheon:1,TooltipAscendButton:1,Stats:1,MissingUpgrades:1,MissingAchievements:0,UpStats:1,HeavenlyChipsTarget:1,ShowMissedGC:1,Title:1,GeneralSound:1,GCNotification:0,GCFlash:1,ColourGCFlash:"#ffffff",GCSound:1,GCVolume:100,GCSoundURL:"https://freesound.org/data/previews/66/66717_931655-lq.mp3",FortuneNotification:0,FortuneFlash:1,ColourFortuneFlash:"#ffffff",FortuneSound:1,FortuneVolume:100,FortuneSoundURL:"https://freesound.org/data/previews/174/174027_3242494-lq.mp3",SeaNotification:0,SeaFlash:1,ColourSeaFlash:"#ffffff",SeaSound:1,SeaVolume:100,SeaSoundURL:"https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3",GardFlash:1,ColourGardFlash:"#ffffff",GardSound:1,GardVolume:100,GardSoundURL:"https://freesound.org/data/previews/103/103046_861714-lq.mp3",MagicNotification:0,MagicFlash:1,ColourMagicFlash:"#ffffff",MagicSound:1,MagicVolume:100,MagicSoundURL:"https://freesound.org/data/previews/221/221683_1015240-lq.mp3",WrinklerNotification:0,WrinklerFlash:1,ColourWrinklerFlash:"#ffffff",WrinklerSound:1,WrinklerVolume:100,WrinklerSoundURL:"https://freesound.org/data/previews/124/124186_8043-lq.mp3",WrinklerMaxNotification:0,WrinklerMaxFlash:1,ColourWrinklerMaxFlash:"#ffffff",WrinklerMaxSound:1,WrinklerMaxVolume:100,WrinklerMaxSoundURL:"https://freesound.org/data/previews/152/152743_15663-lq.mp3",BulkBuyBlock:0,FavouriteSettings:1,Header:{Favourite:1,Calculation:1,Notation:1,Colours:1,BarsDisplay:1,Tooltip:1,Statistics:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Misc:1,InfoTab:1}},dn=function(e){if(1===e){const e=function(){try{Notification.requestPermission().then()}catch(e){return!1}return!0};"Notification"in window?e()?Notification.requestPermission().then():Notification.requestPermission():console.log("This browser does not support notifications.")}};function pn(){1===e.BotBar?(l("CMBotBar").style.display="",fo()):l("CMBotBar").style.display="none",yo()}function un(){BeautifyAll(),Game.RefreshStore(),Game.RebuildUpgrades(),fo(),co(),po()}function mn(){1===e.Favicon&&y>0?Vt.wrath?l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}class hn{constructor(e,t){this.type=e,this.group=t}}class gn extends hn{constructor(e,t,o,n,i,a=null){super(e,t),this.label=o,this.desc=n,this.toggle=i,a&&(this.func=a)}}class fn extends hn{constructor(e,t,o){super(e,t),this.desc=o}}class Cn extends hn{constructor(e,t,o,n){super(e,t),this.label=o,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}}class yn extends hn{constructor(e,t,o,n,i,a){super(e,t),this.label=o,this.desc=n,this.min=i,this.max=a}}const bn={CPSMode:new gn("bool","Calculation",["Current cookies per second","Average cookies per second"],"Calculate times using current cookies per second or average cookies per second",!1),AvgCPSHist:new gn("bool","Calculation",["Average CPS in past 10s","Average CPS in past 15s","Average CPS in past 30s","Average CPS in past 1m","Average CPS in past 5m","Average CPS in past 10m","Average CPS in past 15m","Average CPS in past 30m"],"How much time average Cookies Per Second should consider",!1),AvgClicksHist:new gn("bool","Calculation",["Average clicks in past 1s","Average clicks in past 5s","Average clicks in past 10s","Average clicks in past 15s","Average clicks in past 30s"],"How much time average Cookie Clicks should consider",!1),CalcWrink:new gn("bool","Calculation",["Calculate with wrinklers OFF","Calculate with wrinklers ON","Calculate with single fattest wrinkler ON"],"Calculate times and average Cookies Per Second with (only the single non-shiny fattest) wrinklers",!0,(function(){_e=!0})),Scale:new gn("bool","Notation",["Game's setting scale","Metric","Short scale","Short scale (Abbreviated)","Scientific notation","Engineering notation"],"Change how long numbers are formatted",!1,(function(){un()})),ScaleDecimals:new gn("bool","Notation",["1 decimals","2 decimals","3 decimals"],'Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game\'s Setting Scale"',!1,(function(){un()})),ScaleSeparator:new gn("bool","Notation",[". for decimals (standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(function(){un()})),ScaleCutoff:new yn("numscale","Notation","Notation cut-off point: ","The number from which Cookie Monster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),TimeFormat:new gn("bool","Notation",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX"],"Change the time format",!1),DetailedTime:new gn("bool","Notation",["Detailed time OFF","Detailed time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(function(){1===e.DetailedTime?Game.sayTime=V:Game.sayTime=S.sayTime})),PPDisplayTime:new gn("bool","Notation",["PP as value (standard)","PP as time unit"],"Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.",!1),BuildColour:new gn("bool","Colours",["Building colours OFF","Building colours ON"],"Colour code buildings",!0,(function(){co()})),PPOnlyConsiderBuyable:new gn("bool","Colours",["Don't ignore non-buyable","Ignore non-buyable"],"Makes Cookie Monster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),PPExcludeTop:new gn("bool","Colours",["Don't ignore any","Ignore 1st best","Ignore 1st and 2nd best","Ignore 1st, 2nd and 3rd best"],"Makes Cookie Monster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPRigidelMode:new gn("bool","Colours",["Rigidel mode OFF","Rigidel mode ON"],'Makes Cookie Monster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',!0),PPSecondsLowerLimit:new yn("numscale","Colours","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),ColourBlue:new fn("colour","Colours","Standard colour is blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels"),ColourGreen:new fn("colour","Colours","Standard colour is green. Used to show best PP building, for Blood Frenzy bar, and for various labels"),ColourYellow:new fn("colour","Colours","Standard colour is yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels"),ColourOrange:new fn("colour","Colours","Standard colour is orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels"),ColourRed:new fn("colour","Colours","Standard colour is Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels"),ColourPurple:new fn("colour","Colours","Standard colour is purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels"),ColourGray:new fn("colour","Colours","Standard colour is gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar"),ColourPink:new fn("colour","Colours","Standard colour is pink. Used for Dragonflight bar"),ColourBrown:new fn("colour","Colours","Standard colour is brown. Used for Dragon Harvest bar"),BotBar:new gn("bool","BarsDisplay",["Bottom bar OFF","Bottom bar ON"],"Building information",!0,(function(){pn()})),TimerBar:new gn("bool","BarsDisplay",["Timer bar OFF","Timer bar ON"],"Bar with timers for golden cookie, season popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(function(){bo()})),TimerBarPos:new gn("bool","BarsDisplay",["Timer bar position (top left)","Timer bar position (bottom)"],"Placement of the timer bar",!1,(function(){0===e.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),yo()})),TimerBarOverlay:new gn("bool","BarsDisplay",["Timer bar overlay OFF","Timer bar overlay only seconds","Timer bar overlay full"],"Overlay on timers displaying seconds and/or percentage left",!0),UpBarColour:new gn("bool","BarsDisplay",["Upgrade colours/bar OFF","Upgrade colours with bar ON","Upgrade colours without bar ON"],"Colour code upgrades and optionally add a counter bar",!1,(function(){1===e.UpBarColor?(l("CMUpgradeBar").style.display="",po()):2===e.UpBarColor?(l("CMUpgradeBar").style.display="none",po()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),UpgradeBarFixedPos:new gn("bool","BarsDisplay",["Upgrade bar fixed position OFF","Upgrade bar fixed position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(function(){1===e.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),SortBuildings:new gn("bool","BarsDisplay",["Sort buildings: default","Sort buildings: PP of x1 purchase","Sort buildings: PP of selected bulk mode"],"Sort the display of buildings in either default order or by PP",!1,(function(){co()})),SortUpgrades:new gn("bool","BarsDisplay",["Sort upgrades: default","Sort upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(function(){po()})),DragonAuraInfo:new gn("bool","BarsDisplay",["Extra dragon aura info OFF","Extra dragon aura info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),GrimoireBar:new gn("bool","BarsDisplay",["Grimoire magic meter timer OFF","Grimoire magic meter timer ON"],"A timer on how long before the Grimoire magic meter is full",!0),GCTimer:new gn("bool","BarsDisplay",["Golden cookie timer OFF","Golden cookie timer ON"],"A timer on the golden cookie when it has been spawned",!0,(function(){1===e.GCTimer?Object.keys(se).forEach((e=>{se[e].style.display="block",se[e].style.left=Yt[e].l.style.left,se[e].style.top=Yt[e].l.style.top})):Object.keys(se).forEach((e=>se[e].style.display="none"))})),Favicon:new gn("bool","BarsDisplay",["Favicon OFF","Favicon ON"],"Update favicon with golden/wrath cookie",!0,(function(){mn()})),WrinklerButtons:new gn("bool","BarsDisplay",["Extra wrinkler buttons OFF","Extra wrinkler buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(function(){t()})),HideSectionsButtons:new gn("bool","BarsDisplay",["Hide buildings/upgrades button OFF","Hide buildings/upgrades button ON"],"Show buttons for hiding and showing the buildings and upgrades sections in the right column",!0,(function(){e.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),TooltipBuildUpgrade:new gn("bool","Tooltip",["Building/upgrade tooltip information OFF","Building/upgrade tooltip information ON"],"Extra information in building/upgrade tooltips",!0),TooltipAmor:new gn("bool","Tooltip",["Buildings tooltip amortization information OFF","Buildings tooltip amortization information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new gn("bool","Tooltip",["Tooltip lucky warning OFF","Tooltip lucky warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new gn("bool","Tooltip",["Tooltip lucky frenzy warning OFF","Tooltip lucky frenzy warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new gn("bool","Tooltip",["Tooltip conjure warning OFF","Tooltip conjure warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new gn("bool","Tooltip",["Tooltip conjure frenzy warning OFF","Tooltip conjure frenzy warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new gn("bool","Tooltip",["Tooltip edifice warning OFF","Tooltip edifice warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new yn("numscale","Tooltip","Tooltip warning at x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnBon:new gn("bool","Tooltip",["Calculate tooltip warning with bonus CPS OFF","Calculate tooltip warning with bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),ToolWarnPos:new gn("bool","Tooltip",["Tooltip warning position (left)","Tooltip warning position (bottom)"],"Placement of the warning boxes",!1,(function(){Eo()})),TooltipGrim:new gn("bool","Tooltip",["Grimoire tooltip information OFF","Grimoire tooltip information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new gn("bool","Tooltip",["Wrinkler tooltip OFF","Wrinkler tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new gn("bool","Tooltip",["Sugar lump tooltip OFF","Sugar lump tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new gn("bool","Tooltip",["Garden plots tooltip OFF","Garden plots tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipPantheon:new gn("bool","Tooltip",["Pantheon tooltip OFF","Pantheon tooltip ON"],"Shows additional info in the pantheon tooltip",!0),TooltipAscendButton:new gn("bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new gn("bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new gn("bool","Statistics",["Missing upgrades OFF","Missing upgrades ON"],"Shows missing upgrades in statistics menu",!0),MissingAchievements:new gn("bool","Statistics",["Missing Achievements OFF","Missing Normal Achievements ON"],"Shows missing normal achievements in statistics menu.",!1),UpStats:new gn("bool","Statistics",["Statistics update rate (default)","Statistics update rate (1s)"],"Default rate is once every 5 seconds",!1),HeavenlyChipsTarget:new yn("numscale","Statistics","Heavenly chips target: ",'Use this to set a heavenly chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new gn("bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many golden cookies you have missed",!0),Title:new gn("bool","NotificationGeneral",["Title OFF","Title ON","Title pinned tab highlight"],'Update title with colden cookie/season popup timers; pinned tab highlight only changes the title when a golden cookie/season popup spawns; "!" means that golden cookie/reindeer can spawn',!0),GeneralSound:new gn("bool","NotificationGeneral",["Consider game volume setting OFF","Consider game volume setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new gn("bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when golden cookie spawns",!0,(function(){dn(e.GCNotification)})),GCFlash:new gn("bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on golden cookie",!0),ColourGCFlash:new fn("colour","NotificationGC","The colour of the GC flash, standard colour is white"),GCSound:new gn("bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on golden cookie",!0),GCVolume:new Cn("vol","NotificationGC",[],"Volume"),GCSoundURL:new gn("url","NotificationGC","Sound URL:","URL of the sound to be played when a golden cookie spawns"),FortuneNotification:new gn("bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when fortune cookie is on the ticker",!0,(function(){dn(e.FortuneNotification)})),FortuneFlash:new gn("bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on fortune cookie spawn",!0),ColourFortuneFlash:new fn("colour","NotificationFC","The colour of the fortune flash, standard colour is white"),FortuneSound:new gn("bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on fortune cookie spawn",!0),FortuneVolume:new Cn("vol","NotificationFC",[],"Volume"),FortuneSoundURL:new gn("url","NotificationFC","Sound URL:","URL of the sound to be played when the ticker has a fortune cookie"),SeaNotification:new gn("bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on season popup",!0,(function(){dn(e.SeaNotification)})),SeaFlash:new gn("bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on season popup",!0),ColourSeaFlash:new fn("colour","NotificationSea","The colour of the season popup flash, standard colour is white"),SeaSound:new gn("bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on season popup",!0),SeaVolume:new Cn("vol","NotificationSea",[],"Volume"),SeaSoundURL:new gn("url","NotificationSea","Sound URL:","URL of the sound to be played when on season popup spawns"),GardFlash:new gn("bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on garden tick",!0),ColourGardFlash:new fn("colour","NotificationGard","The colour of the garden flash, standard colour is white"),GardSound:new gn("bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on garden tick",!0),GardVolume:new Cn("vol","NotificationGard",[],"Volume"),GardSoundURL:new gn("url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new gn("bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(function(){dn(e.MagicNotification)})),MagicFlash:new gn("bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),ColourMagicFlash:new fn("colour","NotificationMagi","The colour of the magic flash, standard colour is white"),MagicSound:new gn("bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new Cn("vol","NotificationMagi",[],"Volume"),MagicSoundURL:new gn("url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new gn("bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a wrinkler appears",!0,(function(){dn(e.WrinklerNotification)})),WrinklerFlash:new gn("bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a wrinkler appears",!0),ColourWrinklerFlash:new fn("colour","NotificationWrink","The colour of the wrinkler flash, standard colour is white"),WrinklerSound:new gn("bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a wrinkler appears",!0),WrinklerVolume:new Cn("vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new gn("url","NotificationWrink","Sound URL:","URL of the sound to be played when a wrinkler appears"),WrinklerMaxNotification:new gn("bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of wrinklers has appeared",!0,(function(){dn(e.WrinklerMaxNotification)})),WrinklerMaxFlash:new gn("bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),ColourWrinklerMaxFlash:new fn("colour","NotificationWrinkMax","The colour of the maximum wrinkler flash, standard colour is white"),WrinklerMaxSound:new gn("bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of wrinklers has appeared",!0),WrinklerMaxVolume:new Cn("vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new gn("url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of wrinklers has appeared"),BulkBuyBlock:new gn("bool","Miscellaneous",["Block bulk buying OFF","Block bulk buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0),FavouriteSettings:new gn("bool","Miscellaneous",["Favourite settings section OFF","Favourite settings section ON","Favourite settings section ON (Locked)"],"Show stars before each setting which allows selecting it for a 'favourites' section at the top of the Cookie Monster settings. Setting this to Locked removes the stars but shows the 'favourites' section",!0,(function(){Game.UpdateMenu()}))};function kn(){return JSON.stringify({favouriteSettings:de,settings:e,version:"2.031.7"})}function Gn(){if(Je!==Game.dragonLevel||_e){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const t=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount{if(e=n,Game.Objects[e].amount{Zt[e]=wo(e)})),eo=[],Object.keys(Game.Upgrades).forEach((e=>{eo[e]=xo(e)})),to=[],Object.keys(Game.Achievements).forEach((e=>{to[e]=Go(e)})),To()}let xn=!1;function Tn(t,o,n){(1===e[o]||n)&&3===t&&!1===xn||1===t?(l("CMFlashScreen").style.backgroundColor=e[`Colour${o}`],l("CMFlashScreen").style.opacity="0.5",3===t?(l("CMFlashScreen").style.display="inline",setTimeout((function(){Tn(2,o,!0)}),1e3/Game.fps)):setTimeout((function(){Tn(0,o,!0)}),1e3/Game.fps)):2===t?(l("CMFlashScreen").style.opacity="1",setTimeout((function(){Tn(1,o,!0)}),1e3/Game.fps)):0===t&&(l("CMFlashScreen").style.display="none")}function Mn(t,o,n,i){if((1===e[o]||i)&&!1===xn){const o=new Audio(t);e.GeneralSound?o.volume=e[n]/100*(Game.volume/100):o.volume=e[n]/100,o.play()}}function Sn(t,o,n){1===e[t]&&"hidden"===document.visibilityState&&!1===xn&&new Notification(o,{body:n,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})}function Bn(){if(re!==Game.OnAscend&&(re=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===e.BotBar&&(l("CMBotBar").style.display="none"),1===e.TimerBar&&(l("CMTimerBar").style.display="none")):(pn(),bo()),Co()),!Game.OnAscend&&0===Game.AscendTimer){r!==Object.keys(Game.mods).length&&(wn(),sn(),r=Object.keys(Game.mods).length),_e&&(Jo(),Game.Has("Golden switch [off]")?(To(),eo["Golden switch [off]"].bought=0,Ro(),dt=Xe):dt=Game.cookiesPs,rn(),an(),on(),en(),Gn(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)Jt[e][t]=vn(e,t)}(),nn(),function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const t=Game.Objects.Bank.minigame.goods;let o=0;Object.keys(t).forEach((e=>{const n=t[e];o+=n.stock*n.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;To();let t=2;5!==$e&&18!==$e||(t-=1),5!==Re&&18!==Re||(t-=1),$e=5,Re=18;for(let e=0;e{Zt[t].amount>0&&(e=t)})),Zt[e].amount-=1,Le-=1}return Object.keys(Zt).forEach((t=>{const o=Zt[t];e+=so(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),Kt=e}(),_e=0);const t=Game.auraMult("Fierce Hoarder")>0;!We&&t?(We=!0,Fe=1):We&&!t&&(We=!1,Fe=1),Fe&&(Ko(),Fe=0),function(){ln(),Ho(),function(){xt=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Zt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}Tt=e,xt=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t}(),Lo(),tn();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);Qt=ue(e/uo())}(),G=0,Yt={},Object.keys(Game.shimmers).forEach((e=>{Yt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(Vt=Game.shimmers[e],G+=1)})),Object.keys(se).forEach((e=>{void 0===Yt[e]&&(se[e].parentNode.removeChild(se[e]),delete se[e])})),y!==Game.shimmerTypes.golden.n?(y=Game.shimmerTypes.golden.n,y&&(b{void 0===se[Game.shimmers[t].id]&&function(t){const o=document.createElement("div");o.id=`GCTimer${t.id}`,o.style.width="96px",o.style.height="96px",o.style.position="absolute",o.style.zIndex="10000000001",o.style.textAlign="center",o.style.lineHeight="96px",o.style.fontFamily='"Kavoon", Georgia, serif',o.style.fontSize="35px",o.style.cursor="pointer",o.style.display="block",0===e.GCTimer&&(o.style.display="none"),o.style.left=t.l.style.left,o.style.top=t.l.style.top,o.onclick=function(){t.pop()},o.onmouseover=function(){t.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",t.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},o.onmouseout=function(){t.l.style.filter="",t.l.style.webkitFilter=""},se[t.id]=o,l("shimmers").appendChild(o)}(Game.shimmers[t])}))),mn(),b=G,0===G&&(Vt=0)):1===e.GCTimer&&y&&Object.keys(se).forEach((e=>{se[e].style.opacity=Yt[e].l.style.opacity,se[e].style.transform=Yt[e].l.style.transform,se[e].textContent=Math.ceil(Yt[e].life/Game.fps)})),f!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(f=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,f&&(Tn(3,"FortuneFlash",!1),Mn(e.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),Sn("FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),g!==Game.shimmerTypes.reindeer.spawned&&(g=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(_t=Game.shimmers[e])})),Tn(3,"SeaFlash",!1),Mn(e.SeaSoundURL,"SeaSound","SeaVolume",!1),Sn("SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!")),Game.Objects.Farm.minigameLoaded&&C!==Game.Objects.Farm.minigame.nextStep&&(0!==C&&C0){let t=0;Object.keys(Game.wrinklers).forEach((e=>{2===Game.wrinklers[e].phase&&(t+=1)})),t>v?(v=t,t===Game.getWrinklersMax()&&e.WrinklerMaxFlash?Tn(3,"WrinklerMaxFlash",!1):Tn(3,"WrinklerFlash",!1),t===Game.getWrinklersMax()&&e.WrinklerMaxSound?Mn(e.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):Mn(e.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),t===Game.getWrinklersMax()&&e.WrinklerMaxNotification?Sn("WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):Sn("WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):v=t}}()}}function Pn(){let t="";for(let o=0;o<$.length;o++)t+=`.CMText${$[o]} { color: ${e[`Colour${$[o]}`]}; }\n`;for(let o=0;o<$.length;o++)t+=`.CMBack${$[o]} { background-color: ${e[`Colour${$[o]}`]}; }\n`;for(let o=0;o<$.length;o++)t+=`.CMBorder${$[o]} { border: 1px solid ${e[`Colour${$[o]}`]}; }\n`;l("CMCSS").textContent=t,co()}function En(){const e=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),t=e.match(/CookieMonster.*(;|$)/);if(null!==t){const o=e.replace(t[0],`CookieMonster:${kn()}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(o)}!END!`))}}function Nn(t){if(void 0!==localStorage.CMConfig&&delete localStorage.CMConfig,void 0!==t){e=t,void 0!==e.Colors&&delete e.Colors,void 0!==e.Colours&&delete e.Colours;let o=!1;Object.keys(cn).forEach((t=>{void 0===e[t]?(o=!0,e[t]=cn[t]):"Header"===t&&Object.keys(cn.Header).forEach((n=>{void 0!==e[t][n]&&e[t][n]>-1&&e[t][n]<2||(o=!0,e[t][n]=cn[t][n])}))})),o&&En(),Bn(),Object.keys(cn).forEach((e=>{"Header"!==e&&void 0!==bn[e].func&&bn[e].func()}))}else Nn(cn);Game.UpdateMenu(),Pn()}function On(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Fn(t,o){if("b"===t){if(l("tooltip").innerHTML=Game.Objects[o].tooltip(),1===e.TooltipAmor){const e=Uo(Game.Objects[o],Game.Objects[o].basePrice,0,Game.Objects[o].free,Game.Objects[o].amount),t=e-Game.Objects[o].totalCookies;t>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${pe(t)} ${1===Math.floor(t)?"cookie":"cookies"} left to amortize (${me((e-Game.Objects[o].totalCookies)/(Game.Objects[o].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(pe(Game.Objects[o].bulkPrice)).join(pe((Game.Objects[o],Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Game.buyBulk,1))))}else if("u"===t){if(!Game.UpgradesInStore[o])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[o],"store")}else"s"===t?l("tooltip").innerHTML=Game.lumpTooltip():"g"===t?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(o)():"p"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(o[0],o[1])():"ha"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"wb"===t?l("tooltip").innerHTML="":"pag"===t?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(o)():"pas"===t&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(o[0])());if("b"===t&&1===Game.buyMode||"u"===t||"s"===t||"g"===t||"p"===t&&!Game.keys[16]||"ha"===t||"wb"===t||"pag"===t||"pas"===t&&-1!==o[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return ne=t,ie=o,No(),l("tooltip").innerHTML}function Wn(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(T[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("g",`${e}`)}),"this"),Game.tooltip.wobble()})}))}function Ln(){if(!m&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:t}=Game.Objects["Wizard tower"];p=t.draw,Game.Objects["Wizard tower"].minigame.draw=function(){p(),1===e.GrimoireBar&&t.magic1&&(e.Header[t]=0),En()}function Rn(t,o){const n=document.createElement("div");n.className="title",n.style.padding="0px 16px",n.style.opacity="0.7",n.style.fontSize="17px",n.style.fontFamily='"Kavoon", Georgia, serif',n.appendChild(document.createTextNode(`${t} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[o]?"-":"+",i.onclick=function(){$n(o),Game.UpdateMenu()},n.appendChild(i),n}function In(e,t,o,n){const i=document.createElement("div");i.className="listing";const a=document.createElement("b");if(a.textContent=t,i.appendChild(a),"withTooltip"===e){i.className="listing",i.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(I[n].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",i.appendChild(e)}return i.appendChild(document.createTextNode(": ")),i.appendChild(o),i}function zn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const n=document.createElement("div"),i=document.createElement("div");i.style.minWidth="140px",i.style.marginBottom="4px";const a=document.createElement("div");return a.className="name",a.style.marginBottom="4px",a.style.textAlign="center",a.textContent="Missing",i.appendChild(a),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),i.appendChild(o)})),n.appendChild(i),o.onmouseover=function(){Game.tooltip.draw(this,escape(n.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Vn(t){const o=document.createElement("div");if(o.className="subsection",o.appendChild(t),o.appendChild(Rn("Lucky Cookies","Lucky")),e.Header.Lucky&&o.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+mo(){Game.HasUnlocked(Qo[e])||c.push(Qo[e])})),0!==c.length&&e.appendChild(In("basic","Rare plant drops left to unlock",zn(c))),e}())),o.appendChild(Rn("Prestige","Prestige")),e.Header.Prestige&&o.appendChild(function(){const t=document.createElement("div");t.className="CMStatsPrestigeSection";const o=Math.floor(Game.HowMuchPrestige(It+Game.cookiesReset+Gt+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")?Ct:0)));t.appendChild(In("withTooltip","Prestige level (cur / max)",document.createTextNode(`${pe(Game.prestige)} / ${pe(o)}`),"PrestMaxTooltipPlaceholder"));const n=Math.max(0,Game.HowManyCookiesReset(o+1)-(It+Game.cookiesReset+Gt+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")&&Ct?Ct:0))),i=document.createDocumentFragment();i.appendChild(document.createTextNode(pe(n)));const a=document.createElement("small");a.textContent=` (${ue(n/zt,1)})`,i.appendChild(a),t.appendChild(In("withTooltip","Cookies to next level",i,"NextPrestTooltipPlaceholder")),t.appendChild(In("withTooltip","Heavenly chips (cur / max)",document.createTextNode(`${pe(Game.heavenlyChips)} / ${pe(o-Game.prestige+Game.heavenlyChips)}`),"HeavenChipMaxTooltipPlaceholder")),t.appendChild(In("basic","Heavenly chips per second (last 5 seconds)",document.createTextNode(pe(ht,2))));const r=Number(e.HeavenlyChipsTarget);if(!Number.isNaN(r)){const e=r-Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned));e>0&&(t.appendChild(In("basic","Heavenly chips to target set in settings (cur)",document.createTextNode(pe(e)))),t.appendChild(In("basic","Time till target (cur, current 5 second average)",document.createTextNode(ue(e/ht)))))}const l=function(e){let t=Game.cookiesPs;To(),0===eo["Heavenly key"].bought&&(eo["Heavenly chip secret"].bought=1,eo["Heavenly cookie stand"].bought=1,eo["Heavenly bakery"].bought=1,eo["Heavenly confectionery"].bought=1,eo["Heavenly key"].bought=1,Ro(),t=Xe,To()),It>=1e6&&$o("Sacrifice"),It>=1e9&&$o("Oblivion"),It>=1e12&&$o("From scratch"),It>=1e15&&$o("Nihilism"),It>=1e18&&$o("Dematerialize"),It>=1e21&&$o("Nil zero zilch"),It>=1e24&&$o("Transcendence"),It>=1e27&&$o("Obliterate"),It>=1e30&&$o("Negative void"),It>=1e33&&$o("To crumbs, you say?"),It>=1e36&&$o("You get nothing"),It>=1e39&&$o("Humble rebeginnings"),It>=1e42&&$o("The end of the world"),It>=1e45&&$o("Oh, you're back"),It>=1e48&&$o("Lazarus"),It>=1e51&&$o("Smurf account"),It>=1e54&&$o("If at first you don't succeed"),eo["Heavenly chip secret"].bought=1,eo["Heavenly cookie stand"].bought=1,eo["Heavenly bakery"].bought=1,eo["Heavenly confectionery"].bought=1,eo["Heavenly key"].bought=1,Ue=e;const o=De;Ro(),qo(),o!==De&&Ro();const n=Xe-t;return Ue=Game.prestige,n}(o),s=document.createDocumentFragment();s.appendChild(document.createTextNode(pe(l)));const c=Math.round(l/Game.cookiesPs*1e4);if(Number.isFinite(c)&&0!==c){const e=document.createElement("small");e.textContent=` (${c/100}% of income)`,s.appendChild(e)}t.appendChild(In("withTooltip","Reset bonus income",s,"ResetTooltipPlaceholder"));const d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),p=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),u=p-d;if(!Game.Has("Lucky digit")){let e=7-p%10;e<0&&(e+=10);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(In("basic",'Next "Lucky Digit" (total / reset)',i))}if(!Game.Has("Lucky number")){let e=777-p%1e3;e<0&&(e+=1e3);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(In("basic",'Next "Lucky Number" (total / reset)',i))}if(!Game.Has("Lucky payout")){let e=777777-p%1e6;e<0&&(e+=1e6);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(In("basic",'Next "Lucky Payout" (total / reset)',i))}return t}()),Game.cpsSucked>0&&(o.appendChild(Rn("Wrinklers","Wrink")),e.Header.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${pe(Gt)} / ${pe(vt)} `));const t=document.createElement("a");t.textContent="Pop All Normal",t.className="option",t.onclick=function(){On()},e.appendChild(t),o.appendChild(In("basic","Rewards of Popping (All/Normal)",e));const n=document.createDocumentFragment();n.appendChild(document.createTextNode(`${pe(wt[0])} `));const i=document.createElement("a");i.textContent="Pop Single Fattest",i.className="option",i.onclick=function(){null!==wt[1]&&(Game.wrinklers[wt[1]].hp=0)},n.appendChild(i),o.appendChild(In("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==wt[1]?wt[1]:"None"})`,n))}if(o.appendChild(function(){const t=document.createElement("div");t.className="CMStatsSeasonSection";let o=!1;const n=[];Object.keys(zo).forEach((e=>{Game.Has(zo[e])||(n.push(zo[e]),o=!0)}));const i=[];Object.keys(Vo).forEach((e=>{Game.Has(Vo[e])||(i.push(Vo[e]),o=!0)}));const a=[];Object.keys(_o).forEach((e=>{Game.Has(_o[e])||(a.push(_o[e]),o=!0)}));const r=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(r.push(Game.eggDrops[e]),o=!0)}));const l=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(l.push(Game.rareEggDrops[e]),o=!0)}));const s=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),c=Game.Has("Century egg");if(("christmas"===Game.season||o||s||c)&&(t.appendChild(Rn("Season Specials","Sea")),e.Header.Sea)){if(0!==n.length){t.appendChild(In("basic","Halloween cookies left to buy",zn(n)));let e=.95;if(Game.HasAchiev("Spooky cookies")&&(e=.8),Game.Has("Starterror")&&(e*=.9),e*=1/Game.dropRateMult(),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}const o=n.length/7;t.appendChild(In("basic","Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${pe((1-e)*o*100)}% / ${pe((1-.9*e)*o*100)}%`)))}if(0!==i.length){t.appendChild(In("basic","Christmas cookies left to buy",zn(i)));let e=.8;if(Game.HasAchiev("Let it snow")&&(e=.6),e*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(e*=.95),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}const o=i.length/7;t.appendChild(In("basic","Chance of receiving a cookie from reindeer",document.createTextNode(`${pe((1-e)*o*100)}%`)))}0!==a.length&&t.appendChild(In("basic","Valentine cookies left to buy",zn(a)));const e=function(e){let t=e*(1/Game.dropRateMult());if(Game.HasAchiev("Hide & seek champion")&&(t*=.7),Game.Has("Omelette")&&(t*=.9),Game.Has("Starspawn")&&(t*=.9),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=1-t,n=Game.eggDrops.length-r.length,i=Game.rareEggDrops.length-l.length,a=.9*o*(1-n/Game.eggDrops.length),s=.1*o*(1-i/Game.rareEggDrops.length),c=.9*o*(n/Game.eggDrops.length)+.1*o*(i/Game.rareEggDrops.length);return[a+.9*c*(1-n/Game.eggDrops.length),s+.1*c*(1-i/Game.rareEggDrops.length)]};0!==r.length&&(t.appendChild(In("basic","Normal easter eggs left to unlock",zn(r))),t.appendChild(In("basic","Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${pe(100*e(.98)[0])}% / ${pe(100*e(.9)[0])}%`)))),0!==l.length&&(t.appendChild(In("basic","Rare easter eggs left to unlock",zn(l))),t.appendChild(In("basic","Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${pe(100*e(.98)[1])}% / ${pe(100*e(.9)[1])}%`)))),"christmas"===Game.season&&t.appendChild(In("basic","Reindeer reward",document.createTextNode(pe(ft)))),s&&t.appendChild(In("withTooltip","Chocolate egg cookies",document.createTextNode(pe(Ct)),"ChoEggTooltipPlaceholder")),c&&t.appendChild(In("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(gt-1))/100+"%")))}return t}()),o.appendChild(Rn("Miscellaneous","Misc")),e.Header.Misc){if(o.appendChild(In("basic",`Average cookies per second (past ${J[e.AvgCPSHist]<60?`${J[e.AvgCPSHist]} seconds`:J[e.AvgCPSHist]/60+(3===e.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(pe(uo(),3)))),o.appendChild(In("basic",`Average cookie clicks per second (past ${Z[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(pe(St,1)))),o.appendChild(In("basic",`Cookies from clicking (past ${Z[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(pe(he.calcSum(St*Z[e.AvgClicksHist]))))),Game.Has("Fortune cookies")){const e=[];Object.keys(Io).forEach((t=>{Game.Has(Io[t])||e.push(Io[t])})),0!==e.length&&o.appendChild(In("basic","Fortune Upgrades Left to Buy",zn(e)))}if(e.ShowMissedGC&&o.appendChild(In("basic","Missed golden cookies",document.createTextNode(pe(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),o.appendChild(In("basic","Time till autosave",e))}}l("menu").insertBefore(o,l("menu").childNodes[2]),e.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&Pt){const t=Pt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Pt,e.appendChild(i)}else if("Upgrades"===e.children[0].innerHTML){if(Bt){const t=Bt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(n),e.insertBefore(o,e.childNodes[3]);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Bt,e.insertBefore(i,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Et){const t=Et.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Et,e.appendChild(i)}}})),e.MissingAchievements&&function(){let t;Object.values(document.querySelectorAll("div.title")).forEach((e=>{e.textContent.includes("Achievements")&&(t=e.parentElement.querySelectorAll("div.listing.crateBox")[0])})),e.MissingAchievements&&Object.values(t.children).forEach((e=>{if(!e.className.includes("enabled")){const t=e.onclick.toString().match(/(?<=\[).*(?=\])/g)[0],{icon:o}=Game.AchievementsById[t];e.style.backgroundPosition=`${48*-o[0]}px ${48*-o[1]}px`,e.onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return function(e){const t=[];"shadow"===e.pool?t.push("Shadow Achievement","#9700cf"):t.push("Achievement",0),t.push("Locked",0);let o=0;(Game.Has("Neuromancy")||Game.sesame&&"debug"===e.pool)&&(o=1),o&&0===e.won?t.push("Click to win!","#00c462"):o&&e.won>0&&t.push("Click to lose!","#00c462");let{icon:n}=e;e.iconFunction&&(n=e.iconFunction());let{desc:i}=e;e.descFunc&&(i=e.descFunc("stats"));let a="";for(let e=0;e[${t[e]}]`);return a=a.substring(1),`
\n
\n
${e.name}
\n ${a}
${i}
\n ${Game.sesame?`
Id : ${e.id} | Order : ${Math.floor(e.order)}${e.tier?` | Tier : ${e.tier}`:""}
`:""}`}(Game.AchievementsById[t])}),"top"),Game.tooltip.wobble())}}}))}()}const _n={Favourite:"Favourite Settings",Calculation:"Calculation",Notation:"Notation",Colours:"Colours and colour coding",BarsDisplay:"Infobars and visual settings",Tooltip:"Tooltips",Statistics:"Statistics",Notification:"Notifications",Miscellaneous:"Miscellaneous"},Qn={NotificationGeneral:"General Notifications",NotificationGC:"Golden Cookie",NotificationFC:"Fortune Cookie",NotificationSea:"Season Special",NotificationGard:"Garden Tick",NotificationMagi:"Full Magic Bar",NotificationWrink:"Wrinkler",NotificationWrinkMax:"Maximum Wrinklers"};function Xn(t,o){const n=document.createElement("div");n.className="title",n.style.opacity="0.7",n.style.fontSize="17px",n.appendChild(document.createTextNode(`${o} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[t]?"-":"+",i.onclick=function(){$n(t),Game.UpdateMenu()},n.appendChild(i),n}function qn(t){const o=document.createElement("div");if(o.className="listing",1===e.FavouriteSettings&&o.appendChild(function(e){const t=document.createElement("a");return de.includes(e)?(t.innerText="★",t.style.color="yellow"):t.innerText="☆",t.className="option",t.onclick=function(){!function(e){de.includes(e)?de=de.filter((function(t){return t!==e})):de.push(e)}(e),En(),Game.UpdateMenu()},t.onmouseover=function(){Game.tooltip.draw(this,escape(I.FavouriteSettingPlaceholder.innerHTML))},t.onmouseout=function(){Game.tooltip.hide()},t.appendChild(document.createTextNode(" ")),t}(t)),"bool"===bn[t].type){const n=document.createElement("a");bn[t].toggle&&0===e[t]?n.className="option off":n.className="option",n.id=Hn+t,n.onclick=function(){!function(t){e[t]+=1,e[t]===bn[t].label.length?(e[t]=0,bn[t].toggle&&(l(Hn+t).className="option off")):l(Hn+t).className="option",void 0!==bn[t].func&&bn[t].func(),l(Hn+t).innerHTML=bn[t].label[e[t]],En()}(t)},n.textContent=bn[t].label[e[t]],o.appendChild(n);const i=document.createElement("label");return i.textContent=bn[t].desc,i.style.lineHeight="1.6",o.appendChild(i),o}if("vol"===bn[t].type){const n=document.createElement("div");n.className="sliderBox";const i=document.createElement("div");i.style.float="left",i.innerHTML=bn[t].desc,n.appendChild(i);const a=document.createElement("div");a.id=`slider${t}right`,a.style.float="right",a.innerHTML=`${e[t]}%`,n.appendChild(a);const r=document.createElement("input");r.className="slider",r.id=`slider${t}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=e[t],r.oninput=function(){Un(t)},r.onchange=function(){Un(t)},n.appendChild(r),o.appendChild(n);const l=document.createElement("a");return l.className="option",l.onclick=function(){Mn(e[t.replace("Volume","SoundURL")],t.replace("Volume","Sound"),t,!0)},l.textContent="Test sound",o.appendChild(l),o}if("url"===bn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${bn[t].label} `,n.style.lineHeight="1.6",o.appendChild(n);const i=document.createElement("input");i.id=Hn+t,i.className="option",i.type="text",i.readOnly=!0,i.setAttribute("value",e[t]),i.style.width="300px",o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("input");a.id=`${Hn+t}Prompt`,a.className="option",a.type="text",a.setAttribute("value",e[t]);const r=document.createElement("a");r.className="option",r.onclick=function(){!function(e,t){Game.promptWrapL.className="framed";const o=e;Game.promptL.innerHTML=`${o}
`,Object.keys(t).forEach((e=>{const o=document.createElement("a");o.id=`promptOption${e}`,o.className="option",o.onclick=function(){PlaySound("snd/tick.mp3"),t[e][1]()},o.textContent=t[e][0],Game.promptL.children[1].appendChild(o)})),Game.promptAnchorL.style.display="block",Game.darkenL.style.display="block",Game.promptL.focus(),Game.promptOn=1,Game.UpdatePrompt()}(a.outerHTML,[["Save",function(){e[t]=l(`CMConfig${t}Prompt`).value,En(),Game.ClosePrompt(),Game.UpdateMenu()}],["Cancel",function(){Game.ClosePrompt()}]])},r.textContent="Edit",o.appendChild(r);const s=document.createElement("label");return s.textContent=bn[t].desc,s.style.lineHeight="1.6",o.appendChild(s),o}if("colour"===bn[t].type){const n=document.createElement("span");n.className="option";const i=document.createElement("input");i.id=t,i.style.width="65px",i.setAttribute("value",e[t]),n.appendChild(i),new jn(i,{hash:!0,position:"right",onInput:function(){e[this.targetElement.id]=this.toHEXString(),Pn(),En(),Game.UpdateMenu()}});const a=document.createElement("label");if(a.textContent=bn[t].desc,a.style.lineHeight="1.6",n.appendChild(a),t.includes("Flash")){const e=document.createElement("a");e.className="option",e.onclick=function(){Tn(3,t.replace("Colour",""),!0)},e.textContent="Test flash",n.appendChild(e)}return o.appendChild(n),Dn().init(),o}if("numscale"===bn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${bn[t].label} `,n.style.lineHeight="1.6",o.appendChild(n);const i=document.createElement("input");i.id=Hn+t,i.className="option",i.type="number",i.value=e[t],i.min=bn[t].min,i.max=bn[t].max,i.oninput=function(){e[t]=this.value,En(),un()},o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("label");return a.textContent=bn[t].desc,a.style.lineHeight="1.6",o.appendChild(a),o}return o}function Yn(t){if(1===e.TimerBar&&0===e.TimerBarPos){const e=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=e,t(),Game.mouseY+=e}else t()}function Kn(){S.Beautify=Beautify,Beautify=pe,S.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){S.CalculateGains(),_e=1,B=Date.now(),P=Date.now()},S.tooltip={},S.tooltip.draw=Game.tooltip.draw,S.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){S.tooltip.drawMod(e,t,o)},S.tooltip.update=Game.tooltip.update,S.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){S.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let t=0;1===e.ToolWarnLucky&&1===e.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(t=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-t-46)}px`}}()},S.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){Yn(S.UpdateWrinklers)},S.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){Yn(S.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(function(){Yn(Game.ClickCookie)}),!1),S.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){S.RebuildUpgrades(),M=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(M[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("u",`${e}`)}),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},S.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(t){(!e.BulkBuyBlock||Game.ObjectsById[t].bulkPrice-1;--e)if(Game.ObjectsById[e].amount>0){const o=Zt[Game.ObjectsById[e].name].name;Zt[o].amount-=1,Le-=1,t=Zt[o].basePrice*Game.priceIncrease**Math.max(0,Zt[o].amount-1-Zt[o].free),t=Game.modifyBuildingPrice(Zt[o],t),t=Math.ceil(t);break}const o=De;return Ro(),qo(),o!==De&&Ro(),[Xe-Game.cookiesPs,t]}(t),n=ue(o/(e+Game.cookiesPs)),i=pe(e/Game.cookiesPs*100);l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const a=document.createElement("div");a.style.minWidth="200px",a.style.textAlign="center",a.textContent=`Picking this aura will change CPS by ${pe(e)} (${i}% of current CPS).`,l("dragonAuraInfo").appendChild(a);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${n} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(t)},S.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){S.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${Ze}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},S.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==Dn().picker&&void 0!==Dn().picker.owner||(S.UpdateMenu(),function(){const t=document.createElement("div");t.className="title","prefs"===Game.onMenu?(t.textContent="Cookie Monster Settings",function(t){const o=document.createDocumentFragment();o.appendChild(t),Object.keys(_n).forEach((t=>{if("Favourite"===t){if(0!==de.length&&e.FavouriteSettings>0&&(o.appendChild(Xn(t,_n[t])),e.Header[t]))for(let e=0;e{const n=Xn(t,Qn[t]);n.style.fontSize="15px",n.style.opacity="0.5",o.appendChild(n),e.Header[t]&&Object.keys(bn).forEach((e=>{bn[e].group===t&&o.appendChild(qn(e))}))})):Object.keys(bn).forEach((e=>{bn[e].group===t&&o.appendChild(qn(e))})))}));const n=document.createElement("div");n.className="listing";const i=document.createElement("a");i.className="option",i.onclick=function(){Nn(cn)},i.textContent="Restore Default",n.appendChild(i),o.appendChild(n),l("menu").childNodes[2].insertBefore(o,l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}(t)):"stats"===Game.onMenu?e.Stats&&(t.textContent="Cookie Monster Statistics",Vn(t)):"log"===Game.onMenu&&(t.textContent="Cookie Monster ",function(t){const o=document.createElement("div");o.className="subsection";const n=document.createElement("span");if(n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=e.Header.InfoTab?"-":"+",n.onclick=function(){$n("InfoTab"),Game.UpdateMenu()},t.appendChild(n),o.appendChild(t),e.Header.InfoTab){const e=document.createElement("div");e.innerHTML='
\n Cookie Monster\n offers a wide range of tools and statistics to enhance your game experience.\n It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
\n Progess on new updates and all previous release notes can be found on the GitHub page linked above!
\n Please also report any bugs you may find over there!
\n
\n ',o.appendChild(e);const t=document.createElement("div");t.innerHTML="
\nThese are the release notes for the latest update (v 2.031.7).
\n
\nThis update implements the following functions:
\n- Updated the ordering and description of all settings of Cookie Monster
\n- Colours of Flash notifications can now be set by the user
\n- You can now select a number of settings to be your 'favourite'. They will be displayed at the top of all other settings in a new section. This functionality is toggleable and you can find it in the miscellaneous section
\n- The statistics page now shows cookies earned by clicking for a selected time period
\n- The statistics page can now show missing normal achievements, this can be toggled in the settings
\n
\nThis update fixes the following bugs:
\n- Fixed some typo's
\n- No longer show the wrinkler pop buttons when wrinklers can't spawn
\n- Fixed incorrect calculation of plant maturity for relevant tooltips
\n- Fixed edit prompts not working in settings
\n- Fixed red and purple being switched around for PP colour coding
\n- Fixed incorrect notation of numbers in Dragon tooltip and interface
\n- Fixed incorrect calculation of changing Dragon aura cost
\n- Fixed incorrect calculation of changing Pantheon gods effect
\n- Fixed fluctuating PP values when god Cyclius was selected
\n- Fixed black flickering when Golden Cookies or buffs start
\n
\n",o.appendChild(t)}const i=l("menu").children[1];i.insertBefore(o,i.children[1])}(t))}())},S.sayTime=Game.sayTime,V=function(e,t){return Number.isNaN(e)||e<=0?S.sayTime(e,t):ue(e/Game.fps,1)},S.Logic=Game.Logic,Game.Logic=function(){S.Logic();let t="Cookie Clicker";"fools"===Game.season&&(t="Cookie Baker"),ce=`${Game.OnAscend?"Ascending! ":""}${pe(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${t}`,function(){if(Game.OnAscend||0===e.Title)document.title=ce;else if(1===e.Title){let e,t,o,n=!1,i=!1;e=Vt?Vt.wrath?`[W${Math.ceil(Vt.life/Game.fps)}]`:`[G${Math.ceil(Vt.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,f&&(n=!0,t="[F]"),"christmas"===Game.season&&(i=!0,o=g?`[R${Math.ceil(_t.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let a=ce;"["===a.charAt(0)&&(a=a.substring(a.lastIndexOf("]")+1)),document.title=`${e+(n?t:"")+(i?o:"")} ${a}`}else if(2===e.Title){let e="",t=!1;Vt&&(t=!0,Vt.wrath?e+=`[W${Math.ceil(Vt.life/Game.fps)}]`:e+=`[G${Math.ceil(Vt.life/Game.fps)}]`),f&&(t=!0,e+="[F]"),"christmas"===Game.season&&g&&(e+=`[R${Math.ceil(_t.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const t=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),o=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let n="";n+=`You've been on this run for ${""===o?"not very long":o}.
`,n+='
',Game.prestige>0&&(n+=`Your prestige level is currently ${pe(Game.prestige)}.
(CpS +${pe(Game.prestige)}%)`,n+='
'),n+=Oe<1?"Ascending now would grant you no prestige.":Oe<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${pe(Oe)} prestige levels (+${pe(Oe)}% CpS)
and ${pe(Oe)} heavenly chips to spend.`,n+='
',n+=`You need ${pe(t)} more cookies for the next level.
`,n+=e.TooltipAscendButton?`
It takes ${Qt} to reach the next level and you were making ${pe(ht,2)} chips on average in the last 5 seconds.
`:"",l("ascendTooltip").innerHTML=n}()}}function Jn(){wn(),an(),sn(),r=Object.keys(Game.mods).length,w=document.createElement("style"),w.type="text/css",w.id="CMCSS",document.head.appendChild(w),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColour="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),n=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=E+t,o.textContent=e,o},i=o.appendChild(document.createElement("tr"));i.style.fontWeight="bold",i.appendChild(n("CM 2.031.7",W)),o.appendChild(document.createElement("tr")).appendChild(n("Bonus Income",O)),o.appendChild(document.createElement("tr")).appendChild(n("Payback Period",O)),o.appendChild(document.createElement("tr")).appendChild(n("Time Left",O)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{go(e)}))}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColour="black";const t=ho("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",color:D},{id:"CMTimerBarGCBar",color:j}]);e.appendChild(t);const o=ho("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",color:D},{id:"CMTimerBarRenBar",color:L}]);e.appendChild(o);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColour="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const n=document.createElement("span");return n.className=N+e,n.style.display="inline-block",n.style.height="10px",n.style.width="10px",n.style.marginRight="4px",o.appendChild(n),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(O,"Better than the best PP of a building option")),e.appendChild(o(F,"Same as the best PP building option")),e.appendChild(o(W,"Within the top 10 of PP for buildings")),e.appendChild(o(L,"Within the top 20 of PP for buildings")),e.appendChild(o(A,"Within the top 30 of PP for buildings")),e.appendChild(o(j,"Outside of the top 30 of PP for buildings")),e.appendChild(o(D,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=E+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",O)),e.appendChild(o("CMUpgradeBarGreen",F)),e.appendChild(o("CMUpgradeBarYellow",W)),e.appendChild(o("CMUpgradeBarOrange",L)),e.appendChild(o("CMUpgradeBarRed",A)),e.appendChild(o("CMUpgradeBarPurple",j)),e.appendChild(o("CMUpgradeBarGray",D)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMFlashScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMSectionHidButtons",e.style.textAlign="center";const t=document.createElement("a");t.className="option",t.onclick=function(){"flex"===l("upgrades").style.display?(l("upgrades").style.display="none",l("toggleUpgrades").style.display="none",l("techUpgrades").style.display="none",l("vaultUpgrades").style.display="none"):(l("upgrades").style.display="flex",0!==l("toggleUpgrades").children.length&&(l("toggleUpgrades").style.display="block"),0!==l("techUpgrades").children.length&&(l("techUpgrades").style.display="block"),0!==l("vaultUpgrades").children.length&&(l("vaultUpgrades").style.display="block"))},t.textContent="Hide/Show Upgrades",e.appendChild(t);const o=document.createElement("a");o.className="option",o.onclick=function(){"grid"===l("products").style.display?l("products").style.display="none":l("products").style.display="grid"},o.textContent="Hide/Show Buildings",e.appendChild(o),l("store").insertBefore(e,l("store").childNodes[2])}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}(),Object.keys(R).forEach((e=>{!function(e,t,o){const n=document.createElement("div");n.id=e;const i=document.createElement("div");i.style.minWidth=o,i.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="left",a.textContent=t,i.appendChild(a),n.appendChild(i),I[e]=n}(R[e][0],R[e][1],R[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){On()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("wb","PopAll")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==wt[1]&&(Game.wrinklers[wt[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("wb","PopFattest")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(x[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("b",`${e}`)}),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(s=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("s","Lump")}),"this"),Game.tooltip.wobble()}),h=Game.LoadMinigames,Game.LoadMinigames=function(){h(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("ha","HarvestAllButton")}),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("p",[`${t[0]}`,`${t[2]}`])}),"this"),Game.tooltip.wobble()}}))),Wn(),function(){if(Game.Objects.Temple.minigameLoaded){for(let e=0;e<11;e+=1)l(`templeGod${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("pag",e)}),"this"),Game.tooltip.wobble()};for(let e=0;e<3;e+=1)l(`templeSlot${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("pas",[e,Game.Objects.Temple.minigame.slot[e]])}),"this"),Game.tooltip.wobble()}}}(),An()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){_=1},l("backgroundLeftCanvas").onmouseout=function(){_=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{X[e]=0}))},Kn(),An(),Game.CalculateGains(),Nn(),z=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.031.7 loaded!"):Game.Notify("Cookie Monster version 2.031.7 loaded!","","",1,1),Game.Win("Third-party")}const Zn={init:function(){xn=!0;let e=!0;Game.version!==Number("2.031")&&(e=confirm("Cookie Monster version 2.031.7 is meant for Game version 2.031. Loading a different version may cause errors. Do you still want to load Cookie Monster?")),e&&(Jn(),Game.registerHook("draw",Oo),Game.registerHook("logic",Bn),Game.registerHook("click",Fo),xn=!1)},load:function(e){const t=JSON.parse(e);wn(),void 0!==t.favouriteSettings&&(de=t.favouriteSettings),Nn(t.settings),"2.031.7"!==t.version&&(Game.prefs.popups?Game.Popup("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!"):Game.Notify("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!","","",0,1))},save:kn};Game.registerMod("CookieMonster",Zn)})()})(); diff --git a/dist/CookieMonster.js b/dist/CookieMonster.js index 82003b5f..b0040f94 100644 --- a/dist/CookieMonster.js +++ b/dist/CookieMonster.js @@ -1,2 +1,2 @@ /*! For license information please see CookieMonster.js.LICENSE.txt */ -(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,n,i,a=((i={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",i.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?i.node(o):e.document))throw new Error("Missing root node");for(var n=o.querySelectorAll(t),a=new RegExp("(^|\\s)("+i.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(i.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(n=e.document.createElement("input"),!(!n.setAttribute||(n.setAttribute("type","color"),"color"!=n.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={},o=arguments[2];return t[a=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={};var n=arguments[1];for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(i.dataProp))return!0;for(var t=1;t=3&&(n=l[0].match(s))&&(i=l[1].match(s))&&(a=l[2].match(s)))return o.format="rgb",o.rgba=[parseFloat(n[1])||0,parseFloat(i[1])||0,parseFloat(a[1])||0,null],l.length>=4&&(r=l[3].match(s))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],n=0;ns[n]&&-t[n]+e[n]+l[n]/2>s[n]/2&&e[n]+l[n]-d[n]>=0?e[n]+l[n]-d[n]:e[n],-t[a]+e[a]+l[a]+d[a]-p+p*r>s[a]?-t[a]+e[a]+l[a]/2>s[a]/2&&e[a]+l[a]-p-p*r>=0?e[a]+l[a]-p-p*r:e[a]+l[a]-p+p*r:e[a]+l[a]-p+p*r>=0?e[a]+l[a]-p+p*r:e[a]+l[a]-p-p*r];else var u=[e[n],e[a]+l[a]-p+p*r];var m=u[n],h=u[a],g=o.fixed?"fixed":"absolute",f=(u[0]+d[0]>e[0]||u[0]0?Math.ceil(l/o):0,i=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),a=e.paletteHeight?Math.min(e.paletteHeight,i):i),n&&(r=n*a+(n-1)*e.paletteSpacing),{cols:o,rows:n,cellW:i,cellH:a,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=i.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!a(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{a(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=i.strList(e),o=0;o127.5},this.hide=function(){p()&&(i.removeClass(n.targetElement,i.pub.activeClassName),i.picker.wrap.parentNode.removeChild(i.picker.wrap),delete i.picker.owner)},this.show=function(){l()},this.redraw=function(){p()&&l()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||i.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(i.setDataAttr(this.targetElement,"current-color",t),e&i.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&i.flags.leaveAlpha)&&this.alphaElement){var n=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(n)}e&i.flags.leavePreview||!this.previewElement||((i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),p()&&(s(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var n=[];if(e){n.push({image:i.genColorPreviewGradient(e,t,o?o-i.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var a=i.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);n.push({image:"url('"+a.canvas.toDataURL()+"')",position:(t||"left")+" top",size:a.width+"px "+a.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else n.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},l=0;l=0;h-=1){var g=m[h];if(g)if(i.pub.presets.hasOwnProperty(g)){for(var u in i.pub.presets[g])if(i.pub.presets[g].hasOwnProperty(u))try{a(u,i.pub.presets[g][u])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",g)}var f=["preset"];for(var u in o)if(o.hasOwnProperty(u)&&-1===f.indexOf(u))try{a(u,o[u])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=i.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=i.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof i.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,i.addClass(this.targetElement,i.pub.className),i.instances.push(this),i.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),i.isButtonEmpty(this.targetElement))){i.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var C=i.getCompStyle(this.targetElement);(parseFloat(C["min-width"])||0)-1){var G=i.parseColorString(b);this._currentFormat=G?G.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(b),void 0!==k&&this.processAlphaInput(k)}}).pub.className="jscolor",i.pub.activeClassName="jscolor-active",i.pub.looseJSON=!0,i.pub.presets={},i.pub.presets.default={},i.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},i.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},i.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},i.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},i.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},i.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},i.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},i.pub.sliderInnerSpace=3,i.pub.chessboardSize=8,i.pub.chessboardColor1="#666666",i.pub.chessboardColor2="#999999",i.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],i.pub.init=function(){if(!i.initialized)for(e.document.addEventListener("mousedown",i.onDocumentMouseDown,!1),e.document.addEventListener("keyup",i.onDocumentKeyUp,!1),e.addEventListener("resize",i.onWindowResize,!1),e.addEventListener("scroll",i.onWindowScroll,!1),i.pub.install(),i.initialized=!0;i.readyQueue.length;)i.readyQueue.shift()()},i.pub.install=function(e){var t=!0;try{i.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(i.pub.lookupClass)try{i.installBySelector("input."+i.pub.lookupClass+", button."+i.pub.lookupClass,e)}catch(e){}return t},i.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(i.initialized?e():i.readyQueue.push(e),!0)},i.pub.trigger=function(e){var t=function(){i.triggerGlobal(e)};i.initialized?t():i.pub.ready(t)},i.pub.hide=function(){i.picker&&i.picker.owner&&i.picker.owner.hide()},i.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),i.genColorPreviewCanvas(e).canvas.toDataURL()},i.pub.background=function(e){var t=[];t.push(i.genColorPreviewGradient(e));var o=i.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},i.pub.options={},i.pub.lookupClass="jscolor",i.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+i.docsRef),!1},i.register(),i.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=a),a}))}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e={};const t=["","","M","G","T","P","E","Z","Y"],n=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],i=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let a,r,s,c,d,p,u,m,h,g,f,C,y,b,k,G,v,w=[],x=[],T=[],M={};const S="CMText",B="CMBack",P="Blue",E="Green",N="Yellow",O="Orange",F="Red",W="Purple",L="Gray",A="Pink",j="Brown",U=[L,P,E,N,O,F,W,A,j],D=[["GoldCookTooltipPlaceholder","Calculated with Golden Switch off","200px"],["GoldCookDragonsFortuneTooltipPlaceholder","Calculated with Golden Switch off and at least one golden cookie on-screen","240px"],["PrestMaxTooltipPlaceholder","The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","320px"],["NextPrestTooltipPlaceholder","Calculated with cookies gained from wrinklers and Chocolate egg","200px"],["HeavenChipMaxTooltipPlaceholder","The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","330px"],["ResetTooltipPlaceholder","The bonus income you would get from new prestige levels unlocked at 100% of its potential and from ascension achievements if you have the same buildings/upgrades after reset","370px"],["ChoEggTooltipPlaceholder","The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg","300px"],["ChainNextLevelPlaceholder","Cheated cookies might break this formula","250px"]],H={};let R,$,I=0,z=-1,V=[],_=1,X=1,Q=1;const q=[10,15,30,60,300,600,900,1800],Y=[1,5,10,15,30],K={Frenzy:N,"Dragon Harvest":j,"Elder frenzy":E,Clot:F,"Click frenzy":P,Dragonflight:A};let J,Z,ee,te,oe,ne,ie,ae={},re="";function le(o,a,r){const l=e.ScaleDecimals+1;if(o===1/0)return"Infinity";if(void 0===o)return"0";if(0===e.Scale)return M.Beautify(o,a);if(Number.isFinite(o)){let s="";if(0===o)return o.toString();if(o>.001&&o=.01&&o=.01&&o=.01&&o315576e4)return"XX:XX:XX:XX:XX";c+=(i<10?"0":"")+i+":",c+=(a<10?"0":"")+a+":",c+=(r<10?"0":"")+r+":",c+=(l<10?"0":"")+l+":",c+=(s<10?"0":"")+s}else{if(n>7776e5)return o?"Over 9000 days!":">9000d";c+=i>0?i+(o?1===i?" year":" years":"y")+", ":"",c+=a>0?a+(o?1===a?" day":" days":"d")+", ":"",(c.length>0||r>0)&&(c+=r+(o?1===r?" hour":" hours":"h")+", "),(c.length>0||l>0)&&(c+=l+(o?1===l?" minute":" minutes":"m")+", "),c+=s+(o?1===s?" second":" seconds":"s")}return c}function ce(t){let o,n;return t<=0?(n=e.TimeFormat?"00:00:00:00:00":"Done!",o=E):(n=se(t),o=t>300?F:t>60?O:N),{text:n,color:o}}let de,pe,ue,me,he,ge,fe,Ce,ye,be,ke,Ge,ve,we,xe,Te,Me,Se,Be,Pe,Ee,Ne,Oe,Fe,We,Le,Ae,je,Ue,De,He,Re,$e,Ie,ze,Ve=0,_e=0,Xe=0,Qe=0,qe=0,Ye=0,Ke=0,Je=0,Ze=0,et=0,tt=0,ot=0,nt=0,it=0,at=0,rt=1,lt=1,st=1,ct=0,dt=0,pt=0,ut=0,mt={},ht={},gt={},ft=0,Ct=0,yt=[0,null],bt=0,kt=0,Gt={},vt={},wt={},xt={},Tt={},Mt=0,St=0,Bt=[],Pt=0,Et=0,Nt=[],Ot=0,Ft=0,Wt=[],Lt=0,At=0,jt=[],Ut=0,Dt=0,Ht={},Rt={},$t=0,It=0,zt=[],Vt={},_t=0,Xt={0:[0,0,0],1:[0,0,0],2:[0,0,0],3:[0,0,0],4:[0,0,0],5:[0,0,0],6:[0,0,0],7:[0,0,0],8:[0,0,0],9:[0,0,0],10:[0,0,0]},Qt=[],qt=[],Yt=[];function Kt(e){let t=0;return Game.dragonAuras[Ae].name!==e&&Game.dragonAuras[je].name!==e||(t=1),"Reality Bending"!==Game.dragonAuras[Ae].name&&"Reality Bending"!==Game.dragonAuras[je].name||(t+=.1),t}function Jt(){let e=.25;return e*=1+Kt("Earth Shatterer"),e}function Zt(e,t){return void 0===$e[e]?void 0===t?1:t:$e[e]}function eo(e){const t=qt[e];return(1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function to(e){if(Game.hasGod){void 0===Qt.Temple.minigame&&(Qt.Temple.minigame=Game.Objects.Temple.minigame);const t=Qt.Temple.minigame.gods[e];if(Ue===t.id)return 1;if(De===t.id)return 2;if(He===t.id)return 3}return!1}function oo(e,t){let o=t;if(eo("Season savings")&&(o*=.99),eo("Santa's dominion")&&(o*=.99),eo("Faberge egg")&&(o*=.99),eo("Divine discount")&&(o*=.99),eo("Fortune #100")&&(o*=.99),o*=1-.02*Kt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&eo(e.fortune.name)&&(o*=.93),o*=Zt("buildingCost"),Qt.Temple.minigameLoaded){const e=to("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function no(e,t,o,n,i,a){const r=void 0===a?0:a;let l=i,s=o,c=0;-1===i&&(l=s),i||(l=Game.buyBulk);for(let o=0;o0&&(c+=o,s-=1)}return c}function io(){let t=Game.buyBulk;if(1===Game.buyMode?X=t:t=X,1===t?t=mt:10===t?t=ht:100===t&&(t=gt),1===Game.buyMode?1===e.BuildColor?Object.keys(t).forEach((o=>{l(`productPrice${Game.Objects[o].id}`).style.color=e.Colors[t[o].color]})):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(mt).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=le(no(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&e.SortBuildings){let o;1===e.SortBuildings?(o=Object.keys(mt).map((e=>{const t=mt[e];return t.name=e,t.id=Game.Objects[e].id,t})),o.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const o=t[e];return o.name=e,o.id=Game.Objects[e].id,o})),o.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const t=mt[e];return t.name=e,t.id=Game.Objects[e].id,t}));e.sort(((e,t)=>e.id-t.id));for(let t=0;t0){let e=0,t=0,o=0,n=0,i=0,a=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;eU.indexOf(t.color)?1:U.indexOf(e.color)e.price-t.price));const o=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let e=0;e{let n,i=Game.buyBulk;1===Game.buyMode?_=i:i=_,1===i&&(i=mt),10===i&&(i=ht),100===i&&(i=gt),t+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[t].childNodes[1].textContent=Game.Objects[o].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[t].textContent=le(i[o].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].className=S+i[o].color,n=e.PPDisplayTime?se(Math.round(i[o].pp)):le(Math.round(i[o].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].textContent=n;const a=ce((Game.Objects[o].bulkPrice-(Game.cookies+lo()))/ro());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[t].className=S+a.color,"Done!"===a.text&&Game.cookies{!Game.Tiers[e.tieredUpgrades[o].tier].special&&eo(e.tieredUpgrades[o].name)&&(t*=2)})),Object.keys(e.synergies).forEach((o=>{if(eo(e.synergies[o].name)){const n=e.synergies[o];n.buildingTie1.name===e.name?t*=1+.05*n.buildingTie2.amount:n.buildingTie2.name===e.name&&(t*=1+.001*n.buildingTie1.amount)}})),e.fortune&&eo(e.fortune.name)&&(t*=1.07),e.grandma&&eo(e.grandma.name)&&(t*=1+.01*Qt.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&eo(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){default:t*=1;break;case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06}return t}function yo(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;eo("Thousand fingers")&&(t+=.1),eo("Million fingers")&&(t*=5),eo("Billion fingers")&&(t*=10),eo("Trillion fingers")&&(t*=20),eo("Quadrillion fingers")&&(t*=20),eo("Quintillion fingers")&&(t*=20),eo("Sextillion fingers")&&(t*=20),eo("Septillion fingers")&&(t*=20),eo("Octillion fingers")&&(t*=20),eo("Nonillion fingers")&&(t*=20);let o=1,n=0;return Object.keys(Qt).forEach((e=>{"Cursor"!==Qt[e].name&&(n+=Qt[e].amount)})),t*=n,o*=Co(e),o*=Game.magicCpS("Cursor"),o*=Zt("cursorCps"),Game.ComputeCps(.1,eo("Reinforced index finger")+eo("Carpal tunnel prevention cream")+eo("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{eo(Game.GrandmaSynergies[e])&&(o*=2)})),eo("Bingo center/Research facility")&&(o*=4),eo("Ritual rolling pins")&&(o*=2),eo("Naughty list")&&(o*=2),eo("Elderwort biscuits")&&(o*=1.02),o*=Zt("grandmaCps"),eo("Cat ladies"))for(let e=0;e{"Grandma"!==Qt[e].name&&(i+=Qt[e].amount)})),o*=1+.01*Kt("Elder Battalion")*i,o*=Game.magicCpS(t.name),(t.baseCps+n)*o}:o.cps=function(e){let t=1;return t*=Co(e),t*=Game.magicCpS(e.name),e.baseCPS*t},o.baseCps=t.baseCps,o.name=t.name,o.tieredUpgrades=t.tieredUpgrades,o.synergies=t.synergies,o.fortune=t.fortune,o.grandma=t.grandma,o.baseCPS=t.baseCps,o.id=t.id,o.vanilla=t.vanilla,o}function bo(e){const t=Game.Upgrades[e],o={};return o.power=t.power,"function"==typeof o.power&&("Sugar crystal cookies"===t.name?o.power=function(){let e=5;return Object.keys(Qt).forEach((t=>{Qt[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(eo("Starlove")&&(e=3),Game.hasGod){const t=to("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function ko(){Ne=Game.UpgradesOwned,Oe=Game.pledges,Fe=Game.AchievementsOwned,We=Game.heavenlyPower,Le=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Qt[e];void 0===o&&(Qt[e]=yo(e),o=Qt[e],co(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&("Temple"===t.name&&(Ue=t.minigame.slot[0],De=t.minigame.slot[1],He=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Qt[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=qt[e];void 0===o&&(qt[e]=bo(e),o=qt[e]),o.bought=t.bought,qt[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=Yt[e];void 0===o&&(Yt[e]=fo(e),o=Yt[e]),o.won=t.won,Yt[e]=o})),go(),Ae=Ve,je=_e}function Go(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className="CMTextBlue",t.textContent=e,t}function vo(e){e.appendChild(Go("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(Go("Bonus Cookies per Click")),e.lastChild.style.display="none";const o=document.createElement("div");o.style.marginBottom="4px",o.style.color="white",o.style.display="none",o.id="CMTooltipCookiePerClick",e.appendChild(o),e.appendChild(Go("Payback Period"));const n=document.createElement("div");n.style.marginBottom="4px",n.id="CMTooltipPP",e.appendChild(n),e.appendChild(Go("Time Left"));const i=document.createElement("div");if(i.id="CMTooltipTime",e.appendChild(i),"b"===ee){e.appendChild(Go("Production left till next achievement")),e.lastChild.id="CMTooltipProductionHeader";const t=document.createElement("div");t.id="CMTooltipProduction",e.appendChild(t)}}function wo(e,t,o){let n=e,i=0;for(;n{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function To(){null!==l("CMDispTooltipWarningParent")&&(0===e.ToolWarnPos?(l("CMDispTooltipWarningParent").style.top="auto",l("CMDispTooltipWarningParent").style.margin="4px -4px",l("CMDispTooltipWarningParent").style.padding="3px 4px"):(l("CMDispTooltipWarningParent").style.right="auto",l("CMDispTooltipWarningParent").style.margin="4px",l("CMDispTooltipWarningParent").style.padding="4px 3px"))}function Mo(){if(ko(),"none"!==l("tooltipAnchor").style.display&&l("CMTooltipArea")){l("CMTooltipArea").innerHTML="";const t=function(){l("tooltip").firstChild.style.paddingBottom="4px";const e=document.createElement("div");return e.style.border="1px solid",e.style.padding="4px",e.style.margin="0px -4px",e.id="CMTooltipBorder",e.className="CMTextGray",e}();l("CMTooltipArea").appendChild(t),"b"===ee?function(){if(1===e.TooltipBuildUpgrade&&1===Game.buyMode){let t;if(vo(l("CMTooltipBorder")),1===Game.buyMode?Q=t:t=Q,1===Game.buyBulk?t=mt:10===Game.buyBulk?t=ht:100===Game.buyBulk&&(t=gt),J=Game.Objects[te].bulkPrice,Z=t[te].bonus,1===e.TooltipBuildUpgrade&&1===Game.buyMode){l("CMTooltipIncome").textContent=le(Z,2);const o=Math.round(Z/Game.cookiesPs*1e4);Number.isFinite(o)&&0!==o?l("CMTooltipIncome").textContent+=` (${o/100}% of income)`:l("CMTooltipIncome").textContent+=` (<0${e.ScaleSeparator?",":"."}01% of income)`,l("CMTooltipBorder").className=S+t[te].color,e.PPDisplayTime?l("CMTooltipPP").textContent=se(t[te].pp):l("CMTooltipPP").textContent=le(t[te].pp,2),l("CMTooltipPP").className=S+t[te].color;const n=ce((J-(Game.cookies+lo()))/ro());l("CMTooltipTime").textContent=n.text,"Done!"===n.text&&Game.cookiest.plantsById[t.plot[te[1]][te[0]][0]-1].matureBase,o=t.plantsById[t.plot[te[1]][te[0]][0]-1].name;l("CMTooltipBorder").appendChild(Go("Reward (Current / Maximum)"));const n=document.createElement("div");n.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(n),"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${le(60*Game.cookiesPs*30)}`:"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${le(60*Game.cookiesPs*3)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${le(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${le(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===ee?function(){const{minigame:t}=Game.Objects.Farm;if(e.TooltipLump){l("CMTooltipBorder").appendChild(Go("Cookies gained from harvesting:"));let e=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let n=0;n<6;n++)for(let i=0;i<6;i++)if(t.plot[n][i][0]>=1){const a=t.plot[n][i],r=t.plantsById[a[0]-1],l=r.name;let s=!0;o&&r.immortal&&(s=!1),a[1]0&&t=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",l("CMTimerBarGCTime").textContent=Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps),n+=1),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",l("CMTimerBarRenTime").textContent=Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps),n+=1):l("CMTimerBarRen").style.display="none";const i={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((t=>{if(Game.buffs[t]){const a=so(Game.buffs[t].name,Game.buffs[t].name,[{id:`${Game.buffs[t].name}Bar`}]);a.style.display="";let r="";r=void 0!==K[Game.buffs[t].name]?K[Game.buffs[t].name]:W,a.lastChild.children[1].className=B+r,a.lastChild.children[1].style.color="black",2===e.TimerBarOverlay?a.lastChild.children[1].textContent=`${Math.round(Game.buffs[t].time/Game.buffs[t].maxTime*100)}%`:a.lastChild.children[1].textContent="",a.lastChild.children[1].style.width=`${Math.round(Game.buffs[t].time*(o-8*Math.ceil(Game.buffs[t].time/Game.fps).toString().length)/Game.buffs[t].maxTime)}px`,a.lastChild.children[2].textContent=Math.ceil(Game.buffs[t].time/Game.fps),n+=1,i[Game.buffs[t].name]=a}})),Object.keys(i).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(i[e])})),0!==n&&(l("CMTimerBar").style.height=12*n+2+"px"),ie!==n&&(ie=n,mo())}}(),po(),Mo(),function(){if(1===e.TooltipWrink&&1===I){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===V[t]||void 0===V[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const n=document.createElement("div");n.style.textAlign="center",n.id="CMTooltipWrinkler",o.appendChild(n),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),z=t,V[t]=1}}else V[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===e.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[z],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[z].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Qt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=le(e)}}(),e.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu(),e.Scale){let e=l("cookies").innerHTML.replace(/.*(?=
)/i,le(Game.cookies));Game.prefs.monospace&&(e=`${e}`),l("cookies").innerHTML=e}}class Bo{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){let t=e;t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length);let o=0;for(let e=this.queue.length-1;e>=0&&e>this.queue.length-1-t;e--)o+=this.queue[e];return 0===o?0:o/t}}function Po(){const t=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let o=Game.cookies+_t;Game.cpsSucked>0&&(o+=ft),Ut=Math.max(Game.cookiesEarned,o),o*=.05;const n=t-fe,i=Math.max(0,Game.cookies-Ce)/n,a=Math.max(0,ft-ye)/n,r=Math.max(0,yt[0]-be)/n,l=Math.max(0,o-ut)/n,s=(Game.cookieClicks-ke)/n;for(let e=0;ezt[30][0]?F:W,0!==Number(e.PPSecondsLowerLimit)&&o/ro()0&&(n=F),n}function No(t,o){Object.keys(t).forEach((n=>{if(e.PPRigidelMode&&1===o)t[n].color=L;else{t[n].color=Eo(t[n],Game.Objects[n].getSumPrice(o));for(let o=0;o{const i=Game.Objects[n].getSumPrice(o);Game.cookiesPs?t[n].pp=Math.max(i-(Game.cookies+lo()),0)/Game.cookiesPs+i/t[n].bonus:t[n].pp=i/t[n].bonus,e.PPRigidelMode&&1===o||zt.push([t[n].pp,o])}))}function Fo(){!function(){It=1/0,zt=[],void 0===e.PPExcludeTop&&(e.PPExcludeTop=0),Oo(mt,1),Oo(ht,10),Oo(gt,100),zt.sort(((e,t)=>e[0]-t[0]));let t=0;if(e.PPOnlyConsiderBuyable)for(;zt[t][1]>Game.cookies&&(t+=1,zt.length!==t+1););It=zt[e.PPExcludeTop][t],No(mt,1),No(ht,10),No(gt,100)}(),Object.keys(Gt).forEach((e=>{Game.cookiesPs?Gt[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+lo()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/Gt[e].bonus:Gt[e].pp=Game.Upgrades[e].getPrice()/Gt[e].bonus,Number.isNaN(Gt[e].pp)&&(Gt[e].pp=1/0),Gt[e].color=Eo(Gt[e],Game.Upgrades[e].getPrice())}))}function Wo(e,t,o,n,i){let a=o,r=0;for(let o=0;o{if(Game.Objects[e].minigameLoaded&&Game.Objects[e].minigame.effs){const o=Game.Objects[e].minigame.effs;Object.keys(o).forEach((e=>{t[e]?t[e]*=o[e]:t[e]=o[e]}))}})),$e=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(Le)*We*function(){let e=0;if(eo("Heavenly chip secret")&&(e+=.05),eo("Heavenly cookie stand")&&(e+=.2),eo("Heavenly bakery")&&(e+=.25),eo("Heavenly confectionery")&&(e+=.25),eo("Heavenly key")&&(e+=.25),e*=1+.05*Kt("Dragon God"),eo("Lucky digit")&&(e*=1.01),eo("Lucky number")&&(e*=1.01),eo("Lucky payout")&&(e*=1.01),Game.hasGod){const t=to("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=Zt("cps"),eo("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];eo(o.name)&&("function"==typeof o.power?e*=1+.01*qt[o.name].power(qt[o.name]):e*=1+.01*o.power)})),eo("Specialized chocolate chips")&&(e*=1.01),eo("Designer cocoa beans")&&(e*=1.02),eo("Underworld ovens")&&(e*=1.03),eo("Exotic nuts")&&(e*=1.04),eo("Arcane sugar")&&(e*=1.05),eo("Increased merriness")&&(e*=1.15),eo("Improved jolliness")&&(e*=1.15),eo("A lump of coal")&&(e*=1.01),eo("An itchy sweater")&&(e*=1.01),eo("Santa's dominion")&&(e*=1.2),eo("Fortune #100")&&(e*=1.01),eo("Fortune #101")&&(e*=1.07),eo("Dragon scale")&&(e*=1.03);let o=1;if(to){let t=to("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=to("ages"),1===t?e*=1+.15*Math.sin(Date.now()/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(Date.now()/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(Date.now()/1e3/86400*Math.PI*2)),t=to("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=to("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=to("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}eo("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const n=Fe/25;let i=1;if(eo("Santa's milk and cookies")&&(i*=1.05),i*=1+.05*Kt("Breath of Milk"),to){const e=to("mother");1===e?i*=1.1:2===e?i*=1.05:3===e&&(i*=1.03)}i*=Zt("milk");let a=1;eo("Kitten helpers")&&(a*=1+.1*n*i),eo("Kitten workers")&&(a*=1+.125*n*i),eo("Kitten engineers")&&(a*=1+.15*n*i),eo("Kitten overseers")&&(a*=1+.175*n*i),eo("Kitten managers")&&(a*=1+.2*n*i),eo("Kitten accountants")&&(a*=1+.2*n*i),eo("Kitten specialists")&&(a*=1+.2*n*i),eo("Kitten experts")&&(a*=1+.2*n*i),eo("Kitten consultants")&&(a*=1+.2*n*i),eo("Kitten assistants to the regional manager")&&(a*=1+.175*n*i),eo("Kitten marketeers")&&(a*=1+.15*n*i),eo("Kitten analysts")&&(a*=1+.125*n*i),eo("Kitten executives")&&(a*=1+.115*n*i),eo("Kitten angels")&&(a*=1+.1*n*i),eo("Fortune #103")&&(a*=1+.05*n*i),Object.keys(Qt).forEach((e=>{const t=Qt[e];let a=t.cps(t);1!==Game.ascensionMode&&(a*=(1+.01*t.level)*o),"Grandma"===t.name&&eo("Milkhelp® lactose intolerance relief tablets")&&(a*=1+.05*n*i),Ie+=t.amount*a})),eo('"egg"')&&(Ie+=9),e*=a;let r=1;if(eo("Chicken egg")&&(r*=1.01),eo("Duck egg")&&(r*=1.01),eo("Turkey egg")&&(r*=1.01),eo("Quail egg")&&(r*=1.01),eo("Robin egg")&&(r*=1.01),eo("Ostrich egg")&&(r*=1.01),eo("Cassowary egg")&&(r*=1.01),eo("Salmon roe")&&(r*=1.01),eo("Frogspawn")&&(r*=1.01),eo("Shark egg")&&(r*=1.01),eo("Turtle egg")&&(r*=1.01),eo("Ant larva")&&(r*=1.01),eo("Century egg")){let e=10*Math.floor((Date.now()-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),dt=1+.1*(1-(1-e/100)**3),r*=dt}e*=r,eo("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+Kt("Radiant Appetite");const l=Ie*e;Object.keys(Game.CpsAchievements).forEach((e=>{l>=Game.CpsAchievements[e].threshold&&Lo(Game.CpsAchievements[e].name)})),ze=l;const{n:s}=Game.shimmerTypes.golden,c=Kt("Dragon's Fortune");for(let t=0;t{eo(e[o])&&(t+=.1)}))}e*=t}if(eo("Shimmering veil [off]")){let t=.5;eo("Reinforced membrane")&&(t+=.1),e*=1+t}eo("Magic shenanigans")&&(e*=1e3),eo("Occult obstruction")&&(e*=0),Ie=Game.runModHookOnValue("cps",Ie),e*=xo(),Ie*=e}const jo=["Fortune #001","Fortune #002","Fortune #003","Fortune #004","Fortune #005","Fortune #006","Fortune #007","Fortune #008","Fortune #009","Fortune #010","Fortune #011","Fortune #012","Fortune #013","Fortune #014","Fortune #015","Fortune #016","Fortune #017","Fortune #018","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],Uo=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],Do=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],Ho=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],Ro=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function $o(e){return Yt[e]?Yt[e].won:0}function Io(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{eo(Game.GrandmaSynergies[t])&&(e+=1)})),!$o("Elder")&&e>=7&&Lo("Elder"),!$o("Veteran")&&e>=14&&Lo("Veteran");let t=0,o=1,n=1,i=1e5;Object.keys(Qt).forEach((e=>{t+=Qt[e].amount,i=Math.min(Qt[e].amount,i),$o("Mathematician")||Qt[e].amount=1&&Lo("One with everything"),1===o&&Lo("Mathematician"),1===n&&Lo("Base 10"),i>=100&&Lo("Centennial"),i>=150&&Lo("Centennial and a half"),i>=200&&Lo("Bicentennial"),i>=250&&Lo("Bicentennial and a half"),i>=300&&Lo("Tricentennial"),i>=350&&Lo("Tricentennial and a half"),i>=400&&Lo("Quadricentennial"),i>=450&&Lo("Quadricentennial and a half"),i>=500&&Lo("Quincentennial"),i>=550&&Lo("Quincentennial and a half"),i>=600&&Lo("Sexcentennial"),t>=100&&Lo("Builder"),t>=500&&Lo("Architect"),t>=1e3&&Lo("Engineer"),t>=2e3&&Lo("Lord of Constructs"),t>=4e3&&Lo("Grand design"),t>=8e3&&Lo("Ecumenopolis"),Ne>=20&&Lo("Enhancer"),Ne>=50&&Lo("Augmenter"),Ne>=100&&Lo("Upgrader"),Ne>=200&&Lo("Lord of Progress"),Ne>=300&&Lo("The full picture"),Ne>=400&&Lo("When there's nothing left to add"),t>=4e3&&Ne>=300&&Lo("Polymath"),t>=8e3&&Ne>=400&&Lo("Renaissance baker"),Qt.Cursor.amount+Qt.Grandma.amount>=777&&Lo("The elder scrolls");let a=!0;Object.keys(Uo).forEach((e=>{eo(Uo[e])||(a=!1)})),a&&Lo("Spooky cookies");let r=!0;if(Object.keys(Do).forEach((e=>{eo(Do[e])||(r=!1)})),r&&Lo("Let it snow"),eo("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{eo(e[o].name)&&(t+=1)})),t>=e.length&&Lo("O Fortuna")}}function zo(e){const t={};return Object.keys(Game.Objects).forEach((o=>{t[o]={},t[o].bonus=function(e,t){ko(),Qt[e].amount+=t;const o=Qt[e];"Cursor"===e?(o.amount>=1&&Lo("Click"),o.amount>=2&&Lo("Double-click"),o.amount>=50&&Lo("Mouse wheel"),o.amount>=100&&Lo("Of Mice and Men"),o.amount>=200&&Lo("The Digital"),o.amount>=300&&Lo("Extreme polydactyly"),o.amount>=400&&Lo("Dr. T"),o.amount>=500&&Lo("Thumbs, phalanges, metacarpals"),o.amount>=600&&Lo("With her finger and her thumb"),o.amount>=700&&Lo("Gotta hand it to you"),o.amount>=800&&Lo("The devil's workshop")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&Lo(Game.Objects[o.name].tieredAchievs[e].name)}));const n=Fe;return Ao(),Io(),n!==Fe&&Ao(),Ie-Game.cookiesPs}(o,e),1!==e&&(Be=1)})),t}function Vo(){Object.keys(Game.Objects).forEach((e=>{mt[e].price=Wo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),ht[e].price=Wo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),gt[e].price=Wo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)}))}function _o(){mt=zo(1),ht=zo(10),gt=zo(100),Gt=[],Object.keys(Game.Upgrades).forEach((t=>{const o=function(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){ko(),"Shimmering veil [on]"===qt[e].name?qt["Shimmering veil [off]"].bought=0:"Golden switch [on]"===qt[e].name?qt["Golden switch [off]"].bought=0:qt[e].bought=(qt[e].bought+1)%2,qt[e],Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Ne+=1),"Elder Pledge"===e?(Oe+=1,Oe>0&&Lo("Elder nap"),Oe>=5&&Lo("Elder slumber")):"Elder Covenant"===e?Lo("Elder calm"):"Prism heart biscuits"===e?Lo("Lovely cookies"):"Heavenly key"===e&&Lo("Wholesome");const t=Fe;Ao(),Io(),t!==Fe&&Ao();const o=function(){let e=0;eo("Thousand fingers")&&(e+=.1),eo("Million fingers")&&(e*=5),eo("Billion fingers")&&(e*=10),eo("Trillion fingers")&&(e*=20),eo("Quadrillion fingers")&&(e*=20),eo("Quintillion fingers")&&(e*=20),eo("Sextillion fingers")&&(e*=20),eo("Septillion fingers")&&(e*=20),eo("Octillion fingers")&&(e*=20),eo("Nonillion fingers")&&(e*=20);let t=0;Object.keys(Qt).forEach((e=>{t+=Qt[e].amount})),t-=Qt.Cursor.amount,e*=t,eo("Plastic mouse")&&(e+=.01*Ie),eo("Iron mouse")&&(e+=.01*Ie),eo("Titanium mouse")&&(e+=.01*Ie),eo("Adamantium mouse")&&(e+=.01*Ie),eo("Unobtainium mouse")&&(e+=.01*Ie),eo("Eludium mouse")&&(e+=.01*Ie),eo("Wishalloy mouse")&&(e+=.01*Ie),eo("Fantasteel mouse")&&(e+=.01*Ie),eo("Nevercrack mouse")&&(e+=.01*Ie),eo("Armythril mouse")&&(e+=.01*Ie),eo("Technobsidian mouse")&&(e+=.01*Ie),eo("Plasmarble mouse")&&(e+=.01*Ie),eo("Miraculite mouse")&&(e+=.01*Ie),eo("Fortune #104")&&(e+=.01*Ie);let o=1;if(eo("Santa's helpers")&&(o*=1.1),eo("Cookie egg")&&(o*=1.1),eo("Halo gloves")&&(o*=1.1),eo("Dragon claw")&&(o*=1.03),eo("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,eo("Luminous gloves")?20:10)),o*=Zt("click"),Qt.Temple.minigameLoaded&&to){const e=to("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}Object.keys(Game.buffs).forEach((e=>{void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick)})),o*=1+.05*Kt("Dragon Cursor");let n=o*Game.ComputeCps(1,eo("Reinforced index finger")+eo("Carpal tunnel prevention cream")+eo("Ambidextrous"),e);return n=Game.runModHookOnValue("cookiesPerClick",n),Game.hasBuff("Cursed finger")&&(n=Game.buffs["Cursed finger"].power),n}()-Game.computedMouseCps;return o?[Ie-Game.cookiesPs,o]:[Ie-Game.cookiesPs]}return[]}(t);"Elder Pledge"===t?(Gt[t]={bonus:Game.cookiesPs-Ge},1===e.CalcWrink?Gt[t].bonus-=ve:2===e.CalcWrink&&(Gt[t].bonus-=we),Number.isFinite(Gt[t].bonus)||(Gt[t].bonus=0)):(Gt[t]={},o[0]&&(Gt[t].bonus=o[0]),o[1]&&(Gt[t].bonusMouse=o[1]))}))}function Xo(e,t,o){let n=0,i=0,a=0,r=0,l=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;a0?e/=t:e=0,Bt=Xo(7,e,lt),Mt=2*Bt[1]/lt,St=Bt[2]/60/60/6/rt,Nt=Xo(6,e,st),Pt=2*Nt[1]/st,Et=Nt[2]/60/60/6/rt,Wt=Xo(7,7*e,lt),Ot=2*Wt[1]/lt,Ft=Wt[2]/60/60/6/rt,jt=Xo(6,7*e,st),Lt=2*jt[1]/st,At=jt[2]/60/60/6/rt}function qo(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),n=e-Me,i=Math.max(0,o-Se)/n;for(let e=0;e{e.push(Game.Upgrades[t])})),e.sort((function(e,t){return e.order>t.order?1:e.order{const o=e[t];if(0===o.bought){let e="";e+=function(e){let t="crate upgrade missing";"prestige"===e.pool&&(t+=" heavenly");let o=0;Game.prefs.crates||(o=1),o&&(t+=" noFrame");let{icon:n}=e;e.iconFunction&&(n=e.iconFunction());const i=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?xt+=e:"cookie"===o.pool?Tt+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(wt+=e)}}))}function Ko(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),pt=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(pt*=2)}}function Jo(){qe=900*at/.15,qe*=rt;const e=xo();e>0?qe/=e:qe=0,Ye=lt*(.15*qe)+13,Ke=st*(.15*qe)+13,Je=7*qe,Ze=lt*(.15*Je)+13,et=st*(.15*Je)+13,tt=2*qe,ot=.15*tt,nt=0;let t=0,o=0;Object.keys(Game.Objects).forEach((e=>{Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&(o+=1)})),Object.keys(Game.Objects).forEach((e=>{(Game.Objects[e].amountnt&&(nt=2*Game.Objects[e].price,it=e)}))}function Zo(){let e=1,t=1,o=1;eo("Green yeast digestives")&&(o*=1.01),eo("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),lt=o*e,st=o*t,rt=1,0===Game.shimmerTypes.golden.n&&(rt*=1+1.23*Game.auraMult("Dragon's Fortune"))}function en(){ft=0,Ct=0,yt=[0,null];for(let e=0;eyt[0]&&(yt=[t,e]))}}function tn(){go(),en(),Jo(),Zo(),Qo(),Yo(),Ko(),de=new Bo(q[q.length-1]),pe=new Bo(q[q.length-1]),ue=new Bo(q[q.length-1]),me=new Bo(q[q.length-1]),he=new Bo(Y[Y.length-1]),ge=new Bo(5),qo(),Po(),_o(),Vo(),Fo()}const on={BotBar:1,TimerBar:1,TimerBarPos:0,TimerBarOverlay:2,BuildColor:1,PPDisplayTime:0,UpBarColor:1,UpgradeBarFixedPos:1,CalcWrink:0,CPSMode:1,AvgCPSHist:3,AvgClicksHist:0,PPExcludeTop:0,PPRigidelMode:0,PPSecondsLowerLimit:0,PPOnlyConsiderBuyable:0,ToolWarnBon:1,Title:1,GeneralSound:1,GCNotification:0,GCFlash:1,GCSound:1,GCVolume:100,GCSoundURL:"https://freesound.org/data/previews/66/66717_931655-lq.mp3",FortuneNotification:0,FortuneFlash:1,FortuneSound:1,FortuneVolume:100,FortuneSoundURL:"https://freesound.org/data/previews/174/174027_3242494-lq.mp3",SeaNotification:0,SeaFlash:1,SeaSound:1,SeaVolume:100,SeaSoundURL:"https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3",GardFlash:1,GardSound:1,GardVolume:100,GardSoundURL:"https://freesound.org/data/previews/103/103046_861714-lq.mp3",MagicNotification:0,MagicFlash:1,MagicSound:1,MagicVolume:100,MagicSoundURL:"https://freesound.org/data/previews/221/221683_1015240-lq.mp3",WrinklerNotification:0,WrinklerFlash:1,WrinklerSound:1,WrinklerVolume:100,WrinklerSoundURL:"https://freesound.org/data/previews/124/124186_8043-lq.mp3",WrinklerMaxNotification:0,WrinklerMaxFlash:1,WrinklerMaxSound:1,WrinklerMaxVolume:100,WrinklerMaxSoundURL:"https://freesound.org/data/previews/152/152743_15663-lq.mp3",TooltipBuildUpgrade:1,TooltipAmor:0,ToolWarnLucky:1,ToolWarnLuckyFrenzy:1,ToolWarnConjure:1,ToolWarnConjureFrenzy:1,ToolWarnEdifice:1,ToolWarnUser:0,ToolWarnPos:1,TooltipGrim:1,TooltipWrink:1,TooltipLump:1,TooltipPlots:1,TooltipPantheon:1,DragonAuraInfo:1,TooltipAscendButton:1,Stats:1,MissingUpgrades:1,UpStats:1,TimeFormat:0,DetailedTime:1,GrimoireBar:1,HeavenlyChipsTarget:1,ShowMissedGC:1,Scale:2,ScaleDecimals:2,ScaleSeparator:0,ScaleCutoff:999999,Colors:{Blue:"#4bb8f0",Green:"#00ff00",Yellow:"#ffff00",Orange:"#ff7f00",Red:"#ff0000",Purple:"#ff00ff",Gray:"#b3b3b3",Pink:"#ff1493",Brown:"#8b4513"},SortBuildings:0,SortUpgrades:0,GCTimer:1,Favicon:1,WrinklerButtons:1,HideSectionsButtons:0,BulkBuyBlock:0,Header:{BarsColors:1,Calculation:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Tooltip:1,Statistics:1,Notation:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Misc:1,InfoTab:1}},nn=function(e){if(1===e){const e=function(){try{Notification.requestPermission().then()}catch(e){return!1}return!0};"Notification"in window?e()?Notification.requestPermission().then():Notification.requestPermission():console.log("This browser does not support notifications.")}};function an(){1===e.BotBar?(l("CMBotBar").style.display="",po()):l("CMBotBar").style.display="none",mo()}function rn(){BeautifyAll(),Game.RefreshStore(),Game.RebuildUpgrades(),po(),io(),ao()}function ln(){let t="";for(let o=0;o0?Ht.wrath?l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}class cn{constructor(e,t){this.type=e,this.group=t}}class dn extends cn{constructor(e,t,o,n,i,a=null){super(e,t),this.label=o,this.desc=n,this.toggle=i,a&&(this.func=a)}}class pn extends cn{constructor(e,t,o,n){super(e,t),this.label=o,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}}class un extends cn{constructor(e,t,o,n,i,a){super(e,t),this.label=o,this.desc=n,this.min=i,this.max=a}}const mn={BotBar:new dn("bool","BarsColors",["Bottom Bar OFF","Bottom Bar ON"],"Building Information",!0,(function(){an()})),TimerBar:new dn("bool","BarsColors",["Timer Bar OFF","Timer Bar ON"],"Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(function(){ho()})),TimerBarPos:new dn("bool","BarsColors",["Timer Bar Position (Top Left)","Timer Bar Position (Bottom)"],"Placement of the Timer Bar",!1,(function(){0===e.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),mo()})),TimerBarOverlay:new dn("bool","BarsColors",["Timer Bar Overlay OFF","Timer Bar Overlay Only Seconds","Timer Bar Overlay Full"],"Overlay on timers displaying seconds and/or percentage left",!0),SortBuildings:new dn("bool","BarsColors",["Sort Buildings: Default","Sort Buildings: PP of x1 purchase","Sort Buildings: PP of selected bulk mode"],"Sort the display of buildings in either default order or by PP",!1,(function(){io()})),SortUpgrades:new dn("bool","BarsColors",["Sort Upgrades: Default","Sort Upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(function(){ao()})),BuildColor:new dn("bool","BarsColors",["Building Colors OFF","Building Colors ON"],"Color code buildings",!0,(function(){io()})),PPDisplayTime:new dn("bool","BarsColors",["PP As Value (Standard)","PP As Time Unit"],"Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.",!1),UpBarColor:new dn("bool","BarsColors",["Upgrade Colors/Bar OFF","Upgrade Colors with Bar ON","Upgrade Colors without Bar ON"],"Color code upgrades and optionally add a counter bar",!1,(function(){1===e.UpBarColor?(l("CMUpgradeBar").style.display="",ao()):2===e.UpBarColor?(l("CMUpgradeBar").style.display="none",ao()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),Colors:new class extends cn{constructor(e,t,o,n){super(e,t),this.desc=o,this.func=n}}("color","BarsColors",{Blue:"Color Blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels",Green:"Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels",Yellow:"Color Yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels",Orange:"Color Orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels",Red:"Color Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels",Purple:"Color Purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels",Gray:"Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar",Pink:"Color Pink. Used for Dragonflight bar",Brown:"Color Brown. Used for Dragon Harvest bar"},(function(){ln()})),UpgradeBarFixedPos:new dn("bool","BarsColors",["Upgrade Bar Fixed Position OFF","Upgrade Bar Fixed Position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(function(){1===e.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),CalcWrink:new dn("bool","Calculation",["Calculate with Wrinklers OFF","Calculate with Wrinklers ON","Calculate with Single Fattest Wrinkler ON"],"Calculate times and average Cookies Per Second with (only the single non-shiny fattest) Wrinklers",!0,(function(){Re=!0})),CPSMode:new dn("bool","Calculation",["Current Cookies Per Second","Average Cookies Per Second"],"Calculate times using current Cookies Per Second or average Cookies Per Second",!1),AvgCPSHist:new dn("bool","Calculation",["Average CPS for past 10s","Average CPS for past 15s","Average CPS for past 30s","Average CPS for past 1m","Average CPS for past 5m","Average CPS for past 10m","Average CPS for past 15m","Average CPS for past 30m"],"How much time average Cookies Per Second should consider",!1),AvgClicksHist:new dn("bool","Calculation",["Average Cookie Clicks for past 1s","Average Cookie Clicks for past 5s","Average Cookie Clicks for past 10s","Average Cookie Clicks for past 15s","Average Cookie Clicks for past 30s"],"How much time average Cookie Clicks should consider",!1),PPExcludeTop:new dn("bool","Calculation",["Don't Ignore Any","Ignore 1st Best","Ignore 1st and 2nd Best","Ignore 1st, 2nd and 3rd Best"],"Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPRigidelMode:new dn("bool","Calculation",["Rigidel Mode OFF","Rigidel Mode ON"],'Makes CookieMonster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',!0),PPSecondsLowerLimit:new un("numscale","Calculation","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),PPOnlyConsiderBuyable:new dn("bool","Calculation",["Don't Ignore Non-Buyable","Ignore Non-Buyable"],"Makes CookieMonster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),ToolWarnBon:new dn("bool","Calculation",["Calculate Tooltip Warning With Bonus CPS OFF","Calculate Tooltip Warning With Bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),Title:new dn("bool","NotificationGeneral",["Title OFF","Title ON","Title Pinned Tab Highlight"],'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns; "!" means that Golden Cookie/Reindeer can spawn',!0),GeneralSound:new dn("bool","NotificationGeneral",["Consider Game Volume Setting OFF","Consider Game Volume Setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new dn("bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when Golden Cookie spawns",!0,(function(){nn(e.GCNotification)})),GCFlash:new dn("bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on Golden Cookie",!0),GCSound:new dn("bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on Golden Cookie",!0),GCVolume:new pn("vol","NotificationGC",[],"Volume"),GCSoundURL:new dn("url","NotificationGC","Sound URL:","URL of the sound to be played when a Golden Cookie spawns"),FortuneNotification:new dn("bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when Fortune Cookie is on the Ticker",!0,(function(){nn(e.FortuneNotification)})),FortuneFlash:new dn("bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on Fortune Cookie",!0),FortuneSound:new dn("bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on Fortune Cookie",!0),FortuneVolume:new pn("vol","NotificationFC",[],"Volume"),FortuneSoundURL:new dn("url","NotificationFC","Sound URL:","URL of the sound to be played when the Ticker has a Fortune Cookie"),SeaNotification:new dn("bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on Season Popup",!0,(function(){nn(e.SeaNotification)})),SeaFlash:new dn("bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on Season Popup",!0),SeaSound:new dn("bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on Season Popup",!0),SeaVolume:new pn("vol","NotificationSea",[],"Volume"),SeaSoundURL:new dn("url","NotificationSea","Sound URL:","URL of the sound to be played when a Season Special spawns"),GardFlash:new dn("bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on Garden Tick",!0),GardSound:new dn("bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on Garden Tick",!0),GardVolume:new pn("vol","NotificationGard",[],"Volume"),GardSoundURL:new dn("url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new dn("bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(function(){nn(e.MagicNotification)})),MagicFlash:new dn("bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),MagicSound:new dn("bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new pn("vol","NotificationMagi",[],"Volume"),MagicSoundURL:new dn("url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new dn("bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a Wrinkler appears",!0,(function(){nn(e.WrinklerNotification)})),WrinklerFlash:new dn("bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a Wrinkler appears",!0),WrinklerSound:new dn("bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a Wrinkler appears",!0),WrinklerVolume:new pn("vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new dn("url","NotificationWrink","Sound URL:","URL of the sound to be played when a Wrinkler appears"),WrinklerMaxNotification:new dn("bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of Wrinklers has appeared",!0,(function(){nn(e.WrinklerMaxNotification)})),WrinklerMaxFlash:new dn("bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxSound:new dn("bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxVolume:new pn("vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new dn("url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of Wrinklers has appeared"),TooltipBuildUpgrade:new dn("bool","Tooltip",["Building/Upgrade Tooltip Information OFF","Building/Upgrade Tooltip Information ON"],"Extra information in Building/Upgrade tooltips",!0),TooltipAmor:new dn("bool","Tooltip",["Buildings Tooltip Amortization Information OFF","Buildings Tooltip Amortization Information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new dn("bool","Tooltip",["Tooltip Lucky Warning OFF","Tooltip Lucky Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new dn("bool","Tooltip",["Tooltip Lucky Frenzy Warning OFF","Tooltip Lucky Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new dn("bool","Tooltip",["Tooltip Conjure Warning OFF","Tooltip Conjure Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new dn("bool","Tooltip",["Tooltip Conjure Frenzy Warning OFF","Tooltip Conjure Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new dn("bool","Tooltip",["Tooltip Edifice Warning OFF","Tooltip Edifice Warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new un("numscale","Tooltip","Tooltip Warning At x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnPos:new dn("bool","Tooltip",["Tooltip Warning Position (Left)","Tooltip Warning Position (Bottom)"],"Placement of the warning boxes",!1,(function(){To()})),TooltipGrim:new dn("bool","Tooltip",["Grimoire Tooltip Information OFF","Grimoire Tooltip Information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new dn("bool","Tooltip",["Wrinkler Tooltip OFF","Wrinkler Tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new dn("bool","Tooltip",["Sugar Lump Tooltip OFF","Sugar Lump Tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new dn("bool","Tooltip",["Garden Plots Tooltip OFF","Garden Plots Tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipPantheon:new dn("bool","Tooltip",["Show Extra Info Pantheon Tooltip OFF","Show Extra Info Pantheon Tooltip ON"],"Shows additional info in the pantheon tooltip",!0),DragonAuraInfo:new dn("bool","Tooltip",["Extra Dragon Aura Info OFF","Extra Dragon Aura Info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),TooltipAscendButton:new dn("bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new dn("bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new dn("bool","Statistics",["Missing Upgrades OFF","Missing Upgrades ON"],"Shows Missing upgrades in Stats Menu. This feature can be laggy for users with a low amount of unlocked achievements.",!0),UpStats:new dn("bool","Statistics",["Statistics Update Rate (Default)","Statistics Update Rate (1s)"],"Default Game rate is once every 5 seconds",!1),TimeFormat:new dn("bool","Statistics",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX"],"Change the time format",!1),DetailedTime:new dn("bool","Statistics",["Detailed Time OFF","Detailed Time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(function(){1===e.DetailedTime?Game.sayTime=$:Game.sayTime=M.sayTime})),GrimoireBar:new dn("bool","Statistics",["Grimoire Magic Meter Timer OFF","Grimoire Magic Meter Timer ON"],"A timer on how long before the Grimoire magic meter is full",!0),HeavenlyChipsTarget:new un("numscale","Statistics","Heavenly Chips Target: ",'Use this to set a Heavenly Chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new dn("bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many Golden Cookies you have missed",!0),Scale:new dn("bool","Notation",["Game's Setting Scale","Metric","Short Scale","Short Scale (Abbreviated)","Scientific Notation","Engineering Notation"],"Change how long numbers are handled",!1,(function(){rn()})),ScaleDecimals:new dn("bool","Notation",["1 decimals","2 decimals","3 decimals"],'Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game\'s Setting Scale"',!1,(function(){rn()})),ScaleSeparator:new dn("bool","Notation",[". for decimals (Standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(function(){rn()})),ScaleCutoff:new un("numscale","Notation","Notation Cut-off Point: ","The number from which CookieMonster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),GCTimer:new dn("bool","Miscellaneous",["Golden Cookie Timer OFF","Golden Cookie Timer ON"],"A timer on the Golden Cookie when it has been spawned",!0,(function(){1===e.GCTimer?Object.keys(ae).forEach((e=>{ae[e].style.display="block",ae[e].style.left=Vt[e].l.style.left,ae[e].style.top=Vt[e].l.style.top})):Object.keys(ae).forEach((e=>ae[e].style.display="none"))})),Favicon:new dn("bool","Miscellaneous",["Favicon OFF","Favicon ON"],"Update favicon with Golden/Wrath Cookie",!0,(function(){sn()})),WrinklerButtons:new dn("bool","Miscellaneous",["Extra Wrinkler Buttons OFF","Extra Wrinkler Buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(function(){e.WrinklerButtons?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")})),HideSectionsButtons:new dn("bool","Miscellaneous",["Hide Upgrades/Buildings Button OFF","Hide Upgrades/Buildings Button ON"],"Show buttons for hiding and showing the upgrades and buildings section in the right column",!0,(function(){e.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),BulkBuyBlock:new dn("bool","Miscellaneous",["Block Bulk Buying OFF","Block Bulk Buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0)};function hn(){return JSON.stringify({settings:e,version:"2.031.6"})}function gn(){if(Xe!==Game.dragonLevel||Re){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const t=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount{if(e=n,Game.Objects[e].amount{Qt[e]=yo(e)})),qt=[],Object.keys(Game.Upgrades).forEach((e=>{qt[e]=bo(e)})),Yt=[],Object.keys(Game.Achievements).forEach((e=>{Yt[e]=fo(e)})),ko()}let yn=!1;function bn(t,o){1===e[o]&&3===t&&!1===yn||1===t?(l("CMWhiteScreen").style.opacity="0.5",3===t?(l("CMWhiteScreen").style.display="inline",setTimeout((function(){bn(2,o)}),1e3/Game.fps)):setTimeout((function(){bn(0,o)}),1e3/Game.fps)):2===t?(l("CMWhiteScreen").style.opacity="1",setTimeout((function(){bn(1,o)}),1e3/Game.fps)):0===t&&(l("CMWhiteScreen").style.display="none")}function kn(t,o,n,i){if((1===e[o]||i)&&!1===yn){const o=new Audio(t);e.GeneralSound?o.volume=e[n]/100*(Game.volume/100):o.volume=e[n]/100,o.play()}}function Gn(t,o,n){1===e[t]&&"hidden"===document.visibilityState&&!1===yn&&new Notification(o,{body:n,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})}function vn(){if(ne!==Game.OnAscend&&(ne=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===e.BotBar&&(l("CMBotBar").style.display="none"),1===e.TimerBar&&(l("CMTimerBar").style.display="none")):(an(),ho()),uo()),!Game.OnAscend&&0===Game.AscendTimer){a!==Object.keys(Game.mods).length&&(Cn(),tn(),a=Object.keys(Game.mods).length),Re&&(_o(),Game.Has("Golden switch [off]")?(ko(),qt["Golden switch [off]"].bought=0,Ao(),at=Ie):at=Game.cookiesPs,Zo(),Jo(),Yo(),Qo(),gn(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)Xt[e][t]=fn(e,t)}(),Ko(),function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const t=Game.Objects.Bank.minigame.goods;let o=0;Object.keys(t).forEach((e=>{const n=t[e];o+=n.stock*n.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;ko();let t=2;5!==Ae&&18!==Ae||(t-=1),5!==je&&18!==je||(t-=1),Ae=5,je=18;for(let e=0;e{Qt[t].amount>0&&(e=t)})),Qt[e].amount-=1,Ee-=1}return Object.keys(Qt).forEach((t=>{const o=Qt[t];e+=no(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),_t=e}(),Re=0);const t=Game.auraMult("Fierce Hoarder")>0;!Pe&&t?(Pe=!0,Be=1):Pe&&!t&&(Pe=!1,Be=1),Be&&(Vo(),Be=0),function(){en(),Fo(),function(){bt=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Qt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}kt=e,bt=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t}(),Po(),qo();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);$t=se(e/ro())}(),k=0,Vt={},Object.keys(Game.shimmers).forEach((e=>{Vt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(Ht=Game.shimmers[e],k+=1)})),Object.keys(ae).forEach((e=>{void 0===Vt[e]&&(ae[e].parentNode.removeChild(ae[e]),delete ae[e])})),C!==Game.shimmerTypes.golden.n?(C=Game.shimmerTypes.golden.n,C&&(y{void 0===ae[Game.shimmers[t].id]&&function(t){const o=document.createElement("div");o.id=`GCTimer${t.id}`,o.style.width="96px",o.style.height="96px",o.style.position="absolute",o.style.zIndex="10000000001",o.style.textAlign="center",o.style.lineHeight="96px",o.style.fontFamily='"Kavoon", Georgia, serif',o.style.fontSize="35px",o.style.cursor="pointer",o.style.display="block",0===e.GCTimer&&(o.style.display="none"),o.style.left=t.l.style.left,o.style.top=t.l.style.top,o.onclick=function(){t.pop()},o.onmouseover=function(){t.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",t.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},o.onmouseout=function(){t.l.style.filter="",t.l.style.webkitFilter=""},ae[t.id]=o,l("shimmers").appendChild(o)}(Game.shimmers[t])}))),sn(),y=k,0===k&&(Ht=0)):1===e.GCTimer&&C&&Object.keys(ae).forEach((e=>{ae[e].style.opacity=Vt[e].l.style.opacity,ae[e].style.transform=Vt[e].l.style.transform,ae[e].textContent=Math.ceil(Vt[e].life/Game.fps)})),g!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(g=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,g&&(bn(3,"FortuneFlash"),kn(e.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),Gn("FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),h!==Game.shimmerTypes.reindeer.spawned&&(h=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(Rt=Game.shimmers[e])})),bn(3,"SeaFlash"),kn(e.SeaSoundURL,"SeaSound","SeaVolume",!1),Gn("SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!")),Game.Objects.Farm.minigameLoaded&&f!==Game.Objects.Farm.minigame.nextStep&&(0!==f&&f0){let t=0;Object.keys(Game.wrinklers).forEach((e=>{2===Game.wrinklers[e].phase&&(t+=1)})),t>G?(G=t,t===Game.getWrinklersMax()&&e.WrinklerMaxFlash?bn(3,"WrinklerMaxFlash"):bn(3,"WrinklerFlash"),t===Game.getWrinklersMax()&&e.WrinklerMaxSound?kn(e.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):kn(e.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),t===Game.getWrinklersMax()&&e.WrinklerMaxNotification?Gn("WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):Gn("WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):G=t}}()}}function wn(){const e=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),t=e.match(/CookieMonster.*(;|$)/);if(null!==t){const o=e.replace(t[0],`CookieMonster:${hn()}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(o)}!END!`))}}function xn(t){if(void 0!==localStorage.CMConfig&&delete localStorage.CMConfig,void 0!==t){e=t;let o=!1;Object.keys(on).forEach((t=>{void 0===e[t]?(o=!0,e[t]=on[t]):"Header"!==t&&"Colors"!==t?-1===t.indexOf("SoundURL")?e[t]>-1&&e[t]{void 0!==e[t][n]&&e[t][n]>-1&&e[t][n]<2||(o=!0,e[t][n]=on[t][n])})):Object.keys(on.Colors).forEach((n=>{void 0!==e[t][n]&&"string"==typeof e[t][n]||(o=!0,e[t][n]=on[t][n])}))})),o&&wn(),vn(),Object.keys(on).forEach((e=>{"Header"!==e&&void 0!==mn[e].func&&mn[e].func()}))}else xn(on)}function Tn(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Mn(t,o){if("b"===t){if(l("tooltip").innerHTML=Game.Objects[o].tooltip(),1===e.TooltipAmor){const e=Wo(Game.Objects[o],Game.Objects[o].basePrice,0,Game.Objects[o].free,Game.Objects[o].amount),t=e-Game.Objects[o].totalCookies;t>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${le(t)} ${1===Math.floor(t)?"cookie":"cookies"} left to amortize (${ce((e-Game.Objects[o].totalCookies)/(Game.Objects[o].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(le(Game.Objects[o].bulkPrice)).join(le((Game.Objects[o],Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Game.buyBulk,1))))}else if("u"===t){if(!Game.UpgradesInStore[o])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[o],"store")}else"s"===t?l("tooltip").innerHTML=Game.lumpTooltip():"g"===t?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(o)():"p"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(o[0],o[1])():"ha"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"wb"===t?l("tooltip").innerHTML="":"pag"===t?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(o)():"pas"===t&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(o[0])());if("b"===t&&1===Game.buyMode||"u"===t||"s"===t||"g"===t||"p"===t&&!Game.keys[16]||"ha"===t||"wb"===t||"pag"===t||"pas"===t&&-1!==o[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return ee=t,te=o,Mo(),l("tooltip").innerHTML}function Sn(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(x[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("g",`${e}`)}),"this"),Game.tooltip.wobble()})}))}function Bn(){if(!u&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:t}=Game.Objects["Wizard tower"];d=t.draw,Game.Objects["Wizard tower"].minigame.draw=function(){d(),1===e.GrimoireBar&&t.magic1&&(e.Header[t]=0),wn()}function Ln(t,o){const n=document.createElement("div");n.className="title",n.style.padding="0px 16px",n.style.opacity="0.7",n.style.fontSize="17px",n.style.fontFamily='"Kavoon", Georgia, serif',n.appendChild(document.createTextNode(`${t} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[o]?"-":"+",i.onclick=function(){Wn(o),Game.UpdateMenu()},n.appendChild(i),n}function An(e,t,o,n){const i=document.createElement("div");i.className="listing";const a=document.createElement("b");if(a.textContent=t,i.appendChild(a),"withTooltip"===e){i.className="listing",i.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(H[n].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",i.appendChild(e)}return i.appendChild(document.createTextNode(": ")),i.appendChild(o),i}function jn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const n=document.createElement("div"),i=document.createElement("div");i.style.minWidth="140px",i.style.marginBottom="4px";const a=document.createElement("div");return a.className="name",a.style.marginBottom="4px",a.style.textAlign="center",a.textContent="Missing",i.appendChild(a),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),i.appendChild(o)})),n.appendChild(i),o.onmouseover=function(){Game.tooltip.draw(this,escape(n.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Un(t){const o=document.createElement("div");if(o.className="subsection",o.appendChild(t),o.appendChild(Ln("Lucky Cookies","Lucky")),e.Header.Lucky&&o.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+lo()0&&(t.appendChild(An("basic","Heavenly Chips To Target Set In Settings (CUR)",document.createTextNode(le(e)))),t.appendChild(An("basic","Time To Target (CUR, Current 5 Second Average)",document.createTextNode(se(e/ct)))))}const l=function(e){let t=Game.cookiesPs;ko(),0===qt["Heavenly key"].bought&&(qt["Heavenly chip secret"].bought=1,qt["Heavenly cookie stand"].bought=1,qt["Heavenly bakery"].bought=1,qt["Heavenly confectionery"].bought=1,qt["Heavenly key"].bought=1,Ao(),t=Ie,ko()),Ut>=1e6&&Lo("Sacrifice"),Ut>=1e9&&Lo("Oblivion"),Ut>=1e12&&Lo("From scratch"),Ut>=1e15&&Lo("Nihilism"),Ut>=1e18&&Lo("Dematerialize"),Ut>=1e21&&Lo("Nil zero zilch"),Ut>=1e24&&Lo("Transcendence"),Ut>=1e27&&Lo("Obliterate"),Ut>=1e30&&Lo("Negative void"),Ut>=1e33&&Lo("To crumbs, you say?"),Ut>=1e36&&Lo("You get nothing"),Ut>=1e39&&Lo("Humble rebeginnings"),Ut>=1e42&&Lo("The end of the world"),Ut>=1e45&&Lo("Oh, you're back"),Ut>=1e48&&Lo("Lazarus"),Ut>=1e51&&Lo("Smurf account"),Ut>=1e54&&Lo("If at first you don't succeed"),qt["Heavenly chip secret"].bought=1,qt["Heavenly cookie stand"].bought=1,qt["Heavenly bakery"].bought=1,qt["Heavenly confectionery"].bought=1,qt["Heavenly key"].bought=1,Le=e;const o=Fe;Ao(),Io(),o!==Fe&&Ao();const n=Ie-t;return Le=Game.prestige,n}(o),s=document.createDocumentFragment();s.appendChild(document.createTextNode(le(l)));const c=Math.round(l/Game.cookiesPs*1e4);if(Number.isFinite(c)&&0!==c){const e=document.createElement("small");e.textContent=` (${c/100}% of income)`,s.appendChild(e)}t.appendChild(An("withTooltip","Reset Bonus Income",s,"ResetTooltipPlaceholder"));const d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),p=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),u=p-d;if(!Game.Has("Lucky digit")){let e=7-p%10;e<0&&(e+=10);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(An("basic",'Next "Lucky Digit" (total / reset)',i))}if(!Game.Has("Lucky number")){let e=777-p%1e3;e<0&&(e+=1e3);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(An("basic",'Next "Lucky Number" (total / reset)',i))}if(!Game.Has("Lucky payout")){let e=777777-p%1e6;e<0&&(e+=1e6);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(An("basic",'Next "Lucky Payout" (total / reset)',i))}return t}()),Game.cpsSucked>0&&(o.appendChild(Ln("Wrinklers","Wrink")),e.Header.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${le(ft)} / ${le(Ct)} `));const t=document.createElement("a");t.textContent="Pop All Normal",t.className="option",t.onclick=function(){Tn()},e.appendChild(t),o.appendChild(An("basic","Rewards of Popping (All/Normal)",e));const n=document.createDocumentFragment();n.appendChild(document.createTextNode(`${le(yt[0])} `));const i=document.createElement("a");i.textContent="Pop Single Fattest",i.className="option",i.onclick=function(){null!==yt[1]&&(Game.wrinklers[yt[1]].hp=0)},n.appendChild(i),o.appendChild(An("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==yt[1]?yt[1]:"None"})`,n))}if(o.appendChild(function(){const t=document.createElement("div");t.className="CMStatsSeasonSection";let o=!1;const n=[];Object.keys(Uo).forEach((e=>{Game.Has(Uo[e])||(n.push(Uo[e]),o=!0)}));const i=[];Object.keys(Do).forEach((e=>{Game.Has(Do[e])||(i.push(Do[e]),o=!0)}));const a=[];Object.keys(Ho).forEach((e=>{Game.Has(Ho[e])||(a.push(Ho[e]),o=!0)}));const r=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(r.push(Game.eggDrops[e]),o=!0)}));const l=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(l.push(Game.rareEggDrops[e]),o=!0)}));const s=[];Object.keys(Ro).forEach((e=>{Game.HasUnlocked(Ro[e])||(s.push(Ro[e]),o=!0)}));const c=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),d=Game.Has("Century egg");if(("christmas"===Game.season||o||c||d)&&(t.appendChild(Ln("Season Specials","Sea")),e.Header.Sea)){if(0!==n.length){t.appendChild(An("basic","Halloween cookies left to buy",jn(n)));let e=.95;if(Game.HasAchiev("Spooky cookies")&&(e=.8),Game.Has("Starterror")&&(e*=.9),e*=1/Game.dropRateMult(),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}t.appendChild(An("basic","Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${le(100*(1-e))}% / ${le(100*(1-.9*e))}%`)))}if(0!==i.length){t.appendChild(An("basic","Christmas cookies left to buy",jn(i)));let e=.8;if(Game.HasAchiev("Let it snow")&&(e=.6),e*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(e*=.95),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}t.appendChild(An("basic","Chance of receiving a cookie from reindeer",document.createTextNode(`${le(100*(1-e))}%`)))}0!==a.length&&t.appendChild(An("basic","Valentine cookies left to buy",jn(a)));const e=function(e){let t=e*(1/Game.dropRateMult());if(Game.HasAchiev("Hide & seek champion")&&(t*=.7),Game.Has("Omelette")&&(t*=.9),Game.Has("Starspawn")&&(t*=.9),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=1-t,n=Game.eggDrops.length-r.length,i=Game.rareEggDrops.length-l.length,a=.9*o*(1-n/Game.eggDrops.length),s=.1*o*(1-i/Game.rareEggDrops.length),c=.9*o*(n/Game.eggDrops.length)+.1*o*(i/Game.rareEggDrops.length);return[a+.9*c*(1-n/Game.eggDrops.length),s+.1*c*(1-i/Game.rareEggDrops.length)]};0!==r.length&&(t.appendChild(An("basic","Normal easter eggs left to unlock",jn(r))),t.appendChild(An("basic","Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${le(100*e(.98)[0])}% / ${le(100*e(.9)[0])}%`)))),0!==l.length&&(t.appendChild(An("basic","Rare easter eggs left to unlock",jn(l))),t.appendChild(An("basic","Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${le(100*e(.98)[1])}% / ${le(100*e(.9)[1])}%`)))),0!==s.length&&t.appendChild(An("basic","Rare plant drops left to unlock",jn(s))),"christmas"===Game.season&&t.appendChild(An("basic","Reindeer reward",document.createTextNode(le(pt)))),c&&t.appendChild(An("withTooltip","Chocolate egg cookies",document.createTextNode(le(ut)),"ChoEggTooltipPlaceholder")),d&&t.appendChild(An("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(dt-1))/100+"%")))}return t}()),o.appendChild(Ln("Miscellaneous","Misc")),e.Header.Misc){if(o.appendChild(An("basic",`Average Cookies Per Second (Past ${q[e.AvgCPSHist]<60?`${q[e.AvgCPSHist]} seconds`:q[e.AvgCPSHist]/60+(3===e.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(le(ro(),3)))),o.appendChild(An("basic",`Average Cookie Clicks Per Second (Past ${Y[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(le(vt,1)))),Game.Has("Fortune cookies")){const e=[];Object.keys(jo).forEach((t=>{Game.Has(jo[t])||e.push(jo[t])})),0!==e.length&&o.appendChild(An("basic","Fortune Upgrades Left to Buy",jn(e)))}if(e.ShowMissedGC&&o.appendChild(An("basic","Missed Golden Cookies",document.createTextNode(le(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),o.appendChild(An("basic","Time till autosave",e))}}l("menu").insertBefore(o,l("menu").childNodes[2]),e.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&xt){const t=xt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=xt,e.appendChild(i)}else if("Upgrades"===e.children[0].innerHTML){if(wt){const t=wt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(n),e.insertBefore(o,e.childNodes[3]);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=wt,e.insertBefore(i,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Tt){const t=Tt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Tt,e.appendChild(i)}}}))}const Dn={BarsColors:"Bars/Colors",Calculation:"Calculation",Notification:"Notification",Tooltip:"Tooltips and additional insights",Statistics:"Statistics",Notation:"Notation",Miscellaneous:"Miscellaneous"},Hn={NotificationGeneral:"General Notifications",NotificationGC:"Golden Cookie",NotificationFC:"Fortune Cookie",NotificationSea:"Season Special",NotificationGard:"Garden Tick",NotificationMagi:"Full Magic Bar",NotificationWrink:"Wrinkler",NotificationWrinkMax:"Maximum Wrinklers"};function Rn(t,o){const n=document.createElement("div");n.className="title",n.style.opacity="0.7",n.style.fontSize="17px",n.appendChild(document.createTextNode(`${o} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[t]?"-":"+",i.onclick=function(){Wn(t),Game.UpdateMenu()},n.appendChild(i),n}function $n(t){const o=document.createElement("div");if(o.className="listing","bool"===mn[t].type){const n=document.createElement("a");mn[t].toggle&&0===e[t]?n.className="option off":n.className="option",n.id=On+t,n.onclick=function(){!function(t){e[t]+=1,e[t]===mn[t].label.length?(e[t]=0,mn[t].toggle&&(l(On+t).className="option off")):l(On+t).className="option",void 0!==mn[t].func&&mn[t].func(),l(On+t).innerHTML=mn[t].label[e[t]],wn()}(t)},n.textContent=mn[t].label[e[t]],o.appendChild(n);const i=document.createElement("label");return i.textContent=mn[t].desc,o.appendChild(i),o}if("vol"===mn[t].type){const n=document.createElement("div");n.className="sliderBox";const i=document.createElement("div");i.style.float="left",i.innerHTML=mn[t].desc,n.appendChild(i);const a=document.createElement("div");a.id=`slider${t}right`,a.style.float="right",a.innerHTML=`${e[t]}%`,n.appendChild(a);const r=document.createElement("input");r.className="slider",r.id=`slider${t}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=e[t],r.oninput=function(){Fn(t)},r.onchange=function(){Fn(t)},n.appendChild(r),o.appendChild(n);const l=document.createElement("a");return l.className="option",l.onclick=function(){kn(e[t.replace("Volume","SoundURL")],t.replace("Volume","Sound"),t,!0)},l.textContent="Test sound",o.appendChild(l),o}if("url"===mn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${mn[t].label} `,o.appendChild(n);const i=document.createElement("input");i.id=On+t,i.className="option",i.type="text",i.readOnly=!0,i.setAttribute("value",e[t]),i.style.width="300px",o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("input");a.id=`${On+t}Prompt`,a.className="option",a.type="text",a.setAttribute("value",e[t]);const r=document.createElement("a");r.className="option",r.onclick=function(){Game.Prompt(a.outerHTML,[["Save",function(){e[`${t}`]=l(`CMConfig${t}Prompt`).value,wn(),Game.ClosePrompt(),Game.UpdateMenu()}],"Cancel"])},r.textContent="Edit",o.appendChild(r);const s=document.createElement("label");return s.textContent=mn[t].desc,o.appendChild(s),o}if("color"===mn[t].type){o.className="";for(let t=0;tthis.max&&console.log("TEST"),e[t]=this.value,wn(),rn()},o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("label");return a.textContent=mn[t].desc,o.appendChild(a),o}return o}function In(t){if(1===e.TimerBar&&0===e.TimerBarPos){const e=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=e,t(),Game.mouseY+=e}else t()}function zn(){M.Beautify=Beautify,Beautify=le,M.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){M.CalculateGains(),Re=1},M.tooltip={},M.tooltip.draw=Game.tooltip.draw,M.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){M.tooltip.drawMod(e,t,o)},M.tooltip.update=Game.tooltip.update,M.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){M.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let t=0;1===e.ToolWarnLucky&&1===e.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(t=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-t-46)}px`}}()},M.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){In(M.UpdateWrinklers)},M.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){In(M.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(function(){In(Game.ClickCookie)}),!1),M.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){M.RebuildUpgrades(),T=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(T[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("u",`${e}`)}),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},M.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(t){(!e.BulkBuyBlock||Game.ObjectsById[t].bulkPrice-1;--e)if(Game.ObjectsById[e-1].amount>0){const o=Qt[Game.ObjectsById[e].name].name;Qt[o].amount-=1,Ee-=1,t=Qt[o].basePrice*Game.priceIncrease**Math.max(0,Qt[o].amount-1-Qt[o].free),t=Game.modifyBuildingPrice(Qt[o],t),t=Math.ceil(t);break}const o=Fe;return Ao(),Io(),o!==Fe&&Ao(),[Ie-Game.cookiesPs,t]}(t),n=se(o/(e+Game.cookiesPs)),i=le(e/Game.cookiesPs);l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const a=document.createElement("div");a.style.minWidth="200px",a.style.textAlign="center",a.textContent=`Picking this aura will change CPS by ${le(e)} (${i}% of current CPS).`,l("dragonAuraInfo").appendChild(a);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${n} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(t)},M.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){M.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${Qe}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},M.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==Nn().picker&&void 0!==Nn().picker.owner||(M.UpdateMenu(),function(){const t=document.createElement("div");t.className="title","prefs"===Game.onMenu?(t.textContent="Cookie Monster Settings",function(t){const o=document.createDocumentFragment();o.appendChild(t),Object.keys(Dn).forEach((t=>{const n=Rn(t,Dn[t]);o.appendChild(n),e.Header[t]&&("Notification"===t?Object.keys(Hn).forEach((t=>{const n=Rn(t,Hn[t]);n.style.fontSize="15px",n.style.opacity="0.5",o.appendChild(n),e.Header[t]&&Object.keys(mn).forEach((e=>{mn[e].group===t&&o.appendChild($n(e))}))})):Object.keys(mn).forEach((e=>{mn[e].group===t&&o.appendChild($n(e))})))}));const n=document.createElement("div");n.className="listing";const i=document.createElement("a");i.className="option",i.onclick=function(){xn(on)},i.textContent="Restore Default",n.appendChild(i),o.appendChild(n),l("menu").childNodes[2].insertBefore(o,l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}(t)):"stats"===Game.onMenu?e.Stats&&(t.textContent="Cookie Monster Statistics",Un(t)):"log"===Game.onMenu&&(t.textContent="Cookie Monster ",function(t){const o=document.createElement("div");o.className="subsection";const n=document.createElement("span");if(n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=e.Header.InfoTab?"-":"+",n.onclick=function(){Wn("InfoTab"),Game.UpdateMenu()},t.appendChild(n),o.appendChild(t),e.Header.InfoTab){const e=document.createElement("div");e.innerHTML='
\n Cookie Monster\n offers a wide range of tools and statistics to enhance your game experience.\n It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
\n Progess on new updates and all previous release notes can be found on the GitHub page linked above!
\n Please also report any bugs you may find over there!
\n
\n ',o.appendChild(e);const t=document.createElement("div");t.innerHTML='
\nThe latest update (v 2.031.6) has revamped the way PP is colourcoded. In the previous versions this was not always correct and we had some settings that made it even more incorrect. With this update Cookie Monster compares the PP of a building to all other possibilities (also buying 10 or 100) of a building and colors the PP accordingly.
\nThis means that if it is better to buy 10 of a building immediately rather than to buy in increments of 1 Cookie Monster will now show this! In this case the buy 1 option will be yellow, while the buy 10 option will be green.
\nThis also means that you will see some more diverse colors. Rather than coloring according to arbitrary "middle values" Cookie Monster now uses a top 10, 20 and 30. While this might take some getting used to we believe the new system is much better in conveying useful information to the user while also being more correct!
\n
\nThis update also implements the following functions:
\n- Added a tooltip displaying the reward to the extra pop wrinkler buttons
\n- Added tooltips to the Gods in the Pantheon
\n- The tooltip for Elder Pledge now displays correctly, although it takes some time to load after Cookie Monster has been loaded
\n- You can now test the volume and sound of notifications in the settings screen
\n- The bottom bar will now flicker less and each column has received a bit of padding
\n- Introduced new colour scheme for PP, see the explanation of colors in the Readme or the settings
\n- Added option to show buttons that can hide the upgrade and building section
\n- Added option to display PP as a time unit, note that these are only approximations. PP does not translate directly into time (the name is deceptive, we know...)
\n- Statistics page now shows chance for random drops when they have not been achieved
\n- In a later hotfix we have added a Rigidel mode that will colour all buy 1 options grey
\n
\nThis update fixes the following bugs:
\n- Incorrect amount for "required for max plant reward" in statistics page
\n- Fixed the tooltips of the \'?\' buttons in the statistics page not showing
\n- Fixed some unclear settings descriptions
\n
\nPlease submit any bug reports or feature requests to the GitHub page!\n
\n
\n',o.appendChild(t)}const i=l("menu").children[1];i.insertBefore(o,i.children[1])}(t))}())},M.sayTime=Game.sayTime,$=function(e,t){return Number.isNaN(e)||e<=0?M.sayTime(e,t):se(e/Game.fps,1)},M.Logic=Game.Logic,Game.Logic=function(){M.Logic();let t="Cookie Clicker";"fools"===Game.season&&(t="Cookie Baker"),re=`${Game.OnAscend?"Ascending! ":""}${le(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${t}`,function(){if(Game.OnAscend||0===e.Title)document.title=re;else if(1===e.Title){let e,t,o,n=!1,i=!1;e=Ht?Ht.wrath?`[W${Math.ceil(Ht.life/Game.fps)}]`:`[G${Math.ceil(Ht.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,g&&(n=!0,t="[F]"),"christmas"===Game.season&&(i=!0,o=h?`[R${Math.ceil(Rt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let a=re;"["===a.charAt(0)&&(a=a.substring(a.lastIndexOf("]")+1)),document.title=`${e+(n?t:"")+(i?o:"")} ${a}`}else if(2===e.Title){let e="",t=!1;Ht&&(t=!0,Ht.wrath?e+=`[W${Math.ceil(Ht.life/Game.fps)}]`:e+=`[G${Math.ceil(Ht.life/Game.fps)}]`),g&&(t=!0,e+="[F]"),"christmas"===Game.season&&h&&(e+=`[R${Math.ceil(Rt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const t=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),o=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let n="";n+=`You've been on this run for ${""===o?"not very long":o}.
`,n+='
',Game.prestige>0&&(n+=`Your prestige level is currently ${le(Game.prestige)}.
(CpS +${le(Game.prestige)}%)`,n+='
'),n+=Se<1?"Ascending now would grant you no prestige.":Se<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${le(Se)} prestige levels (+${le(Se)}% CpS)
and ${le(Se)} heavenly chips to spend.`,n+='
',n+=`You need ${le(t)} more cookies for the next level.
`,n+=e.TooltipAscendButton?`
It takes ${$t} to reach the next level and you are making ${le(ct,2)} chips on average in the last 5 seconds.
`:"",l("ascendTooltip").innerHTML=n}()}}function Vn(){Cn(),Jo(),tn(),a=Object.keys(Game.mods).length,v=document.createElement("style"),v.type="text/css",v.id="CMCSS",document.head.appendChild(v),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColor="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),n=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=S+t,o.textContent=e,o},i=o.appendChild(document.createElement("tr"));i.style.fontWeight="bold",i.appendChild(n("CM 2.031.6",N)),o.appendChild(document.createElement("tr")).appendChild(n("Bonus Income",P)),o.appendChild(document.createElement("tr")).appendChild(n("Payback Period",P)),o.appendChild(document.createElement("tr")).appendChild(n("Time Left",P)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{co(e)}))}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColor="black";const t=so("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",color:L},{id:"CMTimerBarGCBar",color:W}]);e.appendChild(t);const o=so("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",color:L},{id:"CMTimerBarRenBar",color:O}]);e.appendChild(o);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColor="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const n=document.createElement("span");return n.className=B+e,n.style.display="inline-block",n.style.height="10px",n.style.width="10px",n.style.marginRight="4px",o.appendChild(n),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(P,"Better than the best PP of a building option")),e.appendChild(o(E,"Same as the best PP building option")),e.appendChild(o(N,"Within the top 10 of PP for buildings")),e.appendChild(o(O,"Within the top 20 of PP for buildings")),e.appendChild(o(F,"Within the top 30 of PP for buildings")),e.appendChild(o(W,"Outside of the top 30 of PP for buildings")),e.appendChild(o(L,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=S+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",P)),e.appendChild(o("CMUpgradeBarGreen",E)),e.appendChild(o("CMUpgradeBarYellow",N)),e.appendChild(o("CMUpgradeBarOrange",O)),e.appendChild(o("CMUpgradeBarRed",F)),e.appendChild(o("CMUpgradeBarPurple",W)),e.appendChild(o("CMUpgradeBarGray",L)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMWhiteScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMSectionHidButtons",e.style.textAlign="center";const t=document.createElement("a");t.className="option",t.onclick=function(){"flex"===l("upgrades").style.display?(l("upgrades").style.display="none",l("toggleUpgrades").style.display="none",l("techUpgrades").style.display="none",l("vaultUpgrades").style.display="none"):(l("upgrades").style.display="flex",0!==l("toggleUpgrades").children.length&&(l("toggleUpgrades").style.display="block"),0!==l("techUpgrades").children.length&&(l("techUpgrades").style.display="block"),0!==l("vaultUpgrades").children.length&&(l("vaultUpgrades").style.display="block"))},t.textContent="Hide/Show Upgrades",e.appendChild(t);const o=document.createElement("a");o.className="option",o.onclick=function(){"grid"===l("products").style.display?l("products").style.display="none":l("products").style.display="grid"},o.textContent="Hide/Show Buildings",e.appendChild(o),l("store").insertBefore(e,l("store").childNodes[2])}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}(),Object.keys(D).forEach((e=>{!function(e,t,o){const n=document.createElement("div");n.id=e;const i=document.createElement("div");i.style.minWidth=o,i.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="left",a.textContent=t,i.appendChild(a),n.appendChild(i),H[e]=n}(D[e][0],D[e][1],D[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){Tn()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("wb","PopAll")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==yt[1]&&(Game.wrinklers[yt[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("wb","PopFattest")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(w[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("b",`${e}`)}),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(r=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("s","Lump")}),"this"),Game.tooltip.wobble()}),m=Game.LoadMinigames,Game.LoadMinigames=function(){m(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("ha","HarvestAllButton")}),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("p",[`${t[0]}`,`${t[2]}`])}),"this"),Game.tooltip.wobble()}}))),Sn(),function(){if(Game.Objects.Temple.minigameLoaded){for(let e=0;e<11;e+=1)l(`templeGod${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("pag",e)}),"this"),Game.tooltip.wobble()};for(let e=0;e<3;e+=1)l(`templeSlot${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Mn("pas",[e,Game.Objects.Temple.minigame.slot[e]])}),"this"),Game.tooltip.wobble()}}}(),Pn()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){I=1},l("backgroundLeftCanvas").onmouseout=function(){I=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{V[e]=0}))},zn(),Pn(),Game.CalculateGains(),xn(),R=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.031.6 loaded!"):Game.Notify("Cookie Monster version 2.031.6 loaded!","","",1,1),Game.Win("Third-party")}const _n={init:function(){yn=!0;let e=!0;Game.version!==Number("2.031")&&(e=confirm("Cookie Monster version 2.031.6 is meant for Game version 2.031. Loading a different version may cause errors. Do you still want to load Cookie Monster?")),e&&(Vn(),Game.registerHook("draw",So),Game.registerHook("logic",vn),yn=!1)},load:function(e){const t=JSON.parse(e);Cn(),xn(t.settings),"2.031.6"!==t.version&&(Game.prefs.popups?Game.Popup("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!"):Game.Notify("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!","","",0,1))},save:hn};Game.registerMod("CookieMonster",_n)})()})(); +(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,n,i,a=((i={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",i.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?i.node(o):e.document))throw new Error("Missing root node");for(var n=o.querySelectorAll(t),a=new RegExp("(^|\\s)("+i.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(i.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(n=e.document.createElement("input"),!(!n.setAttribute||(n.setAttribute("type","color"),"color"!=n.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={},o=arguments[2];return t[a=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={};var n=arguments[1];for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(i.dataProp))return!0;for(var t=1;t=3&&(n=l[0].match(s))&&(i=l[1].match(s))&&(a=l[2].match(s)))return o.format="rgb",o.rgba=[parseFloat(n[1])||0,parseFloat(i[1])||0,parseFloat(a[1])||0,null],l.length>=4&&(r=l[3].match(s))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],n=0;ns[n]&&-t[n]+e[n]+l[n]/2>s[n]/2&&e[n]+l[n]-d[n]>=0?e[n]+l[n]-d[n]:e[n],-t[a]+e[a]+l[a]+d[a]-p+p*r>s[a]?-t[a]+e[a]+l[a]/2>s[a]/2&&e[a]+l[a]-p-p*r>=0?e[a]+l[a]-p-p*r:e[a]+l[a]-p+p*r:e[a]+l[a]-p+p*r>=0?e[a]+l[a]-p+p*r:e[a]+l[a]-p-p*r];else var u=[e[n],e[a]+l[a]-p+p*r];var m=u[n],h=u[a],g=o.fixed?"fixed":"absolute",f=(u[0]+d[0]>e[0]||u[0]0?Math.ceil(l/o):0,i=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),a=e.paletteHeight?Math.min(e.paletteHeight,i):i),n&&(r=n*a+(n-1)*e.paletteSpacing),{cols:o,rows:n,cellW:i,cellH:a,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=i.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!a(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{a(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=i.strList(e),o=0;o127.5},this.hide=function(){p()&&(i.removeClass(n.targetElement,i.pub.activeClassName),i.picker.wrap.parentNode.removeChild(i.picker.wrap),delete i.picker.owner)},this.show=function(){l()},this.redraw=function(){p()&&l()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||i.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(i.setDataAttr(this.targetElement,"current-color",t),e&i.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&i.flags.leaveAlpha)&&this.alphaElement){var n=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(n)}e&i.flags.leavePreview||!this.previewElement||((i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),p()&&(s(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var n=[];if(e){n.push({image:i.genColorPreviewGradient(e,t,o?o-i.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var a=i.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);n.push({image:"url('"+a.canvas.toDataURL()+"')",position:(t||"left")+" top",size:a.width+"px "+a.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else n.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},l=0;l=0;h-=1){var g=m[h];if(g)if(i.pub.presets.hasOwnProperty(g)){for(var u in i.pub.presets[g])if(i.pub.presets[g].hasOwnProperty(u))try{a(u,i.pub.presets[g][u])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",g)}var f=["preset"];for(var u in o)if(o.hasOwnProperty(u)&&-1===f.indexOf(u))try{a(u,o[u])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=i.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=i.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof i.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,i.addClass(this.targetElement,i.pub.className),i.instances.push(this),i.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),i.isButtonEmpty(this.targetElement))){i.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var C=i.getCompStyle(this.targetElement);(parseFloat(C["min-width"])||0)-1){var G=i.parseColorString(b);this._currentFormat=G?G.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(b),void 0!==k&&this.processAlphaInput(k)}}).pub.className="jscolor",i.pub.activeClassName="jscolor-active",i.pub.looseJSON=!0,i.pub.presets={},i.pub.presets.default={},i.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},i.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},i.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},i.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},i.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},i.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},i.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},i.pub.sliderInnerSpace=3,i.pub.chessboardSize=8,i.pub.chessboardColor1="#666666",i.pub.chessboardColor2="#999999",i.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],i.pub.init=function(){if(!i.initialized)for(e.document.addEventListener("mousedown",i.onDocumentMouseDown,!1),e.document.addEventListener("keyup",i.onDocumentKeyUp,!1),e.addEventListener("resize",i.onWindowResize,!1),e.addEventListener("scroll",i.onWindowScroll,!1),i.pub.install(),i.initialized=!0;i.readyQueue.length;)i.readyQueue.shift()()},i.pub.install=function(e){var t=!0;try{i.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(i.pub.lookupClass)try{i.installBySelector("input."+i.pub.lookupClass+", button."+i.pub.lookupClass,e)}catch(e){}return t},i.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(i.initialized?e():i.readyQueue.push(e),!0)},i.pub.trigger=function(e){var t=function(){i.triggerGlobal(e)};i.initialized?t():i.pub.ready(t)},i.pub.hide=function(){i.picker&&i.picker.owner&&i.picker.owner.hide()},i.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),i.genColorPreviewCanvas(e).canvas.toDataURL()},i.pub.background=function(e){var t=[];t.push(i.genColorPreviewGradient(e));var o=i.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},i.pub.options={},i.pub.lookupClass="jscolor",i.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+i.docsRef),!1},i.register(),i.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=a),a}))}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e={};function t(){e.WrinklerButtons&&Game.elderWrath?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")}const n=["","","M","G","T","P","E","Z","Y"],i=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],a=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let r,s,c,d,p,u,m,h,g,f,C,y,b,k,G,v,w,x=[],T=[],M=[],S={},B=Date.now(),P=Date.now();const E="CMText",N="CMBack",O="Blue",F="Green",W="Yellow",L="Orange",A="Red",j="Purple",D="Gray",H="Pink",U="Brown",$=[D,O,F,W,L,A,j,H,U],R=[["GoldCookTooltipPlaceholder","Calculated with Golden Switch off","200px"],["GoldCookDragonsFortuneTooltipPlaceholder","Calculated with Golden Switch off and at least one golden cookie on-screen","240px"],["PrestMaxTooltipPlaceholder","The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","320px"],["NextPrestTooltipPlaceholder","Calculated with cookies gained from wrinklers and Chocolate egg","200px"],["HeavenChipMaxTooltipPlaceholder","The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","330px"],["ResetTooltipPlaceholder","The bonus income you would get from new prestige levels unlocked at 100% of its potential and from ascension achievements if you have the same buildings/upgrades after reset","370px"],["ChoEggTooltipPlaceholder","The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg","300px"],["ChainNextLevelPlaceholder","Cheated cookies might break this formula","250px"],["FavouriteSettingPlaceholder","Click to set this setting as favourite and show it in 'favourite' settings at the top of the Cookie Monster Settings","250px"]],I={};let z,V,_=0,Q=-1,X=[],q=1,Y=1,K=1;const J=[10,15,30,60,300,600,900,1800],Z=[1,5,10,15,30],ee={Frenzy:W,"Dragon Harvest":U,"Elder frenzy":F,Clot:A,"Click frenzy":O,Dragonflight:H};let te,oe,ne,ie,ae,re,le,se={},ce="",de=[];function pe(t,o,r){const l=e.ScaleDecimals+1;if(t===1/0)return"Infinity";if(void 0===t)return"0";if(0===e.Scale)return S.Beautify(t,o);if(Number.isFinite(t)){if(t<0)return`-${pe(Math.abs(t))}`;let s="";if(0===t)return t.toString();if(t>.001&&t=.01&&t=.01&&t=.01&&t315576e4)return"XX:XX:XX:XX:XX";c+=(i<10?"0":"")+i+":",c+=(a<10?"0":"")+a+":",c+=(r<10?"0":"")+r+":",c+=(l<10?"0":"")+l+":",c+=(s<10?"0":"")+s}else{if(n>7776e5)return o?"Over 9000 days!":">9000d";c+=i>0?i+(o?1===i?" year":" years":"y")+", ":"",c+=a>0?a+(o?1===a?" day":" days":"d")+", ":"",(c.length>0||r>0)&&(c+=r+(o?1===r?" hour":" hours":"h")+", "),(c.length>0||l>0)&&(c+=l+(o?1===l?" minute":" minutes":"m")+", "),c+=s+(o?1===s?" second":" seconds":"s")}return c}function me(t){let o,n;return t<=0?(n=e.TimeFormat?"00:00:00:00:00":"Done!",o=F):(n=ue(t),o=t>300?A:t>60?L:W),{text:n,color:o}}let he,ge,fe,Ce,ye,be,ke,Ge,ve,we,xe,Te,Me,Se,Be,Pe,Ee,Ne,Oe,Fe,We,Le,Ae,je,De,He,Ue,$e,Re,Ie,ze,Ve,_e,Qe,Xe,qe,Ye=0,Ke=0,Je=0,Ze=0,et=0,tt=0,ot=0,nt=0,it=0,at=0,rt=0,lt=0,st=0,ct=0,dt=0,pt=1,ut=1,mt=1,ht=0,gt=0,ft=0,Ct=0,yt={},bt={},kt={},Gt=0,vt=0,wt=[0,null],xt=0,Tt=0,Mt={},St={},Bt={},Pt={},Et={},Nt=0,Ot=0,Ft=[],Wt=0,Lt=0,At=[],jt=0,Dt=0,Ht=[],Ut=0,$t=0,Rt=[],It=0,zt=0,Vt={},_t={},Qt=0,Xt=0,qt=[],Yt={},Kt=0,Jt={0:[0,0,0],1:[0,0,0],2:[0,0,0],3:[0,0,0],4:[0,0,0],5:[0,0,0],6:[0,0,0],7:[0,0,0],8:[0,0,0],9:[0,0,0],10:[0,0,0]},Zt=[],eo=[],to=[];function oo(e){let t=0;return Game.dragonAuras[$e].name!==e&&Game.dragonAuras[Re].name!==e||(t=1),"Reality Bending"!==Game.dragonAuras[$e].name&&"Reality Bending"!==Game.dragonAuras[Re].name||(t+=.1),t}function no(){let e=.25;return e*=1+oo("Earth Shatterer"),e}function io(e,t){return void 0===Qe[e]?void 0===t?1:t:Qe[e]}function ao(e){const t=eo[e];return(1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function ro(e){if(Game.hasGod){void 0===Zt.Temple.minigame&&(Zt.Temple.minigame=Game.Objects.Temple.minigame);const t=Zt.Temple.minigame.gods[e];if(Ie===t.id)return 1;if(ze===t.id)return 2;if(Ve===t.id)return 3}return!1}function lo(e,t){let o=t;if(ao("Season savings")&&(o*=.99),ao("Santa's dominion")&&(o*=.99),ao("Faberge egg")&&(o*=.99),ao("Divine discount")&&(o*=.99),ao("Fortune #100")&&(o*=.99),o*=1-.02*oo("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&ao(e.fortune.name)&&(o*=.93),o*=io("buildingCost"),Zt.Temple.minigameLoaded){const e=ro("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function so(e,t,o,n,i,a){const r=void 0===a?0:a;let l=i,s=o,c=0;-1===i&&(l=s),i||(l=Game.buyBulk);for(let o=0;o0&&(c+=o,s-=1)}return c}function co(){let t=Game.buyBulk;if(1===Game.buyMode?Y=t:t=Y,1===t?t=yt:10===t?t=bt:100===t&&(t=kt),1===Game.buyMode?1===e.BuildColour?Object.keys(t).forEach((o=>{l(`productPrice${Game.Objects[o].id}`).style.color=e[`Colour${t[o].color}`]})):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(yt).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=pe(so(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&e.SortBuildings){let o;1===e.SortBuildings?(o=Object.keys(yt).map((e=>{const t=yt[e];return t.name=e,t.id=Game.Objects[e].id,t})),o.sort((function(e,t){return $.indexOf(e.color)>$.indexOf(t.color)?1:$.indexOf(e.color)<$.indexOf(t.color)||e.pp{const o=t[e];return o.name=e,o.id=Game.Objects[e].id,o})),o.sort((function(e,t){return $.indexOf(e.color)>$.indexOf(t.color)?1:$.indexOf(e.color)<$.indexOf(t.color)||e.pp{const t=yt[e];return t.name=e,t.id=Game.Objects[e].id,t}));e.sort(((e,t)=>e.id-t.id));for(let t=0;t0){let e=0,t=0,o=0,n=0,i=0,a=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;e$.indexOf(t.color)?1:$.indexOf(e.color)<$.indexOf(t.color)||e.ppe.price-t.price));const o=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let e=0;e{let n,i=Game.buyBulk;1===Game.buyMode?q=i:i=q,1===i&&(i=yt),10===i&&(i=bt),100===i&&(i=kt),t+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[t].childNodes[1].textContent=Game.Objects[o].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[t].textContent=pe(i[o].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].className=E+i[o].color,n=e.PPDisplayTime?ue(Math.round(i[o].pp)):pe(Math.round(i[o].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].textContent=n;const a=me((Game.Objects[o].bulkPrice-(Game.cookies+mo()))/uo());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[t].className=E+a.color,"Done!"===a.text&&Game.cookies{!Game.Tiers[e.tieredUpgrades[o].tier].special&&ao(e.tieredUpgrades[o].name)&&(t*=2)})),Object.keys(e.synergies).forEach((o=>{if(ao(e.synergies[o].name)){const n=e.synergies[o];n.buildingTie1.name===e.name?t*=1+.05*n.buildingTie2.amount:n.buildingTie2.name===e.name&&(t*=1+.001*n.buildingTie1.amount)}})),e.fortune&&ao(e.fortune.name)&&(t*=1.07),e.grandma&&ao(e.grandma.name)&&(t*=1+.01*Zt.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&ao(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){default:t*=1;break;case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06}return t}function wo(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;ao("Thousand fingers")&&(t+=.1),ao("Million fingers")&&(t*=5),ao("Billion fingers")&&(t*=10),ao("Trillion fingers")&&(t*=20),ao("Quadrillion fingers")&&(t*=20),ao("Quintillion fingers")&&(t*=20),ao("Sextillion fingers")&&(t*=20),ao("Septillion fingers")&&(t*=20),ao("Octillion fingers")&&(t*=20),ao("Nonillion fingers")&&(t*=20);let o=1,n=0;return Object.keys(Zt).forEach((e=>{"Cursor"!==Zt[e].name&&(n+=Zt[e].amount)})),t*=n,o*=vo(e),o*=Game.magicCpS("Cursor"),o*=io("cursorCps"),Game.ComputeCps(.1,ao("Reinforced index finger")+ao("Carpal tunnel prevention cream")+ao("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{ao(Game.GrandmaSynergies[e])&&(o*=2)})),ao("Bingo center/Research facility")&&(o*=4),ao("Ritual rolling pins")&&(o*=2),ao("Naughty list")&&(o*=2),ao("Elderwort biscuits")&&(o*=1.02),o*=io("grandmaCps"),ao("Cat ladies"))for(let e=0;e{"Grandma"!==Zt[e].name&&(i+=Zt[e].amount)})),o*=1+.01*oo("Elder Battalion")*i,o*=Game.magicCpS(t.name),(t.baseCps+n)*o}:o.cps=function(e){let t=1;return t*=vo(e),t*=Game.magicCpS(e.name),e.baseCPS*t},o.baseCps=t.baseCps,o.name=t.name,o.tieredUpgrades=t.tieredUpgrades,o.synergies=t.synergies,o.fortune=t.fortune,o.grandma=t.grandma,o.baseCPS=t.baseCps,o.id=t.id,o.vanilla=t.vanilla,o}function xo(e){const t=Game.Upgrades[e],o={};return o.power=t.power,"function"==typeof o.power&&("Sugar crystal cookies"===t.name?o.power=function(){let e=5;return Object.keys(Zt).forEach((t=>{Zt[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(ao("Starlove")&&(e=3),Game.hasGod){const t=ro("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function To(){Ae=Game.UpgradesOwned,je=Game.pledges,De=Game.AchievementsOwned,He=Game.heavenlyPower,Ue=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Zt[e];void 0===o&&(Zt[e]=wo(e),o=Zt[e],go(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&("Temple"===t.name&&(Ie=t.minigame.slot[0],ze=t.minigame.slot[1],Ve=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Zt[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=eo[e];void 0===o&&(eo[e]=xo(e),o=eo[e]),o.bought=t.bought,eo[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=to[e];void 0===o&&(to[e]=Go(e),o=to[e]),o.won=t.won,to[e]=o})),ko(),$e=Ye,Re=Ke}function Mo(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className="CMTextBlue",t.textContent=e,t}function So(e){e.appendChild(Mo("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(Mo("Bonus Cookies per Click")),e.lastChild.style.display="none";const o=document.createElement("div");o.style.marginBottom="4px",o.style.color="white",o.style.display="none",o.id="CMTooltipCookiePerClick",e.appendChild(o),e.appendChild(Mo("Payback Period"));const n=document.createElement("div");n.style.marginBottom="4px",n.id="CMTooltipPP",e.appendChild(n),e.appendChild(Mo("Time Left"));const i=document.createElement("div");if(i.id="CMTooltipTime",e.appendChild(i),"b"===ne){e.appendChild(Mo("Production left till next achievement")),e.lastChild.id="CMTooltipProductionHeader";const t=document.createElement("div");t.id="CMTooltipProduction",e.appendChild(t)}}function Bo(e,t,o){let n=e,i=0;for(;n{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function Eo(){null!==l("CMDispTooltipWarningParent")&&(0===e.ToolWarnPos?(l("CMDispTooltipWarningParent").style.top="auto",l("CMDispTooltipWarningParent").style.margin="4px -4px",l("CMDispTooltipWarningParent").style.padding="3px 4px"):(l("CMDispTooltipWarningParent").style.right="auto",l("CMDispTooltipWarningParent").style.margin="4px",l("CMDispTooltipWarningParent").style.padding="4px 3px"))}function No(){if(To(),"none"!==l("tooltipAnchor").style.display&&l("CMTooltipArea")){l("CMTooltipArea").innerHTML="";const t=function(){l("tooltip").firstChild.style.paddingBottom="4px";const e=document.createElement("div");return e.style.border="1px solid",e.style.padding="4px",e.style.margin="0px -4px",e.id="CMTooltipBorder",e.className="CMTextGray",e}();l("CMTooltipArea").appendChild(t),"b"===ne?function(){if(1===e.TooltipBuildUpgrade&&1===Game.buyMode){let t;if(So(l("CMTooltipBorder")),1===Game.buyMode?K=t:t=K,1===Game.buyBulk?t=yt:10===Game.buyBulk?t=bt:100===Game.buyBulk&&(t=kt),te=Game.Objects[ie].bulkPrice,oe=t[ie].bonus,1===e.TooltipBuildUpgrade&&1===Game.buyMode){l("CMTooltipIncome").textContent=pe(oe,2);const o=Math.round(oe/Game.cookiesPs*1e4);Number.isFinite(o)&&0!==o?l("CMTooltipIncome").textContent+=` (${o/100}% of income)`:l("CMTooltipIncome").textContent+=` (<0${e.ScaleSeparator?",":"."}01% of income)`,l("CMTooltipBorder").className=E+t[ie].color,e.PPDisplayTime?l("CMTooltipPP").textContent=ue(t[ie].pp):l("CMTooltipPP").textContent=pe(t[ie].pp,2),l("CMTooltipPP").className=E+t[ie].color;const n=me((te-(Game.cookies+mo()))/uo());l("CMTooltipTime").textContent=n.text,"Done!"===n.text&&Game.cookiest.plantsById[t.plot[ie[1]][ie[0]][0]-1].mature,o=t.plantsById[t.plot[ie[1]][ie[0]][0]-1].name;l("CMTooltipBorder").appendChild(Mo("Reward (Current / Maximum)"));const n=document.createElement("div");n.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(n),"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${e?pe(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${pe(60*Game.cookiesPs*30)}`:"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${e?pe(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${pe(60*Game.cookiesPs*3)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${e?pe(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${pe(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${e?pe(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${pe(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===ne?function(){const{minigame:t}=Game.Objects.Farm;if(e.TooltipLump){l("CMTooltipBorder").appendChild(Mo("Cookies gained from harvesting:"));let e=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let n=0;n<6;n++)for(let i=0;i<6;i++)if(t.plot[n][i][0]>=1){const a=t.plot[n][i],r=t.plantsById[a[0]-1],l=r.name;let s=!0;o&&r.immortal&&(s=!1),a[1]0&&t=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",l("CMTimerBarGCTime").textContent=Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps),n+=1),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",l("CMTimerBarRenTime").textContent=Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps),n+=1):l("CMTimerBarRen").style.display="none";const i={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((t=>{if(Game.buffs[t]){const a=ho(Game.buffs[t].name,Game.buffs[t].name,[{id:`${Game.buffs[t].name}Bar`}]);a.style.display="";let r="";r=void 0!==ee[Game.buffs[t].name]?ee[Game.buffs[t].name]:j,a.lastChild.children[1].className=N+r,a.lastChild.children[1].style.color="black",2===e.TimerBarOverlay?a.lastChild.children[1].textContent=`${Math.round(Game.buffs[t].time/Game.buffs[t].maxTime*100)}%`:a.lastChild.children[1].textContent="",a.lastChild.children[1].style.width=`${Math.round(Game.buffs[t].time*(o-8*Math.ceil(Game.buffs[t].time/Game.fps).toString().length)/Game.buffs[t].maxTime)}px`,a.lastChild.children[2].textContent=Math.ceil(Game.buffs[t].time/Game.fps),n+=1,i[Game.buffs[t].name]=a}})),Object.keys(i).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(i[e])})),0!==n&&(l("CMTimerBar").style.height=12*n+2+"px"),le!==n&&(le=n,yo())}}(),fo(),No(),function(){if(1===e.TooltipWrink&&1===_){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===X[t]||void 0===X[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const n=document.createElement("div");n.style.textAlign="center",n.id="CMTooltipWrinkler",o.appendChild(n),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),Q=t,X[t]=1}}else X[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===e.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[Q],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[Q].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Zt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=pe(e)}}(),e.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu(),t(),e.Scale){let e=l("cookies").innerHTML.replace(/.*(?=
)/i,pe(Game.cookies));Game.prefs.monospace&&(e=`${e}`),l("cookies").innerHTML=e}}function Fo(){he.addLatest(Game.computedMouseCps)}class Wo{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){let t=e;t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length);let o=0;for(let e=this.queue.length-1;e>=0&&e>this.queue.length-1-t;e--)o+=this.queue[e];return 0===o?0:o/t}calcSum(e){let t=e;return t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length),0===t?0:this.queue.slice(-t).reduce(((e,t)=>e+t),0)}}function Lo(){const t=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let o=Game.cookies+Kt;Game.cpsSucked>0&&(o+=Gt),It=Math.max(Game.cookiesEarned,o),o*=.05;const n=t-Ge,i=Math.max(0,Game.cookies-ve)/n,a=Math.max(0,Gt-we)/n,r=Math.max(0,wt[0]-xe)/n,l=Math.max(0,o-Ct)/n,s=(Game.cookieClicks-Te)/n;for(let e=0;e0&&(n=A),n}function jo(t,o){Object.keys(t).forEach((n=>{if(e.PPRigidelMode&&1===o)t[n].color=D;else{t[n].color=Ao(t[n],Game.Objects[n].getSumPrice(o));for(let o=0;o{const i=Game.Objects[n].getSumPrice(o);Game.cookiesPs?t[n].pp=Math.max(i-(Game.cookies+mo()),0)/Game.cookiesPs+i/t[n].bonus:t[n].pp=i/t[n].bonus,e.PPRigidelMode&&1===o||qt.push([t[n].pp,o])}))}function Ho(){!function(){Xt=1/0,qt=[],void 0===e.PPExcludeTop&&(e.PPExcludeTop=0),Do(yt,1),Do(bt,10),Do(kt,100),qt.sort(((e,t)=>e[0]-t[0]));let t=0;if(e.PPOnlyConsiderBuyable)for(;qt[t][1]>Game.cookies&&(t+=1,qt.length!==t+1););Xt=qt[e.PPExcludeTop][t],jo(yt,1),jo(bt,10),jo(kt,100)}(),Object.keys(Mt).forEach((e=>{Game.cookiesPs?Mt[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+mo()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/Mt[e].bonus:Mt[e].pp=Game.Upgrades[e].getPrice()/Mt[e].bonus,Number.isNaN(Mt[e].pp)&&(Mt[e].pp=1/0),Mt[e].color=Ao(Mt[e],Game.Upgrades[e].getPrice())}))}function Uo(e,t,o,n,i){let a=o,r=0;for(let o=0;o{if(Game.Objects[e].minigameLoaded&&Game.Objects[e].minigame.effs){const o=Game.Objects[e].minigame.effs;Object.keys(o).forEach((e=>{t[e]?t[e]*=o[e]:t[e]=o[e]}))}})),Qe=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(Ue)*He*function(){let e=0;if(ao("Heavenly chip secret")&&(e+=.05),ao("Heavenly cookie stand")&&(e+=.2),ao("Heavenly bakery")&&(e+=.25),ao("Heavenly confectionery")&&(e+=.25),ao("Heavenly key")&&(e+=.25),e*=1+.05*oo("Dragon God"),ao("Lucky digit")&&(e*=1.01),ao("Lucky number")&&(e*=1.01),ao("Lucky payout")&&(e*=1.01),Game.hasGod){const t=ro("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=io("cps"),ao("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];ao(o.name)&&("function"==typeof o.power?e*=1+.01*eo[o.name].power(eo[o.name]):e*=1+.01*o.power)})),ao("Specialized chocolate chips")&&(e*=1.01),ao("Designer cocoa beans")&&(e*=1.02),ao("Underworld ovens")&&(e*=1.03),ao("Exotic nuts")&&(e*=1.04),ao("Arcane sugar")&&(e*=1.05),ao("Increased merriness")&&(e*=1.15),ao("Improved jolliness")&&(e*=1.15),ao("A lump of coal")&&(e*=1.01),ao("An itchy sweater")&&(e*=1.01),ao("Santa's dominion")&&(e*=1.2),ao("Fortune #100")&&(e*=1.01),ao("Fortune #101")&&(e*=1.07),ao("Dragon scale")&&(e*=1.03);let o=1;if(ro){let t=ro("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=ro("ages"),1===t?e*=1+.15*Math.sin(B/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(B/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(B/1e3/86400*Math.PI*2)),t=ro("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=ro("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=ro("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}ao("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const n=De/25;let i=1;if(ao("Santa's milk and cookies")&&(i*=1.05),i*=1+.05*oo("Breath of Milk"),ro){const e=ro("mother");1===e?i*=1.1:2===e?i*=1.05:3===e&&(i*=1.03)}i*=io("milk");let a=1;ao("Kitten helpers")&&(a*=1+.1*n*i),ao("Kitten workers")&&(a*=1+.125*n*i),ao("Kitten engineers")&&(a*=1+.15*n*i),ao("Kitten overseers")&&(a*=1+.175*n*i),ao("Kitten managers")&&(a*=1+.2*n*i),ao("Kitten accountants")&&(a*=1+.2*n*i),ao("Kitten specialists")&&(a*=1+.2*n*i),ao("Kitten experts")&&(a*=1+.2*n*i),ao("Kitten consultants")&&(a*=1+.2*n*i),ao("Kitten assistants to the regional manager")&&(a*=1+.175*n*i),ao("Kitten marketeers")&&(a*=1+.15*n*i),ao("Kitten analysts")&&(a*=1+.125*n*i),ao("Kitten executives")&&(a*=1+.115*n*i),ao("Kitten angels")&&(a*=1+.1*n*i),ao("Fortune #103")&&(a*=1+.05*n*i),Object.keys(Zt).forEach((e=>{const t=Zt[e];let a=t.cps(t);1!==Game.ascensionMode&&(a*=(1+.01*t.level)*o),"Grandma"===t.name&&ao("Milkhelp® lactose intolerance relief tablets")&&(a*=1+.05*n*i),Xe+=t.amount*a})),ao('"egg"')&&(Xe+=9),e*=a;let r=1;if(ao("Chicken egg")&&(r*=1.01),ao("Duck egg")&&(r*=1.01),ao("Turkey egg")&&(r*=1.01),ao("Quail egg")&&(r*=1.01),ao("Robin egg")&&(r*=1.01),ao("Ostrich egg")&&(r*=1.01),ao("Cassowary egg")&&(r*=1.01),ao("Salmon roe")&&(r*=1.01),ao("Frogspawn")&&(r*=1.01),ao("Shark egg")&&(r*=1.01),ao("Turtle egg")&&(r*=1.01),ao("Ant larva")&&(r*=1.01),ao("Century egg")){let e=10*Math.floor((P-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),gt=1+.1*(1-(1-e/100)**3),r*=gt}e*=r,ao("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+oo("Radiant Appetite");const l=Xe*e;Object.keys(Game.CpsAchievements).forEach((e=>{l>=Game.CpsAchievements[e].threshold&&$o(Game.CpsAchievements[e].name)})),qe=l;const{n:s}=Game.shimmerTypes.golden,c=oo("Dragon's Fortune");for(let t=0;t{ao(e[o])&&(t+=.1)}))}e*=t}if(ao("Shimmering veil [off]")){let t=.5;ao("Reinforced membrane")&&(t+=.1),e*=1+t}ao("Magic shenanigans")&&(e*=1e3),ao("Occult obstruction")&&(e*=0),Xe=Game.runModHookOnValue("cps",Xe),e*=Po(),Xe*=e}const Io=["Fortune #001","Fortune #002","Fortune #003","Fortune #004","Fortune #005","Fortune #006","Fortune #007","Fortune #008","Fortune #009","Fortune #010","Fortune #011","Fortune #012","Fortune #013","Fortune #014","Fortune #015","Fortune #016","Fortune #017","Fortune #018","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],zo=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],Vo=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],_o=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],Qo=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function Xo(e){return to[e]?to[e].won:0}function qo(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{ao(Game.GrandmaSynergies[t])&&(e+=1)})),!Xo("Elder")&&e>=7&&$o("Elder"),!Xo("Veteran")&&e>=14&&$o("Veteran");let t=0,o=1,n=1,i=1e5;Object.keys(Zt).forEach((e=>{t+=Zt[e].amount,i=Math.min(Zt[e].amount,i),Xo("Mathematician")||Zt[e].amount=1&&$o("One with everything"),1===o&&$o("Mathematician"),1===n&&$o("Base 10"),i>=100&&$o("Centennial"),i>=150&&$o("Centennial and a half"),i>=200&&$o("Bicentennial"),i>=250&&$o("Bicentennial and a half"),i>=300&&$o("Tricentennial"),i>=350&&$o("Tricentennial and a half"),i>=400&&$o("Quadricentennial"),i>=450&&$o("Quadricentennial and a half"),i>=500&&$o("Quincentennial"),i>=550&&$o("Quincentennial and a half"),i>=600&&$o("Sexcentennial"),t>=100&&$o("Builder"),t>=500&&$o("Architect"),t>=1e3&&$o("Engineer"),t>=2e3&&$o("Lord of Constructs"),t>=4e3&&$o("Grand design"),t>=8e3&&$o("Ecumenopolis"),Ae>=20&&$o("Enhancer"),Ae>=50&&$o("Augmenter"),Ae>=100&&$o("Upgrader"),Ae>=200&&$o("Lord of Progress"),Ae>=300&&$o("The full picture"),Ae>=400&&$o("When there's nothing left to add"),t>=4e3&&Ae>=300&&$o("Polymath"),t>=8e3&&Ae>=400&&$o("Renaissance baker"),Zt.Cursor.amount+Zt.Grandma.amount>=777&&$o("The elder scrolls");let a=!0;Object.keys(zo).forEach((e=>{ao(zo[e])||(a=!1)})),a&&$o("Spooky cookies");let r=!0;if(Object.keys(Vo).forEach((e=>{ao(Vo[e])||(r=!1)})),r&&$o("Let it snow"),ao("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{ao(e[o].name)&&(t+=1)})),t>=e.length&&$o("O Fortuna")}}function Yo(e){const t={};return Object.keys(Game.Objects).forEach((o=>{t[o]={},t[o].bonus=function(e,t){To(),Zt[e].amount+=t;const o=Zt[e];"Cursor"===e?(o.amount>=1&&$o("Click"),o.amount>=2&&$o("Double-click"),o.amount>=50&&$o("Mouse wheel"),o.amount>=100&&$o("Of Mice and Men"),o.amount>=200&&$o("The Digital"),o.amount>=300&&$o("Extreme polydactyly"),o.amount>=400&&$o("Dr. T"),o.amount>=500&&$o("Thumbs, phalanges, metacarpals"),o.amount>=600&&$o("With her finger and her thumb"),o.amount>=700&&$o("Gotta hand it to you"),o.amount>=800&&$o("The devil's workshop")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&$o(Game.Objects[o.name].tieredAchievs[e].name)}));const n=De;return Ro(),qo(),n!==De&&Ro(),Xe-Game.cookiesPs}(o,e),1!==e&&(Fe=1)})),t}function Ko(){Object.keys(Game.Objects).forEach((e=>{yt[e].price=Uo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),bt[e].price=Uo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),kt[e].price=Uo(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)}))}function Jo(){yt=Yo(1),bt=Yo(10),kt=Yo(100),Mt=[],Object.keys(Game.Upgrades).forEach((t=>{const o=function(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){To(),"Shimmering veil [on]"===eo[e].name?eo["Shimmering veil [off]"].bought=0:"Golden switch [on]"===eo[e].name?eo["Golden switch [off]"].bought=0:eo[e].bought=(eo[e].bought+1)%2,Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Ae+=1),"Elder Pledge"===e?(je+=1,je>0&&$o("Elder nap"),je>=5&&$o("Elder slumber")):"Elder Covenant"===e?$o("Elder calm"):"Prism heart biscuits"===e?$o("Lovely cookies"):"Heavenly key"===e&&$o("Wholesome");const t=De;Ro(),qo(),t!==De&&Ro();const o=function(){let e=0;ao("Thousand fingers")&&(e+=.1),ao("Million fingers")&&(e*=5),ao("Billion fingers")&&(e*=10),ao("Trillion fingers")&&(e*=20),ao("Quadrillion fingers")&&(e*=20),ao("Quintillion fingers")&&(e*=20),ao("Sextillion fingers")&&(e*=20),ao("Septillion fingers")&&(e*=20),ao("Octillion fingers")&&(e*=20),ao("Nonillion fingers")&&(e*=20);let t=0;Object.keys(Zt).forEach((e=>{t+=Zt[e].amount})),t-=Zt.Cursor.amount,e*=t,ao("Plastic mouse")&&(e+=.01*Xe),ao("Iron mouse")&&(e+=.01*Xe),ao("Titanium mouse")&&(e+=.01*Xe),ao("Adamantium mouse")&&(e+=.01*Xe),ao("Unobtainium mouse")&&(e+=.01*Xe),ao("Eludium mouse")&&(e+=.01*Xe),ao("Wishalloy mouse")&&(e+=.01*Xe),ao("Fantasteel mouse")&&(e+=.01*Xe),ao("Nevercrack mouse")&&(e+=.01*Xe),ao("Armythril mouse")&&(e+=.01*Xe),ao("Technobsidian mouse")&&(e+=.01*Xe),ao("Plasmarble mouse")&&(e+=.01*Xe),ao("Miraculite mouse")&&(e+=.01*Xe),ao("Fortune #104")&&(e+=.01*Xe);let o=1;if(ao("Santa's helpers")&&(o*=1.1),ao("Cookie egg")&&(o*=1.1),ao("Halo gloves")&&(o*=1.1),ao("Dragon claw")&&(o*=1.03),ao("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,ao("Luminous gloves")?20:10)),o*=io("click"),Zt.Temple.minigameLoaded&&ro){const e=ro("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}Object.keys(Game.buffs).forEach((e=>{void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick)})),o*=1+.05*oo("Dragon Cursor");let n=o*Game.ComputeCps(1,ao("Reinforced index finger")+ao("Carpal tunnel prevention cream")+ao("Ambidextrous"),e);return n=Game.runModHookOnValue("cookiesPerClick",n),Game.hasBuff("Cursed finger")&&(n=Game.buffs["Cursed finger"].power),n}()-Game.computedMouseCps;return o?[Xe-Game.cookiesPs,o]:[Xe-Game.cookiesPs]}return[]}(t);"Elder Pledge"===t?(Mt[t]={bonus:Game.cookiesPs-Me},1===e.CalcWrink?Mt[t].bonus-=Se:2===e.CalcWrink&&(Mt[t].bonus-=Be),Number.isFinite(Mt[t].bonus)||(Mt[t].bonus=0)):(Mt[t]={},o[0]&&(Mt[t].bonus=o[0]),o[1]&&(Mt[t].bonusMouse=o[1]))}))}function Zo(e,t,o){let n=0,i=0,a=0,r=0,l=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;a0?e/=t:e=0,Ft=Zo(7,e,ut),Nt=2*Ft[1]/ut,Ot=Ft[2]/60/60/6/pt,At=Zo(6,e,mt),Wt=2*At[1]/mt,Lt=At[2]/60/60/6/pt,Ht=Zo(7,7*e,ut),jt=2*Ht[1]/ut,Dt=Ht[2]/60/60/6/pt,Rt=Zo(6,7*e,mt),Ut=2*Rt[1]/mt,$t=Rt[2]/60/60/6/pt}function tn(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),n=e-Ne,i=Math.max(0,o-Oe)/n;for(let e=0;e{e.push(Game.Upgrades[t])})),e.sort((function(e,t){return e.order>t.order?1:e.order{const o=e[t];if(0===o.bought){let e="";e+=function(e){let t="crate upgrade missing";"prestige"===e.pool&&(t+=" heavenly");let o=0;Game.prefs.crates||(o=1),o&&(t+=" noFrame");let{icon:n}=e;e.iconFunction&&(n=e.iconFunction());const i=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?Pt+=e:"cookie"===o.pool?Et+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(Bt+=e)}}))}function nn(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),ft=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(ft*=2)}}function an(){et=900*dt/.15,et*=pt;const e=Po();e>0?et/=e:et=0,tt=ut*(.15*et)+13,ot=mt*(.15*et)+13,nt=7*et,it=ut*(.15*nt)+13,at=mt*(.15*nt)+13,rt=2*et,lt=.15*rt,st=0;let t=0,o=0;Object.keys(Game.Objects).forEach((e=>{Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&(o+=1)})),Object.keys(Game.Objects).forEach((e=>{(Game.Objects[e].amountst&&(st=2*Game.Objects[e].price,ct=e)}))}function rn(){let e=1,t=1,o=1;ao("Green yeast digestives")&&(o*=1.01),ao("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),ut=o*e,mt=o*t,pt=1,0===Game.shimmerTypes.golden.n&&(pt*=1+1.23*Game.auraMult("Dragon's Fortune"))}function ln(){Gt=0,vt=0,wt=[0,null];for(let e=0;ewt[0]&&(wt=[t,e]))}}function sn(){ko(),ln(),an(),rn(),en(),on(),nn(),ge=new Wo(J[J.length-1]),fe=new Wo(J[J.length-1]),Ce=new Wo(J[J.length-1]),ye=new Wo(J[J.length-1]),be=new Wo(Z[Z.length-1]),ke=new Wo(5),he=new Wo(20*Z[Z.length-1]),tn(),Lo(),Jo(),Ko(),Ho()}const cn={CPSMode:1,AvgCPSHist:3,AvgClicksHist:0,CalcWrink:0,Scale:2,ScaleDecimals:2,ScaleSeparator:0,ScaleCutoff:999999,TimeFormat:0,DetailedTime:1,PPDisplayTime:0,BuildColour:1,PPOnlyConsiderBuyable:0,PPExcludeTop:0,PPRigidelMode:0,PPSecondsLowerLimit:0,ColourBlue:"#4bb8f0",ColourGreen:"#00ff00",ColourYellow:"#ffff00",ColourOrange:"#ff7f00",ColourRed:"#ff0000",ColourPurple:"#ff00ff",ColourGray:"#b3b3b3",ColourPink:"#ff1493",ColourBrown:"#8b4513",BotBar:1,TimerBar:1,TimerBarPos:0,TimerBarOverlay:2,UpBarColour:1,UpgradeBarFixedPos:1,SortBuildings:0,SortUpgrades:0,DragonAuraInfo:1,GrimoireBar:1,GCTimer:1,Favicon:1,WrinklerButtons:1,HideSectionsButtons:0,TooltipBuildUpgrade:1,TooltipAmor:0,ToolWarnLucky:1,ToolWarnLuckyFrenzy:1,ToolWarnConjure:1,ToolWarnConjureFrenzy:1,ToolWarnEdifice:1,ToolWarnUser:0,ToolWarnBon:1,ToolWarnPos:1,TooltipGrim:1,TooltipWrink:1,TooltipLump:1,TooltipPlots:1,TooltipPantheon:1,TooltipAscendButton:1,Stats:1,MissingUpgrades:1,MissingAchievements:0,UpStats:1,HeavenlyChipsTarget:1,ShowMissedGC:1,Title:1,GeneralSound:1,GCNotification:0,GCFlash:1,ColourGCFlash:"#ffffff",GCSound:1,GCVolume:100,GCSoundURL:"https://freesound.org/data/previews/66/66717_931655-lq.mp3",FortuneNotification:0,FortuneFlash:1,ColourFortuneFlash:"#ffffff",FortuneSound:1,FortuneVolume:100,FortuneSoundURL:"https://freesound.org/data/previews/174/174027_3242494-lq.mp3",SeaNotification:0,SeaFlash:1,ColourSeaFlash:"#ffffff",SeaSound:1,SeaVolume:100,SeaSoundURL:"https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3",GardFlash:1,ColourGardFlash:"#ffffff",GardSound:1,GardVolume:100,GardSoundURL:"https://freesound.org/data/previews/103/103046_861714-lq.mp3",MagicNotification:0,MagicFlash:1,ColourMagicFlash:"#ffffff",MagicSound:1,MagicVolume:100,MagicSoundURL:"https://freesound.org/data/previews/221/221683_1015240-lq.mp3",WrinklerNotification:0,WrinklerFlash:1,ColourWrinklerFlash:"#ffffff",WrinklerSound:1,WrinklerVolume:100,WrinklerSoundURL:"https://freesound.org/data/previews/124/124186_8043-lq.mp3",WrinklerMaxNotification:0,WrinklerMaxFlash:1,ColourWrinklerMaxFlash:"#ffffff",WrinklerMaxSound:1,WrinklerMaxVolume:100,WrinklerMaxSoundURL:"https://freesound.org/data/previews/152/152743_15663-lq.mp3",BulkBuyBlock:0,FavouriteSettings:1,Header:{Favourite:1,Calculation:1,Notation:1,Colours:1,BarsDisplay:1,Tooltip:1,Statistics:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Misc:1,InfoTab:1}},dn=function(e){if(1===e){const e=function(){try{Notification.requestPermission().then()}catch(e){return!1}return!0};"Notification"in window?e()?Notification.requestPermission().then():Notification.requestPermission():console.log("This browser does not support notifications.")}};function pn(){1===e.BotBar?(l("CMBotBar").style.display="",fo()):l("CMBotBar").style.display="none",yo()}function un(){BeautifyAll(),Game.RefreshStore(),Game.RebuildUpgrades(),fo(),co(),po()}function mn(){1===e.Favicon&&y>0?Vt.wrath?l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}class hn{constructor(e,t){this.type=e,this.group=t}}class gn extends hn{constructor(e,t,o,n,i,a=null){super(e,t),this.label=o,this.desc=n,this.toggle=i,a&&(this.func=a)}}class fn extends hn{constructor(e,t,o){super(e,t),this.desc=o}}class Cn extends hn{constructor(e,t,o,n){super(e,t),this.label=o,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}}class yn extends hn{constructor(e,t,o,n,i,a){super(e,t),this.label=o,this.desc=n,this.min=i,this.max=a}}const bn={CPSMode:new gn("bool","Calculation",["Current cookies per second","Average cookies per second"],"Calculate times using current cookies per second or average cookies per second",!1),AvgCPSHist:new gn("bool","Calculation",["Average CPS in past 10s","Average CPS in past 15s","Average CPS in past 30s","Average CPS in past 1m","Average CPS in past 5m","Average CPS in past 10m","Average CPS in past 15m","Average CPS in past 30m"],"How much time average Cookies Per Second should consider",!1),AvgClicksHist:new gn("bool","Calculation",["Average clicks in past 1s","Average clicks in past 5s","Average clicks in past 10s","Average clicks in past 15s","Average clicks in past 30s"],"How much time average Cookie Clicks should consider",!1),CalcWrink:new gn("bool","Calculation",["Calculate with wrinklers OFF","Calculate with wrinklers ON","Calculate with single fattest wrinkler ON"],"Calculate times and average Cookies Per Second with (only the single non-shiny fattest) wrinklers",!0,(function(){_e=!0})),Scale:new gn("bool","Notation",["Game's setting scale","Metric","Short scale","Short scale (Abbreviated)","Scientific notation","Engineering notation"],"Change how long numbers are formatted",!1,(function(){un()})),ScaleDecimals:new gn("bool","Notation",["1 decimals","2 decimals","3 decimals"],'Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game\'s Setting Scale"',!1,(function(){un()})),ScaleSeparator:new gn("bool","Notation",[". for decimals (standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(function(){un()})),ScaleCutoff:new yn("numscale","Notation","Notation cut-off point: ","The number from which Cookie Monster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),TimeFormat:new gn("bool","Notation",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX"],"Change the time format",!1),DetailedTime:new gn("bool","Notation",["Detailed time OFF","Detailed time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(function(){1===e.DetailedTime?Game.sayTime=V:Game.sayTime=S.sayTime})),PPDisplayTime:new gn("bool","Notation",["PP as value (standard)","PP as time unit"],"Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.",!1),BuildColour:new gn("bool","Colours",["Building colours OFF","Building colours ON"],"Colour code buildings",!0,(function(){co()})),PPOnlyConsiderBuyable:new gn("bool","Colours",["Don't ignore non-buyable","Ignore non-buyable"],"Makes Cookie Monster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),PPExcludeTop:new gn("bool","Colours",["Don't ignore any","Ignore 1st best","Ignore 1st and 2nd best","Ignore 1st, 2nd and 3rd best"],"Makes Cookie Monster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPRigidelMode:new gn("bool","Colours",["Rigidel mode OFF","Rigidel mode ON"],'Makes Cookie Monster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',!0),PPSecondsLowerLimit:new yn("numscale","Colours","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),ColourBlue:new fn("colour","Colours","Standard colour is blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels"),ColourGreen:new fn("colour","Colours","Standard colour is green. Used to show best PP building, for Blood Frenzy bar, and for various labels"),ColourYellow:new fn("colour","Colours","Standard colour is yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels"),ColourOrange:new fn("colour","Colours","Standard colour is orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels"),ColourRed:new fn("colour","Colours","Standard colour is Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels"),ColourPurple:new fn("colour","Colours","Standard colour is purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels"),ColourGray:new fn("colour","Colours","Standard colour is gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar"),ColourPink:new fn("colour","Colours","Standard colour is pink. Used for Dragonflight bar"),ColourBrown:new fn("colour","Colours","Standard colour is brown. Used for Dragon Harvest bar"),BotBar:new gn("bool","BarsDisplay",["Bottom bar OFF","Bottom bar ON"],"Building information",!0,(function(){pn()})),TimerBar:new gn("bool","BarsDisplay",["Timer bar OFF","Timer bar ON"],"Bar with timers for golden cookie, season popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(function(){bo()})),TimerBarPos:new gn("bool","BarsDisplay",["Timer bar position (top left)","Timer bar position (bottom)"],"Placement of the timer bar",!1,(function(){0===e.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),yo()})),TimerBarOverlay:new gn("bool","BarsDisplay",["Timer bar overlay OFF","Timer bar overlay only seconds","Timer bar overlay full"],"Overlay on timers displaying seconds and/or percentage left",!0),UpBarColour:new gn("bool","BarsDisplay",["Upgrade colours/bar OFF","Upgrade colours with bar ON","Upgrade colours without bar ON"],"Colour code upgrades and optionally add a counter bar",!1,(function(){1===e.UpBarColor?(l("CMUpgradeBar").style.display="",po()):2===e.UpBarColor?(l("CMUpgradeBar").style.display="none",po()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),UpgradeBarFixedPos:new gn("bool","BarsDisplay",["Upgrade bar fixed position OFF","Upgrade bar fixed position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(function(){1===e.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),SortBuildings:new gn("bool","BarsDisplay",["Sort buildings: default","Sort buildings: PP of x1 purchase","Sort buildings: PP of selected bulk mode"],"Sort the display of buildings in either default order or by PP",!1,(function(){co()})),SortUpgrades:new gn("bool","BarsDisplay",["Sort upgrades: default","Sort upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(function(){po()})),DragonAuraInfo:new gn("bool","BarsDisplay",["Extra dragon aura info OFF","Extra dragon aura info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),GrimoireBar:new gn("bool","BarsDisplay",["Grimoire magic meter timer OFF","Grimoire magic meter timer ON"],"A timer on how long before the Grimoire magic meter is full",!0),GCTimer:new gn("bool","BarsDisplay",["Golden cookie timer OFF","Golden cookie timer ON"],"A timer on the golden cookie when it has been spawned",!0,(function(){1===e.GCTimer?Object.keys(se).forEach((e=>{se[e].style.display="block",se[e].style.left=Yt[e].l.style.left,se[e].style.top=Yt[e].l.style.top})):Object.keys(se).forEach((e=>se[e].style.display="none"))})),Favicon:new gn("bool","BarsDisplay",["Favicon OFF","Favicon ON"],"Update favicon with golden/wrath cookie",!0,(function(){mn()})),WrinklerButtons:new gn("bool","BarsDisplay",["Extra wrinkler buttons OFF","Extra wrinkler buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(function(){t()})),HideSectionsButtons:new gn("bool","BarsDisplay",["Hide buildings/upgrades button OFF","Hide buildings/upgrades button ON"],"Show buttons for hiding and showing the buildings and upgrades sections in the right column",!0,(function(){e.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),TooltipBuildUpgrade:new gn("bool","Tooltip",["Building/upgrade tooltip information OFF","Building/upgrade tooltip information ON"],"Extra information in building/upgrade tooltips",!0),TooltipAmor:new gn("bool","Tooltip",["Buildings tooltip amortization information OFF","Buildings tooltip amortization information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new gn("bool","Tooltip",["Tooltip lucky warning OFF","Tooltip lucky warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new gn("bool","Tooltip",["Tooltip lucky frenzy warning OFF","Tooltip lucky frenzy warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new gn("bool","Tooltip",["Tooltip conjure warning OFF","Tooltip conjure warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new gn("bool","Tooltip",["Tooltip conjure frenzy warning OFF","Tooltip conjure frenzy warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new gn("bool","Tooltip",["Tooltip edifice warning OFF","Tooltip edifice warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new yn("numscale","Tooltip","Tooltip warning at x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnBon:new gn("bool","Tooltip",["Calculate tooltip warning with bonus CPS OFF","Calculate tooltip warning with bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),ToolWarnPos:new gn("bool","Tooltip",["Tooltip warning position (left)","Tooltip warning position (bottom)"],"Placement of the warning boxes",!1,(function(){Eo()})),TooltipGrim:new gn("bool","Tooltip",["Grimoire tooltip information OFF","Grimoire tooltip information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new gn("bool","Tooltip",["Wrinkler tooltip OFF","Wrinkler tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new gn("bool","Tooltip",["Sugar lump tooltip OFF","Sugar lump tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new gn("bool","Tooltip",["Garden plots tooltip OFF","Garden plots tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipPantheon:new gn("bool","Tooltip",["Pantheon tooltip OFF","Pantheon tooltip ON"],"Shows additional info in the pantheon tooltip",!0),TooltipAscendButton:new gn("bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new gn("bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new gn("bool","Statistics",["Missing upgrades OFF","Missing upgrades ON"],"Shows missing upgrades in statistics menu",!0),MissingAchievements:new gn("bool","Statistics",["Missing Achievements OFF","Missing Normal Achievements ON"],"Shows missing normal achievements in statistics menu.",!1),UpStats:new gn("bool","Statistics",["Statistics update rate (default)","Statistics update rate (1s)"],"Default rate is once every 5 seconds",!1),HeavenlyChipsTarget:new yn("numscale","Statistics","Heavenly chips target: ",'Use this to set a heavenly chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new gn("bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many golden cookies you have missed",!0),Title:new gn("bool","NotificationGeneral",["Title OFF","Title ON","Title pinned tab highlight"],'Update title with colden cookie/season popup timers; pinned tab highlight only changes the title when a golden cookie/season popup spawns; "!" means that golden cookie/reindeer can spawn',!0),GeneralSound:new gn("bool","NotificationGeneral",["Consider game volume setting OFF","Consider game volume setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new gn("bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when golden cookie spawns",!0,(function(){dn(e.GCNotification)})),GCFlash:new gn("bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on golden cookie",!0),ColourGCFlash:new fn("colour","NotificationGC","The colour of the GC flash, standard colour is white"),GCSound:new gn("bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on golden cookie",!0),GCVolume:new Cn("vol","NotificationGC",[],"Volume"),GCSoundURL:new gn("url","NotificationGC","Sound URL:","URL of the sound to be played when a golden cookie spawns"),FortuneNotification:new gn("bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when fortune cookie is on the ticker",!0,(function(){dn(e.FortuneNotification)})),FortuneFlash:new gn("bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on fortune cookie spawn",!0),ColourFortuneFlash:new fn("colour","NotificationFC","The colour of the fortune flash, standard colour is white"),FortuneSound:new gn("bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on fortune cookie spawn",!0),FortuneVolume:new Cn("vol","NotificationFC",[],"Volume"),FortuneSoundURL:new gn("url","NotificationFC","Sound URL:","URL of the sound to be played when the ticker has a fortune cookie"),SeaNotification:new gn("bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on season popup",!0,(function(){dn(e.SeaNotification)})),SeaFlash:new gn("bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on season popup",!0),ColourSeaFlash:new fn("colour","NotificationSea","The colour of the season popup flash, standard colour is white"),SeaSound:new gn("bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on season popup",!0),SeaVolume:new Cn("vol","NotificationSea",[],"Volume"),SeaSoundURL:new gn("url","NotificationSea","Sound URL:","URL of the sound to be played when on season popup spawns"),GardFlash:new gn("bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on garden tick",!0),ColourGardFlash:new fn("colour","NotificationGard","The colour of the garden flash, standard colour is white"),GardSound:new gn("bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on garden tick",!0),GardVolume:new Cn("vol","NotificationGard",[],"Volume"),GardSoundURL:new gn("url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new gn("bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(function(){dn(e.MagicNotification)})),MagicFlash:new gn("bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),ColourMagicFlash:new fn("colour","NotificationMagi","The colour of the magic flash, standard colour is white"),MagicSound:new gn("bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new Cn("vol","NotificationMagi",[],"Volume"),MagicSoundURL:new gn("url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new gn("bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a wrinkler appears",!0,(function(){dn(e.WrinklerNotification)})),WrinklerFlash:new gn("bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a wrinkler appears",!0),ColourWrinklerFlash:new fn("colour","NotificationWrink","The colour of the wrinkler flash, standard colour is white"),WrinklerSound:new gn("bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a wrinkler appears",!0),WrinklerVolume:new Cn("vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new gn("url","NotificationWrink","Sound URL:","URL of the sound to be played when a wrinkler appears"),WrinklerMaxNotification:new gn("bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of wrinklers has appeared",!0,(function(){dn(e.WrinklerMaxNotification)})),WrinklerMaxFlash:new gn("bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),ColourWrinklerMaxFlash:new fn("colour","NotificationWrinkMax","The colour of the maximum wrinkler flash, standard colour is white"),WrinklerMaxSound:new gn("bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of wrinklers has appeared",!0),WrinklerMaxVolume:new Cn("vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new gn("url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of wrinklers has appeared"),BulkBuyBlock:new gn("bool","Miscellaneous",["Block bulk buying OFF","Block bulk buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0),FavouriteSettings:new gn("bool","Miscellaneous",["Favourite settings section OFF","Favourite settings section ON","Favourite settings section ON (Locked)"],"Show stars before each setting which allows selecting it for a 'favourites' section at the top of the Cookie Monster settings. Setting this to Locked removes the stars but shows the 'favourites' section",!0,(function(){Game.UpdateMenu()}))};function kn(){return JSON.stringify({favouriteSettings:de,settings:e,version:"2.031.7"})}function Gn(){if(Je!==Game.dragonLevel||_e){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const t=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount{if(e=n,Game.Objects[e].amount{Zt[e]=wo(e)})),eo=[],Object.keys(Game.Upgrades).forEach((e=>{eo[e]=xo(e)})),to=[],Object.keys(Game.Achievements).forEach((e=>{to[e]=Go(e)})),To()}let xn=!1;function Tn(t,o,n){(1===e[o]||n)&&3===t&&!1===xn||1===t?(l("CMFlashScreen").style.backgroundColor=e[`Colour${o}`],l("CMFlashScreen").style.opacity="0.5",3===t?(l("CMFlashScreen").style.display="inline",setTimeout((function(){Tn(2,o,!0)}),1e3/Game.fps)):setTimeout((function(){Tn(0,o,!0)}),1e3/Game.fps)):2===t?(l("CMFlashScreen").style.opacity="1",setTimeout((function(){Tn(1,o,!0)}),1e3/Game.fps)):0===t&&(l("CMFlashScreen").style.display="none")}function Mn(t,o,n,i){if((1===e[o]||i)&&!1===xn){const o=new Audio(t);e.GeneralSound?o.volume=e[n]/100*(Game.volume/100):o.volume=e[n]/100,o.play()}}function Sn(t,o,n){1===e[t]&&"hidden"===document.visibilityState&&!1===xn&&new Notification(o,{body:n,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})}function Bn(){if(re!==Game.OnAscend&&(re=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===e.BotBar&&(l("CMBotBar").style.display="none"),1===e.TimerBar&&(l("CMTimerBar").style.display="none")):(pn(),bo()),Co()),!Game.OnAscend&&0===Game.AscendTimer){r!==Object.keys(Game.mods).length&&(wn(),sn(),r=Object.keys(Game.mods).length),_e&&(Jo(),Game.Has("Golden switch [off]")?(To(),eo["Golden switch [off]"].bought=0,Ro(),dt=Xe):dt=Game.cookiesPs,rn(),an(),on(),en(),Gn(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)Jt[e][t]=vn(e,t)}(),nn(),function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const t=Game.Objects.Bank.minigame.goods;let o=0;Object.keys(t).forEach((e=>{const n=t[e];o+=n.stock*n.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;To();let t=2;5!==$e&&18!==$e||(t-=1),5!==Re&&18!==Re||(t-=1),$e=5,Re=18;for(let e=0;e{Zt[t].amount>0&&(e=t)})),Zt[e].amount-=1,Le-=1}return Object.keys(Zt).forEach((t=>{const o=Zt[t];e+=so(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),Kt=e}(),_e=0);const t=Game.auraMult("Fierce Hoarder")>0;!We&&t?(We=!0,Fe=1):We&&!t&&(We=!1,Fe=1),Fe&&(Ko(),Fe=0),function(){ln(),Ho(),function(){xt=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Zt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}Tt=e,xt=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t}(),Lo(),tn();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);Qt=ue(e/uo())}(),G=0,Yt={},Object.keys(Game.shimmers).forEach((e=>{Yt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(Vt=Game.shimmers[e],G+=1)})),Object.keys(se).forEach((e=>{void 0===Yt[e]&&(se[e].parentNode.removeChild(se[e]),delete se[e])})),y!==Game.shimmerTypes.golden.n?(y=Game.shimmerTypes.golden.n,y&&(b{void 0===se[Game.shimmers[t].id]&&function(t){const o=document.createElement("div");o.id=`GCTimer${t.id}`,o.style.width="96px",o.style.height="96px",o.style.position="absolute",o.style.zIndex="10000000001",o.style.textAlign="center",o.style.lineHeight="96px",o.style.fontFamily='"Kavoon", Georgia, serif',o.style.fontSize="35px",o.style.cursor="pointer",o.style.display="block",0===e.GCTimer&&(o.style.display="none"),o.style.left=t.l.style.left,o.style.top=t.l.style.top,o.onclick=function(){t.pop()},o.onmouseover=function(){t.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",t.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},o.onmouseout=function(){t.l.style.filter="",t.l.style.webkitFilter=""},se[t.id]=o,l("shimmers").appendChild(o)}(Game.shimmers[t])}))),mn(),b=G,0===G&&(Vt=0)):1===e.GCTimer&&y&&Object.keys(se).forEach((e=>{se[e].style.opacity=Yt[e].l.style.opacity,se[e].style.transform=Yt[e].l.style.transform,se[e].textContent=Math.ceil(Yt[e].life/Game.fps)})),f!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(f=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,f&&(Tn(3,"FortuneFlash",!1),Mn(e.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),Sn("FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),g!==Game.shimmerTypes.reindeer.spawned&&(g=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(_t=Game.shimmers[e])})),Tn(3,"SeaFlash",!1),Mn(e.SeaSoundURL,"SeaSound","SeaVolume",!1),Sn("SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!")),Game.Objects.Farm.minigameLoaded&&C!==Game.Objects.Farm.minigame.nextStep&&(0!==C&&C0){let t=0;Object.keys(Game.wrinklers).forEach((e=>{2===Game.wrinklers[e].phase&&(t+=1)})),t>v?(v=t,t===Game.getWrinklersMax()&&e.WrinklerMaxFlash?Tn(3,"WrinklerMaxFlash",!1):Tn(3,"WrinklerFlash",!1),t===Game.getWrinklersMax()&&e.WrinklerMaxSound?Mn(e.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):Mn(e.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),t===Game.getWrinklersMax()&&e.WrinklerMaxNotification?Sn("WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):Sn("WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):v=t}}()}}function Pn(){let t="";for(let o=0;o<$.length;o++)t+=`.CMText${$[o]} { color: ${e[`Colour${$[o]}`]}; }\n`;for(let o=0;o<$.length;o++)t+=`.CMBack${$[o]} { background-color: ${e[`Colour${$[o]}`]}; }\n`;for(let o=0;o<$.length;o++)t+=`.CMBorder${$[o]} { border: 1px solid ${e[`Colour${$[o]}`]}; }\n`;l("CMCSS").textContent=t,co()}function En(){const e=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),t=e.match(/CookieMonster.*(;|$)/);if(null!==t){const o=e.replace(t[0],`CookieMonster:${kn()}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(o)}!END!`))}}function Nn(t){if(void 0!==localStorage.CMConfig&&delete localStorage.CMConfig,void 0!==t){e=t,void 0!==e.Colors&&delete e.Colors,void 0!==e.Colours&&delete e.Colours;let o=!1;Object.keys(cn).forEach((t=>{void 0===e[t]?(o=!0,e[t]=cn[t]):"Header"===t&&Object.keys(cn.Header).forEach((n=>{void 0!==e[t][n]&&e[t][n]>-1&&e[t][n]<2||(o=!0,e[t][n]=cn[t][n])}))})),o&&En(),Bn(),Object.keys(cn).forEach((e=>{"Header"!==e&&void 0!==bn[e].func&&bn[e].func()}))}else Nn(cn);Game.UpdateMenu(),Pn()}function On(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Fn(t,o){if("b"===t){if(l("tooltip").innerHTML=Game.Objects[o].tooltip(),1===e.TooltipAmor){const e=Uo(Game.Objects[o],Game.Objects[o].basePrice,0,Game.Objects[o].free,Game.Objects[o].amount),t=e-Game.Objects[o].totalCookies;t>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${pe(t)} ${1===Math.floor(t)?"cookie":"cookies"} left to amortize (${me((e-Game.Objects[o].totalCookies)/(Game.Objects[o].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(pe(Game.Objects[o].bulkPrice)).join(pe((Game.Objects[o],Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Game.buyBulk,1))))}else if("u"===t){if(!Game.UpgradesInStore[o])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[o],"store")}else"s"===t?l("tooltip").innerHTML=Game.lumpTooltip():"g"===t?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(o)():"p"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(o[0],o[1])():"ha"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"wb"===t?l("tooltip").innerHTML="":"pag"===t?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(o)():"pas"===t&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(o[0])());if("b"===t&&1===Game.buyMode||"u"===t||"s"===t||"g"===t||"p"===t&&!Game.keys[16]||"ha"===t||"wb"===t||"pag"===t||"pas"===t&&-1!==o[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return ne=t,ie=o,No(),l("tooltip").innerHTML}function Wn(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(T[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("g",`${e}`)}),"this"),Game.tooltip.wobble()})}))}function Ln(){if(!m&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:t}=Game.Objects["Wizard tower"];p=t.draw,Game.Objects["Wizard tower"].minigame.draw=function(){p(),1===e.GrimoireBar&&t.magic1&&(e.Header[t]=0),En()}function Rn(t,o){const n=document.createElement("div");n.className="title",n.style.padding="0px 16px",n.style.opacity="0.7",n.style.fontSize="17px",n.style.fontFamily='"Kavoon", Georgia, serif',n.appendChild(document.createTextNode(`${t} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[o]?"-":"+",i.onclick=function(){$n(o),Game.UpdateMenu()},n.appendChild(i),n}function In(e,t,o,n){const i=document.createElement("div");i.className="listing";const a=document.createElement("b");if(a.textContent=t,i.appendChild(a),"withTooltip"===e){i.className="listing",i.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(I[n].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",i.appendChild(e)}return i.appendChild(document.createTextNode(": ")),i.appendChild(o),i}function zn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const n=document.createElement("div"),i=document.createElement("div");i.style.minWidth="140px",i.style.marginBottom="4px";const a=document.createElement("div");return a.className="name",a.style.marginBottom="4px",a.style.textAlign="center",a.textContent="Missing",i.appendChild(a),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),i.appendChild(o)})),n.appendChild(i),o.onmouseover=function(){Game.tooltip.draw(this,escape(n.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Vn(t){const o=document.createElement("div");if(o.className="subsection",o.appendChild(t),o.appendChild(Rn("Lucky Cookies","Lucky")),e.Header.Lucky&&o.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+mo(){Game.HasUnlocked(Qo[e])||c.push(Qo[e])})),0!==c.length&&e.appendChild(In("basic","Rare plant drops left to unlock",zn(c))),e}())),o.appendChild(Rn("Prestige","Prestige")),e.Header.Prestige&&o.appendChild(function(){const t=document.createElement("div");t.className="CMStatsPrestigeSection";const o=Math.floor(Game.HowMuchPrestige(It+Game.cookiesReset+Gt+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")?Ct:0)));t.appendChild(In("withTooltip","Prestige level (cur / max)",document.createTextNode(`${pe(Game.prestige)} / ${pe(o)}`),"PrestMaxTooltipPlaceholder"));const n=Math.max(0,Game.HowManyCookiesReset(o+1)-(It+Game.cookiesReset+Gt+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")&&Ct?Ct:0))),i=document.createDocumentFragment();i.appendChild(document.createTextNode(pe(n)));const a=document.createElement("small");a.textContent=` (${ue(n/zt,1)})`,i.appendChild(a),t.appendChild(In("withTooltip","Cookies to next level",i,"NextPrestTooltipPlaceholder")),t.appendChild(In("withTooltip","Heavenly chips (cur / max)",document.createTextNode(`${pe(Game.heavenlyChips)} / ${pe(o-Game.prestige+Game.heavenlyChips)}`),"HeavenChipMaxTooltipPlaceholder")),t.appendChild(In("basic","Heavenly chips per second (last 5 seconds)",document.createTextNode(pe(ht,2))));const r=Number(e.HeavenlyChipsTarget);if(!Number.isNaN(r)){const e=r-Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned));e>0&&(t.appendChild(In("basic","Heavenly chips to target set in settings (cur)",document.createTextNode(pe(e)))),t.appendChild(In("basic","Time till target (cur, current 5 second average)",document.createTextNode(ue(e/ht)))))}const l=function(e){let t=Game.cookiesPs;To(),0===eo["Heavenly key"].bought&&(eo["Heavenly chip secret"].bought=1,eo["Heavenly cookie stand"].bought=1,eo["Heavenly bakery"].bought=1,eo["Heavenly confectionery"].bought=1,eo["Heavenly key"].bought=1,Ro(),t=Xe,To()),It>=1e6&&$o("Sacrifice"),It>=1e9&&$o("Oblivion"),It>=1e12&&$o("From scratch"),It>=1e15&&$o("Nihilism"),It>=1e18&&$o("Dematerialize"),It>=1e21&&$o("Nil zero zilch"),It>=1e24&&$o("Transcendence"),It>=1e27&&$o("Obliterate"),It>=1e30&&$o("Negative void"),It>=1e33&&$o("To crumbs, you say?"),It>=1e36&&$o("You get nothing"),It>=1e39&&$o("Humble rebeginnings"),It>=1e42&&$o("The end of the world"),It>=1e45&&$o("Oh, you're back"),It>=1e48&&$o("Lazarus"),It>=1e51&&$o("Smurf account"),It>=1e54&&$o("If at first you don't succeed"),eo["Heavenly chip secret"].bought=1,eo["Heavenly cookie stand"].bought=1,eo["Heavenly bakery"].bought=1,eo["Heavenly confectionery"].bought=1,eo["Heavenly key"].bought=1,Ue=e;const o=De;Ro(),qo(),o!==De&&Ro();const n=Xe-t;return Ue=Game.prestige,n}(o),s=document.createDocumentFragment();s.appendChild(document.createTextNode(pe(l)));const c=Math.round(l/Game.cookiesPs*1e4);if(Number.isFinite(c)&&0!==c){const e=document.createElement("small");e.textContent=` (${c/100}% of income)`,s.appendChild(e)}t.appendChild(In("withTooltip","Reset bonus income",s,"ResetTooltipPlaceholder"));const d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),p=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),u=p-d;if(!Game.Has("Lucky digit")){let e=7-p%10;e<0&&(e+=10);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(In("basic",'Next "Lucky Digit" (total / reset)',i))}if(!Game.Has("Lucky number")){let e=777-p%1e3;e<0&&(e+=1e3);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(In("basic",'Next "Lucky Number" (total / reset)',i))}if(!Game.Has("Lucky payout")){let e=777777-p%1e6;e<0&&(e+=1e6);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(In("basic",'Next "Lucky Payout" (total / reset)',i))}return t}()),Game.cpsSucked>0&&(o.appendChild(Rn("Wrinklers","Wrink")),e.Header.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${pe(Gt)} / ${pe(vt)} `));const t=document.createElement("a");t.textContent="Pop All Normal",t.className="option",t.onclick=function(){On()},e.appendChild(t),o.appendChild(In("basic","Rewards of Popping (All/Normal)",e));const n=document.createDocumentFragment();n.appendChild(document.createTextNode(`${pe(wt[0])} `));const i=document.createElement("a");i.textContent="Pop Single Fattest",i.className="option",i.onclick=function(){null!==wt[1]&&(Game.wrinklers[wt[1]].hp=0)},n.appendChild(i),o.appendChild(In("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==wt[1]?wt[1]:"None"})`,n))}if(o.appendChild(function(){const t=document.createElement("div");t.className="CMStatsSeasonSection";let o=!1;const n=[];Object.keys(zo).forEach((e=>{Game.Has(zo[e])||(n.push(zo[e]),o=!0)}));const i=[];Object.keys(Vo).forEach((e=>{Game.Has(Vo[e])||(i.push(Vo[e]),o=!0)}));const a=[];Object.keys(_o).forEach((e=>{Game.Has(_o[e])||(a.push(_o[e]),o=!0)}));const r=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(r.push(Game.eggDrops[e]),o=!0)}));const l=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(l.push(Game.rareEggDrops[e]),o=!0)}));const s=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),c=Game.Has("Century egg");if(("christmas"===Game.season||o||s||c)&&(t.appendChild(Rn("Season Specials","Sea")),e.Header.Sea)){if(0!==n.length){t.appendChild(In("basic","Halloween cookies left to buy",zn(n)));let e=.95;if(Game.HasAchiev("Spooky cookies")&&(e=.8),Game.Has("Starterror")&&(e*=.9),e*=1/Game.dropRateMult(),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}const o=n.length/7;t.appendChild(In("basic","Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${pe((1-e)*o*100)}% / ${pe((1-.9*e)*o*100)}%`)))}if(0!==i.length){t.appendChild(In("basic","Christmas cookies left to buy",zn(i)));let e=.8;if(Game.HasAchiev("Let it snow")&&(e=.6),e*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(e*=.95),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}const o=i.length/7;t.appendChild(In("basic","Chance of receiving a cookie from reindeer",document.createTextNode(`${pe((1-e)*o*100)}%`)))}0!==a.length&&t.appendChild(In("basic","Valentine cookies left to buy",zn(a)));const e=function(e){let t=e*(1/Game.dropRateMult());if(Game.HasAchiev("Hide & seek champion")&&(t*=.7),Game.Has("Omelette")&&(t*=.9),Game.Has("Starspawn")&&(t*=.9),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=1-t,n=Game.eggDrops.length-r.length,i=Game.rareEggDrops.length-l.length,a=.9*o*(1-n/Game.eggDrops.length),s=.1*o*(1-i/Game.rareEggDrops.length),c=.9*o*(n/Game.eggDrops.length)+.1*o*(i/Game.rareEggDrops.length);return[a+.9*c*(1-n/Game.eggDrops.length),s+.1*c*(1-i/Game.rareEggDrops.length)]};0!==r.length&&(t.appendChild(In("basic","Normal easter eggs left to unlock",zn(r))),t.appendChild(In("basic","Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${pe(100*e(.98)[0])}% / ${pe(100*e(.9)[0])}%`)))),0!==l.length&&(t.appendChild(In("basic","Rare easter eggs left to unlock",zn(l))),t.appendChild(In("basic","Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${pe(100*e(.98)[1])}% / ${pe(100*e(.9)[1])}%`)))),"christmas"===Game.season&&t.appendChild(In("basic","Reindeer reward",document.createTextNode(pe(ft)))),s&&t.appendChild(In("withTooltip","Chocolate egg cookies",document.createTextNode(pe(Ct)),"ChoEggTooltipPlaceholder")),c&&t.appendChild(In("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(gt-1))/100+"%")))}return t}()),o.appendChild(Rn("Miscellaneous","Misc")),e.Header.Misc){if(o.appendChild(In("basic",`Average cookies per second (past ${J[e.AvgCPSHist]<60?`${J[e.AvgCPSHist]} seconds`:J[e.AvgCPSHist]/60+(3===e.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(pe(uo(),3)))),o.appendChild(In("basic",`Average cookie clicks per second (past ${Z[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(pe(St,1)))),o.appendChild(In("basic",`Cookies from clicking (past ${Z[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(pe(he.calcSum(St*Z[e.AvgClicksHist]))))),Game.Has("Fortune cookies")){const e=[];Object.keys(Io).forEach((t=>{Game.Has(Io[t])||e.push(Io[t])})),0!==e.length&&o.appendChild(In("basic","Fortune Upgrades Left to Buy",zn(e)))}if(e.ShowMissedGC&&o.appendChild(In("basic","Missed golden cookies",document.createTextNode(pe(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),o.appendChild(In("basic","Time till autosave",e))}}l("menu").insertBefore(o,l("menu").childNodes[2]),e.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&Pt){const t=Pt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Pt,e.appendChild(i)}else if("Upgrades"===e.children[0].innerHTML){if(Bt){const t=Bt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(n),e.insertBefore(o,e.childNodes[3]);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Bt,e.insertBefore(i,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Et){const t=Et.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Et,e.appendChild(i)}}})),e.MissingAchievements&&function(){let t;Object.values(document.querySelectorAll("div.title")).forEach((e=>{e.textContent.includes("Achievements")&&(t=e.parentElement.querySelectorAll("div.listing.crateBox")[0])})),e.MissingAchievements&&Object.values(t.children).forEach((e=>{if(!e.className.includes("enabled")){const t=e.onclick.toString().match(/(?<=\[).*(?=\])/g)[0],{icon:o}=Game.AchievementsById[t];e.style.backgroundPosition=`${48*-o[0]}px ${48*-o[1]}px`,e.onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return function(e){const t=[];"shadow"===e.pool?t.push("Shadow Achievement","#9700cf"):t.push("Achievement",0),t.push("Locked",0);let o=0;(Game.Has("Neuromancy")||Game.sesame&&"debug"===e.pool)&&(o=1),o&&0===e.won?t.push("Click to win!","#00c462"):o&&e.won>0&&t.push("Click to lose!","#00c462");let{icon:n}=e;e.iconFunction&&(n=e.iconFunction());let{desc:i}=e;e.descFunc&&(i=e.descFunc("stats"));let a="";for(let e=0;e[${t[e]}]`);return a=a.substring(1),`
\n
\n
${e.name}
\n ${a}
${i}
\n ${Game.sesame?`
Id : ${e.id} | Order : ${Math.floor(e.order)}${e.tier?` | Tier : ${e.tier}`:""}
`:""}`}(Game.AchievementsById[t])}),"top"),Game.tooltip.wobble())}}}))}()}const _n={Favourite:"Favourite Settings",Calculation:"Calculation",Notation:"Notation",Colours:"Colours and colour coding",BarsDisplay:"Infobars and visual settings",Tooltip:"Tooltips",Statistics:"Statistics",Notification:"Notifications",Miscellaneous:"Miscellaneous"},Qn={NotificationGeneral:"General Notifications",NotificationGC:"Golden Cookie",NotificationFC:"Fortune Cookie",NotificationSea:"Season Special",NotificationGard:"Garden Tick",NotificationMagi:"Full Magic Bar",NotificationWrink:"Wrinkler",NotificationWrinkMax:"Maximum Wrinklers"};function Xn(t,o){const n=document.createElement("div");n.className="title",n.style.opacity="0.7",n.style.fontSize="17px",n.appendChild(document.createTextNode(`${o} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[t]?"-":"+",i.onclick=function(){$n(t),Game.UpdateMenu()},n.appendChild(i),n}function qn(t){const o=document.createElement("div");if(o.className="listing",1===e.FavouriteSettings&&o.appendChild(function(e){const t=document.createElement("a");return de.includes(e)?(t.innerText="★",t.style.color="yellow"):t.innerText="☆",t.className="option",t.onclick=function(){!function(e){de.includes(e)?de=de.filter((function(t){return t!==e})):de.push(e)}(e),En(),Game.UpdateMenu()},t.onmouseover=function(){Game.tooltip.draw(this,escape(I.FavouriteSettingPlaceholder.innerHTML))},t.onmouseout=function(){Game.tooltip.hide()},t.appendChild(document.createTextNode(" ")),t}(t)),"bool"===bn[t].type){const n=document.createElement("a");bn[t].toggle&&0===e[t]?n.className="option off":n.className="option",n.id=Hn+t,n.onclick=function(){!function(t){e[t]+=1,e[t]===bn[t].label.length?(e[t]=0,bn[t].toggle&&(l(Hn+t).className="option off")):l(Hn+t).className="option",void 0!==bn[t].func&&bn[t].func(),l(Hn+t).innerHTML=bn[t].label[e[t]],En()}(t)},n.textContent=bn[t].label[e[t]],o.appendChild(n);const i=document.createElement("label");return i.textContent=bn[t].desc,i.style.lineHeight="1.6",o.appendChild(i),o}if("vol"===bn[t].type){const n=document.createElement("div");n.className="sliderBox";const i=document.createElement("div");i.style.float="left",i.innerHTML=bn[t].desc,n.appendChild(i);const a=document.createElement("div");a.id=`slider${t}right`,a.style.float="right",a.innerHTML=`${e[t]}%`,n.appendChild(a);const r=document.createElement("input");r.className="slider",r.id=`slider${t}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=e[t],r.oninput=function(){Un(t)},r.onchange=function(){Un(t)},n.appendChild(r),o.appendChild(n);const l=document.createElement("a");return l.className="option",l.onclick=function(){Mn(e[t.replace("Volume","SoundURL")],t.replace("Volume","Sound"),t,!0)},l.textContent="Test sound",o.appendChild(l),o}if("url"===bn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${bn[t].label} `,n.style.lineHeight="1.6",o.appendChild(n);const i=document.createElement("input");i.id=Hn+t,i.className="option",i.type="text",i.readOnly=!0,i.setAttribute("value",e[t]),i.style.width="300px",o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("input");a.id=`${Hn+t}Prompt`,a.className="option",a.type="text",a.setAttribute("value",e[t]);const r=document.createElement("a");r.className="option",r.onclick=function(){!function(e,t){Game.promptWrapL.className="framed";const o=e;Game.promptL.innerHTML=`${o}
`,Object.keys(t).forEach((e=>{const o=document.createElement("a");o.id=`promptOption${e}`,o.className="option",o.onclick=function(){PlaySound("snd/tick.mp3"),t[e][1]()},o.textContent=t[e][0],Game.promptL.children[1].appendChild(o)})),Game.promptAnchorL.style.display="block",Game.darkenL.style.display="block",Game.promptL.focus(),Game.promptOn=1,Game.UpdatePrompt()}(a.outerHTML,[["Save",function(){e[t]=l(`CMConfig${t}Prompt`).value,En(),Game.ClosePrompt(),Game.UpdateMenu()}],["Cancel",function(){Game.ClosePrompt()}]])},r.textContent="Edit",o.appendChild(r);const s=document.createElement("label");return s.textContent=bn[t].desc,s.style.lineHeight="1.6",o.appendChild(s),o}if("colour"===bn[t].type){const n=document.createElement("span");n.className="option";const i=document.createElement("input");i.id=t,i.style.width="65px",i.setAttribute("value",e[t]),n.appendChild(i),new jn(i,{hash:!0,position:"right",onInput:function(){e[this.targetElement.id]=this.toHEXString(),Pn(),En(),Game.UpdateMenu()}});const a=document.createElement("label");if(a.textContent=bn[t].desc,a.style.lineHeight="1.6",n.appendChild(a),t.includes("Flash")){const e=document.createElement("a");e.className="option",e.onclick=function(){Tn(3,t.replace("Colour",""),!0)},e.textContent="Test flash",n.appendChild(e)}return o.appendChild(n),Dn().init(),o}if("numscale"===bn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${bn[t].label} `,n.style.lineHeight="1.6",o.appendChild(n);const i=document.createElement("input");i.id=Hn+t,i.className="option",i.type="number",i.value=e[t],i.min=bn[t].min,i.max=bn[t].max,i.oninput=function(){e[t]=this.value,En(),un()},o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("label");return a.textContent=bn[t].desc,a.style.lineHeight="1.6",o.appendChild(a),o}return o}function Yn(t){if(1===e.TimerBar&&0===e.TimerBarPos){const e=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=e,t(),Game.mouseY+=e}else t()}function Kn(){S.Beautify=Beautify,Beautify=pe,S.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){S.CalculateGains(),_e=1,B=Date.now(),P=Date.now()},S.tooltip={},S.tooltip.draw=Game.tooltip.draw,S.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){S.tooltip.drawMod(e,t,o)},S.tooltip.update=Game.tooltip.update,S.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){S.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let t=0;1===e.ToolWarnLucky&&1===e.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(t=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-t-46)}px`}}()},S.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){Yn(S.UpdateWrinklers)},S.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){Yn(S.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(function(){Yn(Game.ClickCookie)}),!1),S.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){S.RebuildUpgrades(),M=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(M[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("u",`${e}`)}),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},S.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(t){(!e.BulkBuyBlock||Game.ObjectsById[t].bulkPrice-1;--e)if(Game.ObjectsById[e].amount>0){const o=Zt[Game.ObjectsById[e].name].name;Zt[o].amount-=1,Le-=1,t=Zt[o].basePrice*Game.priceIncrease**Math.max(0,Zt[o].amount-1-Zt[o].free),t=Game.modifyBuildingPrice(Zt[o],t),t=Math.ceil(t);break}const o=De;return Ro(),qo(),o!==De&&Ro(),[Xe-Game.cookiesPs,t]}(t),n=ue(o/(e+Game.cookiesPs)),i=pe(e/Game.cookiesPs*100);l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const a=document.createElement("div");a.style.minWidth="200px",a.style.textAlign="center",a.textContent=`Picking this aura will change CPS by ${pe(e)} (${i}% of current CPS).`,l("dragonAuraInfo").appendChild(a);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${n} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(t)},S.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){S.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${Ze}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},S.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==Dn().picker&&void 0!==Dn().picker.owner||(S.UpdateMenu(),function(){const t=document.createElement("div");t.className="title","prefs"===Game.onMenu?(t.textContent="Cookie Monster Settings",function(t){const o=document.createDocumentFragment();o.appendChild(t),Object.keys(_n).forEach((t=>{if("Favourite"===t){if(0!==de.length&&e.FavouriteSettings>0&&(o.appendChild(Xn(t,_n[t])),e.Header[t]))for(let e=0;e{const n=Xn(t,Qn[t]);n.style.fontSize="15px",n.style.opacity="0.5",o.appendChild(n),e.Header[t]&&Object.keys(bn).forEach((e=>{bn[e].group===t&&o.appendChild(qn(e))}))})):Object.keys(bn).forEach((e=>{bn[e].group===t&&o.appendChild(qn(e))})))}));const n=document.createElement("div");n.className="listing";const i=document.createElement("a");i.className="option",i.onclick=function(){Nn(cn)},i.textContent="Restore Default",n.appendChild(i),o.appendChild(n),l("menu").childNodes[2].insertBefore(o,l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}(t)):"stats"===Game.onMenu?e.Stats&&(t.textContent="Cookie Monster Statistics",Vn(t)):"log"===Game.onMenu&&(t.textContent="Cookie Monster ",function(t){const o=document.createElement("div");o.className="subsection";const n=document.createElement("span");if(n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=e.Header.InfoTab?"-":"+",n.onclick=function(){$n("InfoTab"),Game.UpdateMenu()},t.appendChild(n),o.appendChild(t),e.Header.InfoTab){const e=document.createElement("div");e.innerHTML='
\n Cookie Monster\n offers a wide range of tools and statistics to enhance your game experience.\n It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
\n Progess on new updates and all previous release notes can be found on the GitHub page linked above!
\n Please also report any bugs you may find over there!
\n
\n ',o.appendChild(e);const t=document.createElement("div");t.innerHTML="
\nThese are the release notes for the latest update (v 2.031.7).
\n
\nThis update implements the following functions:
\n- Updated the ordering and description of all settings of Cookie Monster
\n- Colours of Flash notifications can now be set by the user
\n- You can now select a number of settings to be your 'favourite'. They will be displayed at the top of all other settings in a new section. This functionality is toggleable and you can find it in the miscellaneous section
\n- The statistics page now shows cookies earned by clicking for a selected time period
\n- The statistics page can now show missing normal achievements, this can be toggled in the settings
\n
\nThis update fixes the following bugs:
\n- Fixed some typo's
\n- No longer show the wrinkler pop buttons when wrinklers can't spawn
\n- Fixed incorrect calculation of plant maturity for relevant tooltips
\n- Fixed edit prompts not working in settings
\n- Fixed red and purple being switched around for PP colour coding
\n- Fixed incorrect notation of numbers in Dragon tooltip and interface
\n- Fixed incorrect calculation of changing Dragon aura cost
\n- Fixed incorrect calculation of changing Pantheon gods effect
\n- Fixed fluctuating PP values when god Cyclius was selected
\n- Fixed black flickering when Golden Cookies or buffs start
\n
\n",o.appendChild(t)}const i=l("menu").children[1];i.insertBefore(o,i.children[1])}(t))}())},S.sayTime=Game.sayTime,V=function(e,t){return Number.isNaN(e)||e<=0?S.sayTime(e,t):ue(e/Game.fps,1)},S.Logic=Game.Logic,Game.Logic=function(){S.Logic();let t="Cookie Clicker";"fools"===Game.season&&(t="Cookie Baker"),ce=`${Game.OnAscend?"Ascending! ":""}${pe(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${t}`,function(){if(Game.OnAscend||0===e.Title)document.title=ce;else if(1===e.Title){let e,t,o,n=!1,i=!1;e=Vt?Vt.wrath?`[W${Math.ceil(Vt.life/Game.fps)}]`:`[G${Math.ceil(Vt.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,f&&(n=!0,t="[F]"),"christmas"===Game.season&&(i=!0,o=g?`[R${Math.ceil(_t.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let a=ce;"["===a.charAt(0)&&(a=a.substring(a.lastIndexOf("]")+1)),document.title=`${e+(n?t:"")+(i?o:"")} ${a}`}else if(2===e.Title){let e="",t=!1;Vt&&(t=!0,Vt.wrath?e+=`[W${Math.ceil(Vt.life/Game.fps)}]`:e+=`[G${Math.ceil(Vt.life/Game.fps)}]`),f&&(t=!0,e+="[F]"),"christmas"===Game.season&&g&&(e+=`[R${Math.ceil(_t.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const t=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),o=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let n="";n+=`You've been on this run for ${""===o?"not very long":o}.
`,n+='
',Game.prestige>0&&(n+=`Your prestige level is currently ${pe(Game.prestige)}.
(CpS +${pe(Game.prestige)}%)`,n+='
'),n+=Oe<1?"Ascending now would grant you no prestige.":Oe<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${pe(Oe)} prestige levels (+${pe(Oe)}% CpS)
and ${pe(Oe)} heavenly chips to spend.`,n+='
',n+=`You need ${pe(t)} more cookies for the next level.
`,n+=e.TooltipAscendButton?`
It takes ${Qt} to reach the next level and you were making ${pe(ht,2)} chips on average in the last 5 seconds.
`:"",l("ascendTooltip").innerHTML=n}()}}function Jn(){wn(),an(),sn(),r=Object.keys(Game.mods).length,w=document.createElement("style"),w.type="text/css",w.id="CMCSS",document.head.appendChild(w),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColour="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),n=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=E+t,o.textContent=e,o},i=o.appendChild(document.createElement("tr"));i.style.fontWeight="bold",i.appendChild(n("CM 2.031.7",W)),o.appendChild(document.createElement("tr")).appendChild(n("Bonus Income",O)),o.appendChild(document.createElement("tr")).appendChild(n("Payback Period",O)),o.appendChild(document.createElement("tr")).appendChild(n("Time Left",O)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{go(e)}))}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColour="black";const t=ho("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",color:D},{id:"CMTimerBarGCBar",color:j}]);e.appendChild(t);const o=ho("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",color:D},{id:"CMTimerBarRenBar",color:L}]);e.appendChild(o);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColour="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const n=document.createElement("span");return n.className=N+e,n.style.display="inline-block",n.style.height="10px",n.style.width="10px",n.style.marginRight="4px",o.appendChild(n),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(O,"Better than the best PP of a building option")),e.appendChild(o(F,"Same as the best PP building option")),e.appendChild(o(W,"Within the top 10 of PP for buildings")),e.appendChild(o(L,"Within the top 20 of PP for buildings")),e.appendChild(o(A,"Within the top 30 of PP for buildings")),e.appendChild(o(j,"Outside of the top 30 of PP for buildings")),e.appendChild(o(D,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=E+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",O)),e.appendChild(o("CMUpgradeBarGreen",F)),e.appendChild(o("CMUpgradeBarYellow",W)),e.appendChild(o("CMUpgradeBarOrange",L)),e.appendChild(o("CMUpgradeBarRed",A)),e.appendChild(o("CMUpgradeBarPurple",j)),e.appendChild(o("CMUpgradeBarGray",D)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMFlashScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMSectionHidButtons",e.style.textAlign="center";const t=document.createElement("a");t.className="option",t.onclick=function(){"flex"===l("upgrades").style.display?(l("upgrades").style.display="none",l("toggleUpgrades").style.display="none",l("techUpgrades").style.display="none",l("vaultUpgrades").style.display="none"):(l("upgrades").style.display="flex",0!==l("toggleUpgrades").children.length&&(l("toggleUpgrades").style.display="block"),0!==l("techUpgrades").children.length&&(l("techUpgrades").style.display="block"),0!==l("vaultUpgrades").children.length&&(l("vaultUpgrades").style.display="block"))},t.textContent="Hide/Show Upgrades",e.appendChild(t);const o=document.createElement("a");o.className="option",o.onclick=function(){"grid"===l("products").style.display?l("products").style.display="none":l("products").style.display="grid"},o.textContent="Hide/Show Buildings",e.appendChild(o),l("store").insertBefore(e,l("store").childNodes[2])}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}(),Object.keys(R).forEach((e=>{!function(e,t,o){const n=document.createElement("div");n.id=e;const i=document.createElement("div");i.style.minWidth=o,i.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="left",a.textContent=t,i.appendChild(a),n.appendChild(i),I[e]=n}(R[e][0],R[e][1],R[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){On()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("wb","PopAll")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==wt[1]&&(Game.wrinklers[wt[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("wb","PopFattest")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(x[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("b",`${e}`)}),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(s=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("s","Lump")}),"this"),Game.tooltip.wobble()}),h=Game.LoadMinigames,Game.LoadMinigames=function(){h(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("ha","HarvestAllButton")}),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("p",[`${t[0]}`,`${t[2]}`])}),"this"),Game.tooltip.wobble()}}))),Wn(),function(){if(Game.Objects.Temple.minigameLoaded){for(let e=0;e<11;e+=1)l(`templeGod${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("pag",e)}),"this"),Game.tooltip.wobble()};for(let e=0;e<3;e+=1)l(`templeSlot${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Fn("pas",[e,Game.Objects.Temple.minigame.slot[e]])}),"this"),Game.tooltip.wobble()}}}(),An()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){_=1},l("backgroundLeftCanvas").onmouseout=function(){_=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{X[e]=0}))},Kn(),An(),Game.CalculateGains(),Nn(),z=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.031.7 loaded!"):Game.Notify("Cookie Monster version 2.031.7 loaded!","","",1,1),Game.Win("Third-party")}const Zn={init:function(){xn=!0;let e=!0;Game.version!==Number("2.031")&&(e=confirm("Cookie Monster version 2.031.7 is meant for Game version 2.031. Loading a different version may cause errors. Do you still want to load Cookie Monster?")),e&&(Jn(),Game.registerHook("draw",Oo),Game.registerHook("logic",Bn),Game.registerHook("click",Fo),xn=!1)},load:function(e){const t=JSON.parse(e);wn(),void 0!==t.favouriteSettings&&(de=t.favouriteSettings),Nn(t.settings),"2.031.7"!==t.version&&(Game.prefs.popups?Game.Popup("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!"):Game.Notify("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!","","",0,1))},save:kn};Game.registerMod("CookieMonster",Zn)})()})(); diff --git a/dist/CookieMonster.js.map b/dist/CookieMonster.js.map index 61e9620c..539f36d9 100644 --- a/dist/CookieMonster.js.map +++ b/dist/CookieMonster.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://cookiemonster-mod/CookieMonster.js"],"names":["__webpack_modules__","877","module","global","factory","exports","document","win","Error","window","this","BoxShadow","funcName","elm","jsc","jscolor","initialized","instances","readyQueue","register","addEventListener","pub","init","installBySelector","selector","rootNode","node","elms","querySelectorAll","matchClass","RegExp","lookupClass","i","length","dataOpts","m","undefined","type","toLowerCase","isColorAttrSupported","getDataAttr","className","match","targetElm","optsStr","console","warn","docsRef","opts","trim","parseOptionsStr","e","str","JSON","parse","eParse","looseJSON","Function","eEval","getInstances","inst","targetElement","push","createEl","tagName","el","createElement","setData","nodeOrSelector","sel","querySelector","isNode","val","Node","nodeType","nodeName","removeChildren","firstChild","removeChild","isTextInput","isButton","n","indexOf","isButtonEmpty","value","textContent","isPassiveEventSupported","supported","Object","defineProperty","get","removeEventListener","setAttribute","dataProp","obj","arguments","data","hasOwnProperty","prop","map","removeData","getData","setDefault","name","attrName","getAttribute","setDataAttr","_attachedGroupEvents","attachGroupEvent","groupName","evnt","func","detachGroupEvents","evt","preventDefault","returnValue","captureTarget","target","setCapture","_capturedTarget","releaseTarget","releaseCapture","triggerEvent","eventName","bubbles","cancelable","ev","Event","createEvent","initEvent","dispatchEvent","triggerInputEvent","eventKey","keys","9","13","27","code","keyCode","strList","replace","split","hasClass","classList","contains","addClass","classNames","add","removeClass","repl","remove","getCompStyle","getComputedStyle","currentStyle","setStyle","styles","important","reversible","priority","origStyle","setVal","style","setProperty","hexColor","r","g","b","Math","round","toString","substr","toUpperCase","hexaColor","a","rgbColor","rgbaColor","linearGradient","stdName","prefixes","helper","tryFunc","tryVal","background","getFuncName","Array","prototype","join","call","setBorderRadius","border-radius","setBoxShadow","box-shadow","getElementPos","relativeToViewport","x","y","rect","getBoundingClientRect","left","top","viewPos","getViewPos","getElementSize","offsetWidth","offsetHeight","getAbsPointerPos","changedTouches","clientX","clientY","getRelPointerPos","targetRect","srcElement","doc","documentElement","pageXOffset","scrollLeft","clientLeft","pageYOffset","scrollTop","clientTop","getViewSize","innerWidth","clientWidth","innerHeight","clientHeight","RGB_HSV","min","v","max","h","HSV_RGB","s","u","floor","parseColorString","ret","rgba","format","parseInt","charAt","mR","mG","mB","mA","par","re","parseFloat","parsePaletteValue","mixed","vals","isArray","colors","color","containsTranparentColor","isAlphaFormat","scaleCanvasForHighDPR","canvas","dpr","devicePixelRatio","width","height","getContext","scale","genColorPreviewCanvas","separatorPos","specWidth","scaleForHighDPR","sepW","previewSeparator","sqSize","chessboardSize","sqColor1","chessboardColor1","sqColor2","chessboardColor2","cWidth","cHeight","ctx","fillStyle","fillRect","start","clearRect","lineWidth","beginPath","strokeStyle","moveTo","lineTo","stroke","genColorPreviewGradient","position","params","right","apply","redrawPosition","picker","owner","tp","vp","thisObj","fixed","c","ts","vs","pd","getPickerDims","ps","borderW","borderH","l","smartPosition","pp","positionValue","contractShadow","_drawPosition","vShadow","shadowBlur","wrap","boxS","shadow","shadowColor","w","controlBorderWidth","sliderSpace","getControlPadding","sliderSize","getSliderChannel","hasAlphaChannel","pal","getPaletteDims","padding","closeButton","buttonHeight","pW","pH","contentW","contentH","paddedW","paddedH","borderWidth","palette","cols","rows","cellW","cellH","sampleCount","_palette","paletteCols","ceil","paletteSpacing","paletteHeight","pointerBorderWidth","pointerThickness","getPadYChannel","mode","triggerCallback","callback","error","triggerGlobal","eventNames","trigger","_pointerMoveEvent","mouse","touch","_pointerEndEvent","_pointerOrigin","onDocumentKeyUp","tryHide","onWindowResize","onWindowScroll","onParentScroll","onDocumentMouseDown","showOnClick","disabled","show","onControlPointerStart","onPickerTouchStart","controlName","pointerType","registerDragEvents","offset","onDocumentPointerMove","onDocumentPointerEnd","parent","frameElement","ofs","abs","rel","channels","fromHSVA","setPad","setSld","setASld","onPaletteSampleClick","currentTarget","_setFormat","getFormat","paletteSetsAlpha","_paletteHasTransparency","fromRGBA","hideOnPaletteClick","hide","ofsX","ofsY","pointerAbs","xVal","yVal","fmt","createPadCanvas","draw","hGrad","createLinearGradient","addColorStop","vGrad","createSliderGradient","color1","color2","grad","createASliderGradient","hShadow","blur","spread","inset","flags","leaveValue","leaveAlpha","leavePreview","enumOpts","previewPosition","alphaChannel","deprecatedOpts","styleElement","onFineChange","overwriteImportant","closable","insetWidth","insetColor","refine","THIS","setOption","option","oldOpt","newOpt","setter","getOption","getter","drawPicker","_processParentElementsInDOM","box","boxB","pad","padB","padM","padCanvas","cross","crossBY","crossBX","crossLY","crossLX","sld","sldB","sldM","sldGrad","sldPtrS","sldPtrIB","sldPtrMB","sldPtrOB","asld","asldB","asldM","asldGrad","asldPtrS","asldPtrIB","asldPtrMB","asldPtrOB","btn","btnT","appendChild","passive","insetColors","outsetColor","p","displaySlider","displayAlphaSlider","pickerDims","crossOuterSize","crossSize","controlPadding","borderRadius","PI","clear","zIndex","border","borderColor","backgroundColor","opacity","controlBorderColor","cursor","instance","control","pointerBorderColor","pointerColor","overflow","display","sliderInnerSpace","innerHTML","chessboard","si","sampleColor","sampleCssColor","sc","sw","backgroundImage","toDataURL","backgroundRepeat","backgroundPosition","bottom","maxWidth","whiteSpace","buttonColor","font","textAlign","onmousedown","lineHeight","createTextNode","closeText","redrawPad","redrawSld","redrawASld","activeClassName","container","body","parentNode","yChannel","rgb1","rgb2","rgb","toHEXString","sldChannel","isPickerOwner","alpha","onChange","onInput","valueElement","alphaElement","previewElement","previewSize","previewPadding","required","hash","uppercase","forceStyle","hideOnLeave","minS","maxS","minV","maxV","minA","maxA","redraw","exposeColor","success","opt","channel","res","evs","callbackProp","isNaN","hsv","fromHSV","fromRGB","fromString","setPreviewElementBg","setValueElementValue","toHEXAString","toRGBString","toRGBAString","toGrayscale","toCanvas","toBackground","isLight","_currentFormat","processValueInput","processAlphaInput","colorStr","alphaVal","setAlphaElementValue","backgrounds","image","size","repeat","origin","preview","bg","sty","background-image","background-position","background-size","background-repeat","background-origin","padding-left","padding-right","_parentElementsProcessed","compStyle","set__palette","options","presetsArr","preset","slice","pres","presets","nonProperties","test","min-width","valueElementOrigEvents","oninput","oldVal","initValue","initAlpha","install","shift","ready","triggerNow","installByClassName","JSColor","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__esModule","d","definition","key","o","enumerable","CMOptions","metric","shortScale","shortScaleAbbreviated","LastModCount","TooltipLumpBackup","BackupGrimoireLaunch","BackupGrimoireLaunchMod","BackupGrimoireDraw","HasReplaceNativeGrimoireLaunch","HasReplaceNativeGrimoireDraw","LoadMinigames","LastSeasonPopupState","LastTickerFortuneState","LastGardenNextStep","LastGoldenCookieState","LastSpawnedGoldenCookieState","LastMagicBarFull","CurrSpawnedGoldenCookieState","LastWrinklerCount","DispCSS","TooltipBuildBackup","TooltipGrimoireBackup","TooltipUpgradeBackup","BackupFunctions","ColorTextPre","ColorBackPre","ColorBlue","ColorGreen","ColorYellow","ColorOrange","ColorRed","ColorPurple","ColorGray","ColorPink","ColorBrown","Colors","TooltipText","SimpleTooltipElements","CMLastAscendState","CMSayTime","TooltipWrinklerArea","TooltipWrinkler","TooltipWrinklerBeingShown","LastTargetBotBar","LastTargetBuildings","LastTargetTooltipBuilding","CookieTimes","ClickTimes","BuffColors","Frenzy","Dragon Harvest","Elder frenzy","Clot","Click frenzy","Dragonflight","TooltipPrice","TooltipBonusIncome","TooltipType","TooltipName","TooltipBonusMouse","LastAscendState","LastNumberOfTimers","GCTimers","Title","BeautifyFormatting_Beautify","num","floats","forced","decimals","ScaleDecimals","Infinity","Scale","Beautify","Number","isFinite","answer","ScaleCutoff","ScaleSeparator","toLocaleString","toExponential","exponential","AmountOfTenPowerThree","toFixed","log","FormatTime","time","longFormat","formattedTime","TimeFormat","GetTimeColor","text","CookiesDiff","WrinkDiff","WrinkFattestDiff","ChoEggDiff","ClicksDiff","HeavenlyChipsDiff","CacheLastCPSCheck","CacheLastCookies","CacheLastWrinkCookies","CacheLastWrinkFattestCookies","CacheLastClicks","CacheAverageGainBank","CacheAverageGainWrink","CacheAverageGainWrinkFattest","CacheAverageGainChoEgg","CacheAverageCPS","CacheLastHeavenlyCheck","CacheLastHeavenlyChips","CacheDoRemakeBuildPrices","CacheHadBuildAura","SimBuildingsOwned","SimUpgradesOwned","SimPledges","SimAchievementsOwned","SimHeavenlyPower","SimPrestige","SimDragonAura","SimDragonAura2","SimGod1","SimGod2","SimGod3","SimDoSims","SimEffs","SimCookiesPs","SimCookiesPsRaw","CacheDragonAura","CacheDragonAura2","CacheLastDragonLevel","CacheCostDragonUpgrade","CacheLucky","CacheLuckyReward","CacheLuckyWrathReward","CacheLuckyFrenzy","CacheLuckyRewardFrenzy","CacheLuckyWrathRewardFrenzy","CacheConjure","CacheConjureReward","CacheEdifice","CacheEdificeBuilding","CacheNoGoldSwitchCookiesPS","CacheDragonsFortuneMultAdjustment","CacheGoldenCookiesMult","CacheWrathCookiesMult","CacheHCPerSecond","CacheCentEgg","CacheSeaSpec","CacheLastChoEgg","CacheObjects1","CacheObjects10","CacheObjects100","CacheWrinklersTotal","CacheWrinklersNormal","CacheWrinklersFattest","CacheCurrWrinklerCPSMult","CacheCurrWrinklerCount","CacheUpgrades","CacheAverageClicks","CacheMissingUpgrades","CacheMissingUpgradesPrestige","CacheMissingUpgradesCookies","CacheChainRequired","CacheChainRequiredNext","CacheChainMaxReward","CacheChainWrathRequired","CacheChainWrathRequiredNext","CacheChainWrathMaxReward","CacheChainFrenzyRequired","CacheChainFrenzyRequiredNext","CacheChainFrenzyMaxReward","CacheChainFrenzyWrathRequired","CacheChainFrenzyWrathRequiredNext","CacheChainFrenzyWrathMaxReward","CacheRealCookiesEarned","CacheAvgCPSWithChoEgg","CacheSpawnedGoldenShimmer","CacheSeasonPopShimmer","CacheTimeTillNextPrestige","CacheMinPP","CachePPArray","CacheGoldenShimmersByID","CacheSellForChoEgg","CacheGods","0","1","2","3","4","5","6","7","8","10","SimObjects","SimUpgrades","SimAchievements","SimAuraMult","what","Game","dragonAuras","SimGetSellMultiplier","giveBack","SimEff","def","SimHas","it","ascensionMode","pool","tier","bought","SimHasGod","hasGod","Temple","minigame","Objects","god","gods","id","SimModifyBuildingPrice","building","price","ModifiedPrice","hasBuff","fortune","minigameLoaded","godLvl","BuildingSell","build","basePrice","free","amount","noSim","noSimRes","toChange","startingAmount","moni","buyBulk","priceIncrease","modifyBuildingPrice","getSellMultiplier","UpdateBuildings","buyMode","BuildColor","forEach","removeProperty","SortBuildings","arr","k","sort","gridRow","UpdateUpgrades","UpBarColor","blue","green","yellow","orange","red","purple","gray","UpgradesInStore","me","addedColor","j","childNodes","div","SortUpgrades","nameChecker","arr2","upgrade","findIndex","order","GetCPS","CPSMode","CalcWrink","cookiesPs","cpsSucked","wrinklers","GetWrinkConfigBank","CreateTimer","bars","timerBar","margin","fontSize","marginRight","verticalAlign","colorBar","borderTopRightRadius","borderBottomRightRadius","timer","marginLeft","CreateBotBarBuildingColumn","buildingName","bonus","header","substring","lastChild","paddingLeft","UpdateBotBar","BotBar","count","PPString","PPDisplayTime","timeColor","bulkPrice","cookies","UpdateBackground","Background","LeftBackground","UpdateBotTimerBarPosition","TimerBar","TimerBarPos","ToggleTimerBar","CacheDragonAuras","dragonAura","dragonAura2","InitAchievement","achievementName","Achievements","you","SimGetTieredCpsMult","mult","tieredUpgrades","Tiers","special","synergies","syn","buildingTie1","buildingTie2","grandma","Grandma","misfortune","vanilla","elderWrath","InitialBuildingData","cps","magicCpS","ComputeCps","GrandmaSynergies","UpgradesByPool","kitten","Portal","baseCps","baseCPS","InitUpgrade","upgradeName","Upgrades","power","level","pow","CopyData","UpgradesOwned","pledges","AchievementsOwned","heavenlyPower","prestige","totalCookies","slot","won","TooltipCreateHeader","fontWeight","TooltipCreateCalculationSection","tooltip","income","marginBottom","click","production","CalculateGrimoireRefillTime","currentMagic","maxMagic","targetMagic","magic","fps","GetCPSBuffMult","buffs","multCpS","ToggleToolWarnPos","ToolWarnPos","UpdateTooltips","tooltipBox","paddingBottom","TooltipCreateTooltipBox","TooltipBuildUpgrade","increase","productionAchievs","HasAchiev","achiev","nextProductionAchiev","Building","getPrice","bonusMouse","previousSibling","chocolate","Upgrade","TooltipLump","lumpType","lumpColor","lumpCurrentType","SugarLump","spellCost","getSpellCost","spellsById","TooltipGrim","magicM","recover","recoverColor","conjure","reward","seperator","loss","Grimoire","Farm","TooltipPlots","plot","mature","plantsById","matureBase","plantName","GardenPlots","totalGain","mortal","tile","immortal","HarvestAll","WrinklerReward","WrinklerButton","TooltipPantheon","GodID","cps1","cps2","cps3","PantheonGods","getElementById","TooltipWarn","create","boxId","labelTextFront","labelTextBack","deficitId","transition","labelDiv","labelSpan","deficitDiv","deficitSpan","ToolWarnUser","TooltipCreateWarningSection","bonusIncomeUsed","ToolWarnBon","limitLucky","bonusNoFren","ToolWarnLucky","ToolWarnLuckyFrenzy","limitLuckyFrenzy","ToolWarnConjure","limitConjure","ToolWarnConjureFrenzy","limitConjureFrenzy","ToolWarnEdifice","children","Warnings","Draw","prefs","autosave","drawT","onMenu","Stats","innerText","sayTime","T","maxWidthTwoBar","maxWidthOneBar","numberOfTimers","shimmerTypes","golden","spawned","Has","minTime","maxTime","TimerBarOverlay","season","reindeer","BuffTimerBars","classColor","UpdateTimerBar","TooltipWrink","showingTooltip","phase","selected","placeholder","wrinkler","minWidth","escape","CheckWrinklerTooltip","sucked","toSuck","UpdateWrinklerTooltip","UpStats","UpdateMenu","monospace","CMAvgQueue","[object Object]","maxLength","queue","newValue","timePeriod","CacheAvgCPS","currDate","Date","now","choEggTotal","cookiesEarned","timeDiff","bankDiffAvg","wrinkDiffAvg","wrinkFattestDiffAvg","choEggDiffAvg","clicksDiffAvg","cookieClicks","addLatest","cpsLength","AvgCPSHist","calcAverage","choEgg","HasUnlocked","AvgClicksHist","ColourOfPP","PPSecondsLowerLimit","PPOnlyConsiderBuyable","CacheColor","PPRigidelMode","getSumPrice","PPExcludeTop","CachePP","PP_CachePP","indexOfMin","CacheBuildingsPP","BuildingGetPrice","SimWin","CalculateGains","effs","myEffs","ii","heavenlyMult","SimGetHeavenlyMultiplier","heralds","cookieUpgrades","buildMult","sin","santaLevel","milkProgress","milkMult","catMult","storedCps","eggMult","day","startDate","lumps","rawCookiesPs","CpsAchievements","threshold","auraMult","bakeryName","goldenSwitchMult","upgrades","goldenCookieUpgrades","veilMult","runModHookOnValue","Fortunes","HalloCookies","ChristCookies","ValCookies","PlantDrops","SimHasAchiev","CheckOtherAchiev","grandmas","buildingsOwned","mathematician","base10","minAmount","ObjectsById","Cursor","hasAllHalloCook","hasAllChristCook","list","fortunes","CacheBuildingIncome","result","tieredAchievs","achievUnlock","lastAchievementsOwned","BuyBuildingsBonusIncome","CacheBuildingsPrices","CacheIncome","bonusIncome","unlocked","CountsAsUpgradeOwned","diffMouseCPS","multClick","out","MouseCps","computedMouseCps","BuyUpgradesBonusIncome","MaxChainCookieReward","digit","maxPayout","totalFromChain","nextMoni","nextRequired","chain","LN10","CacheChain","cpsBuffMult","CacheHeavenlyChipsPS","chipsOwned","HowMuchPrestige","cookiesReset","ascendNowToGet","heavenlyChipsDiffAvg","CacheAllMissingUpgrades","classes","noFrame","crates","icon","iconFunction","getDynamicTooltip","crateMissing","CacheSeasonSpec","CacheStatsCookies","CacheGoldenAndWrathCookiesMults","goldenMult","wrathMult","eff","CacheWrinklers","InitCache","SettingsDefault","UpgradeBarFixedPos","GeneralSound","GCNotification","GCFlash","GCSound","GCVolume","GCSoundURL","FortuneNotification","FortuneFlash","FortuneSound","FortuneVolume","FortuneSoundURL","SeaNotification","SeaFlash","SeaSound","SeaVolume","SeaSoundURL","GardFlash","GardSound","GardVolume","GardSoundURL","MagicNotification","MagicFlash","MagicSound","MagicVolume","MagicSoundURL","WrinklerNotification","WrinklerFlash","WrinklerSound","WrinklerVolume","WrinklerSoundURL","WrinklerMaxNotification","WrinklerMaxFlash","WrinklerMaxSound","WrinklerMaxVolume","WrinklerMaxSoundURL","TooltipAmor","DragonAuraInfo","TooltipAscendButton","MissingUpgrades","DetailedTime","GrimoireBar","HeavenlyChipsTarget","ShowMissedGC","Blue","Green","Yellow","Orange","Red","Purple","Gray","Pink","Brown","GCTimer","Favicon","WrinklerButtons","HideSectionsButtons","BulkBuyBlock","Header","BarsColors","Calculation","Notification","NotificationGeneral","NotificationGC","NotificationFC","NotificationSea","NotificationGard","NotificationMagi","NotificationWrink","NotificationWrinkMax","Tooltip","Statistics","Notation","Miscellaneous","Lucky","Chain","Spells","Garden","Prestige","Wrink","Sea","Misc","InfoTab","Config_CheckNotificationPermissions","ToggleOnOff","checkNotificationPromise","requestPermission","then","ToggleBotBar","RefreshScale","BeautifyAll","RefreshStore","RebuildUpgrades","UpdateColors","UpdateFavicon","wrath","href","Setting","group","SettingStandard","label","desc","toggle","super","SettingVolume","SettingInputNumber","SettingsData","insertBefore","save","stringify","settings","version","CacheDragonCost","dragonLevel","dragonLevels","buy","includes","replaceAll","cost","CalculateChangeGod","InitData","isInitializing","Flash","config","setTimeout","PlaySound","url","sndConfig","volConfig","sound","Audio","volume","play","CreateNotification","notifyConfig","title","message","visibilityState","badge","CMLoop","OnAscend","AscendTimer","mods","CachePantheonGods","sellTotal","Bank","marketGoods","goods","goodsVal","marketGood","stock","cookiesPsRawHighest","buildingsToSacrifice","highestBuilding","SellBuildingsForChoEgg","CacheSellAllForChoEgg","hasBuildAura","godMult","CacheCurrWrinklerCPS","cookiesToNext","HowManyCookiesReset","LoopCache","shimmers","spawnLead","cookie","fontFamily","onclick","pop","onmouseover","filter","webkitFilter","onmouseout","CreateGCTimer","transform","life","TickerEffect","nextStep","CheckMagicMeter","CurrentWrinklers","getWrinklersMax","CheckWrinklerCount","SaveConfig","saveString","b64_to_utf8","unescape","localStorage","getItem","CookieMonsterSave","newSaveString","setItem","utf8_to_b64","LoadConfig","CMConfig","mod","PopAllNormalWrinklers","hp","CreateTooltip","buildPrice","amortizeAmount","storedTotalCps","globalCpsMult","crateTooltip","lumpTooltip","spellTooltip","tileTooltip","toolTooltip","godTooltip","slotTooltip","area","ReplaceTooltipGrimoire","dynamic","wobble","ReplaceNativeGrimoireDraw","magicBarTextL","ReplaceNativeGrimoire","launch","ReplaceNativeGrimoireLaunch","jscolor_default","ToggleSetting_ConfigPrefix","ToggleConfigVolume","ToggleHeader","StatsHeader","span","StatsListing","listingName","StatsMissDisp","theMissDisp","frag","createDocumentFragment","missing","AddMenuStats","stats","goldCookTooltip","section","luckyColor","luckyTime","luckyReqFrag","luckyReqSpan","luckyReqSmall","luckyColorFrenzy","luckyTimeFrenzy","luckyReqFrenFrag","luckyReqFrenSpan","luckyReqFrenSmall","luckySplit","luckyRewardMaxSpan","luckyRewardFrenzyMaxSpan","luckyCurBase","luckyCurSpan","LuckySection","chainColor","chainTime","chainReqFrag","chainReqSpan","chainReqSmall","chainWrathColor","chainWrathTime","chainWrathReqFrag","chainWrathReqSpan","chainWrathReqSmall","chainColorFrenzy","chainTimeFrenzy","chainReqFrenFrag","chainReqFrenSpan","chainReqFrenSmall","chainWrathColorFrenzy","chainWrathTimeFrenzy","chainWrathReqFrenFrag","chainWrathReqFrenSpan","chainWrathReqFrenSmall","chainCurMax","chainCur","chainCurWrath","ChainSection","conjureColor","conjureTime","conjureReqFrag","conjureReqSpan","conjureReqSmall","conjureFrenzyColor","conjureFrenzyCur","conjureFrenzyTime","conjureFrenzyReqFrag","conjureFrenzyReqSpan","conjureFrenzyReqSmall","SpellsSection","bakeberryColor","bakeberryFrag","chocorootColor","chocorootFrag","queenbeetColor","queenbeetFrag","duketaterColor","duketaterFrag","GardenSection","possiblePresMax","neededCook","cookiesNextFrag","cookiesNextSmall","heavenlyChips","HCTarget","CookiesTillTarget","resetBonus","newHeavenlyChips","curCPS","ResetCPS","ResetBonus","resetFrag","resetSmall","currentPrestige","willHave","willGet","delta7","next7Reset","next7Total","frag7","delta777","next777Reset","next777Total","frag777","delta777777","next777777Reset","next777777Total","frag777777","PrestigeSection","popAllFrag","popAllA","popFattestFrag","popFattestA","specDisp","missingHalloweenCookies","missingChristmasCookies","missingValentineCookies","missingNormalEggs","eggDrops","missingRareEggs","rareEggDrops","missingPlantDrops","centEgg","failRateHalloween","dropRateMult","failRateChristmas","dropRateEgg","StartingFailRate","failRateEgg","succesRateEgg","obtainedEggs","obtainedRareEggs","pNormal1","pRare1","pRedrop","SeasonSection","missedGoldenClicks","menuSection","prestigeUpgradesMissing","titlefrag","PrestigeUpgrades","normalUpgradesMissing","tech","nextSibling","cookieUpgradesMissing","ConfigGroups","ConfigGroupsNotification","CreatePrefHeader","CreatePrefOption","ToggleConfig","float","percent","slider","step","onchange","input","readOnly","inputPrompt","Prompt","outerHTML","ClosePrompt","innerDiv","FixMouseY","timerBarHeight","mouseY","ReplaceNative","drawMod","from","update","updateMod","warnOffset","tta","tt","UpdateTooltipLocation","UpdateWrinklers","UpdateSpecial","ClickCookie","mouseDown","setOnCrate","ClickProduct","DescribeDragonAura","aura","bonusCPS","priceOfChange","CalculateChangeAura","timeToRecover","bonusCPSPercentage","minHeight","div2","AddAuraInfo","ToggleSpecialMenu","on","shouldHide","AddDragonLevelUpTooltip","groupObject","subGroup","subGroupObject","resDef","resDefBut","AddMenuPref","info","description","notes","menu","AddMenuInfo","AddMenu","detail","Logic","titleGC","titleFC","titleSP","addFC","addSP","lastIndexOf","spawn","UpdateTitle","ReplaceAscendTooltip","InitializeCookieMonster","head","borderTop","textShadow","table","tbody","firstCol","td","CreateBotBar","CMTimerBarGC","CMTimerBarRen","TimerBarBuffTimers","CreateTimerBar","UpgradeBar","legend","legendLine","CreateUpgradeBarLegend","upgradeNumber","CreateUpgradeBar","WhiteScreen","CreateWhiteScreen","CreateSectionHideButtons","getElementsByTagName","CreateFavicon","CreateSimpleTooltip","append","CreateWrinklerButtons","canLumps","child","coords","ReplaceTooltipPantheon","popups","Popup","Notify","Win","CM","proceed","confirm","registerHook","load","registerMod"],"mappings":"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I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAGhDC,EAAa,CACjB,GACA,GACA,IACA,IACA,KACA,QACA,QACA,OACA,OACA,MACA,MACA,MACA,QACA,SACA,SACA,cACA,UACA,SACA,YACA,UACA,WACA,SACA,WACA,YACA,YACA,kBAIIC,EAAwB,CAC5B,GACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,OAMF,IAAIC,EAEAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOAC,EA1BAC,EAAqB,GAErBC,EAAwB,GACxBC,EAAuB,GAOvBC,EAAkB,GAqBtB,MAAMC,EAAe,SACfC,EAAe,SAMfC,EAAY,OACZC,EAAa,QACbC,EAAc,SACdC,EAAc,SACdC,EAAW,MACXC,EAAc,SACdC,EAAY,OACZC,EAAY,OACZC,EAAa,QACbC,EAAS,CACbH,EACAN,EACAC,EACAC,EACAC,EACAC,EACAC,EACAE,EACAC,GAUIE,EAAc,CAClB,CAAC,6BAA8B,oCAAqC,SACpE,CACE,2CACA,6EACA,SAEF,CACE,6BACA,qPACA,SAEF,CACE,8BACA,kEACA,SAEF,CACE,kCACA,2PACA,SAEF,CACE,0BACA,gLA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","file":"./CookieMonster.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://cookiemonster-mod/CookieMonster.js"],"names":["__webpack_modules__","877","module","global","factory","exports","document","win","Error","window","this","BoxShadow","funcName","elm","jsc","jscolor","initialized","instances","readyQueue","register","addEventListener","pub","init","installBySelector","selector","rootNode","node","elms","querySelectorAll","matchClass","RegExp","lookupClass","i","length","dataOpts","m","undefined","type","toLowerCase","isColorAttrSupported","getDataAttr","className","match","targetElm","optsStr","console","warn","docsRef","opts","trim","parseOptionsStr","e","str","JSON","parse","eParse","looseJSON","Function","eEval","getInstances","inst","targetElement","push","createEl","tagName","el","createElement","setData","nodeOrSelector","sel","querySelector","isNode","val","Node","nodeType","nodeName","removeChildren","firstChild","removeChild","isTextInput","isButton","n","indexOf","isButtonEmpty","value","textContent","isPassiveEventSupported","supported","Object","defineProperty","get","removeEventListener","setAttribute","dataProp","obj","arguments","data","hasOwnProperty","prop","map","removeData","getData","setDefault","name","attrName","getAttribute","setDataAttr","_attachedGroupEvents","attachGroupEvent","groupName","evnt","func","detachGroupEvents","evt","preventDefault","returnValue","captureTarget","target","setCapture","_capturedTarget","releaseTarget","releaseCapture","triggerEvent","eventName","bubbles","cancelable","ev","Event","createEvent","initEvent","dispatchEvent","triggerInputEvent","eventKey","keys","9","13","27","code","keyCode","strList","replace","split","hasClass","classList","contains","addClass","classNames","add","removeClass","repl","remove","getCompStyle","getComputedStyle","currentStyle","setStyle","styles","important","reversible","priority","origStyle","setVal","style","setProperty","hexColor","r","g","b","Math","round","toString","substr","toUpperCase","hexaColor","a","rgbColor","rgbaColor","linearGradient","stdName","prefixes","helper","tryFunc","tryVal","background","getFuncName","Array","prototype","join","call","setBorderRadius","border-radius","setBoxShadow","box-shadow","getElementPos","relativeToViewport","x","y","rect","getBoundingClientRect","left","top","viewPos","getViewPos","getElementSize","offsetWidth","offsetHeight","getAbsPointerPos","changedTouches","clientX","clientY","getRelPointerPos","targetRect","srcElement","doc","documentElement","pageXOffset","scrollLeft","clientLeft","pageYOffset","scrollTop","clientTop","getViewSize","innerWidth","clientWidth","innerHeight","clientHeight","RGB_HSV","min","v","max","h","HSV_RGB","s","u","floor","parseColorString","ret","rgba","format","parseInt","charAt","mR","mG","mB","mA","par","re","parseFloat","parsePaletteValue","mixed","vals","isArray","colors","color","containsTranparentColor","isAlphaFormat","scaleCanvasForHighDPR","canvas","dpr","devicePixelRatio","width","height","getContext","scale","genColorPreviewCanvas","separatorPos","specWidth","scaleForHighDPR","sepW","previewSeparator","sqSize","chessboardSize","sqColor1","chessboardColor1","sqColor2","chessboardColor2","cWidth","cHeight","ctx","fillStyle","fillRect","start","clearRect","lineWidth","beginPath","strokeStyle","moveTo","lineTo","stroke","genColorPreviewGradient","position","params","right","apply","redrawPosition","picker","owner","tp","vp","thisObj","fixed","c","ts","vs","pd","getPickerDims","ps","borderW","borderH","l","smartPosition","pp","positionValue","contractShadow","_drawPosition","vShadow","shadowBlur","wrap","boxS","shadow","shadowColor","w","controlBorderWidth","sliderSpace","getControlPadding","sliderSize","getSliderChannel","hasAlphaChannel","pal","getPaletteDims","padding","closeButton","buttonHeight","pW","pH","contentW","contentH","paddedW","paddedH","borderWidth","palette","cols","rows","cellW","cellH","sampleCount","_palette","paletteCols","ceil","paletteSpacing","paletteHeight","pointerBorderWidth","pointerThickness","getPadYChannel","mode","triggerCallback","callback","error","triggerGlobal","eventNames","trigger","_pointerMoveEvent","mouse","touch","_pointerEndEvent","_pointerOrigin","onDocumentKeyUp","tryHide","onWindowResize","onWindowScroll","onParentScroll","onDocumentMouseDown","showOnClick","disabled","show","onControlPointerStart","onPickerTouchStart","controlName","pointerType","registerDragEvents","offset","onDocumentPointerMove","onDocumentPointerEnd","parent","frameElement","ofs","abs","rel","channels","fromHSVA","setPad","setSld","setASld","onPaletteSampleClick","currentTarget","_setFormat","getFormat","paletteSetsAlpha","_paletteHasTransparency","fromRGBA","hideOnPaletteClick","hide","ofsX","ofsY","pointerAbs","xVal","yVal","fmt","createPadCanvas","draw","hGrad","createLinearGradient","addColorStop","vGrad","createSliderGradient","color1","color2","grad","createASliderGradient","hShadow","blur","spread","inset","flags","leaveValue","leaveAlpha","leavePreview","enumOpts","previewPosition","alphaChannel","deprecatedOpts","styleElement","onFineChange","overwriteImportant","closable","insetWidth","insetColor","refine","THIS","setOption","option","oldOpt","newOpt","setter","getOption","getter","drawPicker","_processParentElementsInDOM","box","boxB","pad","padB","padM","padCanvas","cross","crossBY","crossBX","crossLY","crossLX","sld","sldB","sldM","sldGrad","sldPtrS","sldPtrIB","sldPtrMB","sldPtrOB","asld","asldB","asldM","asldGrad","asldPtrS","asldPtrIB","asldPtrMB","asldPtrOB","btn","btnT","appendChild","passive","insetColors","outsetColor","p","displaySlider","displayAlphaSlider","pickerDims","crossOuterSize","crossSize","controlPadding","borderRadius","PI","clear","zIndex","border","borderColor","backgroundColor","opacity","controlBorderColor","cursor","instance","control","pointerBorderColor","pointerColor","overflow","display","sliderInnerSpace","innerHTML","chessboard","si","sampleColor","sampleCssColor","sc","sw","backgroundImage","toDataURL","backgroundRepeat","backgroundPosition","bottom","maxWidth","whiteSpace","buttonColor","font","textAlign","onmousedown","lineHeight","createTextNode","closeText","redrawPad","redrawSld","redrawASld","activeClassName","container","body","parentNode","yChannel","rgb1","rgb2","rgb","toHEXString","sldChannel","isPickerOwner","alpha","onChange","onInput","valueElement","alphaElement","previewElement","previewSize","previewPadding","required","hash","uppercase","forceStyle","hideOnLeave","minS","maxS","minV","maxV","minA","maxA","redraw","exposeColor","success","opt","channel","res","evs","callbackProp","isNaN","hsv","fromHSV","fromRGB","fromString","setPreviewElementBg","setValueElementValue","toHEXAString","toRGBString","toRGBAString","toGrayscale","toCanvas","toBackground","isLight","_currentFormat","processValueInput","processAlphaInput","colorStr","alphaVal","setAlphaElementValue","backgrounds","image","size","repeat","origin","preview","bg","sty","background-image","background-position","background-size","background-repeat","background-origin","padding-left","padding-right","_parentElementsProcessed","compStyle","set__palette","options","presetsArr","preset","slice","pres","presets","nonProperties","test","min-width","valueElementOrigEvents","oninput","oldVal","initValue","initAlpha","install","shift","ready","triggerNow","installByClassName","JSColor","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__esModule","d","definition","key","o","enumerable","CMOptions","ToggleWrinklerButtons","WrinklerButtons","Game","elderWrath","metric","shortScale","shortScaleAbbreviated","LastModCount","TooltipLumpBackup","BackupGrimoireLaunch","BackupGrimoireLaunchMod","BackupGrimoireDraw","HasReplaceNativeGrimoireLaunch","HasReplaceNativeGrimoireDraw","LoadMinigames","LastSeasonPopupState","LastTickerFortuneState","LastGardenNextStep","LastGoldenCookieState","LastSpawnedGoldenCookieState","LastMagicBarFull","CurrSpawnedGoldenCookieState","LastWrinklerCount","DispCSS","TooltipBuildBackup","TooltipGrimoireBackup","TooltipUpgradeBackup","BackupFunctions","CycliusDateAtBeginLoop","Date","now","CenturyDateAtBeginLoop","ColourTextPre","ColourBackPre","ColourBlue","ColourGreen","ColourYellow","ColourOrange","ColourRed","ColourPurple","ColourGray","ColourPink","ColourBrown","ColoursOrdering","TooltipText","SimpleTooltipElements","CMLastAscendState","CMSayTime","TooltipWrinklerArea","TooltipWrinkler","TooltipWrinklerBeingShown","LastTargetBotBar","LastTargetBuildings","LastTargetTooltipBuilding","CookieTimes","ClickTimes","BuffColours","Frenzy","Dragon Harvest","Elder frenzy","Clot","Click frenzy","Dragonflight","TooltipPrice","TooltipBonusIncome","TooltipType","TooltipName","TooltipBonusMouse","LastAscendState","LastNumberOfTimers","GCTimers","Title","FavouriteSettings","BeautifyFormatting_Beautify","num","floats","forced","decimals","ScaleDecimals","Infinity","Scale","Beautify","Number","isFinite","answer","ScaleCutoff","ScaleSeparator","toLocaleString","toExponential","exponential","AmountOfTenPowerThree","toFixed","log","FormatTime","time","longFormat","formattedTime","TimeFormat","GetTimeColour","text","CacheAverageCookiesFromClicks","CookiesDiff","WrinkDiff","WrinkFattestDiff","ChoEggDiff","ClicksDiff","HeavenlyChipsDiff","CacheLastCPSCheck","CacheLastCookies","CacheLastWrinkCookies","CacheLastWrinkFattestCookies","CacheLastClicks","CacheAverageGainBank","CacheAverageGainWrink","CacheAverageGainWrinkFattest","CacheAverageGainChoEgg","CacheAverageCPS","CacheLastHeavenlyCheck","CacheLastHeavenlyChips","CacheDoRemakeBuildPrices","CacheHadBuildAura","SimBuildingsOwned","SimUpgradesOwned","SimPledges","SimAchievementsOwned","SimHeavenlyPower","SimPrestige","SimDragonAura","SimDragonAura2","SimGod1","SimGod2","SimGod3","SimDoSims","SimEffs","SimCookiesPs","SimCookiesPsRaw","CacheDragonAura","CacheDragonAura2","CacheLastDragonLevel","CacheCostDragonUpgrade","CacheLucky","CacheLuckyReward","CacheLuckyWrathReward","CacheLuckyFrenzy","CacheLuckyRewardFrenzy","CacheLuckyWrathRewardFrenzy","CacheConjure","CacheConjureReward","CacheEdifice","CacheEdificeBuilding","CacheNoGoldSwitchCookiesPS","CacheDragonsFortuneMultAdjustment","CacheGoldenCookiesMult","CacheWrathCookiesMult","CacheHCPerSecond","CacheCentEgg","CacheSeaSpec","CacheLastChoEgg","CacheObjects1","CacheObjects10","CacheObjects100","CacheWrinklersTotal","CacheWrinklersNormal","CacheWrinklersFattest","CacheCurrWrinklerCPSMult","CacheCurrWrinklerCount","CacheUpgrades","CacheAverageClicks","CacheMissingUpgrades","CacheMissingUpgradesPrestige","CacheMissingUpgradesCookies","CacheChainRequired","CacheChainRequiredNext","CacheChainMaxReward","CacheChainWrathRequired","CacheChainWrathRequiredNext","CacheChainWrathMaxReward","CacheChainFrenzyRequired","CacheChainFrenzyRequiredNext","CacheChainFrenzyMaxReward","CacheChainFrenzyWrathRequired","CacheChainFrenzyWrathRequiredNext","CacheChainFrenzyWrathMaxReward","CacheRealCookiesEarned","CacheAvgCPSWithChoEgg","CacheSpawnedGoldenShimmer","CacheSeasonPopShimmer","CacheTimeTillNextPrestige","CacheMinPP","CachePPArray","CacheGoldenShimmersByID","CacheSellForChoEgg","CacheGods","0","1","2","3","4","5","6","7","8","10","SimObjects","SimUpgrades","SimAchievements","SimAuraMult","what","dragonAuras","SimGetSellMultiplier","giveBack","SimEff","def","SimHas","it","ascensionMode","pool","tier","bought","SimHasGod","hasGod","Temple","minigame","Objects","god","gods","id","SimModifyBuildingPrice","building","price","ModifiedPrice","hasBuff","fortune","minigameLoaded","godLvl","BuildingSell","build","basePrice","free","amount","noSim","noSimRes","toChange","startingAmount","moni","buyBulk","priceIncrease","modifyBuildingPrice","getSellMultiplier","UpdateBuildings","buyMode","BuildColour","forEach","removeProperty","SortBuildings","arr","k","sort","gridRow","UpdateUpgrades","UpBarColour","blue","green","yellow","orange","red","purple","gray","UpgradesInStore","me","addedColour","j","childNodes","div","SortUpgrades","nameChecker","arr2","upgrade","findIndex","order","GetCPS","CPSMode","CalcWrink","cookiesPs","cpsSucked","wrinklers","GetWrinkConfigBank","CreateTimer","bars","timerBar","margin","fontSize","marginRight","verticalAlign","colorBar","borderTopRightRadius","borderBottomRightRadius","timer","marginLeft","CreateBotBarBuildingColumn","buildingName","bonus","header","substring","lastChild","paddingLeft","UpdateBotBar","BotBar","count","PPString","PPDisplayTime","timeColour","bulkPrice","cookies","UpdateBackground","Background","LeftBackground","DrawBackground","UpdateBotTimerBarPosition","TimerBar","TimerBarPos","ToggleTimerBar","CacheDragonAuras","dragonAura","dragonAura2","InitAchievement","achievementName","Achievements","you","SimGetTieredCpsMult","mult","tieredUpgrades","Tiers","special","synergies","syn","buildingTie1","buildingTie2","grandma","Grandma","misfortune","vanilla","InitialBuildingData","cps","magicCpS","ComputeCps","GrandmaSynergies","UpgradesByPool","kitten","Portal","baseCps","baseCPS","InitUpgrade","upgradeName","Upgrades","power","level","pow","CopyData","UpgradesOwned","pledges","AchievementsOwned","heavenlyPower","prestige","totalCookies","slot","won","TooltipCreateHeader","fontWeight","TooltipCreateCalculationSection","tooltip","income","marginBottom","click","production","CalculateGrimoireRefillTime","currentMagic","maxMagic","targetMagic","magic","fps","GetCPSBuffMult","buffs","multCpS","ToggleToolWarnPos","ToolWarnPos","UpdateTooltips","tooltipBox","paddingBottom","TooltipCreateTooltipBox","TooltipBuildUpgrade","increase","productionAchievs","HasAchiev","achiev","nextProductionAchiev","Building","getPrice","bonusMouse","previousSibling","chocolate","Upgrade","TooltipLump","lumpType","lumpColour","lumpCurrentType","SugarLump","spellCost","getSpellCost","spellsById","TooltipGrim","magicM","recover","recoverColour","conjure","reward","seperator","loss","Grimoire","Farm","TooltipPlots","plot","mature","plantsById","plantName","GardenPlots","totalGain","mortal","tile","immortal","matureBase","HarvestAll","WrinklerReward","WrinklerButton","TooltipPantheon","GodID","cps1","cps2","cps3","PantheonGods","getElementById","TooltipWarn","create","boxId","labelTextFront","labelTextBack","deficitId","transition","labelDiv","labelSpan","deficitDiv","deficitSpan","ToolWarnUser","TooltipCreateWarningSection","bonusIncomeUsed","ToolWarnBon","limitLucky","bonusNoFren","ToolWarnLucky","ToolWarnLuckyFrenzy","limitLuckyFrenzy","ToolWarnConjure","limitConjure","ToolWarnConjureFrenzy","limitConjureFrenzy","ToolWarnEdifice","children","Warnings","CMDrawHook","prefs","autosave","drawT","onMenu","Stats","innerText","sayTime","T","maxWidthTwoBar","maxWidthOneBar","numberOfTimers","shimmerTypes","golden","spawned","Has","minTime","maxTime","TimerBarOverlay","season","reindeer","BuffTimerBars","classColour","UpdateTimerBar","TooltipWrink","showingTooltip","phase","selected","placeholder","wrinkler","minWidth","escape","CheckWrinklerTooltip","sucked","toSuck","UpdateWrinklerTooltip","UpStats","UpdateMenu","monospace","CMClickHook","addLatest","computedMouseCps","CMAvgQueue","[object Object]","maxLength","queue","newValue","timePeriod","reduce","CacheAvgCPS","currDate","choEggTotal","cookiesEarned","timeDiff","bankDiffAvg","wrinkDiffAvg","wrinkFattestDiffAvg","choEggDiffAvg","clicksDiffAvg","cookieClicks","cpsLength","AvgCPSHist","calcAverage","choEgg","HasUnlocked","AvgClicksHist","ColourOfPP","PPSecondsLowerLimit","PPOnlyConsiderBuyable","CacheColour","PPRigidelMode","getSumPrice","PPExcludeTop","CachePP","PP_CachePP","indexOfMin","CacheBuildingsPP","BuildingGetPrice","SimWin","CalculateGains","effs","myEffs","ii","heavenlyMult","SimGetHeavenlyMultiplier","heralds","cookieUpgrades","buildMult","sin","santaLevel","milkProgress","milkMult","catMult","storedCps","eggMult","day","startDate","lumps","rawCookiesPs","CpsAchievements","threshold","auraMult","bakeryName","goldenSwitchMult","upgrades","goldenCookieUpgrades","veilMult","runModHookOnValue","Fortunes","HalloCookies","ChristCookies","ValCookies","PlantDrops","SimHasAchiev","CheckOtherAchiev","grandmas","buildingsOwned","mathematician","base10","minAmount","ObjectsById","Cursor","hasAllHalloCook","hasAllChristCook","list","fortunes","CacheBuildingIncome","result","tieredAchievs","achievUnlock","lastAchievementsOwned","BuyBuildingsBonusIncome","CacheBuildingsPrices","CacheIncome","bonusIncome","unlocked","CountsAsUpgradeOwned","diffMouseCPS","multClick","out","MouseCps","BuyUpgradesBonusIncome","MaxChainCookieReward","digit","maxPayout","totalFromChain","nextMoni","nextRequired","chain","LN10","CacheChain","cpsBuffMult","CacheHeavenlyChipsPS","chipsOwned","HowMuchPrestige","cookiesReset","ascendNowToGet","heavenlyChipsDiffAvg","CacheAllMissingUpgrades","classes","noFrame","crates","icon","iconFunction","getDynamicTooltip","crateMissing","CacheSeasonSpec","CacheStatsCookies","CacheGoldenAndWrathCookiesMults","goldenMult","wrathMult","eff","CacheWrinklers","InitCache","SettingsDefault","DetailedTime","UpgradeBarFixedPos","DragonAuraInfo","GrimoireBar","GCTimer","Favicon","HideSectionsButtons","TooltipAmor","TooltipAscendButton","MissingUpgrades","MissingAchievements","HeavenlyChipsTarget","ShowMissedGC","GeneralSound","GCNotification","GCFlash","ColourGCFlash","GCSound","GCVolume","GCSoundURL","FortuneNotification","FortuneFlash","ColourFortuneFlash","FortuneSound","FortuneVolume","FortuneSoundURL","SeaNotification","SeaFlash","ColourSeaFlash","SeaSound","SeaVolume","SeaSoundURL","GardFlash","ColourGardFlash","GardSound","GardVolume","GardSoundURL","MagicNotification","MagicFlash","ColourMagicFlash","MagicSound","MagicVolume","MagicSoundURL","WrinklerNotification","WrinklerFlash","ColourWrinklerFlash","WrinklerSound","WrinklerVolume","WrinklerSoundURL","WrinklerMaxNotification","WrinklerMaxFlash","ColourWrinklerMaxFlash","WrinklerMaxSound","WrinklerMaxVolume","WrinklerMaxSoundURL","BulkBuyBlock","Header","Favourite","Calculation","Notation","Colours","BarsDisplay","Tooltip","Statistics","Notification","NotificationGeneral","NotificationGC","NotificationFC","NotificationSea","NotificationGard","NotificationMagi","NotificationWrink","NotificationWrinkMax","Miscellaneous","Lucky","Chain","Spells","Garden","Prestige","Wrink","Sea","Misc","InfoTab","Config_CheckNotificationPermissions","ToggleOnOff","checkNotificationPromise","requestPermission","then","ToggleBotBar","RefreshScale","BeautifyAll","RefreshStore","RebuildUpgrades","UpdateFavicon","wrath","href","Setting","group","SettingStandard","label","desc","toggle","super","SettingColours","SettingVolume","SettingInputNumber","SettingsData","insertBefore","UpBarColor","save","stringify","favouriteSettings","settings","version","CacheDragonCost","dragonLevel","dragonLevels","buy","includes","replaceAll","cost","CalculateChangeGod","CurrentSlot","godsById","InitData","isInitializing","Flash","config","setTimeout","Sound_PlaySound","url","sndConfig","volConfig","sound","Audio","volume","play","CreateNotification","notifyConfig","title","message","visibilityState","badge","CMLoopHook","OnAscend","AscendTimer","mods","CachePantheonGods","sellTotal","Bank","marketGoods","goods","goodsVal","marketGood","stock","cookiesPsRawHighest","buildingsToSacrifice","highestBuilding","SellBuildingsForChoEgg","CacheSellAllForChoEgg","hasBuildAura","godMult","CacheCurrWrinklerCPS","cookiesToNext","HowManyCookiesReset","LoopCache","shimmers","spawnLead","cookie","fontFamily","onclick","pop","onmouseover","filter","webkitFilter","onmouseout","CreateGCTimer","transform","life","TickerEffect","nextStep","CheckMagicMeter","CurrentWrinklers","getWrinklersMax","CheckWrinklerCount","UpdateColours","SaveConfig","saveString","b64_to_utf8","unescape","localStorage","getItem","CookieMonsterSave","newSaveString","setItem","utf8_to_b64","LoadConfig","CMConfig","Colors","mod","PopAllNormalWrinklers","hp","CreateTooltip","buildPrice","amortizeAmount","storedTotalCps","globalCpsMult","crateTooltip","lumpTooltip","spellTooltip","tileTooltip","toolTooltip","godTooltip","slotTooltip","area","ReplaceTooltipGrimoire","dynamic","wobble","ReplaceNativeGrimoireDraw","magicBarTextL","ReplaceNativeGrimoire","launch","ReplaceNativeGrimoireLaunch","jscolor_default","ToggleSetting_ConfigPrefix","ToggleConfigVolume","ToggleHeader","StatsHeader","span","StatsListing","listingName","StatsMissDisp","theMissDisp","frag","createDocumentFragment","missing","AddMenuStats","stats","goldCookTooltip","section","luckyColour","luckyTime","luckyReqFrag","luckyReqSpan","luckyReqSmall","luckyColourFrenzy","luckyTimeFrenzy","luckyReqFrenFrag","luckyReqFrenSpan","luckyReqFrenSmall","luckySplit","luckyRewardMaxSpan","luckyRewardFrenzyMaxSpan","luckyCurBase","luckyCurSpan","LuckySection","chainColour","chainTime","chainReqFrag","chainReqSpan","chainReqSmall","chainWrathColour","chainWrathTime","chainWrathReqFrag","chainWrathReqSpan","chainWrathReqSmall","chainColourFrenzy","chainTimeFrenzy","chainReqFrenFrag","chainReqFrenSpan","chainReqFrenSmall","chainWrathColourFrenzy","chainWrathTimeFrenzy","chainWrathReqFrenFrag","chainWrathReqFrenSpan","chainWrathReqFrenSmall","chainCurMax","chainCur","chainCurWrath","ChainSection","conjureColour","conjureTime","conjureReqFrag","conjureReqSpan","conjureReqSmall","conjureFrenzyColour","conjureFrenzyCur","conjureFrenzyTime","conjureFrenzyReqFrag","conjureFrenzyReqSpan","conjureFrenzyReqSmall","SpellsSection","bakeberryColour","bakeberryFrag","chocorootColour","chocorootFrag","queenbeetColour","queenbeetFrag","duketaterColour","duketaterFrag","missingPlantDrops","GardenSection","possiblePresMax","neededCook","cookiesNextFrag","cookiesNextSmall","heavenlyChips","HCTarget","CookiesTillTarget","resetBonus","newHeavenlyChips","curCPS","ResetCPS","ResetBonus","resetFrag","resetSmall","currentPrestige","willHave","willGet","delta7","next7Reset","next7Total","frag7","delta777","next777Reset","next777Total","frag777","delta777777","next777777Reset","next777777Total","frag777777","PrestigeSection","popAllFrag","popAllA","popFattestFrag","popFattestA","specDisp","missingHalloweenCookies","missingChristmasCookies","missingValentineCookies","missingNormalEggs","eggDrops","missingRareEggs","rareEggDrops","centEgg","failRateHalloween","dropRateMult","obtainedCookiesChance","failRateChristmas","dropRateEgg","StartingFailRate","failRateEgg","succesRateEgg","obtainedEggs","obtainedRareEggs","pNormal1","pRare1","pRedrop","SeasonSection","calcSum","missedGoldenClicks","menuSection","prestigeUpgradesMissing","titlefrag","PrestigeUpgrades","normalUpgradesMissing","tech","nextSibling","cookieUpgradesMissing","achievs","values","parentElement","achievsCrate","AchievementsById","mouseDown","setOnCrate","tags","neuromancy","sesame","descFunc","tagsStr","CrateTooltipLockedAchievements","AddMissingAchievements","ConfigGroups","ConfigGroupsNotification","CreatePrefHeader","CreatePrefOption","FavStar","ele","ToggleFavouriteSetting","FavouriteSettingPlaceholder","CreateFavouriteStar","ToggleConfig","float","percent","slider","step","onchange","input","readOnly","inputPrompt","content","promptWrapL","promptL","PlaySound","promptAnchorL","darkenL","focus","promptOn","UpdatePrompt","CookieMonsterPrompt","outerHTML","ClosePrompt","innerSpan","FixMouseY","timerBarHeight","mouseY","ReplaceNative","drawMod","from","update","updateMod","warnOffset","tta","tt","UpdateTooltipLocation","UpdateWrinklers","UpdateSpecial","ClickCookie","ClickProduct","DescribeDragonAura","aura","bonusCPS","priceOfChange","CalculateChangeAura","timeToRecover","bonusCPSPercentage","minHeight","div2","AddAuraInfo","ToggleSpecialMenu","on","shouldHide","AddDragonLevelUpTooltip","index","subGroup","subGroupObject","resDef","resDefBut","AddMenuPref","info","description","notes","menu","AddMenuInfo","AddMenu","detail","Logic","titleGC","titleFC","titleSP","addFC","addSP","lastIndexOf","spawn","UpdateTitle","ReplaceAscendTooltip","InitializeCookieMonster","head","backgroundColour","borderTop","textShadow","table","tbody","firstCol","td","CreateBotBar","CMTimerBarGC","CMTimerBarRen","TimerBarBuffTimers","CreateTimerBar","UpgradeBar","legend","legendLine","CreateUpgradeBarLegend","upgradeNumber","CreateUpgradeBar","WhiteScreen","CreateFlashScreen","CreateSectionHideButtons","getElementsByTagName","CreateFavicon","CreateSimpleTooltip","append","CreateWrinklerButtons","canLumps","child","coords","ReplaceTooltipPantheon","popups","Popup","Notify","Win","CM","proceed","confirm","registerHook","load","registerMod"],"mappings":";AAAS,MACC,IAAIA,EAAsB,CAE9BC,IACA,SAAUC,IAchB,SAAWC,EAAQC,GAElB,aAEuC,iBAAnBF,EAAOG,QAc3BD,EAAQD,GAZPD,EAAOG,QAAUF,EAAOG,SACvBF,EAASD,GACT,SAAUI,GACT,IAAKA,EAAID,SACR,MAAM,IAAIE,MAAM,wCAEjB,OAAOJ,EAAQG,IAZnB,CAoBqB,oBAAXE,OAAyBA,OAASC,MAAM,SAAUD,GAK5D,aAGA,IAwgDME,EAt7BAC,EAzXAC,EAvNFC,EAFAC,IAEAD,EAAM,CAGTE,aAAc,EAEdC,UAAY,GAEZC,WAAa,GAGbC,SAAW,gBACY,IAAXV,GAA0BA,EAAOH,UAC3CG,EAAOH,SAASc,iBAAiB,mBAAoBN,EAAIO,IAAIC,MAAM,IAKrEC,kBAAoB,SAAUC,EAAUC,GAEvC,KADAA,EAAWA,EAAWX,EAAIY,KAAKD,GAAYhB,EAAOH,UAEjD,MAAM,IAAIE,MAAM,qBAQjB,IALA,IAAImB,EAAOF,EAASG,iBAAiBJ,GAGjCK,EAAa,IAAIC,OAAO,WAAahB,EAAIO,IAAIU,YAAc,6BAA8B,KAEpFC,EAAI,EAAGA,EAAIL,EAAKM,OAAQD,GAAK,EAAG,CAUxC,IAAIE,EAAUC,EARd,KAAIR,EAAKK,GAAGjB,SAAWY,EAAKK,GAAGjB,mBAAmBD,EAAIO,YAIjCe,IAAjBT,EAAKK,GAAGK,MAAoD,SAA9BV,EAAKK,GAAGK,KAAKC,gBAA4BxB,EAAIyB,wBAOzB,QAApDL,EAAWpB,EAAI0B,YAAYb,EAAKK,GAAI,aACpCL,EAAKK,GAAGS,YAAcN,EAAIR,EAAKK,GAAGS,UAAUC,MAAMb,KAClD,CACD,IAAIc,EAAYhB,EAAKK,GAEjBY,EAAU,GACG,OAAbV,EACHU,EAAUV,EAEAC,IACVU,QAAQC,KAAK,sFAAwFhC,EAAIiC,SACrGZ,EAAE,KACLS,EAAUT,EAAE,KAId,IAAIa,EAAO,KACX,GAAIJ,EAAQK,OACX,IACCD,EAAOlC,EAAIoC,gBAAgBN,GAC1B,MAAOO,GACRN,QAAQC,KAAKK,EAAI,KAAOP,GAI1B,IACC,IAAI9B,EAAIO,IAAIsB,EAAWK,GACtB,MAAOG,GACRN,QAAQC,KAAKK,OAOjBD,gBAAkB,SAAUE,GAC3B,IAAIJ,EAAO,KAEX,IACCA,EAAOK,KAAKC,MAAMF,GAEjB,MAAOG,GACR,IAAKzC,EAAIO,IAAImC,UACZ,MAAM,IAAIhD,MAAM,4CAA8C+C,GAG9D,IACCP,EAAO,IAAKS,SAAU,eAAiBL,EAAM,kDAAtC,GACN,MAAOM,GACR,MAAM,IAAIlD,MAAM,uCAAyCkD,IAI5D,OAAOV,GAIRW,aAAe,WAEd,IADA,IAAIC,EAAO,GACF5B,EAAI,EAAGA,EAAIlB,EAAIG,UAAUgB,OAAQD,GAAK,EAE1ClB,EAAIG,UAAUe,IAAMlB,EAAIG,UAAUe,GAAG6B,eACxCD,EAAKE,KAAKhD,EAAIG,UAAUe,IAG1B,OAAO4B,GAIRG,SAAW,SAAUC,GACpB,IAAIC,EAAKxD,EAAOH,SAAS4D,cAAcF,GAEvC,OADAlD,EAAIqD,QAAQF,EAAI,OAAO,GAChBA,GAIRvC,KAAO,SAAU0C,GAChB,IAAKA,EACJ,OAAO,KAGR,GAA8B,iBAAnBA,EAA6B,CAEvC,IAAIC,EAAMD,EACNH,EAAK,KACT,IACCA,EAAKxD,EAAOH,SAASgE,cAAcD,GAClC,MAAOlB,GAER,OADAN,QAAQC,KAAKK,GACN,KAKR,OAHKc,GACJpB,QAAQC,KAAK,sCAAuCuB,GAE9CJ,EAGR,OAAInD,EAAIyD,OAAOH,GAEPA,GAGRvB,QAAQC,KAAK,qCAAsCsB,EAAgBA,GAC5D,OAKRG,OAAS,SAAUC,GAClB,MAAoB,iBAATC,KACHD,aAAeC,KAEhBD,GAAsB,iBAARA,GAA4C,iBAAjBA,EAAIE,UAAiD,iBAAjBF,EAAIG,UAIzFA,SAAW,SAAUjD,GACpB,SAAIA,IAAQA,EAAKiD,WACTjD,EAAKiD,SAASrC,eAMvBsC,eAAiB,SAAUlD,GAC1B,KAAOA,EAAKmD,YACXnD,EAAKoD,YAAYpD,EAAKmD,aAKxBE,YAAc,SAAUd,GACvB,OAAOA,GAA2B,UAArBnD,EAAI6D,SAASV,IAA6C,SAA1BA,EAAG5B,KAAKC,eAItD0C,SAAW,SAAUf,GACpB,IAAKA,EACJ,OAAO,EAER,IAAIgB,EAAInE,EAAI6D,SAASV,GACrB,MACQ,WAANgB,GACM,UAANA,GAAiB,CAAC,SAAU,SAAU,SAASC,QAAQjB,EAAG5B,KAAKC,gBAAkB,GAKpF6C,cAAgB,SAAUlB,GACzB,OAAQnD,EAAI6D,SAASV,IACpB,IAAK,QAAS,OAASA,EAAGmB,OAA6B,KAApBnB,EAAGmB,MAAMnC,OAC5C,IAAK,SAAU,MAAkC,KAA1BgB,EAAGoB,YAAYpC,OAEvC,OAAO,MAKRqC,wBAA0B,WACzB,IAAIC,GAAY,EAEhB,IACC,IAAIvC,EAAOwC,OAAOC,eAAe,GAAI,UAAW,CAC/CC,IAAK,WAAcH,GAAY,KAEhC9E,EAAOW,iBAAiB,cAAe,KAAM4B,GAC7CvC,EAAOkF,oBAAoB,cAAe,KAAM3C,GAC/C,MAAOG,IAET,OAAOoC,EAXkB,GAe1BhD,sBACK1B,EAAMJ,EAAOH,SAAS4D,cAAc,YACpCrD,EAAI+E,eACP/E,EAAI+E,aAAa,OAAQ,SACK,SAA1B/E,EAAIwB,KAAKC,iBAQfuD,SAAW,gBAOX1B,QAAU,WACT,IAAI2B,EAAMC,UAAU,GAEpB,GAAyB,IAArBA,UAAU9D,OAAc,CAE3B,IAAI+D,EAAOF,EAAIG,eAAenF,EAAI+E,UAAYC,EAAIhF,EAAI+E,UAAaC,EAAIhF,EAAI+E,UAAY,GAEnFT,EAAQW,UAAU,GAGtB,OADAC,EAHIE,EAAOH,UAAU,IAGRX,GACN,EAED,GAAyB,IAArBW,UAAU9D,QAAwC,iBAAjB8D,UAAU,GAAiB,CAElEC,EAAOF,EAAIG,eAAenF,EAAI+E,UAAYC,EAAIhF,EAAI+E,UAAaC,EAAIhF,EAAI+E,UAAY,GAAvF,IACIM,EAAMJ,UAAU,GAEpB,IAAK,IAAIG,KAAQC,EACZA,EAAIF,eAAeC,KACtBF,EAAKE,GAAQC,EAAID,IAGnB,OAAO,EAGR,MAAM,IAAI1F,MAAM,sBAOjB4F,WAAa,WACZ,IAAIN,EAAMC,UAAU,GACpB,IAAKD,EAAIG,eAAenF,EAAI+E,UAC3B,OAAO,EAER,IAAK,IAAI7D,EAAI,EAAGA,EAAI+D,UAAU9D,OAAQD,GAAK,EAAG,CAC7C,IAAIkE,EAAOH,UAAU/D,UACd8D,EAAIhF,EAAI+E,UAAUK,GAE1B,OAAO,GAIRG,QAAU,SAAUP,EAAKI,EAAMI,GAC9B,IAAKR,EAAIG,eAAenF,EAAI+E,UAAW,CAEtC,QAAmBzD,IAAfkE,EAGH,OAFAR,EAAIhF,EAAI+E,UAAY,GAKtB,IAAIG,EAAOF,EAAIhF,EAAI+E,UAKnB,OAHKG,EAAKC,eAAeC,SAAwB9D,IAAfkE,IACjCN,EAAKE,GAAQI,GAEPN,EAAKE,IAIb1D,YAAc,SAAUyB,EAAIsC,GAC3B,IAAIC,EAAW,QAAUD,EAEzB,OADgBtC,EAAGwC,aAAaD,IAKjCE,YAAc,SAAUzC,EAAIsC,EAAMnB,GACjC,IAAIoB,EAAW,QAAUD,EACzBtC,EAAG2B,aAAaY,EAAUpB,IAI3BuB,qBAAuB,GAGvBC,iBAAmB,SAAUC,EAAW5C,EAAI6C,EAAMC,GAC5CjG,EAAI6F,qBAAqBV,eAAeY,KAC5C/F,EAAI6F,qBAAqBE,GAAa,IAEvC/F,EAAI6F,qBAAqBE,GAAW/C,KAAK,CAACG,EAAI6C,EAAMC,IACpD9C,EAAG7C,iBAAiB0F,EAAMC,GAAM,IAIjCC,kBAAoB,SAAUH,GAC7B,GAAI/F,EAAI6F,qBAAqBV,eAAeY,GAAY,CACvD,IAAK,IAAI7E,EAAI,EAAGA,EAAIlB,EAAI6F,qBAAqBE,GAAW5E,OAAQD,GAAK,EAAG,CACvE,IAAIiF,EAAMnG,EAAI6F,qBAAqBE,GAAW7E,GAC9CiF,EAAI,GAAGtB,oBAAoBsB,EAAI,GAAIA,EAAI,IAAI,UAErCnG,EAAI6F,qBAAqBE,KAKlCK,eAAiB,SAAU/D,GACtBA,EAAE+D,gBAAkB/D,EAAE+D,iBAC1B/D,EAAEgE,aAAc,GAIjBC,cAAgB,SAAUC,GAErBA,EAAOC,aACVxG,EAAIyG,gBAAkBF,EACtBvG,EAAIyG,gBAAgBD,eAKtBE,cAAgB,WAEX1G,EAAIyG,kBACPzG,EAAIyG,gBAAgBE,iBACpB3G,EAAIyG,gBAAkB,OAKxBG,aAAe,SAAUzD,EAAI0D,EAAWC,EAASC,GAChD,GAAK5D,EAAL,CAIA,IAAI6D,EAAK,KAaT,MAXqB,mBAAVC,MACVD,EAAK,IAAIC,MAAMJ,EAAW,CACzBC,QAASA,EACTC,WAAYA,KAIbC,EAAKrH,EAAOH,SAAS0H,YAAY,UAC9BC,UAAUN,EAAWC,EAASC,KAG7BC,IAKLhH,EAAIqD,QAAQ2D,EAAI,YAAY,GAE5B7D,EAAGiE,cAAcJ,IACV,KAIRK,kBAAoB,SAAUlE,EAAI0D,EAAWC,EAASC,GAChD5D,GAGDnD,EAAIiE,YAAYd,IACnBnD,EAAI4G,aAAazD,EAAI0D,EAAWC,EAASC,IAK3CO,SAAW,SAAUN,GACpB,IAAIO,EAAO,CACVC,EAAG,MACHC,GAAI,QACJC,GAAI,UAEL,MAAuB,iBAAZV,EAAGW,KACNX,EAAGW,UACerG,IAAf0F,EAAGY,SAAyBL,EAAKpC,eAAe6B,EAAGY,SACtDL,EAAKP,EAAGY,SAET,MAIRC,QAAU,SAAUvF,GACnB,OAAKA,EAGEA,EAAIwF,QAAQ,aAAc,IAAIC,MAAM,OAFnC,IAOTC,SAAW,SAAUjI,EAAK4B,GACzB,QAAKA,SAGiBL,IAAlBvB,EAAIkI,UACAlI,EAAIkI,UAAUC,SAASvG,IAGvB,IAAM,IAAM5B,EAAI4B,UAAUmG,QAAQ,OAAQ,KAAO,KAAK1D,QAAQ,IAAMzC,EAAY,OAKzFwG,SAAW,SAAUpI,EAAK4B,GACzB,IAAIyG,EAAapI,EAAI6H,QAAQlG,GAE7B,QAAsBL,IAAlBvB,EAAIkI,UAOR,IAAS/G,EAAI,EAAGA,EAAIkH,EAAWjH,OAAQD,GAAK,EACtClB,EAAIgI,SAASjI,EAAKqI,EAAWlH,MACjCnB,EAAI4B,YAAc5B,EAAI4B,UAAY,IAAM,IAAMyG,EAAWlH,SAR1D,IAAK,IAAIA,EAAI,EAAGA,EAAIkH,EAAWjH,OAAQD,GAAK,EAC3CnB,EAAIkI,UAAUI,IAAID,EAAWlH,KAchCoH,YAAc,SAAUvI,EAAK4B,GAC5B,IAAIyG,EAAapI,EAAI6H,QAAQlG,GAE7B,QAAsBL,IAAlBvB,EAAIkI,UAOR,IAAS/G,EAAI,EAAGA,EAAIkH,EAAWjH,OAAQD,GAAK,EAAG,CAC9C,IAAIqH,EAAO,IAAIvH,OACd,QAAUoH,EAAWlH,GAArB,YACSkH,EAAWlH,GADpB,aAESkH,EAAWlH,GAAK,SACzB,KAEDnB,EAAI4B,UAAY5B,EAAI4B,UAAUmG,QAAQS,EAAM,WAb5C,IAAK,IAAIrH,EAAI,EAAGA,EAAIkH,EAAWjH,OAAQD,GAAK,EAC3CnB,EAAIkI,UAAUO,OAAOJ,EAAWlH,KAiBnCuH,aAAe,SAAU1I,GAKxB,OAJgBJ,EAAO+I,iBAAmB/I,EAAO+I,iBAAiB3I,GAAOA,EAAI4I,eAKrE,IAUTC,SAAW,SAAU7I,EAAK8I,EAAQC,EAAWC,GAE5C,IAAIC,EAAWF,EAAY,YAAc,GACrCG,EAAY,KAEhB,IAAK,IAAI7D,KAAQyD,EAChB,GAAIA,EAAO1D,eAAeC,GAAO,CAChC,IAAI8D,EAAS,KAEQ,OAAjBL,EAAOzD,IAGL6D,IAEJA,EAAYjJ,EAAIuF,QAAQxF,EAAK,cAE1BkJ,GAAaA,EAAU9D,eAAeC,KAEzC8D,EAASD,EAAU7D,MAMhB2D,IACEE,IAEJA,EAAYjJ,EAAIuF,QAAQxF,EAAK,YAAa,KAEtCkJ,EAAU9D,eAAeC,KAE7B6D,EAAU7D,GAAQrF,EAAIoJ,MAAM/D,KAG9B8D,EAASL,EAAOzD,IAGF,OAAX8D,GACHnJ,EAAIoJ,MAAMC,YAAYhE,EAAM8D,EAAQF,KAOxCK,SAAW,SAAUC,EAAGC,EAAGC,GAC1B,MAAO,MACL,IAAMC,KAAKC,MAAMJ,GAAGK,SAAS,KAAKC,QAAQ,IAC1C,IAAMH,KAAKC,MAAMH,GAAGI,SAAS,KAAKC,QAAQ,IAC1C,IAAMH,KAAKC,MAAMF,GAAGG,SAAS,KAAKC,QAAQ,IAC1CC,eAIHC,UAAY,SAAUR,EAAGC,EAAGC,EAAGO,GAC9B,MAAO,MACL,IAAMN,KAAKC,MAAMJ,GAAGK,SAAS,KAAKC,QAAQ,IAC1C,IAAMH,KAAKC,MAAMH,GAAGI,SAAS,KAAKC,QAAQ,IAC1C,IAAMH,KAAKC,MAAMF,GAAGG,SAAS,KAAKC,QAAQ,IAC1C,IAAMH,KAAKC,MAAU,IAAJK,GAASJ,SAAS,KAAKC,QAAQ,IAChDC,eAIHG,SAAW,SAAUV,EAAGC,EAAGC,GAC1B,MAAO,OACNC,KAAKC,MAAMJ,GAAK,IAChBG,KAAKC,MAAMH,GAAK,IAChBE,KAAKC,MAAMF,GACZ,KAIDS,UAAY,SAAUX,EAAGC,EAAGC,EAAGO,GAC9B,MAAO,QACNN,KAAKC,MAAMJ,GAAK,IAChBG,KAAKC,MAAMH,GAAK,IAChBE,KAAKC,MAAMF,GAAK,IACfC,KAAKC,MAA4C,KAArCK,QAA4B,EAAIA,IAAY,IAC1D,KAIDG,gBAmBKpK,EAjBJ,WAKC,IAJA,IAAIqK,EAAU,kBACVC,EAAW,CAAC,GAAI,WAAY,QAAS,MAAO,QAC5CC,EAAS1K,EAAOH,SAAS4D,cAAc,OAElClC,EAAI,EAAGA,EAAIkJ,EAASjJ,OAAQD,GAAK,EAAG,CAC5C,IAAIoJ,EAAUF,EAASlJ,GAAKiJ,EACxBI,EAASD,EAAU,2CAGvB,GADAD,EAAOlB,MAAMqB,WAAaD,EACtBF,EAAOlB,MAAMqB,WAChB,OAAOF,EAGT,OAAOH,EAGOM,GAER,WACN,OAAO3K,EAAW,IAAM4K,MAAMC,UAAUC,KAAKC,KAAK5F,UAAW,MAAQ,MAMvE6F,gBAAkB,SAAU/K,EAAKuE,GAChCtE,EAAI4I,SAAS7I,EAAK,CAACgL,gBAAkBzG,GAAS,OAI/C0G,aAAe,SAAUjL,EAAKuE,GAC7BtE,EAAI4I,SAAS7I,EAAK,CAACkL,aAAc3G,GAAS,UAI3C4G,cAAgB,SAAU7I,EAAG8I,GAC5B,IAAIC,EAAE,EAAGC,EAAE,EACPC,EAAOjJ,EAAEkJ,wBAGb,GAFAH,EAAIE,EAAKE,KACTH,EAAIC,EAAKG,KACJN,EAAoB,CACxB,IAAIO,EAAU1L,EAAI2L,aAClBP,GAAKM,EAAQ,GACbL,GAAKK,EAAQ,GAEd,MAAO,CAACN,EAAGC,IAIZO,eAAiB,SAAUvJ,GAC1B,MAAO,CAACA,EAAEwJ,YAAaxJ,EAAEyJ,eAK1BC,iBAAmB,SAAU1J,GAC5B,IAAI+I,EAAI,EAAGC,EAAI,EASf,YARgC,IAArBhJ,EAAE2J,gBAAkC3J,EAAE2J,eAAe7K,QAE/DiK,EAAI/I,EAAE2J,eAAe,GAAGC,QACxBZ,EAAIhJ,EAAE2J,eAAe,GAAGE,SACO,iBAAd7J,EAAE4J,UACnBb,EAAI/I,EAAE4J,QACNZ,EAAIhJ,EAAE6J,SAEA,CAAEd,EAAGA,EAAGC,EAAGA,IAKnBc,iBAAmB,SAAU9J,GAC5B,IACI+J,GADS/J,EAAEkE,QAAUlE,EAAEgK,YACHd,wBAIpBU,EAAU,EAAGC,EAAU,EAY3B,YAXgC,IAArB7J,EAAE2J,gBAAkC3J,EAAE2J,eAAe7K,QAE/D8K,EAAU5J,EAAE2J,eAAe,GAAGC,QAC9BC,EAAU7J,EAAE2J,eAAe,GAAGE,SACC,iBAAd7J,EAAE4J,UACnBA,EAAU5J,EAAE4J,QACZC,EAAU7J,EAAE6J,SAKN,CAAEd,EAFLa,EAAUG,EAAWZ,KAEVH,EADXa,EAAUE,EAAWX,MAK1BE,WAAa,WACZ,IAAIW,EAAM3M,EAAOH,SAAS+M,gBAC1B,MAAO,EACL5M,EAAO6M,aAAeF,EAAIG,aAAeH,EAAII,YAAc,IAC3D/M,EAAOgN,aAAeL,EAAIM,YAAcN,EAAIO,WAAa,KAK5DC,YAAc,WACb,IAAIR,EAAM3M,EAAOH,SAAS+M,gBAC1B,MAAO,CACL5M,EAAOoN,YAAcT,EAAIU,YACzBrN,EAAOsN,aAAeX,EAAIY,eAW7BC,QAAU,SAAU7D,EAAGC,EAAGC,GACzBF,GAAK,IACLC,GAAK,IACLC,GAAK,IACL,IAAIrF,EAAIsF,KAAK2D,IAAI3D,KAAK2D,IAAI9D,EAAEC,GAAGC,GAC3B6D,EAAI5D,KAAK6D,IAAI7D,KAAK6D,IAAIhE,EAAEC,GAAGC,GAC3BnI,EAAIgM,EAAIlJ,EACZ,GAAU,IAAN9C,EAAW,MAAO,CAAE,KAAM,EAAG,IAAMgM,GACvC,IAAIE,EAAIjE,IAAInF,EAAI,GAAGqF,EAAED,GAAGlI,EAAKkI,IAAIpF,EAAI,GAAGmF,EAAEE,GAAGnI,EAAI,GAAGkI,EAAED,GAAGjI,EACzD,MAAO,CACN,IAAU,IAAJkM,EAAM,EAAEA,GACPlM,EAAEgM,EAAT,IACA,IAAMA,IAWRG,QAAU,SAAUD,EAAGE,EAAGJ,GACzB,IAAIK,EAAWL,EAAI,IAAX,IAER,GAAU,OAANE,EACH,MAAO,CAAEG,EAAGA,EAAGA,GAGhBH,GAAK,GACLE,GAAK,IAEL,IAAIvM,EAAIuI,KAAKkE,MAAMJ,GAEflM,EAAIqM,GAAK,EAAID,GACbtJ,EAAIuJ,GAAK,EAAID,GAFTvM,EAAE,EAAIqM,EAAErM,EAAI,GAAGqM,EAAErM,KAGzB,OAAQA,GACP,KAAK,EACL,KAAK,EAAG,MAAO,CAACwM,EAAEvJ,EAAE9C,GACpB,KAAK,EAAG,MAAO,CAAC8C,EAAEuJ,EAAErM,GACpB,KAAK,EAAG,MAAO,CAACA,EAAEqM,EAAEvJ,GACpB,KAAK,EAAG,MAAO,CAAC9C,EAAE8C,EAAEuJ,GACpB,KAAK,EAAG,MAAO,CAACvJ,EAAE9C,EAAEqM,GACpB,KAAK,EAAG,MAAO,CAACA,EAAErM,EAAE8C,KAKtByJ,iBAAmB,SAAUtL,GAC5B,IAKIjB,EALAwM,EAAM,CACTC,KAAM,KACNC,OAAQ,MAKT,GAAI1M,EAAIiB,EAAIV,MAAM,4BAA6B,CAG9C,GAAoB,IAAhBP,EAAE,GAAGF,OAER0M,EAAIE,OAAS,OACbF,EAAIC,KAAO,CACVE,SAAS3M,EAAE,GAAGuI,OAAO,EAAE,GAAG,IAC1BoE,SAAS3M,EAAE,GAAGuI,OAAO,EAAE,GAAG,IAC1BoE,SAAS3M,EAAE,GAAGuI,OAAO,EAAE,GAAG,IAC1BoE,SAAS3M,EAAE,GAAGuI,OAAO,EAAE,GAAG,IAAM,UAG3B,GAAoB,IAAhBvI,EAAE,GAAGF,OAEf0M,EAAIE,OAAS,MACbF,EAAIC,KAAO,CACVE,SAAS3M,EAAE,GAAGuI,OAAO,EAAE,GAAG,IAC1BoE,SAAS3M,EAAE,GAAGuI,OAAO,EAAE,GAAG,IAC1BoE,SAAS3M,EAAE,GAAGuI,OAAO,EAAE,GAAG,IAC1B,UAGK,IAAoB,IAAhBvI,EAAE,GAAGF,OAWf,OAAO,EATP0M,EAAIE,OAAS,MACbF,EAAIC,KAAO,CACVE,SAAS3M,EAAE,GAAG4M,OAAO,GAAK5M,EAAE,GAAG4M,OAAO,GAAG,IACzCD,SAAS3M,EAAE,GAAG4M,OAAO,GAAK5M,EAAE,GAAG4M,OAAO,GAAG,IACzCD,SAAS3M,EAAE,GAAG4M,OAAO,GAAK5M,EAAE,GAAG4M,OAAO,GAAG,IACzC,MAOF,OAAOJ,EAGR,GAAIxM,EAAIiB,EAAIV,MAAM,6BAA8B,CAG/C,IAEIsM,EAAIC,EAAIC,EAAIC,EAFZC,EAAMjN,EAAE,GAAG0G,MAAM,KACjBwG,EAAK,kCAET,GACCD,EAAInN,QAAU,IACb+M,EAAKI,EAAI,GAAG1M,MAAM2M,MAClBJ,EAAKG,EAAI,GAAG1M,MAAM2M,MAClBH,EAAKE,EAAI,GAAG1M,MAAM2M,IAiBnB,OAfAV,EAAIE,OAAS,MACbF,EAAIC,KAAO,CACVU,WAAWN,EAAG,KAAO,EACrBM,WAAWL,EAAG,KAAO,EACrBK,WAAWJ,EAAG,KAAO,EACrB,MAIAE,EAAInN,QAAU,IACbkN,EAAKC,EAAI,GAAG1M,MAAM2M,MAEnBV,EAAIE,OAAS,OACbF,EAAIC,KAAK,GAAKU,WAAWH,EAAG,KAAO,GAE7BR,EAIT,OAAO,GAIRY,kBAAoB,SAAUC,GAC7B,IAAIC,EAAO,GAEU,iBAAVD,EAEVA,EAAM5G,QAAQ,iDAAiD,SAAUpE,GACxEiL,EAAK3L,KAAKU,MAEDgH,MAAMkE,QAAQF,KACxBC,EAAOD,GAOR,IAFA,IAAIG,EAAS,GAEJ3N,EAAI,EAAGA,EAAIyN,EAAKxN,OAAQD,IAAK,CACrC,IAAI4N,EAAQ9O,EAAI4N,iBAAiBe,EAAKzN,IAClC4N,GACHD,EAAO7L,KAAK8L,GAId,OAAOD,GAIRE,wBAA0B,SAAUF,GACnC,IAAK,IAAI3N,EAAI,EAAGA,EAAI2N,EAAO1N,OAAQD,IAAK,CACvC,IAAI6I,EAAI8E,EAAO3N,GAAG4M,KAAK,GACvB,GAAU,OAAN/D,GAAcA,EAAI,EACrB,OAAO,EAGT,OAAO,GAIRiF,cAAgB,SAAUjB,GACzB,OAAQA,EAAOvM,eACf,IAAK,OACL,IAAK,OACJ,OAAO,EAER,OAAO,GAQRyN,sBAAwB,SAAUC,GACjC,IAAIC,EAAMxP,EAAOyP,kBAAoB,EACrCF,EAAOG,OAASF,EAChBD,EAAOI,QAAUH,EACPD,EAAOK,WAAW,MACxBC,MAAML,EAAKA,IAIhBM,sBAAwB,SAAUX,EAAOY,EAAcC,EAAWC,GAEjE,IAAIC,EAAOpG,KAAKC,MAAM1J,EAAIO,IAAIuP,iBAAiB3O,QAC3C4O,EAAS/P,EAAIO,IAAIyP,eACjBC,EAAWjQ,EAAIO,IAAI2P,iBACnBC,EAAWnQ,EAAIO,IAAI6P,iBAEnBC,EAASV,GAAiC,EAATI,EACjCO,EAAmB,EAATP,EAEVb,EAASlP,EAAIiD,SAAS,UACtBsN,EAAMrB,EAAOK,WAAW,MAE5BL,EAAOG,MAAQgB,EACfnB,EAAOI,OAASgB,EACZV,GACH5P,EAAIiP,sBAAsBC,GAI3BqB,EAAIC,UAAYP,EAChBM,EAAIE,SAAS,EAAG,EAAGJ,EAAQC,GAG3BC,EAAIC,UAAYL,EAChB,IAAK,IAAI/E,EAAI,EAAGA,EAAIiF,EAAQjF,GAAc,EAAT2E,EAChCQ,EAAIE,SAASrF,EAAG,EAAG2E,EAAQA,GAC3BQ,EAAIE,SAASrF,EAAI2E,EAAQA,EAAQA,EAAQA,GAGtCjB,IAEHyB,EAAIC,UAAY1B,EAChByB,EAAIE,SAAS,EAAG,EAAGJ,EAAQC,IAG5B,IAAII,EAAQ,KACZ,OAAQhB,GACP,IAAK,OACJgB,EAAQ,EACRH,EAAII,UAAU,EAAG,EAAGd,EAAK,EAAGS,GAC5B,MACD,IAAK,QACJI,EAAQL,EAASR,EACjBU,EAAII,UAAUN,EAAUR,EAAK,EAAI,EAAGA,EAAK,EAAGS,GAG9C,GAAc,OAAVI,EAAgB,CACnBH,EAAIK,UAAY,EAChB,IAAK,IAAI1P,EAAI,EAAGA,EAAIlB,EAAIO,IAAIuP,iBAAiB3O,OAAQD,GAAK,EACzDqP,EAAIM,YACJN,EAAIO,YAAc9Q,EAAIO,IAAIuP,iBAAiB5O,GAC3CqP,EAAIQ,OAAO,GAAML,EAAQxP,EAAG,GAC5BqP,EAAIS,OAAO,GAAMN,EAAQxP,EAAGoP,GAC5BC,EAAIU,SAIN,MAAO,CACN/B,OAAQA,EACRG,MAAOgB,EACPf,OAAQgB,IAMVY,wBAA0B,SAAUpC,EAAOqC,EAAU9B,GACpD,IAAI+B,EAkBJ,OAfCA,EADGD,GAAY9B,EACN,CACR,MAAQ,CAAC7D,KAAO,QAAS6F,MAAQ,QAAQF,GACzCrC,EAAQ,MACRA,EAAQ,IAAMO,EAAQ,KACtB,kBAAoBA,EAAQ,GAAK,KACjC,sBAGQ,CACR,WACAP,EAAQ,MACRA,EAAQ,SAIH9O,EAAIkK,eAAeoH,MAAM1R,KAAMwR,IAIvCG,eAAiB,WAEhB,GAAKvR,EAAIwR,QAAWxR,EAAIwR,OAAOC,MAA/B,CAIA,IAEIC,EAAIC,EAFJC,EAAU5R,EAAIwR,OAAOC,MAIrBG,EAAQC,OAGXH,EAAK1R,EAAIkL,cAAc0G,EAAQ7O,eAAe,GAC9C4O,EAAK,CAAC,EAAG,KAETD,EAAK1R,EAAIkL,cAAc0G,EAAQ7O,eAC/B4O,EAAK3R,EAAI2L,cAGV,IAII5B,EAAGP,EAAGsI,EAJNC,EAAK/R,EAAI4L,eAAegG,EAAQ7O,eAChCiP,EAAKhS,EAAI8M,cACTmF,EAAKjS,EAAIkS,cAAcN,GACvBO,EAAK,CAACF,EAAGG,QAASH,EAAGI,SAEzB,OAAQT,EAAQT,SAAS3P,eACxB,IAAK,OAAQuI,EAAE,EAAGP,EAAE,EAAGsI,GAAG,EAAG,MAC7B,IAAK,QAAQ/H,EAAE,EAAGP,EAAE,EAAGsI,EAAE,EAAG,MAC5B,IAAK,MAAQ/H,EAAE,EAAGP,EAAE,EAAGsI,GAAG,EAAG,MAC7B,QAAa/H,EAAE,EAAGP,EAAE,EAAGsI,EAAE,EAE1B,IAAIQ,GAAKP,EAAGvI,GAAG2I,EAAG3I,IAAI,EAGtB,GAAKoI,EAAQW,cAMRC,EAAK,EACPb,EAAG5H,GAAG2H,EAAG3H,GAAGoI,EAAGpI,GAAKiI,EAAGjI,KACrB4H,EAAG5H,GAAG2H,EAAG3H,GAAGgI,EAAGhI,GAAG,EAAIiI,EAAGjI,GAAG,GAAK2H,EAAG3H,GAAGgI,EAAGhI,GAAGoI,EAAGpI,IAAM,EAAI2H,EAAG3H,GAAGgI,EAAGhI,GAAGoI,EAAGpI,GAC3E2H,EAAG3H,IACH4H,EAAGnI,GAAGkI,EAAGlI,GAAGuI,EAAGvI,GAAG2I,EAAG3I,GAAG8I,EAAEA,EAAER,EAAIE,EAAGxI,IACjCmI,EAAGnI,GAAGkI,EAAGlI,GAAGuI,EAAGvI,GAAG,EAAIwI,EAAGxI,GAAG,GAAKkI,EAAGlI,GAAGuI,EAAGvI,GAAG8I,EAAEA,EAAER,GAAK,EAAIJ,EAAGlI,GAAGuI,EAAGvI,GAAG8I,EAAEA,EAAER,EAAIJ,EAAGlI,GAAGuI,EAAGvI,GAAG8I,EAAEA,EAAER,EAC/FJ,EAAGlI,GAAGuI,EAAGvI,GAAG8I,EAAEA,EAAER,GAAK,EAAIJ,EAAGlI,GAAGuI,EAAGvI,GAAG8I,EAAEA,EAAER,EAAIJ,EAAGlI,GAAGuI,EAAGvI,GAAG8I,EAAEA,EAAER,QAXhE,IAAIU,EAAK,CACRd,EAAG3H,GACH2H,EAAGlI,GAAGuI,EAAGvI,GAAG8I,EAAEA,EAAER,GAalB,IAAI1G,EAAIoH,EAAGzI,GACPsB,EAAImH,EAAGhJ,GACPiJ,EAAgBb,EAAQC,MAAQ,QAAU,WAC1Ca,GACFF,EAAG,GAAKL,EAAG,GAAKT,EAAG,IAAMc,EAAG,GAAKd,EAAG,GAAKK,EAAG,KAC5CS,EAAG,GAAKL,EAAG,GAAKT,EAAG,GAAKK,EAAG,GAE7B/R,EAAI2S,cAAcf,EAASxG,EAAGC,EAAGoH,EAAeC,KAIjDC,cAAgB,SAAUf,EAASxG,EAAGC,EAAGoH,EAAeC,GACvD,IAAIE,EAAUF,EAAiB,EAAId,EAAQiB,WAE3C7S,EAAIwR,OAAOsB,KAAK3J,MAAMgI,SAAWsB,EACjCzS,EAAIwR,OAAOsB,KAAK3J,MAAMqC,KAAOJ,EAAI,KACjCpL,EAAIwR,OAAOsB,KAAK3J,MAAMsC,IAAMJ,EAAI,KAEhCrL,EAAIgL,aACHhL,EAAIwR,OAAOuB,KACXnB,EAAQoB,OACP,IAAIhT,EAAIH,UAAU,EAAG+S,EAAShB,EAAQiB,WAAY,EAAGjB,EAAQqB,aAC7D,OAIHf,cAAgB,SAAUN,GACzB,IAAIsB,EAAI,EAAItB,EAAQuB,mBAAqBvB,EAAQvC,MAC7C9B,EAAI,EAAIqE,EAAQuB,mBAAqBvB,EAAQtC,OAE7C8D,EAAc,EAAIxB,EAAQuB,mBAAqB,EAAInT,EAAIqT,kBAAkBzB,GAAWA,EAAQ0B,WAE5FtT,EAAIuT,iBAAiB3B,KACxBsB,GAAKE,GAEFxB,EAAQ4B,oBACXN,GAAKE,GAGN,IAAIK,EAAMzT,EAAI0T,eAAe9B,EAASsB,GAElCO,EAAInE,SACP/B,GAAKkG,EAAInE,OAASsC,EAAQ+B,SAEvB/B,EAAQgC,cACXrG,GAAK,EAAIqE,EAAQuB,mBAAqBvB,EAAQ+B,QAAU/B,EAAQiC,cAGjE,IAAIC,EAAKZ,EAAK,EAAItB,EAAQ+B,QACtBI,EAAKxG,EAAK,EAAIqE,EAAQ+B,QAE1B,MAAO,CACNK,SAAUd,EACVe,SAAU1G,EACV2G,QAASJ,EACTK,QAASJ,EACT3B,QAAS0B,EAAM,EAAIlC,EAAQwC,YAC3B/B,QAAS0B,EAAM,EAAInC,EAAQwC,YAC3BC,QAASZ,IAKXC,eAAiB,SAAU9B,EAASvC,GACnC,IAAIiF,EAAO,EAAGC,EAAO,EAAGC,EAAQ,EAAGC,EAAQ,EAAGnF,EAAS,EACnDoF,EAAc9C,EAAQ+C,SAAW/C,EAAQ+C,SAASxT,OAAS,EAiB/D,OAfIuT,IAEHH,GADAD,EAAO1C,EAAQgD,aACD,EAAInL,KAAKoL,KAAKH,EAAcJ,GAAQ,EAGlDE,EAAQ/K,KAAK6D,IAAI,EAAG7D,KAAKkE,OAAO0B,GAAUiF,EAAO,GAAK1C,EAAQkD,gBAAmBR,IACjFG,EAAQ7C,EAAQmD,cAAgBtL,KAAK2D,IAAIwE,EAAQmD,cAAeP,GAASA,GAGtED,IACHjF,EACCiF,EAAOE,GACNF,EAAO,GAAK3C,EAAQkD,gBAGhB,CACNR,KAAMA,EACNC,KAAMA,EACNC,MAAOA,EACPC,MAAOA,EACPpF,MAAOA,EACPC,OAAQA,IAKV+D,kBAAoB,SAAUzB,GAC7B,OAAOnI,KAAK6D,IACXsE,EAAQ+B,QAAU,EACjB,EAAI/B,EAAQoD,mBAAqBpD,EAAQqD,iBAAoBrD,EAAQuB,qBAKxE+B,eAAiB,SAAUtD,GAC1B,OAAQA,EAAQuD,KAAKlH,OAAO,GAAGzM,eAC9B,IAAK,IAAK,MAAO,IAElB,MAAO,KAIR+R,iBAAmB,SAAU3B,GAC5B,GAAIA,EAAQuD,KAAKhU,OAAS,EACzB,OAAQyQ,EAAQuD,KAAKlH,OAAO,GAAGzM,eAC9B,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,MAAO,IAGnB,OAAO,MAKR4T,gBAAkB,SAAUxD,EAASxM,GACpC,GAAKwM,EAAQxM,GAAb,CAGA,IAAIiQ,EAAW,KAEf,GAA6B,iBAAlBzD,EAAQxM,GAElB,IACCiQ,EAAW,IAAI1S,SAAUiP,EAAQxM,IAChC,MAAO/C,GACRN,QAAQuT,MAAMjT,QAIfgT,EAAWzD,EAAQxM,GAGhBiQ,GACHA,EAASxK,KAAK+G,KAOhB2D,cAAgB,SAAUC,GAEzB,IADA,IAAI1S,EAAO9C,EAAI6C,eACN3B,EAAI,EAAGA,EAAI4B,EAAK3B,OAAQD,GAAK,EACrC4B,EAAK5B,GAAGuU,QAAQD,IAKlBE,kBAAoB,CACnBC,MAAO,YACPC,MAAO,aAERC,iBAAmB,CAClBF,MAAO,UACPC,MAAO,YAIRE,eAAiB,KACjBrP,gBAAkB,KAGlBsP,gBAAkB,SAAU1T,IACyB,IAAhD,CAAC,MAAO,UAAU+B,QAAQpE,EAAIsH,SAASjF,KACtCrC,EAAIwR,QAAUxR,EAAIwR,OAAOC,OAC5BzR,EAAIwR,OAAOC,MAAMuE,WAMpBC,eAAiB,SAAU5T,GAC1BrC,EAAIuR,kBAIL2E,eAAiB,SAAU7T,GAC1BrC,EAAIuR,kBAIL4E,eAAiB,SAAU9T,GAEtBrC,EAAIwR,QAAUxR,EAAIwR,OAAOC,OAC5BzR,EAAIwR,OAAOC,MAAMuE,WAKnBI,oBAAsB,SAAU/T,GAC/B,IAAIkE,EAASlE,EAAEkE,QAAUlE,EAAEgK,WAEvB9F,EAAOtG,SAAWsG,EAAOtG,mBAAmBD,EAAIO,IAC/CgG,EAAOtG,QAAQoW,cAAgB9P,EAAO+P,UACzC/P,EAAOtG,QAAQsW,OAENvW,EAAIuF,QAAQgB,EAAQ,OAChBvG,EAAIuF,QAAQgB,EAAQ,YAGjCvG,EAAIwW,sBAAsBnU,EAAGkE,EAAQvG,EAAIuF,QAAQgB,EAAQ,WAAY,SAIlEvG,EAAIwR,QAAUxR,EAAIwR,OAAOC,OAC5BzR,EAAIwR,OAAOC,MAAMuE,WAMpBS,mBAAqB,SAAUpU,GAC9B,IAAIkE,EAASlE,EAAEkE,QAAUlE,EAAEgK,WAEvBrM,EAAIuF,QAAQgB,EAAQ,YACvBvG,EAAIwW,sBAAsBnU,EAAGkE,EAAQvG,EAAIuF,QAAQgB,EAAQ,WAAY,UAKvEiQ,sBAAwB,SAAUnU,EAAGkE,EAAQmQ,EAAaC,GACzD,IAAI/E,EAAU5R,EAAIuF,QAAQgB,EAAQ,YAElCvG,EAAIoG,eAAe/D,GACnBrC,EAAIsG,cAAcC,GAElB,IAAIqQ,EAAqB,SAAUtK,EAAKuK,GACvC7W,EAAI8F,iBAAiB,OAAQwG,EAAKtM,EAAI0V,kBAAkBiB,GACvD3W,EAAI8W,sBAAsBzU,EAAGkE,EAAQmQ,EAAaC,EAAaE,IAChE7W,EAAI8F,iBAAiB,OAAQwG,EAAKtM,EAAI6V,iBAAiBc,GACtD3W,EAAI+W,qBAAqB1U,EAAGkE,EAAQmQ,EAAaC,KAKnD,GAFAC,EAAmBjX,EAAOH,SAAU,CAAC,EAAG,IAEpCG,EAAOqX,QAAUrX,EAAOsX,aAAc,CACzC,IAAI3L,EAAO3L,EAAOsX,aAAa1L,wBAC3B2L,EAAM,EAAE5L,EAAKE,MAAOF,EAAKG,KAC7BmL,EAAmBjX,EAAOqX,OAAOrX,OAAOH,SAAU0X,GAGnD,IAAIC,EAAMnX,EAAI+L,iBAAiB1J,GAC3B+U,EAAMpX,EAAImM,iBAAiB9J,GAM/B,OALArC,EAAI8V,eAAiB,CACpB1K,EAAG+L,EAAI/L,EAAIgM,EAAIhM,EACfC,EAAG8L,EAAI9L,EAAI+L,EAAI/L,GAGRqL,GACR,IAAK,MAEkC,MAAlC1W,EAAIuT,iBAAiB3B,IAA2C,IAAvBA,EAAQyF,SAAShK,GAC7DuE,EAAQ0F,SAAS,KAAM,KAAM,IAAK,MAEnCtX,EAAIuX,OAAO3F,EAASvP,EAAG,EAAG,GAC1B,MAED,IAAK,MACJrC,EAAIwX,OAAO5F,EAASvP,EAAG,GACvB,MAED,IAAK,OACJrC,EAAIyX,QAAQ7F,EAASvP,EAAG,GAGzBuP,EAAQ6D,QAAQ,UAIjBqB,sBAAwB,SAAUzU,EAAGkE,EAAQmQ,EAAaC,EAAaE,GACtE,OAAO,SAAUxU,GAChB,IAAIuP,EAAU5R,EAAIuF,QAAQgB,EAAQ,YAClC,OAAQmQ,GACR,IAAK,MACJ1W,EAAIuX,OAAO3F,EAASvP,EAAGwU,EAAO,GAAIA,EAAO,IACzC,MAED,IAAK,MACJ7W,EAAIwX,OAAO5F,EAASvP,EAAGwU,EAAO,IAC9B,MAED,IAAK,OACJ7W,EAAIyX,QAAQ7F,EAASvP,EAAGwU,EAAO,IAGhCjF,EAAQ6D,QAAQ,WAKlBsB,qBAAuB,SAAU1U,EAAGkE,EAAQmQ,EAAaC,GACxD,OAAO,SAAUtU,GAChB,IAAIuP,EAAU5R,EAAIuF,QAAQgB,EAAQ,YAClCvG,EAAIkG,kBAAkB,QACtBlG,EAAI0G,gBAKJkL,EAAQ6D,QAAQ,SAChB7D,EAAQ6D,QAAQ,YAKlBiC,qBAAuB,SAAUrV,GAChC,IAAIkE,EAASlE,EAAEsV,cACX/F,EAAU5R,EAAIuF,QAAQgB,EAAQ,YAC9BuI,EAAQ9O,EAAIuF,QAAQgB,EAAQ,SAGK,QAAjCqL,EAAQ7D,OAAOvM,gBAClBoQ,EAAQgG,WAAW9I,EAAMf,QACpB/N,EAAIgP,cAAc4C,EAAQiG,eAC9B/I,EAAMhB,KAAK,GAAK,IAKI,OAAlBgB,EAAMhB,KAAK,MACmB,IAA7B8D,EAAQkG,kBAA2D,SAA7BlG,EAAQkG,kBAA+BlG,EAAQmG,2BACxFjJ,EAAMhB,KAAK,GAAK,GAIlB8D,EAAQoG,SAAS1G,MAAMM,EAAS9C,EAAMhB,MAEtC8D,EAAQ6D,QAAQ,SAChB7D,EAAQ6D,QAAQ,UAEZ7D,EAAQqG,oBACXrG,EAAQsG,QAKVX,OAAS,SAAU3F,EAASvP,EAAG8V,EAAMC,GACpC,IAAIC,EAAarY,EAAI+L,iBAAiB1J,GAClC+I,EAAI+M,EAAOE,EAAWjN,EAAIpL,EAAI8V,eAAe1K,EAAIwG,EAAQ+B,QAAU/B,EAAQuB,mBAC3E9H,EAAI+M,EAAOC,EAAWhN,EAAIrL,EAAI8V,eAAezK,EAAIuG,EAAQ+B,QAAU/B,EAAQuB,mBAE3EmF,EAAOlN,GAAK,KAAOwG,EAAQvC,MAAQ,IACnCkJ,EAAO,IAAOlN,GAAK,KAAOuG,EAAQtC,OAAS,IAE/C,OAAQtP,EAAIkV,eAAetD,IAC3B,IAAK,IAAKA,EAAQ0F,SAASgB,EAAMC,EAAM,KAAM,MAAO,MACpD,IAAK,IAAK3G,EAAQ0F,SAASgB,EAAM,KAAMC,EAAM,QAK9Cf,OAAS,SAAU5F,EAASvP,EAAG+V,GAC9B,IAEIG,EAAO,KADHH,EADSpY,EAAI+L,iBAAiB1J,GACZgJ,EAAIrL,EAAI8V,eAAezK,EAAIuG,EAAQ+B,QAAU/B,EAAQuB,qBACxD,KAAOvB,EAAQtC,OAAS,IAE/C,OAAQtP,EAAIuT,iBAAiB3B,IAC7B,IAAK,IAAKA,EAAQ0F,SAAS,KAAMiB,EAAM,KAAM,MAAO,MACpD,IAAK,IAAK3G,EAAQ0F,SAAS,KAAM,KAAMiB,EAAM,QAK9Cd,QAAU,SAAU7F,EAASvP,EAAG+V,GAC/B,IAEIG,EAAO,GADHH,EADSpY,EAAI+L,iBAAiB1J,GACZgJ,EAAIrL,EAAI8V,eAAezK,EAAIuG,EAAQ+B,QAAU/B,EAAQuB,qBACxD,GAAOvB,EAAQtC,OAAS,IAE/C,GAAIiJ,EAAO,EAAK,CAEf,IAAIC,EAAM5G,EAAQiG,YACmB,QAAjCjG,EAAQ7D,OAAOvM,eAA4BxB,EAAIgP,cAAcwJ,IAChE5G,EAAQgG,WAAmB,QAARY,EAAgB,OAAS,QAI9C5G,EAAQ0F,SAAS,KAAM,KAAM,KAAMiB,IAIpCE,gBAAkB,WAEjB,IAAI5K,EAAM,CACT9N,IAAK,KACL2Y,KAAM,MAGHxJ,EAASlP,EAAIiD,SAAS,UACtBsN,EAAMrB,EAAOK,WAAW,MAsC5B,OAHA1B,EAAI9N,IAAMmP,EACVrB,EAAI6K,KAlCW,SAAUrJ,EAAOC,EAAQ/N,GACvC2N,EAAOG,MAAQA,EACfH,EAAOI,OAASA,EAEhBiB,EAAII,UAAU,EAAG,EAAGzB,EAAOG,MAAOH,EAAOI,QAEzC,IAAIqJ,EAAQpI,EAAIqI,qBAAqB,EAAG,EAAG1J,EAAOG,MAAO,GACzDsJ,EAAME,aAAa,EAAO,QAC1BF,EAAME,aAAa,EAAI,EAAG,QAC1BF,EAAME,aAAa,EAAI,EAAG,QAC1BF,EAAME,aAAa,GAAO,QAC1BF,EAAME,aAAa,EAAI,EAAG,QAC1BF,EAAME,aAAa,EAAI,EAAG,QAC1BF,EAAME,aAAa,EAAO,QAE1BtI,EAAIC,UAAYmI,EAChBpI,EAAIE,SAAS,EAAG,EAAGvB,EAAOG,MAAOH,EAAOI,QAExC,IAAIwJ,EAAQvI,EAAIqI,qBAAqB,EAAG,EAAG,EAAG1J,EAAOI,QACrD,OAAQ/N,EAAKC,eACb,IAAK,IACJsX,EAAMD,aAAa,EAAG,uBACtBC,EAAMD,aAAa,EAAG,uBACtB,MACD,IAAK,IACJC,EAAMD,aAAa,EAAG,iBACtBC,EAAMD,aAAa,EAAG,iBAGvBtI,EAAIC,UAAYsI,EAChBvI,EAAIE,SAAS,EAAG,EAAGvB,EAAOG,MAAOH,EAAOI,SAMlCzB,GAIRkL,qBAAuB,WAEtB,IAAIlL,EAAM,CACT9N,IAAK,KACL2Y,KAAM,MAGHxJ,EAASlP,EAAIiD,SAAS,UACtBsN,EAAMrB,EAAOK,WAAW,MAmB5B,OAHA1B,EAAI9N,IAAMmP,EACVrB,EAAI6K,KAfW,SAAUrJ,EAAOC,EAAQ0J,EAAQC,GAC/C/J,EAAOG,MAAQA,EACfH,EAAOI,OAASA,EAEhBiB,EAAII,UAAU,EAAG,EAAGzB,EAAOG,MAAOH,EAAOI,QAEzC,IAAI4J,EAAO3I,EAAIqI,qBAAqB,EAAG,EAAG,EAAG1J,EAAOI,QACpD4J,EAAKL,aAAa,EAAGG,GACrBE,EAAKL,aAAa,EAAGI,GAErB1I,EAAIC,UAAY0I,EAChB3I,EAAIE,SAAS,EAAG,EAAGvB,EAAOG,MAAOH,EAAOI,SAMlCzB,GAIRsL,sBAAwB,WAEvB,IAAItL,EAAM,CACT9N,IAAK,KACL2Y,KAAM,MAGHxJ,EAASlP,EAAIiD,SAAS,UACtBsN,EAAMrB,EAAOK,WAAW,MAoC5B,OAHA1B,EAAI9N,IAAMmP,EACVrB,EAAI6K,KAhCW,SAAUrJ,EAAOC,EAAQR,GACvCI,EAAOG,MAAQA,EACfH,EAAOI,OAASA,EAEhBiB,EAAII,UAAU,EAAG,EAAGzB,EAAOG,MAAOH,EAAOI,QAEzC,IAAIS,EAASb,EAAOG,MAAQ,EACxBY,EAAWjQ,EAAIO,IAAI2P,iBACnBC,EAAWnQ,EAAIO,IAAI6P,iBAMvB,GAHAG,EAAIC,UAAYP,EAChBM,EAAIE,SAAS,EAAG,EAAGvB,EAAOG,MAAOH,EAAOI,QAEpCS,EAAS,EACZ,IAAK,IAAI1E,EAAI,EAAGA,EAAI6D,EAAOI,OAAQjE,GAAc,EAAT0E,EAEvCQ,EAAIC,UAAYL,EAChBI,EAAIE,SAAS,EAAGpF,EAAG0E,EAAQA,GAC3BQ,EAAIE,SAASV,EAAQ1E,EAAI0E,EAAQA,EAAQA,GAI3C,IAAImJ,EAAO3I,EAAIqI,qBAAqB,EAAG,EAAG,EAAG1J,EAAOI,QACpD4J,EAAKL,aAAa,EAAG/J,GACrBoK,EAAKL,aAAa,EAAG,iBAErBtI,EAAIC,UAAY0I,EAChB3I,EAAIE,SAAS,EAAG,EAAGvB,EAAOG,MAAOH,EAAOI,SAMlCzB,GAIRhO,WACKA,EAAY,SAAUuZ,EAASxG,EAASyG,EAAMC,EAAQxK,EAAOyK,GAChE3Z,KAAKwZ,QAAUA,EACfxZ,KAAKgT,QAAUA,EACfhT,KAAKyZ,KAAOA,EACZzZ,KAAK0Z,OAASA,EACd1Z,KAAKkP,MAAQA,EACblP,KAAK2Z,QAAUA,GAGhB1Z,EAAU8K,UAAUhB,SAAW,WAC9B,IAAIgF,EAAO,CACVlF,KAAKC,MAAM9J,KAAKwZ,SAAW,KAC3B3P,KAAKC,MAAM9J,KAAKgT,SAAW,KAC3BnJ,KAAKC,MAAM9J,KAAKyZ,MAAQ,KACxB5P,KAAKC,MAAM9J,KAAK0Z,QAAU,KAC1B1Z,KAAKkP,OAKN,OAHIlP,KAAK2Z,OACR5K,EAAK3L,KAAK,SAEJ2L,EAAK/D,KAAK,MAGX/K,GAIR2Z,MAAQ,CACPC,WAAa,EACbC,WAAa,EACbC,aAAe,GAIhBC,SAAW,CACV7L,OAAQ,CAAC,OAAQ,MAAO,MAAO,OAAQ,MAAO,QAC9C8L,gBAAiB,CAAC,OAAQ,SAC1B1E,KAAM,CAAC,MAAO,MAAO,KAAM,MAC3BhE,SAAU,CAAC,OAAQ,QAAS,MAAO,UACnC2I,aAAc,CAAC,QAAQ,GAAM,GAC7BhC,iBAAkB,CAAC,QAAQ,GAAM,IAIlCiC,eAAiB,CAEhBC,aAAgB,iBAChBC,aAAgB,UAChBC,mBAAsB,aACtBC,SAAY,cACZC,WAAc,qBACdC,WAAc,qBACdC,OAAU,MAIXrY,QAAU,iCAUV1B,IAAM,SAAUwC,EAAeb,GAE9B,IAAIqY,EAAO3a,KAurBX,SAAS4a,EAAWC,EAAQnW,GAC3B,GAAsB,iBAAXmW,EACV,MAAM,IAAI/a,MAAM,kCAAoC+a,GAIrD,GAAIza,EAAI4Z,SAASzU,eAAesV,KACV,iBAAVnW,IACVA,EAAQA,EAAM9C,gBAE8B,IAAzCxB,EAAI4Z,SAASa,GAAQrW,QAAQE,IAChC,MAAM,IAAI5E,MAAM,WAAc+a,EAAS,wBAA2BnW,GAKpE,GAAItE,EAAI+Z,eAAe5U,eAAesV,GAAS,CAC9C,IAAIC,EAASD,EACTE,EAAS3a,EAAI+Z,eAAeU,GAChC,IAAIE,EAMH,MAAM,IAAIjb,MAAM,WAAc+a,EAAS,mBAJvC1Y,QAAQC,KAAK,iDAAuDhC,EAAIiC,QAASyY,EAAQC,GACzFF,EAASE,EAOX,IAAIC,EAAS,QAAUH,EAEvB,GAA4B,mBAAjBF,EAAKK,GAEf,OADAL,EAAKK,GAAQtW,IACN,EAED,GAAImW,KAAUF,EAEpB,OADAA,EAAKE,GAAUnW,GACR,EAGR,MAAM,IAAI5E,MAAM,sCAAwC+a,GAIzD,SAASI,EAAWJ,GACnB,GAAsB,iBAAXA,EACV,MAAM,IAAI/a,MAAM,kCAAoC+a,GAIrD,GAAIza,EAAI+Z,eAAe5U,eAAesV,GAAS,CAC9C,IAAIC,EAASD,EACTE,EAAS3a,EAAI+Z,eAAeU,GAChC,IAAIE,EAMH,MAAM,IAAIjb,MAAM,WAAc+a,EAAS,mBAJvC1Y,QAAQC,KAAK,iDAAuDhC,EAAIiC,QAASyY,EAAQC,GACzFF,EAASE,EAOX,IAAIG,EAAS,QAAUL,EAEvB,GAA4B,mBAAjBF,EAAKO,GACf,OAAOP,EAAKO,GAAQxW,OAEd,GAAImW,KAAUF,EACpB,OAAOA,EAAKE,GAGb,MAAM,IAAI/a,MAAM,sCAAwC+a,GAWzD,SAASM,IAKRR,EAAKS,8BAEAhb,EAAIwR,SACRxR,EAAIwR,OAAS,CACZC,MAAO,KACPqB,KAAO9S,EAAIiD,SAAS,OACpBgY,IAAMjb,EAAIiD,SAAS,OACnB8P,KAAO/S,EAAIiD,SAAS,OACpBiY,KAAOlb,EAAIiD,SAAS,OACpBkY,IAAMnb,EAAIiD,SAAS,OACnBmY,KAAOpb,EAAIiD,SAAS,OACpBoY,KAAOrb,EAAIiD,SAAS,OACpBqY,UAAYtb,EAAIyY,kBAChB8C,MAAQvb,EAAIiD,SAAS,OACrBuY,QAAUxb,EAAIiD,SAAS,OACvBwY,QAAUzb,EAAIiD,SAAS,OACvByY,QAAU1b,EAAIiD,SAAS,OACvB0Y,QAAU3b,EAAIiD,SAAS,OACvB2Y,IAAM5b,EAAIiD,SAAS,OACnB4Y,KAAO7b,EAAIiD,SAAS,OACpB6Y,KAAO9b,EAAIiD,SAAS,OACpB8Y,QAAU/b,EAAI+Y,uBACdiD,QAAUhc,EAAIiD,SAAS,OACvBgZ,SAAWjc,EAAIiD,SAAS,OACxBiZ,SAAWlc,EAAIiD,SAAS,OACxBkZ,SAAWnc,EAAIiD,SAAS,OACxBmZ,KAAOpc,EAAIiD,SAAS,OACpBoZ,MAAQrc,EAAIiD,SAAS,OACrBqZ,MAAQtc,EAAIiD,SAAS,OACrBsZ,SAAWvc,EAAImZ,wBACfqD,SAAWxc,EAAIiD,SAAS,OACxBwZ,UAAYzc,EAAIiD,SAAS,OACzByZ,UAAY1c,EAAIiD,SAAS,OACzB0Z,UAAY3c,EAAIiD,SAAS,OACzBwQ,IAAMzT,EAAIiD,SAAS,OACnB2Z,IAAM5c,EAAIiD,SAAS,OACnB4Z,KAAO7c,EAAIiD,SAAS,SAGrBjD,EAAIwR,OAAO2J,IAAI2B,YAAY9c,EAAIwR,OAAO8J,UAAUvb,KAChDC,EAAIwR,OAAO4J,KAAK0B,YAAY9c,EAAIwR,OAAO2J,KACvCnb,EAAIwR,OAAO+J,MAAMuB,YAAY9c,EAAIwR,OAAOgK,SACxCxb,EAAIwR,OAAO+J,MAAMuB,YAAY9c,EAAIwR,OAAOiK,SACxCzb,EAAIwR,OAAO+J,MAAMuB,YAAY9c,EAAIwR,OAAOkK,SACxC1b,EAAIwR,OAAO+J,MAAMuB,YAAY9c,EAAIwR,OAAOmK,SACxC3b,EAAIwR,OAAO4J,KAAK0B,YAAY9c,EAAIwR,OAAO+J,OACvCvb,EAAIwR,OAAOyJ,IAAI6B,YAAY9c,EAAIwR,OAAO4J,MACtCpb,EAAIwR,OAAOyJ,IAAI6B,YAAY9c,EAAIwR,OAAO6J,MAEtCrb,EAAIwR,OAAOoK,IAAIkB,YAAY9c,EAAIwR,OAAOuK,QAAQhc,KAC9CC,EAAIwR,OAAOqK,KAAKiB,YAAY9c,EAAIwR,OAAOoK,KACvC5b,EAAIwR,OAAOqK,KAAKiB,YAAY9c,EAAIwR,OAAO2K,UACvCnc,EAAIwR,OAAO2K,SAASW,YAAY9c,EAAIwR,OAAO0K,UAC3Clc,EAAIwR,OAAO0K,SAASY,YAAY9c,EAAIwR,OAAOyK,UAC3Cjc,EAAIwR,OAAOyK,SAASa,YAAY9c,EAAIwR,OAAOwK,SAC3Chc,EAAIwR,OAAOyJ,IAAI6B,YAAY9c,EAAIwR,OAAOqK,MACtC7b,EAAIwR,OAAOyJ,IAAI6B,YAAY9c,EAAIwR,OAAOsK,MAEtC9b,EAAIwR,OAAO4K,KAAKU,YAAY9c,EAAIwR,OAAO+K,SAASxc,KAChDC,EAAIwR,OAAO6K,MAAMS,YAAY9c,EAAIwR,OAAO4K,MACxCpc,EAAIwR,OAAO6K,MAAMS,YAAY9c,EAAIwR,OAAOmL,WACxC3c,EAAIwR,OAAOmL,UAAUG,YAAY9c,EAAIwR,OAAOkL,WAC5C1c,EAAIwR,OAAOkL,UAAUI,YAAY9c,EAAIwR,OAAOiL,WAC5Czc,EAAIwR,OAAOiL,UAAUK,YAAY9c,EAAIwR,OAAOgL,UAC5Cxc,EAAIwR,OAAOyJ,IAAI6B,YAAY9c,EAAIwR,OAAO6K,OACtCrc,EAAIwR,OAAOyJ,IAAI6B,YAAY9c,EAAIwR,OAAO8K,OAEtCtc,EAAIwR,OAAOyJ,IAAI6B,YAAY9c,EAAIwR,OAAOiC,KAEtCzT,EAAIwR,OAAOoL,IAAIE,YAAY9c,EAAIwR,OAAOqL,MACtC7c,EAAIwR,OAAOyJ,IAAI6B,YAAY9c,EAAIwR,OAAOoL,KAEtC5c,EAAIwR,OAAO0J,KAAK4B,YAAY9c,EAAIwR,OAAOyJ,KACvCjb,EAAIwR,OAAOsB,KAAKgK,YAAY9c,EAAIwR,OAAOuB,MACvC/S,EAAIwR,OAAOsB,KAAKgK,YAAY9c,EAAIwR,OAAO0J,MAEvClb,EAAIwR,OAAOsB,KAAKxS,iBAAiB,aAAcN,EAAIyW,qBAClDzW,EAAIwE,yBAA0B,CAACuY,SAAS,KAG1C,IAoSKC,EACAC,EArSDC,EAAIld,EAAIwR,OAER2L,IAAkBnd,EAAIuT,iBAAiBgH,GACvC6C,EAAqB7C,EAAK/G,kBAC1B6J,EAAard,EAAIkS,cAAcqI,GAC/B+C,EAAkB,EAAI/C,EAAKvF,mBAAqBuF,EAAKtF,iBAAmB,EAAIsF,EAAKgD,UACjFC,EAAiBxd,EAAIqT,kBAAkBkH,GACvCkD,EAAehU,KAAK2D,IACvBmN,EAAKkD,aACLhU,KAAKC,MAAM6Q,EAAK5G,QAAUlK,KAAKiU,KAIhCR,EAAEpK,KAAKnR,UAAY,sBACnBub,EAAEpK,KAAK3J,MAAMwU,MAAQ,OACrBT,EAAEpK,KAAK3J,MAAMkG,MAAQgO,EAAWjL,QAAU,KAC1C8K,EAAEpK,KAAK3J,MAAMmG,OAAS+N,EAAWhL,QAAU,KAC3C6K,EAAEpK,KAAK3J,MAAMyU,OAASrD,EAAKqD,OAG3BV,EAAEjC,IAAItZ,UAAY,iBAClBub,EAAEjC,IAAI9R,MAAMkG,MAAQgO,EAAWnJ,QAAU,KACzCgJ,EAAEjC,IAAI9R,MAAMmG,OAAS+N,EAAWlJ,QAAU,KAC1C+I,EAAEjC,IAAI9R,MAAMgI,SAAW,WAGvB+L,EAAEnK,KAAKpR,UAAY,wBACnBub,EAAEnK,KAAK5J,MAAMgI,SAAW,WACxB+L,EAAEnK,KAAK5J,MAAMqC,KAAO,IACpB0R,EAAEnK,KAAK5J,MAAMsC,IAAM,IACnByR,EAAEnK,KAAK5J,MAAMkG,MAAQ,OACrB6N,EAAEnK,KAAK5J,MAAMmG,OAAS,OACtBtP,EAAI8K,gBAAgBoS,EAAEnK,KAAM0K,EAAe,MAG3CP,EAAEhC,KAAKvZ,UAAY,wBACnBub,EAAEhC,KAAK/R,MAAMgI,SAAW,WACxB+L,EAAEhC,KAAK/R,MAAM0U,OAAStD,EAAKnG,YAAc,WACzC8I,EAAEhC,KAAK/R,MAAM2U,YAAcvD,EAAKuD,YAChCZ,EAAEhC,KAAK/R,MAAMqB,WAAa+P,EAAKwD,gBAC/B/d,EAAI8K,gBAAgBoS,EAAEhC,KAAMuC,EAAe,MAK3CP,EAAE7B,KAAKlS,MAAMqB,WAAa,mBAC1B0S,EAAEpB,KAAK3S,MAAMqB,WAAa,mBAC1B0S,EAAEZ,MAAMnT,MAAMqB,WAAa,mBAE3B0S,EAAE7B,KAAKlS,MAAM6U,QACbd,EAAEpB,KAAK3S,MAAM6U,QACbd,EAAEZ,MAAMnT,MAAM6U,QACb,IAGDd,EAAE/B,IAAIhS,MAAMgI,SAAW,WACvB+L,EAAE/B,IAAIhS,MAAMkG,MAAQkL,EAAKlL,MAAQ,KACjC6N,EAAE/B,IAAIhS,MAAMmG,OAASiL,EAAKjL,OAAS,KAGnC4N,EAAE5B,UAAU5C,KAAK6B,EAAKlL,MAAOkL,EAAKjL,OAAQtP,EAAIkV,eAAeqF,IAG7D2C,EAAE9B,KAAKjS,MAAMgI,SAAW,WACxB+L,EAAE9B,KAAKjS,MAAMqC,KAAO+O,EAAK5G,QAAU,KACnCuJ,EAAE9B,KAAKjS,MAAMsC,IAAM8O,EAAK5G,QAAU,KAClCuJ,EAAE9B,KAAKjS,MAAM0U,OAAStD,EAAKpH,mBAAqB,WAChD+J,EAAE9B,KAAKjS,MAAM2U,YAAcvD,EAAK0D,mBAGhCf,EAAE7B,KAAKlS,MAAMgI,SAAW,WACxB+L,EAAE7B,KAAKlS,MAAMqC,KAAO,MACpB0R,EAAE7B,KAAKlS,MAAMsC,IAAM,MACnByR,EAAE7B,KAAKlS,MAAMkG,MAASkL,EAAK5G,QAAU,EAAI4G,EAAKpH,mBAAqBoH,EAAKlL,MAAQmO,EAAkB,KAClGN,EAAE7B,KAAKlS,MAAMmG,OAAU,EAAIiL,EAAKpH,mBAAqB,EAAIoH,EAAK5G,QAAU4G,EAAKjL,OAAU,KACvF4N,EAAE7B,KAAKlS,MAAM+U,OAjEG,YAkEhBle,EAAIqD,QAAQ6Z,EAAE7B,KAAM,CACnB8C,SAAU5D,EACV6D,QAAS,QAIVlB,EAAE3B,MAAMpS,MAAMgI,SAAW,WACzB+L,EAAE3B,MAAMpS,MAAMqC,KACd0R,EAAE3B,MAAMpS,MAAMsC,IACb,IACDyR,EAAE3B,MAAMpS,MAAMkG,MACd6N,EAAE3B,MAAMpS,MAAMmG,OACbgO,EAAiB,KAGlBJ,EAAE1B,QAAQrS,MAAMgI,SAChB+L,EAAEzB,QAAQtS,MAAMgI,SACf,WACD+L,EAAE1B,QAAQrS,MAAMqB,WAChB0S,EAAEzB,QAAQtS,MAAMqB,WACf+P,EAAK8D,mBACNnB,EAAE1B,QAAQrS,MAAMkG,MAChB6N,EAAEzB,QAAQtS,MAAMmG,OACd,EAAIiL,EAAKvF,mBAAqBuF,EAAKtF,iBAAoB,KACzDiI,EAAE1B,QAAQrS,MAAMmG,OAChB4N,EAAEzB,QAAQtS,MAAMkG,MACfiO,EAAiB,KAClBJ,EAAE1B,QAAQrS,MAAMqC,KAChB0R,EAAEzB,QAAQtS,MAAMsC,IACdhC,KAAKkE,MAAM2P,EAAiB,GAAK7T,KAAKkE,MAAM4M,EAAKtF,iBAAmB,GAAKsF,EAAKvF,mBAAsB,KACtGkI,EAAE1B,QAAQrS,MAAMsC,IAChByR,EAAEzB,QAAQtS,MAAMqC,KACf,IAGD0R,EAAExB,QAAQvS,MAAMgI,SAChB+L,EAAEvB,QAAQxS,MAAMgI,SACf,WACD+L,EAAExB,QAAQvS,MAAMqB,WAChB0S,EAAEvB,QAAQxS,MAAMqB,WACf+P,EAAK+D,aACNpB,EAAExB,QAAQvS,MAAMmG,OAChB4N,EAAEvB,QAAQxS,MAAMkG,MACdiO,EAAiB,EAAI/C,EAAKvF,mBAAsB,KAClDkI,EAAExB,QAAQvS,MAAMkG,MAChB6N,EAAEvB,QAAQxS,MAAMmG,OACfiL,EAAKtF,iBAAmB,KACzBiI,EAAExB,QAAQvS,MAAMqC,KAChB0R,EAAEvB,QAAQxS,MAAMsC,IACdhC,KAAKkE,MAAM2P,EAAiB,GAAK7T,KAAKkE,MAAM4M,EAAKtF,iBAAmB,GAAM,KAC5EiI,EAAExB,QAAQvS,MAAMsC,IAChByR,EAAEvB,QAAQxS,MAAMqC,KACf+O,EAAKvF,mBAAqB,KAI3BkI,EAAEtB,IAAIzS,MAAMoV,SAAW,SACvBrB,EAAEtB,IAAIzS,MAAMkG,MAAQkL,EAAKjH,WAAa,KACtC4J,EAAEtB,IAAIzS,MAAMmG,OAASiL,EAAKjL,OAAS,KAGnC4N,EAAEnB,QAAQrD,KAAK6B,EAAKjH,WAAYiH,EAAKjL,OAAQ,OAAQ,QAGrD4N,EAAErB,KAAK1S,MAAMqV,QAAUrB,EAAgB,QAAU,OACjDD,EAAErB,KAAK1S,MAAMgI,SAAW,WACxB+L,EAAErB,KAAK1S,MAAMqC,KAAQ+O,EAAK5G,QAAU4G,EAAKlL,MAAQ,EAAIkL,EAAKpH,mBAAqB,EAAIqK,EAAkB,KACrGN,EAAErB,KAAK1S,MAAMsC,IAAM8O,EAAK5G,QAAU,KAClCuJ,EAAErB,KAAK1S,MAAM0U,OAAStD,EAAKpH,mBAAqB,WAChD+J,EAAErB,KAAK1S,MAAM2U,YAAcvD,EAAK0D,mBAGhCf,EAAEpB,KAAK3S,MAAMqV,QAAUrB,EAAgB,QAAU,OACjDD,EAAEpB,KAAK3S,MAAMgI,SAAW,WACxB+L,EAAEpB,KAAK3S,MAAMqC,KAAQ+O,EAAK5G,QAAU4G,EAAKlL,MAAQ,EAAIkL,EAAKpH,mBAAqBqK,EAAkB,KACjGN,EAAEpB,KAAK3S,MAAMsC,IAAM,MACnByR,EAAEpB,KAAK3S,MAAMkG,MACVkL,EAAKjH,WAAa,EAAIkK,EAAiB,EAAIjD,EAAKpH,oBAChDiK,EAAqB,EAAI3T,KAAK6D,IAAI,EAAGiN,EAAK5G,QAAU6J,IAClD,KACLN,EAAEpB,KAAK3S,MAAMmG,OAAU,EAAIiL,EAAKpH,mBAAqB,EAAIoH,EAAK5G,QAAU4G,EAAKjL,OAAU,KACvF4N,EAAEpB,KAAK3S,MAAM+U,OAAS,UACtBle,EAAIqD,QAAQ6Z,EAAEpB,KAAM,CACnBqC,SAAU5D,EACV6D,QAAS,QAIVlB,EAAEjB,SAAS9S,MAAM0U,OACjBX,EAAEf,SAAShT,MAAM0U,OAChBtD,EAAKvF,mBAAqB,YAAcuF,EAAK8D,mBAG9CnB,EAAEf,SAAShT,MAAMgI,SAAW,WAC5B+L,EAAEf,SAAShT,MAAMqC,OAAS,EAAI+O,EAAKvF,mBAAqBuF,EAAKtF,kBAAoB,KACjFiI,EAAEf,SAAShT,MAAMsC,IAAM,IAGvByR,EAAEhB,SAAS/S,MAAM0U,OAAStD,EAAKtF,iBAAmB,YAAcsF,EAAK+D,aAGrEpB,EAAElB,QAAQ7S,MAAMkG,MAAQkL,EAAKjH,WAAa,KAC1C4J,EAAElB,QAAQ7S,MAAMmG,OAAStP,EAAIO,IAAIke,iBAAmB,KAIpDvB,EAAEd,KAAKjT,MAAMoV,SAAW,SACxBrB,EAAEd,KAAKjT,MAAMkG,MAAQkL,EAAKjH,WAAa,KACvC4J,EAAEd,KAAKjT,MAAMmG,OAASiL,EAAKjL,OAAS,KAGpC4N,EAAEX,SAAS7D,KAAK6B,EAAKjH,WAAYiH,EAAKjL,OAAQ,QAG9C4N,EAAEb,MAAMlT,MAAMqV,QAAUpB,EAAqB,QAAU,OACvDF,EAAEb,MAAMlT,MAAMgI,SAAW,WACzB+L,EAAEb,MAAMlT,MAAMqC,KACX+O,EAAK5G,QAAU4G,EAAKlL,MAAQ,EAAIkL,EAAKpH,mBAAqBqK,GAC1DL,EAAiB5C,EAAKjH,WAAa,EAAIkK,EAAiB,EAAIjD,EAAKpH,mBAAsB,GACrF,KACL+J,EAAEb,MAAMlT,MAAMsC,IAAM8O,EAAK5G,QAAU,KACnCuJ,EAAEb,MAAMlT,MAAM0U,OAAStD,EAAKpH,mBAAqB,WACjD+J,EAAEb,MAAMlT,MAAM2U,YAAcvD,EAAK0D,mBAGjCf,EAAEZ,MAAMnT,MAAMqV,QAAUpB,EAAqB,QAAU,OACvDF,EAAEZ,MAAMnT,MAAMgI,SAAW,WACzB+L,EAAEZ,MAAMnT,MAAMqC,KACX+O,EAAK5G,QAAU4G,EAAKlL,MAAQ,EAAIkL,EAAKpH,mBAAqBqK,GAC1DL,EAAiB5C,EAAKjH,WAAa,EAAIkK,EAAiB,EAAIjD,EAAKpH,mBAAsB,GACrF,KACL+J,EAAEZ,MAAMnT,MAAMsC,IAAM,MACpByR,EAAEZ,MAAMnT,MAAMkG,MACXkL,EAAKjH,WAAa,EAAIkK,EAAiB,EAAIjD,EAAKpH,mBACjD1J,KAAK6D,IAAI,EAAGiN,EAAK5G,QAAU6J,GACxB,KACLN,EAAEZ,MAAMnT,MAAMmG,OAAU,EAAIiL,EAAKpH,mBAAqB,EAAIoH,EAAK5G,QAAU4G,EAAKjL,OAAU,KACxF4N,EAAEZ,MAAMnT,MAAM+U,OAAS,UACvBle,EAAIqD,QAAQ6Z,EAAEZ,MAAO,CACpB6B,SAAU5D,EACV6D,QAAS,SAIVlB,EAAET,UAAUtT,MAAM0U,OAClBX,EAAEP,UAAUxT,MAAM0U,OACjBtD,EAAKvF,mBAAqB,YAAcuF,EAAK8D,mBAG9CnB,EAAEP,UAAUxT,MAAMgI,SAAW,WAC7B+L,EAAEP,UAAUxT,MAAMqC,OAAS,EAAI+O,EAAKvF,mBAAqBuF,EAAKtF,kBAAoB,KAClFiI,EAAEP,UAAUxT,MAAMsC,IAAM,IAGxByR,EAAER,UAAUvT,MAAM0U,OAAStD,EAAKtF,iBAAmB,YAAcsF,EAAK+D,aAGtEpB,EAAEV,SAASrT,MAAMkG,MAAQkL,EAAKjH,WAAa,KAC3C4J,EAAEV,SAASrT,MAAMmG,OAAStP,EAAIO,IAAIke,iBAAmB,KAIrDvB,EAAEzJ,IAAI9R,UAAY,kBAClBub,EAAEzJ,IAAItK,MAAMqV,QAAUnB,EAAWhJ,QAAQE,KAAO,QAAU,OAC1D2I,EAAEzJ,IAAItK,MAAMgI,SAAW,WACvB+L,EAAEzJ,IAAItK,MAAMqC,KAAO+O,EAAK5G,QAAU,KAClCuJ,EAAEzJ,IAAItK,MAAMsC,IAAO,EAAI8O,EAAKpH,mBAAqB,EAAIoH,EAAK5G,QAAU4G,EAAKjL,OAAU,KAInF4N,EAAEzJ,IAAIiL,UAAY,GAKlB,IAHA,IAAIC,EAAa3e,EAAIyP,sBAAsB,iBAEvCmP,EAAK,EACAtV,EAAI,EAAGA,EAAI+T,EAAWhJ,QAAQE,KAAMjL,IAC5C,IAAK,IAAIwI,EAAI,EAAGA,EAAIuL,EAAWhJ,QAAQC,MAAQsK,EAAKrE,EAAK5F,SAASxT,OAAQ2Q,IAAK8M,IAAM,CACpF,IAAIC,EAActE,EAAK5F,SAASiK,GAC5BE,EAAiB9e,EAAIiK,UAAUqH,MAAM,KAAMuN,EAAY/Q,MAEvDiR,EAAK/e,EAAIiD,SAAS,OACtB8b,EAAG5V,MAAMkG,MAASgO,EAAWhJ,QAAQG,MAAQ,EAAI+F,EAAKpH,mBAAsB,KAC5E4L,EAAG5V,MAAMmG,OAAU+N,EAAWhJ,QAAQI,MAAQ,EAAI8F,EAAKpH,mBAAsB,KAC7E4L,EAAG5V,MAAM4U,gBAAkBe,EAE3B,IAAIE,EAAKhf,EAAIiD,SAAS,OACtB+b,EAAGrd,UAAY,yBACfqd,EAAG7V,MAAMqV,QAAU,QACnBQ,EAAG7V,MAAMgI,SAAW,WACpB6N,EAAG7V,MAAMqC,MACP6R,EAAWhJ,QAAQC,MAAQ,EAAI,EAC/B7K,KAAKC,MAAYoI,IAAMuL,EAAWrJ,SAAWqJ,EAAWhJ,QAAQG,QAAU6I,EAAWhJ,QAAQC,KAAO,IAAzF,IAAiG,IACzG,KACL0K,EAAG7V,MAAMsC,IAAOnC,GAAK+T,EAAWhJ,QAAQI,MAAQ8F,EAAKzF,gBAAmB,KACxEkK,EAAG7V,MAAM0U,OAAStD,EAAKpH,mBAAqB,WAC5C6L,EAAG7V,MAAM2U,YAAcvD,EAAK0D,mBAC5Be,EAAG7V,MAAM+U,OAAS,UACU,OAAxBW,EAAY/Q,KAAK,IAAe+Q,EAAY/Q,KAAK,GAAK,IACzDkR,EAAG7V,MAAM8V,gBAAkB,QAAWN,EAAWzP,OAAOgQ,YAAc,KACtEF,EAAG7V,MAAMgW,iBAAmB,SAC5BH,EAAG7V,MAAMiW,mBAAqB,iBAE/Bpf,EAAIqD,QAAQ2b,EAAI,CACfb,SAAU5D,EACV6D,QAAS,iBACTtP,MAAO+P,IAERG,EAAG1e,iBAAiB,QAASN,EAAI0X,sBAAsB,GACvDsH,EAAGlC,YAAYiC,GACf7B,EAAEzJ,IAAIqJ,YAAYkC,GAYpB9B,EAAEN,IAAIjb,UAAY,oBAClBub,EAAEN,IAAIzT,MAAMqV,QAAUjE,EAAK3G,YAAc,QAAU,OACnDsJ,EAAEN,IAAIzT,MAAMgI,SAAW,WACvB+L,EAAEN,IAAIzT,MAAMqC,KAAO+O,EAAK5G,QAAU,KAClCuJ,EAAEN,IAAIzT,MAAMkW,OAAS9E,EAAK5G,QAAU,KACpCuJ,EAAEN,IAAIzT,MAAMwK,QAAU,SACtBuJ,EAAEN,IAAIzT,MAAMmW,SAAYjC,EAAWrJ,SAAW,EAAIuG,EAAKpH,mBAAqB,GAAkB,KAC9F+J,EAAEN,IAAIzT,MAAMoV,SAAW,SACvBrB,EAAEN,IAAIzT,MAAMmG,OAASiL,EAAK1G,aAAe,KACzCqJ,EAAEN,IAAIzT,MAAMoW,WAAa,SACzBrC,EAAEN,IAAIzT,MAAM0U,OAAStD,EAAKpH,mBAAqB,WAd1C8J,GADAD,EAAczC,EAAK0D,mBAAmBlW,MAAM,QAClB5G,OAAS,EAAI6b,EAAY,GAAKA,EAAY,GAAK,IAAMA,EAAY,GAAK,IAAMA,EAAY,GAAK,IAAMA,EAAY,GAC7IE,EAAEN,IAAIzT,MAAM2U,YAAcb,EAe3BC,EAAEN,IAAIzT,MAAM2F,MAAQyL,EAAKiF,YACzBtC,EAAEN,IAAIzT,MAAMsW,KAAO,kBACnBvC,EAAEN,IAAIzT,MAAMuW,UAAY,SACxBxC,EAAEN,IAAIzT,MAAM+U,OAAS,UACrBhB,EAAEN,IAAI+C,YAAc,WACnBpF,EAAKrC,QAENgF,EAAEL,KAAK1T,MAAMyW,WAAarF,EAAK1G,aAAe,KAC9CqJ,EAAEL,KAAK6B,UAAY,GACnBxB,EAAEL,KAAKC,YAAYnd,EAAOH,SAASqgB,eAAetF,EAAKuF,YAGvDC,IACAC,IACAC,IAIIjgB,EAAIwR,OAAOC,OAASzR,EAAIwR,OAAOC,QAAU8I,GAC5Cva,EAAIsI,YAAYtI,EAAIwR,OAAOC,MAAM1O,cAAe/C,EAAIO,IAAI2f,iBAIzDlgB,EAAIwR,OAAOC,MAAQ8I,EAIfA,EAAK4F,YAAcxgB,EAAOH,SAAS4gB,KACtCpgB,EAAIuR,iBAEJvR,EAAI2S,cAAc4H,EAAM,EAAG,EAAG,YAAY,GAGvC2C,EAAEpK,KAAKuN,aAAe9F,EAAK4F,WAC9B5F,EAAK4F,UAAUrD,YAAYI,EAAEpK,MAG9B9S,EAAImI,SAASoS,EAAKxX,cAAe/C,EAAIO,IAAI2f,iBAI1C,SAASH,IAER,IAAIO,EAAWtgB,EAAIkV,eAAeqF,GAC9BnP,EAAI3B,KAAKC,MAAO6Q,EAAKlD,SAAS9J,EAAI,KAAQgN,EAAKlL,MAAQ,IACvDhE,EAAI5B,KAAKC,OAAO,EAAI6Q,EAAKlD,SAASiJ,GAAY,MAAQ/F,EAAKjL,OAAS,IACpEgO,EAAkB,EAAI/C,EAAKvF,mBAAqBuF,EAAKtF,iBAAmB,EAAIsF,EAAKgD,UACjFrG,GAAOzN,KAAKkE,MAAM2P,EAAiB,GAKvC,OAJAtd,EAAIwR,OAAO+J,MAAMpS,MAAMqC,KAAQJ,EAAI8L,EAAO,KAC1ClX,EAAIwR,OAAO+J,MAAMpS,MAAMsC,IAAOJ,EAAI6L,EAAO,KAGjClX,EAAIuT,iBAAiBgH,IAC7B,IAAK,IACJ,IAAIgG,EAAOvgB,EAAIwN,QAAQ+M,EAAKlD,SAAS9J,EAAG,IAAKgN,EAAKlD,SAAShK,GACvDmT,EAAOxgB,EAAIwN,QAAQ+M,EAAKlD,SAAS9J,EAAG,EAAGgN,EAAKlD,SAAShK,GACrD2L,EAAS,OACZvP,KAAKC,MAAM6W,EAAK,IAAM,IACtB9W,KAAKC,MAAM6W,EAAK,IAAM,IACtB9W,KAAKC,MAAM6W,EAAK,IAAM,IACnBtH,EAAS,OACZxP,KAAKC,MAAM8W,EAAK,IAAM,IACtB/W,KAAKC,MAAM8W,EAAK,IAAM,IACtB/W,KAAKC,MAAM8W,EAAK,IAAM,IACvBxgB,EAAIwR,OAAOuK,QAAQrD,KAAK6B,EAAKjH,WAAYiH,EAAKjL,OAAQ0J,EAAQC,GAC9D,MACD,IAAK,IACJ,IAAIwH,EAAMzgB,EAAIwN,QAAQ+M,EAAKlD,SAAS9J,EAAGgN,EAAKlD,SAAS5J,EAAG,KACpDuL,EAAS,OACZvP,KAAKC,MAAM+W,EAAI,IAAM,IACrBhX,KAAKC,MAAM+W,EAAI,IAAM,IACrBhX,KAAKC,MAAM+W,EAAI,IAAM,IAClBxH,EAAS,OACbjZ,EAAIwR,OAAOuK,QAAQrD,KAAK6B,EAAKjH,WAAYiH,EAAKjL,OAAQ0J,EAAQC,GAK/DjZ,EAAIwR,OAAO+K,SAAS7D,KAAK6B,EAAKjH,WAAYiH,EAAKjL,OAAQiL,EAAKmG,eAI7D,SAASV,IACR,IAAIW,EAAa3gB,EAAIuT,iBAAiBgH,GACtC,GAAIoG,EAAY,CAEf,IAAItV,EAAI5B,KAAKC,OAAO,EAAI6Q,EAAKlD,SAASsJ,GAAc,MAAQpG,EAAKjL,OAAS,IAC1EtP,EAAIwR,OAAO2K,SAAShT,MAAMsC,IAAOJ,GAAK,EAAIkP,EAAKvF,mBAAqBuF,EAAKtF,kBAAoBxL,KAAKkE,MAAM3N,EAAIO,IAAIke,iBAAmB,GAAM,KAI1Ize,EAAIwR,OAAO+K,SAAS7D,KAAK6B,EAAKjH,WAAYiH,EAAKjL,OAAQiL,EAAKmG,eAI7D,SAAST,IACR,IAAI5U,EAAI5B,KAAKC,OAAO,EAAI6Q,EAAKlD,SAAStN,IAAMwQ,EAAKjL,OAAS,IAC1DtP,EAAIwR,OAAOmL,UAAUxT,MAAMsC,IAAOJ,GAAK,EAAIkP,EAAKvF,mBAAqBuF,EAAKtF,kBAAoBxL,KAAKkE,MAAM3N,EAAIO,IAAIke,iBAAmB,GAAM,KAI3I,SAASmC,IACR,OAAO5gB,EAAIwR,QAAUxR,EAAIwR,OAAOC,QAAU8I,EAgG3C,GAx1CKrY,IACJA,EAAO,IAGRtC,KAAKyX,SAAW,CACf/N,EAAG,IACHC,EAAG,IACHC,EAAG,IACH+D,EAAG,EACHE,EAAG,EACHJ,EAAG,IACHtD,EAAG,GAKJnK,KAAKmO,OAAS,OACdnO,KAAK0E,WAAQhD,EACb1B,KAAKihB,WAAQvf,EACb1B,KAAKkhB,cAAWxf,EAChB1B,KAAKmhB,aAAUzf,EACf1B,KAAKohB,kBAAe1f,EACpB1B,KAAKqhB,kBAAe3f,EACpB1B,KAAKshB,oBAAiB5f,EACtB1B,KAAKia,gBAAkB,OACvBja,KAAKuhB,YAAc,GACnBvhB,KAAKwhB,eAAiB,EACtBxhB,KAAKyhB,UAAW,EAChBzhB,KAAK0hB,MAAO,EACZ1hB,KAAK2hB,WAAY,EACjB3hB,KAAK4hB,YAAa,EAIlB5hB,KAAKyP,MAAQ,IACbzP,KAAK0P,OAAS,IACd1P,KAAKuV,KAAO,MACZvV,KAAKka,aAAe,OACpBla,KAAKuR,SAAW,SAChBvR,KAAK2S,eAAgB,EACrB3S,KAAKyW,aAAc,EACnBzW,KAAK6hB,aAAc,EACnB7hB,KAAKyU,QAAU,GACfzU,KAAKgV,YAAc,GACnBhV,KAAKkY,iBAAmB,OACxBlY,KAAKmV,cAAgB,GACrBnV,KAAKkV,eAAiB,EACtBlV,KAAKqY,oBAAqB,EAC1BrY,KAAK0T,WAAa,GAClB1T,KAAK2d,UAAY,EACjB3d,KAAKgU,aAAc,EACnBhU,KAAKkgB,UAAY,QACjBlgB,KAAK4f,YAAc,gBACnB5f,KAAKiU,aAAe,GACpBjU,KAAK+T,QAAU,GACf/T,KAAKme,gBAAkB,sBACvBne,KAAKwU,YAAc,EACnBxU,KAAKke,YAAc,sBACnBle,KAAK6d,aAAe,EACpB7d,KAAKuT,mBAAqB,EAC1BvT,KAAKqe,mBAAqB,sBAC1Bre,KAAKoT,QAAS,EACdpT,KAAKiT,WAAa,GAClBjT,KAAKqT,YAAc,kBACnBrT,KAAK0e,aAAe,mBACpB1e,KAAKoV,mBAAqB,EAC1BpV,KAAKye,mBAAqB,sBAC1Bze,KAAKqV,iBAAmB,EACxBrV,KAAKge,OAAS,IACdhe,KAAKugB,eAAY7e,EAIjB1B,KAAK8hB,KAAO,EACZ9hB,KAAK+hB,KAAO,IACZ/hB,KAAKgiB,KAAO,EACZhiB,KAAKiiB,KAAO,IACZjiB,KAAKkiB,KAAO,EACZliB,KAAKmiB,KAAO,EAOZniB,KAAK6a,OAAS,WACb,IAAKxV,UAAU9D,OACd,MAAM,IAAIzB,MAAM,uBAGjB,GAAyB,IAArBuF,UAAU9D,QAAwC,iBAAjB8D,UAAU,GAAiB,CAE/D,IACC,OAAO4V,EAAU5V,UAAU,IAC1B,MAAO5C,GACRN,QAAQC,KAAKK,GAEd,OAAO,EAED,GAAI4C,UAAU9D,QAAU,GAA6B,iBAAjB8D,UAAU,GAAiB,CAErE,IACC,IAAKuV,EAAUvV,UAAU,GAAIA,UAAU,IACtC,OAAO,EAEP,MAAO5C,GAER,OADAN,QAAQC,KAAKK,IACN,EAIR,OAFAzC,KAAKoiB,SACLpiB,KAAKqiB,eACE,EAED,GAAyB,IAArBhd,UAAU9D,QAAwC,iBAAjB8D,UAAU,GAAiB,CAEtE,IAAI/C,EAAO+C,UAAU,GACjBid,GAAU,EACd,IAAK,IAAIC,KAAOjgB,EACf,GAAIA,EAAKiD,eAAegd,GACvB,IACM3H,EAAU2H,EAAKjgB,EAAKigB,MACxBD,GAAU,GAEV,MAAO7f,GACRN,QAAQC,KAAKK,GACb6f,GAAU,EAMb,OAFAtiB,KAAKoiB,SACLpiB,KAAKqiB,cACEC,EAGR,MAAM,IAAIxiB,MAAM,sBAOjBE,KAAKwiB,QAAU,SAAU3c,EAAMnB,GAC9B,GAAoB,iBAATmB,EACV,MAAM,IAAI/F,MAAM,mCAAqC+F,GAGtD,QAAcnE,IAAVgD,EAEH,OAAK1E,KAAKyX,SAASlS,eAAeM,EAAKjE,eAIhC5B,KAAKyX,SAAS5R,EAAKjE,gBAHzBO,QAAQC,KAAK,4BAA8ByD,IACpC,GAMR,IAAI4c,GAAM,EACV,OAAQ5c,EAAKjE,eACZ,IAAK,IAAK6gB,EAAMziB,KAAKoY,SAAS1T,EAAO,KAAM,KAAM,MAAO,MACxD,IAAK,IAAK+d,EAAMziB,KAAKoY,SAAS,KAAM1T,EAAO,KAAM,MAAO,MACxD,IAAK,IAAK+d,EAAMziB,KAAKoY,SAAS,KAAM,KAAM1T,EAAO,MAAO,MACxD,IAAK,IAAK+d,EAAMziB,KAAK0X,SAAShT,EAAO,KAAM,KAAM,MAAO,MACxD,IAAK,IAAK+d,EAAMziB,KAAK0X,SAAS,KAAMhT,EAAO,KAAM,MAAO,MACxD,IAAK,IAAK+d,EAAMziB,KAAK0X,SAAS,KAAM,KAAMhT,EAAO,MAAO,MACxD,IAAK,IAAK+d,EAAMziB,KAAK0X,SAAS,KAAM,KAAM,KAAMhT,GAAQ,MACxD,QAEC,OADAvC,QAAQC,KAAK,4BAA8ByD,IACpC,EAET,QAAI4c,IACHziB,KAAKoiB,UACE,IAcVpiB,KAAK6V,QAAU,SAAUD,GAExB,IADA,IAAI8M,EAAMtiB,EAAI6H,QAAQ2N,GACbtU,EAAI,EAAGA,EAAIohB,EAAInhB,OAAQD,GAAK,EAAG,CACvC,IAAI8F,EAAKsb,EAAIphB,GAAGM,cAGZ+gB,EAAe,KACnB,OAAQvb,GACP,IAAK,QAASub,EAAe,UAAW,MACxC,IAAK,SAAUA,EAAe,WAE3BA,GACHviB,EAAIoV,gBAAgBxV,KAAM2iB,GAI3BviB,EAAIqH,kBAAkBzH,KAAKohB,aAAcha,GAAI,GAAM,KAUrDpH,KAAK0X,SAAW,SAAU/J,EAAGE,EAAGJ,EAAGtD,EAAGyP,GAMrC,QALUlY,IAANiM,IAAmBA,EAAI,WACjBjM,IAANmM,IAAmBA,EAAI,WACjBnM,IAAN+L,IAAmBA,EAAI,WACjB/L,IAANyI,IAAmBA,EAAI,MAEjB,OAANwD,EAAY,CACf,GAAIiV,MAAMjV,GAAM,OAAO,EACvB3N,KAAKyX,SAAS9J,EAAI9D,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,IAAKG,IAE7C,GAAU,OAANE,EAAY,CACf,GAAI+U,MAAM/U,GAAM,OAAO,EACvB7N,KAAKyX,SAAS5J,EAAIhE,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,IAAKxN,KAAK+hB,KAAMlU,GAAI7N,KAAK8hB,MAEjE,GAAU,OAANrU,EAAY,CACf,GAAImV,MAAMnV,GAAM,OAAO,EACvBzN,KAAKyX,SAAShK,EAAI5D,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,IAAKxN,KAAKiiB,KAAMxU,GAAIzN,KAAKgiB,MAEjE,GAAU,OAAN7X,EAAY,CACf,GAAIyY,MAAMzY,GAAM,OAAO,EACvBnK,KAAKyX,SAAStN,EAAInK,KAAK4T,kBACtB/J,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,EAAGxN,KAAKmiB,KAAMhY,GAAInK,KAAKkiB,MAC5C,EAGF,IAAIrB,EAAMzgB,EAAIwN,QACb5N,KAAKyX,SAAS9J,EACd3N,KAAKyX,SAAS5J,EACd7N,KAAKyX,SAAShK,GAOf,OALAzN,KAAKyX,SAAS/N,EAAImX,EAAI,GACtB7gB,KAAKyX,SAAS9N,EAAIkX,EAAI,GACtB7gB,KAAKyX,SAAS7N,EAAIiX,EAAI,GAEtB7gB,KAAKqiB,YAAYzI,IACV,GASR5Z,KAAKoY,SAAW,SAAU1O,EAAGC,EAAGC,EAAGO,EAAGyP,GAMrC,QALUlY,IAANgI,IAAmBA,EAAI,WACjBhI,IAANiI,IAAmBA,EAAI,WACjBjI,IAANkI,IAAmBA,EAAI,WACjBlI,IAANyI,IAAmBA,EAAI,MAEjB,OAANT,EAAY,CACf,GAAIkZ,MAAMlZ,GAAM,OAAO,EACvBA,EAAIG,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,IAAK9D,IAE/B,GAAU,OAANC,EAAY,CACf,GAAIiZ,MAAMjZ,GAAM,OAAO,EACvBA,EAAIE,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,IAAK7D,IAE/B,GAAU,OAANC,EAAY,CACf,GAAIgZ,MAAMhZ,GAAM,OAAO,EACvBA,EAAIC,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,IAAK5D,IAE/B,GAAU,OAANO,EAAY,CACf,GAAIyY,MAAMzY,GAAM,OAAO,EACvBnK,KAAKyX,SAAStN,EAAInK,KAAK4T,kBACtB/J,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,EAAGxN,KAAKmiB,KAAMhY,GAAInK,KAAKkiB,MAC5C,EAGF,IAAIW,EAAMziB,EAAImN,QACT,OAAJ7D,EAAW1J,KAAKyX,SAAS/N,EAAIA,EACzB,OAAJC,EAAW3J,KAAKyX,SAAS9N,EAAIA,EACzB,OAAJC,EAAW5J,KAAKyX,SAAS7N,EAAIA,GAEf,OAAXiZ,EAAI,KACP7iB,KAAKyX,SAAS9J,EAAI9D,KAAK6D,IAAI,EAAG7D,KAAK2D,IAAI,IAAKqV,EAAI,MAElC,IAAXA,EAAI,KACP7iB,KAAKyX,SAAS5J,EAAIhE,KAAK6D,IAAI,EAAG1N,KAAK8hB,KAAMjY,KAAK2D,IAAI,IAAKxN,KAAK+hB,KAAMc,EAAI,MAEvE7iB,KAAKyX,SAAShK,EAAI5D,KAAK6D,IAAI,EAAG1N,KAAKgiB,KAAMnY,KAAK2D,IAAI,IAAKxN,KAAKiiB,KAAMY,EAAI,KAGtE,IAAIhC,EAAMzgB,EAAIwN,QAAQ5N,KAAKyX,SAAS9J,EAAG3N,KAAKyX,SAAS5J,EAAG7N,KAAKyX,SAAShK,GAMtE,OALAzN,KAAKyX,SAAS/N,EAAImX,EAAI,GACtB7gB,KAAKyX,SAAS9N,EAAIkX,EAAI,GACtB7gB,KAAKyX,SAAS7N,EAAIiX,EAAI,GAEtB7gB,KAAKqiB,YAAYzI,IACV,GAMR5Z,KAAK8iB,QAAU,SAAUnV,EAAGE,EAAGJ,EAAGmM,GAEjC,OADAzX,QAAQC,KAAK,4DAA8DhC,EAAIiC,SACxErC,KAAK0X,SAAS/J,EAAGE,EAAGJ,EAAG,KAAMmM,IAMrC5Z,KAAK+iB,QAAU,SAAUrZ,EAAGC,EAAGC,EAAGgQ,GAEjC,OADAzX,QAAQC,KAAK,4DAA8DhC,EAAIiC,SACxErC,KAAKoY,SAAS1O,EAAGC,EAAGC,EAAG,KAAMgQ,IAIrC5Z,KAAKgjB,WAAa,SAAUtgB,EAAKkX,GAChC,IAAK5Z,KAAKyhB,UAA2B,KAAf/e,EAAIH,OAIzB,OAFAvC,KAAKijB,oBAAoB,MACzBjjB,KAAKkjB,qBAAqB,KACnB,EAGR,IAAIhU,EAAQ9O,EAAI4N,iBAAiBtL,GACjC,QAAKwM,IAG6B,QAA9BlP,KAAKmO,OAAOvM,gBACf5B,KAAKgY,WAAW9I,EAAMf,QACjB/N,EAAIgP,cAAcpP,KAAKiY,eAC3B/I,EAAMhB,KAAK,GAAK,IAGlBlO,KAAKoY,SACJlJ,EAAMhB,KAAK,GACXgB,EAAMhB,KAAK,GACXgB,EAAMhB,KAAK,GACXgB,EAAMhB,KAAK,GACX0L,IAEM,IAIR5Z,KAAK+J,SAAW,SAAUoE,GAIzB,YAHezM,IAAXyM,IACHA,EAASnO,KAAKiY,aAEP9J,EAAOvM,eACd,IAAK,MAAO,OAAO5B,KAAK8gB,cACxB,IAAK,OAAQ,OAAO9gB,KAAKmjB,eACzB,IAAK,MAAO,OAAOnjB,KAAKojB,cACxB,IAAK,OAAQ,OAAOpjB,KAAKqjB,eAE1B,OAAO,GAIRrjB,KAAK8gB,YAAc,WAClB,OAAO1gB,EAAIqJ,SACVzJ,KAAKyX,SAAS/N,EACd1J,KAAKyX,SAAS9N,EACd3J,KAAKyX,SAAS7N,IAKhB5J,KAAKmjB,aAAe,WACnB,OAAO/iB,EAAI8J,UACVlK,KAAKyX,SAAS/N,EACd1J,KAAKyX,SAAS9N,EACd3J,KAAKyX,SAAS7N,EACd5J,KAAKyX,SAAStN,IAKhBnK,KAAKojB,YAAc,WAClB,OAAOhjB,EAAIgK,SACVpK,KAAKyX,SAAS/N,EACd1J,KAAKyX,SAAS9N,EACd3J,KAAKyX,SAAS7N,IAKhB5J,KAAKqjB,aAAe,WACnB,OAAOjjB,EAAIiK,UACVrK,KAAKyX,SAAS/N,EACd1J,KAAKyX,SAAS9N,EACd3J,KAAKyX,SAAS7N,EACd5J,KAAKyX,SAAStN,IAKhBnK,KAAKsjB,YAAc,WAClB,MACC,KAAQtjB,KAAKyX,SAAS/N,EACtB,KAAQ1J,KAAKyX,SAAS9N,EACtB,KAAQ3J,KAAKyX,SAAS7N,GAKxB5J,KAAKujB,SAAW,WACf,OAAOnjB,EAAIyP,sBAAsB7P,KAAKqjB,gBAAgB/T,QAIvDtP,KAAKsf,UAAY,WAChB,OAAOtf,KAAKujB,WAAWjE,aAIxBtf,KAAKwjB,aAAe,WACnB,OAAOpjB,EAAIO,IAAIiK,WAAW5K,KAAKqjB,iBAIhCrjB,KAAKyjB,QAAU,WACd,OAAOzjB,KAAKsjB,cAAgB,OAI7BtjB,KAAKsY,KAAO,WACP0I,MAmVJ5gB,EAAIsI,YAAYiS,EAAKxX,cAAe/C,EAAIO,IAAI2f,iBAC5ClgB,EAAIwR,OAAOsB,KAAKuN,WAAWrc,YAAYhE,EAAIwR,OAAOsB,aAC3C9S,EAAIwR,OAAOC,QA/UnB7R,KAAK2W,KAAO,WACXwE,KAIDnb,KAAKoiB,OAAS,WACTpB,KACH7F,KAKFnb,KAAKiY,UAAY,WAChB,OAAOjY,KAAK0jB,gBAIb1jB,KAAKgY,WAAa,SAAU7J,GAC3BnO,KAAK0jB,eAAiBvV,EAAOvM,eAI9B5B,KAAK4T,gBAAkB,WACtB,MAA0B,SAAtB5T,KAAKka,aAEuB,QAA9Bla,KAAKmO,OAAOvM,eACZxB,EAAIgP,cAAcpP,KAAKiY,mBACRvW,IAAf1B,KAAKihB,YACiBvf,IAAtB1B,KAAKqhB,aAIArhB,KAAKka,cAIbla,KAAK2jB,kBAAoB,SAAUjhB,GAC7B1C,KAAKgjB,WAAWtgB,IAEpB1C,KAAKqiB,eAKPriB,KAAK4jB,kBAAoB,SAAUlhB,GAC7B1C,KAAK0X,SAAS,KAAM,KAAM,KAAM9I,WAAWlM,KAE/C1C,KAAKqiB,eAKPriB,KAAKqiB,YAAc,SAAUzI,GAC5B,IAAIiK,EAAW7jB,KAAK+J,WAChB6O,EAAM5Y,KAAKiY,YAaf,GAVA7X,EAAI4F,YAAYhG,KAAKmD,cAAe,gBAAiB0gB,GAE/CjK,EAAQxZ,EAAIwZ,MAAMC,aAAe7Z,KAAKohB,eAC/B,QAARxI,GAAyB,SAARA,IACf5Y,KAAK2hB,YAAakC,EAAWA,EAASjiB,eACtC5B,KAAK0hB,OAAQmC,EAAWA,EAAS3b,QAAQ,KAAM,MAErDlI,KAAKkjB,qBAAqBW,MAGrBjK,EAAQxZ,EAAIwZ,MAAME,aAAe9Z,KAAKqhB,aAAc,CACzD,IAAIyC,EAAWja,KAAKC,MAAwB,IAAlB9J,KAAKyX,SAAStN,GAAW,IACnDnK,KAAK+jB,qBAAqBD,GAGrBlK,EAAQxZ,EAAIwZ,MAAMG,eAAiB/Z,KAAKshB,kBAI5ClhB,EAAIiE,YAAYrE,KAAKshB,iBACpBlhB,EAAIkE,SAAStE,KAAKshB,kBAAoBlhB,EAAIqE,cAAczE,KAAKshB,kBAEjDthB,KAAKia,gBAGnBja,KAAKijB,oBAAoBjjB,KAAKqjB,iBAG3BrC,MACHb,IACAC,IACAC,MAKFrgB,KAAKijB,oBAAsB,SAAU/T,GACpC,GAAKlP,KAAKshB,eAAV,CAIA,IAAI/P,EAAW,KACX9B,EAAQ,MAEXrP,EAAIiE,YAAYrE,KAAKshB,iBACpBlhB,EAAIkE,SAAStE,KAAKshB,kBAAoBlhB,EAAIqE,cAAczE,KAAKshB,mBAE9D/P,EAAWvR,KAAKia,gBAChBxK,EAAQzP,KAAKuhB,aAGd,IAAIyC,EAAc,GAElB,GAAK9U,EASE,CAEN8U,EAAY5gB,KAAK,CAChB6gB,MAAO7jB,EAAIkR,wBACVpC,EACAqC,EACA9B,EAAQA,EAAQrP,EAAIO,IAAIuP,iBAAiB3O,OAAS,MAEnDgQ,SAAU,WACV2S,KAAM,OACNC,OAAQ5S,EAAW,WAAa,SAChC6S,OAAQ,gBAIT,IAAIC,EAAUjkB,EAAIyP,sBACjB,gBACA0B,EAAW,CAAC3F,KAAO,QAAS6F,MAAQ,QAAQF,GAAY,KACxD9B,GACA,GAEDuU,EAAY5gB,KAAK,CAChB6gB,MAAO,QAAWI,EAAQ/U,OAAOgQ,YAAc,KAC/C/N,UAAWA,GAAY,QAAU,OACjC2S,KAAMG,EAAQ5U,MAAQ,MAAQ4U,EAAQ3U,OAAS,KAC/CyU,OAAQ5S,EAAW,WAAa,SAChC6S,OAAQ,qBAjCTJ,EAAY5gB,KAAK,CAChB6gB,MAAO,OACP1S,SAAU,WACV2S,KAAM,OACNC,OAAQ,YACRC,OAAQ,gBAuCV,IAPA,IAAIE,EAAK,CACRL,MAAO,GACP1S,SAAU,GACV2S,KAAM,GACNC,OAAQ,GACRC,OAAQ,IAEA9iB,EAAI,EAAGA,EAAI0iB,EAAYziB,OAAQD,GAAK,EAC5CgjB,EAAGL,MAAM7gB,KAAK4gB,EAAY1iB,GAAG2iB,OAC7BK,EAAG/S,SAASnO,KAAK4gB,EAAY1iB,GAAGiQ,UAChC+S,EAAGJ,KAAK9gB,KAAK4gB,EAAY1iB,GAAG4iB,MAC5BI,EAAGH,OAAO/gB,KAAK4gB,EAAY1iB,GAAG6iB,QAC9BG,EAAGF,OAAOhhB,KAAK4gB,EAAY1iB,GAAG8iB,QAI/B,IAAIG,EAAM,CACTC,mBAAoBF,EAAGL,MAAMjZ,KAAK,MAClCyZ,sBAAuBH,EAAG/S,SAASvG,KAAK,MACxC0Z,kBAAmBJ,EAAGJ,KAAKlZ,KAAK,MAChC2Z,oBAAqBL,EAAGH,OAAOnZ,KAAK,MACpC4Z,oBAAqBN,EAAGF,OAAOpZ,KAAK,OAErC5K,EAAI4I,SAAShJ,KAAKshB,eAAgBiD,EAAKvkB,KAAK4hB,YAI5C,IAAI7N,EAAU,CACbnI,KAAM,KACN6F,MAAO,MAEJF,IACHwC,EAAQxC,GAAavR,KAAKuhB,YAAcvhB,KAAKwhB,eAAkB,MAG5D+C,EAAM,CACTM,eAAgB9Q,EAAQnI,KACxBkZ,gBAAiB/Q,EAAQtC,OAE1BrR,EAAI4I,SAAShJ,KAAKshB,eAAgBiD,EAAKvkB,KAAK4hB,YAAY,KAIzD5hB,KAAKkjB,qBAAuB,SAAUxgB,GACjC1C,KAAKohB,eACgC,UAApChhB,EAAI6D,SAASjE,KAAKohB,cACrBphB,KAAKohB,aAAa1c,MAAQhC,EAE1B1C,KAAKohB,aAAatC,UAAYpc,IAMjC1C,KAAK+jB,qBAAuB,SAAUrhB,GACjC1C,KAAKqhB,eACgC,UAApCjhB,EAAI6D,SAASjE,KAAKqhB,cACrBrhB,KAAKqhB,aAAa3c,MAAQhC,EAE1B1C,KAAKqhB,aAAavC,UAAYpc,IAMjC1C,KAAKob,4BAA8B,WAClC,IAAIpb,KAAK+kB,yBAAT,CACA/kB,KAAK+kB,0BAA2B,EAEhC,IAAI5kB,EAAMH,KAAKmD,cACf,EAAG,CAGF,IAAI6hB,EAAY5kB,EAAIyI,aAAa1I,GAC7B6kB,EAAUzT,UAAiD,UAArCyT,EAAUzT,SAAS3P,gBAC5C5B,KAAKiS,OAAQ,GAGV9R,IAAQH,KAAKmD,gBAMX/C,EAAIuF,QAAQxF,EAAK,uBACrBA,EAAIO,iBAAiB,SAAUN,EAAImW,gBAAgB,GACnDnW,EAAIqD,QAAQtD,EAAK,qBAAqB,YAG/BA,EAAMA,EAAIsgB,aAAqC,SAAtBrgB,EAAI6D,SAAS9D,MAIjDH,KAAKoW,QAAU,WACVpW,KAAK6hB,aACR7hB,KAAKsY,QAKPtY,KAAKilB,aAAe,SAAUnhB,GAC7B9D,KAAKyU,QAAU3Q,EACf9D,KAAK+U,SAAW3U,EAAIyO,kBAAkB/K,GACtC9D,KAAKmY,wBAA0B/X,EAAI+O,wBAAwBnP,KAAK+U,WAuqB7D3U,EAAIO,IAAIukB,QAEX,IAAK,IAAI3C,KAAOniB,EAAIO,IAAIukB,QACvB,GAAI9kB,EAAIO,IAAIukB,QAAQ3f,eAAegd,GAClC,IACC3H,EAAU2H,EAAKniB,EAAIO,IAAIukB,QAAQ3C,IAC9B,MAAO9f,GACRN,QAAQC,KAAKK,GASjB,IAAI0iB,EAAa,GAEb7iB,EAAK8iB,SACmB,iBAAhB9iB,EAAK8iB,OACfD,EAAa7iB,EAAK8iB,OAAOjd,MAAM,OACrB2C,MAAMkE,QAAQ1M,EAAK8iB,QAC7BD,EAAa7iB,EAAK8iB,OAAOC,QAEzBljB,QAAQC,KAAK,+BAKwB,IAAnC+iB,EAAW3gB,QAAQ,YACtB2gB,EAAW/hB,KAAK,WAKjB,IAAK,IAAI9B,EAAI6jB,EAAW5jB,OAAS,EAAGD,GAAK,EAAGA,GAAK,EAAG,CACnD,IAAIgkB,EAAOH,EAAW7jB,GACtB,GAAKgkB,EAGL,GAAKllB,EAAIO,IAAI4kB,QAAQhgB,eAAe+f,IAIpC,IAAK,IAAI/C,KAAOniB,EAAIO,IAAI4kB,QAAQD,GAC/B,GAAIllB,EAAIO,IAAI4kB,QAAQD,GAAM/f,eAAegd,GACxC,IACC3H,EAAU2H,EAAKniB,EAAIO,IAAI4kB,QAAQD,GAAM/C,IACpC,MAAO9f,GACRN,QAAQC,KAAKK,SARfN,QAAQC,KAAK,qBAAsBkjB,GAgBrC,IAAIE,EAAgB,CAEnB,UAED,IAAK,IAAIjD,KAAOjgB,EACf,GAAIA,EAAKiD,eAAegd,KACa,IAAhCiD,EAAchhB,QAAQ+d,GACzB,IACC3H,EAAU2H,EAAKjgB,EAAKigB,IACnB,MAAO9f,GACRN,QAAQC,KAAKK,GAoBjB,QAPuBf,IAAnB1B,KAAKugB,UACRvgB,KAAKugB,UAAYxgB,EAAOH,SAAS4gB,KAGjCxgB,KAAKugB,UAAYngB,EAAIY,KAAKhB,KAAKugB,YAG3BvgB,KAAKugB,UACT,MAAM,IAAIzgB,MAAM,+DAOjB,GAFAE,KAAKmD,cAAgB/C,EAAIY,KAAKmC,IAEzBnD,KAAKmD,cAAe,CAExB,GAA6B,iBAAlBA,GAA8B,qBAAqBsiB,KAAKtiB,GAGlE,MAAM,IAAIrD,MAAM,OADCqD,EACsB,2CADtBA,EACkF,gCAGpG,MAAM,IAAIrD,MAAM,4DAGjB,GAAIE,KAAKmD,cAAc9C,SAAWL,KAAKmD,cAAc9C,mBAAmBD,EAAIO,IAC3E,MAAM,IAAIb,MAAM,kDAajB,GARAE,KAAKmD,cAAc9C,QAAUL,KAC7BI,EAAImI,SAASvI,KAAKmD,cAAe/C,EAAIO,IAAIoB,WAGzC3B,EAAIG,UAAU6C,KAAKpD,MAIfI,EAAIkE,SAAStE,KAAKmD,iBAEyB,WAA1CnD,KAAKmD,cAAcxB,KAAKC,gBAG3B5B,KAAKmD,cAAcxB,KAAO,UAGvBvB,EAAIqE,cAAczE,KAAKmD,gBAAgB,CAK1C/C,EAAI8D,eAAelE,KAAKmD,eAGxBnD,KAAKmD,cAAc+Z,YAAYnd,EAAOH,SAASqgB,eAAe,MAG9D,IAAI+E,EAAY5kB,EAAIyI,aAAa7I,KAAKmD,gBACnByL,WAAWoW,EAAU,eAAiB,GACtChlB,KAAKuhB,aACvBnhB,EAAI4I,SAAShJ,KAAKmD,cAAe,CAChCuiB,YAAa1lB,KAAKuhB,YAAc,MAC9BvhB,KAAK4hB,YAsCX,QAhC0BlgB,IAAtB1B,KAAKohB,aACJhhB,EAAIiE,YAAYrE,KAAKmD,iBAExBnD,KAAKohB,aAAephB,KAAKmD,eAKM,OAAtBnD,KAAKohB,eAIfphB,KAAKohB,aAAehhB,EAAIY,KAAKhB,KAAKohB,eAI/BphB,KAAKqhB,eACRrhB,KAAKqhB,aAAejhB,EAAIY,KAAKhB,KAAKqhB,oBAIP3f,IAAxB1B,KAAKshB,eACRthB,KAAKshB,eAAiBthB,KAAKmD,cAEO,OAAxBnD,KAAKshB,iBAIfthB,KAAKshB,eAAiBlhB,EAAIY,KAAKhB,KAAKshB,iBAIjCthB,KAAKohB,cAAgBhhB,EAAIiE,YAAYrE,KAAKohB,cAAe,CAI5D,IAAIuE,EAAyB,CAC5BxE,QAASnhB,KAAKohB,aAAawE,SAE5B5lB,KAAKohB,aAAawE,QAAU,KAE5B5lB,KAAKohB,aAAa1gB,iBAAiB,WA3RpC,SAAyB0G,GACC,UAArBhH,EAAIsH,SAASN,KACZuT,EAAKyG,cACRzG,EAAKgJ,kBAAkBhJ,EAAKyG,aAAa1c,OAE1CiW,EAAKvE,cAsRwD,GAC9DpW,KAAKohB,aAAa1gB,iBAAiB,UAxQpC,SAAwB0G,GACvB,IAAIhH,EAAIuF,QAAQyB,EAAI,YAApB,CAIA,IAAIye,EAASlL,EAAKyG,aAAa1c,MAE/BiW,EAAKgJ,kBAAkBhJ,EAAKyG,aAAa1c,OAEzCtE,EAAIoV,gBAAgBmF,EAAM,YAEtBA,EAAKyG,aAAa1c,QAAUmhB,GAE/BzlB,EAAIqH,kBAAkBkT,EAAKyG,aAAc,UAAU,GAAM,OA2PE,GAC5DphB,KAAKohB,aAAa1gB,iBAAiB,SAlOpC,SAAuB0G,GAClBhH,EAAIuF,QAAQyB,EAAI,cAIhBuT,EAAKyG,cACRzG,EAAKqI,WAAWrI,EAAKyG,aAAa1c,MAAOtE,EAAIwZ,MAAMC,YAGpDzZ,EAAIoV,gBAAgBmF,EAAM,eAyNgC,GAEtDgL,EAAuBxE,SAC1BnhB,KAAKohB,aAAa1gB,iBAAiB,QAASilB,EAAuBxE,SAAS,GAG7EnhB,KAAKohB,aAAalc,aAAa,eAAgB,OAC/ClF,KAAKohB,aAAalc,aAAa,cAAe,OAC9ClF,KAAKohB,aAAalc,aAAa,iBAAkB,OACjDlF,KAAKohB,aAAalc,aAAa,cAAc,GAI1ClF,KAAKqhB,cAAgBjhB,EAAIiE,YAAYrE,KAAKqhB,gBAC7CrhB,KAAKqhB,aAAa3gB,iBAAiB,WAjSpC,SAAyB0G,GACC,UAArBhH,EAAIsH,SAASN,KACZuT,EAAK0G,cACR1G,EAAKiJ,kBAAkBjJ,EAAK0G,aAAa3c,OAE1CiW,EAAKvE,cA4RwD,GAC9DpW,KAAKqhB,aAAa3gB,iBAAiB,UAtQpC,SAAwB0G,GACvB,IAAIhH,EAAIuF,QAAQyB,EAAI,YAApB,CAIA,IAAIye,EAASlL,EAAK0G,aAAa3c,MAE/BiW,EAAKiJ,kBAAkBjJ,EAAK0G,aAAa3c,OAEzCtE,EAAIoV,gBAAgBmF,EAAM,YAG1Bva,EAAIqH,kBAAkBkT,EAAKyG,aAAc,UAAU,GAAM,GAErDzG,EAAK0G,aAAa3c,QAAUmhB,GAE/BzlB,EAAIqH,kBAAkBkT,EAAK0G,aAAc,UAAU,GAAM,OAsPE,GAC5DrhB,KAAKqhB,aAAa3gB,iBAAiB,SAlOpC,SAAuB0G,GAClBhH,EAAIuF,QAAQyB,EAAI,cAIhBuT,EAAK0G,cACR1G,EAAKjD,SAAS,KAAM,KAAM,KAAM9I,WAAW+L,EAAK0G,aAAa3c,OAAQtE,EAAIwZ,MAAME,YAGhF1Z,EAAIoV,gBAAgBmF,EAAM,WAG1Bva,EAAIqH,kBAAkBkT,EAAKyG,aAAc,SAAS,GAAM,OAsNE,GAE1DphB,KAAKqhB,aAAanc,aAAa,eAAgB,OAC/ClF,KAAKqhB,aAAanc,aAAa,cAAe,OAC9ClF,KAAKqhB,aAAanc,aAAa,iBAAkB,OACjDlF,KAAKqhB,aAAanc,aAAa,cAAc,IAK9C,IAAI4gB,EAAY,cAEGpkB,IAAf1B,KAAK0E,MACRohB,EAAY9lB,KAAK0E,MACP1E,KAAKohB,mBAA4C1f,IAA5B1B,KAAKohB,aAAa1c,QACjDohB,EAAY9lB,KAAKohB,aAAa1c,OAK/B,IAAIqhB,OAAYrkB,EAYhB,QAVmBA,IAAf1B,KAAKihB,MACR8E,EAAa,GAAG/lB,KAAKihB,MACXjhB,KAAKqhB,mBAA4C3f,IAA5B1B,KAAKqhB,aAAa3c,QACjDqhB,EAAY/lB,KAAKqhB,aAAa3c,OAK/B1E,KAAK0jB,eAAiB,KAElB,CAAC,OAAQ,OAAOlf,QAAQxE,KAAKmO,OAAOvM,gBAAkB,EAAG,CAE5D,IAAIsN,EAAQ9O,EAAI4N,iBAAiB8X,GACjC9lB,KAAK0jB,eAAiBxU,EAAQA,EAAMf,OAAS,WAG7CnO,KAAK0jB,eAAiB1jB,KAAKmO,OAAOvM,cAKnC5B,KAAK2jB,kBAAkBmC,QAOLpkB,IAAdqkB,GACH/lB,KAAK4jB,kBAAkBmC,MAkBtBplB,IAAIoB,UAAY,UAIpB3B,EAAIO,IAAI2f,gBAAkB,iBAK1BlgB,EAAIO,IAAImC,WAAY,EAIpB1C,EAAIO,IAAI4kB,QAAU,GAGlBnlB,EAAIO,IAAI4kB,QAAiB,QAAI,GAE7BnlB,EAAIO,IAAI4kB,QAAe,MAAI,CAC1BpH,gBAAiB,sBACjBE,mBAAoB,sBACpBuB,YAAa,iBAEdxf,EAAIO,IAAI4kB,QAAc,KAAI,CACzBpH,gBAAiB,mBACjBE,mBAAoB,sBACpBuB,YAAa,uBAGdxf,EAAIO,IAAI4kB,QAAe,MAAI,CAAE9V,MAAM,IAAKC,OAAO,IAAKqE,QAAQ,GAAIL,WAAW,GAAIsB,YAAY,GAC3F5U,EAAIO,IAAI4kB,QAAgB,OAAI,CAAE9V,MAAM,IAAKC,OAAO,IAAKqE,QAAQ,GAAIL,WAAW,GAAIsB,YAAY,IAC5F5U,EAAIO,IAAI4kB,QAAe,MAAI,CAAE9V,MAAM,IAAKC,OAAO,IAAKqE,QAAQ,GAAIL,WAAW,GAAIsB,YAAY,IAE3F5U,EAAIO,IAAI4kB,QAAc,KAAI,CAAE/Q,YAAY,EAAGjB,mBAAmB,EAAG6B,mBAAmB,GACpFhV,EAAIO,IAAI4kB,QAAe,MAAI,CAAE/Q,YAAY,EAAGjB,mBAAmB,EAAG6B,mBAAmB,GAIrFhV,EAAIO,IAAIke,iBAAmB,EAG3Bze,EAAIO,IAAIyP,eAAiB,EACzBhQ,EAAIO,IAAI2P,iBAAmB,UAC3BlQ,EAAIO,IAAI6P,iBAAmB,UAG3BpQ,EAAIO,IAAIuP,iBAAmB,CAAC,wBAAyB,yBAIrD9P,EAAIO,IAAIC,KAAO,WACd,IAAIR,EAAIE,YAgBR,IAXAP,EAAOH,SAASc,iBAAiB,YAAaN,EAAIoW,qBAAqB,GACvEzW,EAAOH,SAASc,iBAAiB,QAASN,EAAI+V,iBAAiB,GAC/DpW,EAAOW,iBAAiB,SAAUN,EAAIiW,gBAAgB,GACtDtW,EAAOW,iBAAiB,SAAUN,EAAIkW,gBAAgB,GAGtDlW,EAAIO,IAAIqlB,UAER5lB,EAAIE,aAAc,EAGXF,EAAII,WAAWe,QACVnB,EAAII,WAAWylB,OAC1B5f,IAMFjG,EAAIO,IAAIqlB,QAAU,SAAUjlB,GAC3B,IAAIuhB,GAAU,EAEd,IACCliB,EAAIS,kBAAkB,iBAAkBE,GACvC,MAAO0B,GACR6f,GAAU,EACVngB,QAAQC,KAAKK,GAId,GAAIrC,EAAIO,IAAIU,YACX,IACCjB,EAAIS,kBAEF,SAAWT,EAAIO,IAAIU,YAAnB,YACYjB,EAAIO,IAAIU,YAErBN,GAEA,MAAO0B,IAGV,OAAO6f,GAMRliB,EAAIO,IAAIulB,MAAQ,SAAU7f,GACzB,MAAoB,mBAATA,GACVlE,QAAQC,KAAK,mCACN,IAGJhC,EAAIE,YACP+F,IAEAjG,EAAII,WAAW4C,KAAKiD,IAEd,IASRjG,EAAIO,IAAIkV,QAAU,SAAUD,GAC3B,IAAIuQ,EAAa,WAChB/lB,EAAIuV,cAAcC,IAGfxV,EAAIE,YACP6lB,IAEA/lB,EAAIO,IAAIulB,MAAMC,IAMhB/lB,EAAIO,IAAI2X,KAAO,WACVlY,EAAIwR,QAAUxR,EAAIwR,OAAOC,OAC5BzR,EAAIwR,OAAOC,MAAMyG,QAMnBlY,EAAIO,IAAIoe,WAAa,SAAU7P,GAK9B,OAJKA,IACJA,EAAQ,iBAEK9O,EAAIyP,sBAAsBX,GACzBI,OAAOgQ,aAKvBlf,EAAIO,IAAIiK,WAAa,SAAUsE,GAC9B,IAAI8U,EAAc,GAGlBA,EAAY5gB,KAAKhD,EAAIkR,wBAAwBpC,IAG7C,IAAImV,EAAUjkB,EAAIyP,wBAOlB,OANAmU,EAAY5gB,KAAK,CAChB,QAAWihB,EAAQ/U,OAAOgQ,YAAc,KACxC,WACA,UACCtU,KAAK,MAEAgZ,EAAYhZ,KAAK,OAYzB5K,EAAIO,IAAIukB,QAAU,GAUlB9kB,EAAIO,IAAIU,YAAc,UAMtBjB,EAAIO,IAAIylB,mBAAqB,WAE5B,OADAjkB,QAAQuT,MAAM,qGAAuGtV,EAAIiC,UAClH,GAIRjC,EAAIK,WAGGL,EAAIO,KAaX,YAP8B,IAAnBZ,EAAOM,UACjBN,EAAOM,QAAUN,EAAOsmB,QAAUhmB,GAM5BA,OAUOimB,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB9kB,IAAjB+kB,EACH,OAAOA,EAAa9mB,QAGrB,IAAIH,EAAS8mB,EAAyBE,GAAY,CAGjD7mB,QAAS,IAOV,OAHAL,EAAoBknB,GAAUvb,KAAKzL,EAAOG,QAASH,EAAQA,EAAOG,QAAS4mB,GAGpE/mB,EAAOG,QAOd4mB,EAAoBhiB,EAAK/E,IACxB,IAAI0b,EAAS1b,GAAUA,EAAOknB,WAC7B,IAAOlnB,EAAiB,QACxB,IAAM,EAEP,OADA+mB,EAAoBI,EAAEzL,EAAQ,CAAE/Q,EAAG+Q,IAC5BA,GAORqL,EAAoBI,EAAI,CAAChnB,EAASinB,KACjC,IAAI,IAAIC,KAAOD,EACXL,EAAoBO,EAAEF,EAAYC,KAASN,EAAoBO,EAAEnnB,EAASknB,IAC5E/hB,OAAOC,eAAepF,EAASknB,EAAK,CAAEE,YAAY,EAAM/hB,IAAK4hB,EAAWC,MAQ3EN,EAAoBO,EAAI,CAAC1hB,EAAKI,IAAUV,OAAOiG,UAAUxF,eAAe0F,KAAK7F,EAAKI,GAM7F,MACA,aA4CA,IAAIwhB,EAAY,GAUhB,SAASC,IACHD,EAAUE,iBAAmBC,KAAKC,YACpC1U,EAAE,8BAA8BnJ,MAAMqV,QAAU,GAChDlM,EAAE,4BAA4BnJ,MAAMqV,QAAU,KAE9ClM,EAAE,8BAA8BnJ,MAAMqV,QAAU,OAChDlM,EAAE,4BAA4BnJ,MAAMqV,QAAU,QAQlD,MAAMyI,EAAS,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAGhDC,EAAa,CACjB,GACA,GACA,IACA,IACA,KACA,QACA,QACA,OACA,OACA,MACA,MACA,MACA,QACA,SACA,SACA,cACA,UACA,SACA,YACA,UACA,WACA,SACA,WACA,YACA,YACA,kBAIIC,EAAwB,CAC5B,GACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,OAIF,IAAIC,EAEAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAcAC,EAjCAC,EAAqB,GAErBC,EAAwB,GACxBC,EAAuB,GAOvBC,EAAkB,GAalBC,EAAyBC,KAAKC,MAI9BC,EAAyBF,KAAKC,MAWlC,MAAME,EAAgB,SAChBC,EAAgB,SAMhBC,EAAa,OACbC,EAAc,QACdC,EAAe,SACfC,EAAe,SACfC,EAAY,MACZC,EAAe,SACfC,EAAa,OACbC,EAAa,OA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","file":"./CookieMonster.js","sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 59d911ed..13a7f4ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,21 +25,24 @@ }, "node_modules/@babel/code-frame": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.12.11", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true }, "node_modules/@babel/highlight": { "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", @@ -48,8 +51,9 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -59,8 +63,9 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -72,29 +77,33 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -104,20 +113,23 @@ }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@eastdesire/jscolor": { "version": "2.4.5", - "license": "GPL-3.0-or-later" + "resolved": "https://registry.npmjs.org/@eastdesire/jscolor/-/jscolor-2.4.5.tgz", + "integrity": "sha512-LDCEGN7qKKO3tq6yYtx6cbz/tQlr9LqKNSFaG2GIIn03y67ot3doucpDGoQjCwXG2xUB4pDXRuH2lobjjxhtJA==" }, "node_modules/@eslint/eslintrc": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -135,8 +147,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.8.1" }, @@ -149,16 +162,18 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/@types/eslint": { - "version": "7.2.7", + "version": "7.2.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.8.tgz", + "integrity": "sha512-RTKvBsfz0T8CKOGZMfuluDNyMFHnu5lvNr4hWEsQeHXH6FcmIDIozOyWMh36nLGMwVd5UFNXC2xztA8lln22MQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -166,8 +181,9 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -175,28 +191,33 @@ }, "node_modules/@types/estree": { "version": "0.0.46", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true }, "node_modules/@types/node": { - "version": "14.14.35", - "dev": true, - "license": "MIT" + "version": "14.14.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", + "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", + "dev": true }, "node_modules/@webassemblyjs/ast": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.0", "@webassemblyjs/helper-wasm-bytecode": "1.11.0" @@ -204,23 +225,27 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.0", "@webassemblyjs/helper-api-error": "1.11.0", @@ -229,13 +254,15 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-buffer": "1.11.0", @@ -245,29 +272,33 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", "dev": true, - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-buffer": "1.11.0", @@ -281,8 +312,9 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-wasm-bytecode": "1.11.0", @@ -293,8 +325,9 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-buffer": "1.11.0", @@ -304,8 +337,9 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-api-error": "1.11.0", @@ -317,26 +351,29 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz", + "integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==", "dev": true, - "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.2.2", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.3.tgz", + "integrity": "sha512-lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==", "dev": true, - "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -345,9 +382,10 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.3.0", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz", + "integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==", "dev": true, - "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -359,18 +397,21 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "node_modules/acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -380,16 +421,18 @@ }, "node_modules/acorn-jsx": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -403,32 +446,36 @@ }, "node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -441,16 +488,18 @@ }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/array-includes": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -467,8 +516,9 @@ }, "node_modules/array.prototype.flat": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -483,21 +533,24 @@ }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/balanced-match": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -505,8 +558,9 @@ }, "node_modules/browserslist": { "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", @@ -527,13 +581,15 @@ }, "node_modules/buffer-from": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true }, "node_modules/call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -544,21 +600,24 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001202", - "dev": true, - "license": "CC-BY-4.0" + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "dev": true }, "node_modules/chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -572,8 +631,9 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^1.9.0" }, @@ -583,8 +643,9 @@ }, "node_modules/clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -596,8 +657,9 @@ }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -607,41 +669,48 @@ }, "node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colorette": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true }, "node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/confusing-browser-globals": { "version": "1.0.10", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", + "dev": true }, "node_modules/contains-path": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -653,8 +722,9 @@ }, "node_modules/debug": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -669,13 +739,15 @@ }, "node_modules/deep-is": { "version": "0.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true }, "node_modules/define-properties": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, - "license": "MIT", "dependencies": { "object-keys": "^1.0.12" }, @@ -685,8 +757,9 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -695,19 +768,22 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.690", - "dev": true, - "license": "ISC" + "version": "1.3.707", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz", + "integrity": "sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/enhanced-resolve": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -718,8 +794,9 @@ }, "node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -729,8 +806,9 @@ }, "node_modules/envinfo": { "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -740,16 +818,18 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -777,13 +857,15 @@ }, "node_modules/es-module-lexer": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "dev": true }, "node_modules/es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -798,24 +880,27 @@ }, "node_modules/escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "7.22.0", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.23.0.tgz", + "integrity": "sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.0", @@ -867,8 +952,9 @@ }, "node_modules/eslint-config-airbnb-base": { "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", "dev": true, - "license": "MIT", "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", @@ -884,8 +970,9 @@ }, "node_modules/eslint-config-prettier": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", + "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", "dev": true, - "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -895,8 +982,9 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^2.6.9", "resolve": "^1.13.1" @@ -904,21 +992,24 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/eslint-import-resolver-node/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "node_modules/eslint-module-utils": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^2.6.9", "pkg-dir": "^2.0.0" @@ -929,21 +1020,24 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/eslint-module-utils/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "node_modules/eslint-plugin-import": { "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.1", "array.prototype.flat": "^1.2.3", @@ -968,14 +1062,17 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "dependencies": { "esutils": "^2.0.2", @@ -987,13 +1084,15 @@ }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "node_modules/eslint-plugin-prettier": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", + "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", "dev": true, - "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -1012,8 +1111,9 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1024,8 +1124,9 @@ }, "node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -1038,24 +1139,27 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-visitor-keys": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -1067,16 +1171,18 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1087,8 +1193,9 @@ }, "node_modules/esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -1098,16 +1205,18 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1117,40 +1226,45 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -1171,33 +1285,39 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-diff": { "version": "1.2.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "node_modules/fastest-levenshtein": { "version": "1.0.12", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -1207,8 +1327,9 @@ }, "node_modules/find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -1218,8 +1339,9 @@ }, "node_modules/flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -1230,28 +1352,33 @@ }, "node_modules/flatted": { "version": "3.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "node_modules/function-bind": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, "node_modules/get-intrinsic": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -1263,8 +1390,9 @@ }, "node_modules/get-stream": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -1274,8 +1402,9 @@ }, "node_modules/glob": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1293,8 +1422,9 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1304,13 +1434,15 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "node_modules/globals": { - "version": "13.6.0", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1323,13 +1455,15 @@ }, "node_modules/graceful-fs": { "version": "4.2.6", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true }, "node_modules/has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -1339,24 +1473,27 @@ }, "node_modules/has-bigints": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-symbols": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1366,29 +1503,33 @@ }, "node_modules/hosted-git-info": { "version": "2.8.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true }, "node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1402,8 +1543,9 @@ }, "node_modules/import-local": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -1417,8 +1559,9 @@ }, "node_modules/import-local/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -1429,8 +1572,9 @@ }, "node_modules/import-local/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -1440,8 +1584,9 @@ }, "node_modules/import-local/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -1454,8 +1599,9 @@ }, "node_modules/import-local/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -1465,24 +1611,27 @@ }, "node_modules/import-local/node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/import-local/node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/import-local/node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -1492,16 +1641,18 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1509,34 +1660,39 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/interpret": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-arrayish": { "version": "0.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "node_modules/is-bigint": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0" }, @@ -1549,8 +1705,9 @@ }, "node_modules/is-callable": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1560,8 +1717,9 @@ }, "node_modules/is-core-module": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, - "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -1571,8 +1729,9 @@ }, "node_modules/is-date-object": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1582,24 +1741,27 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1609,8 +1771,9 @@ }, "node_modules/is-negative-zero": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1620,8 +1783,9 @@ }, "node_modules/is-number-object": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1631,8 +1795,9 @@ }, "node_modules/is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -1642,8 +1807,9 @@ }, "node_modules/is-regex": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-symbols": "^1.0.1" @@ -1657,16 +1823,18 @@ }, "node_modules/is-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-string": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1676,8 +1844,9 @@ }, "node_modules/is-symbol": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.1" }, @@ -1690,26 +1859,30 @@ }, "node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jest-worker": { "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -1721,13 +1894,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1738,23 +1913,27 @@ }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "node_modules/json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -1764,16 +1943,18 @@ }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -1784,8 +1965,9 @@ }, "node_modules/load-json-file": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -1798,16 +1980,18 @@ }, "node_modules/loader-runner": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -1818,13 +2002,33 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true }, "node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1834,6 +2038,8 @@ }, "node_modules/memorystream": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", "dev": true, "engines": { "node": ">= 0.10.0" @@ -1841,23 +2047,26 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/mime-db": { - "version": "1.46.0", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.29", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, - "license": "MIT", "dependencies": { - "mime-db": "1.46.0" + "mime-db": "1.47.0" }, "engines": { "node": ">= 0.6" @@ -1865,16 +2074,18 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1884,38 +2095,45 @@ }, "node_modules/minimist": { "version": "1.2.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "node_modules/ms": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/nice-try": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "node_modules/node-releases": { "version": "1.1.71", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true }, "node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -1925,16 +2143,18 @@ }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/npm-run-all": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "chalk": "^2.4.1", @@ -1957,8 +2177,9 @@ }, "node_modules/npm-run-all/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -1968,8 +2189,9 @@ }, "node_modules/npm-run-all/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1981,21 +2203,24 @@ }, "node_modules/npm-run-all/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/npm-run-all/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "node_modules/npm-run-all/node_modules/cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -2009,32 +2234,36 @@ }, "node_modules/npm-run-all/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/npm-run-all/node_modules/path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/npm-run-all/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/npm-run-all/node_modules/shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -2044,16 +2273,18 @@ }, "node_modules/npm-run-all/node_modules/shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-all/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -2063,8 +2294,9 @@ }, "node_modules/npm-run-all/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2074,8 +2306,9 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -2085,24 +2318,27 @@ }, "node_modules/object-inspect": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -2118,8 +2354,9 @@ }, "node_modules/object.entries": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -2132,8 +2369,9 @@ }, "node_modules/object.values": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2149,16 +2387,18 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -2171,8 +2411,9 @@ }, "node_modules/optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -2187,8 +2428,9 @@ }, "node_modules/p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -2198,8 +2440,9 @@ }, "node_modules/p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -2209,16 +2452,18 @@ }, "node_modules/p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -2228,8 +2473,9 @@ }, "node_modules/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, - "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -2240,37 +2486,42 @@ }, "node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "node_modules/path-type": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -2280,8 +2531,9 @@ }, "node_modules/pidtree": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true, - "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -2291,16 +2543,18 @@ }, "node_modules/pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/pkg-dir": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^2.1.0" }, @@ -2310,16 +2564,18 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -2329,8 +2585,9 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, - "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -2340,32 +2597,36 @@ }, "node_modules/progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/punycode": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/read-pkg": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, - "license": "MIT", "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", @@ -2377,8 +2638,9 @@ }, "node_modules/read-pkg-up": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" @@ -2389,8 +2651,9 @@ }, "node_modules/read-pkg-up/node_modules/load-json-file": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -2403,8 +2666,9 @@ }, "node_modules/read-pkg-up/node_modules/parse-json": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, - "license": "MIT", "dependencies": { "error-ex": "^1.2.0" }, @@ -2414,8 +2678,9 @@ }, "node_modules/read-pkg-up/node_modules/path-type": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, - "license": "MIT", "dependencies": { "pify": "^2.0.0" }, @@ -2425,16 +2690,18 @@ }, "node_modules/read-pkg-up/node_modules/pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/read-pkg-up/node_modules/read-pkg": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, - "license": "MIT", "dependencies": { "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", @@ -2446,8 +2713,9 @@ }, "node_modules/rechoir": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "dev": true, - "license": "MIT", "dependencies": { "resolve": "^1.9.0" }, @@ -2457,8 +2725,9 @@ }, "node_modules/regexpp": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -2468,16 +2737,18 @@ }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -2488,8 +2759,9 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -2499,24 +2771,27 @@ }, "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2529,6 +2804,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -2543,13 +2820,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/schema-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.6", "ajv": "^6.12.5", @@ -2564,9 +2841,10 @@ } }, "node_modules/semver": { - "version": "7.3.4", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2579,16 +2857,18 @@ }, "node_modules/serialize-javascript": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -2598,8 +2878,9 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2609,26 +2890,30 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shell-quote": { "version": "1.7.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true }, "node_modules/signal-exit": { "version": "3.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -2643,21 +2928,24 @@ }, "node_modules/source-list-map": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true }, "node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2665,8 +2953,9 @@ }, "node_modules/spdx-correct": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -2674,13 +2963,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -2688,18 +2979,21 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.7", - "dev": true, - "license": "CC0-1.0" + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "node_modules/string-width": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2711,8 +3005,9 @@ }, "node_modules/string.prototype.padend": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", + "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2727,8 +3022,9 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -2739,8 +3035,9 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -2751,8 +3048,9 @@ }, "node_modules/strip-ansi": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.0" }, @@ -2762,24 +3060,27 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -2789,8 +3090,9 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2799,12 +3101,18 @@ } }, "node_modules/table": { - "version": "6.0.7", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz", + "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "lodash.clonedeep": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.0" }, @@ -2813,9 +3121,10 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "7.2.1", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.5.tgz", + "integrity": "sha512-RkiLa/AeJx7+9OvniQ/qeWu0w74A8DiPPBclQ6ji3ZQkv5KamO+QGpqmi7O4JIw3rHGUXZ6CoP9tsAkn3gyazg==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -2829,21 +3138,24 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "node_modules/tapable": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/terser": { - "version": "5.6.0", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", + "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -2858,8 +3170,9 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", "dev": true, - "license": "MIT", "dependencies": { "jest-worker": "^26.6.2", "p-limit": "^3.1.0", @@ -2881,8 +3194,9 @@ }, "node_modules/terser-webpack-plugin/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2895,21 +3209,24 @@ }, "node_modules/terser/node_modules/source-map": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true }, "node_modules/tsconfig-paths": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -2919,13 +3236,15 @@ }, "node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -2935,8 +3254,9 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2945,33 +3265,40 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/v8-compile-cache": { "version": "2.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -2979,8 +3306,9 @@ }, "node_modules/watchpack": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", "dev": true, - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -2990,9 +3318,10 @@ } }, "node_modules/webpack": { - "version": "5.26.2", + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.30.0.tgz", + "integrity": "sha512-Zr9NIri5yzpfmaMea2lSMV1UygbW0zQsSlGLMgKUm63ACXg6alhd1u4v5UBSBjzYKXJN6BNMGVM7w165e7NxYA==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.46", @@ -3035,14 +3364,15 @@ } }, "node_modules/webpack-cli": { - "version": "4.5.0", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz", + "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", "dev": true, - "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.1", - "@webpack-cli/info": "^1.2.2", - "@webpack-cli/serve": "^1.3.0", + "@webpack-cli/configtest": "^1.0.2", + "@webpack-cli/info": "^1.2.3", + "@webpack-cli/serve": "^1.3.1", "colorette": "^1.2.1", "commander": "^7.0.0", "enquirer": "^2.3.6", @@ -3067,9 +3397,6 @@ "@webpack-cli/generators": { "optional": true }, - "@webpack-cli/init": { - "optional": true - }, "@webpack-cli/migrate": { "optional": true }, @@ -3082,17 +3409,19 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "7.1.0", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/webpack-merge": { "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" @@ -3103,8 +3432,9 @@ }, "node_modules/webpack-sources": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", "dev": true, - "license": "MIT", "dependencies": { "source-list-map": "^2.0.1", "source-map": "^0.6.1" @@ -3115,8 +3445,9 @@ }, "node_modules/webpack/node_modules/acorn": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3126,8 +3457,9 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3140,8 +3472,9 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -3155,31 +3488,36 @@ }, "node_modules/wildcard": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true }, "node_modules/word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -3191,6 +3529,8 @@ "dependencies": { "@babel/code-frame": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -3198,10 +3538,14 @@ }, "@babel/helper-validator-identifier": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/highlight": { "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -3211,6 +3555,8 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -3218,6 +3564,8 @@ }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -3227,6 +3575,8 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" @@ -3234,14 +3584,20 @@ }, "color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -3251,13 +3607,19 @@ }, "@discoveryjs/json-ext": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", "dev": true }, "@eastdesire/jscolor": { - "version": "2.4.5" + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@eastdesire/jscolor/-/jscolor-2.4.5.tgz", + "integrity": "sha512-LDCEGN7qKKO3tq6yYtx6cbz/tQlr9LqKNSFaG2GIIn03y67ot3doucpDGoQjCwXG2xUB4pDXRuH2lobjjxhtJA==" }, "@eslint/eslintrc": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -3273,6 +3635,8 @@ "dependencies": { "globals": { "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, "requires": { "type-fest": "^0.8.1" @@ -3280,12 +3644,16 @@ }, "type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true } } }, "@types/eslint": { - "version": "7.2.7", + "version": "7.2.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.8.tgz", + "integrity": "sha512-RTKvBsfz0T8CKOGZMfuluDNyMFHnu5lvNr4hWEsQeHXH6FcmIDIozOyWMh36nLGMwVd5UFNXC2xztA8lln22MQ==", "dev": true, "requires": { "@types/estree": "*", @@ -3294,6 +3662,8 @@ }, "@types/eslint-scope": { "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", "dev": true, "requires": { "@types/eslint": "*", @@ -3302,22 +3672,32 @@ }, "@types/estree": { "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", "dev": true }, "@types/json-schema": { "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, "@types/node": { - "version": "14.14.35", + "version": "14.14.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", + "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", "dev": true }, "@webassemblyjs/ast": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.0", @@ -3326,18 +3706,26 @@ }, "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", "dev": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.0", @@ -3347,10 +3735,14 @@ }, "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3361,6 +3753,8 @@ }, "@webassemblyjs/ieee754": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" @@ -3368,6 +3762,8 @@ }, "@webassemblyjs/leb128": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", "dev": true, "requires": { "@xtuc/long": "4.2.2" @@ -3375,10 +3771,14 @@ }, "@webassemblyjs/utf8": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3393,6 +3793,8 @@ }, "@webassemblyjs/wasm-gen": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3404,6 +3806,8 @@ }, "@webassemblyjs/wasm-opt": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3414,6 +3818,8 @@ }, "@webassemblyjs/wasm-parser": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3426,6 +3832,8 @@ }, "@webassemblyjs/wast-printer": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3433,41 +3841,57 @@ } }, "@webpack-cli/configtest": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz", + "integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.2.2", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.3.tgz", + "integrity": "sha512-lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.3.0", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz", + "integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==", "dev": true, "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true }, "@xtuc/long": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, "acorn-jsx": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, "requires": {} }, "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -3478,19 +3902,27 @@ }, "ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "requires": {} }, "ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-regex": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -3498,6 +3930,8 @@ }, "argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -3505,6 +3939,8 @@ }, "array-includes": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -3516,6 +3952,8 @@ }, "array.prototype.flat": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -3525,14 +3963,20 @@ }, "astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "balanced-match": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -3541,6 +3985,8 @@ }, "browserslist": { "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001181", @@ -3552,10 +3998,14 @@ }, "buffer-from": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -3564,14 +4014,20 @@ }, "callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "caniuse-lite": { - "version": "1.0.30001202", + "version": "1.0.30001205", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", + "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", "dev": true }, "chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -3580,6 +4036,8 @@ }, "chrome-trace-event": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -3587,6 +4045,8 @@ }, "clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { "is-plain-object": "^2.0.4", @@ -3596,6 +4056,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -3603,30 +4065,44 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "colorette": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "confusing-browser-globals": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", "dev": true }, "contains-path": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, "cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -3636,6 +4112,8 @@ }, "debug": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -3643,10 +4121,14 @@ }, "deep-is": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, "define-properties": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { "object-keys": "^1.0.12" @@ -3654,21 +4136,29 @@ }, "doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" } }, "electron-to-chromium": { - "version": "1.3.690", + "version": "1.3.707", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz", + "integrity": "sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA==", "dev": true }, "emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "enhanced-resolve": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -3677,6 +4167,8 @@ }, "enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -3684,10 +4176,14 @@ }, "envinfo": { "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", "dev": true }, "error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -3695,6 +4191,8 @@ }, "es-abstract": { "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -3717,10 +4215,14 @@ }, "es-module-lexer": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", "dev": true }, "es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -3730,14 +4232,20 @@ }, "escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "eslint": { - "version": "7.22.0", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.23.0.tgz", + "integrity": "sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", @@ -3781,6 +4289,8 @@ }, "eslint-config-airbnb-base": { "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", "dev": true, "requires": { "confusing-browser-globals": "^1.0.10", @@ -3790,11 +4300,15 @@ }, "eslint-config-prettier": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", + "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", "dev": true, "requires": {} }, "eslint-import-resolver-node": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -3803,6 +4317,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -3810,12 +4326,16 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, "eslint-module-utils": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -3824,6 +4344,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -3831,12 +4353,16 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, "eslint-plugin-import": { "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, "requires": { "array-includes": "^3.1.1", @@ -3856,6 +4382,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -3863,6 +4391,8 @@ }, "doctrine": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { "esutils": "^2.0.2", @@ -3871,12 +4401,16 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, "eslint-plugin-prettier": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", + "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -3884,6 +4418,8 @@ }, "eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -3892,6 +4428,8 @@ }, "eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -3899,16 +4437,22 @@ "dependencies": { "eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } }, "eslint-visitor-keys": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, "espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { "acorn": "^7.4.0", @@ -3918,16 +4462,22 @@ "dependencies": { "eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } }, "esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -3935,12 +4485,16 @@ "dependencies": { "estraverse": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } }, "esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { "estraverse": "^5.2.0" @@ -3948,24 +4502,34 @@ "dependencies": { "estraverse": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } }, "estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "execa": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -3981,26 +4545,38 @@ }, "fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-diff": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, "fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, "fastest-levenshtein": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, "file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -4008,6 +4584,8 @@ }, "find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -4015,6 +4593,8 @@ }, "flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { "flatted": "^3.1.0", @@ -4023,22 +4603,32 @@ }, "flatted": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "function-bind": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, "get-intrinsic": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -4048,10 +4638,14 @@ }, "get-stream": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true }, "glob": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4064,6 +4658,8 @@ }, "glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -4071,10 +4667,14 @@ }, "glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, "globals": { - "version": "13.6.0", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -4082,10 +4682,14 @@ }, "graceful-fs": { "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -4093,30 +4697,44 @@ }, "has-bigints": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "has-symbols": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, "hosted-git-info": { "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -4125,6 +4743,8 @@ }, "import-local": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -4133,6 +4753,8 @@ "dependencies": { "find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -4141,6 +4763,8 @@ }, "locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" @@ -4148,6 +4772,8 @@ }, "p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -4155,6 +4781,8 @@ }, "p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -4162,14 +4790,20 @@ }, "p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" @@ -4179,10 +4813,14 @@ }, "imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -4191,22 +4829,32 @@ }, "inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "interpret": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, "is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-bigint": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", "dev": true }, "is-boolean-object": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", "dev": true, "requires": { "call-bind": "^1.0.0" @@ -4214,10 +4862,14 @@ }, "is-callable": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true }, "is-core-module": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -4225,18 +4877,26 @@ }, "is-date-object": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -4244,14 +4904,20 @@ }, "is-negative-zero": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true }, "is-number-object": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", "dev": true }, "is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -4259,6 +4925,8 @@ }, "is-regex": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -4267,14 +4935,20 @@ }, "is-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "is-string": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "dev": true }, "is-symbol": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -4282,18 +4956,26 @@ }, "isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "jest-worker": { "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -4303,10 +4985,14 @@ }, "js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -4315,18 +5001,26 @@ }, "json-parse-better-errors": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, "json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -4334,10 +5028,14 @@ }, "kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -4346,6 +5044,8 @@ }, "load-json-file": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -4356,10 +5056,14 @@ }, "loader-runner": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, "locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -4368,10 +5072,32 @@ }, "lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, "lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -4379,29 +5105,41 @@ }, "memorystream": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", "dev": true }, "merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "mime-db": { - "version": "1.46.0", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "dev": true }, "mime-types": { - "version": "2.1.29", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, "requires": { - "mime-db": "1.46.0" + "mime-db": "1.47.0" } }, "mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4409,30 +5147,44 @@ }, "minimist": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, "neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "nice-try": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, "node-releases": { "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -4443,12 +5195,16 @@ "dependencies": { "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, "npm-run-all": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -4464,6 +5220,8 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -4471,6 +5229,8 @@ }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -4480,6 +5240,8 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" @@ -4487,10 +5249,14 @@ }, "color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { "nice-try": "^1.0.4", @@ -4502,18 +5268,26 @@ }, "has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -4521,10 +5295,14 @@ }, "shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -4532,6 +5310,8 @@ }, "which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -4541,6 +5321,8 @@ }, "npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { "path-key": "^3.0.0" @@ -4548,14 +5330,20 @@ }, "object-inspect": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true }, "object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object.assign": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -4566,6 +5354,8 @@ }, "object.entries": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -4576,6 +5366,8 @@ }, "object.values": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -4586,6 +5378,8 @@ }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -4593,6 +5387,8 @@ }, "onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -4600,6 +5396,8 @@ }, "optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -4612,6 +5410,8 @@ }, "p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -4619,6 +5419,8 @@ }, "p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -4626,10 +5428,14 @@ }, "p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" @@ -4637,6 +5443,8 @@ }, "parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { "error-ex": "^1.3.1", @@ -4645,22 +5453,32 @@ }, "path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "path-type": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { "pify": "^3.0.0" @@ -4668,14 +5486,20 @@ }, "pidtree": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true }, "pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pkg-dir": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { "find-up": "^2.1.0" @@ -4683,14 +5507,20 @@ }, "prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettier": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -4698,14 +5528,20 @@ }, "progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "punycode": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -4713,6 +5549,8 @@ }, "read-pkg": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { "load-json-file": "^4.0.0", @@ -4722,6 +5560,8 @@ }, "read-pkg-up": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { "find-up": "^2.0.0", @@ -4730,6 +5570,8 @@ "dependencies": { "load-json-file": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -4740,6 +5582,8 @@ }, "parse-json": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "^1.2.0" @@ -4747,6 +5591,8 @@ }, "path-type": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { "pify": "^2.0.0" @@ -4754,10 +5600,14 @@ }, "pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "read-pkg": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { "load-json-file": "^2.0.0", @@ -4769,6 +5619,8 @@ }, "rechoir": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "dev": true, "requires": { "resolve": "^1.9.0" @@ -4776,14 +5628,20 @@ }, "regexpp": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, "resolve": { "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { "is-core-module": "^2.2.0", @@ -4792,6 +5650,8 @@ }, "resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "requires": { "resolve-from": "^5.0.0" @@ -4799,16 +5659,22 @@ "dependencies": { "resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, "resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -4816,10 +5682,14 @@ }, "safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "schema-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { "@types/json-schema": "^7.0.6", @@ -4828,7 +5698,9 @@ } }, "semver": { - "version": "7.3.4", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -4836,6 +5708,8 @@ }, "serialize-javascript": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -4843,6 +5717,8 @@ }, "shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { "kind-of": "^6.0.2" @@ -4850,6 +5726,8 @@ }, "shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" @@ -4857,18 +5735,26 @@ }, "shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shell-quote": { "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true }, "signal-exit": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -4878,14 +5764,20 @@ }, "source-list-map": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true }, "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "source-map-support": { "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -4894,6 +5786,8 @@ }, "spdx-correct": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -4902,10 +5796,14 @@ }, "spdx-exceptions": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -4914,14 +5812,20 @@ }, "spdx-license-ids": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", "dev": true }, "sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "string-width": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -4931,6 +5835,8 @@ }, "string.prototype.padend": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", + "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -4940,6 +5846,8 @@ }, "string.prototype.trimend": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -4948,6 +5856,8 @@ }, "string.prototype.trimstart": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -4956,6 +5866,8 @@ }, "strip-ansi": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -4963,35 +5875,52 @@ }, "strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, "strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" } }, "table": { - "version": "6.0.7", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz", + "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==", "dev": true, "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "lodash.clonedeep": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.0" }, "dependencies": { "ajv": { - "version": "7.2.1", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.5.tgz", + "integrity": "sha512-RkiLa/AeJx7+9OvniQ/qeWu0w74A8DiPPBclQ6ji3ZQkv5KamO+QGpqmi7O4JIw3rHGUXZ6CoP9tsAkn3gyazg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -5002,16 +5931,22 @@ }, "json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true } } }, "tapable": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true }, "terser": { - "version": "5.6.0", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", + "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -5021,12 +5956,16 @@ "dependencies": { "source-map": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } }, "terser-webpack-plugin": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", "dev": true, "requires": { "jest-worker": "^26.6.2", @@ -5039,6 +5978,8 @@ "dependencies": { "p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { "yocto-queue": "^0.1.0" @@ -5048,10 +5989,14 @@ }, "text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, "tsconfig-paths": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -5062,10 +6007,14 @@ }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -5073,20 +6022,26 @@ }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "unbox-primitive": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "requires": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" } }, "uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -5094,10 +6049,14 @@ }, "v8-compile-cache": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -5106,6 +6065,8 @@ }, "watchpack": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -5113,7 +6074,9 @@ } }, "webpack": { - "version": "5.26.2", + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.30.0.tgz", + "integrity": "sha512-Zr9NIri5yzpfmaMea2lSMV1UygbW0zQsSlGLMgKUm63ACXg6alhd1u4v5UBSBjzYKXJN6BNMGVM7w165e7NxYA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -5143,18 +6106,22 @@ "dependencies": { "acorn": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", "dev": true } } }, "webpack-cli": { - "version": "4.5.0", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz", + "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.1", - "@webpack-cli/info": "^1.2.2", - "@webpack-cli/serve": "^1.3.0", + "@webpack-cli/configtest": "^1.0.2", + "@webpack-cli/info": "^1.2.3", + "@webpack-cli/serve": "^1.3.1", "colorette": "^1.2.1", "commander": "^7.0.0", "enquirer": "^2.3.6", @@ -5168,13 +6135,17 @@ }, "dependencies": { "commander": { - "version": "7.1.0", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true } } }, "webpack-merge": { "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -5183,6 +6154,8 @@ }, "webpack-sources": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", "dev": true, "requires": { "source-list-map": "^2.0.1", @@ -5191,6 +6164,8 @@ }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -5198,6 +6173,8 @@ }, "which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "requires": { "is-bigint": "^1.0.1", @@ -5209,22 +6186,32 @@ }, "wildcard": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, "word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index f9095fd6..2ec645d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cookiemonster-mod", - "version": "2.031.6", + "version": "2.031.7", "description": "Cookie Monster is an add-on that you can load into Cookie Clicker which offers a wide range of tools and statistics to enhance the game. It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want. This is a helper and everything is an option.", "main": "CookieMonster.js", "keywords": [ diff --git a/src/Cache/CPS/AverageQueue.js b/src/Cache/CPS/AverageQueue.js index ec0ae71e..ab2f4ebb 100644 --- a/src/Cache/CPS/AverageQueue.js +++ b/src/Cache/CPS/AverageQueue.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { ClickTimes, CookieTimes } from '../../Disp/VariablesAndData'; import { ChoEggDiff, @@ -50,6 +49,14 @@ export class CMAvgQueue { } return ret / time; } + + calcSum(timePeriod) { + let time = timePeriod; + if (time > this.maxLength) time = this.maxLength; + if (time > this.queue.length) time = this.queue.length; + if (time === 0) return 0; + return this.queue.slice(-time).reduce((a, b) => a + b, 0); + } } /** @@ -57,9 +64,9 @@ export class CMAvgQueue { * Called by CM.Cache.InitCache() */ export function InitCookiesDiff() { - CookiesDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); - WrinkDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); - WrinkFattestDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); - ChoEggDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); - ClicksDiff = new CMAvgQueue(ClickTimes[ClickTimes.length - 1]); + CookiesDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); // eslint-disable-line no-unused-vars + WrinkDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); // eslint-disable-line no-unused-vars + WrinkFattestDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); // eslint-disable-line no-unused-vars + ChoEggDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); // eslint-disable-line no-unused-vars + ClicksDiff = new CMAvgQueue(ClickTimes[ClickTimes.length - 1]); // eslint-disable-line no-unused-vars } diff --git a/src/Cache/CPS/CPS.js b/src/Cache/CPS/CPS.js index 7e4f8e6d..33c69c37 100644 --- a/src/Cache/CPS/CPS.js +++ b/src/Cache/CPS/CPS.js @@ -1,5 +1,3 @@ -/* eslint-disable no-unused-vars */ - import { CMOptions } from '../../Config/VariablesAndData'; import { ClickTimes, CookieTimes } from '../../Disp/VariablesAndData'; import { @@ -41,7 +39,7 @@ export default function CacheAvgCPS() { if ((Game.T / Game.fps) % 1 === 0) { let choEggTotal = Game.cookies + CacheSellForChoEgg; if (Game.cpsSucked > 0) choEggTotal += CacheWrinklersTotal; - CacheRealCookiesEarned = Math.max(Game.cookiesEarned, choEggTotal); + CacheRealCookiesEarned = Math.max(Game.cookiesEarned, choEggTotal); // eslint-disable-line no-unused-vars choEggTotal *= 0.05; // Add recent gains to AvgQueue's @@ -89,8 +87,9 @@ export default function CacheAvgCPS() { CacheAverageGainBank + CacheAverageGainWrink + (choEgg ? CacheAverageGainChoEgg : 0); - } else CacheAvgCPSWithChoEgg = CacheAverageCPS; + } else CacheAvgCPSWithChoEgg = CacheAverageCPS; // eslint-disable-line no-unused-vars + // eslint-disable-next-line no-unused-vars CacheAverageClicks = ClicksDiff.calcAverage( ClickTimes[CMOptions.AvgClicksHist], ); diff --git a/src/Cache/CPS/CurrWrinklerCPS.js b/src/Cache/CPS/CurrWrinklerCPS.js index b42a53d2..f107becd 100644 --- a/src/Cache/CPS/CurrWrinklerCPS.js +++ b/src/Cache/CPS/CurrWrinklerCPS.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { SimObjects } from '../../Sim/VariablesAndData'; import { CacheCurrWrinklerCount, @@ -23,8 +22,8 @@ export default function CacheCurrWrinklerCPS() { else if (godLvl === 2) godMult *= 1.1; else if (godLvl === 3) godMult *= 1.05; } - CacheCurrWrinklerCount = count; - CacheCurrWrinklerCPSMult = + CacheCurrWrinklerCount = count; // eslint-disable-line no-unused-vars + CacheCurrWrinklerCPSMult = // eslint-disable-line no-unused-vars count * (count * 0.05 * 1.1) * (Game.Has('Sacrilegious corruption') * 0.05 + 1) * diff --git a/src/Cache/CPS/NoGoldSwitchCPS.js b/src/Cache/CPS/NoGoldSwitchCPS.js index a3a58301..f0cd5bc3 100644 --- a/src/Cache/CPS/NoGoldSwitchCPS.js +++ b/src/Cache/CPS/NoGoldSwitchCPS.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import CalcNoGoldSwitchCPS from '../../Sim/Calculations/NoGoldenSwitchCalc'; import { CacheNoGoldSwitchCookiesPS } from '../VariablesAndData'; @@ -10,5 +9,5 @@ import { CacheNoGoldSwitchCookiesPS } from '../VariablesAndData'; export default function CacheNoGoldSwitchCPS() { if (Game.Has('Golden switch [off]')) { CacheNoGoldSwitchCookiesPS = CalcNoGoldSwitchCPS(); - } else CacheNoGoldSwitchCookiesPS = Game.cookiesPs; + } else CacheNoGoldSwitchCookiesPS = Game.cookiesPs; // eslint-disable-line no-unused-vars } diff --git a/src/Cache/CPS/SellChoEgg.js b/src/Cache/CPS/SellChoEgg.js index 3825ce45..e3222e29 100644 --- a/src/Cache/CPS/SellChoEgg.js +++ b/src/Cache/CPS/SellChoEgg.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import SellBuildingsForChoEgg from '../../Sim/SimulationEvents/SellBuildingForChoEgg'; import { CacheSellForChoEgg } from '../VariablesAndData'; @@ -21,5 +20,5 @@ export default function CacheSellAllForChoEgg() { } // Compute cookies earned by selling all buildings with optimal auras (ES + RB) sellTotal += SellBuildingsForChoEgg(); - CacheSellForChoEgg = sellTotal; + CacheSellForChoEgg = sellTotal; // eslint-disable-line no-unused-vars } diff --git a/src/Cache/CacheInit.js b/src/Cache/CacheInit.js index 728ad759..1405d2f3 100644 --- a/src/Cache/CacheInit.js +++ b/src/Cache/CacheInit.js @@ -1,4 +1,4 @@ -/* eslint-disable no-unused-vars */ +import { ClickTimes } from '../Disp/VariablesAndData'; import { CMAvgQueue, InitCookiesDiff } from './CPS/AverageQueue'; import CacheAvgCPS from './CPS/CPS'; import CacheDragonAuras from './Dragon/CacheDragonAuras'; @@ -15,7 +15,10 @@ import { CacheGoldenAndWrathCookiesMults, CacheStatsCookies, } from './Stats/Stats'; -import { HeavenlyChipsDiff } from './VariablesAndData'; +import { + CacheAverageCookiesFromClicks, + HeavenlyChipsDiff, +} from './VariablesAndData'; import CacheWrinklers from './Wrinklers/Wrinklers'; /** @@ -30,7 +33,11 @@ export default function InitCache() { CacheAllMissingUpgrades(); CacheSeasonSpec(); InitCookiesDiff(); - HeavenlyChipsDiff = new CMAvgQueue(5); // Used by CM.Cache.CacheHeavenlyChipsPS() + /** Used by CM.Cache.CacheHeavenlyChipsPS() */ + HeavenlyChipsDiff = new CMAvgQueue(5); // eslint-disable-line no-unused-vars + CacheAverageCookiesFromClicks = new CMAvgQueue( // eslint-disable-line no-unused-vars + ClickTimes[ClickTimes.length - 1] * 20, + ); CacheHeavenlyChipsPS(); CacheAvgCPS(); CacheIncome(); diff --git a/src/Cache/CacheLoop.js b/src/Cache/CacheLoop.js index e9e7af42..fc33e5b6 100644 --- a/src/Cache/CacheLoop.js +++ b/src/Cache/CacheLoop.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { FormatTime } from '../Disp/BeautifyAndFormatting/BeautifyFormatting'; import GetCPS from '../Disp/HelperFunctions/GetCPS'; import CacheAvgCPS from './CPS/CPS'; @@ -27,5 +26,5 @@ export default function LoopCache() { 1, ) - (Game.cookiesEarned + Game.cookiesReset); - CacheTimeTillNextPrestige = FormatTime(cookiesToNext / GetCPS()); + CacheTimeTillNextPrestige = FormatTime(cookiesToNext / GetCPS()); // eslint-disable-line no-unused-vars } diff --git a/src/Cache/Dragon/CacheDragonAuras.js b/src/Cache/Dragon/CacheDragonAuras.js index 04904821..32ef632c 100644 --- a/src/Cache/Dragon/CacheDragonAuras.js +++ b/src/Cache/Dragon/CacheDragonAuras.js @@ -1,10 +1,9 @@ -/* eslint-disable no-unused-vars */ import { CacheDragonAura, CacheDragonAura2 } from '../VariablesAndData'; /** * This functions caches the currently selected Dragon Auras */ export default function CacheDragonAuras() { - CacheDragonAura = Game.dragonAura; - CacheDragonAura2 = Game.dragonAura2; + CacheDragonAura = Game.dragonAura; // eslint-disable-line no-unused-vars + CacheDragonAura2 = Game.dragonAura2; // eslint-disable-line no-unused-vars } diff --git a/src/Cache/Dragon/Dragon.js b/src/Cache/Dragon/Dragon.js index ccf4e775..5f64b531 100644 --- a/src/Cache/Dragon/Dragon.js +++ b/src/Cache/Dragon/Dragon.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ /** Functions related to the Dragon */ import { Beautify } from '../../Disp/BeautifyAndFormatting/BeautifyFormatting'; @@ -6,8 +5,6 @@ import CopyData from '../../Sim/SimulationData/CopyData'; import { SimDoSims, SimObjects } from '../../Sim/VariablesAndData'; import { CacheCostDragonUpgrade, - CacheDragonAura, - CacheDragonAura2, CacheLastDragonLevel, } from '../VariablesAndData'; @@ -46,7 +43,7 @@ export default function CacheDragonCost() { cost += price; SimObjects[target].amount -= 1; } - CacheCostDragonUpgrade = `Cost to rebuy: ${cost}`; + CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`; } } else { let cost = 0; @@ -70,7 +67,7 @@ export default function CacheDragonCost() { cost += price; SimObjects[target].amount -= 1; } - CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`; + CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`; // eslint-disable-line no-unused-vars }); } } diff --git a/src/Cache/PP/Building.js b/src/Cache/PP/Building.js index 34d67638..13cc627b 100644 --- a/src/Cache/PP/Building.js +++ b/src/Cache/PP/Building.js @@ -1,8 +1,6 @@ -/* eslint-disable no-param-reassign */ -/* eslint-disable no-unused-vars */ import { CMOptions } from '../../Config/VariablesAndData'; import GetWrinkConfigBank from '../../Disp/HelperFunctions/GetWrinkConfigBank'; -import { ColorGray } from '../../Disp/VariablesAndData'; +import { ColourGray } from '../../Disp/VariablesAndData'; import { CacheMinPP, CacheObjects1, @@ -17,19 +15,20 @@ import ColourOfPP from './ColourOfPP'; * It saves all date in CM.Cache.Objects... * It is called by CM.Cache.CacheBuildingsPP() */ -function CacheColor(target, amount) { +function CacheColour(target, amount) { Object.keys(target).forEach((i) => { if (CMOptions.PPRigidelMode && amount === 1) { - target[i].color = ColorGray; + target[i].color = ColourGray; // eslint-disable-line no-param-reassign return; } + // eslint-disable-next-line no-param-reassign target[i].color = ColourOfPP( target[i], Game.Objects[i].getSumPrice(amount), ); // Colour based on excluding certain top-buildings for (let j = 0; j < CMOptions.PPExcludeTop; j++) { - if (target[i].pp === CachePPArray[j][0]) target[i].color = ColorGray; + if (target[i].pp === CachePPArray[j][0]) target[i].color = ColourGray; // eslint-disable-line no-param-reassign } }); } @@ -38,11 +37,11 @@ function CachePP(target, amount) { Object.keys(target).forEach((i) => { const price = Game.Objects[i].getSumPrice(amount); if (Game.cookiesPs) { - target[i].pp = + target[i].pp = // eslint-disable-line no-param-reassign Math.max(price - (Game.cookies + GetWrinkConfigBank()), 0) / Game.cookiesPs + price / target[i].bonus; - } else target[i].pp = price / target[i].bonus; + } else target[i].pp = price / target[i].bonus; // eslint-disable-line no-param-reassign if (!(CMOptions.PPRigidelMode && amount === 1)) CachePPArray.push([target[i].pp, amount]); }); @@ -73,9 +72,9 @@ export default function CacheBuildingsPP() { } } } - CacheMinPP = CachePPArray[CMOptions.PPExcludeTop][indexOfMin]; + CacheMinPP = CachePPArray[CMOptions.PPExcludeTop][indexOfMin]; // eslint-disable-line no-unused-vars - CacheColor(CacheObjects1, 1); - CacheColor(CacheObjects10, 10); - CacheColor(CacheObjects100, 100); + CacheColour(CacheObjects1, 1); + CacheColour(CacheObjects10, 10); + CacheColour(CacheObjects100, 100); } diff --git a/src/Cache/PP/ColourOfPP.js b/src/Cache/PP/ColourOfPP.js index 6940ca45..8a2e5ad8 100644 --- a/src/Cache/PP/ColourOfPP.js +++ b/src/Cache/PP/ColourOfPP.js @@ -1,13 +1,13 @@ import { CMOptions } from '../../Config/VariablesAndData'; import GetCPS from '../../Disp/HelperFunctions/GetCPS'; import { - ColorBlue, - ColorGray, - ColorGreen, - ColorOrange, - ColorPurple, - ColorRed, - ColorYellow, + ColourBlue, + ColourGray, + ColourGreen, + ColourOrange, + ColourPurple, + ColourRed, + ColourYellow, } from '../../Disp/VariablesAndData'; import { CacheMinPP, CachePPArray } from '../VariablesAndData'; @@ -21,22 +21,22 @@ import { CacheMinPP, CachePPArray } from '../VariablesAndData'; export default function ColourOfPP(me, price) { let color = ''; // Colour based on PP - if (me.pp <= 0 || me.pp === Infinity) color = ColorGray; - else if (me.pp < CacheMinPP) color = ColorBlue; - else if (me.pp === CacheMinPP) color = ColorGreen; - else if (me.pp < CachePPArray[10][0]) color = ColorYellow; - else if (me.pp < CachePPArray[20][0]) color = ColorOrange; - else if (me.pp > CachePPArray[30][0]) color = ColorRed; - else color = ColorPurple; + if (me.pp <= 0 || me.pp === Infinity) color = ColourGray; + else if (me.pp < CacheMinPP) color = ColourBlue; + else if (me.pp === CacheMinPP) color = ColourGreen; + else if (me.pp < CachePPArray[10][0]) color = ColourYellow; + else if (me.pp < CachePPArray[20][0]) color = ColourOrange; + else if (me.pp < CachePPArray[30][0]) color = ColourRed; + else color = ColourPurple; // Colour based on price in terms of CPS if (Number(CMOptions.PPSecondsLowerLimit) !== 0) { if (price / GetCPS() < Number(CMOptions.PPSecondsLowerLimit)) - color = ColorBlue; + color = ColourBlue; } // Colour based on being able to purchase if (CMOptions.PPOnlyConsiderBuyable) { - if (price - Game.cookies > 0) color = ColorRed; + if (price - Game.cookies > 0) color = ColourRed; } return color; } diff --git a/src/Cache/PriceAndIncome/PriceAndIncome.js b/src/Cache/PriceAndIncome/PriceAndIncome.js index cb9123b4..feceab8a 100644 --- a/src/Cache/PriceAndIncome/PriceAndIncome.js +++ b/src/Cache/PriceAndIncome/PriceAndIncome.js @@ -1,13 +1,10 @@ -/* eslint-disable no-unused-vars */ /** Section: Functions related to caching income */ import { CMOptions } from '../../Config/VariablesAndData'; -import GetCPS from '../../Disp/HelperFunctions/GetCPS'; import BuildingGetPrice from '../../Sim/SimulationEvents/BuyBuilding'; import BuyBuildingsBonusIncome from '../../Sim/SimulationEvents/BuyBuildingBonusIncome'; import BuyUpgradesBonusIncome from '../../Sim/SimulationEvents/BuyUpgrades'; import { - CacheAverageCPS, CacheAverageGainBank, CacheAverageGainWrink, CacheAverageGainWrinkFattest, @@ -30,7 +27,7 @@ function CacheBuildingIncome(amount) { result[i] = {}; result[i].bonus = BuyBuildingsBonusIncome(i, amount); if (amount !== 1) { - CacheDoRemakeBuildPrices = 1; + CacheDoRemakeBuildPrices = 1; // eslint-disable-line no-unused-vars } }); return result; diff --git a/src/Cache/Stats/ChainCookies.js b/src/Cache/Stats/ChainCookies.js index 27a29ae8..c1741cb4 100644 --- a/src/Cache/Stats/ChainCookies.js +++ b/src/Cache/Stats/ChainCookies.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import GetCPSBuffMult from '../CPS/GetCPSBuffMult'; import { CacheChainFrenzyMaxReward, @@ -89,8 +88,8 @@ export function CacheChain() { maxPayout, CacheGoldenCookiesMult, ); - CacheChainRequired = (CacheChainMaxReward[1] * 2) / CacheGoldenCookiesMult; - CacheChainRequiredNext = + CacheChainRequired = (CacheChainMaxReward[1] * 2) / CacheGoldenCookiesMult; // eslint-disable-line no-unused-vars + CacheChainRequiredNext = // eslint-disable-line no-unused-vars CacheChainMaxReward[2] / 60 / 60 / 6 / CacheDragonsFortuneMultAdjustment; CacheChainWrathMaxReward = MaxChainCookieReward( @@ -98,9 +97,9 @@ export function CacheChain() { maxPayout, CacheWrathCookiesMult, ); - CacheChainWrathRequired = + CacheChainWrathRequired = // eslint-disable-line no-unused-vars (CacheChainWrathMaxReward[1] * 2) / CacheWrathCookiesMult; - CacheChainWrathRequiredNext = + CacheChainWrathRequiredNext = // eslint-disable-line no-unused-vars CacheChainWrathMaxReward[2] / 60 / 60 / @@ -112,9 +111,9 @@ export function CacheChain() { maxPayout * 7, CacheGoldenCookiesMult, ); - CacheChainFrenzyRequired = + CacheChainFrenzyRequired = // eslint-disable-line no-unused-vars (CacheChainFrenzyMaxReward[1] * 2) / CacheGoldenCookiesMult; - CacheChainFrenzyRequiredNext = + CacheChainFrenzyRequiredNext = // eslint-disable-line no-unused-vars CacheChainFrenzyMaxReward[2] / 60 / 60 / @@ -126,9 +125,9 @@ export function CacheChain() { maxPayout * 7, CacheWrathCookiesMult, ); - CacheChainFrenzyWrathRequired = + CacheChainFrenzyWrathRequired = // eslint-disable-line no-unused-vars (CacheChainFrenzyWrathMaxReward[1] * 2) / CacheWrathCookiesMult; - CacheChainFrenzyWrathRequiredNext = + CacheChainFrenzyWrathRequiredNext = // eslint-disable-line no-unused-vars CacheChainFrenzyWrathMaxReward[2] / 60 / 60 / diff --git a/src/Cache/Stats/HeavenlyChips.js b/src/Cache/Stats/HeavenlyChips.js index ec4aff83..452ebca2 100644 --- a/src/Cache/Stats/HeavenlyChips.js +++ b/src/Cache/Stats/HeavenlyChips.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { CacheHCPerSecond, CacheLastHeavenlyCheck, @@ -34,6 +33,6 @@ export default function CacheHeavenlyChipsPS() { CacheLastHeavenlyChips = ascendNowToGet; // Get average gain over period of 5 seconds - CacheHCPerSecond = HeavenlyChipsDiff.calcAverage(5); + CacheHCPerSecond = HeavenlyChipsDiff.calcAverage(5); // eslint-disable-line no-unused-vars } } diff --git a/src/Cache/Stats/MissingUpgrades.js b/src/Cache/Stats/MissingUpgrades.js index 6cf42359..d410f642 100644 --- a/src/Cache/Stats/MissingUpgrades.js +++ b/src/Cache/Stats/MissingUpgrades.js @@ -1,5 +1,4 @@ -/* eslint-disable no-unused-vars */ -import { crateMissing } from '../../Disp/MenuSections/CreateMissingUpgrades'; +import { crateMissing } from '../../Disp/MenuSections/Statistics/CreateMissingUpgrades'; import { CacheMissingUpgrades, CacheMissingUpgradesCookies, @@ -36,6 +35,7 @@ export default function CacheAllMissingUpgrades() { let str = ''; str += crateMissing(me); + /* eslint-disable no-unused-vars */ if (me.pool === 'prestige') CacheMissingUpgradesPrestige += str; else if (me.pool === 'cookie') CacheMissingUpgradesCookies += str; else if ( @@ -44,6 +44,7 @@ export default function CacheAllMissingUpgrades() { me.pool !== 'debug' ) CacheMissingUpgrades += str; + /* eslint-enable no-unused-vars */ } }); } diff --git a/src/Cache/Stats/Reindeer.js b/src/Cache/Stats/Reindeer.js index 77d4cb10..f4142d0b 100644 --- a/src/Cache/Stats/Reindeer.js +++ b/src/Cache/Stats/Reindeer.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { CacheSeaSpec } from '../VariablesAndData'; /** @@ -12,6 +11,6 @@ export default function CacheSeasonSpec() { if (Game.hasBuff('Elder frenzy')) val *= 0.5; if (Game.hasBuff('Frenzy')) val *= 0.75; CacheSeaSpec = Math.max(25, val); - if (Game.Has('Ho ho ho-flavored frosting')) CacheSeaSpec *= 2; + if (Game.Has('Ho ho ho-flavored frosting')) CacheSeaSpec *= 2; // eslint-disable-line no-unused-vars } } diff --git a/src/Cache/Stats/Stats.js b/src/Cache/Stats/Stats.js index decbe0c8..2703b902 100644 --- a/src/Cache/Stats/Stats.js +++ b/src/Cache/Stats/Stats.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ /** Functions related to Caching stats */ import SimHas from '../../Sim/ReplacedGameFunctions/SimHas'; @@ -29,15 +28,15 @@ export function CacheStatsCookies() { const cpsBuffMult = GetCPSBuffMult(); if (cpsBuffMult > 0) CacheLucky /= cpsBuffMult; else CacheLucky = 0; - CacheLuckyReward = CacheGoldenCookiesMult * (CacheLucky * 0.15) + 13; - CacheLuckyWrathReward = CacheWrathCookiesMult * (CacheLucky * 0.15) + 13; + CacheLuckyReward = CacheGoldenCookiesMult * (CacheLucky * 0.15) + 13; // eslint-disable-line no-unused-vars + CacheLuckyWrathReward = CacheWrathCookiesMult * (CacheLucky * 0.15) + 13; // eslint-disable-line no-unused-vars CacheLuckyFrenzy = CacheLucky * 7; - CacheLuckyRewardFrenzy = + CacheLuckyRewardFrenzy = // eslint-disable-line no-unused-vars CacheGoldenCookiesMult * (CacheLuckyFrenzy * 0.15) + 13; - CacheLuckyWrathRewardFrenzy = + CacheLuckyWrathRewardFrenzy = // eslint-disable-line no-unused-vars CacheWrathCookiesMult * (CacheLuckyFrenzy * 0.15) + 13; CacheConjure = CacheLucky * 2; - CacheConjureReward = CacheConjure * 0.15; + CacheConjureReward = CacheConjure * 0.15; // eslint-disable-line no-unused-vars CacheEdifice = 0; let max = 0; @@ -53,7 +52,7 @@ export function CacheStatsCookies() { Game.Objects[i].price * 2 > CacheEdifice ) { CacheEdifice = Game.Objects[i].price * 2; - CacheEdificeBuilding = i; + CacheEdificeBuilding = i; // eslint-disable-line no-unused-vars } }); } diff --git a/src/Cache/VariablesAndData.js b/src/Cache/VariablesAndData.js index 25df5f6e..81e80a65 100644 --- a/src/Cache/VariablesAndData.js +++ b/src/Cache/VariablesAndData.js @@ -39,6 +39,7 @@ export let CacheCurrWrinklerCount = 0; export let CacheUpgrades = {}; export let CacheAverageClicks = {}; +export let CacheAverageCookiesFromClicks; export let CacheMissingUpgrades = {}; export let CacheMissingUpgradesPrestige = {}; diff --git a/src/Cache/Wrinklers/Wrinklers.js b/src/Cache/Wrinklers/Wrinklers.js index 5f593ee9..443af7ef 100644 --- a/src/Cache/Wrinklers/Wrinklers.js +++ b/src/Cache/Wrinklers/Wrinklers.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ /** Caches data related to Wrinklers */ import { SimObjects } from '../../Sim/VariablesAndData'; @@ -32,9 +31,9 @@ export default function CacheWrinklers() { else if (godLvl === 2) sucked *= 1.1; else if (godLvl === 3) sucked *= 1.05; } - CacheWrinklersTotal += sucked; + CacheWrinklersTotal += sucked; // eslint-disable-line no-unused-vars if (Game.wrinklers[i].type === 0) { - CacheWrinklersNormal += sucked; + CacheWrinklersNormal += sucked; // eslint-disable-line no-unused-vars if (sucked > CacheWrinklersFattest[0]) CacheWrinklersFattest = [sucked, i]; } diff --git a/src/Config/CheckNotificationPermissions.js b/src/Config/CheckNotificationPermissions.js index c20a0b0a..759a5b69 100644 --- a/src/Config/CheckNotificationPermissions.js +++ b/src/Config/CheckNotificationPermissions.js @@ -18,7 +18,7 @@ function CheckNotificationPermissions(ToggleOnOff) { // Check if the browser supports notifications and which type if (!('Notification' in window)) { - console.log('This browser does not support notifications.'); + console.log('This browser does not support notifications.'); // eslint-disable-line no-console } else if (checkNotificationPromise()) { Notification.requestPermission().then(); } else { diff --git a/src/Config/SaveLoadReload/SaveLoadReloadSettings.js b/src/Config/SaveLoadReload/SaveLoadReloadSettings.js index bf99c9ea..724d263f 100644 --- a/src/Config/SaveLoadReload/SaveLoadReloadSettings.js +++ b/src/Config/SaveLoadReload/SaveLoadReloadSettings.js @@ -2,7 +2,8 @@ import ConfigDefault from '../../Data/SettingsDefault'; import ConfigData from '../../Data/SettingsData'; import { CMOptions } from '../VariablesAndData'; import save from '../../InitSaveLoad/save'; -import CMLoop from '../../Main/Loop'; +import CMLoopHook from '../../Main/LoopHook'; +import UpdateColours from '../../Disp/HelperFunctions/UpdateColours'; /** Functions related to saving, loading and restoring all settings */ @@ -41,25 +42,19 @@ export function LoadConfig(settings) { if (settings !== undefined) { CMOptions = settings; + if (typeof CMOptions.Colors !== 'undefined') { + delete CMOptions.Colors; + } + if (typeof CMOptions.Colours !== 'undefined') { + delete CMOptions.Colours; + } + // Check values let mod = false; Object.keys(ConfigDefault).forEach((i) => { if (typeof CMOptions[i] === 'undefined') { mod = true; CMOptions[i] = ConfigDefault[i]; - } else if (i !== 'Header' && i !== 'Colors') { - if (i.indexOf('SoundURL') === -1) { - if ( - !(CMOptions[i] > -1 && CMOptions[i] < ConfigData[i].label.length) - ) { - mod = true; - CMOptions[i] = ConfigDefault[i]; - } - } else if (typeof CMOptions[i] !== 'string') { - // Sound URLs - mod = true; - CMOptions[i] = ConfigDefault[i]; - } } else if (i === 'Header') { Object.keys(ConfigDefault.Header).forEach((j) => { if ( @@ -70,21 +65,10 @@ export function LoadConfig(settings) { CMOptions[i][j] = ConfigDefault[i][j]; } }); - } else { - // Colors - Object.keys(ConfigDefault.Colors).forEach((j) => { - if ( - typeof CMOptions[i][j] === 'undefined' || - typeof CMOptions[i][j] !== 'string' - ) { - mod = true; - CMOptions[i][j] = ConfigDefault[i][j]; - } - }); } }); if (mod) SaveConfig(); - CMLoop(); // Do loop once + CMLoopHook(); // Do loop once Object.keys(ConfigDefault).forEach((i) => { if (i !== 'Header' && typeof ConfigData[i].func !== 'undefined') { ConfigData[i].func(); @@ -94,4 +78,6 @@ export function LoadConfig(settings) { // Default values LoadConfig(ConfigDefault); } + Game.UpdateMenu(); + UpdateColours(); } diff --git a/src/Config/Toggles/ToggleFavourites.js b/src/Config/Toggles/ToggleFavourites.js new file mode 100644 index 00000000..bc6d0bb7 --- /dev/null +++ b/src/Config/Toggles/ToggleFavourites.js @@ -0,0 +1,13 @@ +import { FavouriteSettings } from '../../Disp/VariablesAndData'; + +/** + * This function toggles whether a setting is part of the favourites section in setting or not + * @param {string} config The name of the toggleable config option + */ +export default function ToggleFavouriteSetting(config) { + if (FavouriteSettings.includes(config)) + FavouriteSettings = FavouriteSettings.filter(function (ele) { + return ele !== config; + }); + else FavouriteSettings.push(config); +} diff --git a/src/Config/Toggles/ToggleGCTimer.js b/src/Config/Toggles/ToggleGCTimer.js index 044207f9..42e08591 100644 --- a/src/Config/Toggles/ToggleGCTimer.js +++ b/src/Config/Toggles/ToggleGCTimer.js @@ -1,4 +1,3 @@ -/* eslint-disable no-return-assign */ import { CacheGoldenShimmersByID } from '../../Cache/VariablesAndData'; import { GCTimers } from '../../Disp/VariablesAndData'; import { CMOptions } from '../VariablesAndData'; @@ -15,6 +14,7 @@ export default function ToggleGCTimer() { GCTimers[i].style.top = CacheGoldenShimmersByID[i].l.style.top; }); } else { + // eslint-disable-next-line no-return-assign Object.keys(GCTimers).forEach((i) => (GCTimers[i].style.display = 'none')); } } diff --git a/src/Config/Toggles/ToggleUpgradeBarAndColor.js b/src/Config/Toggles/ToggleUpgradeBarAndColour.js similarity index 92% rename from src/Config/Toggles/ToggleUpgradeBarAndColor.js rename to src/Config/Toggles/ToggleUpgradeBarAndColour.js index 227b0e14..90ac188b 100644 --- a/src/Config/Toggles/ToggleUpgradeBarAndColor.js +++ b/src/Config/Toggles/ToggleUpgradeBarAndColour.js @@ -1,9 +1,6 @@ import UpdateUpgrades from '../../Disp/BuildingsUpgrades/Upgrades'; import { CMOptions } from '../VariablesAndData'; -/** - * Section: Functions related to the Upgrade Bar - /** * This function toggles the upgrade bar and the colours of upgrades * It is called by a change in CM.Options.UpBarColor diff --git a/src/Config/Toggles/ToggleWrinklerButtons.js b/src/Config/Toggles/ToggleWrinklerButtons.js index 16128535..0fe246a9 100644 --- a/src/Config/Toggles/ToggleWrinklerButtons.js +++ b/src/Config/Toggles/ToggleWrinklerButtons.js @@ -5,7 +5,7 @@ import { CMOptions } from '../VariablesAndData'; * It is called by changes in CM.Options.WrinklerButtons */ export default function ToggleWrinklerButtons() { - if (CMOptions.WrinklerButtons) { + if (CMOptions.WrinklerButtons && Game.elderWrath) { l('PopAllNormalWrinklerButton').style.display = ''; l('PopFattestWrinklerButton').style.display = ''; } else { diff --git a/src/Config/VariablesAndData.js b/src/Config/VariablesAndData.js index c0ec2a6d..aea9382b 100644 --- a/src/Config/VariablesAndData.js +++ b/src/Config/VariablesAndData.js @@ -1,4 +1,2 @@ -/* eslint-disable prefer-const */ - -export let CMOptions = {}; +export let CMOptions = {}; // eslint-disable-line prefer-const export const ConfigPrefix = 'CMConfig'; diff --git a/src/CookieMonster.js b/src/CookieMonster.js index 658c81d7..b84881df 100644 --- a/src/CookieMonster.js +++ b/src/CookieMonster.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import init from './InitSaveLoad/init'; import load from './InitSaveLoad/load'; import save from './InitSaveLoad/save'; diff --git a/src/Data/Moddata.js b/src/Data/Moddata.js index 48e8ff1e..1a45cb8e 100644 --- a/src/Data/Moddata.js +++ b/src/Data/Moddata.js @@ -1,7 +1,7 @@ /** Data related directly to Cookie Monster */ export const VersionMajor = '2.031'; -export const VersionMinor = '6'; +export const VersionMinor = '7'; /** Information about Cookie Monster to be displayed in the info section */ export const ModDescription = `
@@ -15,28 +15,25 @@ export const ModDescription = `
/** Latest releasenotes of Cookie Monster to be displayed in the info section */ export const LatestReleaseNotes = `
-The latest update (v 2.031.6) has revamped the way PP is colourcoded. In the previous versions this was not always correct and we had some settings that made it even more incorrect. With this update Cookie Monster compares the PP of a building to all other possibilities (also buying 10 or 100) of a building and colors the PP accordingly.
-This means that if it is better to buy 10 of a building immediately rather than to buy in increments of 1 Cookie Monster will now show this! In this case the buy 1 option will be yellow, while the buy 10 option will be green.
-This also means that you will see some more diverse colors. Rather than coloring according to arbitrary "middle values" Cookie Monster now uses a top 10, 20 and 30. While this might take some getting used to we believe the new system is much better in conveying useful information to the user while also being more correct!
+These are the release notes for the latest update (v 2.031.7).

-This update also implements the following functions:
-- Added a tooltip displaying the reward to the extra pop wrinkler buttons
-- Added tooltips to the Gods in the Pantheon
-- The tooltip for Elder Pledge now displays correctly, although it takes some time to load after Cookie Monster has been loaded
-- You can now test the volume and sound of notifications in the settings screen
-- The bottom bar will now flicker less and each column has received a bit of padding
-- Introduced new colour scheme for PP, see the explanation of colors in the Readme or the settings
-- Added option to show buttons that can hide the upgrade and building section
-- Added option to display PP as a time unit, note that these are only approximations. PP does not translate directly into time (the name is deceptive, we know...)
-- Statistics page now shows chance for random drops when they have not been achieved
-- In a later hotfix we have added a Rigidel mode that will colour all buy 1 options grey
+This update implements the following functions:
+- Updated the ordering and description of all settings of Cookie Monster
+- Colours of Flash notifications can now be set by the user
+- You can now select a number of settings to be your 'favourite'. They will be displayed at the top of all other settings in a new section. This functionality is toggleable and you can find it in the miscellaneous section
+- The statistics page now shows cookies earned by clicking for a selected time period
+- The statistics page can now show missing normal achievements, this can be toggled in the settings

This update fixes the following bugs:
-- Incorrect amount for "required for max plant reward" in statistics page
-- Fixed the tooltips of the '?' buttons in the statistics page not showing
-- Fixed some unclear settings descriptions
-
-Please submit any bug reports or feature requests to the GitHub page! -
+- Fixed some typo's
+- No longer show the wrinkler pop buttons when wrinklers can't spawn
+- Fixed incorrect calculation of plant maturity for relevant tooltips
+- Fixed edit prompts not working in settings
+- Fixed red and purple being switched around for PP colour coding
+- Fixed incorrect notation of numbers in Dragon tooltip and interface
+- Fixed incorrect calculation of changing Dragon aura cost
+- Fixed incorrect calculation of changing Pantheon gods effect
+- Fixed fluctuating PP values when god Cyclius was selected
+- Fixed black flickering when Golden Cookies or buffs start
`; diff --git a/src/Data/Sectionheaders.js b/src/Data/Sectionheaders.js index 9c8e9ecd..ef41b7a4 100644 --- a/src/Data/Sectionheaders.js +++ b/src/Data/Sectionheaders.js @@ -2,12 +2,14 @@ /** Display titles of the headers of the Cookie Monster settings section */ export const ConfigGroups = { - BarsColors: 'Bars/Colors', + Favourite: 'Favourite Settings', Calculation: 'Calculation', - Notification: 'Notification', - Tooltip: 'Tooltips and additional insights', - Statistics: 'Statistics', Notation: 'Notation', + Colours: 'Colours and colour coding', + BarsDisplay: 'Infobars and visual settings', + Tooltip: 'Tooltips', + Statistics: 'Statistics', + Notification: 'Notifications', Miscellaneous: 'Miscellaneous', }; diff --git a/src/Data/SettingClasses.js b/src/Data/SettingClasses.js index 5c410367..943d69f6 100644 --- a/src/Data/SettingClasses.js +++ b/src/Data/SettingClasses.js @@ -23,10 +23,9 @@ export class SettingStandard extends Setting { } /** The colour picker setting class */ export class SettingColours extends Setting { - constructor(type, group, desc, func) { + constructor(type, group, desc) { super(type, group); this.desc = desc; - this.func = func; } } diff --git a/src/Data/SettingsData.js b/src/Data/SettingsData.js index 53c1a882..21831f6e 100644 --- a/src/Data/SettingsData.js +++ b/src/Data/SettingsData.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import CheckNotificationPermissions from '../Config/CheckNotificationPermissions'; import { ToggleTimerBar, ToggleTimerBarPos } from '../Config/SpecificToggles'; import ToggleBotBar from '../Config/Toggles/ToggleBotBar'; @@ -6,14 +5,13 @@ import ToggleDetailedTime from '../Config/Toggles/ToggleDetailedTime'; import ToggleGCTimer from '../Config/Toggles/ToggleGCTimer'; import ToggleSectionHideButtons from '../Config/Toggles/ToggleSectionHideButtons'; import ToggleToolWarnPos from '../Config/Toggles/ToggleToolWarnPos'; -import ToggleUpgradeBarAndColor from '../Config/Toggles/ToggleUpgradeBarAndColor'; +import ToggleUpgradeBarAndColour from '../Config/Toggles/ToggleUpgradeBarAndColour'; import ToggleUpgradeBarFixedPos from '../Config/Toggles/ToggleUpgradeBarFixedPos'; import ToggleWrinklerButtons from '../Config/Toggles/ToggleWrinklerButtons'; import { CMOptions } from '../Config/VariablesAndData'; import UpdateBuildings from '../Disp/BuildingsUpgrades/Buildings'; import UpdateUpgrades from '../Disp/BuildingsUpgrades/Upgrades'; import RefreshScale from '../Disp/HelperFunctions/RefreshScale'; -import UpdateColors from '../Disp/HelperFunctions/UpdateColors'; import { UpdateFavicon } from '../Disp/TabTitle/FavIcon'; import { SimDoSims } from '../Sim/VariablesAndData'; import { @@ -25,12 +23,226 @@ import { /** This includes all options of CookieMonster and their relevant data */ const Config = { - // Barscolors + // Calculation + CPSMode: new SettingStandard( + 'bool', + 'Calculation', + ['Current cookies per second', 'Average cookies per second'], + 'Calculate times using current cookies per second or average cookies per second', + false, + ), + AvgCPSHist: new SettingStandard( + 'bool', + 'Calculation', + [ + 'Average CPS in past 10s', + 'Average CPS in past 15s', + 'Average CPS in past 30s', + 'Average CPS in past 1m', + 'Average CPS in past 5m', + 'Average CPS in past 10m', + 'Average CPS in past 15m', + 'Average CPS in past 30m', + ], + 'How much time average Cookies Per Second should consider', + false, + ), + AvgClicksHist: new SettingStandard( + 'bool', + 'Calculation', + [ + 'Average clicks in past 1s', + 'Average clicks in past 5s', + 'Average clicks in past 10s', + 'Average clicks in past 15s', + 'Average clicks in past 30s', + ], + 'How much time average Cookie Clicks should consider', + false, + ), + CalcWrink: new SettingStandard( + 'bool', + 'Calculation', + [ + 'Calculate with wrinklers OFF', + 'Calculate with wrinklers ON', + 'Calculate with single fattest wrinkler ON', + ], + 'Calculate times and average Cookies Per Second with (only the single non-shiny fattest) wrinklers', + true, + function () { + SimDoSims = true; // eslint-disable-line no-unused-vars + }, + ), + + // Notation + Scale: new SettingStandard( + 'bool', + 'Notation', + [ + "Game's setting scale", + 'Metric', + 'Short scale', + 'Short scale (Abbreviated)', + 'Scientific notation', + 'Engineering notation', + ], + 'Change how long numbers are formatted', + false, + function () { + RefreshScale(); + }, + ), + ScaleDecimals: new SettingStandard( + 'bool', + 'Notation', + ['1 decimals', '2 decimals', '3 decimals'], + `Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game's Setting Scale"`, + false, + function () { + RefreshScale(); + }, + ), + ScaleSeparator: new SettingStandard( + 'bool', + 'Notation', + ['. for decimals (standard)', '. for thousands'], + 'Set the separator used for decimals and thousands', + false, + function () { + RefreshScale(); + }, + ), + ScaleCutoff: new SettingInputNumber( + 'numscale', + 'Notation', + 'Notation cut-off point: ', + 'The number from which Cookie Monster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations', + 1, + 999999999, + ), + TimeFormat: new SettingStandard( + 'bool', + 'Notation', + ['Time XXd, XXh, XXm, XXs', 'Time XX:XX:XX:XX:XX'], + 'Change the time format', + false, + ), + DetailedTime: new SettingStandard( + 'bool', + 'Notation', + ['Detailed time OFF', 'Detailed time ON'], + 'Change how time is displayed in certain statistics and tooltips', + true, + function () { + ToggleDetailedTime(); + }, + ), + PPDisplayTime: new SettingStandard( + 'bool', + 'Notation', + ['PP as value (standard)', 'PP as time unit'], + 'Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.', + false, + ), + + // Colours + BuildColour: new SettingStandard( + 'bool', + 'Colours', + ['Building colours OFF', 'Building colours ON'], + 'Colour code buildings', + true, + function () { + UpdateBuildings(); + }, + ), + PPOnlyConsiderBuyable: new SettingStandard( + 'bool', + 'Colours', + ["Don't ignore non-buyable", 'Ignore non-buyable'], + "Makes Cookie Monster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'", + true, + ), + PPExcludeTop: new SettingStandard( + 'bool', + 'Colours', + [ + "Don't ignore any", + 'Ignore 1st best', + 'Ignore 1st and 2nd best', + 'Ignore 1st, 2nd and 3rd best', + ], + 'Makes Cookie Monster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values', + true, + ), + PPRigidelMode: new SettingStandard( + 'bool', + 'Colours', + ['Rigidel mode OFF', 'Rigidel mode ON'], + 'Makes Cookie Monster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel', + true, + ), + PPSecondsLowerLimit: new SettingInputNumber( + 'numscale', + 'Colours', + 'Lower limit for PP (in seconds): ', + 'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option', + 0, + Infinity, + ), + ColourBlue: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels', + ), + ColourGreen: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is green. Used to show best PP building, for Blood Frenzy bar, and for various labels', + ), + ColourYellow: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels', + ), + ColourOrange: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels', + ), + ColourRed: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels', + ), + ColourPurple: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels', + ), + ColourGray: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', + ), + ColourPink: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is pink. Used for Dragonflight bar', + ), + ColourBrown: new SettingColours( + 'colour', + 'Colours', + 'Standard colour is brown. Used for Dragon Harvest bar', + ), + + // BarsDisplay BotBar: new SettingStandard( 'bool', - 'BarsColors', - ['Bottom Bar OFF', 'Bottom Bar ON'], - 'Building Information', + 'BarsDisplay', + ['Bottom bar OFF', 'Bottom bar ON'], + 'Building information', true, function () { ToggleBotBar(); @@ -38,9 +250,9 @@ const Config = { ), TimerBar: new SettingStandard( 'bool', - 'BarsColors', - ['Timer Bar OFF', 'Timer Bar ON'], - 'Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy', + 'BarsDisplay', + ['Timer bar OFF', 'Timer bar ON'], + 'Bar with timers for golden cookie, season popup, Frenzy (Normal, Clot, Elder), Click Frenzy', true, function () { ToggleTimerBar(); @@ -48,9 +260,9 @@ const Config = { ), TimerBarPos: new SettingStandard( 'bool', - 'BarsColors', - ['Timer Bar Position (Top Left)', 'Timer Bar Position (Bottom)'], - 'Placement of the Timer Bar', + 'BarsDisplay', + ['Timer bar position (top left)', 'Timer bar position (bottom)'], + 'Placement of the timer bar', false, function () { ToggleTimerBarPos(); @@ -58,22 +270,46 @@ const Config = { ), TimerBarOverlay: new SettingStandard( 'bool', - 'BarsColors', + 'BarsDisplay', [ - 'Timer Bar Overlay OFF', - 'Timer Bar Overlay Only Seconds', - 'Timer Bar Overlay Full', + 'Timer bar overlay OFF', + 'Timer bar overlay only seconds', + 'Timer bar overlay full', ], 'Overlay on timers displaying seconds and/or percentage left', true, ), + UpBarColour: new SettingStandard( + 'bool', + 'BarsDisplay', + [ + 'Upgrade colours/bar OFF', + 'Upgrade colours with bar ON', + 'Upgrade colours without bar ON', + ], + 'Colour code upgrades and optionally add a counter bar', + false, + function () { + ToggleUpgradeBarAndColour(); + }, + ), + UpgradeBarFixedPos: new SettingStandard( + 'bool', + 'BarsDisplay', + ['Upgrade bar fixed position OFF', 'Upgrade bar fixed position ON'], + 'Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling', + true, + function () { + ToggleUpgradeBarFixedPos(); + }, + ), SortBuildings: new SettingStandard( 'bool', - 'BarsColors', + 'BarsDisplay', [ - 'Sort Buildings: Default', - 'Sort Buildings: PP of x1 purchase', - 'Sort Buildings: PP of selected bulk mode', + 'Sort buildings: default', + 'Sort buildings: PP of x1 purchase', + 'Sort buildings: PP of selected bulk mode', ], 'Sort the display of buildings in either default order or by PP', false, @@ -83,174 +319,238 @@ const Config = { ), SortUpgrades: new SettingStandard( 'bool', - 'BarsColors', - ['Sort Upgrades: Default', 'Sort Upgrades: PP'], + 'BarsDisplay', + ['Sort upgrades: default', 'Sort upgrades: PP'], 'Sort the display of upgrades in either default order or by PP', false, function () { UpdateUpgrades(); }, ), - BuildColor: new SettingStandard( + DragonAuraInfo: new SettingStandard( 'bool', - 'BarsColors', - ['Building Colors OFF', 'Building Colors ON'], - 'Color code buildings', + 'BarsDisplay', + ['Extra dragon aura info OFF', 'Extra dragon aura info ON'], + 'Shows information about changes in CPS and costs in the dragon aura interface.', true, - function () { - UpdateBuildings(); - }, ), - PPDisplayTime: new SettingStandard( + GrimoireBar: new SettingStandard( 'bool', - 'BarsColors', - ['PP As Value (Standard)', 'PP As Time Unit'], - 'Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.', - false, + 'BarsDisplay', + ['Grimoire magic meter timer OFF', 'Grimoire magic meter timer ON'], + 'A timer on how long before the Grimoire magic meter is full', + true, ), - UpBarColor: new SettingStandard( + GCTimer: new SettingStandard( 'bool', - 'BarsColors', - [ - 'Upgrade Colors/Bar OFF', - 'Upgrade Colors with Bar ON', - 'Upgrade Colors without Bar ON', - ], - 'Color code upgrades and optionally add a counter bar', - false, + 'BarsDisplay', + ['Golden cookie timer OFF', 'Golden cookie timer ON'], + 'A timer on the golden cookie when it has been spawned', + true, function () { - ToggleUpgradeBarAndColor(); + ToggleGCTimer(); }, ), - Colors: new SettingColours( - 'color', - 'BarsColors', - { - Blue: - 'Color Blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels', - Green: - 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', - Yellow: - 'Color Yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels', - Orange: - 'Color Orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels', - Red: - 'Color Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels', - Purple: - 'Color Purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels', - Gray: - 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', - Pink: 'Color Pink. Used for Dragonflight bar', - Brown: 'Color Brown. Used for Dragon Harvest bar', - }, + Favicon: new SettingStandard( + 'bool', + 'BarsDisplay', + ['Favicon OFF', 'Favicon ON'], + 'Update favicon with golden/wrath cookie', + true, function () { - UpdateColors(); + UpdateFavicon(); }, ), - UpgradeBarFixedPos: new SettingStandard( + WrinklerButtons: new SettingStandard( 'bool', - 'BarsColors', - ['Upgrade Bar Fixed Position OFF', 'Upgrade Bar Fixed Position ON'], - 'Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling', + 'BarsDisplay', + ['Extra wrinkler buttons OFF', 'Extra wrinkler buttons ON'], + 'Show buttons for popping wrinklers at bottom of cookie section', true, function () { - ToggleUpgradeBarFixedPos(); + ToggleWrinklerButtons(); }, ), - - // Calculation - CalcWrink: new SettingStandard( + HideSectionsButtons: new SettingStandard( 'bool', - 'Calculation', - [ - 'Calculate with Wrinklers OFF', - 'Calculate with Wrinklers ON', - 'Calculate with Single Fattest Wrinkler ON', - ], - 'Calculate times and average Cookies Per Second with (only the single non-shiny fattest) Wrinklers', + 'BarsDisplay', + ['Hide buildings/upgrades button OFF', 'Hide buildings/upgrades button ON'], + 'Show buttons for hiding and showing the buildings and upgrades sections in the right column', true, function () { - SimDoSims = true; + ToggleSectionHideButtons(); }, ), - CPSMode: new SettingStandard( - 'bool', - 'Calculation', - ['Current Cookies Per Second', 'Average Cookies Per Second'], - 'Calculate times using current Cookies Per Second or average Cookies Per Second', - false, - ), - AvgCPSHist: new SettingStandard( + + // Tooltip + TooltipBuildUpgrade: new SettingStandard( 'bool', - 'Calculation', + 'Tooltip', [ - 'Average CPS for past 10s', - 'Average CPS for past 15s', - 'Average CPS for past 30s', - 'Average CPS for past 1m', - 'Average CPS for past 5m', - 'Average CPS for past 10m', - 'Average CPS for past 15m', - 'Average CPS for past 30m', + 'Building/upgrade tooltip information OFF', + 'Building/upgrade tooltip information ON', ], - 'How much time average Cookies Per Second should consider', - false, + 'Extra information in building/upgrade tooltips', + true, ), - AvgClicksHist: new SettingStandard( + TooltipAmor: new SettingStandard( 'bool', - 'Calculation', + 'Tooltip', [ - 'Average Cookie Clicks for past 1s', - 'Average Cookie Clicks for past 5s', - 'Average Cookie Clicks for past 10s', - 'Average Cookie Clicks for past 15s', - 'Average Cookie Clicks for past 30s', + 'Buildings tooltip amortization information OFF', + 'Buildings tooltip amortization information ON', ], - 'How much time average Cookie Clicks should consider', - false, + 'Add amortization information to buildings tooltip', + true, ), - PPExcludeTop: new SettingStandard( + ToolWarnLucky: new SettingStandard( 'bool', - 'Calculation', - [ - "Don't Ignore Any", - 'Ignore 1st Best', - 'Ignore 1st and 2nd Best', - 'Ignore 1st, 2nd and 3rd Best', - ], - 'Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values', + 'Tooltip', + ['Tooltip lucky warning OFF', 'Tooltip lucky warning ON'], + 'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards', true, ), - PPRigidelMode: new SettingStandard( + ToolWarnLuckyFrenzy: new SettingStandard( 'bool', - 'Calculation', - ['Rigidel Mode OFF', 'Rigidel Mode ON'], - 'Makes CookieMonster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel', + 'Tooltip', + ['Tooltip lucky frenzy warning OFF', 'Tooltip lucky frenzy warning ON'], + 'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards', true, ), - PPSecondsLowerLimit: new SettingInputNumber( + ToolWarnConjure: new SettingStandard( + 'bool', + 'Tooltip', + ['Tooltip conjure warning OFF', 'Tooltip conjure warning ON'], + 'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards', + true, + ), + ToolWarnConjureFrenzy: new SettingStandard( + 'bool', + 'Tooltip', + ['Tooltip conjure frenzy warning OFF', 'Tooltip conjure frenzy warning ON'], + 'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active', + true, + ), + ToolWarnEdifice: new SettingStandard( + 'bool', + 'Tooltip', + ['Tooltip edifice warning OFF', 'Tooltip edifice warning ON'], + 'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building', + true, + ), + ToolWarnUser: new SettingInputNumber( 'numscale', - 'Calculation', - 'Lower limit for PP (in seconds): ', - 'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option', + 'Tooltip', + 'Tooltip warning at x times CPS: ', + 'Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether', 0, Infinity, ), - PPOnlyConsiderBuyable: new SettingStandard( + ToolWarnBon: new SettingStandard( 'bool', - 'Calculation', - ["Don't Ignore Non-Buyable", 'Ignore Non-Buyable'], - "Makes CookieMonster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'", + 'Tooltip', + [ + 'Calculate tooltip warning with bonus CPS OFF', + 'Calculate tooltip warning with bonus CPS ON', + ], + 'Calculate the warning with or without the bonus CPS you get from buying', + true, + ), + ToolWarnPos: new SettingStandard( + 'bool', + 'Tooltip', + ['Tooltip warning position (left)', 'Tooltip warning position (bottom)'], + 'Placement of the warning boxes', + false, + function () { + ToggleToolWarnPos(); + }, + ), + TooltipGrim: new SettingStandard( + 'bool', + 'Tooltip', + ['Grimoire tooltip information OFF', 'Grimoire tooltip information ON'], + 'Extra information in tooltip for grimoire', + true, + ), + TooltipWrink: new SettingStandard( + 'bool', + 'Tooltip', + ['Wrinkler tooltip OFF', 'Wrinkler tooltip ON'], + 'Shows the amount of cookies a wrinkler will give when popping it', + true, + ), + TooltipLump: new SettingStandard( + 'bool', + 'Tooltip', + ['Sugar lump tooltip OFF', 'Sugar lump tooltip ON'], + 'Shows the current Sugar Lump type in Sugar lump tooltip.', + true, + ), + TooltipPlots: new SettingStandard( + 'bool', + 'Tooltip', + ['Garden plots tooltip OFF', 'Garden plots tooltip ON'], + 'Shows a tooltip for plants that have a cookie reward.', + true, + ), + TooltipPantheon: new SettingStandard( + 'bool', + 'Tooltip', + ['Pantheon tooltip OFF', 'Pantheon tooltip ON'], + 'Shows additional info in the pantheon tooltip', + true, + ), + TooltipAscendButton: new SettingStandard( + 'bool', + 'Tooltip', + ['Show Extra Info Ascend Tooltip OFF', 'Show Extra Info Ascend Tooltip ON'], + 'Shows additional info in the ascend tooltip', true, ), - ToolWarnBon: new SettingStandard( + + // Statistics + Stats: new SettingStandard( + 'bool', + 'Statistics', + ['Statistics OFF', 'Statistics ON'], + 'Extra Cookie Monster statistics!', + true, + ), + MissingUpgrades: new SettingStandard( + 'bool', + 'Statistics', + ['Missing upgrades OFF', 'Missing upgrades ON'], + 'Shows missing upgrades in statistics menu', + true, + ), + MissingAchievements: new SettingStandard( + 'bool', + 'Statistics', + ['Missing Achievements OFF', 'Missing Normal Achievements ON'], + 'Shows missing normal achievements in statistics menu.', + false, + ), + UpStats: new SettingStandard( + 'bool', + 'Statistics', + ['Statistics update rate (default)', 'Statistics update rate (1s)'], + 'Default rate is once every 5 seconds', + false, + ), + HeavenlyChipsTarget: new SettingInputNumber( + 'numscale', + 'Statistics', + 'Heavenly chips target: ', + 'Use this to set a heavenly chips target that will be counted towards in the "prestige" statsistics sections', + 1, + Infinity, + ), + ShowMissedGC: new SettingStandard( 'bool', - 'Calculation', - [ - 'Calculate Tooltip Warning With Bonus CPS OFF', - 'Calculate Tooltip Warning With Bonus CPS ON', - ], - 'Calculate the warning with or without the bonus CPS you get from buying', + 'Statistics', + ['Missed GC OFF', 'Missed GC ON'], + 'Show a stat in the statistics screen that counts how many golden cookies you have missed', true, ), @@ -258,14 +558,14 @@ const Config = { Title: new SettingStandard( 'bool', 'NotificationGeneral', - ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], - 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns; "!" means that Golden Cookie/Reindeer can spawn', + ['Title OFF', 'Title ON', 'Title pinned tab highlight'], + 'Update title with colden cookie/season popup timers; pinned tab highlight only changes the title when a golden cookie/season popup spawns; "!" means that golden cookie/reindeer can spawn', true, ), GeneralSound: new SettingStandard( 'bool', 'NotificationGeneral', - ['Consider Game Volume Setting OFF', 'Consider Game Volume Setting ON'], + ['Consider game volume setting OFF', 'Consider game volume setting ON'], 'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down', true, ), @@ -273,7 +573,7 @@ const Config = { 'bool', 'NotificationGC', ['Notification OFF', 'Notification ON'], - 'Create a notification when Golden Cookie spawns', + 'Create a notification when golden cookie spawns', true, function () { CheckNotificationPermissions(CMOptions.GCNotification); @@ -283,14 +583,19 @@ const Config = { 'bool', 'NotificationGC', ['Flash OFF', 'Flash ON'], - 'Flash screen on Golden Cookie', + 'Flash screen on golden cookie', true, ), + ColourGCFlash: new SettingColours( + 'colour', + 'NotificationGC', + 'The colour of the GC flash, standard colour is white', + ), GCSound: new SettingStandard( 'bool', 'NotificationGC', ['Sound OFF', 'Sound ON'], - 'Play a sound on Golden Cookie', + 'Play a sound on golden cookie', true, ), GCVolume: new SettingVolume('vol', 'NotificationGC', [], 'Volume'), @@ -298,13 +603,13 @@ const Config = { 'url', 'NotificationGC', 'Sound URL:', - 'URL of the sound to be played when a Golden Cookie spawns', + 'URL of the sound to be played when a golden cookie spawns', ), FortuneNotification: new SettingStandard( 'bool', 'NotificationFC', ['Notification OFF', 'Notification ON'], - 'Create a notification when Fortune Cookie is on the Ticker', + 'Create a notification when fortune cookie is on the ticker', true, function () { CheckNotificationPermissions(CMOptions.FortuneNotification); @@ -314,29 +619,33 @@ const Config = { 'bool', 'NotificationFC', ['Flash OFF', 'Flash ON'], - 'Flash screen on Fortune Cookie', + 'Flash screen on fortune cookie spawn', true, ), + ColourFortuneFlash: new SettingColours( + 'colour', + 'NotificationFC', + 'The colour of the fortune flash, standard colour is white', + ), FortuneSound: new SettingStandard( 'bool', 'NotificationFC', ['Sound OFF', 'Sound ON'], - 'Play a sound on Fortune Cookie', + 'Play a sound on fortune cookie spawn', true, ), FortuneVolume: new SettingVolume('vol', 'NotificationFC', [], 'Volume'), - FortuneSoundURL: new SettingStandard( 'url', 'NotificationFC', 'Sound URL:', - 'URL of the sound to be played when the Ticker has a Fortune Cookie', + 'URL of the sound to be played when the ticker has a fortune cookie', ), SeaNotification: new SettingStandard( 'bool', 'NotificationSea', ['Notification OFF', 'Notification ON'], - 'Create a notification on Season Popup', + 'Create a notification on season popup', true, function () { CheckNotificationPermissions(CMOptions.SeaNotification); @@ -346,14 +655,19 @@ const Config = { 'bool', 'NotificationSea', ['Flash OFF', 'Flash ON'], - 'Flash screen on Season Popup', + 'Flash screen on season popup', true, ), + ColourSeaFlash: new SettingColours( + 'colour', + 'NotificationSea', + 'The colour of the season popup flash, standard colour is white', + ), SeaSound: new SettingStandard( 'bool', 'NotificationSea', ['Sound OFF', 'Sound ON'], - 'Play a sound on Season Popup', + 'Play a sound on season popup', true, ), SeaVolume: new SettingVolume('vol', 'NotificationSea', [], 'Volume'), @@ -361,20 +675,25 @@ const Config = { 'url', 'NotificationSea', 'Sound URL:', - 'URL of the sound to be played when a Season Special spawns', + 'URL of the sound to be played when on season popup spawns', ), GardFlash: new SettingStandard( 'bool', 'NotificationGard', ['Garden Tick Flash OFF', 'Flash ON'], - 'Flash screen on Garden Tick', + 'Flash screen on garden tick', true, ), + ColourGardFlash: new SettingColours( + 'colour', + 'NotificationGard', + 'The colour of the garden flash, standard colour is white', + ), GardSound: new SettingStandard( 'bool', 'NotificationGard', ['Sound OFF', 'Sound ON'], - 'Play a sound on Garden Tick', + 'Play a sound on garden tick', true, ), GardVolume: new SettingVolume('vol', 'NotificationGard', [], 'Volume'), @@ -401,6 +720,11 @@ const Config = { 'Flash screen when magic reaches maximum', true, ), + ColourMagicFlash: new SettingColours( + 'colour', + 'NotificationMagi', + 'The colour of the magic flash, standard colour is white', + ), MagicSound: new SettingStandard( 'bool', 'NotificationMagi', @@ -419,7 +743,7 @@ const Config = { 'bool', 'NotificationWrink', ['Notification OFF', 'Notification ON'], - 'Create a notification when a Wrinkler appears', + 'Create a notification when a wrinkler appears', true, function () { CheckNotificationPermissions(CMOptions.WrinklerNotification); @@ -429,14 +753,19 @@ const Config = { 'bool', 'NotificationWrink', ['Flash OFF', 'Flash ON'], - 'Flash screen when a Wrinkler appears', + 'Flash screen when a wrinkler appears', true, ), + ColourWrinklerFlash: new SettingColours( + 'colour', + 'NotificationWrink', + 'The colour of the wrinkler flash, standard colour is white', + ), WrinklerSound: new SettingStandard( 'bool', 'NotificationWrink', ['Sound OFF', 'Sound ON'], - 'Play a sound when a Wrinkler appears', + 'Play a sound when a wrinkler appears', true, ), WrinklerVolume: new SettingVolume('vol', 'NotificationWrink', [], 'Volume'), @@ -444,13 +773,13 @@ const Config = { 'url', 'NotificationWrink', 'Sound URL:', - 'URL of the sound to be played when a Wrinkler appears', + 'URL of the sound to be played when a wrinkler appears', ), WrinklerMaxNotification: new SettingStandard( 'bool', 'NotificationWrinkMax', ['Notification OFF', 'Notification ON'], - 'Create a notification when the maximum amount of Wrinklers has appeared', + 'Create a notification when the maximum amount of wrinklers has appeared', true, function () { CheckNotificationPermissions(CMOptions.WrinklerMaxNotification); @@ -463,11 +792,16 @@ const Config = { 'Flash screen when the maximum amount of Wrinklers has appeared', true, ), + ColourWrinklerMaxFlash: new SettingColours( + 'colour', + 'NotificationWrinkMax', + 'The colour of the maximum wrinkler flash, standard colour is white', + ), WrinklerMaxSound: new SettingStandard( 'bool', 'NotificationWrinkMax', ['Sound OFF', 'Sound ON'], - 'Play a sound when the maximum amount of Wrinklers has appeared', + 'Play a sound when the maximum amount of wrinklers has appeared', true, ), WrinklerMaxVolume: new SettingVolume( @@ -480,293 +814,31 @@ const Config = { 'url', 'NotificationWrinkMax', 'Sound URL:', - 'URL of the sound to be played when the maximum amount of Wrinklers has appeared', - ), - - // Tooltip - TooltipBuildUpgrade: new SettingStandard( - 'bool', - 'Tooltip', - [ - 'Building/Upgrade Tooltip Information OFF', - 'Building/Upgrade Tooltip Information ON', - ], - 'Extra information in Building/Upgrade tooltips', - true, - ), - TooltipAmor: new SettingStandard( - 'bool', - 'Tooltip', - [ - 'Buildings Tooltip Amortization Information OFF', - 'Buildings Tooltip Amortization Information ON', - ], - 'Add amortization information to buildings tooltip', - true, - ), - ToolWarnLucky: new SettingStandard( - 'bool', - 'Tooltip', - ['Tooltip Lucky Warning OFF', 'Tooltip Lucky Warning ON'], - 'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards', - true, - ), - ToolWarnLuckyFrenzy: new SettingStandard( - 'bool', - 'Tooltip', - ['Tooltip Lucky Frenzy Warning OFF', 'Tooltip Lucky Frenzy Warning ON'], - 'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards', - true, - ), - ToolWarnConjure: new SettingStandard( - 'bool', - 'Tooltip', - ['Tooltip Conjure Warning OFF', 'Tooltip Conjure Warning ON'], - 'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards', - true, - ), - ToolWarnConjureFrenzy: new SettingStandard( - 'bool', - 'Tooltip', - ['Tooltip Conjure Frenzy Warning OFF', 'Tooltip Conjure Frenzy Warning ON'], - 'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active', - true, - ), - ToolWarnEdifice: new SettingStandard( - 'bool', - 'Tooltip', - ['Tooltip Edifice Warning OFF', 'Tooltip Edifice Warning ON'], - 'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building', - true, - ), - ToolWarnUser: new SettingInputNumber( - 'numscale', - 'Tooltip', - 'Tooltip Warning At x times CPS: ', - 'Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether', - 0, - Infinity, - ), - ToolWarnPos: new SettingStandard( - 'bool', - 'Tooltip', - ['Tooltip Warning Position (Left)', 'Tooltip Warning Position (Bottom)'], - 'Placement of the warning boxes', - false, - function () { - ToggleToolWarnPos(); - }, - ), - TooltipGrim: new SettingStandard( - 'bool', - 'Tooltip', - ['Grimoire Tooltip Information OFF', 'Grimoire Tooltip Information ON'], - 'Extra information in tooltip for grimoire', - true, - ), - TooltipWrink: new SettingStandard( - 'bool', - 'Tooltip', - ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], - 'Shows the amount of cookies a wrinkler will give when popping it', - true, - ), - TooltipLump: new SettingStandard( - 'bool', - 'Tooltip', - ['Sugar Lump Tooltip OFF', 'Sugar Lump Tooltip ON'], - 'Shows the current Sugar Lump type in Sugar lump tooltip.', - true, - ), - TooltipPlots: new SettingStandard( - 'bool', - 'Tooltip', - ['Garden Plots Tooltip OFF', 'Garden Plots Tooltip ON'], - 'Shows a tooltip for plants that have a cookie reward.', - true, - ), - TooltipPantheon: new SettingStandard( - 'bool', - 'Tooltip', - [ - 'Show Extra Info Pantheon Tooltip OFF', - 'Show Extra Info Pantheon Tooltip ON', - ], - 'Shows additional info in the pantheon tooltip', - true, - ), - DragonAuraInfo: new SettingStandard( - 'bool', - 'Tooltip', - ['Extra Dragon Aura Info OFF', 'Extra Dragon Aura Info ON'], - 'Shows information about changes in CPS and costs in the dragon aura interface.', - true, - ), - TooltipAscendButton: new SettingStandard( - 'bool', - 'Tooltip', - ['Show Extra Info Ascend Tooltip OFF', 'Show Extra Info Ascend Tooltip ON'], - 'Shows additional info in the ascend tooltip', - true, - ), - - // Statistics - Stats: new SettingStandard( - 'bool', - 'Statistics', - ['Statistics OFF', 'Statistics ON'], - 'Extra Cookie Monster statistics!', - true, - ), - MissingUpgrades: new SettingStandard( - 'bool', - 'Statistics', - ['Missing Upgrades OFF', 'Missing Upgrades ON'], - 'Shows Missing upgrades in Stats Menu. This feature can be laggy for users with a low amount of unlocked achievements.', - true, - ), - UpStats: new SettingStandard( - 'bool', - 'Statistics', - ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], - 'Default Game rate is once every 5 seconds', - false, - ), - TimeFormat: new SettingStandard( - 'bool', - 'Statistics', - ['Time XXd, XXh, XXm, XXs', 'Time XX:XX:XX:XX:XX'], - 'Change the time format', - false, - ), - DetailedTime: new SettingStandard( - 'bool', - 'Statistics', - ['Detailed Time OFF', 'Detailed Time ON'], - 'Change how time is displayed in certain statistics and tooltips', - true, - function () { - ToggleDetailedTime(); - }, - ), - GrimoireBar: new SettingStandard( - 'bool', - 'Statistics', - ['Grimoire Magic Meter Timer OFF', 'Grimoire Magic Meter Timer ON'], - 'A timer on how long before the Grimoire magic meter is full', - true, - ), - HeavenlyChipsTarget: new SettingInputNumber( - 'numscale', - 'Statistics', - 'Heavenly Chips Target: ', - 'Use this to set a Heavenly Chips target that will be counted towards in the "prestige" statsistics sections', - 1, - Infinity, - ), - ShowMissedGC: new SettingStandard( - 'bool', - 'Statistics', - ['Missed GC OFF', 'Missed GC ON'], - 'Show a stat in the statistics screen that counts how many Golden Cookies you have missed', - true, - ), - - // Notation - Scale: new SettingStandard( - 'bool', - 'Notation', - [ - "Game's Setting Scale", - 'Metric', - 'Short Scale', - 'Short Scale (Abbreviated)', - 'Scientific Notation', - 'Engineering Notation', - ], - 'Change how long numbers are handled', - false, - function () { - RefreshScale(); - }, - ), - ScaleDecimals: new SettingStandard( - 'bool', - 'Notation', - ['1 decimals', '2 decimals', '3 decimals'], - `Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game's Setting Scale"`, - false, - function () { - RefreshScale(); - }, - ), - ScaleSeparator: new SettingStandard( - 'bool', - 'Notation', - ['. for decimals (Standard)', '. for thousands'], - 'Set the separator used for decimals and thousands', - false, - function () { - RefreshScale(); - }, - ), - ScaleCutoff: new SettingInputNumber( - 'numscale', - 'Notation', - 'Notation Cut-off Point: ', - 'The number from which CookieMonster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations', - 1, - 999999999, + 'URL of the sound to be played when the maximum amount of wrinklers has appeared', ), // Miscellaneous - GCTimer: new SettingStandard( - 'bool', - 'Miscellaneous', - ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], - 'A timer on the Golden Cookie when it has been spawned', - true, - function () { - ToggleGCTimer(); - }, - ), - Favicon: new SettingStandard( - 'bool', - 'Miscellaneous', - ['Favicon OFF', 'Favicon ON'], - 'Update favicon with Golden/Wrath Cookie', - true, - function () { - UpdateFavicon(); - }, - ), - WrinklerButtons: new SettingStandard( + BulkBuyBlock: new SettingStandard( 'bool', 'Miscellaneous', - ['Extra Wrinkler Buttons OFF', 'Extra Wrinkler Buttons ON'], - 'Show buttons for popping wrinklers at bottom of cookie section', + ['Block bulk buying OFF', 'Block bulk buying ON'], + "Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.", true, - function () { - ToggleWrinklerButtons(); - }, ), - HideSectionsButtons: new SettingStandard( + FavouriteSettings: new SettingStandard( 'bool', 'Miscellaneous', - ['Hide Upgrades/Buildings Button OFF', 'Hide Upgrades/Buildings Button ON'], - 'Show buttons for hiding and showing the upgrades and buildings section in the right column', + [ + 'Favourite settings section OFF', + 'Favourite settings section ON', + 'Favourite settings section ON (Locked)', + ], + "Show stars before each setting which allows selecting it for a 'favourites' section at the top of the Cookie Monster settings. Setting this to Locked removes the stars but shows the 'favourites' section", true, function () { - ToggleSectionHideButtons(); + Game.UpdateMenu(); }, ), - BulkBuyBlock: new SettingStandard( - 'bool', - 'Miscellaneous', - ['Block Bulk Buying OFF', 'Block Bulk Buying ON'], - "Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.", - true, - ), }; export default Config; diff --git a/src/Data/SettingsDefault.js b/src/Data/SettingsDefault.js index e419b167..4dfb6e36 100644 --- a/src/Data/SettingsDefault.js +++ b/src/Data/SettingsDefault.js @@ -1,112 +1,124 @@ /** This array describes all default settings */ const ConfigDefault = { - BotBar: 1, - TimerBar: 1, - TimerBarPos: 0, - TimerBarOverlay: 2, - BuildColor: 1, - PPDisplayTime: 0, - UpBarColor: 1, - UpgradeBarFixedPos: 1, - CalcWrink: 0, CPSMode: 1, AvgCPSHist: 3, AvgClicksHist: 0, + CalcWrink: 0, + Scale: 2, + ScaleDecimals: 2, + ScaleSeparator: 0, + ScaleCutoff: 999999, + TimeFormat: 0, + DetailedTime: 1, + PPDisplayTime: 0, + BuildColour: 1, + PPOnlyConsiderBuyable: 0, PPExcludeTop: 0, PPRigidelMode: 0, PPSecondsLowerLimit: 0, - PPOnlyConsiderBuyable: 0, + ColourBlue: '#4bb8f0', + ColourGreen: '#00ff00', + ColourYellow: '#ffff00', + ColourOrange: '#ff7f00', + ColourRed: '#ff0000', + ColourPurple: '#ff00ff', + ColourGray: '#b3b3b3', + ColourPink: '#ff1493', + ColourBrown: '#8b4513', + BotBar: 1, + TimerBar: 1, + TimerBarPos: 0, + TimerBarOverlay: 2, + UpBarColour: 1, + UpgradeBarFixedPos: 1, + SortBuildings: 0, + SortUpgrades: 0, + DragonAuraInfo: 1, + GrimoireBar: 1, + GCTimer: 1, + Favicon: 1, + WrinklerButtons: 1, + HideSectionsButtons: 0, + TooltipBuildUpgrade: 1, + TooltipAmor: 0, + ToolWarnLucky: 1, + ToolWarnLuckyFrenzy: 1, + ToolWarnConjure: 1, + ToolWarnConjureFrenzy: 1, + ToolWarnEdifice: 1, + ToolWarnUser: 0, ToolWarnBon: 1, + ToolWarnPos: 1, + TooltipGrim: 1, + TooltipWrink: 1, + TooltipLump: 1, + TooltipPlots: 1, + TooltipPantheon: 1, + TooltipAscendButton: 1, + Stats: 1, + MissingUpgrades: 1, + MissingAchievements: 0, + UpStats: 1, + HeavenlyChipsTarget: 1, + ShowMissedGC: 1, Title: 1, GeneralSound: 1, GCNotification: 0, GCFlash: 1, + ColourGCFlash: '#ffffff', GCSound: 1, GCVolume: 100, GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', FortuneNotification: 0, FortuneFlash: 1, + ColourFortuneFlash: '#ffffff', FortuneSound: 1, FortuneVolume: 100, FortuneSoundURL: 'https://freesound.org/data/previews/174/174027_3242494-lq.mp3', SeaNotification: 0, SeaFlash: 1, + ColourSeaFlash: '#ffffff', SeaSound: 1, SeaVolume: 100, SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GardFlash: 1, + ColourGardFlash: '#ffffff', GardSound: 1, GardVolume: 100, GardSoundURL: 'https://freesound.org/data/previews/103/103046_861714-lq.mp3', MagicNotification: 0, MagicFlash: 1, + ColourMagicFlash: '#ffffff', MagicSound: 1, MagicVolume: 100, MagicSoundURL: 'https://freesound.org/data/previews/221/221683_1015240-lq.mp3', WrinklerNotification: 0, WrinklerFlash: 1, + ColourWrinklerFlash: '#ffffff', WrinklerSound: 1, WrinklerVolume: 100, WrinklerSoundURL: 'https://freesound.org/data/previews/124/124186_8043-lq.mp3', WrinklerMaxNotification: 0, WrinklerMaxFlash: 1, + ColourWrinklerMaxFlash: '#ffffff', WrinklerMaxSound: 1, WrinklerMaxVolume: 100, WrinklerMaxSoundURL: 'https://freesound.org/data/previews/152/152743_15663-lq.mp3', - TooltipBuildUpgrade: 1, - TooltipAmor: 0, - ToolWarnLucky: 1, - ToolWarnLuckyFrenzy: 1, - ToolWarnConjure: 1, - ToolWarnConjureFrenzy: 1, - ToolWarnEdifice: 1, - ToolWarnUser: 0, - ToolWarnPos: 1, - TooltipGrim: 1, - TooltipWrink: 1, - TooltipLump: 1, - TooltipPlots: 1, - TooltipPantheon: 1, - DragonAuraInfo: 1, - TooltipAscendButton: 1, - Stats: 1, - MissingUpgrades: 1, - UpStats: 1, - TimeFormat: 0, - DetailedTime: 1, - GrimoireBar: 1, - HeavenlyChipsTarget: 1, - ShowMissedGC: 1, - Scale: 2, - ScaleDecimals: 2, - ScaleSeparator: 0, - ScaleCutoff: 999999, - Colors: { - Blue: '#4bb8f0', - Green: '#00ff00', - Yellow: '#ffff00', - Orange: '#ff7f00', - Red: '#ff0000', - Purple: '#ff00ff', - Gray: '#b3b3b3', - Pink: '#ff1493', - Brown: '#8b4513', - }, - SortBuildings: 0, - SortUpgrades: 0, - GCTimer: 1, - Favicon: 1, - WrinklerButtons: 1, - HideSectionsButtons: 0, BulkBuyBlock: 0, + FavouriteSettings: 1, Header: { - BarsColors: 1, + Favourite: 1, Calculation: 1, + Notation: 1, + Colours: 1, + BarsDisplay: 1, + Tooltip: 1, + Statistics: 1, Notification: 1, NotificationGeneral: 1, NotificationGC: 1, @@ -116,9 +128,6 @@ const ConfigDefault = { NotificationMagi: 1, NotificationWrink: 1, NotificationWrinkMax: 1, - Tooltip: 1, - Statistics: 1, - Notation: 1, Miscellaneous: 1, Lucky: 1, Chain: 1, diff --git a/src/Disp/BeautifyAndFormatting/BeautifyFormatting.js b/src/Disp/BeautifyAndFormatting/BeautifyFormatting.js index a3764f9c..07b93735 100644 --- a/src/Disp/BeautifyAndFormatting/BeautifyFormatting.js +++ b/src/Disp/BeautifyAndFormatting/BeautifyFormatting.js @@ -1,14 +1,13 @@ -/* eslint-disable no-nested-ternary */ /** General functions to format or beautify strings */ import { CMOptions } from '../../Config/VariablesAndData'; import { metric, shortScale, shortScaleAbbreviated } from '../../Data/Scales'; import { BackupFunctions } from '../../Main/VariablesAndData'; import { - ColorGreen, - ColorOrange, - ColorRed, - ColorYellow, + ColourGreen, + ColourOrange, + ColourRed, + ColourYellow, } from '../VariablesAndData'; /** @@ -30,6 +29,9 @@ export function Beautify(num, floats, forced) { return BackupFunctions.Beautify(num, floats); } if (Number.isFinite(num)) { + if (num < 0) { + return `-${Beautify(Math.abs(num))}`; + } let answer = ''; if (num === 0) { return num.toString(); @@ -75,6 +77,7 @@ export function Beautify(num, floats, forced) { } } if (answer === '') { + // eslint-disable-next-line no-console console.log( `Could not beautify number with Cookie Monster Beautify: ${num}`, ); @@ -83,7 +86,7 @@ export function Beautify(num, floats, forced) { if (CMOptions.ScaleSeparator) answer = answer.replace('.', ','); return answer; } - console.log(`Could not beautify number with Cookie Monster Beautify: ${num}`); + console.log(`Could not beautify number with Cookie Monster Beautify: ${num}`); // eslint-disable-line no-console return BackupFunctions.Beautify(num, floats); } @@ -116,15 +119,15 @@ export function FormatTime(time, longFormat) { return longFormat ? 'Over 9000 days!' : '>9000d'; str += y > 0 - ? `${y + (longFormat ? (y === 1 ? ' year' : ' years') : 'y')}, ` + ? `${y + (longFormat ? (y === 1 ? ' year' : ' years') : 'y')}, ` // eslint-disable-line no-nested-ternary : ''; str += - d > 0 ? `${d + (longFormat ? (d === 1 ? ' day' : ' days') : 'd')}, ` : ''; + d > 0 ? `${d + (longFormat ? (d === 1 ? ' day' : ' days') : 'd')}, ` : ''; // eslint-disable-line no-nested-ternary if (str.length > 0 || h > 0) - str += `${h + (longFormat ? (h === 1 ? ' hour' : ' hours') : 'h')}, `; + str += `${h + (longFormat ? (h === 1 ? ' hour' : ' hours') : 'h')}, `; // eslint-disable-line no-nested-ternary if (str.length > 0 || m > 0) - str += `${m + (longFormat ? (m === 1 ? ' minute' : ' minutes') : 'm')}, `; - str += s + (longFormat ? (s === 1 ? ' second' : ' seconds') : 's'); + str += `${m + (longFormat ? (m === 1 ? ' minute' : ' minutes') : 'm')}, `; // eslint-disable-line no-nested-ternary + str += s + (longFormat ? (s === 1 ? ' second' : ' seconds') : 's'); // eslint-disable-line no-nested-ternary } return str; } @@ -134,18 +137,18 @@ export function FormatTime(time, longFormat) { * @param {number} time Time to be coloured * @returns {{string, string}} {text, color} Both the formatted time and color as strings in an array */ -export function GetTimeColor(time) { +export function GetTimeColour(time) { let color; let text; if (time <= 0) { if (CMOptions.TimeFormat) text = '00:00:00:00:00'; else text = 'Done!'; - color = ColorGreen; + color = ColourGreen; } else { text = FormatTime(time); - if (time > 300) color = ColorRed; - else if (time > 60) color = ColorOrange; - else color = ColorYellow; + if (time > 300) color = ColourRed; + else if (time > 60) color = ColourOrange; + else color = ColourYellow; } return { text, color }; } diff --git a/src/Disp/BuildingsUpgrades/Buildings.js b/src/Disp/BuildingsUpgrades/Buildings.js index e6c6452d..82f22da1 100644 --- a/src/Disp/BuildingsUpgrades/Buildings.js +++ b/src/Disp/BuildingsUpgrades/Buildings.js @@ -1,4 +1,3 @@ -/* eslint-disable no-nested-ternary */ import { CacheObjects1, CacheObjects10, @@ -7,7 +6,7 @@ import { import { CMOptions } from '../../Config/VariablesAndData'; import BuildingSell from '../../Sim/SimulationEvents/SellBuilding'; import { Beautify } from '../BeautifyAndFormatting/BeautifyFormatting'; -import { Colors, LastTargetBuildings } from '../VariablesAndData'; +import { ColoursOrdering, LastTargetBuildings } from '../VariablesAndData'; /** * Section: Functions related to right column of the screen (buildings/upgrades) @@ -15,8 +14,8 @@ import { Colors, LastTargetBuildings } from '../VariablesAndData'; /** * This function adjusts some things in the column of buildings. * It colours them, helps display the correct sell-price and shuffles the order when CM.Options.SortBuildings is set - * The function is called by CM.Disp.Draw(), CM.Disp.UpdateColors() & CM.Disp.RefreshScale() - * And by changes in CM.Options.BuildColor, CM.Options.SortBuild & CM.Data.Config.BulkBuildColor + * The function is called by CM.Disp.Draw(), CM.Disp.UpdateColours() & CM.Disp.RefreshScale() + * And by changes in CM.Options.BuildColour, CM.Options.SortBuild & CM.Data.Config.BulkBuildColour */ export default function UpdateBuildings() { let target = Game.buyBulk; @@ -30,10 +29,10 @@ export default function UpdateBuildings() { else if (target === 100) target = CacheObjects100; if (Game.buyMode === 1) { - if (CMOptions.BuildColor === 1) { + if (CMOptions.BuildColour === 1) { Object.keys(target).forEach((i) => { l(`productPrice${Game.Objects[i].id}`).style.color = - CMOptions.Colors[target[i].color]; + CMOptions[`Colour${target[i].color}`]; }); } else { Object.keys(Game.Objects).forEach((i) => { @@ -72,9 +71,10 @@ export default function UpdateBuildings() { }); arr.sort(function (a, b) { - return Colors.indexOf(a.color) > Colors.indexOf(b.color) + return ColoursOrdering.indexOf(a.color) > // eslint-disable-line no-nested-ternary + ColoursOrdering.indexOf(b.color) ? 1 - : Colors.indexOf(a.color) < Colors.indexOf(b.color) + : ColoursOrdering.indexOf(a.color) < ColoursOrdering.indexOf(b.color) // eslint-disable-line no-nested-ternary ? -1 : a.pp < b.pp ? -1 @@ -89,9 +89,10 @@ export default function UpdateBuildings() { }); arr.sort(function (a, b) { - return Colors.indexOf(a.color) > Colors.indexOf(b.color) + return ColoursOrdering.indexOf(a.color) > // eslint-disable-line no-nested-ternary + ColoursOrdering.indexOf(b.color) ? 1 - : Colors.indexOf(a.color) < Colors.indexOf(b.color) + : ColoursOrdering.indexOf(a.color) < ColoursOrdering.indexOf(b.color) // eslint-disable-line no-nested-ternary ? -1 : a.pp < b.pp ? -1 diff --git a/src/Disp/BuildingsUpgrades/UpgradeBar.js b/src/Disp/BuildingsUpgrades/UpgradeBar.js index 5f989419..08bfe134 100644 --- a/src/Disp/BuildingsUpgrades/UpgradeBar.js +++ b/src/Disp/BuildingsUpgrades/UpgradeBar.js @@ -1,13 +1,13 @@ import { - ColorBackPre, - ColorBlue, - ColorGray, - ColorGreen, - ColorOrange, - ColorPurple, - ColorRed, - ColorTextPre, - ColorYellow, + ColourBackPre, + ColourBlue, + ColourGray, + ColourGreen, + ColourOrange, + ColourPurple, + ColourRed, + ColourTextPre, + ColourYellow, } from '../VariablesAndData'; /** @@ -28,7 +28,7 @@ function CreateUpgradeBarLegend() { const div = document.createElement('div'); div.style.verticalAlign = 'middle'; const span = document.createElement('span'); - span.className = ColorBackPre + color; + span.className = ColourBackPre + color; span.style.display = 'inline-block'; span.style.height = '10px'; span.style.width = '10px'; @@ -39,24 +39,24 @@ function CreateUpgradeBarLegend() { }; legend.appendChild( - legendLine(ColorBlue, 'Better than the best PP of a building option'), + legendLine(ColourBlue, 'Better than the best PP of a building option'), ); legend.appendChild( - legendLine(ColorGreen, 'Same as the best PP building option'), + legendLine(ColourGreen, 'Same as the best PP building option'), ); legend.appendChild( - legendLine(ColorYellow, 'Within the top 10 of PP for buildings'), + legendLine(ColourYellow, 'Within the top 10 of PP for buildings'), ); legend.appendChild( - legendLine(ColorOrange, 'Within the top 20 of PP for buildings'), + legendLine(ColourOrange, 'Within the top 20 of PP for buildings'), ); legend.appendChild( - legendLine(ColorRed, 'Within the top 30 of PP for buildings'), + legendLine(ColourRed, 'Within the top 30 of PP for buildings'), ); legend.appendChild( - legendLine(ColorPurple, 'Outside of the top 30 of PP for buildings'), + legendLine(ColourPurple, 'Outside of the top 30 of PP for buildings'), ); - legend.appendChild(legendLine(ColorGray, 'Negative or infinity PP')); + legend.appendChild(legendLine(ColourGray, 'Negative or infinity PP')); return legend; } @@ -67,7 +67,7 @@ export default function CreateUpgradeBar() { const UpgradeBar = document.createElement('div'); UpgradeBar.id = 'CMUpgradeBar'; UpgradeBar.style.width = '100%'; - UpgradeBar.style.backgroundColor = 'black'; + UpgradeBar.style.backgroundColour = 'black'; UpgradeBar.style.textAlign = 'center'; UpgradeBar.style.fontWeight = 'bold'; UpgradeBar.style.display = 'none'; @@ -85,19 +85,19 @@ export default function CreateUpgradeBar() { const upgradeNumber = function (id, color) { const span = document.createElement('span'); span.id = id; - span.className = ColorTextPre + color; + span.className = ColourTextPre + color; span.style.width = '14.28571428571429%'; span.style.display = 'inline-block'; span.textContent = '0'; return span; }; - UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarBlue', ColorBlue)); - UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarGreen', ColorGreen)); - UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarYellow', ColorYellow)); - UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarOrange', ColorOrange)); - UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarRed', ColorRed)); - UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarPurple', ColorPurple)); - UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarGray', ColorGray)); + UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarBlue', ColourBlue)); + UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarGreen', ColourGreen)); + UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarYellow', ColourYellow)); + UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarOrange', ColourOrange)); + UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarRed', ColourRed)); + UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarPurple', ColourPurple)); + UpgradeBar.appendChild(upgradeNumber('CMUpgradeBarGray', ColourGray)); l('upgrades').parentNode.insertBefore( UpgradeBar, diff --git a/src/Disp/BuildingsUpgrades/Upgrades.js b/src/Disp/BuildingsUpgrades/Upgrades.js index 35c14227..d3076b28 100644 --- a/src/Disp/BuildingsUpgrades/Upgrades.js +++ b/src/Disp/BuildingsUpgrades/Upgrades.js @@ -1,27 +1,26 @@ -/* eslint-disable no-nested-ternary */ import { CacheUpgrades } from '../../Cache/VariablesAndData'; import { CMOptions } from '../../Config/VariablesAndData'; import { - ColorBackPre, - ColorBlue, - ColorGray, - ColorGreen, - ColorOrange, - ColorPurple, - ColorRed, - Colors, - ColorYellow, + ColourBackPre, + ColourBlue, + ColourGray, + ColourGreen, + ColourOrange, + ColourPurple, + ColourRed, + ColoursOrdering, + ColourYellow, } from '../VariablesAndData'; /** * This function adjusts some things in the upgrades section * It colours them and shuffles the order when CM.Options.SortBuildings is set - * The function is called by CM.Disp.Draw(), CM.Disp.ToggleUpgradeBarAndColor & CM.Disp.RefreshScale() + * The function is called by CM.Disp.Draw(), CM.Disp.ToggleUpgradeBarAndColour & CM.Disp.RefreshScale() * And by changes in CM.Options.SortUpgrades */ export default function UpdateUpgrades() { // This counts the amount of upgrades for each pp group and updates the Upgrade Bar - if (CMOptions.UpBarColor > 0) { + if (CMOptions.UpBarColour > 0) { let blue = 0; let green = 0; let yellow = 0; @@ -32,31 +31,31 @@ export default function UpdateUpgrades() { Object.keys(Game.UpgradesInStore).forEach((i) => { const me = Game.UpgradesInStore[i]; - let addedColor = false; + let addedColour = false; for (let j = 0; j < l(`upgrade${i}`).childNodes.length; j += 1) { if ( - l(`upgrade${i}`).childNodes[j].className.indexOf(ColorBackPre) !== -1 + l(`upgrade${i}`).childNodes[j].className.indexOf(ColourBackPre) !== -1 ) { l(`upgrade${i}`).childNodes[j].className = - ColorBackPre + CacheUpgrades[me.name].color; - addedColor = true; + ColourBackPre + CacheUpgrades[me.name].color; + addedColour = true; break; } } - if (!addedColor) { + if (!addedColour) { const div = document.createElement('div'); div.style.width = '10px'; div.style.height = '10px'; - div.className = ColorBackPre + CacheUpgrades[me.name].color; + div.className = ColourBackPre + CacheUpgrades[me.name].color; l(`upgrade${i}`).appendChild(div); } - if (CacheUpgrades[me.name].color === ColorBlue) blue += 1; - else if (CacheUpgrades[me.name].color === ColorGreen) green += 1; - else if (CacheUpgrades[me.name].color === ColorYellow) yellow += 1; - else if (CacheUpgrades[me.name].color === ColorOrange) orange += 1; - else if (CacheUpgrades[me.name].color === ColorRed) red += 1; - else if (CacheUpgrades[me.name].color === ColorPurple) purple += 1; - else if (CacheUpgrades[me.name].color === ColorGray) gray += 1; + if (CacheUpgrades[me.name].color === ColourBlue) blue += 1; + else if (CacheUpgrades[me.name].color === ColourGreen) green += 1; + else if (CacheUpgrades[me.name].color === ColourYellow) yellow += 1; + else if (CacheUpgrades[me.name].color === ColourOrange) orange += 1; + else if (CacheUpgrades[me.name].color === ColourRed) red += 1; + else if (CacheUpgrades[me.name].color === ColourPurple) purple += 1; + else if (CacheUpgrades[me.name].color === ColourGray) gray += 1; }); l('CMUpgradeBarBlue').textContent = blue; @@ -81,9 +80,9 @@ export default function UpdateUpgrades() { if (CMOptions.SortUpgrades) { arr.sort(function (a, b) { - return Colors.indexOf(a.color) > Colors.indexOf(b.color) + return ColoursOrdering.indexOf(a.color) > ColoursOrdering.indexOf(b.color) // eslint-disable-line no-nested-ternary ? 1 - : Colors.indexOf(a.color) < Colors.indexOf(b.color) + : ColoursOrdering.indexOf(a.color) < ColoursOrdering.indexOf(b.color) // eslint-disable-line no-nested-ternary ? -1 : a.pp < b.pp ? -1 diff --git a/src/Disp/Dragon/Dragon.js b/src/Disp/Dragon/Dragon.js index b6b4a330..4ec6de74 100644 --- a/src/Disp/Dragon/Dragon.js +++ b/src/Disp/Dragon/Dragon.js @@ -19,7 +19,7 @@ export function AddAuraInfo(aura) { const timeToRecover = FormatTime( priceOfChange / (bonusCPS + Game.cookiesPs), ); - const bonusCPSPercentage = Beautify(bonusCPS / Game.cookiesPs); + const bonusCPSPercentage = Beautify((bonusCPS / Game.cookiesPs) * 100); l('dragonAuraInfo').style.minHeight = '60px'; l('dragonAuraInfo').style.margin = '8px'; diff --git a/src/Disp/Draw.js b/src/Disp/DrawHook.js similarity index 87% rename from src/Disp/Draw.js rename to src/Disp/DrawHook.js index 62e05a19..427ded90 100644 --- a/src/Disp/Draw.js +++ b/src/Disp/DrawHook.js @@ -1,3 +1,4 @@ +import ToggleWrinklerButtons from '../Config/Toggles/ToggleWrinklerButtons'; import { CMOptions } from '../Config/VariablesAndData'; import { Beautify } from './BeautifyAndFormatting/BeautifyFormatting'; import UpdateBuildings from './BuildingsUpgrades/Buildings'; @@ -15,7 +16,7 @@ import { * This function handles all custom drawing for the Game.Draw() function. * It is hooked on 'draw' by CM.RegisterHooks() */ -export default function Draw() { +export default function CMDrawHook() { // Draw autosave timer in stats menu, this must be done here to make it count down correctly if ( Game.prefs.autosave && @@ -52,6 +53,9 @@ export default function Draw() { // Change menu refresh interval RefreshMenu(); + // Update display of wrinkler buttons, this checks if Elder Pledge has been bought and if they should be disabled + ToggleWrinklerButtons(); + // Replace Cookies counter because Orteil uses very weird code to "pad" it... if (CMOptions.Scale) { let str = l('cookies').innerHTML.replace( diff --git a/src/Disp/GoldenCookieTimers/GoldenCookieTimers.js b/src/Disp/GoldenCookieTimers/GoldenCookieTimers.js index a15a2747..8aa5df8c 100644 --- a/src/Disp/GoldenCookieTimers/GoldenCookieTimers.js +++ b/src/Disp/GoldenCookieTimers/GoldenCookieTimers.js @@ -1,4 +1,3 @@ -/* eslint-disable no-param-reassign */ /** Section: Functions related to the Golden Cookie Timers */ import { CMOptions } from '../../Config/VariablesAndData'; @@ -28,14 +27,14 @@ export default function CreateGCTimer(cookie) { cookie.pop(); }; GCTimer.onmouseover = function () { - cookie.l.style.filter = + cookie.l.style.filter = // eslint-disable-line no-param-reassign 'brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))'; - cookie.l.style.webkitFilter = + cookie.l.style.webkitFilter = // eslint-disable-line no-param-reassign 'brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))'; }; GCTimer.onmouseout = function () { - cookie.l.style.filter = ''; - cookie.l.style.webkitFilter = ''; + cookie.l.style.filter = ''; // eslint-disable-line no-param-reassign + cookie.l.style.webkitFilter = ''; // eslint-disable-line no-param-reassign }; GCTimers[cookie.id] = GCTimer; diff --git a/src/Disp/HelperFunctions/GetLumpColor.js b/src/Disp/HelperFunctions/GetLumpColor.js deleted file mode 100644 index 8da19d6b..00000000 --- a/src/Disp/HelperFunctions/GetLumpColor.js +++ /dev/null @@ -1,33 +0,0 @@ -import { - ColorGray, - ColorGreen, - ColorOrange, - ColorPurple, - ColorRed, - ColorYellow, -} from '../VariablesAndData'; - -/** - * This function returns Name and Color as object for sugar lump type that is given as input param. - * It is called by CM.Disp.UpdateTooltipSugarLump() - * @param {string} type Sugar Lump Type. - * @returns {{string}, {string}} text, color An array containing the text and display-color of the sugar lump - */ -export default function GetLumpColor(type) { - if (type === 0) { - return { text: 'Normal', color: ColorGray }; - } - if (type === 1) { - return { text: 'Bifurcated', color: ColorGreen }; - } - if (type === 2) { - return { text: 'Golden', color: ColorYellow }; - } - if (type === 3) { - return { text: 'Meaty', color: ColorOrange }; - } - if (type === 4) { - return { text: 'Caramelized', color: ColorPurple }; - } - return { text: 'Unknown Sugar Lump', color: ColorRed }; -} diff --git a/src/Disp/HelperFunctions/GetLumpColour.js b/src/Disp/HelperFunctions/GetLumpColour.js new file mode 100644 index 00000000..decb7bd0 --- /dev/null +++ b/src/Disp/HelperFunctions/GetLumpColour.js @@ -0,0 +1,33 @@ +import { + ColourGray, + ColourGreen, + ColourOrange, + ColourPurple, + ColourRed, + ColourYellow, +} from '../VariablesAndData'; + +/** + * This function returns Name and Colour as object for sugar lump type that is given as input param. + * It is called by CM.Disp.UpdateTooltipSugarLump() + * @param {string} type Sugar Lump Type. + * @returns {{string}, {string}} text, color An array containing the text and display-color of the sugar lump + */ +export default function GetLumpColour(type) { + if (type === 0) { + return { text: 'Normal', color: ColourGray }; + } + if (type === 1) { + return { text: 'Bifurcated', color: ColourGreen }; + } + if (type === 2) { + return { text: 'Golden', color: ColourYellow }; + } + if (type === 3) { + return { text: 'Meaty', color: ColourOrange }; + } + if (type === 4) { + return { text: 'Caramelized', color: ColourPurple }; + } + return { text: 'Unknown Sugar Lump', color: ColourRed }; +} diff --git a/src/Disp/HelperFunctions/UpdateBackground.js b/src/Disp/HelperFunctions/UpdateBackground.js index 50a3336c..8be41a52 100644 --- a/src/Disp/HelperFunctions/UpdateBackground.js +++ b/src/Disp/HelperFunctions/UpdateBackground.js @@ -11,4 +11,5 @@ export default function UpdateBackground() { Game.LeftBackground.canvas.parentNode.offsetWidth; Game.LeftBackground.canvas.height = Game.LeftBackground.canvas.parentNode.offsetHeight; + Game.DrawBackground(); } diff --git a/src/Disp/HelperFunctions/UpdateColors.js b/src/Disp/HelperFunctions/UpdateColors.js deleted file mode 100644 index c80fa7c6..00000000 --- a/src/Disp/HelperFunctions/UpdateColors.js +++ /dev/null @@ -1,33 +0,0 @@ -import { CMOptions } from '../../Config/VariablesAndData'; -import UpdateBuildings from '../BuildingsUpgrades/Buildings'; -import { - ColorBackPre, - ColorBorderPre, - Colors, - ColorTextPre, -} from '../VariablesAndData'; - -/** - * This function changes/refreshes colours if the user has set new standard colours - * The function is therefore called by a change in CM.Options.Colors - */ -export default function UpdateColors() { - let str = ''; - for (let i = 0; i < Colors.length; i++) { - str += `.${ColorTextPre}${Colors[i]} { color: ${ - CMOptions.Colors[Colors[i]] - }; }\n`; - } - for (let i = 0; i < Colors.length; i++) { - str += `.${ColorBackPre}${Colors[i]} { background-color: ${ - CMOptions.Colors[Colors[i]] - }; }\n`; - } - for (let i = 0; i < Colors.length; i++) { - str += `.${ColorBorderPre}${Colors[i]} { border: 1px solid ${ - CMOptions.Colors[Colors[i]] - }; }\n`; - } - l('CMCSS').textContent = str; - UpdateBuildings(); // Class has been already set -} diff --git a/src/Disp/HelperFunctions/UpdateColours.js b/src/Disp/HelperFunctions/UpdateColours.js new file mode 100644 index 00000000..e01a702c --- /dev/null +++ b/src/Disp/HelperFunctions/UpdateColours.js @@ -0,0 +1,33 @@ +import { CMOptions } from '../../Config/VariablesAndData'; +import UpdateBuildings from '../BuildingsUpgrades/Buildings'; +import { + ColourBackPre, + ColourBorderPre, + ColoursOrdering, + ColourTextPre, +} from '../VariablesAndData'; + +/** + * This function changes/refreshes colours if the user has set new standard colours + * The function is therefore called by a change in CM.Options.Colours + */ +export default function UpdateColours() { + let str = ''; + for (let i = 0; i < ColoursOrdering.length; i++) { + str += `.${ColourTextPre}${ColoursOrdering[i]} { color: ${ + CMOptions[`Colour${ColoursOrdering[i]}`] + }; }\n`; + } + for (let i = 0; i < ColoursOrdering.length; i++) { + str += `.${ColourBackPre}${ColoursOrdering[i]} { background-color: ${ + CMOptions[`Colour${ColoursOrdering[i]}`] + }; }\n`; + } + for (let i = 0; i < ColoursOrdering.length; i++) { + str += `.${ColourBorderPre}${ColoursOrdering[i]} { border: 1px solid ${ + CMOptions[`Colour${ColoursOrdering[i]}`] + }; }\n`; + } + l('CMCSS').textContent = str; + UpdateBuildings(); // Class has been already set +} diff --git a/src/Disp/InfoBars/BottomBar.js b/src/Disp/InfoBars/BottomBar.js index 33ecf842..bf56557a 100644 --- a/src/Disp/InfoBars/BottomBar.js +++ b/src/Disp/InfoBars/BottomBar.js @@ -10,14 +10,14 @@ import { VersionMajor, VersionMinor } from '../../Data/Moddata'; import { Beautify, FormatTime, - GetTimeColor, + GetTimeColour, } from '../BeautifyAndFormatting/BeautifyFormatting'; import GetCPS from '../HelperFunctions/GetCPS'; import GetWrinkConfigBank from '../HelperFunctions/GetWrinkConfigBank'; import { - ColorBlue, - ColorTextPre, - ColorYellow, + ColourBlue, + ColourTextPre, + ColourYellow, LastTargetBotBar, } from '../VariablesAndData'; import { CreateBotBarBuildingColumn } from './CreateDOMElements'; @@ -32,7 +32,7 @@ export function CreateBotBar() { BotBar.style.width = '100%'; BotBar.style.position = 'absolute'; BotBar.style.display = 'none'; - BotBar.style.backgroundColor = '#262224'; + BotBar.style.backgroundColour = '#262224'; BotBar.style.backgroundImage = 'linear-gradient(to bottom, #4d4548, #000000)'; BotBar.style.borderTop = '1px solid black'; BotBar.style.overflow = 'auto'; @@ -48,19 +48,21 @@ export function CreateBotBar() { const firstCol = function (text, color) { const td = document.createElement('td'); td.style.textAlign = 'right'; - td.className = ColorTextPre + color; + td.className = ColourTextPre + color; td.textContent = text; return td; }; const type = tbody.appendChild(document.createElement('tr')); type.style.fontWeight = 'bold'; - type.appendChild(firstCol(`CM ${VersionMajor}.${VersionMinor}`, ColorYellow)); + type.appendChild( + firstCol(`CM ${VersionMajor}.${VersionMinor}`, ColourYellow), + ); const bonus = tbody.appendChild(document.createElement('tr')); - bonus.appendChild(firstCol('Bonus Income', ColorBlue)); + bonus.appendChild(firstCol('Bonus Income', ColourBlue)); const pp = tbody.appendChild(document.createElement('tr')); - pp.appendChild(firstCol('Payback Period', ColorBlue)); + pp.appendChild(firstCol('Payback Period', ColourBlue)); const time = tbody.appendChild(document.createElement('tr')); - time.appendChild(firstCol('Time Left', ColorBlue)); + time.appendChild(firstCol('Time Left', ColourBlue)); l('wrapper').appendChild(BotBar); @@ -94,7 +96,7 @@ export function UpdateBotBar() { ].textContent = Beautify(target[i].bonus, 2); l('CMBotBar').firstChild.firstChild.childNodes[2].childNodes[ count - ].className = ColorTextPre + target[i].color; + ].className = ColourTextPre + target[i].color; let PPString; if (CMOptions.PPDisplayTime) PPString = FormatTime(Math.round(target[i].pp)); @@ -102,24 +104,24 @@ export function UpdateBotBar() { l('CMBotBar').firstChild.firstChild.childNodes[2].childNodes[ count ].textContent = PPString; - const timeColor = GetTimeColor( + const timeColour = GetTimeColour( (Game.Objects[i].bulkPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(), ); l('CMBotBar').firstChild.firstChild.childNodes[3].childNodes[ count - ].className = ColorTextPre + timeColor.color; + ].className = ColourTextPre + timeColour.color; if ( - timeColor.text === 'Done!' && + timeColour.text === 'Done!' && Game.cookies < Game.Objects[i].bulkPrice ) { l('CMBotBar').firstChild.firstChild.childNodes[3].childNodes[ count - ].textContent = `${timeColor.text} (with Wrink)`; + ].textContent = `${timeColour.text} (with Wrink)`; } else l('CMBotBar').firstChild.firstChild.childNodes[3].childNodes[ count - ].textContent = timeColor.text; + ].textContent = timeColour.text; }); } } diff --git a/src/Disp/InfoBars/CreateDOMElements.js b/src/Disp/InfoBars/CreateDOMElements.js index 01fb3715..5bd6b17c 100644 --- a/src/Disp/InfoBars/CreateDOMElements.js +++ b/src/Disp/InfoBars/CreateDOMElements.js @@ -1,6 +1,6 @@ /** Functions to create various DOM elements used by the Bars */ -import { ColorBackPre, ColorBlue, ColorTextPre } from '../VariablesAndData'; +import { ColourBackPre, ColourBlue, ColourTextPre } from '../VariablesAndData'; /** * This function creates an indivudual timer for the timer bar @@ -47,7 +47,7 @@ export function CreateTimer(id, name, bars) { colorBar.style.borderBottomRightRadius = '10px'; } if (typeof bars[i].color !== 'undefined') { - colorBar.className = ColorBackPre + bars[i].color; + colorBar.className = ColourBackPre + bars[i].color; } div.appendChild(colorBar); } @@ -83,7 +83,7 @@ export function CreateBotBarBuildingColumn(buildingName) { ); const span = header.appendChild(document.createElement('span')); - span.className = ColorTextPre + ColorBlue; + span.className = ColourTextPre + ColourBlue; header.appendChild(document.createTextNode(')')); type.lastChild.style.paddingLeft = '8px'; diff --git a/src/Disp/InfoBars/TimerBar.js b/src/Disp/InfoBars/TimerBar.js index 3c2bbb18..541037e7 100644 --- a/src/Disp/InfoBars/TimerBar.js +++ b/src/Disp/InfoBars/TimerBar.js @@ -3,11 +3,11 @@ import { UpdateBotTimerBarPosition } from '../../Config/SpecificToggles'; import { CMOptions } from '../../Config/VariablesAndData'; import { - BuffColors, - ColorBackPre, - ColorGray, - ColorOrange, - ColorPurple, + BuffColours, + ColourBackPre, + ColourGray, + ColourOrange, + ColourPurple, LastNumberOfTimers, } from '../VariablesAndData'; import { CreateTimer } from './CreateDOMElements'; @@ -23,19 +23,19 @@ export function CreateTimerBar() { TimerBar.style.height = '0px'; TimerBar.style.fontSize = '10px'; TimerBar.style.fontWeight = 'bold'; - TimerBar.style.backgroundColor = 'black'; + TimerBar.style.backgroundColour = 'black'; // Create standard Golden Cookie bar const CMTimerBarGC = CreateTimer('CMTimerBarGC', 'Next Cookie', [ - { id: 'CMTimerBarGCMinBar', color: ColorGray }, - { id: 'CMTimerBarGCBar', color: ColorPurple }, + { id: 'CMTimerBarGCMinBar', color: ColourGray }, + { id: 'CMTimerBarGCBar', color: ColourPurple }, ]); TimerBar.appendChild(CMTimerBarGC); // Create standard Reindeer bar const CMTimerBarRen = CreateTimer('CMTimerBarRen', 'Next Reindeer', [ - { id: 'CMTimerBarRenMinBar', color: ColorGray }, - { id: 'CMTimerBarRenBar', color: ColorOrange }, + { id: 'CMTimerBarRenMinBar', color: ColourGray }, + { id: 'CMTimerBarRenBar', color: ColourOrange }, ]); TimerBar.appendChild(CMTimerBarRen); const TimerBarBuffTimers = document.createElement('div'); @@ -166,12 +166,12 @@ export function UpdateTimerBar() { { id: `${Game.buffs[i].name}Bar` }, ]); timer.style.display = ''; - let classColor = ''; + let classColour = ''; // Gives specific timers specific colors - if (typeof BuffColors[Game.buffs[i].name] !== 'undefined') { - classColor = BuffColors[Game.buffs[i].name]; - } else classColor = ColorPurple; - timer.lastChild.children[1].className = ColorBackPre + classColor; + if (typeof BuffColours[Game.buffs[i].name] !== 'undefined') { + classColour = BuffColours[Game.buffs[i].name]; + } else classColour = ColourPurple; + timer.lastChild.children[1].className = ColourBackPre + classColour; timer.lastChild.children[1].style.color = 'black'; if (CMOptions.TimerBarOverlay === 2) timer.lastChild.children[1].textContent = `${Math.round( diff --git a/src/Disp/Initialization/WhiteScreen.js b/src/Disp/Initialization/FlashScreen.js similarity index 84% rename from src/Disp/Initialization/WhiteScreen.js rename to src/Disp/Initialization/FlashScreen.js index 6a41828f..98099e9d 100644 --- a/src/Disp/Initialization/WhiteScreen.js +++ b/src/Disp/Initialization/FlashScreen.js @@ -1,9 +1,9 @@ /** * This function creates a white square over the full screen and appends it to l('wrapper') */ -export default function CreateWhiteScreen() { +export default function CreateFlashScreen() { const WhiteScreen = document.createElement('div'); - WhiteScreen.id = 'CMWhiteScreen'; + WhiteScreen.id = 'CMFlashScreen'; WhiteScreen.style.width = '100%'; WhiteScreen.style.height = '100%'; WhiteScreen.style.backgroundColor = 'white'; diff --git a/src/Disp/MenuSections/AddMenus.js b/src/Disp/MenuSections/AddMenus.js index 61464374..dad9e4ae 100644 --- a/src/Disp/MenuSections/AddMenus.js +++ b/src/Disp/MenuSections/AddMenus.js @@ -1,7 +1,7 @@ import { CMOptions } from '../../Config/VariablesAndData'; -import AddMenuStats from './AddStatsPage'; -import AddMenuInfo from './InfoPage'; -import AddMenuPref from './SettingsPage'; +import AddMenuStats from './Statistics/AddStatsPage'; +import AddMenuInfo from './Info/InfoPage'; +import AddMenuPref from './Settings/SettingsPage'; /** * This function adds the calll the functions to add extra info to the stats and options pages diff --git a/src/Disp/MenuSections/InfoPage.js b/src/Disp/MenuSections/Info/InfoPage.js similarity index 86% rename from src/Disp/MenuSections/InfoPage.js rename to src/Disp/MenuSections/Info/InfoPage.js index 3c1cd3b3..44f3e255 100644 --- a/src/Disp/MenuSections/InfoPage.js +++ b/src/Disp/MenuSections/Info/InfoPage.js @@ -1,8 +1,8 @@ /** Functions related to the Stats page */ -import { ToggleHeader } from '../../Config/ToggleSetting'; -import { CMOptions } from '../../Config/VariablesAndData'; -import { LatestReleaseNotes, ModDescription } from '../../Data/Moddata'; +import { ToggleHeader } from '../../../Config/ToggleSetting'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import { LatestReleaseNotes, ModDescription } from '../../../Data/Moddata'; /** * This function adds stats created by CookieMonster to the stats page diff --git a/src/Disp/MenuSections/Prompt.js b/src/Disp/MenuSections/Prompt.js new file mode 100644 index 00000000..b4819904 --- /dev/null +++ b/src/Disp/MenuSections/Prompt.js @@ -0,0 +1,22 @@ +/** Creates a Prompt similar to the base game without some of the stuff breaking them */ +export default function CookieMonsterPrompt(content, options) { + Game.promptWrapL.className = 'framed'; + const str = content; + Game.promptL.innerHTML = `${str}
`; + Object.keys(options).forEach((i) => { + const option = document.createElement('a'); + option.id = `promptOption${i}`; + option.className = 'option'; + option.onclick = function () { + PlaySound('snd/tick.mp3'); + options[i][1](); + }; + option.textContent = options[i][0]; + Game.promptL.children[1].appendChild(option); + }); + Game.promptAnchorL.style.display = 'block'; + Game.darkenL.style.display = 'block'; + Game.promptL.focus(); + Game.promptOn = 1; + Game.UpdatePrompt(); +} diff --git a/src/Disp/MenuSections/Settings/CreateHeader.js b/src/Disp/MenuSections/Settings/CreateHeader.js new file mode 100644 index 00000000..f7a3a76d --- /dev/null +++ b/src/Disp/MenuSections/Settings/CreateHeader.js @@ -0,0 +1,35 @@ +import { ToggleHeader } from '../../../Config/ToggleSetting'; +import { CMOptions } from '../../../Config/VariablesAndData'; + +/** + * This function creates a header-object for the options page + * @param {string} config The name of the Config-group + * @param {string} text The to-be displayed name of the header + * @returns {object} div The header object + */ +export default function CreatePrefHeader(config, text) { + const div = document.createElement('div'); + div.className = 'title'; + + div.style.opacity = '0.7'; + div.style.fontSize = '17px'; + div.appendChild(document.createTextNode(`${text} `)); + const span = document.createElement('span'); // Creates the +/- button + span.style.cursor = 'pointer'; + span.style.display = 'inline-block'; + span.style.height = '14px'; + span.style.width = '14px'; + span.style.borderRadius = '7px'; + span.style.textAlign = 'center'; + span.style.backgroundColor = '#C0C0C0'; + span.style.color = 'black'; + span.style.fontSize = '13px'; + span.style.verticalAlign = 'middle'; + span.textContent = CMOptions.Header[config] ? '-' : '+'; + span.onclick = function () { + ToggleHeader(config); + Game.UpdateMenu(); + }; + div.appendChild(span); + return div; +} diff --git a/src/Disp/MenuSections/Settings/CreateOption.js b/src/Disp/MenuSections/Settings/CreateOption.js new file mode 100644 index 00000000..ea0b8d15 --- /dev/null +++ b/src/Disp/MenuSections/Settings/CreateOption.js @@ -0,0 +1,234 @@ +import jscolor, * as JsColor from '@eastdesire/jscolor'; +import ToggleFavouriteSetting from '../../../Config/Toggles/ToggleFavourites'; +import { SaveConfig } from '../../../Config/SaveLoadReload/SaveLoadReloadSettings'; +import { + ConfigPrefix, + ToggleConfig, + ToggleConfigVolume, +} from '../../../Config/ToggleSetting'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import {} from '../../../Data/Sectionheaders'; +import Config from '../../../Data/SettingsData'; +import RefreshScale from '../../HelperFunctions/RefreshScale'; +import UpdateColours from '../../HelperFunctions/UpdateColours'; +import Flash from '../../Notifications/Flash'; +import PlaySound from '../../Notifications/Sound'; +import { + FavouriteSettings, + SimpleTooltipElements, +} from '../../VariablesAndData'; +import CookieMonsterPrompt from '../Prompt'; + +/** + * This function creates the favourite setting star object + * @param {string} config The name of the option + * @returns {object} div The option object + */ +function CreateFavouriteStar(config) { + const FavStar = document.createElement('a'); + if (FavouriteSettings.includes(config)) { + FavStar.innerText = '★'; + FavStar.style.color = 'yellow'; + } else FavStar.innerText = '☆'; + FavStar.className = 'option'; + FavStar.onclick = function () { + ToggleFavouriteSetting(config); + SaveConfig(); + Game.UpdateMenu(); + }; + FavStar.onmouseover = function () { + Game.tooltip.draw( + this, + escape(SimpleTooltipElements.FavouriteSettingPlaceholder.innerHTML), + ); + }; + FavStar.onmouseout = function () { + Game.tooltip.hide(); + }; + FavStar.appendChild(document.createTextNode(' ')); + return FavStar; +} + +/** + * This function creates an option-object for the options page + * @param {string} config The name of the option + * @returns {object} div The option object + */ +export default function CreatePrefOption(config) { + const div = document.createElement('div'); + div.className = 'listing'; + if (CMOptions.FavouriteSettings === 1) { + div.appendChild(CreateFavouriteStar(config)); + } + if (Config[config].type === 'bool') { + const a = document.createElement('a'); + if (Config[config].toggle && CMOptions[config] === 0) { + a.className = 'option off'; + } else { + a.className = 'option'; + } + a.id = ConfigPrefix + config; + a.onclick = function () { + ToggleConfig(config); + }; + a.textContent = Config[config].label[CMOptions[config]]; + div.appendChild(a); + const label = document.createElement('label'); + label.textContent = Config[config].desc; + label.style.lineHeight = '1.6'; + div.appendChild(label); + return div; + } + if (Config[config].type === 'vol') { + const volume = document.createElement('div'); + volume.className = 'sliderBox'; + const title = document.createElement('div'); + title.style.float = 'left'; + title.innerHTML = Config[config].desc; + volume.appendChild(title); + const percent = document.createElement('div'); + percent.id = `slider${config}right`; + percent.style.float = 'right'; + percent.innerHTML = `${CMOptions[config]}%`; + volume.appendChild(percent); + const slider = document.createElement('input'); + slider.className = 'slider'; + slider.id = `slider${config}`; + slider.style.clear = 'both'; + slider.type = 'range'; + slider.min = '0'; + slider.max = '100'; + slider.step = '1'; + slider.value = CMOptions[config]; + slider.oninput = function () { + ToggleConfigVolume(config); + }; + slider.onchange = function () { + ToggleConfigVolume(config); + }; + volume.appendChild(slider); + div.appendChild(volume); + const a = document.createElement('a'); + a.className = 'option'; + a.onclick = function () { + PlaySound( + CMOptions[config.replace('Volume', 'SoundURL')], + config.replace('Volume', 'Sound'), + config, + true, + ); + }; + a.textContent = 'Test sound'; + div.appendChild(a); + return div; + } + if (Config[config].type === 'url') { + const span = document.createElement('span'); + span.className = 'option'; + span.textContent = `${Config[config].label} `; + span.style.lineHeight = '1.6'; + div.appendChild(span); + const input = document.createElement('input'); + input.id = ConfigPrefix + config; + input.className = 'option'; + input.type = 'text'; + input.readOnly = true; + input.setAttribute('value', CMOptions[config]); + input.style.width = '300px'; + div.appendChild(input); + div.appendChild(document.createTextNode(' ')); + const inputPrompt = document.createElement('input'); + inputPrompt.id = `${ConfigPrefix + config}Prompt`; + inputPrompt.className = 'option'; + inputPrompt.type = 'text'; + inputPrompt.setAttribute('value', CMOptions[config]); + const a = document.createElement('a'); + a.className = 'option'; + a.onclick = function () { + CookieMonsterPrompt(inputPrompt.outerHTML, [ + [ + 'Save', + function () { + CMOptions[config] = l(`${ConfigPrefix}${config}Prompt`).value; + SaveConfig(); + Game.ClosePrompt(); + Game.UpdateMenu(); + }, + ], + [ + 'Cancel', + function () { + Game.ClosePrompt(); + }, + ], + ]); + }; + a.textContent = 'Edit'; + div.appendChild(a); + const label = document.createElement('label'); + label.textContent = Config[config].desc; + label.style.lineHeight = '1.6'; + div.appendChild(label); + return div; + } + if (Config[config].type === 'colour') { + const innerSpan = document.createElement('span'); + innerSpan.className = 'option'; + const input = document.createElement('input'); + input.id = config; + input.style.width = '65px'; + input.setAttribute('value', CMOptions[config]); + innerSpan.appendChild(input); + const change = function () { + CMOptions[this.targetElement.id] = this.toHEXString(); + UpdateColours(); + SaveConfig(); + Game.UpdateMenu(); + }; + // eslint-disable-next-line no-new + new JsColor(input, { hash: true, position: 'right', onInput: change }); + const label = document.createElement('label'); + label.textContent = Config[config].desc; + label.style.lineHeight = '1.6'; + innerSpan.appendChild(label); + if (config.includes('Flash')) { + const a = document.createElement('a'); + a.className = 'option'; + a.onclick = function () { + Flash(3, config.replace('Colour', ''), true); + }; + a.textContent = 'Test flash'; + innerSpan.appendChild(a); + } + div.appendChild(innerSpan); + jscolor.init(); + return div; + } + if (Config[config].type === 'numscale') { + const span = document.createElement('span'); + span.className = 'option'; + span.textContent = `${Config[config].label} `; + span.style.lineHeight = '1.6'; + div.appendChild(span); + const input = document.createElement('input'); + input.id = ConfigPrefix + config; + input.className = 'option'; + input.type = 'number'; + input.value = CMOptions[config]; + input.min = Config[config].min; + input.max = Config[config].max; + input.oninput = function () { + CMOptions[config] = this.value; + SaveConfig(); + RefreshScale(); + }; + div.appendChild(input); + div.appendChild(document.createTextNode(' ')); + const label = document.createElement('label'); + label.textContent = Config[config].desc; + label.style.lineHeight = '1.6'; + div.appendChild(label); + return div; + } + return div; +} diff --git a/src/Disp/MenuSections/Settings/SettingsPage.js b/src/Disp/MenuSections/Settings/SettingsPage.js new file mode 100644 index 00000000..8284b19d --- /dev/null +++ b/src/Disp/MenuSections/Settings/SettingsPage.js @@ -0,0 +1,79 @@ +import { LoadConfig } from '../../../Config/SaveLoadReload/SaveLoadReloadSettings'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import { + ConfigGroups, + ConfigGroupsNotification, +} from '../../../Data/Sectionheaders'; +import Config from '../../../Data/SettingsData'; +import ConfigDefault from '../../../Data/SettingsDefault'; +import { FavouriteSettings } from '../../VariablesAndData'; +import CreatePrefHeader from './CreateHeader'; +import CreatePrefOption from './CreateOption'; + +/** + * This function adds the options/settings of CookieMonster to the options page + * It is called by CM.Disp.AddMenu + * @param {object} title On object that includes the title of the menu + */ +export default function AddMenuPref(title) { + const frag = document.createDocumentFragment(); + frag.appendChild(title); + + Object.keys(ConfigGroups).forEach((group) => { + if (group === 'Favourite') { + if (FavouriteSettings.length !== 0 && CMOptions.FavouriteSettings > 0) { + frag.appendChild(CreatePrefHeader(group, ConfigGroups[group])); // (group, display-name of group) + if (CMOptions.Header[group]) + for (let index = 0; index < FavouriteSettings.length; index++) { + frag.appendChild(CreatePrefOption(FavouriteSettings[index])); + } + } + } else { + frag.appendChild(CreatePrefHeader(group, ConfigGroups[group])); // (group, display-name of group) + if (CMOptions.Header[group]) { + // 0 is show, 1 is collapsed + // Make sub-sections of Notification section + if (group === 'Notification') { + Object.keys(ConfigGroupsNotification).forEach((subGroup) => { + const subGroupObject = CreatePrefHeader( + subGroup, + ConfigGroupsNotification[subGroup], + ); // (group, display-name of group) + subGroupObject.style.fontSize = '15px'; + subGroupObject.style.opacity = '0.5'; + frag.appendChild(subGroupObject); + if (CMOptions.Header[subGroup]) { + Object.keys(Config).forEach((option) => { + if (Config[option].group === subGroup) + frag.appendChild(CreatePrefOption(option)); + }); + } + }); + } else { + Object.keys(Config).forEach((option) => { + if (Config[option].group === group) + frag.appendChild(CreatePrefOption(option)); + }); + } + } + } + }); + + const resDef = document.createElement('div'); + resDef.className = 'listing'; + const resDefBut = document.createElement('a'); + resDefBut.className = 'option'; + resDefBut.onclick = function () { + LoadConfig(ConfigDefault); + }; + resDefBut.textContent = 'Restore Default'; + resDef.appendChild(resDefBut); + frag.appendChild(resDef); + + l('menu').childNodes[2].insertBefore( + frag, + l('menu').childNodes[2].childNodes[ + l('menu').childNodes[2].childNodes.length - 1 + ], + ); +} diff --git a/src/Disp/MenuSections/SettingsPage.js b/src/Disp/MenuSections/SettingsPage.js deleted file mode 100644 index 4807ae6b..00000000 --- a/src/Disp/MenuSections/SettingsPage.js +++ /dev/null @@ -1,281 +0,0 @@ -/** Functions related to the Options/Preferences page */ - -import jscolor, * as JsColor from '@eastdesire/jscolor'; -import { - LoadConfig, - SaveConfig, -} from '../../Config/SaveLoadReload/SaveLoadReloadSettings'; -import { - ConfigPrefix, - ToggleConfig, - ToggleConfigVolume, - ToggleHeader, -} from '../../Config/ToggleSetting'; -import { CMOptions } from '../../Config/VariablesAndData'; -import { - ConfigGroups, - ConfigGroupsNotification, -} from '../../Data/Sectionheaders'; -import Config from '../../Data/SettingsData'; -import ConfigDefault from '../../Data/SettingsDefault'; -import RefreshScale from '../HelperFunctions/RefreshScale'; -import UpdateColors from '../HelperFunctions/UpdateColors'; -import PlaySound from '../Notifications/Sound'; -import { Colors } from '../VariablesAndData'; - -/** - * This function creates a header-object for the options page - * @param {string} config The name of the Config-group - * @param {string} text The to-be displayed name of the header - * @returns {object} div The header object - */ -function CreatePrefHeader(config, text) { - const div = document.createElement('div'); - div.className = 'title'; - - div.style.opacity = '0.7'; - div.style.fontSize = '17px'; - div.appendChild(document.createTextNode(`${text} `)); - const span = document.createElement('span'); // Creates the +/- button - span.style.cursor = 'pointer'; - span.style.display = 'inline-block'; - span.style.height = '14px'; - span.style.width = '14px'; - span.style.borderRadius = '7px'; - span.style.textAlign = 'center'; - span.style.backgroundColor = '#C0C0C0'; - span.style.color = 'black'; - span.style.fontSize = '13px'; - span.style.verticalAlign = 'middle'; - span.textContent = CMOptions.Header[config] ? '-' : '+'; - span.onclick = function () { - ToggleHeader(config); - Game.UpdateMenu(); - }; - div.appendChild(span); - return div; -} - -/** - * This function creates an option-object for the options page - * @param {string} config The name of the option - * @returns {object} div The option object - */ -function CreatePrefOption(config) { - const div = document.createElement('div'); - div.className = 'listing'; - if (Config[config].type === 'bool') { - const a = document.createElement('a'); - if (Config[config].toggle && CMOptions[config] === 0) { - a.className = 'option off'; - } else { - a.className = 'option'; - } - a.id = ConfigPrefix + config; - a.onclick = function () { - ToggleConfig(config); - }; - a.textContent = Config[config].label[CMOptions[config]]; - div.appendChild(a); - const label = document.createElement('label'); - label.textContent = Config[config].desc; - div.appendChild(label); - return div; - } - if (Config[config].type === 'vol') { - const volume = document.createElement('div'); - volume.className = 'sliderBox'; - const title = document.createElement('div'); - title.style.float = 'left'; - title.innerHTML = Config[config].desc; - volume.appendChild(title); - const percent = document.createElement('div'); - percent.id = `slider${config}right`; - percent.style.float = 'right'; - percent.innerHTML = `${CMOptions[config]}%`; - volume.appendChild(percent); - const slider = document.createElement('input'); - slider.className = 'slider'; - slider.id = `slider${config}`; - slider.style.clear = 'both'; - slider.type = 'range'; - slider.min = '0'; - slider.max = '100'; - slider.step = '1'; - slider.value = CMOptions[config]; - slider.oninput = function () { - ToggleConfigVolume(config); - }; - slider.onchange = function () { - ToggleConfigVolume(config); - }; - volume.appendChild(slider); - div.appendChild(volume); - const a = document.createElement('a'); - a.className = 'option'; - a.onclick = function () { - PlaySound( - CMOptions[config.replace('Volume', 'SoundURL')], - config.replace('Volume', 'Sound'), - config, - true, - ); - }; - a.textContent = 'Test sound'; - div.appendChild(a); - return div; - } - if (Config[config].type === 'url') { - const span = document.createElement('span'); - span.className = 'option'; - span.textContent = `${Config[config].label} `; - div.appendChild(span); - const input = document.createElement('input'); - input.id = ConfigPrefix + config; - input.className = 'option'; - input.type = 'text'; - input.readOnly = true; - input.setAttribute('value', CMOptions[config]); - input.style.width = '300px'; - div.appendChild(input); - div.appendChild(document.createTextNode(' ')); - const inputPrompt = document.createElement('input'); - inputPrompt.id = `${ConfigPrefix + config}Prompt`; - inputPrompt.className = 'option'; - inputPrompt.type = 'text'; - inputPrompt.setAttribute('value', CMOptions[config]); - const a = document.createElement('a'); - a.className = 'option'; - a.onclick = function () { - Game.Prompt(inputPrompt.outerHTML, [ - [ - 'Save', - function () { - CMOptions[`${config}`] = l(`${ConfigPrefix}${config}Prompt`).value; - SaveConfig(); - Game.ClosePrompt(); - Game.UpdateMenu(); - }, - ], - 'Cancel', - ]); - }; - a.textContent = 'Edit'; - div.appendChild(a); - const label = document.createElement('label'); - label.textContent = Config[config].desc; - div.appendChild(label); - return div; - } - if (Config[config].type === 'color') { - div.className = ''; - for (let i = 0; i < Colors.length; i++) { - const innerDiv = document.createElement('div'); - innerDiv.className = 'listing'; - const input = document.createElement('input'); - input.id = Colors[i]; - input.style.width = '65px'; - input.setAttribute('value', CMOptions.Colors[Colors[i]]); - innerDiv.appendChild(input); - const change = function () { - CMOptions.Colors[this.targetElement.id] = this.toHEXString(); - UpdateColors(); - SaveConfig(); - Game.UpdateMenu(); - }; - // eslint-disable-next-line no-new - new JsColor(input, { hash: true, position: 'right', onInput: change }); - const label = document.createElement('label'); - label.textContent = Config.Colors.desc[Colors[i]]; - innerDiv.appendChild(label); - div.appendChild(innerDiv); - } - jscolor.init(); - return div; - } - if (Config[config].type === 'numscale') { - const span = document.createElement('span'); - span.className = 'option'; - span.textContent = `${Config[config].label} `; - div.appendChild(span); - const input = document.createElement('input'); - input.id = ConfigPrefix + config; - input.className = 'option'; - input.type = 'number'; - input.value = CMOptions[config]; - input.min = Config[config].min; - input.max = Config[config].max; - input.oninput = function () { - if (this.value > this.max) console.log('TEST'); - CMOptions[config] = this.value; - SaveConfig(); - RefreshScale(); - }; - div.appendChild(input); - div.appendChild(document.createTextNode(' ')); - const label = document.createElement('label'); - label.textContent = Config[config].desc; - div.appendChild(label); - return div; - } - return div; -} - -/** - * This function adds the options/settings of CookieMonster to the options page - * It is called by CM.Disp.AddMenu - * @param {object} title On object that includes the title of the menu - */ -export default function AddMenuPref(title) { - const frag = document.createDocumentFragment(); - frag.appendChild(title); - - Object.keys(ConfigGroups).forEach((group) => { - const groupObject = CreatePrefHeader(group, ConfigGroups[group]); // (group, display-name of group) - frag.appendChild(groupObject); - if (CMOptions.Header[group]) { - // 0 is show, 1 is collapsed - // Make sub-sections of Notification section - if (group === 'Notification') { - Object.keys(ConfigGroupsNotification).forEach((subGroup) => { - const subGroupObject = CreatePrefHeader( - subGroup, - ConfigGroupsNotification[subGroup], - ); // (group, display-name of group) - subGroupObject.style.fontSize = '15px'; - subGroupObject.style.opacity = '0.5'; - frag.appendChild(subGroupObject); - if (CMOptions.Header[subGroup]) { - Object.keys(Config).forEach((option) => { - if (Config[option].group === subGroup) - frag.appendChild(CreatePrefOption(option)); - }); - } - }); - } else { - Object.keys(Config).forEach((option) => { - if (Config[option].group === group) - frag.appendChild(CreatePrefOption(option)); - }); - } - } - }); - - const resDef = document.createElement('div'); - resDef.className = 'listing'; - const resDefBut = document.createElement('a'); - resDefBut.className = 'option'; - resDefBut.onclick = function () { - LoadConfig(ConfigDefault); - }; - resDefBut.textContent = 'Restore Default'; - resDef.appendChild(resDefBut); - frag.appendChild(resDef); - - l('menu').childNodes[2].insertBefore( - frag, - l('menu').childNodes[2].childNodes[ - l('menu').childNodes[2].childNodes.length - 1 - ], - ); -} diff --git a/src/Disp/MenuSections/AddStatsPage.js b/src/Disp/MenuSections/Statistics/AddStatsPage.js similarity index 81% rename from src/Disp/MenuSections/AddStatsPage.js rename to src/Disp/MenuSections/Statistics/AddStatsPage.js index ddede578..4f7beb4a 100644 --- a/src/Disp/MenuSections/AddStatsPage.js +++ b/src/Disp/MenuSections/Statistics/AddStatsPage.js @@ -3,19 +3,21 @@ import { AddMissingUpgrades } from './CreateMissingUpgrades'; import * as CreateSections from './CreateStatsSections'; import * as CreateElements from './CreateDOMElements'; -import * as GameData from '../../Data/Gamedata'; -import { CMOptions } from '../../Config/VariablesAndData'; +import * as GameData from '../../../Data/Gamedata'; +import { CMOptions } from '../../../Config/VariablesAndData'; import { CacheAverageClicks, + CacheAverageCookiesFromClicks, CacheWrinklersFattest, CacheWrinklersNormal, CacheWrinklersTotal, -} from '../../Cache/VariablesAndData'; -import PopAllNormalWrinklers from '../HelperFunctions/PopWrinklers'; -import { ClickTimes, CookieTimes } from '../VariablesAndData'; -import GetCPS from '../HelperFunctions/GetCPS'; -import { Beautify } from '../BeautifyAndFormatting/BeautifyFormatting'; +} from '../../../Cache/VariablesAndData'; +import PopAllNormalWrinklers from '../../HelperFunctions/PopWrinklers'; +import { ClickTimes, CookieTimes } from '../../VariablesAndData'; +import GetCPS from '../../HelperFunctions/GetCPS'; +import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting'; +import AddMissingAchievements from './CreateMissingAchievements'; /** * This function adds stats created by CookieMonster to the stats page @@ -114,7 +116,7 @@ export default function AddMenuStats(title) { stats.appendChild( CreateElements.StatsListing( 'basic', - `Average Cookies Per Second (Past ${ + `Average cookies per second (past ${ CookieTimes[CMOptions.AvgCPSHist] < 60 ? `${CookieTimes[CMOptions.AvgCPSHist]} seconds` : CookieTimes[CMOptions.AvgCPSHist] / 60 + @@ -126,12 +128,27 @@ export default function AddMenuStats(title) { stats.appendChild( CreateElements.StatsListing( 'basic', - `Average Cookie Clicks Per Second (Past ${ + `Average cookie clicks per second (past ${ ClickTimes[CMOptions.AvgClicksHist] }${CMOptions.AvgClicksHist === 0 ? ' second' : ' seconds'})`, document.createTextNode(Beautify(CacheAverageClicks, 1)), ), ); + stats.appendChild( + CreateElements.StatsListing( + 'basic', + `Cookies from clicking (past ${ClickTimes[CMOptions.AvgClicksHist]}${ + CMOptions.AvgClicksHist === 0 ? ' second' : ' seconds' + })`, + document.createTextNode( + Beautify( + CacheAverageCookiesFromClicks.calcSum( + CacheAverageClicks * ClickTimes[CMOptions.AvgClicksHist], + ), + ), + ), + ), + ); if (Game.Has('Fortune cookies')) { const fortunes = []; Object.keys(GameData.Fortunes).forEach((i) => { @@ -152,7 +169,7 @@ export default function AddMenuStats(title) { stats.appendChild( CreateElements.StatsListing( 'basic', - 'Missed Golden Cookies', + 'Missed golden cookies', document.createTextNode(Beautify(Game.missedGoldenClicks)), ), ); @@ -175,4 +192,7 @@ export default function AddMenuStats(title) { if (CMOptions.MissingUpgrades) { AddMissingUpgrades(); } + if (CMOptions.MissingAchievements) { + AddMissingAchievements(); + } } diff --git a/src/Disp/MenuSections/CreateDOMElements.js b/src/Disp/MenuSections/Statistics/CreateDOMElements.js similarity index 96% rename from src/Disp/MenuSections/CreateDOMElements.js rename to src/Disp/MenuSections/Statistics/CreateDOMElements.js index bafd0da9..ae367212 100644 --- a/src/Disp/MenuSections/CreateDOMElements.js +++ b/src/Disp/MenuSections/Statistics/CreateDOMElements.js @@ -1,8 +1,8 @@ /** Section: Functions related to the creation of basic DOM elements page */ -import { ToggleHeader } from '../../Config/ToggleSetting'; -import { CMOptions } from '../../Config/VariablesAndData'; -import { SimpleTooltipElements } from '../VariablesAndData'; +import { ToggleHeader } from '../../../Config/ToggleSetting'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import { SimpleTooltipElements } from '../../VariablesAndData'; /** * This function creates a header-object for the stats page diff --git a/src/Disp/MenuSections/Statistics/CreateMissingAchievements.js b/src/Disp/MenuSections/Statistics/CreateMissingAchievements.js new file mode 100644 index 00000000..e90e944b --- /dev/null +++ b/src/Disp/MenuSections/Statistics/CreateMissingAchievements.js @@ -0,0 +1,86 @@ +import { CMOptions } from '../../../Config/VariablesAndData'; + +function CrateTooltipLockedAchievements(me) { + const tags = []; + if (me.pool === 'shadow') tags.push('Shadow Achievement', '#9700cf'); + else tags.push('Achievement', 0); + tags.push('Locked', 0); + + let neuromancy = 0; + if (Game.Has('Neuromancy') || (Game.sesame && me.pool === 'debug')) + neuromancy = 1; + if (neuromancy && me.won === 0) tags.push('Click to win!', '#00c462'); + else if (neuromancy && me.won > 0) tags.push('Click to lose!', '#00c462'); + + let { icon } = me; + if (me.iconFunction) icon = me.iconFunction(); + + let { desc } = me; + if (me.descFunc) desc = me.descFunc('stats'); + + let tagsStr = ''; + for (let i = 0; i < tags.length; i += 2) { + if (i % 2 === 0) + tagsStr += `
[${tags[i]}]
`; + } + tagsStr = tagsStr.substring(1); + + return `
+
+
${me.name}
+ ${tagsStr}
${desc}
+ ${ + Game.sesame + ? `
Id : ${me.id} | Order : ${Math.floor( + me.order, + )}${me.tier ? ` | Tier : ${me.tier}` : ''}
` + : '' + }`; +} + +/** + * This function overwrites the crates of missing achievements + */ +export default function AddMissingAchievements() { + let achievs; + Object.values(document.querySelectorAll('div.title')).forEach((i) => { + if (i.textContent.includes('Achievements')) { + achievs = i.parentElement.querySelectorAll('div.listing.crateBox')[0]; + } + }); + if (CMOptions.MissingAchievements) { + Object.values(achievs.children).forEach((achievsCrate) => { + if (!achievsCrate.className.includes('enabled')) { + const id = achievsCrate.onclick.toString().match(/(?<=\[).*(?=\])/g)[0]; + const { icon } = Game.AchievementsById[id]; + // eslint-disable-next-line no-param-reassign + achievsCrate.style.backgroundPosition = `${-icon[0] * 48}px ${ + -icon[1] * 48 + }px`; + // eslint-disable-next-line no-param-reassign + achievsCrate.onmouseover = function () { + if (!Game.mouseDown) { + Game.setOnCrate(this); + Game.tooltip.dynamic = 1; + Game.tooltip.draw( + this, + function () { + return (function () { + return CrateTooltipLockedAchievements( + Game.AchievementsById[id], + ); + })(); + }, + 'top', + ); + Game.tooltip.wobble(); + } + }; + } + }); + } +} diff --git a/src/Disp/MenuSections/CreateMissingUpgrades.js b/src/Disp/MenuSections/Statistics/CreateMissingUpgrades.js similarity index 99% rename from src/Disp/MenuSections/CreateMissingUpgrades.js rename to src/Disp/MenuSections/Statistics/CreateMissingUpgrades.js index ad8785c6..86e32bdd 100644 --- a/src/Disp/MenuSections/CreateMissingUpgrades.js +++ b/src/Disp/MenuSections/Statistics/CreateMissingUpgrades.js @@ -4,7 +4,7 @@ import { CacheMissingUpgrades, CacheMissingUpgradesCookies, CacheMissingUpgradesPrestige, -} from '../../Cache/VariablesAndData'; +} from '../../../Cache/VariablesAndData'; /** * This function creates the missing upgrades sections for prestige, normal and cookie upgrades diff --git a/src/Disp/MenuSections/CreateStatsSections.js b/src/Disp/MenuSections/Statistics/CreateStatsSections.js similarity index 85% rename from src/Disp/MenuSections/CreateStatsSections.js rename to src/Disp/MenuSections/Statistics/CreateStatsSections.js index ee11f277..d53e7d96 100644 --- a/src/Disp/MenuSections/CreateStatsSections.js +++ b/src/Disp/MenuSections/Statistics/CreateStatsSections.js @@ -1,7 +1,7 @@ /** Functions to create the individual sections of the Statistics page */ -import * as GameData from '../../Data/Gamedata'; -import { MaxChainCookieReward } from '../../Cache/Stats/ChainCookies'; +import * as GameData from '../../../Data/Gamedata'; +import { MaxChainCookieReward } from '../../../Cache/Stats/ChainCookies'; import { CacheAvgCPSWithChoEgg, CacheCentEgg, @@ -35,17 +35,17 @@ import { CacheSeaSpec, CacheWrathCookiesMult, CacheWrinklersTotal, -} from '../../Cache/VariablesAndData'; -import { CMOptions } from '../../Config/VariablesAndData'; -import ResetBonus from '../../Sim/SimulationEvents/ResetAscension'; +} from '../../../Cache/VariablesAndData'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import ResetBonus from '../../../Sim/SimulationEvents/ResetAscension'; import { Beautify, FormatTime, -} from '../BeautifyAndFormatting/BeautifyFormatting'; +} from '../../BeautifyAndFormatting/BeautifyFormatting'; -import GetCPS from '../HelperFunctions/GetCPS'; -import GetWrinkConfigBank from '../HelperFunctions/GetWrinkConfigBank'; -import { ColorGreen, ColorRed, ColorTextPre } from '../VariablesAndData'; +import GetCPS from '../../HelperFunctions/GetCPS'; +import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank'; +import { ColourGreen, ColourRed, ColourTextPre } from '../../VariablesAndData'; import { StatsListing, StatsHeader, StatsMissDisp } from './CreateDOMElements'; /** @@ -61,8 +61,8 @@ export function LuckySection() { const section = document.createElement('div'); section.className = 'CMStatsLuckySection'; - const luckyColor = - Game.cookies + GetWrinkConfigBank() < CacheLucky ? ColorRed : ColorGreen; + const luckyColour = + Game.cookies + GetWrinkConfigBank() < CacheLucky ? ColourRed : ColourGreen; const luckyTime = Game.cookies + GetWrinkConfigBank() < CacheLucky ? FormatTime( @@ -72,7 +72,7 @@ export function LuckySection() { const luckyReqFrag = document.createDocumentFragment(); const luckyReqSpan = document.createElement('span'); luckyReqSpan.style.fontWeight = 'bold'; - luckyReqSpan.className = ColorTextPre + luckyColor; + luckyReqSpan.className = ColourTextPre + luckyColour; luckyReqSpan.textContent = Beautify(CacheLucky); luckyReqFrag.appendChild(luckyReqSpan); if (luckyTime !== '') { @@ -83,16 +83,16 @@ export function LuckySection() { section.appendChild( StatsListing( 'withTooltip', - '"Lucky!" Cookies Required', + '"Lucky!" cookies required', luckyReqFrag, goldCookTooltip, ), ); - const luckyColorFrenzy = + const luckyColourFrenzy = Game.cookies + GetWrinkConfigBank() < CacheLuckyFrenzy - ? ColorRed - : ColorGreen; + ? ColourRed + : ColourGreen; const luckyTimeFrenzy = Game.cookies + GetWrinkConfigBank() < CacheLuckyFrenzy ? FormatTime( @@ -102,7 +102,7 @@ export function LuckySection() { const luckyReqFrenFrag = document.createDocumentFragment(); const luckyReqFrenSpan = document.createElement('span'); luckyReqFrenSpan.style.fontWeight = 'bold'; - luckyReqFrenSpan.className = ColorTextPre + luckyColorFrenzy; + luckyReqFrenSpan.className = ColourTextPre + luckyColourFrenzy; luckyReqFrenSpan.textContent = Beautify(CacheLuckyFrenzy); luckyReqFrenFrag.appendChild(luckyReqFrenSpan); if (luckyTimeFrenzy !== '') { @@ -113,7 +113,7 @@ export function LuckySection() { section.appendChild( StatsListing( 'withTooltip', - '"Lucky!" Cookies Required (Frenzy)', + '"Lucky!" cookies required (frenzy)', luckyReqFrenFrag, goldCookTooltip, ), @@ -123,14 +123,14 @@ export function LuckySection() { const luckyRewardMaxSpan = document.createElement('span'); luckyRewardMaxSpan.style.fontWeight = 'bold'; - luckyRewardMaxSpan.className = ColorTextPre + CacheLuckyReward; + luckyRewardMaxSpan.className = ColourTextPre + CacheLuckyReward; luckyRewardMaxSpan.textContent = Beautify(CacheLuckyReward) + (luckySplit ? ` / ${Beautify(CacheLuckyWrathReward)}` : ''); section.appendChild( StatsListing( 'withTooltip', - `"Lucky!" Reward (MAX)${luckySplit ? ' (Golden / Wrath)' : ''}`, + `"Lucky!" reward (max)${luckySplit ? ' (golden / wrath)' : ''}`, luckyRewardMaxSpan, goldCookTooltip, ), @@ -138,14 +138,14 @@ export function LuckySection() { const luckyRewardFrenzyMaxSpan = document.createElement('span'); luckyRewardFrenzyMaxSpan.style.fontWeight = 'bold'; - luckyRewardFrenzyMaxSpan.className = ColorTextPre + luckyRewardFrenzyMaxSpan; + luckyRewardFrenzyMaxSpan.className = ColourTextPre + luckyRewardFrenzyMaxSpan; luckyRewardFrenzyMaxSpan.textContent = Beautify(CacheLuckyRewardFrenzy) + (luckySplit ? ` / ${Beautify(CacheLuckyWrathRewardFrenzy)}` : ''); section.appendChild( StatsListing( 'withTooltip', - `"Lucky!" Reward (MAX) (Frenzy)${luckySplit ? ' (Golden / Wrath)' : ''}`, + `"Lucky!" reward (max) (frenzy)${luckySplit ? ' (golden / wrath)' : ''}`, luckyRewardFrenzyMaxSpan, goldCookTooltip, ), @@ -158,14 +158,14 @@ export function LuckySection() { ) + 13; const luckyCurSpan = document.createElement('span'); luckyCurSpan.style.fontWeight = 'bold'; - luckyCurSpan.className = ColorTextPre + luckyCurSpan; + luckyCurSpan.className = ColourTextPre + luckyCurSpan; luckyCurSpan.textContent = Beautify(CacheGoldenCookiesMult * luckyCurBase) + (luckySplit ? ` / ${Beautify(CacheWrathCookiesMult * luckyCurBase)}` : ''); section.appendChild( StatsListing( 'withTooltip', - `"Lucky!" Reward (CUR)${luckySplit ? ' (Golden / Wrath)' : ''}`, + `"Lucky!" reward (cur)${luckySplit ? ' (golden / wrath)' : ''}`, luckyCurSpan, goldCookTooltip, ), @@ -186,10 +186,10 @@ export function ChainSection() { const section = document.createElement('div'); section.className = 'CMStatsChainSection'; - const chainColor = + const chainColour = Game.cookies + GetWrinkConfigBank() < CacheChainRequired - ? ColorRed - : ColorGreen; + ? ColourRed + : ColourGreen; const chainTime = Game.cookies + GetWrinkConfigBank() < CacheChainRequired ? FormatTime( @@ -200,7 +200,7 @@ export function ChainSection() { const chainReqFrag = document.createDocumentFragment(); const chainReqSpan = document.createElement('span'); chainReqSpan.style.fontWeight = 'bold'; - chainReqSpan.className = ColorTextPre + chainColor; + chainReqSpan.className = ColourTextPre + chainColour; chainReqSpan.textContent = Beautify(CacheChainRequired); chainReqFrag.appendChild(chainReqSpan); if (chainTime !== '') { @@ -211,16 +211,16 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - '"Chain" Cookies Required', + '"Chain" cookies required', chainReqFrag, goldCookTooltip, ), ); - const chainWrathColor = + const chainWrathColour = Game.cookies + GetWrinkConfigBank() < CacheChainWrathRequired - ? ColorRed - : ColorGreen; + ? ColourRed + : ColourGreen; const chainWrathTime = Game.cookies + GetWrinkConfigBank() < CacheChainWrathRequired ? FormatTime( @@ -231,7 +231,7 @@ export function ChainSection() { const chainWrathReqFrag = document.createDocumentFragment(); const chainWrathReqSpan = document.createElement('span'); chainWrathReqSpan.style.fontWeight = 'bold'; - chainWrathReqSpan.className = ColorTextPre + chainWrathColor; + chainWrathReqSpan.className = ColourTextPre + chainWrathColour; chainWrathReqSpan.textContent = Beautify(CacheChainWrathRequired); chainWrathReqFrag.appendChild(chainWrathReqSpan); if (chainWrathTime !== '') { @@ -242,16 +242,16 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - '"Chain" Cookies Required (Wrath)', + '"Chain" cookies required (Wrath)', chainWrathReqFrag, goldCookTooltip, ), ); - const chainColorFrenzy = + const chainColourFrenzy = Game.cookies + GetWrinkConfigBank() < CacheChainFrenzyRequired - ? ColorRed - : ColorGreen; + ? ColourRed + : ColourGreen; const chainTimeFrenzy = Game.cookies + GetWrinkConfigBank() < CacheChainFrenzyRequired ? FormatTime( @@ -262,7 +262,7 @@ export function ChainSection() { const chainReqFrenFrag = document.createDocumentFragment(); const chainReqFrenSpan = document.createElement('span'); chainReqFrenSpan.style.fontWeight = 'bold'; - chainReqFrenSpan.className = ColorTextPre + chainColorFrenzy; + chainReqFrenSpan.className = ColourTextPre + chainColourFrenzy; chainReqFrenSpan.textContent = Beautify(CacheChainFrenzyRequired); chainReqFrenFrag.appendChild(chainReqFrenSpan); if (chainTimeFrenzy !== '') { @@ -273,16 +273,16 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - '"Chain" Cookies Required (Frenzy)', + '"Chain" cookies required (Frenzy)', chainReqFrenFrag, goldCookTooltip, ), ); - const chainWrathColorFrenzy = + const chainWrathColourFrenzy = Game.cookies + GetWrinkConfigBank() < CacheChainFrenzyWrathRequired - ? ColorRed - : ColorGreen; + ? ColourRed + : ColourGreen; const chainWrathTimeFrenzy = Game.cookies + GetWrinkConfigBank() < CacheChainFrenzyWrathRequired ? FormatTime( @@ -294,7 +294,7 @@ export function ChainSection() { const chainWrathReqFrenFrag = document.createDocumentFragment(); const chainWrathReqFrenSpan = document.createElement('span'); chainWrathReqFrenSpan.style.fontWeight = 'bold'; - chainWrathReqFrenSpan.className = ColorTextPre + chainWrathColorFrenzy; + chainWrathReqFrenSpan.className = ColourTextPre + chainWrathColourFrenzy; chainWrathReqFrenSpan.textContent = Beautify(CacheChainFrenzyWrathRequired); chainWrathReqFrenFrag.appendChild(chainWrathReqFrenSpan); if (chainWrathTimeFrenzy !== '') { @@ -305,7 +305,7 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - '"Chain" Cookies Required (Frenzy) (Wrath)', + '"Chain" cookies required (frenzy) (Wrath)', chainWrathReqFrenFrag, goldCookTooltip, ), @@ -314,7 +314,7 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - '"Chain" Reward (MAX) (Golden / Wrath)', + '"Chain" reward (max) (golden / wrath)', document.createTextNode( `${Beautify(CacheChainMaxReward[0])} / ${Beautify( CacheChainWrathMaxReward[0], @@ -327,7 +327,7 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - '"Chain" Reward (MAX) (Frenzy) (Golden / Wrath)', + '"Chain" reward (max) (frenzy) (golden / wrath)', document.createTextNode( `${Beautify(CacheChainFrenzyMaxReward[0])} / ${Beautify( CacheChainFrenzyMaxReward[0], @@ -354,7 +354,7 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - '"Chain" Reward (CUR) (Golden / Wrath)', + '"Chain" reward (cur) (golden / wrath)', document.createTextNode( `${Beautify(chainCur)} / ${Beautify(chainCurWrath)}`, ), @@ -365,7 +365,7 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - 'CPS Needed For Next Level (G / W)', + 'CPS needed for next level (g / w)', document.createTextNode( `${Beautify(CacheChainRequiredNext)} / ${Beautify( CacheChainWrathRequiredNext, @@ -377,7 +377,7 @@ export function ChainSection() { section.appendChild( StatsListing( 'withTooltip', - 'CPS Needed For Next Level (Frenzy) (G / W)', + 'CPS needed for next level (frenzy) (g / w)', document.createTextNode( `${Beautify(CacheChainFrenzyRequiredNext)} / ${Beautify( CacheChainFrenzyWrathRequiredNext, @@ -397,8 +397,10 @@ export function SpellsSection() { const section = document.createElement('div'); section.className = 'CMStatsSpellsSection'; - const conjureColor = - Game.cookies + GetWrinkConfigBank() < CacheConjure ? ColorRed : ColorGreen; + const conjureColour = + Game.cookies + GetWrinkConfigBank() < CacheConjure + ? ColourRed + : ColourGreen; const conjureTime = Game.cookies + GetWrinkConfigBank() < CacheConjure ? FormatTime( @@ -409,7 +411,7 @@ export function SpellsSection() { const conjureReqFrag = document.createDocumentFragment(); const conjureReqSpan = document.createElement('span'); conjureReqSpan.style.fontWeight = 'bold'; - conjureReqSpan.className = ColorTextPre + conjureColor; + conjureReqSpan.className = ColourTextPre + conjureColour; conjureReqSpan.textContent = Beautify(CacheConjure); conjureReqFrag.appendChild(conjureReqSpan); if (conjureTime !== '') { @@ -420,7 +422,7 @@ export function SpellsSection() { section.appendChild( StatsListing( 'withTooltip', - '"Conjure Baked Goods" Cookies Required', + '"Conjure Baked Goods" cookies required', conjureReqFrag, 'GoldCookTooltipPlaceholder', ), @@ -428,16 +430,16 @@ export function SpellsSection() { section.appendChild( StatsListing( 'withTooltip', - '"Conjure Baked Goods" Reward (MAX)', + '"Conjure Baked Goods" reward (max)', document.createTextNode(Beautify(CacheConjureReward)), 'GoldCookTooltipPlaceholder', ), ); - const conjureFrenzyColor = + const conjureFrenzyColour = Game.cookies + GetWrinkConfigBank() < CacheConjure * 7 - ? ColorRed - : ColorGreen; + ? ColourRed + : ColourGreen; const conjureFrenzyCur = Math.min( (Game.cookies + GetWrinkConfigBank()) * 0.15, CacheNoGoldSwitchCookiesPS * 60 * 30, @@ -452,7 +454,7 @@ export function SpellsSection() { const conjureFrenzyReqFrag = document.createDocumentFragment(); const conjureFrenzyReqSpan = document.createElement('span'); conjureFrenzyReqSpan.style.fontWeight = 'bold'; - conjureFrenzyReqSpan.className = ColorTextPre + conjureFrenzyColor; + conjureFrenzyReqSpan.className = ColourTextPre + conjureFrenzyColour; conjureFrenzyReqSpan.textContent = Beautify(CacheConjure * 7); conjureFrenzyReqFrag.appendChild(conjureFrenzyReqSpan); if (conjureFrenzyTime !== '') { @@ -463,7 +465,7 @@ export function SpellsSection() { section.appendChild( StatsListing( 'withTooltip', - '"Conjure Baked Goods" Cookies Required (Frenzy)', + '"Conjure Baked Goods" cookies required (frenzy)', conjureFrenzyReqFrag, 'GoldCookTooltipPlaceholder', ), @@ -471,7 +473,7 @@ export function SpellsSection() { section.appendChild( StatsListing( 'withTooltip', - '"Conjure Baked Goods" Reward (MAX) (Frenzy)', + '"Conjure Baked Goods" reward (max) (frenzy)', document.createTextNode(Beautify(CacheConjureReward * 7)), 'GoldCookTooltipPlaceholder', ), @@ -479,7 +481,7 @@ export function SpellsSection() { section.appendChild( StatsListing( 'withTooltip', - '"Conjure Baked Goods" Reward (CUR)', + '"Conjure Baked Goods" reward (cur)', document.createTextNode(Beautify(conjureFrenzyCur)), 'GoldCookTooltipPlaceholder', ), @@ -488,7 +490,7 @@ export function SpellsSection() { section.appendChild( StatsListing( 'withTooltip', - '"Spontaneous Edifice" Cookies Required (most expensive building)', + '"Spontaneous Edifice" cookies required (most expensive building)', document.createTextNode( `${Beautify(CacheEdifice)} (${CacheEdificeBuilding})`, ), @@ -507,11 +509,11 @@ export function GardenSection() { const section = document.createElement('div'); section.className = 'CMStatsGardenSection'; - const bakeberryColor = - Game.cookies < Game.cookiesPs * 60 * 10 * 100 ? ColorRed : ColorGreen; + const bakeberryColour = + Game.cookies < Game.cookiesPs * 60 * 10 * 100 ? ColourRed : ColourGreen; const bakeberryFrag = document.createElement('span'); bakeberryFrag.style.fontWeight = 'bold'; - bakeberryFrag.className = ColorTextPre + bakeberryColor; + bakeberryFrag.className = ColourTextPre + bakeberryColour; bakeberryFrag.textContent = Beautify(Game.cookiesPs * 60 * 10 * 100); section.appendChild( StatsListing( @@ -521,11 +523,11 @@ export function GardenSection() { ), ); - const chocorootColor = - Game.cookies < Game.cookiesPs * 60 * 100 ? ColorRed : ColorGreen; + const chocorootColour = + Game.cookies < Game.cookiesPs * 60 * 100 ? ColourRed : ColourGreen; const chocorootFrag = document.createElement('span'); chocorootFrag.style.fontWeight = 'bold'; - chocorootFrag.className = ColorTextPre + chocorootColor; + chocorootFrag.className = ColourTextPre + chocorootColour; chocorootFrag.textContent = Beautify(Game.cookiesPs * 60 * 100); section.appendChild( StatsListing( @@ -535,11 +537,11 @@ export function GardenSection() { ), ); - const queenbeetColor = - Game.cookies < Game.cookiesPs * 60 * 60 * 25 ? ColorRed : ColorGreen; + const queenbeetColour = + Game.cookies < Game.cookiesPs * 60 * 60 * 25 ? ColourRed : ColourGreen; const queenbeetFrag = document.createElement('span'); queenbeetFrag.style.fontWeight = 'bold'; - queenbeetFrag.className = ColorTextPre + queenbeetColor; + queenbeetFrag.className = ColourTextPre + queenbeetColour; queenbeetFrag.textContent = Beautify(Game.cookiesPs * 60 * 60 * 25); section.appendChild( StatsListing( @@ -549,11 +551,11 @@ export function GardenSection() { ), ); - const duketaterColor = - Game.cookies < Game.cookiesPs * 60 * 15 * 100 ? ColorRed : ColorGreen; + const duketaterColour = + Game.cookies < Game.cookiesPs * 60 * 15 * 100 ? ColourRed : ColourGreen; const duketaterFrag = document.createElement('span'); duketaterFrag.style.fontWeight = 'bold'; - duketaterFrag.className = ColorTextPre + duketaterColor; + duketaterFrag.className = ColourTextPre + duketaterColour; duketaterFrag.textContent = Beautify(Game.cookiesPs * 60 * 15 * 100); section.appendChild( StatsListing( @@ -562,6 +564,21 @@ export function GardenSection() { duketaterFrag, ), ); + const missingPlantDrops = []; + Object.keys(GameData.PlantDrops).forEach((i) => { + if (!Game.HasUnlocked(GameData.PlantDrops[i])) { + missingPlantDrops.push(GameData.PlantDrops[i]); + } + }); + if (missingPlantDrops.length !== 0) { + section.appendChild( + StatsListing( + 'basic', + 'Rare plant drops left to unlock', + StatsMissDisp(missingPlantDrops), + ), + ); + } return section; } @@ -586,7 +603,7 @@ export function PrestigeSection() { section.appendChild( StatsListing( 'withTooltip', - 'Prestige Level (CUR / MAX)', + 'Prestige level (cur / max)', document.createTextNode( `${Beautify(Game.prestige)} / ${Beautify(possiblePresMax)}`, ), @@ -619,7 +636,7 @@ export function PrestigeSection() { section.appendChild( StatsListing( 'withTooltip', - 'Cookies To Next Level', + 'Cookies to next level', cookiesNextFrag, 'NextPrestTooltipPlaceholder', ), @@ -628,7 +645,7 @@ export function PrestigeSection() { section.appendChild( StatsListing( 'withTooltip', - 'Heavenly Chips (CUR / MAX)', + 'Heavenly chips (cur / max)', document.createTextNode( `${Beautify(Game.heavenlyChips)} / ${Beautify( possiblePresMax - Game.prestige + Game.heavenlyChips, @@ -641,7 +658,7 @@ export function PrestigeSection() { section.appendChild( StatsListing( 'basic', - 'Heavenly Chips Per Second (last 5 seconds)', + 'Heavenly chips per second (last 5 seconds)', document.createTextNode(Beautify(CacheHCPerSecond, 2)), ), ); @@ -655,14 +672,14 @@ export function PrestigeSection() { section.appendChild( StatsListing( 'basic', - 'Heavenly Chips To Target Set In Settings (CUR)', + 'Heavenly chips to target set in settings (cur)', document.createTextNode(Beautify(CookiesTillTarget)), ), ); section.appendChild( StatsListing( 'basic', - 'Time To Target (CUR, Current 5 Second Average)', + 'Time till target (cur, current 5 second average)', document.createTextNode( FormatTime(CookiesTillTarget / CacheHCPerSecond), ), @@ -683,7 +700,7 @@ export function PrestigeSection() { section.appendChild( StatsListing( 'withTooltip', - 'Reset Bonus Income', + 'Reset bonus income', resetFrag, 'ResetTooltipPlaceholder', ), @@ -789,13 +806,6 @@ export function SeasonSection() { specDisp = true; } }); - const missingPlantDrops = []; - Object.keys(GameData.PlantDrops).forEach((i) => { - if (!Game.HasUnlocked(GameData.PlantDrops[i])) { - missingPlantDrops.push(GameData.PlantDrops[i]); - specDisp = true; - } - }); const choEgg = Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg'); const centEgg = Game.Has('Century egg'); @@ -821,13 +831,16 @@ export function SeasonSection() { else if (godLvl === 2) failRateHalloween *= 0.95; else if (godLvl === 3) failRateHalloween *= 0.97; } + const obtainedCookiesChance = missingHalloweenCookies.length / 7; section.appendChild( StatsListing( 'basic', 'Chance of receiving a cookie from wrinkler/shiny wrinkler', document.createTextNode( - `${Beautify((1 - failRateHalloween) * 100)}% / ${Beautify( - (1 - failRateHalloween * 0.9) * 100, + `${Beautify( + (1 - failRateHalloween) * obtainedCookiesChance * 100, + )}% / ${Beautify( + (1 - failRateHalloween * 0.9) * obtainedCookiesChance * 100, )}%`, ), ), @@ -851,12 +864,15 @@ export function SeasonSection() { else if (godLvl === 2) failRateChristmas *= 0.95; else if (godLvl === 3) failRateChristmas *= 0.97; } + const obtainedCookiesChance = missingChristmasCookies.length / 7; section.appendChild( StatsListing( 'basic', 'Chance of receiving a cookie from reindeer', document.createTextNode( - `${Beautify((1 - failRateChristmas) * 100)}%`, + `${Beautify( + (1 - failRateChristmas) * obtainedCookiesChance * 100, + )}%`, ), ), ); @@ -943,15 +959,6 @@ export function SeasonSection() { ), ); } - if (missingPlantDrops.length !== 0) { - section.appendChild( - StatsListing( - 'basic', - 'Rare plant drops left to unlock', - StatsMissDisp(missingPlantDrops), - ), - ); - } if (Game.season === 'christmas') section.appendChild( diff --git a/src/Disp/Notifications/Flash.js b/src/Disp/Notifications/Flash.js index ad258dab..d66e0c48 100644 --- a/src/Disp/Notifications/Flash.js +++ b/src/Disp/Notifications/Flash.js @@ -7,28 +7,32 @@ import { isInitializing } from '../../InitSaveLoad/Variables'; * @param {number} mode Sets the intensity of the flash, used to recursively dim flash * All calls of function have use mode === 3 * @param {string} config The setting in CM.Options that is checked before creating the flash + * @param {bool} forced Whether the sound should play regardless of settings, used to test the sound */ -export default function Flash(mode, config) { +export default function Flash(mode, config, forced) { // The arguments check makes the sound not play upon initialization of the mod if ( - (CMOptions[config] === 1 && mode === 3 && isInitializing === false) || + ((CMOptions[config] === 1 || forced) && + mode === 3 && + isInitializing === false) || mode === 1 ) { - l('CMWhiteScreen').style.opacity = '0.5'; + l('CMFlashScreen').style.backgroundColor = CMOptions[`Colour${config}`]; + l('CMFlashScreen').style.opacity = '0.5'; if (mode === 3) { - l('CMWhiteScreen').style.display = 'inline'; + l('CMFlashScreen').style.display = 'inline'; setTimeout(function () { - Flash(2, config); + Flash(2, config, true); }, 1000 / Game.fps); } else { setTimeout(function () { - Flash(0, config); + Flash(0, config, true); }, 1000 / Game.fps); } } else if (mode === 2) { - l('CMWhiteScreen').style.opacity = '1'; + l('CMFlashScreen').style.opacity = '1'; setTimeout(function () { - Flash(1, config); + Flash(1, config, true); }, 1000 / Game.fps); - } else if (mode === 0) l('CMWhiteScreen').style.display = 'none'; + } else if (mode === 0) l('CMFlashScreen').style.display = 'none'; } diff --git a/src/Disp/Tooltips/AscendButton.js b/src/Disp/Tooltips/AscendButton.js index d991cb38..60c961be 100644 --- a/src/Disp/Tooltips/AscendButton.js +++ b/src/Disp/Tooltips/AscendButton.js @@ -55,7 +55,7 @@ export default function ReplaceAscendTooltip() { )} more cookies for the next level.
`; str += `${ CMOptions.TooltipAscendButton - ? `
It takes ${CacheTimeTillNextPrestige} to reach the next level and you are making ${Beautify( + ? `
It takes ${CacheTimeTillNextPrestige} to reach the next level and you were making ${Beautify( CacheHCPerSecond, 2, )} chips on average in the last 5 seconds.
` diff --git a/src/Disp/Tooltips/CreateTooltip.js b/src/Disp/Tooltips/CreateTooltip.js index 609913d7..2f1a71c7 100644 --- a/src/Disp/Tooltips/CreateTooltip.js +++ b/src/Disp/Tooltips/CreateTooltip.js @@ -1,13 +1,12 @@ -/* eslint-disable no-param-reassign */ import { CMOptions } from '../../Config/VariablesAndData'; import { - ColorTextPre, - ColorBorderPre, - ColorGray, - ColorBlue, - ColorRed, - ColorYellow, - ColorPurple, + ColourTextPre, + ColourBorderPre, + ColourGray, + ColourBlue, + ColourRed, + ColourYellow, + ColourPurple, TooltipType, } from '../VariablesAndData'; @@ -24,7 +23,7 @@ export function TooltipCreateTooltipBox() { tooltipBox.style.padding = '4px'; tooltipBox.style.margin = '0px -4px'; tooltipBox.id = 'CMTooltipBorder'; - tooltipBox.className = ColorTextPre + ColorGray; + tooltipBox.className = ColourTextPre + ColourGray; return tooltipBox; } @@ -37,7 +36,7 @@ export function TooltipCreateHeader(text) { const div = document.createElement('div'); div.style.fontWeight = 'bold'; div.id = `${text}Title`; - div.className = ColorTextPre + ColorBlue; + div.className = ColourTextPre + ColourBlue; div.textContent = text; return div; } @@ -66,13 +65,13 @@ export function TooltipCreateWarningSection() { box.id = boxId; box.style.display = 'none'; box.style.transition = 'opacity 0.1s ease-out'; - box.className = ColorBorderPre + color; + box.className = ColourBorderPre + color; box.style.padding = '2px'; box.style.background = '#000 url(img/darkNoise.png)'; const labelDiv = document.createElement('div'); box.appendChild(labelDiv); const labelSpan = document.createElement('span'); - labelSpan.className = ColorTextPre + color; + labelSpan.className = ColourTextPre + color; labelSpan.style.fontWeight = 'bold'; labelSpan.textContent = labelTextFront; labelDiv.appendChild(labelSpan); @@ -89,7 +88,7 @@ export function TooltipCreateWarningSection() { TooltipWarn.appendChild( create( 'CMDispTooltipWarnLucky', - ColorRed, + ColourRed, 'Warning: ', 'Purchase of this item will put you under the number of Cookies required for "Lucky!"', 'CMDispTooltipWarnLuckyText', @@ -99,7 +98,7 @@ export function TooltipCreateWarningSection() { TooltipWarn.appendChild( create( 'CMDispTooltipWarnLuckyFrenzy', - ColorYellow, + ColourYellow, 'Warning: ', 'Purchase of this item will put you under the number of Cookies required for "Lucky!" (Frenzy)', 'CMDispTooltipWarnLuckyFrenzyText', @@ -109,7 +108,7 @@ export function TooltipCreateWarningSection() { TooltipWarn.appendChild( create( 'CMDispTooltipWarnConjure', - ColorPurple, + ColourPurple, 'Warning: ', 'Purchase of this item will put you under the number of Cookies required for "Conjure Baked Goods"', 'CMDispTooltipWarnConjureText', @@ -119,7 +118,7 @@ export function TooltipCreateWarningSection() { TooltipWarn.appendChild( create( 'CMDispTooltipWarnConjureFrenzy', - ColorPurple, + ColourPurple, 'Warning: ', 'Purchase of this item will put you under the number of Cookies required for "Conjure Baked Goods" (Frenzy)', 'CMDispTooltipWarnConjureFrenzyText', @@ -129,7 +128,7 @@ export function TooltipCreateWarningSection() { TooltipWarn.appendChild( create( 'CMDispTooltipWarnEdifice', - ColorPurple, + ColourPurple, 'Warning: ', 'Purchase of this item will put you under the number of Cookies needed for "Spontaneous Edifice" to possibly give you your most expensive building"', 'CMDispTooltipWarnEdificeText', @@ -139,7 +138,7 @@ export function TooltipCreateWarningSection() { TooltipWarn.appendChild( create( 'CMDispTooltipWarnUser', - ColorRed, + ColourRed, 'Warning: ', `Purchase of this item will put you under the number of Cookies equal to ${CMOptions.ToolWarnUser} seconds of CPS`, 'CMDispTooltipWarnUserText', @@ -163,7 +162,7 @@ export function TooltipCreateCalculationSection(tooltip) { tooltip.appendChild(income); tooltip.appendChild(TooltipCreateHeader('Bonus Cookies per Click')); - tooltip.lastChild.style.display = 'none'; + tooltip.lastChild.style.display = 'none'; // eslint-disable-line no-param-reassign const click = document.createElement('div'); click.style.marginBottom = '4px'; click.style.color = 'white'; @@ -186,7 +185,8 @@ export function TooltipCreateCalculationSection(tooltip) { tooltip.appendChild( TooltipCreateHeader('Production left till next achievement'), ); - tooltip.lastChild.id = 'CMTooltipProductionHeader'; // Assign a id in order to hid when no achiev's are left + // Assign a id in order to hide when no achiev's are left + tooltip.lastChild.id = 'CMTooltipProductionHeader'; // eslint-disable-line no-param-reassign const production = document.createElement('div'); production.id = 'CMTooltipProduction'; tooltip.appendChild(production); diff --git a/src/Disp/Tooltips/Tooltip.js b/src/Disp/Tooltips/Tooltip.js index a7edcaa9..63307cd5 100644 --- a/src/Disp/Tooltips/Tooltip.js +++ b/src/Disp/Tooltips/Tooltip.js @@ -1,11 +1,8 @@ -/* eslint-disable no-unused-vars */ -import UpdateTooltips, * as UpdateTooltip from './UpdateTooltips'; -import { TooltipCreateTooltipBox } from './CreateTooltip'; +import UpdateTooltips from './UpdateTooltips'; import { Beautify, - GetTimeColor, + GetTimeColour, } from '../BeautifyAndFormatting/BeautifyFormatting'; -import CopyData from '../../Sim/SimulationData/CopyData'; import { SimpleTooltipElements, TooltipName, @@ -65,7 +62,7 @@ export function CreateTooltip(type, name) { `so far
${Beautify(amortizeAmount)} ${ Math.floor(amortizeAmount) === 1 ? 'cookie' : 'cookies' } left to amortize (${ - GetTimeColor( + GetTimeColour( (buildPrice - Game.Objects[name].totalCookies) / (Game.Objects[name].storedTotalCps * Game.globalCpsMult), ).text @@ -143,8 +140,8 @@ export function CreateTooltip(type, name) { } // Sets global variables used by CM.Disp.UpdateTooltip() - TooltipType = type; - TooltipName = name; + TooltipType = type; // eslint-disable-line no-unused-vars + TooltipName = name; // eslint-disable-line no-unused-vars UpdateTooltips(); diff --git a/src/Disp/Tooltips/TypesOfTooltips/Building.js b/src/Disp/Tooltips/TypesOfTooltips/Building.js index 44c9460d..c205f356 100644 --- a/src/Disp/Tooltips/TypesOfTooltips/Building.js +++ b/src/Disp/Tooltips/TypesOfTooltips/Building.js @@ -8,12 +8,12 @@ import { SimObjects } from '../../../Sim/VariablesAndData'; import { Beautify, FormatTime, - GetTimeColor, + GetTimeColour, } from '../../BeautifyAndFormatting/BeautifyFormatting'; import GetCPS from '../../HelperFunctions/GetCPS'; import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank'; import { - ColorTextPre, + ColourTextPre, LastTargetTooltipBuilding, TooltipBonusIncome, TooltipName, @@ -54,22 +54,23 @@ export default function Building() { CMOptions.ScaleSeparator ? ',' : '.' }01% of income)`; } - l('CMTooltipBorder').className = ColorTextPre + target[TooltipName].color; + l('CMTooltipBorder').className = + ColourTextPre + target[TooltipName].color; if (CMOptions.PPDisplayTime) l('CMTooltipPP').textContent = FormatTime(target[TooltipName].pp); else l('CMTooltipPP').textContent = Beautify(target[TooltipName].pp, 2); - l('CMTooltipPP').className = ColorTextPre + target[TooltipName].color; - const timeColor = GetTimeColor( + l('CMTooltipPP').className = ColourTextPre + target[TooltipName].color; + const timeColour = GetTimeColour( (TooltipPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(), ); - l('CMTooltipTime').textContent = timeColor.text; + l('CMTooltipTime').textContent = timeColour.text; if ( - timeColor.text === 'Done!' && + timeColour.text === 'Done!' && Game.cookies < target[TooltipName].price ) { - l('CMTooltipTime').textContent = `${timeColor.text} (with Wrink)`; - } else l('CMTooltipTime').textContent = timeColor.text; - l('CMTooltipTime').className = ColorTextPre + timeColor.color; + l('CMTooltipTime').textContent = `${timeColour.text} (with Wrink)`; + } else l('CMTooltipTime').textContent = timeColour.text; + l('CMTooltipTime').className = ColourTextPre + timeColour.color; } // Add "production left till next achievement"-bar diff --git a/src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js b/src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js index c262ded8..7b18051f 100644 --- a/src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js +++ b/src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js @@ -16,7 +16,7 @@ export default function GardenPlots() { const mature = minigame.plot[TooltipName[1]][TooltipName[0]][1] > minigame.plantsById[minigame.plot[TooltipName[1]][TooltipName[0]][0] - 1] - .matureBase; + .mature; const plantName = minigame.plantsById[minigame.plot[TooltipName[1]][TooltipName[0]][0] - 1] .name; diff --git a/src/Disp/Tooltips/TypesOfTooltips/Grimoire.js b/src/Disp/Tooltips/TypesOfTooltips/Grimoire.js index f2718520..10e9b0a0 100644 --- a/src/Disp/Tooltips/TypesOfTooltips/Grimoire.js +++ b/src/Disp/Tooltips/TypesOfTooltips/Grimoire.js @@ -2,11 +2,11 @@ import { CacheNoGoldSwitchCookiesPS } from '../../../Cache/VariablesAndData'; import { CMOptions } from '../../../Config/VariablesAndData'; import { Beautify, - GetTimeColor, + GetTimeColour, } from '../../BeautifyAndFormatting/BeautifyFormatting'; import CalculateGrimoireRefillTime from '../../HelperFunctions/CalculateGrimoireRefillTime'; import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank'; -import { ColorTextPre, TooltipName } from '../../VariablesAndData'; +import { ColourTextPre, TooltipName } from '../../VariablesAndData'; import * as Create from '../CreateTooltip'; /** @@ -25,11 +25,11 @@ export default function Grimoire() { const time = document.createElement('div'); time.id = 'CMTooltipTime'; tooltipBox.appendChild(time); - const timeColor = GetTimeColor( + const timeColour = GetTimeColour( CalculateGrimoireRefillTime(minigame.magic, minigame.magicM, spellCost), ); - time.textContent = timeColor.text; - time.className = ColorTextPre + timeColor.color; + time.textContent = timeColour.text; + time.className = ColourTextPre + timeColour.color; // Time left untill magic spent is recovered if (spellCost <= minigame.magic) { @@ -37,15 +37,15 @@ export default function Grimoire() { const recover = document.createElement('div'); recover.id = 'CMTooltipRecover'; tooltipBox.appendChild(recover); - const recoverColor = GetTimeColor( + const recoverColour = GetTimeColour( CalculateGrimoireRefillTime( Math.max(0, minigame.magic - spellCost), minigame.magicM, minigame.magic, ), ); - recover.textContent = recoverColor.text; - recover.className = ColorTextPre + recoverColor.color; + recover.textContent = recoverColour.text; + recover.className = ColourTextPre + recoverColour.color; } // Extra information on cookies gained when spell is Conjure Baked Goods (Name === 0) diff --git a/src/Disp/Tooltips/TypesOfTooltips/SugarLump.js b/src/Disp/Tooltips/TypesOfTooltips/SugarLump.js index 405bb394..8f1a3438 100644 --- a/src/Disp/Tooltips/TypesOfTooltips/SugarLump.js +++ b/src/Disp/Tooltips/TypesOfTooltips/SugarLump.js @@ -1,6 +1,6 @@ import { CMOptions } from '../../../Config/VariablesAndData'; -import GetLumpColor from '../../HelperFunctions/GetLumpColor'; -import { ColorTextPre } from '../../VariablesAndData'; +import GetLumpColour from '../../HelperFunctions/GetLumpColour'; +import { ColourTextPre } from '../../VariablesAndData'; import * as Create from '../CreateTooltip'; /** * This function adds extra info to the Sugar Lump tooltip @@ -15,8 +15,8 @@ export default function SugarLump() { const lumpType = document.createElement('div'); lumpType.id = 'CMTooltipTime'; tooltipBox.appendChild(lumpType); - const lumpColor = GetLumpColor(Game.lumpCurrentType); - lumpType.textContent = lumpColor.text; - lumpType.className = ColorTextPre + lumpColor.color; + const lumpColour = GetLumpColour(Game.lumpCurrentType); + lumpType.textContent = lumpColour.text; + lumpType.className = ColourTextPre + lumpColour.color; } else l('CMTooltipArea').style.display = 'none'; } diff --git a/src/Disp/Tooltips/TypesOfTooltips/Upgrade.js b/src/Disp/Tooltips/TypesOfTooltips/Upgrade.js index e33feeaa..9499045f 100644 --- a/src/Disp/Tooltips/TypesOfTooltips/Upgrade.js +++ b/src/Disp/Tooltips/TypesOfTooltips/Upgrade.js @@ -6,12 +6,12 @@ import { CMOptions } from '../../../Config/VariablesAndData'; import { Beautify, FormatTime, - GetTimeColor, + GetTimeColour, } from '../../BeautifyAndFormatting/BeautifyFormatting'; import GetCPS from '../../HelperFunctions/GetCPS'; import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank'; import { - ColorTextPre, + ColourTextPre, TooltipBonusIncome, TooltipBonusMouse, TooltipName, @@ -56,7 +56,7 @@ export default function Upgrade() { }01% of income)`; } l('CMTooltipBorder').className = - ColorTextPre + + ColourTextPre + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].color; // If clicking power upgrade if (TooltipBonusMouse) { @@ -81,21 +81,21 @@ export default function Upgrade() { 2, ); l('CMTooltipPP').className = - ColorTextPre + + ColourTextPre + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].color; } } - const timeColor = GetTimeColor( + const timeColour = GetTimeColour( (TooltipPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(), ); - l('CMTooltipTime').textContent = timeColor.text; + l('CMTooltipTime').textContent = timeColour.text; if ( - timeColor.text === 'Done!' && + timeColour.text === 'Done!' && Game.cookies < Game.UpgradesInStore[TooltipName].getPrice() ) { - l('CMTooltipTime').textContent = `${timeColor.text} (with Wrink)`; - } else l('CMTooltipTime').textContent = timeColor.text; - l('CMTooltipTime').className = ColorTextPre + timeColor.color; + l('CMTooltipTime').textContent = `${timeColour.text} (with Wrink)`; + } else l('CMTooltipTime').textContent = timeColour.text; + l('CMTooltipTime').className = ColourTextPre + timeColour.color; // Add extra info to Chocolate egg tooltip if (Game.UpgradesInStore[TooltipName].name === 'Chocolate egg') { diff --git a/src/Disp/VariablesAndData.js b/src/Disp/VariablesAndData.js index e58b7af1..b41dc156 100644 --- a/src/Disp/VariablesAndData.js +++ b/src/Disp/VariablesAndData.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-const */ /** * Section: Variables used in Disp functions */ @@ -7,32 +6,32 @@ export let DispCSS; /** * These are variables used to create DOM object names and id (e.g., 'CMTextTooltip) */ -export const ColorTextPre = 'CMText'; -export const ColorBackPre = 'CMBack'; -export const ColorBorderPre = 'CMBorder'; +export const ColourTextPre = 'CMText'; +export const ColourBackPre = 'CMBack'; +export const ColourBorderPre = 'CMBorder'; /** * These are variables which can be set in the options by the user to standardize colours throughout CookieMonster */ -export const ColorBlue = 'Blue'; -export const ColorGreen = 'Green'; -export const ColorYellow = 'Yellow'; -export const ColorOrange = 'Orange'; -export const ColorRed = 'Red'; -export const ColorPurple = 'Purple'; -export const ColorGray = 'Gray'; -export const ColorPink = 'Pink'; -export const ColorBrown = 'Brown'; -export const Colors = [ - ColorGray, - ColorBlue, - ColorGreen, - ColorYellow, - ColorOrange, - ColorRed, - ColorPurple, - ColorPink, - ColorBrown, +export const ColourBlue = 'Blue'; +export const ColourGreen = 'Green'; +export const ColourYellow = 'Yellow'; +export const ColourOrange = 'Orange'; +export const ColourRed = 'Red'; +export const ColourPurple = 'Purple'; +export const ColourGray = 'Gray'; +export const ColourPink = 'Pink'; +export const ColourBrown = 'Brown'; +export const ColoursOrdering = [ + ColourGray, + ColourBlue, + ColourGreen, + ColourYellow, + ColourOrange, + ColourRed, + ColourPurple, + ColourPink, + ColourBrown, ]; /** @@ -79,6 +78,11 @@ export const TooltipText = [ 'Cheated cookies might break this formula', '250px', ], + [ + 'FavouriteSettingPlaceholder', + "Click to set this setting as favourite and show it in 'favourite' settings at the top of the Cookie Monster Settings", + '250px', + ], ]; export const SimpleTooltipElements = {}; @@ -86,15 +90,15 @@ export const SimpleTooltipElements = {}; * These are variables used by the functions that create tooltips for wrinklers * See CM.Disp.CheckWrinklerTooltip(), CM.Disp.UpdateWrinklerTooltip() and CM.Main.AddWrinklerAreaDetect() */ -export let TooltipWrinklerArea = 0; -export let TooltipWrinkler = -1; +export let TooltipWrinklerArea = 0; // eslint-disable-line prefer-const +export let TooltipWrinkler = -1; // eslint-disable-line prefer-const /** * This array is used to store whether a Wrinkler tooltip is being shown or not * [i] = 1 means tooltip is being shown, [i] = 0 means hidden * It is used by CM.Disp.CheckWrinklerTooltip() and CM.Main.AddWrinklerAreaDetect() */ -export let TooltipWrinklerBeingShown = []; +export let TooltipWrinklerBeingShown = []; // eslint-disable-line prefer-const export let CMLastAscendState; export let CMSayTime; @@ -102,9 +106,9 @@ export let CMSayTime; /** * These are variables used to create various displays when the game is loaded on the "sell all" screen */ -export let LastTargetBotBar = 1; -export let LastTargetBuildings = 1; -export let LastTargetTooltipBuilding = 1; +export let LastTargetBotBar = 1; // eslint-disable-line prefer-const +export let LastTargetBuildings = 1; // eslint-disable-line prefer-const +export let LastTargetTooltipBuilding = 1; // eslint-disable-line prefer-const /** * These arrays are used in the stats page to show @@ -116,24 +120,24 @@ export const ClickTimes = [1, 5, 10, 15, 30]; /** * This array is used to give certain timers specific colours */ -export const BuffColors = { - Frenzy: ColorYellow, - 'Dragon Harvest': ColorBrown, - 'Elder frenzy': ColorGreen, - Clot: ColorRed, - 'Click frenzy': ColorBlue, - Dragonflight: ColorPink, +export const BuffColours = { + Frenzy: ColourYellow, + 'Dragon Harvest': ColourBrown, + 'Elder frenzy': ColourGreen, + Clot: ColourRed, + 'Click frenzy': ColourBlue, + Dragonflight: ColourPink, }; /** * This array is used to track GC timers */ -export let GCTimers = {}; +export let GCTimers = {}; // eslint-disable-line prefer-const /** * Used to store the number of cookies to be displayed in the tab-title */ -export let Title = ''; +export let Title = ''; // eslint-disable-line prefer-const export let TooltipPrice; export let TooltipBonusIncome; @@ -143,3 +147,8 @@ export let TooltipBonusMouse; export let LastAscendState; export let LastNumberOfTimers; + +/** + * This stores the names of settings shown in the favourites section + */ +export let FavouriteSettings = []; // eslint-disable-line prefer-const diff --git a/src/InitSaveLoad/Variables.js b/src/InitSaveLoad/Variables.js index 2b6eb6ec..bb4f8061 100644 --- a/src/InitSaveLoad/Variables.js +++ b/src/InitSaveLoad/Variables.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-const */ /** Variable that shows if Cookie Moonster is initzializing */ -export let isInitializing = false; +export let isInitializing = false; // eslint-disable-line prefer-const export let test; diff --git a/src/InitSaveLoad/init.js b/src/InitSaveLoad/init.js index 3a8fa492..cb5e4bf5 100644 --- a/src/InitSaveLoad/init.js +++ b/src/InitSaveLoad/init.js @@ -1,8 +1,8 @@ -/* eslint-disable no-unused-vars */ import { VersionMajor, VersionMinor } from '../Data/Moddata'; -import Draw from '../Disp/Draw'; +import CMDrawHook from '../Disp/DrawHook'; +import CMClickHook from '../Main/ClickHook'; import InitializeCookieMonster from '../Main/Initialization'; -import CMLoop from '../Main/Loop'; +import CMLoopHook from '../Main/LoopHook'; import { isInitializing } from './Variables'; /** @@ -15,14 +15,16 @@ export default function init() { isInitializing = true; let proceed = true; if (Game.version !== Number(VersionMajor)) { + // eslint-disable-next-line no-restricted-globals, no-alert proceed = confirm( - `Cookie Monster version ${VersionMajor}.${VersionMinor} is meant for Game version ${VersionMajor}. Loading a different version may cause errors. Do you still want to load Cookie Monster?`, + `Cookie Monster version ${VersionMajor}.${VersionMinor} is meant for Game version ${VersionMajor}. Loading a different version may cause errors. Do you still want to load Cookie Monster?`, ); } if (proceed) { InitializeCookieMonster(); - Game.registerHook('draw', Draw); - Game.registerHook('logic', CMLoop); - isInitializing = false; + Game.registerHook('draw', CMDrawHook); + Game.registerHook('logic', CMLoopHook); + Game.registerHook('click', CMClickHook); + isInitializing = false; // eslint-disable-line no-unused-vars } } diff --git a/src/InitSaveLoad/load.js b/src/InitSaveLoad/load.js index 6942eb84..8e3ee0bc 100644 --- a/src/InitSaveLoad/load.js +++ b/src/InitSaveLoad/load.js @@ -1,5 +1,6 @@ import { LoadConfig } from '../Config/SaveLoadReload/SaveLoadReloadSettings'; import { VersionMajor, VersionMinor } from '../Data/Moddata'; +import { FavouriteSettings } from '../Disp/VariablesAndData'; import InitData from '../Sim/InitializeData/InitData'; /** @@ -9,6 +10,9 @@ import InitData from '../Sim/InitializeData/InitData'; export default function load(str) { const save = JSON.parse(str); InitData(); + // The if-statement is a failsafe for old saves + if (typeof save.favouriteSettings !== 'undefined') + FavouriteSettings = save.favouriteSettings; // eslint-disable-line no-unused-vars LoadConfig(save.settings); if (save.version !== `${VersionMajor}.${VersionMinor}`) { if (Game.prefs.popups) diff --git a/src/InitSaveLoad/save.js b/src/InitSaveLoad/save.js index 7f2e523c..63ab2bae 100644 --- a/src/InitSaveLoad/save.js +++ b/src/InitSaveLoad/save.js @@ -1,5 +1,6 @@ import { CMOptions } from '../Config/VariablesAndData'; import { VersionMajor, VersionMinor } from '../Data/Moddata'; +import { FavouriteSettings } from '../Disp/VariablesAndData'; /** * This creates a save function to the CM object. Per Game code/comments: @@ -8,6 +9,7 @@ import { VersionMajor, VersionMinor } from '../Data/Moddata'; */ export default function save() { return JSON.stringify({ + favouriteSettings: FavouriteSettings, settings: CMOptions, version: `${VersionMajor}.${VersionMinor}`, }); diff --git a/src/Main/CheckStates/Garden.js b/src/Main/CheckStates/Garden.js index 4e12a93b..28587959 100644 --- a/src/Main/CheckStates/Garden.js +++ b/src/Main/CheckStates/Garden.js @@ -12,7 +12,7 @@ export default function CheckGardenTick() { LastGardenNextStep !== Game.Objects.Farm.minigame.nextStep ) { if (LastGardenNextStep !== 0 && LastGardenNextStep < Date.now()) { - Flash(3, 'GardFlash'); + Flash(3, 'GardFlash', false); PlaySound(CMOptions.GardSoundURL, 'GardSound', 'GardVolume', false); } LastGardenNextStep = Game.Objects.Farm.minigame.nextStep; diff --git a/src/Main/CheckStates/GoldenCookie.js b/src/Main/CheckStates/GoldenCookie.js index b8953ef8..e0ef1426 100644 --- a/src/Main/CheckStates/GoldenCookie.js +++ b/src/Main/CheckStates/GoldenCookie.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { CacheSpawnedGoldenShimmer, CacheGoldenShimmersByID, @@ -49,7 +48,7 @@ export default function CheckGoldenCookie() { LastGoldenCookieState = Game.shimmerTypes.golden.n; if (LastGoldenCookieState) { if (LastSpawnedGoldenCookieState < CurrSpawnedGoldenCookieState) { - Flash(3, 'GCFlash'); + Flash(3, 'GCFlash', false); PlaySound(CMOptions.GCSoundURL, 'GCSound', 'GCVolume', false); CreateNotification( 'GCNotification', @@ -66,7 +65,7 @@ export default function CheckGoldenCookie() { } UpdateFavicon(); LastSpawnedGoldenCookieState = CurrSpawnedGoldenCookieState; - if (CurrSpawnedGoldenCookieState === 0) CacheSpawnedGoldenShimmer = 0; + if (CurrSpawnedGoldenCookieState === 0) CacheSpawnedGoldenShimmer = 0; // eslint-disable-line no-unused-vars } else if (CMOptions.GCTimer === 1 && LastGoldenCookieState) { Object.keys(GCTimers).forEach((i) => { GCTimers[i].style.opacity = CacheGoldenShimmersByID[i].l.style.opacity; diff --git a/src/Main/CheckStates/Grimoire.js b/src/Main/CheckStates/Grimoire.js index 7be6748e..4f2a2195 100644 --- a/src/Main/CheckStates/Grimoire.js +++ b/src/Main/CheckStates/Grimoire.js @@ -17,7 +17,7 @@ export default function CheckMagicMeter() { if (minigame.magic < minigame.magicM) LastMagicBarFull = false; else if (!LastMagicBarFull) { LastMagicBarFull = true; - Flash(3, 'MagicFlash'); + Flash(3, 'MagicFlash', false); PlaySound(CMOptions.MagicSoundURL, 'MagicSound', 'MagicVolume', false); CreateNotification( 'MagicNotification', diff --git a/src/Main/CheckStates/Season.js b/src/Main/CheckStates/Season.js index 5fec2ccc..b521dd2c 100644 --- a/src/Main/CheckStates/Season.js +++ b/src/Main/CheckStates/Season.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { CacheSeasonPopShimmer } from '../../Cache/VariablesAndData'; import { CMOptions } from '../../Config/VariablesAndData'; import Flash from '../../Disp/Notifications/Flash'; @@ -15,10 +14,10 @@ export default function CheckSeasonPopup() { LastSeasonPopupState = Game.shimmerTypes.reindeer.spawned; Object.keys(Game.shimmers).forEach((i) => { if (Game.shimmers[i].spawnLead && Game.shimmers[i].type === 'reindeer') { - CacheSeasonPopShimmer = Game.shimmers[i]; + CacheSeasonPopShimmer = Game.shimmers[i]; // eslint-disable-line no-unused-vars } }); - Flash(3, 'SeaFlash'); + Flash(3, 'SeaFlash', false); PlaySound(CMOptions.SeaSoundURL, 'SeaSound', 'SeaVolume', false); CreateNotification( 'SeaNotification', diff --git a/src/Main/CheckStates/Ticker.js b/src/Main/CheckStates/Ticker.js index 27016f97..9185d9f0 100644 --- a/src/Main/CheckStates/Ticker.js +++ b/src/Main/CheckStates/Ticker.js @@ -16,7 +16,7 @@ export default function CheckTickerFortune() { LastTickerFortuneState = Game.TickerEffect && Game.TickerEffect.type === 'fortune'; if (LastTickerFortuneState) { - Flash(3, 'FortuneFlash'); + Flash(3, 'FortuneFlash', false); PlaySound( CMOptions.FortuneSoundURL, 'FortuneSound', diff --git a/src/Main/CheckStates/Wrinkler.js b/src/Main/CheckStates/Wrinkler.js index 7b9e10df..24971949 100644 --- a/src/Main/CheckStates/Wrinkler.js +++ b/src/Main/CheckStates/Wrinkler.js @@ -20,9 +20,9 @@ export default function CheckWrinklerCount() { CurrentWrinklers === Game.getWrinklersMax() && CMOptions.WrinklerMaxFlash ) { - Flash(3, 'WrinklerMaxFlash'); + Flash(3, 'WrinklerMaxFlash', false); } else { - Flash(3, 'WrinklerFlash'); + Flash(3, 'WrinklerFlash', false); } if ( CurrentWrinklers === Game.getWrinklersMax() && diff --git a/src/Main/ClickHook.js b/src/Main/ClickHook.js new file mode 100644 index 00000000..0bb9d1d3 --- /dev/null +++ b/src/Main/ClickHook.js @@ -0,0 +1,6 @@ +import { CacheAverageCookiesFromClicks } from '../Cache/VariablesAndData'; + +export default function CMClickHook() { + // Add cookies from click to array that stores average + CacheAverageCookiesFromClicks.addLatest(Game.computedMouseCps); +} diff --git a/src/Main/Initialization.js b/src/Main/Initialization.js index 080a0bbc..c08aec83 100644 --- a/src/Main/Initialization.js +++ b/src/Main/Initialization.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import InitCache from '../Cache/CacheInit'; import { CacheStatsCookies } from '../Cache/Stats/Stats'; import { LoadConfig } from '../Config/SaveLoadReload/SaveLoadReloadSettings'; @@ -10,7 +9,7 @@ import CreateSectionHideButtons from '../Disp/Initialization/CreateSectionHideBu import CreateWrinklerButtons from '../Disp/Initialization/CreateWrinklerButton'; import CreateCssArea from '../Disp/Initialization/CssArea'; import UpdateBuildingUpgradeStyle from '../Disp/Initialization/UpdateBuildingUpgradeStyle'; -import CreateWhiteScreen from '../Disp/Initialization/WhiteScreen'; +import CreateFlashScreen from '../Disp/Initialization/FlashScreen'; import { CreateFavicon } from '../Disp/TabTitle/FavIcon'; import { CreateSimpleTooltip } from '../Disp/Tooltips/Tooltip'; import { CMLastAscendState, TooltipText } from '../Disp/VariablesAndData'; @@ -30,14 +29,14 @@ export default function InitializeCookieMonster() { InitCache(); // Stored to check if we need to re-initiliaze data - LastModCount = Object.keys(Game.mods).length; + LastModCount = Object.keys(Game.mods).length; // eslint-disable-line no-unused-vars // Creating visual elements CreateCssArea(); CreateBotBar(); CreateTimerBar(); CreateUpgradeBar(); - CreateWhiteScreen(); + CreateFlashScreen(); CreateSectionHideButtons(); CreateFavicon(); Object.keys(TooltipText).forEach((i) => { @@ -58,8 +57,8 @@ export default function InitializeCookieMonster() { ReplaceNativeGrimoire(); Game.CalculateGains(); - LoadConfig(); // Must be after all things are created! - CMLastAscendState = Game.OnAscend; + LoadConfig(); + CMLastAscendState = Game.OnAscend; // eslint-disable-line no-unused-vars if (Game.prefs.popups) Game.Popup( diff --git a/src/Main/Loop.js b/src/Main/LoopHook.js similarity index 98% rename from src/Main/Loop.js rename to src/Main/LoopHook.js index b16e1c8a..5ce57d77 100644 --- a/src/Main/Loop.js +++ b/src/Main/LoopHook.js @@ -35,7 +35,7 @@ import { LastModCount } from './VariablesAndData'; * Main loop of Cookie Monster * CM.init registers it to the "logic" hook provided by the modding api */ -export default function CMLoop() { +export default function CMLoopHook() { if (LastAscendState !== Game.OnAscend) { LastAscendState = Game.OnAscend; UpdateAscendState(); diff --git a/src/Main/ReplaceGameElements/NativeGrimoire.js b/src/Main/ReplaceGameElements/NativeGrimoire.js index c21f150f..59e27f4e 100644 --- a/src/Main/ReplaceGameElements/NativeGrimoire.js +++ b/src/Main/ReplaceGameElements/NativeGrimoire.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { CMOptions } from '../../Config/VariablesAndData'; import { FormatTime } from '../../Disp/BeautifyAndFormatting/BeautifyFormatting'; @@ -47,8 +46,8 @@ function ReplaceNativeGrimoireLaunch() { Game.Objects['Wizard tower'].minigameLoaded ) { const { minigame } = Game.Objects['Wizard tower']; - BackupGrimoireLaunch = minigame.launch; - BackupGrimoireLaunchMod = new Function( + BackupGrimoireLaunch = minigame.launch; // eslint-disable-line no-unused-vars + BackupGrimoireLaunchMod = new Function( // eslint-disable-line no-new-func `return ${minigame.launch .toString() .split('=this') diff --git a/src/Main/ReplaceGameElements/Tooltips.js b/src/Main/ReplaceGameElements/Tooltips.js index 69262882..a0594bd2 100644 --- a/src/Main/ReplaceGameElements/Tooltips.js +++ b/src/Main/ReplaceGameElements/Tooltips.js @@ -1,5 +1,3 @@ -/* eslint-disable no-param-reassign */ -/* eslint-disable no-unused-vars */ /** Functions related to replacing tooltips */ import { CreateTooltip } from '../../Disp/Tooltips/Tooltip'; @@ -39,7 +37,7 @@ function ReplaceTooltipBuild() { */ function ReplaceTooltipLump() { if (Game.canLumps()) { - TooltipLumpBackup = l('lumps').onmouseover; + TooltipLumpBackup = l('lumps').onmouseover; // eslint-disable-line no-unused-vars l('lumps').onmouseover = function () { Game.tooltip.dynamic = 1; Game.tooltip.draw( @@ -72,6 +70,7 @@ function ReplaceTooltipGarden() { }; Array.from(l('gardenPlot').children).forEach((child) => { const coords = child.id.slice(-3); + // eslint-disable-next-line no-param-reassign child.onmouseover = function () { Game.tooltip.dynamic = 1; Game.tooltip.draw( diff --git a/src/Main/ReplaceGameFunctions/ReplaceNative.js b/src/Main/ReplaceGameFunctions/ReplaceNative.js index 1ee8d851..b9d8dbfb 100644 --- a/src/Main/ReplaceGameFunctions/ReplaceNative.js +++ b/src/Main/ReplaceGameFunctions/ReplaceNative.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import jscolor from '@eastdesire/jscolor'; import { CMOptions } from '../../Config/VariablesAndData'; import { @@ -13,7 +12,11 @@ import UpdateTooltipLocation from '../../Disp/Tooltips/PositionLocation'; import { CMSayTime, Title } from '../../Disp/VariablesAndData'; import { SimDoSims } from '../../Sim/VariablesAndData'; import ReplaceTooltipUpgrade from '../ReplaceGameElements/TooltipUpgrades'; -import { BackupFunctions } from '../VariablesAndData'; +import { + BackupFunctions, + CenturyDateAtBeginLoop, + CycliusDateAtBeginLoop, +} from '../VariablesAndData'; import FixMouseY from './FixMouse'; /** @@ -28,12 +31,14 @@ export default function ReplaceNative() { BackupFunctions.CalculateGains = Game.CalculateGains; Game.CalculateGains = function () { BackupFunctions.CalculateGains(); - SimDoSims = 1; + SimDoSims = 1; // eslint-disable-line no-unused-vars + CycliusDateAtBeginLoop = Date.now(); // eslint-disable-line no-unused-vars + CenturyDateAtBeginLoop = Date.now(); // eslint-disable-line no-unused-vars }; BackupFunctions.tooltip = {}; BackupFunctions.tooltip.draw = Game.tooltip.draw; - BackupFunctions.tooltip.drawMod = new Function( + BackupFunctions.tooltip.drawMod = new Function( // eslint-disable-line no-new-func `return ${Game.tooltip.draw.toString().split('this').join('Game.tooltip')}`, )(); Game.tooltip.draw = function (from, text, origin) { @@ -41,7 +46,7 @@ export default function ReplaceNative() { }; BackupFunctions.tooltip.update = Game.tooltip.update; - BackupFunctions.tooltip.updateMod = new Function( + BackupFunctions.tooltip.updateMod = new Function( // eslint-disable-line no-new-func `return ${Game.tooltip.update .toString() .split('this.') @@ -126,6 +131,7 @@ export default function ReplaceNative() { }; BackupFunctions.sayTime = Game.sayTime; + // eslint-disable-next-line no-unused-vars CMSayTime = function (time, detail) { if (Number.isNaN(time) || time <= 0) return BackupFunctions.sayTime(time, detail); @@ -139,6 +145,7 @@ export default function ReplaceNative() { // Update tab title let title = 'Cookie Clicker'; if (Game.season === 'fools') title = 'Cookie Baker'; + // eslint-disable-next-line no-unused-vars Title = `${Game.OnAscend ? 'Ascending! ' : ''}${CMBeautify(Game.cookies)} ${ Game.cookies === 1 ? 'cookie' : 'cookies' } - ${title}`; diff --git a/src/Main/VariablesAndData.js b/src/Main/VariablesAndData.js index 67fc80e5..3a792254 100644 --- a/src/Main/VariablesAndData.js +++ b/src/Main/VariablesAndData.js @@ -1,17 +1,15 @@ -/* eslint-disable prefer-const */ - export let LastModCount; -export let TooltipBuildBackup = []; +export let TooltipBuildBackup = []; // eslint-disable-line prefer-const export let TooltipLumpBackup; -export let TooltipGrimoireBackup = []; -export let TooltipUpgradeBackup = []; +export let TooltipGrimoireBackup = []; // eslint-disable-line prefer-const +export let TooltipUpgradeBackup = []; // eslint-disable-line prefer-const export let BackupGrimoireLaunch; export let BackupGrimoireLaunchMod; export let BackupGrimoireDraw; export let HasReplaceNativeGrimoireLaunch; export let HasReplaceNativeGrimoireDraw; export let LoadMinigames; -export let BackupFunctions = {}; +export let BackupFunctions = {}; // eslint-disable-line prefer-const export let LastSeasonPopupState; export let LastTickerFortuneState; @@ -21,3 +19,11 @@ export let LastSpawnedGoldenCookieState; export let LastMagicBarFull; export let CurrSpawnedGoldenCookieState; export let LastWrinklerCount; + +/** Stores the date at Game.CalculateGains for God Cyclius + */ +export let CycliusDateAtBeginLoop = Date.now(); // eslint-disable-line prefer-const + +/** Stores the date at Game.CalculateGains for the Century egg + */ +export let CenturyDateAtBeginLoop = Date.now(); // eslint-disable-line prefer-const diff --git a/src/Main/WrinklerArea/AddDetectArea.js b/src/Main/WrinklerArea/AddDetectArea.js index 79f54b84..bf8188a8 100644 --- a/src/Main/WrinklerArea/AddDetectArea.js +++ b/src/Main/WrinklerArea/AddDetectArea.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { TooltipWrinklerArea, TooltipWrinklerBeingShown, @@ -13,7 +12,7 @@ export default function AddWrinklerAreaDetect() { TooltipWrinklerArea = 1; }; l('backgroundLeftCanvas').onmouseout = function () { - TooltipWrinklerArea = 0; + TooltipWrinklerArea = 0; // eslint-disable-line no-unused-vars Game.tooltip.hide(); Object.keys(Game.wrinklers).forEach((i) => { TooltipWrinklerBeingShown[i] = 0; diff --git a/src/Sim/Calculations/CalculateGains.js b/src/Sim/Calculations/CalculateGains.js index fd42a0f8..71d458db 100644 --- a/src/Sim/Calculations/CalculateGains.js +++ b/src/Sim/Calculations/CalculateGains.js @@ -1,6 +1,9 @@ -/* eslint-disable no-unused-vars */ import GetCPSBuffMult from '../../Cache/CPS/GetCPSBuffMult'; import { CacheCentEgg } from '../../Cache/VariablesAndData'; +import { + CenturyDateAtBeginLoop, + CycliusDateAtBeginLoop, +} from '../../Main/VariablesAndData'; import SimAuraMult from '../ReplacedGameFunctions/SimAuraMult'; import SimEff from '../ReplacedGameFunctions/SimEff'; import SimGetHeavenlyMultiplier from '../ReplacedGameFunctions/SimGetHeavenlyMultiplier'; @@ -38,7 +41,7 @@ export default function CalculateGains() { }); } }); - SimEffs = effs; + SimEffs = effs; // eslint-disable-line no-unused-vars if (Game.ascensionMode !== 1) mult += @@ -92,13 +95,25 @@ export default function CalculateGains() { godLvl = SimHasGod('ages'); if (godLvl === 1) mult *= - 1 + 0.15 * Math.sin((Date.now() / 1000 / (60 * 60 * 3)) * Math.PI * 2); + 1 + + 0.15 * + Math.sin( + (CycliusDateAtBeginLoop / 1000 / (60 * 60 * 3)) * Math.PI * 2, + ); else if (godLvl === 2) mult *= - 1 + 0.15 * Math.sin((Date.now() / 1000 / (60 * 60 * 12)) * Math.PI * 2); + 1 + + 0.15 * + Math.sin( + (CycliusDateAtBeginLoop / 1000 / (60 * 60 * 12)) * Math.PI * 2, + ); else if (godLvl === 3) mult *= - 1 + 0.15 * Math.sin((Date.now() / 1000 / (60 * 60 * 24)) * Math.PI * 2); + 1 + + 0.15 * + Math.sin( + (CycliusDateAtBeginLoop / 1000 / (60 * 60 * 24)) * Math.PI * 2, + ); godLvl = SimHasGod('decadence'); if (godLvl === 1) buildMult *= 0.93; @@ -189,7 +204,7 @@ export default function CalculateGains() { if (SimHas('Century egg')) { // The boost increases a little every day, with diminishing returns up to +10% on the 100th day let day = - (Math.floor((Date.now() - Game.startDate) / 1000 / 10) * 10) / + (Math.floor((CenturyDateAtBeginLoop - Game.startDate) / 1000 / 10) * 10) / 60 / 60 / 24; @@ -211,7 +226,7 @@ export default function CalculateGains() { SimWin(Game.CpsAchievements[i].name); }); - SimCookiesPsRaw = rawCookiesPs; + SimCookiesPsRaw = rawCookiesPs; // eslint-disable-line no-unused-vars const { n } = Game.shimmerTypes.golden; const auraMult = SimAuraMult("Dragon's Fortune"); diff --git a/src/Sim/SimulationData/CopyData.js b/src/Sim/SimulationData/CopyData.js index 74b74c50..210f2e22 100644 --- a/src/Sim/SimulationData/CopyData.js +++ b/src/Sim/SimulationData/CopyData.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import CacheDragonAuras from '../../Cache/Dragon/CacheDragonAuras'; import { CacheDragonAura, @@ -30,11 +29,11 @@ import { */ export default function CopyData() { // Other variables - SimUpgradesOwned = Game.UpgradesOwned; - SimPledges = Game.pledges; - SimAchievementsOwned = Game.AchievementsOwned; - SimHeavenlyPower = Game.heavenlyPower; - SimPrestige = Game.prestige; + SimUpgradesOwned = Game.UpgradesOwned; // eslint-disable-line no-unused-vars + SimPledges = Game.pledges; // eslint-disable-line no-unused-vars + SimAchievementsOwned = Game.AchievementsOwned; // eslint-disable-line no-unused-vars + SimHeavenlyPower = Game.heavenlyPower; // eslint-disable-line no-unused-vars + SimPrestige = Game.prestige; // eslint-disable-line no-unused-vars // Buildings Object.keys(Game.Objects).forEach((i) => { @@ -53,9 +52,9 @@ export default function CopyData() { you.free = me.free; if (me.minigameLoaded) { if (me.name === 'Temple') { - SimGod1 = me.minigame.slot[0]; - SimGod2 = me.minigame.slot[1]; - SimGod3 = me.minigame.slot[2]; + SimGod1 = me.minigame.slot[0]; // eslint-disable-line no-unused-vars + SimGod2 = me.minigame.slot[1]; // eslint-disable-line no-unused-vars + SimGod3 = me.minigame.slot[2]; // eslint-disable-line no-unused-vars } you.minigameLoaded = me.minigameLoaded; you.minigame = me.minigame; @@ -89,6 +88,6 @@ export default function CopyData() { // Auras CacheDragonAuras(); - SimDragonAura = CacheDragonAura; - SimDragonAura2 = CacheDragonAura2; + SimDragonAura = CacheDragonAura; // eslint-disable-line no-unused-vars + SimDragonAura2 = CacheDragonAura2; // eslint-disable-line no-unused-vars } diff --git a/src/Sim/SimulationData/SimWin.js b/src/Sim/SimulationData/SimWin.js index 42218119..58a3d1ef 100644 --- a/src/Sim/SimulationData/SimWin.js +++ b/src/Sim/SimulationData/SimWin.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { SimAchievements, SimAchievementsOwned } from '../VariablesAndData'; /** @@ -11,7 +10,7 @@ export default function SimWin(what) { if (SimAchievements[what]) { if (SimAchievements[what].won === 0) { SimAchievements[what].won = 1; - if (Game.Achievements[what].pool !== 'shadow') SimAchievementsOwned += 1; + if (Game.Achievements[what].pool !== 'shadow') SimAchievementsOwned += 1; // eslint-disable-line no-unused-vars } } } diff --git a/src/Sim/SimulationEvents/AuraChange.js b/src/Sim/SimulationEvents/AuraChange.js index 856b2653..008c8fb1 100644 --- a/src/Sim/SimulationEvents/AuraChange.js +++ b/src/Sim/SimulationEvents/AuraChange.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { CacheDragonAura, CacheDragonAura2, @@ -38,10 +37,10 @@ export default function CalculateChangeAura(aura) { SimDragonAura2 !== CacheDragonAura2 ) { for (let i = Game.ObjectsById.length - 1; i > -1; --i) { - if (Game.ObjectsById[i - 1].amount > 0) { + if (Game.ObjectsById[i].amount > 0) { const highestBuilding = SimObjects[Game.ObjectsById[i].name].name; SimObjects[highestBuilding].amount -= 1; - SimBuildingsOwned -= 1; + SimBuildingsOwned -= 1; // eslint-disable-line no-unused-vars price = SimObjects[highestBuilding].basePrice * Game.priceIncrease ** diff --git a/src/Sim/SimulationEvents/BuyUpgrades.js b/src/Sim/SimulationEvents/BuyUpgrades.js index 9e03266d..ce3182c8 100644 --- a/src/Sim/SimulationEvents/BuyUpgrades.js +++ b/src/Sim/SimulationEvents/BuyUpgrades.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import CalculateGains from '../Calculations/CalculateGains'; import CheckOtherAchiev from '../Calculations/CheckOtherAchiev'; import SimAuraMult from '../ReplacedGameFunctions/SimAuraMult'; @@ -130,9 +129,8 @@ export default function BuyUpgradesBonusIncome(upgrade) { } else { SimUpgrades[upgrade].bought = (SimUpgrades[upgrade].bought + 1) % 2; } - const me = SimUpgrades[upgrade]; if (Game.CountsAsUpgradeOwned(Game.Upgrades[upgrade].pool)) - SimUpgradesOwned += 1; + SimUpgradesOwned += 1; // eslint-disable-line no-unused-vars if (upgrade === 'Elder Pledge') { SimPledges += 1; diff --git a/src/Sim/SimulationEvents/GodChange.js b/src/Sim/SimulationEvents/GodChange.js index b86e7800..b3b121ee 100644 --- a/src/Sim/SimulationEvents/GodChange.js +++ b/src/Sim/SimulationEvents/GodChange.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import CalculateGains from '../Calculations/CalculateGains'; import CheckOtherAchiev from '../Calculations/CheckOtherAchiev'; import CopyData from '../SimulationData/CopyData'; @@ -14,14 +13,21 @@ import { * This functions calculates the cps and cost of changing a Dragon Aura * It is called by CM.Disp.AddAuraInfo() * @param {number} god The number of the slot to be swapped in - * * @param {number slot The slot the god will go to + * @param {number slot The slot the god will go to * @returns {number} CM.Sim.cookiesPs - Game.cookiesPs The bonus cps and the price of the change */ export default function CalculateChangeGod(god, slot) { CopyData(); + const { minigame } = Game.Objects.Temple; + const CurrentSlot = minigame.godsById[god].slot; + if (CurrentSlot === '0') SimGod1 = minigame.slot[slot]; + else if (CurrentSlot === '1') SimGod2 = minigame.slot[slot]; + else if (CurrentSlot === '2') SimGod3 = minigame.slot[slot]; + /* eslint-disable no-unused-vars */ if (slot === 0) SimGod1 = god; else if (slot === 1) SimGod2 = god; else if (slot === 2) SimGod3 = god; + /* eslint-enable no-unused-vars */ const lastAchievementsOwned = SimAchievementsOwned; CalculateGains(); diff --git a/src/Sim/SimulationEvents/ResetAscension.js b/src/Sim/SimulationEvents/ResetAscension.js index 86be1388..193d753b 100644 --- a/src/Sim/SimulationEvents/ResetAscension.js +++ b/src/Sim/SimulationEvents/ResetAscension.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import { CacheRealCookiesEarned } from '../../Cache/VariablesAndData'; import CalculateGains from '../Calculations/CalculateGains'; import CheckOtherAchiev from '../Calculations/CheckOtherAchiev'; @@ -96,7 +95,7 @@ export default function ResetBonus(newHeavenlyChips) { const ResetCPS = SimCookiesPs - curCPS; // Reset Pretige level after calculation as it is used in CM.Sim.CalculateGains() so can't be local - SimPrestige = Game.prestige; + SimPrestige = Game.prestige; // eslint-disable-line no-unused-vars return ResetCPS; } diff --git a/src/Sim/SimulationEvents/SellBuildingForChoEgg.js b/src/Sim/SimulationEvents/SellBuildingForChoEgg.js index 49c19efb..5d95588d 100644 --- a/src/Sim/SimulationEvents/SellBuildingForChoEgg.js +++ b/src/Sim/SimulationEvents/SellBuildingForChoEgg.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import CopyData from '../SimulationData/CopyData'; import { SimBuildingsOwned, @@ -38,7 +37,7 @@ export default function SellBuildingsForChoEgg() { } }); SimObjects[highestBuilding].amount -= 1; - SimBuildingsOwned -= 1; + SimBuildingsOwned -= 1; // eslint-disable-line no-unused-vars } // Get money made by selling all remaining buildings diff --git a/src/Sim/VariablesAndData.js b/src/Sim/VariablesAndData.js index 7ad74e83..40ce39fe 100644 --- a/src/Sim/VariablesAndData.js +++ b/src/Sim/VariablesAndData.js @@ -1,9 +1,8 @@ -/* eslint-disable prefer-const */ /** All variables used by simulation functions */ -export let SimObjects = []; -export let SimUpgrades = []; -export let SimAchievements = []; +export let SimObjects = []; // eslint-disable-line prefer-const +export let SimUpgrades = []; // eslint-disable-line prefer-const +export let SimAchievements = []; // eslint-disable-line prefer-const export let SimBuildingsOwned; export let SimUpgradesOwned; export let SimPledges; diff --git a/webpack.config.js b/webpack.config.js index 8c92e1a7..ccca22b3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,7 +3,7 @@ const path = require('path'); module.exports = function (env) { return { mode: 'production', - devtool: env.production ? 'source-map' : 'eval-source-map', + devtool: env.production ? 'source-map' : 'inline-source-map', optimization: { minimize: !!env.production, },