{"id":3364,"date":"2022-09-19T03:32:15","date_gmt":"2022-09-18T22:32:15","guid":{"rendered":"https:\/\/www.edopedia.com\/blog\/?p=3364"},"modified":"2022-09-19T03:32:18","modified_gmt":"2022-09-18T22:32:18","slug":"how-to-make-pokemon-go-iv-calculator-in-javascript","status":"publish","type":"post","link":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/","title":{"rendered":"How to Make Pokemon GO IV Calculator in JavaScript"},"content":{"rendered":"\n<p>In this tutorial, you will learn how to make a\u00a0<strong>Pokemon GO IV Calculator in JavaScript<\/strong>. Basically,\u00a0this\u00a0tool can be used to get the IVs of the Pokemon. It means that now you can easily find out if your Pokemon can be the best.<\/p>\n\n\n\n<p>You can even improve this <strong>Pokemon GO IV Calculator<\/strong> by adding features like <strong>PvP Team Builder<\/strong> for planning your <strong>PvP teams<\/strong> in all leagues. Also, get familiar with <strong>PvP Strategy<\/strong> and why lower IVs can be better.<\/p>\n\n\n\n<p>The full source code of\u00a0the\u00a0<strong>Pokemon GO IV Calculator<\/strong>\u00a0is given below. You can easily copy\/paste or download it on your computer and try it yourself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pokemon GO IV Calculator<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">index.js<\/h3>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;text\/javascript&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;JavaScript&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;js&quot;}\">\nconst _ = require('underscore');\nconst pokedex = require('.\/support\/pokedex');\nconst levelUpData = require('.\/support\/levelUpData');\nconst grader = require('.\/support\/grader');\n\nfunction testHP(hp, iv, levelData, pokemon) {\n\treturn hp == parseInt(Math.floor((pokemon.stamina + iv) * levelData.cpScalar), 10);\n}\n\nfunction testCP(cp, attackIV, defenseIV, staminaIV, levelData, pokemon) {\n\tconst attackFactor = pokemon.attack + attackIV;\n\tconst defenseFactor = Math.pow(pokemon.defense + defenseIV, 0.5)\n\tconst staminaFactor = Math.pow((pokemon.stamina + staminaIV), 0.5);\n\tconst scalarFactor = Math.pow(levelData.cpScalar, 2);\n\treturn cp == parseInt(attackFactor * defenseFactor * staminaFactor * scalarFactor \/ 10, 10);\n}\n\nfunction determinePerfection(ivs) {\n\tconst perfection = (ivs.attackIV + ivs.defenseIV + ivs.staminaIV) \/ 45\n\treturn Math.floor(perfection * 100) \/ 100;\n}\n\n\/**\n * Evaluate a given pokemon\n * @param {string|number} Pokemon Query (e.g. &quot;2&quot; or &quot;Ivysaur&quot;)\n * @param {number} CP\n * @param {number} HP\n * @param {number} dustCost Dust cost of upgrading pokemon\n * @param {bool} neverUpgraded If you've never powered it up, fewer potential levels\n *\/\nfunction evaluate (pokemonQuery, cp, hp, dustCost, neverUpgraded) {\n\tconst pokemon = pokedex.pokemonByName(pokemonQuery) || pokedex.pokemonById(pokemonQuery);\n\tif (!pokemon) {\n\t\treturn {error : `Could not find pokemon: ${pokemonQuery}`};\n\t}\n\tvar potentialIVs = determinePossibleIVs(pokemon, cp, hp, dustCost, neverUpgraded);\n\n\t_.each(potentialIVs, function (possibility) {\n\t\tpossibility.perfection = determinePerfection(possibility);\n\t});\n\n\tpotentialIVs.sort(function (a, b) {\n\t\tif (a.perfection == b.perfection) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn a.perfection &gt; b.perfection ? 1 : -1;\n\t})\n\n\tvar pokeSnapshot = {\n\t\tgrade : grader.grade(_.map(potentialIVs, determinePerfection)),\n\t\tivs : potentialIVs\n\t};\n\n\treturn pokeSnapshot;\n}\n\nfunction determinePossibleIVs (pokemon, cp, hp, dust, neverUpgraded) {\n\tvar potentialLevels = levelUpData.levelsByDust(dust);\n\tpotentialLevels.sort(function (a, b) {\n\t\treturn a.level &gt; b.level ? 1 : -1;\/\/no dupes\n\t});\n\tif (neverUpgraded) {\n\t\tpotentialLevels = _.filter(potentialLevels, function (data) {\n\t\t\treturn data.level % 2 === 0;\n\t\t});\n\t}\n\n\tvar staminaIV, attackIV, defenseIV;\n\tvar potentialHPIVs = [];\n\n\tvar levelIndex;\n\tvar levelData;\n\tfor (levelIndex = 0; levelIndex &lt; potentialLevels.length; levelIndex++) {\n\t\tlevelData = potentialLevels[levelIndex];\n\n\t\tfor (staminaIV = 0; staminaIV &lt;= 15; staminaIV++) {\n\t\t\tif (testHP(hp, staminaIV, levelData, pokemon)) {\n\t\t\t\tpotentialHPIVs.push({\n\t\t\t\t\tlevelData,\n\t\t\t\t\tiv : staminaIV\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t}\n\n\tvar hpIVIndex;\n\tvar potentialIVs = [];\n\tfor (hpIVIndex = 0; hpIVIndex &lt; potentialHPIVs.length; hpIVIndex++) {\n\t\tstaminaIV = potentialHPIVs[hpIVIndex].iv;\n\t\tlevelData = potentialHPIVs[hpIVIndex].levelData;\n\t\tfor (attackIV = 0; attackIV &lt;= 15; attackIV++) {\n\t\t\tfor (defenseIV = 0; defenseIV &lt;= 15; defenseIV++) {\n\t\t\t\tif (testCP(cp, attackIV, defenseIV, staminaIV, levelData, pokemon)) {\n\t\t\t\t\tpotentialIVs.push({\n\t\t\t\t\t\tattackIV, defenseIV, staminaIV,\n\t\t\t\t\t\tlevel : levelData.level\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn potentialIVs;\n}\n\n\/**\n * Determine possible IVs for a given pokemon\n * @param {string|number} Pokemon Query (e.g. &quot;2&quot; or &quot;Ivysaur&quot;)\n * @param {number} CP\n * @param {number} HP\n * @param {number} dustCost Dust cost of upgrading pokemon\n * @param {bool} neverUpgraded If you've never powered it up, fewer potential levels\n *\/\nfunction possibleIVs (pokemonQuery, cp, hp, dust, neverUpgraded) {\n\tconst pokemon = pokedex.pokemonByName(pokemonQuery) || pokedex.pokemonById(pokemonQuery);\n\tif (!pokemon) {\n\t\treturn {error:`Could not find pokemon: ${pokemonQuery}`};\n\t}\n\tconst ivs = determinePossibleIVs(pokemon, cp, hp, dustCost, neverUpgraded);\n\tif (!ivs.length) {\n\t\treturn {error: `Could not find any IVs matching given information`};\n\t}\n\treturn {ivs};\n}\n\nmodule.exports = {\n\tevaluate,\n\tpossibleIVs\n};\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">package.json<\/h3>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;application\/json&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;JSON&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;json&quot;}\">{\n  &quot;name&quot;: &quot;pokemon-go-iv-calculator&quot;,\n  &quot;version&quot;: &quot;0.3.2&quot;,\n  &quot;description&quot;: &quot;&quot;,\n  &quot;main&quot;: &quot;index.js&quot;,\n  &quot;scripts&quot;: {\n    &quot;test&quot;: &quot;echo \\&quot;Error: no test specified\\&quot; &amp;&amp; exit 1&quot;\n  },\n  &quot;repository&quot;: {\n    &quot;type&quot;: &quot;git&quot;,\n    &quot;url&quot;: &quot;git+ssh:\/\/git@github.com\/andromedado\/pokemon-go-iv-calculator.git&quot;\n  },\n  &quot;keywords&quot;: [\n    &quot;pokemon&quot;,\n    &quot;pokemongo&quot;,\n    &quot;ivcalculator&quot;,\n    &quot;calculator&quot;\n  ],\n  &quot;author&quot;: &quot;Shad Downey &lt;shad.downey@gmail.com&gt;&quot;,\n  &quot;license&quot;: &quot;ISC&quot;,\n  &quot;bugs&quot;: {\n    &quot;url&quot;: &quot;https:\/\/github.com\/andromedado\/pokemon-go-iv-calculator\/issues&quot;\n  },\n  &quot;homepage&quot;: &quot;https:\/\/github.com\/andromedado\/pokemon-go-iv-calculator#readme&quot;,\n  &quot;dependencies&quot;: {\n    &quot;underscore&quot;: &quot;^1.8.3&quot;\n  }\n}<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\/support\/grader.js<\/h3>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;text\/javascript&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;JavaScript&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;js&quot;}\">\nconst _ = require('underscore');\n\nconst letterGrades = [\n\t{ letter : 'A', min : 0.9, mid : 0.93, plus : 0.95 },\n\t{ letter : 'B', min : 0.8, mid : 0.83, plus : 0.87 },\n\t{ letter : 'C', min : 0.7, mid : 0.73, plus : 0.77 },\n\t{ letter : 'D', min : 0.6, mid : 0.62, plus : 0.67 },\n\t{ letter : 'F', min : 0 },\n];\n\nfunction grade(value) {\n\tvar letter;\n\tvar modifier;\n\n\tvar idx;\n\tvar grade;\n\tfor (idx = 0; idx &lt; letterGrades.length; idx++) {\n\t\tgrade = letterGrades[idx];\n\t\tif (value &gt;= grade.min) {\n\t\t\tletter = grade.letter;\n\t\t\tif (value &lt; grade.mid) {\n\t\t\t\tmodifier = '-';\n\t\t\t} else if (value &gt;= grade.plus) {\n\t\t\t\tmodifier = '+';\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst finalGrade = {\n\t\tletter: letter,\n\t\tpreciseLetter : letter + (modifier || '')\n\t};\n\n\treturn finalGrade;\n}\n\nfunction determineGrade(values) {\n\tif (values &amp;&amp; !_.isArray(values)) {\n\t\tvalues = [values];\n\t}\n\tif (!values || !values.length) {\n\t\treturn 'Unknown';\n\t}\n\tvalues.sort();\n\tconst minGrade = grade(values[0]);\n\tconst maxGrade = grade(values[values.length - 1]);\n\tconst averageValue = _.reduce(values, function (memo, val) {return memo + val;}, 0) \/ values.length;\n\tconst averageGrade = grade(averageValue);\n\n\tif (values.length === 1 || minGrade.preciseLetter === maxGrade.preciseLetter) {\n\t\treturn {\n\t\t\tminGrade, maxGrade, averageGrade,\n\t\t\texplanation : `${minGrade.preciseLetter} (${Math.floor(averageValue * 1000) \/ 10}%)`\n\t\t};\n\t}\n\n\tif (averageGrade.letter === minGrade.letter &amp;&amp; averageGrade.letter === maxGrade.letter) {\n\t\treturn {\n\t\t\tminGrade, maxGrade, averageGrade,\n\t\t\texplanation : `Solid ${averageGrade.preciseLetter} (${Math.floor(averageValue * 1000) \/ 10}%)`\n\t\t};\n\t}\n\n\treturn {\n\t\tminGrade, maxGrade, averageGrade,\n\t\texplanation : `Between ${maxGrade.preciseLetter} - ${minGrade.preciseLetter}`\n\t}\n}\n\nmodule.exports = {\n\tgrade : determineGrade\n};<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\/support\/levelUpData.js<\/h3>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;text\/javascript&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;JavaScript&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;js&quot;}\">\nvar _ = require('underscore');\n\nvar levels = [\n {\n  &quot;level&quot;: 1,\n  &quot;dust&quot;: 200,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.094\n },\n {\n  &quot;level&quot;: 2,\n  &quot;dust&quot;: 200,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.1351374\n },\n {\n  &quot;level&quot;: 3,\n  &quot;dust&quot;: 200,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.1663979\n },\n {\n  &quot;level&quot;: 4,\n  &quot;dust&quot;: 200,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.1926509\n },\n {\n  &quot;level&quot;: 5,\n  &quot;dust&quot;: 400,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.2157325\n },\n {\n  &quot;level&quot;: 6,\n  &quot;dust&quot;: 400,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.2365727\n },\n {\n  &quot;level&quot;: 7,\n  &quot;dust&quot;: 400,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.2557201\n },\n {\n  &quot;level&quot;: 8,\n  &quot;dust&quot;: 400,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.2735304\n },\n {\n  &quot;level&quot;: 9,\n  &quot;dust&quot;: 600,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.2902499\n },\n {\n  &quot;level&quot;: 10,\n  &quot;dust&quot;: 600,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.3060574\n },\n {\n  &quot;level&quot;: 11,\n  &quot;dust&quot;: 600,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.3210876\n },\n {\n  &quot;level&quot;: 12,\n  &quot;dust&quot;: 600,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.335445\n },\n {\n  &quot;level&quot;: 13,\n  &quot;dust&quot;: 800,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.3492127\n },\n {\n  &quot;level&quot;: 14,\n  &quot;dust&quot;: 800,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.3624578\n },\n {\n  &quot;level&quot;: 15,\n  &quot;dust&quot;: 800,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.3752356\n },\n {\n  &quot;level&quot;: 16,\n  &quot;dust&quot;: 800,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.3875924\n },\n {\n  &quot;level&quot;: 17,\n  &quot;dust&quot;: 1000,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.3995673\n },\n {\n  &quot;level&quot;: 18,\n  &quot;dust&quot;: 1000,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.4111936\n },\n {\n  &quot;level&quot;: 19,\n  &quot;dust&quot;: 1000,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.4225\n },\n {\n  &quot;level&quot;: 20,\n  &quot;dust&quot;: 1000,\n  &quot;candy&quot;: 1,\n  &quot;cpScalar&quot;: 0.4335117\n },\n {\n  &quot;level&quot;: 21,\n  &quot;dust&quot;: 1300,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.4431076\n },\n {\n  &quot;level&quot;: 22,\n  &quot;dust&quot;: 1300,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.45306\n },\n {\n  &quot;level&quot;: 23,\n  &quot;dust&quot;: 1300,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.4627984\n },\n {\n  &quot;level&quot;: 24,\n  &quot;dust&quot;: 1300,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.4723361\n },\n {\n  &quot;level&quot;: 25,\n  &quot;dust&quot;: 1600,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.481685\n },\n {\n  &quot;level&quot;: 26,\n  &quot;dust&quot;: 1600,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.4908558\n },\n {\n  &quot;level&quot;: 27,\n  &quot;dust&quot;: 1600,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.4998584\n },\n {\n  &quot;level&quot;: 28,\n  &quot;dust&quot;: 1600,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5087018\n },\n {\n  &quot;level&quot;: 29,\n  &quot;dust&quot;: 1900,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.517394\n },\n {\n  &quot;level&quot;: 30,\n  &quot;dust&quot;: 1900,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5259425\n },\n {\n  &quot;level&quot;: 31,\n  &quot;dust&quot;: 1900,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5343543\n },\n {\n  &quot;level&quot;: 32,\n  &quot;dust&quot;: 1900,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5426358\n },\n {\n  &quot;level&quot;: 33,\n  &quot;dust&quot;: 2200,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5507927\n },\n {\n  &quot;level&quot;: 34,\n  &quot;dust&quot;: 2200,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5588306\n },\n {\n  &quot;level&quot;: 35,\n  &quot;dust&quot;: 2200,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5667545\n },\n {\n  &quot;level&quot;: 36,\n  &quot;dust&quot;: 2200,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5745692\n },\n {\n  &quot;level&quot;: 37,\n  &quot;dust&quot;: 2500,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5822789\n },\n {\n  &quot;level&quot;: 38,\n  &quot;dust&quot;: 2500,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5898879\n },\n {\n  &quot;level&quot;: 39,\n  &quot;dust&quot;: 2500,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.5974\n },\n {\n  &quot;level&quot;: 40,\n  &quot;dust&quot;: 2500,\n  &quot;candy&quot;: 2,\n  &quot;cpScalar&quot;: 0.6048188\n },\n {\n  &quot;level&quot;: 41,\n  &quot;dust&quot;: 3000,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.6121573\n },\n {\n  &quot;level&quot;: 42,\n  &quot;dust&quot;: 3000,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.6194041\n },\n {\n  &quot;level&quot;: 43,\n  &quot;dust&quot;: 3000,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.6265671\n },\n {\n  &quot;level&quot;: 44,\n  &quot;dust&quot;: 3000,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.6336492\n },\n {\n  &quot;level&quot;: 45,\n  &quot;dust&quot;: 3500,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.640653\n },\n {\n  &quot;level&quot;: 46,\n  &quot;dust&quot;: 3500,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.647581\n },\n {\n  &quot;level&quot;: 47,\n  &quot;dust&quot;: 3500,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.6544356\n },\n {\n  &quot;level&quot;: 48,\n  &quot;dust&quot;: 3500,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.6612193\n },\n {\n  &quot;level&quot;: 49,\n  &quot;dust&quot;: 4000,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.667934\n },\n {\n  &quot;level&quot;: 50,\n  &quot;dust&quot;: 4000,\n  &quot;candy&quot;: 3,\n  &quot;cpScalar&quot;: 0.6745819\n },\n {\n  &quot;level&quot;: 51,\n  &quot;dust&quot;: 4000,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.6811649\n },\n {\n  &quot;level&quot;: 52,\n  &quot;dust&quot;: 4000,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.6876849\n },\n {\n  &quot;level&quot;: 53,\n  &quot;dust&quot;: 4500,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.6941437\n },\n {\n  &quot;level&quot;: 54,\n  &quot;dust&quot;: 4500,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.7005429\n },\n {\n  &quot;level&quot;: 55,\n  &quot;dust&quot;: 4500,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.7068842\n },\n {\n  &quot;level&quot;: 56,\n  &quot;dust&quot;: 4500,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.7131691\n },\n {\n  &quot;level&quot;: 57,\n  &quot;dust&quot;: 5000,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.7193991\n },\n {\n  &quot;level&quot;: 58,\n  &quot;dust&quot;: 5000,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.7255756\n },\n {\n  &quot;level&quot;: 59,\n  &quot;dust&quot;: 5000,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.7317\n },\n {\n  &quot;level&quot;: 60,\n  &quot;dust&quot;: 5000,\n  &quot;candy&quot;: 4,\n  &quot;cpScalar&quot;: 0.734741\n },\n {\n  &quot;level&quot;: 61,\n  &quot;dust&quot;: 6000,\n  &quot;candy&quot;: 6,\n  &quot;cpScalar&quot;: 0.7377695\n },\n {\n  &quot;level&quot;: 62,\n  &quot;dust&quot;: 6000,\n  &quot;candy&quot;: 6,\n  &quot;cpScalar&quot;: 0.7407856\n },\n {\n  &quot;level&quot;: 63,\n  &quot;dust&quot;: 6000,\n  &quot;candy&quot;: 6,\n  &quot;cpScalar&quot;: 0.7437894\n },\n {\n  &quot;level&quot;: 64,\n  &quot;dust&quot;: 6000,\n  &quot;candy&quot;: 6,\n  &quot;cpScalar&quot;: 0.7467812\n },\n {\n  &quot;level&quot;: 65,\n  &quot;dust&quot;: 7000,\n  &quot;candy&quot;: 8,\n  &quot;cpScalar&quot;: 0.749761\n },\n {\n  &quot;level&quot;: 66,\n  &quot;dust&quot;: 7000,\n  &quot;candy&quot;: 8,\n  &quot;cpScalar&quot;: 0.7527291\n },\n {\n  &quot;level&quot;: 67,\n  &quot;dust&quot;: 7000,\n  &quot;candy&quot;: 8,\n  &quot;cpScalar&quot;: 0.7556855\n },\n {\n  &quot;level&quot;: 68,\n  &quot;dust&quot;: 7000,\n  &quot;candy&quot;: 8,\n  &quot;cpScalar&quot;: 0.7586304\n },\n {\n  &quot;level&quot;: 69,\n  &quot;dust&quot;: 8000,\n  &quot;candy&quot;: 10,\n  &quot;cpScalar&quot;: 0.7615638\n },\n {\n  &quot;level&quot;: 70,\n  &quot;dust&quot;: 8000,\n  &quot;candy&quot;: 10,\n  &quot;cpScalar&quot;: 0.7644861\n },\n {\n  &quot;level&quot;: 71,\n  &quot;dust&quot;: 8000,\n  &quot;candy&quot;: 10,\n  &quot;cpScalar&quot;: 0.7673972\n },\n {\n  &quot;level&quot;: 72,\n  &quot;dust&quot;: 8000,\n  &quot;candy&quot;: 10,\n  &quot;cpScalar&quot;: 0.7702973\n },\n {\n  &quot;level&quot;: 73,\n  &quot;dust&quot;: 9000,\n  &quot;candy&quot;: 12,\n  &quot;cpScalar&quot;: 0.7731865\n },\n {\n  &quot;level&quot;: 74,\n  &quot;dust&quot;: 9000,\n  &quot;candy&quot;: 12,\n  &quot;cpScalar&quot;: 0.776065\n },\n {\n  &quot;level&quot;: 75,\n  &quot;dust&quot;: 9000,\n  &quot;candy&quot;: 12,\n  &quot;cpScalar&quot;: 0.7789328\n },\n {\n  &quot;level&quot;: 76,\n  &quot;dust&quot;: 9000,\n  &quot;candy&quot;: 12,\n  &quot;cpScalar&quot;: 0.7817901\n },\n {\n  &quot;level&quot;: 77,\n  &quot;dust&quot;: 10000,\n  &quot;candy&quot;: 15,\n  &quot;cpScalar&quot;: 0.784637\n },\n {\n  &quot;level&quot;: 78,\n  &quot;dust&quot;: 10000,\n  &quot;candy&quot;: 15,\n  &quot;cpScalar&quot;: 0.7874736\n },\n {\n  &quot;level&quot;: 79,\n  &quot;dust&quot;: 10000,\n  &quot;candy&quot;: 15,\n  &quot;cpScalar&quot;: 0.7903\n },\n {\n  &quot;level&quot;: 80,\n  &quot;dust&quot;: 10000,\n  &quot;candy&quot;: 15,\n  &quot;cpScalar&quot;: 0.7931164\n }\n];\n\nvar lookup = {\n\tbyLevel : {},\n\tbyDust : {},\n\tbyCandy : {}\n};\n\n_.each(levels, function (data) {\n\tlookup.byLevel[data.level] = data;\n\t\n\tlookup.byDust[data.dust] = lookup.byDust[data.dust] || [];\n\tlookup.byDust[data.dust].push(data);\n\t\n\tlookup.byCandy[data.candy] = lookup.byCandy[data.candy] || [];\n\tlookup.byCandy[data.candy].push(data);\n});\n\n\nmodule.exports = {\n\tallLevels : function () {\n\t\treturn levels.slice();\n\t},\n\tlevelsByDust : function (dust) {\n\t\tdust = parseInt(dust, 10);\n\t\treturn lookup.byDust[dust].slice();\n\t},\n\tlevelsByCandy : function (candy) {\n\t\tcandy = parseInt(candy, 10);\n\t\treturn lookup.byCandy[candy].slice();\n\t}\n};<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\/support\/pokedex.js<\/h3>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;text\/javascript&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;JavaScript&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;js&quot;}\">\nvar _ = require('underscore');\n\nvar pokemon = [\n {\n  &quot;id&quot;: 1,\n  &quot;name&quot;: &quot;Bulbasaur&quot;,\n  &quot;stamina&quot;: 90,\n  &quot;attack&quot;: 126,\n  &quot;defense&quot;: 126\n },\n {\n  &quot;id&quot;: 2,\n  &quot;name&quot;: &quot;Ivysaur&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 156,\n  &quot;defense&quot;: 158\n },\n {\n  &quot;id&quot;: 3,\n  &quot;name&quot;: &quot;Venusaur&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 198,\n  &quot;defense&quot;: 200\n },\n {\n  &quot;id&quot;: 4,\n  &quot;name&quot;: &quot;Charmander&quot;,\n  &quot;stamina&quot;: 78,\n  &quot;attack&quot;: 128,\n  &quot;defense&quot;: 108\n },\n {\n  &quot;id&quot;: 5,\n  &quot;name&quot;: &quot;Charmeleon&quot;,\n  &quot;stamina&quot;: 116,\n  &quot;attack&quot;: 160,\n  &quot;defense&quot;: 140\n },\n {\n  &quot;id&quot;: 6,\n  &quot;name&quot;: &quot;Charizard&quot;,\n  &quot;stamina&quot;: 156,\n  &quot;attack&quot;: 212,\n  &quot;defense&quot;: 182\n },\n {\n  &quot;id&quot;: 7,\n  &quot;name&quot;: &quot;Squirtle&quot;,\n  &quot;stamina&quot;: 88,\n  &quot;attack&quot;: 112,\n  &quot;defense&quot;: 142\n },\n {\n  &quot;id&quot;: 8,\n  &quot;name&quot;: &quot;Wartortle&quot;,\n  &quot;stamina&quot;: 118,\n  &quot;attack&quot;: 144,\n  &quot;defense&quot;: 176\n },\n {\n  &quot;id&quot;: 9,\n  &quot;name&quot;: &quot;Blastoise&quot;,\n  &quot;stamina&quot;: 158,\n  &quot;attack&quot;: 186,\n  &quot;defense&quot;: 222\n },\n {\n  &quot;id&quot;: 10,\n  &quot;name&quot;: &quot;Caterpie&quot;,\n  &quot;stamina&quot;: 90,\n  &quot;attack&quot;: 62,\n  &quot;defense&quot;: 66\n },\n {\n  &quot;id&quot;: 11,\n  &quot;name&quot;: &quot;Metapod&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 56,\n  &quot;defense&quot;: 86\n },\n {\n  &quot;id&quot;: 12,\n  &quot;name&quot;: &quot;Butterfree&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 144,\n  &quot;defense&quot;: 144\n },\n {\n  &quot;id&quot;: 13,\n  &quot;name&quot;: &quot;Weedle&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 68,\n  &quot;defense&quot;: 64\n },\n {\n  &quot;id&quot;: 14,\n  &quot;name&quot;: &quot;Kakuna&quot;,\n  &quot;stamina&quot;: 90,\n  &quot;attack&quot;: 62,\n  &quot;defense&quot;: 82\n },\n {\n  &quot;id&quot;: 15,\n  &quot;name&quot;: &quot;Beedrill&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 144,\n  &quot;defense&quot;: 130\n },\n {\n  &quot;id&quot;: 16,\n  &quot;name&quot;: &quot;Pidgey&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 94,\n  &quot;defense&quot;: 90\n },\n {\n  &quot;id&quot;: 17,\n  &quot;name&quot;: &quot;Pidgeotto&quot;,\n  &quot;stamina&quot;: 126,\n  &quot;attack&quot;: 126,\n  &quot;defense&quot;: 122\n },\n {\n  &quot;id&quot;: 18,\n  &quot;name&quot;: &quot;Pidgeot&quot;,\n  &quot;stamina&quot;: 166,\n  &quot;attack&quot;: 170,\n  &quot;defense&quot;: 166\n },\n {\n  &quot;id&quot;: 19,\n  &quot;name&quot;: &quot;Rattata&quot;,\n  &quot;stamina&quot;: 60,\n  &quot;attack&quot;: 92,\n  &quot;defense&quot;: 86\n },\n {\n  &quot;id&quot;: 20,\n  &quot;name&quot;: &quot;Raticate&quot;,\n  &quot;stamina&quot;: 110,\n  &quot;attack&quot;: 146,\n  &quot;defense&quot;: 150\n },\n {\n  &quot;id&quot;: 21,\n  &quot;name&quot;: &quot;Spearow&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 102,\n  &quot;defense&quot;: 78\n },\n {\n  &quot;id&quot;: 22,\n  &quot;name&quot;: &quot;Fearow&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 168,\n  &quot;defense&quot;: 146\n },\n {\n  &quot;id&quot;: 23,\n  &quot;name&quot;: &quot;Ekans&quot;,\n  &quot;stamina&quot;: 70,\n  &quot;attack&quot;: 112,\n  &quot;defense&quot;: 112\n },\n {\n  &quot;id&quot;: 24,\n  &quot;name&quot;: &quot;Arbok&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 166,\n  &quot;defense&quot;: 166\n },\n {\n  &quot;id&quot;: 25,\n  &quot;name&quot;: &quot;Pikachu&quot;,\n  &quot;stamina&quot;: 70,\n  &quot;attack&quot;: 124,\n  &quot;defense&quot;: 108\n },\n {\n  &quot;id&quot;: 26,\n  &quot;name&quot;: &quot;Raichu&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 200,\n  &quot;defense&quot;: 154\n },\n {\n  &quot;id&quot;: 27,\n  &quot;name&quot;: &quot;Sandshrew&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 90,\n  &quot;defense&quot;: 114\n },\n {\n  &quot;id&quot;: 28,\n  &quot;name&quot;: &quot;Sandslash&quot;,\n  &quot;stamina&quot;: 150,\n  &quot;attack&quot;: 150,\n  &quot;defense&quot;: 172\n },\n {\n  &quot;id&quot;: 29,\n  &quot;name&quot;: &quot;Nidoran_female&quot;,\n  &quot;stamina&quot;: 110,\n  &quot;attack&quot;: 100,\n  &quot;defense&quot;: 104\n },\n {\n  &quot;id&quot;: 30,\n  &quot;name&quot;: &quot;Nidorina&quot;,\n  &quot;stamina&quot;: 140,\n  &quot;attack&quot;: 132,\n  &quot;defense&quot;: 136\n },\n {\n  &quot;id&quot;: 31,\n  &quot;name&quot;: &quot;Nidoqueen&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 184,\n  &quot;defense&quot;: 190\n },\n {\n  &quot;id&quot;: 32,\n  &quot;name&quot;: &quot;Nidoran_male&quot;,\n  &quot;stamina&quot;: 92,\n  &quot;attack&quot;: 110,\n  &quot;defense&quot;: 94\n },\n {\n  &quot;id&quot;: 33,\n  &quot;name&quot;: &quot;Nidorino&quot;,\n  &quot;stamina&quot;: 122,\n  &quot;attack&quot;: 142,\n  &quot;defense&quot;: 128\n },\n {\n  &quot;id&quot;: 34,\n  &quot;name&quot;: &quot;Nidoking&quot;,\n  &quot;stamina&quot;: 162,\n  &quot;attack&quot;: 204,\n  &quot;defense&quot;: 170\n },\n {\n  &quot;id&quot;: 35,\n  &quot;name&quot;: &quot;Clefairy&quot;,\n  &quot;stamina&quot;: 140,\n  &quot;attack&quot;: 116,\n  &quot;defense&quot;: 124\n },\n {\n  &quot;id&quot;: 36,\n  &quot;name&quot;: &quot;Clefable&quot;,\n  &quot;stamina&quot;: 190,\n  &quot;attack&quot;: 178,\n  &quot;defense&quot;: 178\n },\n {\n  &quot;id&quot;: 37,\n  &quot;name&quot;: &quot;Vulpix&quot;,\n  &quot;stamina&quot;: 76,\n  &quot;attack&quot;: 106,\n  &quot;defense&quot;: 118\n },\n {\n  &quot;id&quot;: 38,\n  &quot;name&quot;: &quot;Ninetales&quot;,\n  &quot;stamina&quot;: 146,\n  &quot;attack&quot;: 176,\n  &quot;defense&quot;: 194\n },\n {\n  &quot;id&quot;: 39,\n  &quot;name&quot;: &quot;Jigglypuff&quot;,\n  &quot;stamina&quot;: 230,\n  &quot;attack&quot;: 98,\n  &quot;defense&quot;: 54\n },\n {\n  &quot;id&quot;: 40,\n  &quot;name&quot;: &quot;Wigglytuff&quot;,\n  &quot;stamina&quot;: 280,\n  &quot;attack&quot;: 168,\n  &quot;defense&quot;: 108\n },\n {\n  &quot;id&quot;: 41,\n  &quot;name&quot;: &quot;Zubat&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 88,\n  &quot;defense&quot;: 90\n },\n {\n  &quot;id&quot;: 42,\n  &quot;name&quot;: &quot;Golbat&quot;,\n  &quot;stamina&quot;: 150,\n  &quot;attack&quot;: 164,\n  &quot;defense&quot;: 164\n },\n {\n  &quot;id&quot;: 43,\n  &quot;name&quot;: &quot;Oddish&quot;,\n  &quot;stamina&quot;: 90,\n  &quot;attack&quot;: 134,\n  &quot;defense&quot;: 130\n },\n {\n  &quot;id&quot;: 44,\n  &quot;name&quot;: &quot;Gloom&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 162,\n  &quot;defense&quot;: 158\n },\n {\n  &quot;id&quot;: 45,\n  &quot;name&quot;: &quot;Vileplume&quot;,\n  &quot;stamina&quot;: 150,\n  &quot;attack&quot;: 202,\n  &quot;defense&quot;: 190\n },\n {\n  &quot;id&quot;: 46,\n  &quot;name&quot;: &quot;Paras&quot;,\n  &quot;stamina&quot;: 70,\n  &quot;attack&quot;: 122,\n  &quot;defense&quot;: 120\n },\n {\n  &quot;id&quot;: 47,\n  &quot;name&quot;: &quot;Parasect&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 162,\n  &quot;defense&quot;: 170\n },\n {\n  &quot;id&quot;: 48,\n  &quot;name&quot;: &quot;Venonat&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 108,\n  &quot;defense&quot;: 118\n },\n {\n  &quot;id&quot;: 49,\n  &quot;name&quot;: &quot;Venomoth&quot;,\n  &quot;stamina&quot;: 140,\n  &quot;attack&quot;: 172,\n  &quot;defense&quot;: 154\n },\n {\n  &quot;id&quot;: 50,\n  &quot;name&quot;: &quot;Diglett&quot;,\n  &quot;stamina&quot;: 20,\n  &quot;attack&quot;: 108,\n  &quot;defense&quot;: 86\n },\n {\n  &quot;id&quot;: 51,\n  &quot;name&quot;: &quot;Dugtrio&quot;,\n  &quot;stamina&quot;: 70,\n  &quot;attack&quot;: 148,\n  &quot;defense&quot;: 140\n },\n {\n  &quot;id&quot;: 52,\n  &quot;name&quot;: &quot;Meowth&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 104,\n  &quot;defense&quot;: 94\n },\n {\n  &quot;id&quot;: 53,\n  &quot;name&quot;: &quot;Persian&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 156,\n  &quot;defense&quot;: 146\n },\n {\n  &quot;id&quot;: 54,\n  &quot;name&quot;: &quot;Psyduck&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 132,\n  &quot;defense&quot;: 112\n },\n {\n  &quot;id&quot;: 55,\n  &quot;name&quot;: &quot;Golduck&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 194,\n  &quot;defense&quot;: 176\n },\n {\n  &quot;id&quot;: 56,\n  &quot;name&quot;: &quot;Mankey&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 122,\n  &quot;defense&quot;: 96\n },\n {\n  &quot;id&quot;: 57,\n  &quot;name&quot;: &quot;Primeape&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 178,\n  &quot;defense&quot;: 150\n },\n {\n  &quot;id&quot;: 58,\n  &quot;name&quot;: &quot;Growlithe&quot;,\n  &quot;stamina&quot;: 110,\n  &quot;attack&quot;: 156,\n  &quot;defense&quot;: 110\n },\n {\n  &quot;id&quot;: 59,\n  &quot;name&quot;: &quot;Arcanine&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 230,\n  &quot;defense&quot;: 180\n },\n {\n  &quot;id&quot;: 60,\n  &quot;name&quot;: &quot;Poliwag&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 108,\n  &quot;defense&quot;: 98\n },\n {\n  &quot;id&quot;: 61,\n  &quot;name&quot;: &quot;Poliwhirl&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 132,\n  &quot;defense&quot;: 132\n },\n {\n  &quot;id&quot;: 62,\n  &quot;name&quot;: &quot;Poliwrath&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 180,\n  &quot;defense&quot;: 202\n },\n {\n  &quot;id&quot;: 63,\n  &quot;name&quot;: &quot;Abra&quot;,\n  &quot;stamina&quot;: 50,\n  &quot;attack&quot;: 110,\n  &quot;defense&quot;: 76\n },\n {\n  &quot;id&quot;: 64,\n  &quot;name&quot;: &quot;Kadabra&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 150,\n  &quot;defense&quot;: 112\n },\n {\n  &quot;id&quot;: 65,\n  &quot;name&quot;: &quot;Alakazam&quot;,\n  &quot;stamina&quot;: 110,\n  &quot;attack&quot;: 186,\n  &quot;defense&quot;: 152\n },\n {\n  &quot;id&quot;: 66,\n  &quot;name&quot;: &quot;Machop&quot;,\n  &quot;stamina&quot;: 140,\n  &quot;attack&quot;: 118,\n  &quot;defense&quot;: 96\n },\n {\n  &quot;id&quot;: 67,\n  &quot;name&quot;: &quot;Machoke&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 154,\n  &quot;defense&quot;: 144\n },\n {\n  &quot;id&quot;: 68,\n  &quot;name&quot;: &quot;Machamp&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 198,\n  &quot;defense&quot;: 180\n },\n {\n  &quot;id&quot;: 69,\n  &quot;name&quot;: &quot;Bellsprout&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 158,\n  &quot;defense&quot;: 78\n },\n {\n  &quot;id&quot;: 70,\n  &quot;name&quot;: &quot;Weepinbell&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 190,\n  &quot;defense&quot;: 110\n },\n {\n  &quot;id&quot;: 71,\n  &quot;name&quot;: &quot;Victreebel&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 222,\n  &quot;defense&quot;: 152\n },\n {\n  &quot;id&quot;: 72,\n  &quot;name&quot;: &quot;Tentacool&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 106,\n  &quot;defense&quot;: 136\n },\n {\n  &quot;id&quot;: 73,\n  &quot;name&quot;: &quot;Tentacruel&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 170,\n  &quot;defense&quot;: 196\n },\n {\n  &quot;id&quot;: 74,\n  &quot;name&quot;: &quot;Geodude&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 106,\n  &quot;defense&quot;: 118\n },\n {\n  &quot;id&quot;: 75,\n  &quot;name&quot;: &quot;Graveler&quot;,\n  &quot;stamina&quot;: 110,\n  &quot;attack&quot;: 142,\n  &quot;defense&quot;: 156\n },\n {\n  &quot;id&quot;: 76,\n  &quot;name&quot;: &quot;Golem&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 176,\n  &quot;defense&quot;: 198\n },\n {\n  &quot;id&quot;: 77,\n  &quot;name&quot;: &quot;Ponyta&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 168,\n  &quot;defense&quot;: 138\n },\n {\n  &quot;id&quot;: 78,\n  &quot;name&quot;: &quot;Rapidash&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 200,\n  &quot;defense&quot;: 170\n },\n {\n  &quot;id&quot;: 79,\n  &quot;name&quot;: &quot;Slowpoke&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 110,\n  &quot;defense&quot;: 110\n },\n {\n  &quot;id&quot;: 80,\n  &quot;name&quot;: &quot;Slowbro&quot;,\n  &quot;stamina&quot;: 190,\n  &quot;attack&quot;: 184,\n  &quot;defense&quot;: 198\n },\n {\n  &quot;id&quot;: 81,\n  &quot;name&quot;: &quot;Magnemite&quot;,\n  &quot;stamina&quot;: 50,\n  &quot;attack&quot;: 128,\n  &quot;defense&quot;: 138\n },\n {\n  &quot;id&quot;: 82,\n  &quot;name&quot;: &quot;Magneton&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 186,\n  &quot;defense&quot;: 180\n },\n {\n  &quot;id&quot;: 83,\n  &quot;name&quot;: &quot;Farfetchd&quot;,\n  &quot;stamina&quot;: 104,\n  &quot;attack&quot;: 138,\n  &quot;defense&quot;: 132\n },\n {\n  &quot;id&quot;: 84,\n  &quot;name&quot;: &quot;Doduo&quot;,\n  &quot;stamina&quot;: 70,\n  &quot;attack&quot;: 126,\n  &quot;defense&quot;: 96\n },\n {\n  &quot;id&quot;: 85,\n  &quot;name&quot;: &quot;Dodrio&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 182,\n  &quot;defense&quot;: 150\n },\n {\n  &quot;id&quot;: 86,\n  &quot;name&quot;: &quot;Seel&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 104,\n  &quot;defense&quot;: 138\n },\n {\n  &quot;id&quot;: 87,\n  &quot;name&quot;: &quot;Dewgong&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 156,\n  &quot;defense&quot;: 192\n },\n {\n  &quot;id&quot;: 88,\n  &quot;name&quot;: &quot;Grimer&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 124,\n  &quot;defense&quot;: 110\n },\n {\n  &quot;id&quot;: 89,\n  &quot;name&quot;: &quot;Muk&quot;,\n  &quot;stamina&quot;: 210,\n  &quot;attack&quot;: 180,\n  &quot;defense&quot;: 188\n },\n {\n  &quot;id&quot;: 90,\n  &quot;name&quot;: &quot;Shellder&quot;,\n  &quot;stamina&quot;: 60,\n  &quot;attack&quot;: 120,\n  &quot;defense&quot;: 112\n },\n {\n  &quot;id&quot;: 91,\n  &quot;name&quot;: &quot;Cloyster&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 196,\n  &quot;defense&quot;: 196\n },\n {\n  &quot;id&quot;: 92,\n  &quot;name&quot;: &quot;Gastly&quot;,\n  &quot;stamina&quot;: 60,\n  &quot;attack&quot;: 136,\n  &quot;defense&quot;: 82\n },\n {\n  &quot;id&quot;: 93,\n  &quot;name&quot;: &quot;Haunter&quot;,\n  &quot;stamina&quot;: 90,\n  &quot;attack&quot;: 172,\n  &quot;defense&quot;: 118\n },\n {\n  &quot;id&quot;: 94,\n  &quot;name&quot;: &quot;Gengar&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 204,\n  &quot;defense&quot;: 156\n },\n {\n  &quot;id&quot;: 95,\n  &quot;name&quot;: &quot;Onix&quot;,\n  &quot;stamina&quot;: 70,\n  &quot;attack&quot;: 90,\n  &quot;defense&quot;: 186\n },\n {\n  &quot;id&quot;: 96,\n  &quot;name&quot;: &quot;Drowzee&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 104,\n  &quot;defense&quot;: 140\n },\n {\n  &quot;id&quot;: 97,\n  &quot;name&quot;: &quot;Hypno&quot;,\n  &quot;stamina&quot;: 170,\n  &quot;attack&quot;: 162,\n  &quot;defense&quot;: 196\n },\n {\n  &quot;id&quot;: 98,\n  &quot;name&quot;: &quot;Krabby&quot;,\n  &quot;stamina&quot;: 60,\n  &quot;attack&quot;: 116,\n  &quot;defense&quot;: 110\n },\n {\n  &quot;id&quot;: 99,\n  &quot;name&quot;: &quot;Kingler&quot;,\n  &quot;stamina&quot;: 110,\n  &quot;attack&quot;: 178,\n  &quot;defense&quot;: 168\n },\n {\n  &quot;id&quot;: 100,\n  &quot;name&quot;: &quot;Voltorb&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 102,\n  &quot;defense&quot;: 124\n },\n {\n  &quot;id&quot;: 101,\n  &quot;name&quot;: &quot;Electrode&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 150,\n  &quot;defense&quot;: 174\n },\n {\n  &quot;id&quot;: 102,\n  &quot;name&quot;: &quot;Exeggcute&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 110,\n  &quot;defense&quot;: 132\n },\n {\n  &quot;id&quot;: 103,\n  &quot;name&quot;: &quot;Exeggutor&quot;,\n  &quot;stamina&quot;: 190,\n  &quot;attack&quot;: 232,\n  &quot;defense&quot;: 164\n },\n {\n  &quot;id&quot;: 104,\n  &quot;name&quot;: &quot;Cubone&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 102,\n  &quot;defense&quot;: 150\n },\n {\n  &quot;id&quot;: 105,\n  &quot;name&quot;: &quot;Marowak&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 140,\n  &quot;defense&quot;: 202\n },\n {\n  &quot;id&quot;: 106,\n  &quot;name&quot;: &quot;Hitmonlee&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 148,\n  &quot;defense&quot;: 172\n },\n {\n  &quot;id&quot;: 107,\n  &quot;name&quot;: &quot;Hitmonchan&quot;,\n  &quot;stamina&quot;: 100,\n  &quot;attack&quot;: 138,\n  &quot;defense&quot;: 204\n },\n {\n  &quot;id&quot;: 108,\n  &quot;name&quot;: &quot;Lickitung&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 126,\n  &quot;defense&quot;: 160\n },\n {\n  &quot;id&quot;: 109,\n  &quot;name&quot;: &quot;Koffing&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 136,\n  &quot;defense&quot;: 142\n },\n {\n  &quot;id&quot;: 110,\n  &quot;name&quot;: &quot;Weezing&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 190,\n  &quot;defense&quot;: 198\n },\n {\n  &quot;id&quot;: 111,\n  &quot;name&quot;: &quot;Rhyhorn&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 110,\n  &quot;defense&quot;: 116\n },\n {\n  &quot;id&quot;: 112,\n  &quot;name&quot;: &quot;Rhydon&quot;,\n  &quot;stamina&quot;: 210,\n  &quot;attack&quot;: 166,\n  &quot;defense&quot;: 160\n },\n {\n  &quot;id&quot;: 113,\n  &quot;name&quot;: &quot;Chansey&quot;,\n  &quot;stamina&quot;: 500,\n  &quot;attack&quot;: 40,\n  &quot;defense&quot;: 60\n },\n {\n  &quot;id&quot;: 114,\n  &quot;name&quot;: &quot;Tangela&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 164,\n  &quot;defense&quot;: 152\n },\n {\n  &quot;id&quot;: 115,\n  &quot;name&quot;: &quot;Kangaskhan&quot;,\n  &quot;stamina&quot;: 210,\n  &quot;attack&quot;: 142,\n  &quot;defense&quot;: 178\n },\n {\n  &quot;id&quot;: 116,\n  &quot;name&quot;: &quot;Horsea&quot;,\n  &quot;stamina&quot;: 60,\n  &quot;attack&quot;: 122,\n  &quot;defense&quot;: 100\n },\n {\n  &quot;id&quot;: 117,\n  &quot;name&quot;: &quot;Seadra&quot;,\n  &quot;stamina&quot;: 110,\n  &quot;attack&quot;: 176,\n  &quot;defense&quot;: 150\n },\n {\n  &quot;id&quot;: 118,\n  &quot;name&quot;: &quot;Goldeen&quot;,\n  &quot;stamina&quot;: 90,\n  &quot;attack&quot;: 112,\n  &quot;defense&quot;: 126\n },\n {\n  &quot;id&quot;: 119,\n  &quot;name&quot;: &quot;Seaking&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 172,\n  &quot;defense&quot;: 160\n },\n {\n  &quot;id&quot;: 120,\n  &quot;name&quot;: &quot;Staryu&quot;,\n  &quot;stamina&quot;: 60,\n  &quot;attack&quot;: 130,\n  &quot;defense&quot;: 128\n },\n {\n  &quot;id&quot;: 121,\n  &quot;name&quot;: &quot;Starmie&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 194,\n  &quot;defense&quot;: 192\n },\n {\n  &quot;id&quot;: 122,\n  &quot;name&quot;: &quot;Mr_mime&quot;,\n  &quot;stamina&quot;: 80,\n  &quot;attack&quot;: 154,\n  &quot;defense&quot;: 196\n },\n {\n  &quot;id&quot;: 123,\n  &quot;name&quot;: &quot;Scyther&quot;,\n  &quot;stamina&quot;: 140,\n  &quot;attack&quot;: 176,\n  &quot;defense&quot;: 180\n },\n {\n  &quot;id&quot;: 124,\n  &quot;name&quot;: &quot;Jynx&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 172,\n  &quot;defense&quot;: 134\n },\n {\n  &quot;id&quot;: 125,\n  &quot;name&quot;: &quot;Electabuzz&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 198,\n  &quot;defense&quot;: 160\n },\n {\n  &quot;id&quot;: 126,\n  &quot;name&quot;: &quot;Magmar&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 214,\n  &quot;defense&quot;: 158\n },\n {\n  &quot;id&quot;: 127,\n  &quot;name&quot;: &quot;Pinsir&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 184,\n  &quot;defense&quot;: 186\n },\n {\n  &quot;id&quot;: 128,\n  &quot;name&quot;: &quot;Tauros&quot;,\n  &quot;stamina&quot;: 150,\n  &quot;attack&quot;: 148,\n  &quot;defense&quot;: 184\n },\n {\n  &quot;id&quot;: 129,\n  &quot;name&quot;: &quot;Magikarp&quot;,\n  &quot;stamina&quot;: 40,\n  &quot;attack&quot;: 42,\n  &quot;defense&quot;: 84\n },\n {\n  &quot;id&quot;: 130,\n  &quot;name&quot;: &quot;Gyarados&quot;,\n  &quot;stamina&quot;: 190,\n  &quot;attack&quot;: 192,\n  &quot;defense&quot;: 196\n },\n {\n  &quot;id&quot;: 131,\n  &quot;name&quot;: &quot;Lapras&quot;,\n  &quot;stamina&quot;: 260,\n  &quot;attack&quot;: 186,\n  &quot;defense&quot;: 190\n },\n {\n  &quot;id&quot;: 132,\n  &quot;name&quot;: &quot;Ditto&quot;,\n  &quot;stamina&quot;: 96,\n  &quot;attack&quot;: 110,\n  &quot;defense&quot;: 110\n },\n {\n  &quot;id&quot;: 133,\n  &quot;name&quot;: &quot;Eevee&quot;,\n  &quot;stamina&quot;: 110,\n  &quot;attack&quot;: 114,\n  &quot;defense&quot;: 128\n },\n {\n  &quot;id&quot;: 134,\n  &quot;name&quot;: &quot;Vaporeon&quot;,\n  &quot;stamina&quot;: 260,\n  &quot;attack&quot;: 186,\n  &quot;defense&quot;: 168\n },\n {\n  &quot;id&quot;: 135,\n  &quot;name&quot;: &quot;Jolteon&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 192,\n  &quot;defense&quot;: 174\n },\n {\n  &quot;id&quot;: 136,\n  &quot;name&quot;: &quot;Flareon&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 238,\n  &quot;defense&quot;: 178\n },\n {\n  &quot;id&quot;: 137,\n  &quot;name&quot;: &quot;Porygon&quot;,\n  &quot;stamina&quot;: 130,\n  &quot;attack&quot;: 156,\n  &quot;defense&quot;: 158\n },\n {\n  &quot;id&quot;: 138,\n  &quot;name&quot;: &quot;Omanyte&quot;,\n  &quot;stamina&quot;: 70,\n  &quot;attack&quot;: 132,\n  &quot;defense&quot;: 160\n },\n {\n  &quot;id&quot;: 139,\n  &quot;name&quot;: &quot;Omastar&quot;,\n  &quot;stamina&quot;: 140,\n  &quot;attack&quot;: 180,\n  &quot;defense&quot;: 202\n },\n {\n  &quot;id&quot;: 140,\n  &quot;name&quot;: &quot;Kabuto&quot;,\n  &quot;stamina&quot;: 60,\n  &quot;attack&quot;: 148,\n  &quot;defense&quot;: 142\n },\n {\n  &quot;id&quot;: 141,\n  &quot;name&quot;: &quot;Kabutops&quot;,\n  &quot;stamina&quot;: 120,\n  &quot;attack&quot;: 190,\n  &quot;defense&quot;: 190\n },\n {\n  &quot;id&quot;: 142,\n  &quot;name&quot;: &quot;Aerodactyl&quot;,\n  &quot;stamina&quot;: 160,\n  &quot;attack&quot;: 182,\n  &quot;defense&quot;: 162\n },\n {\n  &quot;id&quot;: 143,\n  &quot;name&quot;: &quot;Snorlax&quot;,\n  &quot;stamina&quot;: 320,\n  &quot;attack&quot;: 180,\n  &quot;defense&quot;: 180\n },\n {\n  &quot;id&quot;: 144,\n  &quot;name&quot;: &quot;Articuno&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 198,\n  &quot;defense&quot;: 242\n },\n {\n  &quot;id&quot;: 145,\n  &quot;name&quot;: &quot;Zapdos&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 232,\n  &quot;defense&quot;: 194\n },\n {\n  &quot;id&quot;: 146,\n  &quot;name&quot;: &quot;Moltres&quot;,\n  &quot;stamina&quot;: 180,\n  &quot;attack&quot;: 242,\n  &quot;defense&quot;: 194\n },\n {\n  &quot;id&quot;: 147,\n  &quot;name&quot;: &quot;Dratini&quot;,\n  &quot;stamina&quot;: 82,\n  &quot;attack&quot;: 128,\n  &quot;defense&quot;: 110\n },\n {\n  &quot;id&quot;: 148,\n  &quot;name&quot;: &quot;Dragonair&quot;,\n  &quot;stamina&quot;: 122,\n  &quot;attack&quot;: 170,\n  &quot;defense&quot;: 152\n },\n {\n  &quot;id&quot;: 149,\n  &quot;name&quot;: &quot;Dragonite&quot;,\n  &quot;stamina&quot;: 182,\n  &quot;attack&quot;: 250,\n  &quot;defense&quot;: 212\n },\n {\n  &quot;id&quot;: 150,\n  &quot;name&quot;: &quot;Mewtwo&quot;,\n  &quot;stamina&quot;: 212,\n  &quot;attack&quot;: 284,\n  &quot;defense&quot;: 202\n },\n {\n  &quot;id&quot;: 151,\n  &quot;name&quot;: &quot;Mew&quot;,\n  &quot;stamina&quot;: 200,\n  &quot;attack&quot;: 220,\n  &quot;defense&quot;: 220\n }\n];\n\nconst boundsOfInterest = [0, 100, 200];\nfunction boundKeyForValue(value) {\n\tvar key;\n\tvar idx;\n\tvar boundValue;\n\tvar upperValue;\n\tfor (idx = 0; idx &lt; boundsOfInterest.length; idx++) {\n\t\tboundValue = boundsOfInterest[idx];\n\t\tupperValue = boundsOfInterest[idx + 1];\n\t\tif (!upperValue) {\n\t\t\t\/\/We've reached the end\n\t\t\treturn boundValue + '+';\n\t\t}\n\t\tif (value &gt;= boundValue &amp;&amp; value &lt; upperValue) {\n\t\t\treturn boundValue + '-' + upperValue;\n\t\t}\n\t}\n\treturn key;\n}\nconst boundKeys = _.map(boundsOfInterest, boundKeyForValue);\n\nvar lookup = {\n\tbyId : {},\n\tbyName : {},\n\tbyStamina : {},\n\tbyAttack : {},\n\tbyDefense : {},\n};\n\n[\n\t'byStamina',\n\t'byAttack',\n\t'byDefense'\n].forEach(function (name) {\n\tvar dict = {\n\t\tall : {}\n\t};\n\tboundKeys.forEach(function (key) {\n\t\tdict[key] = [];\n\t});\n\tlookup[name] = dict;\n});\n\n_.each(pokemon, function (pokeData) {\n\tlookup.byId[pokeData.id] = pokeData;\n\tlookup.byName[pokeData.name.toLowerCase()] = pokeData;\n\t\n\tlookup.byStamina.all[pokeData.stamina] = lookup.byStamina.all[pokeData.stamina] || [];\n\tlookup.byStamina.all[pokeData.stamina].push(pokeData);\n\tlookup.byStamina[boundKeyForValue(pokeData.stamina)].push(pokeData);\n\t\n\tlookup.byAttack.all[pokeData.attack] = lookup.byAttack.all[pokeData.attack] || [];\n\tlookup.byAttack.all[pokeData.attack].push(pokeData);\n\tlookup.byAttack[boundKeyForValue(pokeData.attack)].push(pokeData);\n\t\n\tlookup.byDefense.all[pokeData.defense] = lookup.byDefense.all[pokeData.defense] || [];\n\tlookup.byDefense.all[pokeData.defense].push(pokeData);\n\tlookup.byDefense[boundKeyForValue(pokeData.defense)].push(pokeData);\n});\n\nmodule.exports = {\n\tpokemonByName : function (name) {\n\t\treturn lookup.byName[(name + '').toLowerCase()];\n\t},\n\tpokemonById : function (id) {\n\t\tvar pokeId = parseInt(id, 10);\n\t\treturn lookup.byId[pokeId];\n\t}\n};<\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How to Use Pokemon GO IV Calculator?<\/h2>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;text\/javascript&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;JavaScript&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;js&quot;}\">const ivCalculator = require('pokemon-go-iv-calculator');\n\n\/\/Ivysaur with CP 608, HP of 69, and dust-upgrade-cost of 1600\nconst result = ivCalculator.evaluate('Ivysaur', 608, 59, 1600);\n\n\/**\n Gives:\n{ grade: \n   { minGrade: { letter: 'F', preciseLetter: 'F' },\n     maxGrade: { letter: 'D', preciseLetter: 'D' },\n     averageGrade: { letter: 'F', preciseLetter: 'F' },\n     explanation: 'Between D - F' },\n  ivs: \n   [ { attackIV: 15,\n       defenseIV: 11,\n       staminaIV: 0,\n       level: 27,\n       perfection: 0.57 },\n     { attackIV: 14,\n       defenseIV: 13,\n       staminaIV: 0,\n       level: 27,\n       perfection: 0.6 },\n     { attackIV: 13,\n       defenseIV: 15,\n       staminaIV: 0,\n       level: 27,\n       perfection: 0.62 } ] }\n\n*\/\n\nconst niceTry = ivCalculator.evaluate('ivysaurus', 608, 59, 1600)\n\n\/**\n Gives\n{ error: 'Could not find pokemon: ivysaurus' }\n*\/<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Important Note<\/h2>\n\n\n\n<p>Pokemon can be any case (upper\/lower\/mixed), OR you can use pokedex id (e.g. Ivysaur == 2)<\/p>\n\n\n\n<p>There&#8217;s an optional fifth argument: Boolean : neverUpgraded. If you&#8217;ve never upgraded the pokemon, pass\u00a0<code>true<\/code>. This reduces the possible levels the pokemon could be at.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you will learn how to make a\u00a0Pokemon GO IV Calculator in JavaScript. Basically,\u00a0this\u00a0tool can be used to get the IVs of the Pokemon. It means that now you can easily find out if your Pokemon can be the best. You can even improve this Pokemon GO IV Calculator by adding features like &#8230; <a title=\"How to Make Pokemon GO IV Calculator in JavaScript\" class=\"read-more\" href=\"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/\" aria-label=\"Read more about How to Make Pokemon GO IV Calculator in JavaScript\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":1762,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[112],"tags":[],"class_list":["post-3364","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Make Pokemon GO IV Calculator in JavaScript<\/title>\n<meta name=\"description\" content=\"In this tutorial, you will learn how to make a\u00a0Pokemon GO IV Calculator in JavaScript. Basically,\u00a0this\u00a0tool can be used to get the IVs of the Pokemon. It\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Make Pokemon GO IV Calculator in JavaScript\" \/>\n<meta property=\"og:description\" content=\"In this tutorial, you will learn how to make a\u00a0Pokemon GO IV Calculator in JavaScript. Basically,\u00a0this\u00a0tool can be used to get the IVs of the Pokemon. It\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"Edopedia\" \/>\n<meta property=\"article:author\" content=\"trulyfurqan\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-18T22:32:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-18T22:32:18+00:00\" \/>\n<meta name=\"author\" content=\"Furqan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Furqan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Make Pokemon GO IV Calculator in JavaScript","description":"In this tutorial, you will learn how to make a\u00a0Pokemon GO IV Calculator in JavaScript. Basically,\u00a0this\u00a0tool can be used to get the IVs of the Pokemon. It","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/","og_locale":"en_US","og_type":"article","og_title":"How to Make Pokemon GO IV Calculator in JavaScript","og_description":"In this tutorial, you will learn how to make a\u00a0Pokemon GO IV Calculator in JavaScript. Basically,\u00a0this\u00a0tool can be used to get the IVs of the Pokemon. It","og_url":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/","og_site_name":"Edopedia","article_author":"trulyfurqan","article_published_time":"2022-09-18T22:32:15+00:00","article_modified_time":"2022-09-18T22:32:18+00:00","author":"Furqan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Furqan","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/#article","isPartOf":{"@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/"},"author":{"name":"Furqan","@id":"https:\/\/www.edopedia.com\/blog\/#\/schema\/person\/3951cb19e3aa56df09e408c98aa02339"},"headline":"How to Make Pokemon GO IV Calculator in JavaScript","datePublished":"2022-09-18T22:32:15+00:00","dateModified":"2022-09-18T22:32:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/"},"wordCount":186,"commentCount":0,"publisher":{"@id":"https:\/\/www.edopedia.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.edopedia.com\/blog\/wp-content\/uploads\/2022\/02\/default_featured_image.jpg","articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/","url":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/","name":"How to Make Pokemon GO IV Calculator in JavaScript","isPartOf":{"@id":"https:\/\/www.edopedia.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/#primaryimage"},"image":{"@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.edopedia.com\/blog\/wp-content\/uploads\/2022\/02\/default_featured_image.jpg","datePublished":"2022-09-18T22:32:15+00:00","dateModified":"2022-09-18T22:32:18+00:00","description":"In this tutorial, you will learn how to make a\u00a0Pokemon GO IV Calculator in JavaScript. Basically,\u00a0this\u00a0tool can be used to get the IVs of the Pokemon. It","breadcrumb":{"@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/#primaryimage","url":"https:\/\/www.edopedia.com\/blog\/wp-content\/uploads\/2022\/02\/default_featured_image.jpg","contentUrl":"https:\/\/www.edopedia.com\/blog\/wp-content\/uploads\/2022\/02\/default_featured_image.jpg","width":880,"height":495,"caption":"Default Featured Image"},{"@type":"BreadcrumbList","@id":"https:\/\/www.edopedia.com\/blog\/how-to-make-pokemon-go-iv-calculator-in-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.edopedia.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Make Pokemon GO IV Calculator in JavaScript"}]},{"@type":"WebSite","@id":"https:\/\/www.edopedia.com\/blog\/#website","url":"https:\/\/www.edopedia.com\/blog\/","name":"Edopedia","description":"Coding\/Programming Blog","publisher":{"@id":"https:\/\/www.edopedia.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.edopedia.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.edopedia.com\/blog\/#organization","name":"Edopedia","url":"https:\/\/www.edopedia.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.edopedia.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.edopedia.com\/blog\/wp-content\/uploads\/2017\/10\/edopedia_icon_text_10.jpg","contentUrl":"https:\/\/www.edopedia.com\/blog\/wp-content\/uploads\/2017\/10\/edopedia_icon_text_10.jpg","width":400,"height":100,"caption":"Edopedia"},"image":{"@id":"https:\/\/www.edopedia.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.edopedia.com\/blog\/#\/schema\/person\/3951cb19e3aa56df09e408c98aa02339","name":"Furqan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e5e68aef3ad8f0b83d56f4953c512c8e57bd2e6dc64daec33b5d0495d9058f51?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e5e68aef3ad8f0b83d56f4953c512c8e57bd2e6dc64daec33b5d0495d9058f51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e5e68aef3ad8f0b83d56f4953c512c8e57bd2e6dc64daec33b5d0495d9058f51?s=96&d=mm&r=g","caption":"Furqan"},"description":"Well. I've been working for the past three years as a web designer and developer. I have successfully created websites for small to medium sized companies as part of my freelance career. During that time I've also completed my bachelor's in Information Technology.","sameAs":["http:\/\/www.edopedia.com\/blog\/","trulyfurqan"],"url":"https:\/\/www.edopedia.com\/blog\/author\/furqan\/"}]}},"_links":{"self":[{"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/posts\/3364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/comments?post=3364"}],"version-history":[{"count":1,"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/posts\/3364\/revisions"}],"predecessor-version":[{"id":3365,"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/posts\/3364\/revisions\/3365"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/media\/1762"}],"wp:attachment":[{"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/media?parent=3364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/categories?post=3364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.edopedia.com\/blog\/wp-json\/wp\/v2\/tags?post=3364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}