From 12d2aa6604b326b41baf327778b84d5981cb6360 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 10:31:53 +0100 Subject: [PATCH 01/27] benchmark --- .github/workflows/benchmark.yaml | 51 ++ package-lock.json | 32 +- packages/language-support/package.json | 5 +- .../language-support/src/parserWrapper.ts | 3 +- .../src/tests/benchmarks/benchmark-queries.ts | 627 ++++++++++++++++++ .../src/tests/benchmarks/benchmarks.ts | 71 ++ 6 files changed, 783 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/benchmark.yaml create mode 100644 packages/language-support/src/tests/benchmarks/benchmark-queries.ts create mode 100644 packages/language-support/src/tests/benchmarks/benchmarks.ts diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml new file mode 100644 index 000000000..f358da6f1 --- /dev/null +++ b/.github/workflows/benchmark.yaml @@ -0,0 +1,51 @@ +name: Performance Regression Test + +on: + pull_request: + branches: [main] + +jobs: + benchmark: + name: Time benchmark + runs-on: ubuntu-latest + + steps: + # Check out pull request branch + - uses: actions/checkout@v2 + with: + path: pr + # Check out base branch (to compare performance) + - uses: actions/checkout@v2 + with: + ref: main + path: main + + - uses: actions/setup-node@v3 + with: + node-version: '18' + + # Run benchmark on main and stores the output to a file + - name: Run benchmark on main (baseline) + run: npm install && cd main/packages/language-support && npm run build-benchmarks && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + + # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) + - name: Run pull request benchmark + run: npm install && cd pr/packages/language-support && npm run build-benchmarks && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + + - name: Compare benchmark result + uses: openpgpjs/github-action-pull-request-benchmark@v1 + with: + name: 'Time benchmark' + # What benchmark tool the benchmarks.txt files came from + tool: 'benchmarkjs' + # Where the two output files from the benchmark tool are stored + pr-benchmark-file-path: pr/packages/language-support/benchmarks.txt + base-benchmark-file-path: main/packages/language-support/benchmarks.txt + # A comment will be left on the latest PR commit if `alert-threshold` is exceeded + comment-on-alert: true + alert-threshold: '130%' + # Workflow will fail if `fail-threshold` is exceeded + fail-on-alert: true + fail-threshold: '150%' + # A token is needed to leave commit comments + github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/package-lock.json b/package-lock.json index 6b94b80bc..0f6f2e16d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4747,6 +4747,12 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/benchmark": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-2.1.5.tgz", + "integrity": "sha512-cKio2eFB3v7qmKcvIHLUMw/dIx/8bhWPuzpzRT4unCPRTD8VdA9Zb0afxpcxOqR4PixRS7yT42FqGS8BYL8g1w==", + "dev": true + }, "node_modules/@types/chroma-js": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.4.2.tgz", @@ -6191,6 +6197,16 @@ } ] }, + "node_modules/benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, "node_modules/better-path-resolve": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", @@ -14722,6 +14738,12 @@ "node": ">=8" } }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", + "dev": true + }, "node_modules/playwright": { "version": "1.39.0", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", @@ -18359,7 +18381,9 @@ "vscode-languageserver-types": "^3.17.3" }, "devDependencies": { - "@types/jest": "^29.5.5" + "@types/benchmark": "^2.1.5", + "@types/jest": "^29.5.5", + "benchmark": "^2.1.4" }, "engines": { "node": ">=18.18.2" @@ -18367,7 +18391,7 @@ }, "packages/react-codemirror": { "name": "@neo4j-cypher/react-codemirror", - "version": "2.0.0-next.1", + "version": "2.0.0-next.2", "license": "Apache-2.0", "dependencies": { "@codemirror/autocomplete": "^6.5.1", @@ -18406,7 +18430,7 @@ }, "packages/react-codemirror-playground": { "name": "@neo4j-cypher/react-codemirror-playground", - "version": "2.0.0-next.1", + "version": "2.0.0-next.2", "dependencies": { "@codemirror/autocomplete": "^6.5.1", "@codemirror/commands": "^6.2.2", @@ -18414,7 +18438,7 @@ "@lezer/common": "^1.0.2", "@lezer/highlight": "^1.1.3", "@neo4j-cypher/language-support": "2.0.0-next.0", - "@neo4j-cypher/react-codemirror": "2.0.0-next.1", + "@neo4j-cypher/react-codemirror": "2.0.0-next.2", "react": "^18.2.0", "react-d3-tree": "^3.6.1", "react-dom": "^18.2.0", diff --git a/packages/language-support/package.json b/packages/language-support/package.json index 2e31ae8dd..c6ba73a87 100644 --- a/packages/language-support/package.json +++ b/packages/language-support/package.json @@ -52,11 +52,14 @@ "build-types": "tsc --emitDeclarationOnly --outDir dist/types", "build-esm": "esbuild ./src/index.ts --bundle --format=esm --sourcemap --outfile=dist/esm/index.mjs", "build-commonjs": "esbuild ./src/index.ts --bundle --format=cjs --sourcemap --outfile=dist/cjs/index.cjs", + "build-benchmark": "esbuild ./src/tests/benchmarks/benchmarks.ts --bundle --outfile=dist/benchmark/benchmark.js", "clean": "rm -rf {dist,src/generated-parser}", "watch": "tsc -b -w", "test": "jest" }, "devDependencies": { - "@types/jest": "^29.5.5" + "@types/benchmark": "^2.1.5", + "@types/jest": "^29.5.5", + "benchmark": "^2.1.4" } } diff --git a/packages/language-support/src/parserWrapper.ts b/packages/language-support/src/parserWrapper.ts index bea3e1721..c1a215f66 100644 --- a/packages/language-support/src/parserWrapper.ts +++ b/packages/language-support/src/parserWrapper.ts @@ -220,7 +220,8 @@ class ParserWrapper { parse(query: string): EnrichedParsingResult { if ( this.parsingResult !== undefined && - this.parsingResult.query === query + this.parsingResult.query === query && + process.env.BENCHMARKING !== 'true' ) { return this.parsingResult; } else { diff --git a/packages/language-support/src/tests/benchmarks/benchmark-queries.ts b/packages/language-support/src/tests/benchmarks/benchmark-queries.ts new file mode 100644 index 000000000..0218301ec --- /dev/null +++ b/packages/language-support/src/tests/benchmarks/benchmark-queries.ts @@ -0,0 +1,627 @@ +export const simpleQuery = `MATCH (a:Person)-[:FRIEND_OF]->(b:Person), (b)-[:WORKS_AT]->(c:Company) WHERE c.name = 'Company Corp' RETURN a, b, c`; + +export const createMovieDb = `CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'}) +CREATE (Keanu:Person {name:'Keanu Reeves', born:1964}) +CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967}) +CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961}) +CREATE (Hugo:Person {name:'Hugo Weaving', born:1960}) +CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967}) +CREATE (LanaW:Person {name:'Lana Wachowski', born:1965}) +CREATE (JoelS:Person {name:'Joel Silver', born:1952}) +CREATE +(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix), +(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix), +(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix), +(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix), +(LillyW)-[:DIRECTED]->(TheMatrix), +(LanaW)-[:DIRECTED]->(TheMatrix), +(JoelS)-[:PRODUCED]->(TheMatrix) + +CREATE (Emil:Person {name:"Emil Eifrem", born:1978}) +CREATE (Emil)-[:ACTED_IN {roles:["Emil"]}]->(TheMatrix) + +CREATE (TheMatrixReloaded:Movie {title:'The Matrix Reloaded', released:2003, tagline:'Free your mind'}) +CREATE +(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixReloaded), +(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrixReloaded), +(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrixReloaded), +(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrixReloaded), +(LillyW)-[:DIRECTED]->(TheMatrixReloaded), +(LanaW)-[:DIRECTED]->(TheMatrixReloaded), +(JoelS)-[:PRODUCED]->(TheMatrixReloaded) + +CREATE (TheMatrixRevolutions:Movie {title:'The Matrix Revolutions', released:2003, tagline:'Everything that has a beginning has an end'}) +CREATE +(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixRevolutions), +(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrixRevolutions), +(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrixRevolutions), +(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrixRevolutions), +(LillyW)-[:DIRECTED]->(TheMatrixRevolutions), +(LanaW)-[:DIRECTED]->(TheMatrixRevolutions), +(JoelS)-[:PRODUCED]->(TheMatrixRevolutions) + +CREATE (TheDevilsAdvocate:Movie {title:"The Devil's Advocate", released:1997, tagline:'Evil has its winning ways'}) +CREATE (Charlize:Person {name:'Charlize Theron', born:1975}) +CREATE (Al:Person {name:'Al Pacino', born:1940}) +CREATE (Taylor:Person {name:'Taylor Hackford', born:1944}) +CREATE +(Keanu)-[:ACTED_IN {roles:['Kevin Lomax']}]->(TheDevilsAdvocate), +(Charlize)-[:ACTED_IN {roles:['Mary Ann Lomax']}]->(TheDevilsAdvocate), +(Al)-[:ACTED_IN {roles:['John Milton']}]->(TheDevilsAdvocate), +(Taylor)-[:DIRECTED]->(TheDevilsAdvocate) + +CREATE (AFewGoodMen:Movie {title:"A Few Good Men", released:1992, tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth."}) +CREATE (TomC:Person {name:'Tom Cruise', born:1962}) +CREATE (JackN:Person {name:'Jack Nicholson', born:1937}) +CREATE (DemiM:Person {name:'Demi Moore', born:1962}) +CREATE (KevinB:Person {name:'Kevin Bacon', born:1958}) +CREATE (KieferS:Person {name:'Kiefer Sutherland', born:1966}) +CREATE (NoahW:Person {name:'Noah Wyle', born:1971}) +CREATE (CubaG:Person {name:'Cuba Gooding Jr.', born:1968}) +CREATE (KevinP:Person {name:'Kevin Pollak', born:1957}) +CREATE (JTW:Person {name:'J.T. Walsh', born:1943}) +CREATE (JamesM:Person {name:'James Marshall', born:1967}) +CREATE (ChristopherG:Person {name:'Christopher Guest', born:1948}) +CREATE (RobR:Person {name:'Rob Reiner', born:1947}) +CREATE (AaronS:Person {name:'Aaron Sorkin', born:1961}) +CREATE +(TomC)-[:ACTED_IN {roles:['Lt. Daniel Kaffee']}]->(AFewGoodMen), +(JackN)-[:ACTED_IN {roles:['Col. Nathan R. Jessup']}]->(AFewGoodMen), +(DemiM)-[:ACTED_IN {roles:['Lt. Cdr. JoAnne Galloway']}]->(AFewGoodMen), +(KevinB)-[:ACTED_IN {roles:['Capt. Jack Ross']}]->(AFewGoodMen), +(KieferS)-[:ACTED_IN {roles:['Lt. Jonathan Kendrick']}]->(AFewGoodMen), +(NoahW)-[:ACTED_IN {roles:['Cpl. Jeffrey Barnes']}]->(AFewGoodMen), +(CubaG)-[:ACTED_IN {roles:['Cpl. Carl Hammaker']}]->(AFewGoodMen), +(KevinP)-[:ACTED_IN {roles:['Lt. Sam Weinberg']}]->(AFewGoodMen), +(JTW)-[:ACTED_IN {roles:['Lt. Col. Matthew Andrew Markinson']}]->(AFewGoodMen), +(JamesM)-[:ACTED_IN {roles:['Pfc. Louden Downey']}]->(AFewGoodMen), +(ChristopherG)-[:ACTED_IN {roles:['Dr. Stone']}]->(AFewGoodMen), +(AaronS)-[:ACTED_IN {roles:['Man in Bar']}]->(AFewGoodMen), +(RobR)-[:DIRECTED]->(AFewGoodMen), +(AaronS)-[:WROTE]->(AFewGoodMen) + +CREATE (TopGun:Movie {title:"Top Gun", released:1986, tagline:'I feel the need, the need for speed.'}) +CREATE (KellyM:Person {name:'Kelly McGillis', born:1957}) +CREATE (ValK:Person {name:'Val Kilmer', born:1959}) +CREATE (AnthonyE:Person {name:'Anthony Edwards', born:1962}) +CREATE (TomS:Person {name:'Tom Skerritt', born:1933}) +CREATE (MegR:Person {name:'Meg Ryan', born:1961}) +CREATE (TonyS:Person {name:'Tony Scott', born:1944}) +CREATE (JimC:Person {name:'Jim Cash', born:1941}) +CREATE +(TomC)-[:ACTED_IN {roles:['Maverick']}]->(TopGun), +(KellyM)-[:ACTED_IN {roles:['Charlie']}]->(TopGun), +(ValK)-[:ACTED_IN {roles:['Iceman']}]->(TopGun), +(AnthonyE)-[:ACTED_IN {roles:['Goose']}]->(TopGun), +(TomS)-[:ACTED_IN {roles:['Viper']}]->(TopGun), +(MegR)-[:ACTED_IN {roles:['Carole']}]->(TopGun), +(TonyS)-[:DIRECTED]->(TopGun), +(JimC)-[:WROTE]->(TopGun) + +CREATE (JerryMaguire:Movie {title:'Jerry Maguire', released:2000, tagline:'The rest of his life begins now.'}) +CREATE (ReneeZ:Person {name:'Renee Zellweger', born:1969}) +CREATE (KellyP:Person {name:'Kelly Preston', born:1962}) +CREATE (JerryO:Person {name:"Jerry O'Connell", born:1974}) +CREATE (JayM:Person {name:'Jay Mohr', born:1970}) +CREATE (BonnieH:Person {name:'Bonnie Hunt', born:1961}) +CREATE (ReginaK:Person {name:'Regina King', born:1971}) +CREATE (JonathanL:Person {name:'Jonathan Lipnicki', born:1996}) +CREATE (CameronC:Person {name:'Cameron Crowe', born:1957}) +CREATE +(TomC)-[:ACTED_IN {roles:['Jerry Maguire']}]->(JerryMaguire), +(CubaG)-[:ACTED_IN {roles:['Rod Tidwell']}]->(JerryMaguire), +(ReneeZ)-[:ACTED_IN {roles:['Dorothy Boyd']}]->(JerryMaguire), +(KellyP)-[:ACTED_IN {roles:['Avery Bishop']}]->(JerryMaguire), +(JerryO)-[:ACTED_IN {roles:['Frank Cushman']}]->(JerryMaguire), +(JayM)-[:ACTED_IN {roles:['Bob Sugar']}]->(JerryMaguire), +(BonnieH)-[:ACTED_IN {roles:['Laurel Boyd']}]->(JerryMaguire), +(ReginaK)-[:ACTED_IN {roles:['Marcee Tidwell']}]->(JerryMaguire), +(JonathanL)-[:ACTED_IN {roles:['Ray Boyd']}]->(JerryMaguire), +(CameronC)-[:DIRECTED]->(JerryMaguire), +(CameronC)-[:PRODUCED]->(JerryMaguire), +(CameronC)-[:WROTE]->(JerryMaguire) + +CREATE (StandByMe:Movie {title:"Stand By Me", released:1986, tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of."}) +CREATE (RiverP:Person {name:'River Phoenix', born:1970}) +CREATE (CoreyF:Person {name:'Corey Feldman', born:1971}) +CREATE (WilW:Person {name:'Wil Wheaton', born:1972}) +CREATE (JohnC:Person {name:'John Cusack', born:1966}) +CREATE (MarshallB:Person {name:'Marshall Bell', born:1942}) +CREATE +(WilW)-[:ACTED_IN {roles:['Gordie Lachance']}]->(StandByMe), +(RiverP)-[:ACTED_IN {roles:['Chris Chambers']}]->(StandByMe), +(JerryO)-[:ACTED_IN {roles:['Vern Tessio']}]->(StandByMe), +(CoreyF)-[:ACTED_IN {roles:['Teddy Duchamp']}]->(StandByMe), +(JohnC)-[:ACTED_IN {roles:['Denny Lachance']}]->(StandByMe), +(KieferS)-[:ACTED_IN {roles:['Ace Merrill']}]->(StandByMe), +(MarshallB)-[:ACTED_IN {roles:['Mr. Lachance']}]->(StandByMe), +(RobR)-[:DIRECTED]->(StandByMe) + +CREATE (AsGoodAsItGets:Movie {title:'As Good as It Gets', released:1997, tagline:'A comedy from the heart that goes for the throat.'}) +CREATE (HelenH:Person {name:'Helen Hunt', born:1963}) +CREATE (GregK:Person {name:'Greg Kinnear', born:1963}) +CREATE (JamesB:Person {name:'James L. Brooks', born:1940}) +CREATE +(JackN)-[:ACTED_IN {roles:['Melvin Udall']}]->(AsGoodAsItGets), +(HelenH)-[:ACTED_IN {roles:['Carol Connelly']}]->(AsGoodAsItGets), +(GregK)-[:ACTED_IN {roles:['Simon Bishop']}]->(AsGoodAsItGets), +(CubaG)-[:ACTED_IN {roles:['Frank Sachs']}]->(AsGoodAsItGets), +(JamesB)-[:DIRECTED]->(AsGoodAsItGets) + +CREATE (WhatDreamsMayCome:Movie {title:'What Dreams May Come', released:1998, tagline:'After life there is more. The end is just the beginning.'}) +CREATE (AnnabellaS:Person {name:'Annabella Sciorra', born:1960}) +CREATE (MaxS:Person {name:'Max von Sydow', born:1929}) +CREATE (WernerH:Person {name:'Werner Herzog', born:1942}) +CREATE (Robin:Person {name:'Robin Williams', born:1951}) +CREATE (VincentW:Person {name:'Vincent Ward', born:1956}) +CREATE +(Robin)-[:ACTED_IN {roles:['Chris Nielsen']}]->(WhatDreamsMayCome), +(CubaG)-[:ACTED_IN {roles:['Albert Lewis']}]->(WhatDreamsMayCome), +(AnnabellaS)-[:ACTED_IN {roles:['Annie Collins-Nielsen']}]->(WhatDreamsMayCome), +(MaxS)-[:ACTED_IN {roles:['The Tracker']}]->(WhatDreamsMayCome), +(WernerH)-[:ACTED_IN {roles:['The Face']}]->(WhatDreamsMayCome), +(VincentW)-[:DIRECTED]->(WhatDreamsMayCome) + +CREATE (SnowFallingonCedars:Movie {title:'Snow Falling on Cedars', released:1999, tagline:'First loves last. Forever.'}) +CREATE (EthanH:Person {name:'Ethan Hawke', born:1970}) +CREATE (RickY:Person {name:'Rick Yune', born:1971}) +CREATE (JamesC:Person {name:'James Cromwell', born:1940}) +CREATE (ScottH:Person {name:'Scott Hicks', born:1953}) +CREATE +(EthanH)-[:ACTED_IN {roles:['Ishmael Chambers']}]->(SnowFallingonCedars), +(RickY)-[:ACTED_IN {roles:['Kazuo Miyamoto']}]->(SnowFallingonCedars), +(MaxS)-[:ACTED_IN {roles:['Nels Gudmundsson']}]->(SnowFallingonCedars), +(JamesC)-[:ACTED_IN {roles:['Judge Fielding']}]->(SnowFallingonCedars), +(ScottH)-[:DIRECTED]->(SnowFallingonCedars) + +CREATE (YouveGotMail:Movie {title:"You've Got Mail", released:1998, tagline:'At odds in life... in love on-line.'}) +CREATE (ParkerP:Person {name:'Parker Posey', born:1968}) +CREATE (DaveC:Person {name:'Dave Chappelle', born:1973}) +CREATE (SteveZ:Person {name:'Steve Zahn', born:1967}) +CREATE (TomH:Person {name:'Tom Hanks', born:1956}) +CREATE (NoraE:Person {name:'Nora Ephron', born:1941}) +CREATE +(TomH)-[:ACTED_IN {roles:['Joe Fox']}]->(YouveGotMail), +(MegR)-[:ACTED_IN {roles:['Kathleen Kelly']}]->(YouveGotMail), +(GregK)-[:ACTED_IN {roles:['Frank Navasky']}]->(YouveGotMail), +(ParkerP)-[:ACTED_IN {roles:['Patricia Eden']}]->(YouveGotMail), +(DaveC)-[:ACTED_IN {roles:['Kevin Jackson']}]->(YouveGotMail), +(SteveZ)-[:ACTED_IN {roles:['George Pappas']}]->(YouveGotMail), +(NoraE)-[:DIRECTED]->(YouveGotMail) + +CREATE (SleeplessInSeattle:Movie {title:'Sleepless in Seattle', released:1993, tagline:'What if someone you never met, someone you never saw, someone you never knew was the only someone for you?'}) +CREATE (RitaW:Person {name:'Rita Wilson', born:1956}) +CREATE (BillPull:Person {name:'Bill Pullman', born:1953}) +CREATE (VictorG:Person {name:'Victor Garber', born:1949}) +CREATE (RosieO:Person {name:"Rosie O'Donnell", born:1962}) +CREATE +(TomH)-[:ACTED_IN {roles:['Sam Baldwin']}]->(SleeplessInSeattle), +(MegR)-[:ACTED_IN {roles:['Annie Reed']}]->(SleeplessInSeattle), +(RitaW)-[:ACTED_IN {roles:['Suzy']}]->(SleeplessInSeattle), +(BillPull)-[:ACTED_IN {roles:['Walter']}]->(SleeplessInSeattle), +(VictorG)-[:ACTED_IN {roles:['Greg']}]->(SleeplessInSeattle), +(RosieO)-[:ACTED_IN {roles:['Becky']}]->(SleeplessInSeattle), +(NoraE)-[:DIRECTED]->(SleeplessInSeattle) + +CREATE (JoeVersustheVolcano:Movie {title:'Joe Versus the Volcano', released:1990, tagline:'A story of love, lava and burning desire.'}) +CREATE (JohnS:Person {name:'John Patrick Stanley', born:1950}) +CREATE (Nathan:Person {name:'Nathan Lane', born:1956}) +CREATE +(TomH)-[:ACTED_IN {roles:['Joe Banks']}]->(JoeVersustheVolcano), +(MegR)-[:ACTED_IN {roles:['DeDe', 'Angelica Graynamore', 'Patricia Graynamore']}]->(JoeVersustheVolcano), +(Nathan)-[:ACTED_IN {roles:['Baw']}]->(JoeVersustheVolcano), +(JohnS)-[:DIRECTED]->(JoeVersustheVolcano) + +CREATE (WhenHarryMetSally:Movie {title:'When Harry Met Sally', released:1998, tagline:'Can two friends sleep together and still love each other in the morning?'}) +CREATE (BillyC:Person {name:'Billy Crystal', born:1948}) +CREATE (CarrieF:Person {name:'Carrie Fisher', born:1956}) +CREATE (BrunoK:Person {name:'Bruno Kirby', born:1949}) +CREATE +(BillyC)-[:ACTED_IN {roles:['Harry Burns']}]->(WhenHarryMetSally), +(MegR)-[:ACTED_IN {roles:['Sally Albright']}]->(WhenHarryMetSally), +(CarrieF)-[:ACTED_IN {roles:['Marie']}]->(WhenHarryMetSally), +(BrunoK)-[:ACTED_IN {roles:['Jess']}]->(WhenHarryMetSally), +(RobR)-[:DIRECTED]->(WhenHarryMetSally), +(RobR)-[:PRODUCED]->(WhenHarryMetSally), +(NoraE)-[:PRODUCED]->(WhenHarryMetSally), +(NoraE)-[:WROTE]->(WhenHarryMetSally) + +CREATE (ThatThingYouDo:Movie {title:'That Thing You Do', released:1996, tagline:'In every life there comes a time when that thing you dream becomes that thing you do'}) +CREATE (LivT:Person {name:'Liv Tyler', born:1977}) +CREATE +(TomH)-[:ACTED_IN {roles:['Mr. White']}]->(ThatThingYouDo), +(LivT)-[:ACTED_IN {roles:['Faye Dolan']}]->(ThatThingYouDo), +(Charlize)-[:ACTED_IN {roles:['Tina']}]->(ThatThingYouDo), +(TomH)-[:DIRECTED]->(ThatThingYouDo) + +CREATE (TheReplacements:Movie {title:'The Replacements', released:2000, tagline:'Pain heals, Chicks dig scars... Glory lasts forever'}) +CREATE (Brooke:Person {name:'Brooke Langton', born:1970}) +CREATE (Gene:Person {name:'Gene Hackman', born:1930}) +CREATE (Orlando:Person {name:'Orlando Jones', born:1968}) +CREATE (Howard:Person {name:'Howard Deutch', born:1950}) +CREATE +(Keanu)-[:ACTED_IN {roles:['Shane Falco']}]->(TheReplacements), +(Brooke)-[:ACTED_IN {roles:['Annabelle Farrell']}]->(TheReplacements), +(Gene)-[:ACTED_IN {roles:['Jimmy McGinty']}]->(TheReplacements), +(Orlando)-[:ACTED_IN {roles:['Clifford Franklin']}]->(TheReplacements), +(Howard)-[:DIRECTED]->(TheReplacements) + +CREATE (RescueDawn:Movie {title:'RescueDawn', released:2006, tagline:"Based on the extraordinary true story of one man's fight for freedom"}) +CREATE (ChristianB:Person {name:'Christian Bale', born:1974}) +CREATE (ZachG:Person {name:'Zach Grenier', born:1954}) +CREATE +(MarshallB)-[:ACTED_IN {roles:['Admiral']}]->(RescueDawn), +(ChristianB)-[:ACTED_IN {roles:['Dieter Dengler']}]->(RescueDawn), +(ZachG)-[:ACTED_IN {roles:['Squad Leader']}]->(RescueDawn), +(SteveZ)-[:ACTED_IN {roles:['Duane']}]->(RescueDawn), +(WernerH)-[:DIRECTED]->(RescueDawn) + +CREATE (TheBirdcage:Movie {title:'The Birdcage', released:1996, tagline:'Come as you are'}) +CREATE (MikeN:Person {name:'Mike Nichols', born:1931}) +CREATE +(Robin)-[:ACTED_IN {roles:['Armand Goldman']}]->(TheBirdcage), +(Nathan)-[:ACTED_IN {roles:['Albert Goldman']}]->(TheBirdcage), +(Gene)-[:ACTED_IN {roles:['Sen. Kevin Keeley']}]->(TheBirdcage), +(MikeN)-[:DIRECTED]->(TheBirdcage) + +CREATE (Unforgiven:Movie {title:'Unforgiven', released:1992, tagline:"It's a hell of a thing, killing a man"}) +CREATE (RichardH:Person {name:'Richard Harris', born:1930}) +CREATE (ClintE:Person {name:'Clint Eastwood', born:1930}) +CREATE +(RichardH)-[:ACTED_IN {roles:['English Bob']}]->(Unforgiven), +(ClintE)-[:ACTED_IN {roles:['Bill Munny']}]->(Unforgiven), +(Gene)-[:ACTED_IN {roles:['Little Bill Daggett']}]->(Unforgiven), +(ClintE)-[:DIRECTED]->(Unforgiven) + +CREATE (JohnnyMnemonic:Movie {title:'Johnny Mnemonic', released:1995, tagline:'The hottest data on earth. In the coolest head in town'}) +CREATE (Takeshi:Person {name:'Takeshi Kitano', born:1947}) +CREATE (Dina:Person {name:'Dina Meyer', born:1968}) +CREATE (IceT:Person {name:'Ice-T', born:1958}) +CREATE (RobertL:Person {name:'Robert Longo', born:1953}) +CREATE +(Keanu)-[:ACTED_IN {roles:['Johnny Mnemonic']}]->(JohnnyMnemonic), +(Takeshi)-[:ACTED_IN {roles:['Takahashi']}]->(JohnnyMnemonic), +(Dina)-[:ACTED_IN {roles:['Jane']}]->(JohnnyMnemonic), +(IceT)-[:ACTED_IN {roles:['J-Bone']}]->(JohnnyMnemonic), +(RobertL)-[:DIRECTED]->(JohnnyMnemonic) + +CREATE (CloudAtlas:Movie {title:'Cloud Atlas', released:2012, tagline:'Everything is connected'}) +CREATE (HalleB:Person {name:'Halle Berry', born:1966}) +CREATE (JimB:Person {name:'Jim Broadbent', born:1949}) +CREATE (TomT:Person {name:'Tom Tykwer', born:1965}) +CREATE (DavidMitchell:Person {name:'David Mitchell', born:1969}) +CREATE (StefanArndt:Person {name:'Stefan Arndt', born:1961}) +CREATE +(TomH)-[:ACTED_IN {roles:['Zachry', 'Dr. Henry Goose', 'Isaac Sachs', 'Dermot Hoggins']}]->(CloudAtlas), +(Hugo)-[:ACTED_IN {roles:['Bill Smoke', 'Haskell Moore', 'Tadeusz Kesselring', 'Nurse Noakes', 'Boardman Mephi', 'Old Georgie']}]->(CloudAtlas), +(HalleB)-[:ACTED_IN {roles:['Luisa Rey', 'Jocasta Ayrs', 'Ovid', 'Meronym']}]->(CloudAtlas), +(JimB)-[:ACTED_IN {roles:['Vyvyan Ayrs', 'Captain Molyneux', 'Timothy Cavendish']}]->(CloudAtlas), +(TomT)-[:DIRECTED]->(CloudAtlas), +(LillyW)-[:DIRECTED]->(CloudAtlas), +(LanaW)-[:DIRECTED]->(CloudAtlas), +(DavidMitchell)-[:WROTE]->(CloudAtlas), +(StefanArndt)-[:PRODUCED]->(CloudAtlas) + +CREATE (TheDaVinciCode:Movie {title:'The Da Vinci Code', released:2006, tagline:'Break The Codes'}) +CREATE (IanM:Person {name:'Ian McKellen', born:1939}) +CREATE (AudreyT:Person {name:'Audrey Tautou', born:1976}) +CREATE (PaulB:Person {name:'Paul Bettany', born:1971}) +CREATE (RonH:Person {name:'Ron Howard', born:1954}) +CREATE +(TomH)-[:ACTED_IN {roles:['Dr. Robert Langdon']}]->(TheDaVinciCode), +(IanM)-[:ACTED_IN {roles:['Sir Leight Teabing']}]->(TheDaVinciCode), +(AudreyT)-[:ACTED_IN {roles:['Sophie Neveu']}]->(TheDaVinciCode), +(PaulB)-[:ACTED_IN {roles:['Silas']}]->(TheDaVinciCode), +(RonH)-[:DIRECTED]->(TheDaVinciCode) + +CREATE (VforVendetta:Movie {title:'V for Vendetta', released:2006, tagline:'Freedom! Forever!'}) +CREATE (NatalieP:Person {name:'Natalie Portman', born:1981}) +CREATE (StephenR:Person {name:'Stephen Rea', born:1946}) +CREATE (JohnH:Person {name:'John Hurt', born:1940}) +CREATE (BenM:Person {name: 'Ben Miles', born:1967}) +CREATE +(Hugo)-[:ACTED_IN {roles:['V']}]->(VforVendetta), +(NatalieP)-[:ACTED_IN {roles:['Evey Hammond']}]->(VforVendetta), +(StephenR)-[:ACTED_IN {roles:['Eric Finch']}]->(VforVendetta), +(JohnH)-[:ACTED_IN {roles:['High Chancellor Adam Sutler']}]->(VforVendetta), +(BenM)-[:ACTED_IN {roles:['Dascomb']}]->(VforVendetta), +(JamesM)-[:DIRECTED]->(VforVendetta), +(LillyW)-[:PRODUCED]->(VforVendetta), +(LanaW)-[:PRODUCED]->(VforVendetta), +(JoelS)-[:PRODUCED]->(VforVendetta), +(LillyW)-[:WROTE]->(VforVendetta), +(LanaW)-[:WROTE]->(VforVendetta) + +CREATE (SpeedRacer:Movie {title:'Speed Racer', released:2008, tagline:'Speed has no limits'}) +CREATE (EmileH:Person {name:'Emile Hirsch', born:1985}) +CREATE (JohnG:Person {name:'John Goodman', born:1960}) +CREATE (SusanS:Person {name:'Susan Sarandon', born:1946}) +CREATE (MatthewF:Person {name:'Matthew Fox', born:1966}) +CREATE (ChristinaR:Person {name:'Christina Ricci', born:1980}) +CREATE (Rain:Person {name:'Rain', born:1982}) +CREATE +(EmileH)-[:ACTED_IN {roles:['Speed Racer']}]->(SpeedRacer), +(JohnG)-[:ACTED_IN {roles:['Pops']}]->(SpeedRacer), +(SusanS)-[:ACTED_IN {roles:['Mom']}]->(SpeedRacer), +(MatthewF)-[:ACTED_IN {roles:['Racer X']}]->(SpeedRacer), +(ChristinaR)-[:ACTED_IN {roles:['Trixie']}]->(SpeedRacer), +(Rain)-[:ACTED_IN {roles:['Taejo Togokahn']}]->(SpeedRacer), +(BenM)-[:ACTED_IN {roles:['Cass Jones']}]->(SpeedRacer), +(LillyW)-[:DIRECTED]->(SpeedRacer), +(LanaW)-[:DIRECTED]->(SpeedRacer), +(LillyW)-[:WROTE]->(SpeedRacer), +(LanaW)-[:WROTE]->(SpeedRacer), +(JoelS)-[:PRODUCED]->(SpeedRacer) + +CREATE (NinjaAssassin:Movie {title:'Ninja Assassin', released:2009, tagline:'Prepare to enter a secret world of assassins'}) +CREATE (NaomieH:Person {name:'Naomie Harris'}) +CREATE +(Rain)-[:ACTED_IN {roles:['Raizo']}]->(NinjaAssassin), +(NaomieH)-[:ACTED_IN {roles:['Mika Coretti']}]->(NinjaAssassin), +(RickY)-[:ACTED_IN {roles:['Takeshi']}]->(NinjaAssassin), +(BenM)-[:ACTED_IN {roles:['Ryan Maslow']}]->(NinjaAssassin), +(JamesM)-[:DIRECTED]->(NinjaAssassin), +(LillyW)-[:PRODUCED]->(NinjaAssassin), +(LanaW)-[:PRODUCED]->(NinjaAssassin), +(JoelS)-[:PRODUCED]->(NinjaAssassin) + +CREATE (TheGreenMile:Movie {title:'The Green Mile', released:1999, tagline:"Walk a mile you'll never forget."}) +CREATE (MichaelD:Person {name:'Michael Clarke Duncan', born:1957}) +CREATE (DavidM:Person {name:'David Morse', born:1953}) +CREATE (SamR:Person {name:'Sam Rockwell', born:1968}) +CREATE (GaryS:Person {name:'Gary Sinise', born:1955}) +CREATE (PatriciaC:Person {name:'Patricia Clarkson', born:1959}) +CREATE (FrankD:Person {name:'Frank Darabont', born:1959}) +CREATE +(TomH)-[:ACTED_IN {roles:['Paul Edgecomb']}]->(TheGreenMile), +(MichaelD)-[:ACTED_IN {roles:['John Coffey']}]->(TheGreenMile), +(DavidM)-[:ACTED_IN {roles:['Brutus "Brutal" Howell']}]->(TheGreenMile), +(BonnieH)-[:ACTED_IN {roles:['Jan Edgecomb']}]->(TheGreenMile), +(JamesC)-[:ACTED_IN {roles:['Warden Hal Moores']}]->(TheGreenMile), +(SamR)-[:ACTED_IN {roles:['"Wild Bill" Wharton']}]->(TheGreenMile), +(GaryS)-[:ACTED_IN {roles:['Burt Hammersmith']}]->(TheGreenMile), +(PatriciaC)-[:ACTED_IN {roles:['Melinda Moores']}]->(TheGreenMile), +(FrankD)-[:DIRECTED]->(TheGreenMile) + +CREATE (FrostNixon:Movie {title:'Frost/Nixon', released:2008, tagline:'400 million people were waiting for the truth.'}) +CREATE (FrankL:Person {name:'Frank Langella', born:1938}) +CREATE (MichaelS:Person {name:'Michael Sheen', born:1969}) +CREATE (OliverP:Person {name:'Oliver Platt', born:1960}) +CREATE +(FrankL)-[:ACTED_IN {roles:['Richard Nixon']}]->(FrostNixon), +(MichaelS)-[:ACTED_IN {roles:['David Frost']}]->(FrostNixon), +(KevinB)-[:ACTED_IN {roles:['Jack Brennan']}]->(FrostNixon), +(OliverP)-[:ACTED_IN {roles:['Bob Zelnick']}]->(FrostNixon), +(SamR)-[:ACTED_IN {roles:['James Reston, Jr.']}]->(FrostNixon), +(RonH)-[:DIRECTED]->(FrostNixon) + +CREATE (Hoffa:Movie {title:'Hoffa', released:1992, tagline:"He didn't want law. He wanted justice."}) +CREATE (DannyD:Person {name:'Danny DeVito', born:1944}) +CREATE (JohnR:Person {name:'John C. Reilly', born:1965}) +CREATE +(JackN)-[:ACTED_IN {roles:['Hoffa']}]->(Hoffa), +(DannyD)-[:ACTED_IN {roles:['Robert "Bobby" Ciaro']}]->(Hoffa), +(JTW)-[:ACTED_IN {roles:['Frank Fitzsimmons']}]->(Hoffa), +(JohnR)-[:ACTED_IN {roles:['Peter "Pete" Connelly']}]->(Hoffa), +(DannyD)-[:DIRECTED]->(Hoffa) + +CREATE (Apollo13:Movie {title:'Apollo 13', released:1995, tagline:'Houston, we have a problem.'}) +CREATE (EdH:Person {name:'Ed Harris', born:1950}) +CREATE (BillPax:Person {name:'Bill Paxton', born:1955}) +CREATE +(TomH)-[:ACTED_IN {roles:['Jim Lovell']}]->(Apollo13), +(KevinB)-[:ACTED_IN {roles:['Jack Swigert']}]->(Apollo13), +(EdH)-[:ACTED_IN {roles:['Gene Kranz']}]->(Apollo13), +(BillPax)-[:ACTED_IN {roles:['Fred Haise']}]->(Apollo13), +(GaryS)-[:ACTED_IN {roles:['Ken Mattingly']}]->(Apollo13), +(RonH)-[:DIRECTED]->(Apollo13) + +CREATE (Twister:Movie {title:'Twister', released:1996, tagline:"Don't Breathe. Don't Look Back."}) +CREATE (PhilipH:Person {name:'Philip Seymour Hoffman', born:1967}) +CREATE (JanB:Person {name:'Jan de Bont', born:1943}) +CREATE +(BillPax)-[:ACTED_IN {roles:['Bill Harding']}]->(Twister), +(HelenH)-[:ACTED_IN {roles:['Dr. Jo Harding']}]->(Twister), +(ZachG)-[:ACTED_IN {roles:['Eddie']}]->(Twister), +(PhilipH)-[:ACTED_IN {roles:['Dustin "Dusty" Davis']}]->(Twister), +(JanB)-[:DIRECTED]->(Twister) + +CREATE (CastAway:Movie {title:'Cast Away', released:2000, tagline:'At the edge of the world, his journey begins.'}) +CREATE (RobertZ:Person {name:'Robert Zemeckis', born:1951}) +CREATE +(TomH)-[:ACTED_IN {roles:['Chuck Noland']}]->(CastAway), +(HelenH)-[:ACTED_IN {roles:['Kelly Frears']}]->(CastAway), +(RobertZ)-[:DIRECTED]->(CastAway) + +CREATE (OneFlewOvertheCuckoosNest:Movie {title:"One Flew Over the Cuckoo's Nest", released:1975, tagline:"If he's crazy, what does that make you?"}) +CREATE (MilosF:Person {name:'Milos Forman', born:1932}) +CREATE +(JackN)-[:ACTED_IN {roles:['Randle McMurphy']}]->(OneFlewOvertheCuckoosNest), +(DannyD)-[:ACTED_IN {roles:['Martini']}]->(OneFlewOvertheCuckoosNest), +(MilosF)-[:DIRECTED]->(OneFlewOvertheCuckoosNest) + +CREATE (SomethingsGottaGive:Movie {title:"Something's Gotta Give", released:2003}) +CREATE (DianeK:Person {name:'Diane Keaton', born:1946}) +CREATE (NancyM:Person {name:'Nancy Meyers', born:1949}) +CREATE +(JackN)-[:ACTED_IN {roles:['Harry Sanborn']}]->(SomethingsGottaGive), +(DianeK)-[:ACTED_IN {roles:['Erica Barry']}]->(SomethingsGottaGive), +(Keanu)-[:ACTED_IN {roles:['Julian Mercer']}]->(SomethingsGottaGive), +(NancyM)-[:DIRECTED]->(SomethingsGottaGive), +(NancyM)-[:PRODUCED]->(SomethingsGottaGive), +(NancyM)-[:WROTE]->(SomethingsGottaGive) + +CREATE (BicentennialMan:Movie {title:'Bicentennial Man', released:1999, tagline:"One robot's 200 year journey to become an ordinary man."}) +CREATE (ChrisC:Person {name:'Chris Columbus', born:1958}) +CREATE +(Robin)-[:ACTED_IN {roles:['Andrew Marin']}]->(BicentennialMan), +(OliverP)-[:ACTED_IN {roles:['Rupert Burns']}]->(BicentennialMan), +(ChrisC)-[:DIRECTED]->(BicentennialMan) + +CREATE (CharlieWilsonsWar:Movie {title:"Charlie Wilson's War", released:2007, tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire."}) +CREATE (JuliaR:Person {name:'Julia Roberts', born:1967}) +CREATE +(TomH)-[:ACTED_IN {roles:['Rep. Charlie Wilson']}]->(CharlieWilsonsWar), +(JuliaR)-[:ACTED_IN {roles:['Joanne Herring']}]->(CharlieWilsonsWar), +(PhilipH)-[:ACTED_IN {roles:['Gust Avrakotos']}]->(CharlieWilsonsWar), +(MikeN)-[:DIRECTED]->(CharlieWilsonsWar) + +CREATE (ThePolarExpress:Movie {title:'The Polar Express', released:2004, tagline:'This Holiday Season... Believe'}) +CREATE +(TomH)-[:ACTED_IN {roles:['Hero Boy', 'Father', 'Conductor', 'Hobo', 'Scrooge', 'Santa Claus']}]->(ThePolarExpress), +(RobertZ)-[:DIRECTED]->(ThePolarExpress) + +CREATE (ALeagueofTheirOwn:Movie {title:'A League of Their Own', released:1992, tagline:'Once in a lifetime you get a chance to do something different.'}) +CREATE (Madonna:Person {name:'Madonna', born:1954}) +CREATE (GeenaD:Person {name:'Geena Davis', born:1956}) +CREATE (LoriP:Person {name:'Lori Petty', born:1963}) +CREATE (PennyM:Person {name:'Penny Marshall', born:1943}) +CREATE +(TomH)-[:ACTED_IN {roles:['Jimmy Dugan']}]->(ALeagueofTheirOwn), +(GeenaD)-[:ACTED_IN {roles:['Dottie Hinson']}]->(ALeagueofTheirOwn), +(LoriP)-[:ACTED_IN {roles:['Kit Keller']}]->(ALeagueofTheirOwn), +(RosieO)-[:ACTED_IN {roles:['Doris Murphy']}]->(ALeagueofTheirOwn), +(Madonna)-[:ACTED_IN {roles:['"All the Way" Mae Mordabito']}]->(ALeagueofTheirOwn), +(BillPax)-[:ACTED_IN {roles:['Bob Hinson']}]->(ALeagueofTheirOwn), +(PennyM)-[:DIRECTED]->(ALeagueofTheirOwn) + +CREATE (PaulBlythe:Person {name:'Paul Blythe'}) +CREATE (AngelaScope:Person {name:'Angela Scope'}) +CREATE (JessicaThompson:Person {name:'Jessica Thompson'}) +CREATE (JamesThompson:Person {name:'James Thompson'}) + +CREATE +(JamesThompson)-[:FOLLOWS]->(JessicaThompson), +(AngelaScope)-[:FOLLOWS]->(JessicaThompson), +(PaulBlythe)-[:FOLLOWS]->(AngelaScope) + +CREATE +(JessicaThompson)-[:REVIEWED {summary:'An amazing journey', rating:95}]->(CloudAtlas), +(JessicaThompson)-[:REVIEWED {summary:'Silly, but fun', rating:65}]->(TheReplacements), +(JamesThompson)-[:REVIEWED {summary:'The coolest football movie ever', rating:100}]->(TheReplacements), +(AngelaScope)-[:REVIEWED {summary:'Pretty funny at times', rating:62}]->(TheReplacements), +(JessicaThompson)-[:REVIEWED {summary:'Dark, but compelling', rating:85}]->(Unforgiven), +(JessicaThompson)-[:REVIEWED {summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}]->(TheBirdcage), +(JessicaThompson)-[:REVIEWED {summary:'A solid romp', rating:68}]->(TheDaVinciCode), +(JamesThompson)-[:REVIEWED {summary:'Fun, but a little far fetched', rating:65}]->(TheDaVinciCode), +(JessicaThompson)-[:REVIEWED {summary:'You had me at Jerry', rating:92}]->(JerryMaguire) + +WITH TomH as a +MATCH (a)-[:ACTED_IN]->(m)<-[:DIRECTED]-(d) RETURN a,m,d LIMIT 10;`; + +export const tictactoe = ` +CALL { + CALL { + UNWIND range(1,4) AS direction + MATCH p = (start:Cell)(()-[r WHERE r.direction = direction]->()){4}(end) + OPTIONAL MATCH (before_start)-[r0]->(start) + WHERE r0.direction = direction + OPTIONAL MATCH (end)-[r5]->(after_end) + WHERE r5.direction = direction + RETURN p, before_start, start, end, after_end, direction + } // -- all valid paths + + WITH * + WHERE all(node IN nodes(p) WHERE node.state IS NULL OR node.state = $symbol) OR + all(node IN nodes(p) WHERE node.state IS NULL OR node.state <> $symbol) // -- exclude all paths that include both symbols since they cannot lead to victory + + WITH *, + CASE + WHEN before_start IS NOT NULL AND before_start.state IS NULL AND end.state IS NULL THEN 1 + WHEN start.state IS NULL AND after_end IS NOT NULL AND after_end.state IS NULL THEN 2 + ELSE 0 + END AS openEnded + + WITH *, + size([node IN nodes(p) WHERE node.state = $symbol]) AS myScore, + size([node IN nodes(p) WHERE node.state <> $symbol]) AS otherScore + // -- the two size filters above are enough, since any path including both symbols have already been excluded above + + UNWIND nodes(p) AS candidate + WITH * WHERE candidate.state IS NULL + + WITH *, + CASE + WHEN myScore = 4 THEN 2 + WHEN otherScore = 4 THEN 1 + ELSE 0 + END AS isWinningMove, // -- 2 means it is my win, 1 means that opponent could win in next move + CASE + WHEN myScore = 3 AND ((openEnded = 1 AND candidate <> end) OR (openEnded = 2 AND candidate <> start)) THEN 2 + WHEN otherScore = 3 AND ((openEnded = 1 AND candidate <> end) OR (openEnded = 2 AND candidate <> start)) THEN 1 + ELSE 0 + END AS isThreeWinningMove, + CASE + WHEN myScore = 3 THEN 1 + ELSE 0 + END AS isMyThreeMove, + CASE + WHEN otherScore = 3 THEN 1 + ELSE 0 + END AS isOtherThreeMove, + CASE + WHEN myScore = 2 AND ((openEnded = 1 AND candidate <> end) OR (openEnded = 2 AND candidate <> start)) THEN 1 + ELSE 0 + END AS isMyTwoMove, + CASE + WHEN otherScore = 2 AND ((openEnded = 1 AND candidate <> end) OR (openEnded = 2 AND candidate <> start)) THEN 1 + ELSE 0 + END AS isOtherTwoMove + + WITH candidate, + direction, + max(isWinningMove) AS maxIsWinningMove, + max(isThreeWinningMove) AS maxIsThreeWinningMove, + max(isMyThreeMove) AS maxIsMyThreeMove, + max(isOtherThreeMove) AS maxIsOtherThreeMove, + max(isMyTwoMove) AS maxIsMyTwoMove, + max(isOtherTwoMove) AS maxIsOtherTwoMove, + sum((myScore + otherScore + toInteger(openEnded > 0))) AS candidateScore // -- give an additional point for open-ended paths, as a heuristic + + WITH candidate, + sum(maxIsWinningMove) AS isWinningMove, + sum(maxIsThreeWinningMove) AS isThreeWinningMove, + sum(maxIsMyThreeMove) AS isMyThreeMoveSum, + sum(maxIsOtherThreeMove) AS isOtherThreeMoveSum, + sum(maxIsMyTwoMove) AS isMyTwoMoveSum, + sum(maxIsOtherTwoMove) AS isOtherTwoMoveSum, + sum(candidateScore) + count(*) AS score // -- give one point extra for each direction that a candidate advances play in, as a heuristic + + WITH *, + CASE + WHEN isMyThreeMoveSum >= 2 THEN 2 + WHEN isOtherThreeMoveSum >= 2 THEN 1 + WHEN isMyThreeMoveSum > 0 AND isMyTwoMoveSum > 0 THEN 2 + WHEN isOtherThreeMoveSum > 0 AND isOtherTwoMoveSum > 0 THEN 1 + WHEN isMyTwoMoveSum >= 2 THEN 2 + WHEN isOtherTwoMoveSum >= 2 THEN 1 + ELSE 0 + END AS isFork + + WITH * ORDER BY isWinningMove DESC, isThreeWinningMove DESC, isFork DESC, score DESC + LIMIT 1 + RETURN candidate, isWinningMove + + UNION + + // -- When the game will for sure end in a tie we still need to update the game + + MATCH (candidate) WHERE candidate.state IS NULL + RETURN candidate, -1 AS isWinningMove LIMIT 1 +} + +WITH * ORDER BY isWinningMove DESC +LIMIT 1 + +SET candidate.state = $symbol`; + +export const autocompletionQueries = { + databaseName: 'ALTER ALIAS a.b.c. ', + functionName: 'MATCH (n) WHERE apoc.', + keywordCompletion: 'MATCH (n:Person)-[r:KNOWS]-(m:Person) RETURN ', + relationshipCompletion: 'MATCH (n)-[r:A|B|:', + labelCompletion: 'MATCH (n:', + procedureCompletion: 'CALL dbm', + propertyKeyCompletion: 'MATCH (n) RETURN n.', + variableCompletion: 'WITH 1 as variable MATCH (n) WHERE n.name = ', +}; diff --git a/packages/language-support/src/tests/benchmarks/benchmarks.ts b/packages/language-support/src/tests/benchmarks/benchmarks.ts new file mode 100644 index 000000000..39989db27 --- /dev/null +++ b/packages/language-support/src/tests/benchmarks/benchmarks.ts @@ -0,0 +1,71 @@ +import Benchmark from 'benchmark'; +import { autocomplete } from '../../autocompletion/autocompletion'; +import { applySyntaxColouring } from '../../highlighting/syntaxColouring/syntaxColouring'; +import { validateSyntax } from '../../highlighting/syntaxValidation/syntaxValidation'; +import { parse } from '../../parserWrapper'; +import { + autocompletionQueries, + createMovieDb, + simpleQuery, + tictactoe, +} from './benchmark-queries'; +const suite = new Benchmark.Suite(); + +suite + .add('simple - parse', function () { + parse(simpleQuery); + }) + .add('simple - highlight', function () { + applySyntaxColouring(simpleQuery); + }) + .add('simple - validate syntax', function () { + validateSyntax(simpleQuery, {}); + }) + .add('simple - autocomplete next statement', function () { + autocomplete(simpleQuery, {}); + }) + .add('movies - parse', function () { + parse(createMovieDb); + }) + .add('movies - highlight', function () { + applySyntaxColouring(createMovieDb); + }) + .add('movies - validate syntax', function () { + validateSyntax(createMovieDb, {}); + }) + .add('movies - autocomplete next statement', function () { + autocomplete(createMovieDb, {}); + }) + .add('tictactoe - parse', function () { + parse(tictactoe); + }) + .add('tictactoe - highlight', function () { + applySyntaxColouring(tictactoe); + }) + .add('tictactoe - validate syntax', function () { + validateSyntax(tictactoe, {}); + }) + .add('tictactoe - autocomplete next statement', function () { + autocomplete(tictactoe, {}); + }); + +Object.entries(autocompletionQueries).forEach(([name, query]) => { + suite.add(`autocomplete - ${name}`, function () { + autocomplete(query, { + aliasNames: ['alias'], + databaseNames: ['db'], + labels: ['label'], + relationshipTypes: ['relType'], + propertyKeys: ['prop'], + functionSignatures: { 'apoc.util.sleep': { label: 'apoc.util.sleep' } }, + procedureSignatures: { 'db.ping': { label: 'db.ping' } }, + }); + }); +}); + +suite + .on('cycle', function (event: { target: { toString: () => string } }) { + // eslint-disable-next-line no-console + console.log(String(event.target)); + }) + .run({ async: false }); From 28f3c053b938cd224fe3fefbb180d16ac9018a0c Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 10:34:52 +0100 Subject: [PATCH 02/27] path --- .github/workflows/benchmark.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index f358da6f1..810147810 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -26,11 +26,11 @@ jobs: # Run benchmark on main and stores the output to a file - name: Run benchmark on main (baseline) - run: npm install && cd main/packages/language-support && npm run build-benchmarks && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + run: cd main && npm install && cd packages/language-support && npm run build-benchmarks && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) - name: Run pull request benchmark - run: npm install && cd pr/packages/language-support && npm run build-benchmarks && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + run: cd pr && npm install && cd packages/language-support && npm run build-benchmarks && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt - name: Compare benchmark result uses: openpgpjs/github-action-pull-request-benchmark@v1 From 0784c5ef38421313596aaf259ffa3927cc9abe05 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 10:37:58 +0100 Subject: [PATCH 03/27] ci --- .github/workflows/benchmark.yaml | 4 ++-- packages/language-support/package.json | 2 +- .../src/tests/benchmarks/{benchmarks.ts => benchmark.ts} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename packages/language-support/src/tests/benchmarks/{benchmarks.ts => benchmark.ts} (100%) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 810147810..c579a778f 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -26,11 +26,11 @@ jobs: # Run benchmark on main and stores the output to a file - name: Run benchmark on main (baseline) - run: cd main && npm install && cd packages/language-support && npm run build-benchmarks && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + run: cd main && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) - name: Run pull request benchmark - run: cd pr && npm install && cd packages/language-support && npm run build-benchmarks && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + run: cd pr && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt - name: Compare benchmark result uses: openpgpjs/github-action-pull-request-benchmark@v1 diff --git a/packages/language-support/package.json b/packages/language-support/package.json index c6ba73a87..7c8b29c09 100644 --- a/packages/language-support/package.json +++ b/packages/language-support/package.json @@ -52,7 +52,7 @@ "build-types": "tsc --emitDeclarationOnly --outDir dist/types", "build-esm": "esbuild ./src/index.ts --bundle --format=esm --sourcemap --outfile=dist/esm/index.mjs", "build-commonjs": "esbuild ./src/index.ts --bundle --format=cjs --sourcemap --outfile=dist/cjs/index.cjs", - "build-benchmark": "esbuild ./src/tests/benchmarks/benchmarks.ts --bundle --outfile=dist/benchmark/benchmark.js", + "build-benchmark": "esbuild ./src/tests/benchmarks/benchmark.ts --bundle --outfile=dist/benchmark/benchmark.js", "clean": "rm -rf {dist,src/generated-parser}", "watch": "tsc -b -w", "test": "jest" diff --git a/packages/language-support/src/tests/benchmarks/benchmarks.ts b/packages/language-support/src/tests/benchmarks/benchmark.ts similarity index 100% rename from packages/language-support/src/tests/benchmarks/benchmarks.ts rename to packages/language-support/src/tests/benchmarks/benchmark.ts From 9fe4a839e1d9fbdc88d04e27fe2766387d5ad1b4 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 11:39:05 +0100 Subject: [PATCH 04/27] ci --- .github/workflows/benchmark.yaml | 28 +++++++++++++++--------- benchmarks.txt | 2 ++ package.json | 1 + packages/language-support/benchmarks.txt | 20 +++++++++++++++++ turbo.json | 3 ++- 5 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 benchmarks.txt create mode 100644 packages/language-support/benchmarks.txt diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index c579a778f..e16e8a1ef 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -10,27 +10,35 @@ jobs: runs-on: ubuntu-latest steps: - # Check out pull request branch - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: path: pr - # Check out base branch (to compare performance) - - uses: actions/checkout@v2 + + - uses: actions/checkout@v3 with: ref: main path: main - - uses: actions/setup-node@v3 - with: - node-version: '18' + - name: Setup antlr4 + uses: ./.github/actions/setup-antlr4 + + - name: Install dependencies with frozen lock file + run: npm ci + working-directory: main + + - name: Build benchmarks + env: + NODE_OPTIONS: '--max_old_space_size=4096' + run: npm run build-benchmark + working-directory: main # Run benchmark on main and stores the output to a file - name: Run benchmark on main (baseline) - run: cd main && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) - - name: Run pull request benchmark - run: cd pr && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + #- name: Run pull request benchmark + #run: cd pr && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt - name: Compare benchmark result uses: openpgpjs/github-action-pull-request-benchmark@v1 diff --git a/benchmarks.txt b/benchmarks.txt new file mode 100644 index 000000000..d68b7087f --- /dev/null +++ b/benchmarks.txt @@ -0,0 +1,2 @@ +simple - parse x 25,891 ops/sec ±0.38% (100 runs sampled) +simple - highlight x 4,987 ops/sec ±0.44% (97 runs sampled) diff --git a/package.json b/package.json index 3f744b28c..c6f49c6bf 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "scripts": { "prepare": "husky install", "build": "turbo run build", + "build-benchmark": "turbo run build-benchmark", "release": "turbo run build && npx changeset publish", "clean": "turbo run clean", "watch": "turbo run watch", diff --git a/packages/language-support/benchmarks.txt b/packages/language-support/benchmarks.txt new file mode 100644 index 000000000..11a01ad09 --- /dev/null +++ b/packages/language-support/benchmarks.txt @@ -0,0 +1,20 @@ +simple - parse x 25,200 ops/sec ±0.60% (90 runs sampled) +simple - highlight x 4,821 ops/sec ±0.51% (95 runs sampled) +simple - validate syntax x 22.18 ops/sec ±3.34% (42 runs sampled) +simple - autocomplete next statement x 3,471 ops/sec ±0.52% (96 runs sampled) +movies - parse x 132 ops/sec ±0.78% (86 runs sampled) +movies - highlight x 29.42 ops/sec ±2.21% (53 runs sampled) +movies - validate syntax x 0.39 ops/sec ±1.36% (5 runs sampled) +movies - autocomplete next statement x 78.30 ops/sec ±1.20% (69 runs sampled) +tictactoe - parse x 296 ops/sec ±1.06% (90 runs sampled) +tictactoe - highlight x 162 ops/sec ±1.51% (84 runs sampled) +tictactoe - validate syntax x 2.78 ops/sec ±2.66% (11 runs sampled) +tictactoe - autocomplete next statement x 113 ops/sec ±1.61% (74 runs sampled) +autocomplete - databaseName x 10,389 ops/sec ±0.70% (94 runs sampled) +autocomplete - functionName x 7,398 ops/sec ±0.80% (95 runs sampled) +autocomplete - keywordCompletion x 5,981 ops/sec ±0.72% (95 runs sampled) +autocomplete - relationshipCompletion x 5,080 ops/sec ±0.92% (95 runs sampled) +autocomplete - labelCompletion x 5,457 ops/sec ±0.56% (98 runs sampled) +autocomplete - procedureCompletion x 35,726 ops/sec ±0.60% (98 runs sampled) +autocomplete - propertyKeyCompletion x 7,177 ops/sec ±0.67% (95 runs sampled) +autocomplete - variableCompletion x 4,922 ops/sec ±0.95% (92 runs sampled) diff --git a/turbo.json b/turbo.json index a9d8f5220..765116294 100644 --- a/turbo.json +++ b/turbo.json @@ -52,6 +52,7 @@ "cache": false, "persistent": false, "dependsOn": ["@neo4j-cypher/react-codemirror#test:e2e"] - } + }, + "build-benchmark": { "dependsOn": ["build"] } } } From 9b5ae364c74b06dc0eb09951a2a57eb7b6ed7d90 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 11:41:01 +0100 Subject: [PATCH 05/27] ci --- .github/workflows/benchmark.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index e16e8a1ef..fcbf335fd 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -21,21 +21,35 @@ jobs: - name: Setup antlr4 uses: ./.github/actions/setup-antlr4 + working-directory: ~ - name: Install dependencies with frozen lock file run: npm ci working-directory: main + - name: Install dependencies with frozen lock file + run: npm ci + working-directory: pr + - name: Build benchmarks env: NODE_OPTIONS: '--max_old_space_size=4096' run: npm run build-benchmark working-directory: main + - name: Build benchmarks + env: + NODE_OPTIONS: '--max_old_space_size=4096' + run: npm run build-benchmark + working-directory: pr + # Run benchmark on main and stores the output to a file - name: Run benchmark on main (baseline) run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt + - name: Run benchmark on pr + run: BENCHMARKING=true node pr/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt + # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) #- name: Run pull request benchmark #run: cd pr && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt From 0e49894b32b88798974b1b5bd94e2eb986c3a0e0 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 11:42:28 +0100 Subject: [PATCH 06/27] path --- .github/workflows/benchmark.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index fcbf335fd..4182eb869 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -21,7 +21,7 @@ jobs: - name: Setup antlr4 uses: ./.github/actions/setup-antlr4 - working-directory: ~ + working-directory: / - name: Install dependencies with frozen lock file run: npm ci From 2016f9212ef4c0a5bd44c9909231fd243e5c3cb1 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 11:43:22 +0100 Subject: [PATCH 07/27] workdir --- .github/workflows/benchmark.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 4182eb869..b39670d39 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -4,6 +4,10 @@ on: pull_request: branches: [main] +defaults: + run: + working-directory: . + jobs: benchmark: name: Time benchmark @@ -21,7 +25,6 @@ jobs: - name: Setup antlr4 uses: ./.github/actions/setup-antlr4 - working-directory: / - name: Install dependencies with frozen lock file run: npm ci From 41e3f648be941c95f5bb3e28ed61b067605c22c8 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 11:45:42 +0100 Subject: [PATCH 08/27] ci --- .github/workflows/benchmark.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index b39670d39..2aeafda72 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -25,20 +25,21 @@ jobs: - name: Setup antlr4 uses: ./.github/actions/setup-antlr4 + working-directory: $GITHUB_WORKSPACE/main - name: Install dependencies with frozen lock file run: npm ci - working-directory: main + working-directory: $GITHUB_WORKSPACE/main - name: Install dependencies with frozen lock file run: npm ci - working-directory: pr + working-directory: $GITHUB_WORKSPACE/pr - name: Build benchmarks env: NODE_OPTIONS: '--max_old_space_size=4096' run: npm run build-benchmark - working-directory: main + working-directory: $GITHUB_WORKSPACE/main - name: Build benchmarks env: From 1b247e230798ec61dd28158762261a53b51e1359 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 11:52:32 +0100 Subject: [PATCH 09/27] ci --- .github/workflows/benchmark.yaml | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 2aeafda72..0dc78e465 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -4,10 +4,6 @@ on: pull_request: branches: [main] -defaults: - run: - working-directory: . - jobs: benchmark: name: Time benchmark @@ -24,22 +20,21 @@ jobs: path: main - name: Setup antlr4 - uses: ./.github/actions/setup-antlr4 - working-directory: $GITHUB_WORKSPACE/main + uses: main/.github/actions/setup-antlr4 - name: Install dependencies with frozen lock file run: npm ci - working-directory: $GITHUB_WORKSPACE/main + working-directory: main - name: Install dependencies with frozen lock file run: npm ci - working-directory: $GITHUB_WORKSPACE/pr + working-directory: pr - name: Build benchmarks env: NODE_OPTIONS: '--max_old_space_size=4096' run: npm run build-benchmark - working-directory: $GITHUB_WORKSPACE/main + working-directory: main - name: Build benchmarks env: @@ -52,7 +47,7 @@ jobs: run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt - name: Run benchmark on pr - run: BENCHMARKING=true node pr/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt + run: BENCHMARKING=true node pr/packages/language-support/dist/benchmark/benchmark.js | tee pr-benchmarks.txt # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) #- name: Run pull request benchmark @@ -62,16 +57,11 @@ jobs: uses: openpgpjs/github-action-pull-request-benchmark@v1 with: name: 'Time benchmark' - # What benchmark tool the benchmarks.txt files came from tool: 'benchmarkjs' - # Where the two output files from the benchmark tool are stored pr-benchmark-file-path: pr/packages/language-support/benchmarks.txt base-benchmark-file-path: main/packages/language-support/benchmarks.txt - # A comment will be left on the latest PR commit if `alert-threshold` is exceeded comment-on-alert: true alert-threshold: '130%' - # Workflow will fail if `fail-threshold` is exceeded fail-on-alert: true fail-threshold: '150%' - # A token is needed to leave commit comments github-token: ${{ secrets.GITHUB_TOKEN }} From 03a53c3210fce30124db9cb8bd0b073eb321b511 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 11:56:46 +0100 Subject: [PATCH 10/27] dbug --- .github/workflows/benchmark.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 0dc78e465..f3601bebb 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -19,8 +19,8 @@ jobs: ref: main path: main - - name: Setup antlr4 - uses: main/.github/actions/setup-antlr4 + #- name: Setup antlr4 + #uses: pr/.github/actions/setup-antlr4 - name: Install dependencies with frozen lock file run: npm ci @@ -58,8 +58,8 @@ jobs: with: name: 'Time benchmark' tool: 'benchmarkjs' - pr-benchmark-file-path: pr/packages/language-support/benchmarks.txt - base-benchmark-file-path: main/packages/language-support/benchmarks.txt + pr-benchmark-file-path: pr-benchmarks.txt + base-benchmark-file-path: main-benchmarks.txt comment-on-alert: true alert-threshold: '130%' fail-on-alert: true From b6cf8095ca48a062d3559503af8d9ea22f09c50f Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 11:57:37 +0100 Subject: [PATCH 11/27] setupantlr4 --- .github/workflows/benchmark.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index f3601bebb..ec75930cf 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -19,8 +19,8 @@ jobs: ref: main path: main - #- name: Setup antlr4 - #uses: pr/.github/actions/setup-antlr4 + - name: Setup antlr4 + uses: ./main/.github/actions/setup-antlr4 - name: Install dependencies with frozen lock file run: npm ci From 63d1650635b1e71a3164cce86e4c137759003626 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 13:23:27 +0100 Subject: [PATCH 12/27] fix pr --- .github/workflows/benchmark.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index ec75930cf..90f32812e 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -34,13 +34,13 @@ jobs: env: NODE_OPTIONS: '--max_old_space_size=4096' run: npm run build-benchmark - working-directory: main + working-directory: pr - name: Build benchmarks env: NODE_OPTIONS: '--max_old_space_size=4096' run: npm run build-benchmark - working-directory: pr + working-directory: main # Run benchmark on main and stores the output to a file - name: Run benchmark on main (baseline) From 68040acc0910e15a51954fb7987a098da2b31bf7 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 13:28:11 +0100 Subject: [PATCH 13/27] comparetoself --- .github/workflows/benchmark.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 90f32812e..377cdc64c 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -36,15 +36,15 @@ jobs: run: npm run build-benchmark working-directory: pr - - name: Build benchmarks - env: - NODE_OPTIONS: '--max_old_space_size=4096' - run: npm run build-benchmark - working-directory: main + # - name: Build benchmarks + # env: + # NODE_OPTIONS: '--max_old_space_size=4096' + # run: npm run build-benchmark + # working-directory: main # Run benchmark on main and stores the output to a file - - name: Run benchmark on main (baseline) - run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt + # - name: Run benchmark on main (baseline) + # run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt - name: Run benchmark on pr run: BENCHMARKING=true node pr/packages/language-support/dist/benchmark/benchmark.js | tee pr-benchmarks.txt @@ -59,7 +59,7 @@ jobs: name: 'Time benchmark' tool: 'benchmarkjs' pr-benchmark-file-path: pr-benchmarks.txt - base-benchmark-file-path: main-benchmarks.txt + base-benchmark-file-path: pr-benchmarks.txt comment-on-alert: true alert-threshold: '130%' fail-on-alert: true From 55cb3e1b72006b5b0d551c33a7c07dfb876f724e Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 27 Nov 2023 16:27:07 +0100 Subject: [PATCH 14/27] addbenchmarks --- .github/workflows/benchmark.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 377cdc64c..90f32812e 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -36,15 +36,15 @@ jobs: run: npm run build-benchmark working-directory: pr - # - name: Build benchmarks - # env: - # NODE_OPTIONS: '--max_old_space_size=4096' - # run: npm run build-benchmark - # working-directory: main + - name: Build benchmarks + env: + NODE_OPTIONS: '--max_old_space_size=4096' + run: npm run build-benchmark + working-directory: main # Run benchmark on main and stores the output to a file - # - name: Run benchmark on main (baseline) - # run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt + - name: Run benchmark on main (baseline) + run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt - name: Run benchmark on pr run: BENCHMARKING=true node pr/packages/language-support/dist/benchmark/benchmark.js | tee pr-benchmarks.txt @@ -59,7 +59,7 @@ jobs: name: 'Time benchmark' tool: 'benchmarkjs' pr-benchmark-file-path: pr-benchmarks.txt - base-benchmark-file-path: pr-benchmarks.txt + base-benchmark-file-path: main-benchmarks.txt comment-on-alert: true alert-threshold: '130%' fail-on-alert: true From 43fcaf43fb0ff64fe5c97462c10d53aa35b42bbc Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Tue, 28 Nov 2023 16:59:56 +0100 Subject: [PATCH 15/27] add benchmarks for react-wrapper --- packages/react-codemirror/package.json | 3 +- .../src/e2e_tests/performance-test.spec.tsx | 67 ++++++++++++++++++- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/packages/react-codemirror/package.json b/packages/react-codemirror/package.json index a74482d48..06b57ce0b 100644 --- a/packages/react-codemirror/package.json +++ b/packages/react-codemirror/package.json @@ -37,7 +37,8 @@ "clean": "rm -rf dist", "test": "jest", "test:e2e": "playwright test -c playwright-ct.config.ts", - "test:e2e-ui": "playwright test -c playwright-ct.config.ts --ui" + "test:e2e-ui": "playwright test -c playwright-ct.config.ts --ui", + "benchmark": "BENCHMARKING=true npx playwright test -c playwright-ct.config.ts -g \"benchmarking & performance test session\"" }, "repository": { "type": "git", diff --git a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx index 66a5c90b6..505cc4d2c 100644 --- a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx +++ b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx @@ -1,12 +1,42 @@ import { expect, test } from '@playwright/experimental-ct-react'; +import fs from 'fs'; import { CypherEditor } from '../CypherEditor'; import { CypherEditorPage } from './e2e-utils'; import { largeQuery, mockSchema } from './mock-data'; test.use({ viewport: { width: 1000, height: 500 } }); - -test('performance test session ', async ({ mount, page }) => { - test.setTimeout(30 * 1000); +declare global { + interface Window { + longtasks: number[]; + } +} + +test('benchmarking & performance test session', async ({ + mount, + page, + browser, +}) => { + if (process.env.BENCHMARKING === 'true') { + test.setTimeout(1000000); + const client = await page.context().newCDPSession(page); + await client.send('Performance.enable'); + await client.send('Emulation.setCPUThrottlingRate', { rate: 4 }); + await client.send('Overlay.setShowFPSCounter', { show: true }); + await browser.startTracing(page, { + path: './trace.json', + screenshots: true, + }); + await page.evaluate(() => { + window.longtasks = []; + const observer = new PerformanceObserver((list) => { + window.longtasks.push(...list.getEntries().map((e) => e.duration)); + }); + + observer.observe({ entryTypes: ['longtask'] }); + }); + } else { + test.setTimeout(30 * 1000); + } const editorPage = new CypherEditorPage(page); const component = await mount( , @@ -68,4 +98,35 @@ test('performance test session ', async ({ mount, page }) => { await editorPage .getEditor() .pressSequentially('veryveryveryverylongvariable'); + + if (process.env.BENCHMARKING === 'true') { + // remove value and schema to see memory usage lowering again while idle + await component.update(); + await page.evaluate(() => window.performance.mark('start idling')); + // Used to see memeory usage over time while idle + await page.waitForTimeout(2 * 60 * 1000); + await browser.stopTracing(); + + // save long task information to json + const longtasks = await page.evaluate(() => window.longtasks); + const sortedLongTasks = longtasks.sort((a, b) => a - b); + const medianLongTask = + sortedLongTasks[Math.floor(sortedLongTasks.length / 2)]; + const averageLongTask = + sortedLongTasks.reduce((a, b) => a + b, 0) / sortedLongTasks.length; + const over500 = sortedLongTasks.filter((t) => t > 500).length; + const nintyninethPercentile = + sortedLongTasks[Math.floor(sortedLongTasks.length * 0.99)]; + + fs.writeFileSync( + 'stats.json', + JSON.stringify({ + longtasksCount: longtasks.length, + medianLongTask, + averageLongTask, + over500, + nintyninethPercentile, + }), + ); + } }); From a9bae95c93b967e0b3290c87eff6625eb055f27d Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Wed, 29 Nov 2023 09:25:25 +0100 Subject: [PATCH 16/27] add support for exporting trace --- .../src/e2e_tests/performance-test.spec.tsx | 57 +++++++++++++++---- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx index 505cc4d2c..91ff066a0 100644 --- a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx +++ b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx @@ -11,21 +11,42 @@ declare global { } } -test('benchmarking & performance test session', async ({ - mount, - page, - browser, -}) => { +test('benchmarking & performance test session', async ({ mount, page }) => { + const client = await page.context().newCDPSession(page); if (process.env.BENCHMARKING === 'true') { test.setTimeout(1000000); - const client = await page.context().newCDPSession(page); await client.send('Performance.enable'); await client.send('Emulation.setCPUThrottlingRate', { rate: 4 }); await client.send('Overlay.setShowFPSCounter', { show: true }); - await browser.startTracing(page, { - path: './trace.json', - screenshots: true, + + await client.send('Tracing.start', { + streamFormat: 'proto', + transferMode: 'ReturnAsStream', + bufferUsageReportingInterval: 1000, + traceConfig: { + recordMode: 'recordContinuously', + enableSampling: true, + }, }); + + // eslint-disable-next-line @typescript-eslint/no-misused-promises + client.on('Tracing.tracingComplete', async (event) => { + const { stream } = event; + const traceFile = 'trace.proto'; + + const fileStream = fs.createWriteStream(traceFile); + + let chunk = await client.send('IO.read', { handle: stream }); + while (!chunk.eof) { + fileStream.write(Buffer.from(chunk.data, 'base64')); + chunk = await client.send('IO.read', { handle: stream }); + } + + // Close the stream and the file + await client.send('IO.close', { handle: stream }); + fileStream.end(); + }); + await page.evaluate(() => { window.longtasks = []; const observer = new PerformanceObserver((list) => { @@ -104,8 +125,24 @@ test('benchmarking & performance test session', async ({ await component.update(); await page.evaluate(() => window.performance.mark('start idling')); // Used to see memeory usage over time while idle + + await client.send('Tracing.end'); await page.waitForTimeout(2 * 60 * 1000); - await browser.stopTracing(); + + /* + async for dc_event in session.listen( + devtools.tracing.DataCollected, devtools.tracing.TracingComplete + ): + # The DataCollected event is sent for each batch of events, and the TracingComplete event is sent when the tracing is done + if type(dc_event) == devtools.tracing.DataCollected: + data[ + "traceEvents" + ] += ( + dc_event.value + ) # Collect the events and do whatever you want with them + if type(dc_event) == devtools.tracing.TracingComplete: + break # This is how you stop the event loop + */ // save long task information to json const longtasks = await page.evaluate(() => window.longtasks); From 280ffab5518d76bd1ba566c0a63bc8ede8c2c977 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Wed, 29 Nov 2023 09:30:41 +0100 Subject: [PATCH 17/27] remove tracing --- .../src/e2e_tests/performance-test.spec.tsx | 51 ------------------- 1 file changed, 51 deletions(-) diff --git a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx index 91ff066a0..b0be82bce 100644 --- a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx +++ b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx @@ -19,34 +19,6 @@ test('benchmarking & performance test session', async ({ mount, page }) => { await client.send('Emulation.setCPUThrottlingRate', { rate: 4 }); await client.send('Overlay.setShowFPSCounter', { show: true }); - await client.send('Tracing.start', { - streamFormat: 'proto', - transferMode: 'ReturnAsStream', - bufferUsageReportingInterval: 1000, - traceConfig: { - recordMode: 'recordContinuously', - enableSampling: true, - }, - }); - - // eslint-disable-next-line @typescript-eslint/no-misused-promises - client.on('Tracing.tracingComplete', async (event) => { - const { stream } = event; - const traceFile = 'trace.proto'; - - const fileStream = fs.createWriteStream(traceFile); - - let chunk = await client.send('IO.read', { handle: stream }); - while (!chunk.eof) { - fileStream.write(Buffer.from(chunk.data, 'base64')); - chunk = await client.send('IO.read', { handle: stream }); - } - - // Close the stream and the file - await client.send('IO.close', { handle: stream }); - fileStream.end(); - }); - await page.evaluate(() => { window.longtasks = []; const observer = new PerformanceObserver((list) => { @@ -121,29 +93,6 @@ test('benchmarking & performance test session', async ({ mount, page }) => { .pressSequentially('veryveryveryverylongvariable'); if (process.env.BENCHMARKING === 'true') { - // remove value and schema to see memory usage lowering again while idle - await component.update(); - await page.evaluate(() => window.performance.mark('start idling')); - // Used to see memeory usage over time while idle - - await client.send('Tracing.end'); - await page.waitForTimeout(2 * 60 * 1000); - - /* - async for dc_event in session.listen( - devtools.tracing.DataCollected, devtools.tracing.TracingComplete - ): - # The DataCollected event is sent for each batch of events, and the TracingComplete event is sent when the tracing is done - if type(dc_event) == devtools.tracing.DataCollected: - data[ - "traceEvents" - ] += ( - dc_event.value - ) # Collect the events and do whatever you want with them - if type(dc_event) == devtools.tracing.TracingComplete: - break # This is how you stop the event loop - */ - // save long task information to json const longtasks = await page.evaluate(() => window.longtasks); const sortedLongTasks = longtasks.sort((a, b) => a - b); From cfb85dd249ca7ea1614dabad555f3ef9dd29d23c Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Wed, 29 Nov 2023 11:45:14 +0100 Subject: [PATCH 18/27] fixperftest --- packages/react-codemirror/package.json | 2 +- .../src/e2e_tests/performance-test.spec.tsx | 47 ++++++++++++++----- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/packages/react-codemirror/package.json b/packages/react-codemirror/package.json index 06b57ce0b..95a84913f 100644 --- a/packages/react-codemirror/package.json +++ b/packages/react-codemirror/package.json @@ -52,7 +52,6 @@ "node": ">=18.18.2" }, "dependencies": { - "@neo4j-cypher/language-support": "2.0.0-next.0", "@codemirror/autocomplete": "^6.5.1", "@codemirror/commands": "^6.2.2", "@codemirror/language": "^6.6.0", @@ -62,6 +61,7 @@ "@codemirror/view": "^6.13.2", "@lezer/common": "^1.0.2", "@lezer/highlight": "^1.1.3", + "@neo4j-cypher/language-support": "2.0.0-next.0", "ayu": "^8.0.1", "fastest-levenshtein": "^1.0.16", "vscode-languageserver-types": "^3.17.3" diff --git a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx index b0be82bce..5ebc8274a 100644 --- a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx +++ b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx @@ -1,5 +1,4 @@ import { expect, test } from '@playwright/experimental-ct-react'; -import fs from 'fs'; import { CypherEditor } from '../CypherEditor'; import { CypherEditorPage } from './e2e-utils'; import { largeQuery, mockSchema } from './mock-data'; @@ -93,7 +92,6 @@ test('benchmarking & performance test session', async ({ mount, page }) => { .pressSequentially('veryveryveryverylongvariable'); if (process.env.BENCHMARKING === 'true') { - // save long task information to json const longtasks = await page.evaluate(() => window.longtasks); const sortedLongTasks = longtasks.sort((a, b) => a - b); const medianLongTask = @@ -103,16 +101,41 @@ test('benchmarking & performance test session', async ({ mount, page }) => { const over500 = sortedLongTasks.filter((t) => t > 500).length; const nintyninethPercentile = sortedLongTasks[Math.floor(sortedLongTasks.length * 0.99)]; - - fs.writeFileSync( - 'stats.json', - JSON.stringify({ - longtasksCount: longtasks.length, - medianLongTask, - averageLongTask, - over500, - nintyninethPercentile, - }), + const longTaskCount = longtasks.length; + const totalLongTaskTime = longtasks.reduce((a, b) => a + b, 0); + + const USER_ID = 1226722; + const API_KEY = process.env.GRAFANA_API_KEY; + + if (!API_KEY) { + throw new Error('Missing grafana api key'); + } + + const metrics = { + medianLongTask, + averageLongTask, + over500, + nintyninethPercentile, + longTaskCount, + totalLongTaskTime, + }; + const body = Object.entries(metrics) + .map( + ([key, value]) => + `benchmark,bar_label=${key},source=playwright metric=${value}`, + ) + .join('\n'); + + await fetch( + 'https://influx-prod-39-prod-eu-north-0.grafana.net/api/v1/push/influx/write', + { + method: 'post', + body, + headers: { + Authorization: `Bearer ${USER_ID}:${API_KEY}`, + 'Content-Type': 'text/plain', + }, + }, ); } }); From 39c1ea3617a34e6a1189cb63b1b0af7583fd4a07 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Thu, 30 Nov 2023 09:50:01 +0100 Subject: [PATCH 19/27] deploy benchmarks --- .github/workflows/benchmark.yaml | 46 +- .github/workflows/performance-regression.yaml | 67 + .nvmrc | 1 + package.json | 8 +- packages/language-support/benchmarks.txt | 20 - packages/language-support/package.json | 2 +- .../tests/benchmarks/benchmark-dbschemas.ts | 4055 +++++++++++++++++ .../src/tests/benchmarks/benchmark.ts | 86 +- .../src/e2e_tests/performance-test.spec.tsx | 10 +- turbo.json | 4 +- 10 files changed, 4216 insertions(+), 83 deletions(-) create mode 100644 .github/workflows/performance-regression.yaml create mode 100644 .nvmrc delete mode 100644 packages/language-support/benchmarks.txt create mode 100644 packages/language-support/src/tests/benchmarks/benchmark-dbschemas.ts diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 90f32812e..534cccf14 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -1,7 +1,7 @@ -name: Performance Regression Test +name: Push benchmarks to grafana on: - pull_request: + push: branches: [main] jobs: @@ -10,10 +10,6 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - with: - path: pr - - uses: actions/checkout@v3 with: ref: main @@ -24,44 +20,14 @@ jobs: - name: Install dependencies with frozen lock file run: npm ci - working-directory: main - name: Install dependencies with frozen lock file run: npm ci - working-directory: pr - - - name: Build benchmarks - env: - NODE_OPTIONS: '--max_old_space_size=4096' - run: npm run build-benchmark - working-directory: pr - - name: Build benchmarks + - name: Build project env: NODE_OPTIONS: '--max_old_space_size=4096' - run: npm run build-benchmark - working-directory: main - - # Run benchmark on main and stores the output to a file - - name: Run benchmark on main (baseline) - run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt - - - name: Run benchmark on pr - run: BENCHMARKING=true node pr/packages/language-support/dist/benchmark/benchmark.js | tee pr-benchmarks.txt + run: npm run build - # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) - #- name: Run pull request benchmark - #run: cd pr && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt - - - name: Compare benchmark result - uses: openpgpjs/github-action-pull-request-benchmark@v1 - with: - name: 'Time benchmark' - tool: 'benchmarkjs' - pr-benchmark-file-path: pr-benchmarks.txt - base-benchmark-file-path: main-benchmarks.txt - comment-on-alert: true - alert-threshold: '130%' - fail-on-alert: true - fail-threshold: '150%' - github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Benchmark + run: npm run benchmark --concurrency 1 diff --git a/.github/workflows/performance-regression.yaml b/.github/workflows/performance-regression.yaml new file mode 100644 index 000000000..90f32812e --- /dev/null +++ b/.github/workflows/performance-regression.yaml @@ -0,0 +1,67 @@ +name: Performance Regression Test + +on: + pull_request: + branches: [main] + +jobs: + benchmark: + name: Time benchmark + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + path: pr + + - uses: actions/checkout@v3 + with: + ref: main + path: main + + - name: Setup antlr4 + uses: ./main/.github/actions/setup-antlr4 + + - name: Install dependencies with frozen lock file + run: npm ci + working-directory: main + + - name: Install dependencies with frozen lock file + run: npm ci + working-directory: pr + + - name: Build benchmarks + env: + NODE_OPTIONS: '--max_old_space_size=4096' + run: npm run build-benchmark + working-directory: pr + + - name: Build benchmarks + env: + NODE_OPTIONS: '--max_old_space_size=4096' + run: npm run build-benchmark + working-directory: main + + # Run benchmark on main and stores the output to a file + - name: Run benchmark on main (baseline) + run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt + + - name: Run benchmark on pr + run: BENCHMARKING=true node pr/packages/language-support/dist/benchmark/benchmark.js | tee pr-benchmarks.txt + + # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) + #- name: Run pull request benchmark + #run: cd pr && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + + - name: Compare benchmark result + uses: openpgpjs/github-action-pull-request-benchmark@v1 + with: + name: 'Time benchmark' + tool: 'benchmarkjs' + pr-benchmark-file-path: pr-benchmarks.txt + base-benchmark-file-path: main-benchmarks.txt + comment-on-alert: true + alert-threshold: '130%' + fail-on-alert: true + fail-threshold: '150%' + github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..87ec8842b --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +18.18.2 diff --git a/package.json b/package.json index c6f49c6bf..7f1d1a5aa 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "scripts": { "prepare": "husky install", "build": "turbo run build", - "build-benchmark": "turbo run build-benchmark", "release": "turbo run build && npx changeset publish", "clean": "turbo run clean", "watch": "turbo run watch", @@ -24,7 +23,12 @@ "dev-codemirror": "turbo run @neo4j-cypher/react-codemirror-playground#dev", "lint": "eslint . --ext .ts", "lint-fix": "eslint . --fix --ext .ts", - "format": "prettier --config .prettierrc.json '**/*.ts' --write" + "format": "prettier --config .prettierrc.json '**/*.ts' --write", + "benchmark": "turbo run benchmark --concurrency=1" + }, + "engineStrict": true, + "engines": { + "node": ">=18.18.2" }, "devDependencies": { "@changesets/cli": "^2.26.2", diff --git a/packages/language-support/benchmarks.txt b/packages/language-support/benchmarks.txt deleted file mode 100644 index 11a01ad09..000000000 --- a/packages/language-support/benchmarks.txt +++ /dev/null @@ -1,20 +0,0 @@ -simple - parse x 25,200 ops/sec ±0.60% (90 runs sampled) -simple - highlight x 4,821 ops/sec ±0.51% (95 runs sampled) -simple - validate syntax x 22.18 ops/sec ±3.34% (42 runs sampled) -simple - autocomplete next statement x 3,471 ops/sec ±0.52% (96 runs sampled) -movies - parse x 132 ops/sec ±0.78% (86 runs sampled) -movies - highlight x 29.42 ops/sec ±2.21% (53 runs sampled) -movies - validate syntax x 0.39 ops/sec ±1.36% (5 runs sampled) -movies - autocomplete next statement x 78.30 ops/sec ±1.20% (69 runs sampled) -tictactoe - parse x 296 ops/sec ±1.06% (90 runs sampled) -tictactoe - highlight x 162 ops/sec ±1.51% (84 runs sampled) -tictactoe - validate syntax x 2.78 ops/sec ±2.66% (11 runs sampled) -tictactoe - autocomplete next statement x 113 ops/sec ±1.61% (74 runs sampled) -autocomplete - databaseName x 10,389 ops/sec ±0.70% (94 runs sampled) -autocomplete - functionName x 7,398 ops/sec ±0.80% (95 runs sampled) -autocomplete - keywordCompletion x 5,981 ops/sec ±0.72% (95 runs sampled) -autocomplete - relationshipCompletion x 5,080 ops/sec ±0.92% (95 runs sampled) -autocomplete - labelCompletion x 5,457 ops/sec ±0.56% (98 runs sampled) -autocomplete - procedureCompletion x 35,726 ops/sec ±0.60% (98 runs sampled) -autocomplete - propertyKeyCompletion x 7,177 ops/sec ±0.67% (95 runs sampled) -autocomplete - variableCompletion x 4,922 ops/sec ±0.95% (92 runs sampled) diff --git a/packages/language-support/package.json b/packages/language-support/package.json index 7c8b29c09..d6be35848 100644 --- a/packages/language-support/package.json +++ b/packages/language-support/package.json @@ -52,7 +52,7 @@ "build-types": "tsc --emitDeclarationOnly --outDir dist/types", "build-esm": "esbuild ./src/index.ts --bundle --format=esm --sourcemap --outfile=dist/esm/index.mjs", "build-commonjs": "esbuild ./src/index.ts --bundle --format=cjs --sourcemap --outfile=dist/cjs/index.cjs", - "build-benchmark": "esbuild ./src/tests/benchmarks/benchmark.ts --bundle --outfile=dist/benchmark/benchmark.js", + "benchmark": "esbuild ./src/tests/benchmarks/benchmark.ts --bundle --outfile=dist/benchmark/benchmark.js && BENCHMARKING=true node dist/benchmark/benchmark.js", "clean": "rm -rf {dist,src/generated-parser}", "watch": "tsc -b -w", "test": "jest" diff --git a/packages/language-support/src/tests/benchmarks/benchmark-dbschemas.ts b/packages/language-support/src/tests/benchmarks/benchmark-dbschemas.ts new file mode 100644 index 000000000..acf97ebcf --- /dev/null +++ b/packages/language-support/src/tests/benchmarks/benchmark-dbschemas.ts @@ -0,0 +1,4055 @@ +export const benchmarkingMediumSizeSchema = { + functionSignatures: { + abs: { + label: 'abs', + }, + acos: { + label: 'acos', + }, + all: { + label: 'all', + }, + any: { + label: 'any', + }, + 'apoc.agg.first': { + label: 'apoc.agg.first', + }, + 'apoc.agg.graph': { + label: 'apoc.agg.graph', + }, + 'apoc.agg.last': { + label: 'apoc.agg.last', + }, + 'apoc.agg.maxItems': { + label: 'apoc.agg.maxItems', + }, + 'apoc.agg.median': { + label: 'apoc.agg.median', + }, + 'apoc.agg.minItems': { + label: 'apoc.agg.minItems', + }, + 'apoc.agg.nth': { + label: 'apoc.agg.nth', + }, + 'apoc.agg.percentiles': { + label: 'apoc.agg.percentiles', + }, + 'apoc.agg.product': { + label: 'apoc.agg.product', + }, + 'apoc.agg.slice': { + label: 'apoc.agg.slice', + }, + 'apoc.agg.statistics': { + label: 'apoc.agg.statistics', + }, + 'apoc.any.isDeleted': { + label: 'apoc.any.isDeleted', + }, + 'apoc.any.properties': { + label: 'apoc.any.properties', + }, + 'apoc.any.property': { + label: 'apoc.any.property', + }, + 'apoc.any.rebind': { + label: 'apoc.any.rebind', + }, + 'apoc.bitwise.op': { + label: 'apoc.bitwise.op', + }, + 'apoc.coll.avg': { + label: 'apoc.coll.avg', + }, + 'apoc.coll.avgDuration': { + label: 'apoc.coll.avgDuration', + }, + 'apoc.coll.combinations': { + label: 'apoc.coll.combinations', + }, + 'apoc.coll.contains': { + label: 'apoc.coll.contains', + }, + 'apoc.coll.containsAll': { + label: 'apoc.coll.containsAll', + }, + 'apoc.coll.containsAllSorted': { + label: 'apoc.coll.containsAllSorted', + }, + 'apoc.coll.containsDuplicates': { + label: 'apoc.coll.containsDuplicates', + }, + 'apoc.coll.containsSorted': { + label: 'apoc.coll.containsSorted', + }, + 'apoc.coll.different': { + label: 'apoc.coll.different', + }, + 'apoc.coll.disjunction': { + label: 'apoc.coll.disjunction', + }, + 'apoc.coll.dropDuplicateNeighbors': { + label: 'apoc.coll.dropDuplicateNeighbors', + }, + 'apoc.coll.duplicates': { + label: 'apoc.coll.duplicates', + }, + 'apoc.coll.duplicatesWithCount': { + label: 'apoc.coll.duplicatesWithCount', + }, + 'apoc.coll.fill': { + label: 'apoc.coll.fill', + }, + 'apoc.coll.flatten': { + label: 'apoc.coll.flatten', + }, + 'apoc.coll.frequencies': { + label: 'apoc.coll.frequencies', + }, + 'apoc.coll.frequenciesAsMap': { + label: 'apoc.coll.frequenciesAsMap', + }, + 'apoc.coll.indexOf': { + label: 'apoc.coll.indexOf', + }, + 'apoc.coll.insert': { + label: 'apoc.coll.insert', + }, + 'apoc.coll.insertAll': { + label: 'apoc.coll.insertAll', + }, + 'apoc.coll.intersection': { + label: 'apoc.coll.intersection', + }, + 'apoc.coll.isEqualCollection': { + label: 'apoc.coll.isEqualCollection', + }, + 'apoc.coll.max': { + label: 'apoc.coll.max', + }, + 'apoc.coll.min': { + label: 'apoc.coll.min', + }, + 'apoc.coll.occurrences': { + label: 'apoc.coll.occurrences', + }, + 'apoc.coll.pairWithOffset': { + label: 'apoc.coll.pairWithOffset', + }, + 'apoc.coll.pairs': { + label: 'apoc.coll.pairs', + }, + 'apoc.coll.pairsMin': { + label: 'apoc.coll.pairsMin', + }, + 'apoc.coll.partition': { + label: 'apoc.coll.partition', + }, + 'apoc.coll.randomItem': { + label: 'apoc.coll.randomItem', + }, + 'apoc.coll.randomItems': { + label: 'apoc.coll.randomItems', + }, + 'apoc.coll.remove': { + label: 'apoc.coll.remove', + }, + 'apoc.coll.removeAll': { + label: 'apoc.coll.removeAll', + }, + 'apoc.coll.reverse': { + label: 'apoc.coll.reverse', + }, + 'apoc.coll.runningTotal': { + label: 'apoc.coll.runningTotal', + }, + 'apoc.coll.set': { + label: 'apoc.coll.set', + }, + 'apoc.coll.shuffle': { + label: 'apoc.coll.shuffle', + }, + 'apoc.coll.sort': { + label: 'apoc.coll.sort', + }, + 'apoc.coll.sortMaps': { + label: 'apoc.coll.sortMaps', + }, + 'apoc.coll.sortMulti': { + label: 'apoc.coll.sortMulti', + }, + 'apoc.coll.sortNodes': { + label: 'apoc.coll.sortNodes', + }, + 'apoc.coll.sortText': { + label: 'apoc.coll.sortText', + }, + 'apoc.coll.stdev': { + label: 'apoc.coll.stdev', + }, + 'apoc.coll.subtract': { + label: 'apoc.coll.subtract', + }, + 'apoc.coll.sum': { + label: 'apoc.coll.sum', + }, + 'apoc.coll.sumLongs': { + label: 'apoc.coll.sumLongs', + }, + 'apoc.coll.toSet': { + label: 'apoc.coll.toSet', + }, + 'apoc.coll.union': { + label: 'apoc.coll.union', + }, + 'apoc.coll.unionAll': { + label: 'apoc.coll.unionAll', + }, + 'apoc.coll.zip': { + label: 'apoc.coll.zip', + }, + 'apoc.convert.fromJsonList': { + label: 'apoc.convert.fromJsonList', + }, + 'apoc.convert.fromJsonMap': { + label: 'apoc.convert.fromJsonMap', + }, + 'apoc.convert.getJsonProperty': { + label: 'apoc.convert.getJsonProperty', + }, + 'apoc.convert.getJsonPropertyMap': { + label: 'apoc.convert.getJsonPropertyMap', + }, + 'apoc.convert.toBoolean': { + label: 'apoc.convert.toBoolean', + }, + 'apoc.convert.toBooleanList': { + label: 'apoc.convert.toBooleanList', + }, + 'apoc.convert.toFloat': { + label: 'apoc.convert.toFloat', + }, + 'apoc.convert.toIntList': { + label: 'apoc.convert.toIntList', + }, + 'apoc.convert.toInteger': { + label: 'apoc.convert.toInteger', + }, + 'apoc.convert.toJson': { + label: 'apoc.convert.toJson', + }, + 'apoc.convert.toList': { + label: 'apoc.convert.toList', + }, + 'apoc.convert.toMap': { + label: 'apoc.convert.toMap', + }, + 'apoc.convert.toNode': { + label: 'apoc.convert.toNode', + }, + 'apoc.convert.toNodeList': { + label: 'apoc.convert.toNodeList', + }, + 'apoc.convert.toRelationship': { + label: 'apoc.convert.toRelationship', + }, + 'apoc.convert.toRelationshipList': { + label: 'apoc.convert.toRelationshipList', + }, + 'apoc.convert.toSet': { + label: 'apoc.convert.toSet', + }, + 'apoc.convert.toSortedJsonMap': { + label: 'apoc.convert.toSortedJsonMap', + }, + 'apoc.convert.toString': { + label: 'apoc.convert.toString', + }, + 'apoc.convert.toStringList': { + label: 'apoc.convert.toStringList', + }, + 'apoc.create.uuid': { + label: 'apoc.create.uuid', + }, + 'apoc.create.uuidBase64': { + label: 'apoc.create.uuidBase64', + }, + 'apoc.create.uuidBase64ToHex': { + label: 'apoc.create.uuidBase64ToHex', + }, + 'apoc.create.uuidHexToBase64': { + label: 'apoc.create.uuidHexToBase64', + }, + 'apoc.create.vNode': { + label: 'apoc.create.vNode', + }, + 'apoc.create.vRelationship': { + label: 'apoc.create.vRelationship', + }, + 'apoc.create.virtual.fromNode': { + label: 'apoc.create.virtual.fromNode', + }, + 'apoc.cypher.runFirstColumn': { + label: 'apoc.cypher.runFirstColumn', + }, + 'apoc.cypher.runFirstColumnMany': { + label: 'apoc.cypher.runFirstColumnMany', + }, + 'apoc.cypher.runFirstColumnSingle': { + label: 'apoc.cypher.runFirstColumnSingle', + }, + 'apoc.data.domain': { + label: 'apoc.data.domain', + }, + 'apoc.data.url': { + label: 'apoc.data.url', + }, + 'apoc.date.add': { + label: 'apoc.date.add', + }, + 'apoc.date.convert': { + label: 'apoc.date.convert', + }, + 'apoc.date.convertFormat': { + label: 'apoc.date.convertFormat', + }, + 'apoc.date.currentTimestamp': { + label: 'apoc.date.currentTimestamp', + }, + 'apoc.date.field': { + label: 'apoc.date.field', + }, + 'apoc.date.fields': { + label: 'apoc.date.fields', + }, + 'apoc.date.format': { + label: 'apoc.date.format', + }, + 'apoc.date.fromISO8601': { + label: 'apoc.date.fromISO8601', + }, + 'apoc.date.parse': { + label: 'apoc.date.parse', + }, + 'apoc.date.parseAsZonedDateTime': { + label: 'apoc.date.parseAsZonedDateTime', + }, + 'apoc.date.systemTimezone': { + label: 'apoc.date.systemTimezone', + }, + 'apoc.date.toISO8601': { + label: 'apoc.date.toISO8601', + }, + 'apoc.date.toYears': { + label: 'apoc.date.toYears', + }, + 'apoc.diff.nodes': { + label: 'apoc.diff.nodes', + }, + 'apoc.hashing.fingerprint': { + label: 'apoc.hashing.fingerprint', + }, + 'apoc.hashing.fingerprintGraph': { + label: 'apoc.hashing.fingerprintGraph', + }, + 'apoc.hashing.fingerprinting': { + label: 'apoc.hashing.fingerprinting', + }, + 'apoc.json.path': { + label: 'apoc.json.path', + }, + 'apoc.label.exists': { + label: 'apoc.label.exists', + }, + 'apoc.map.clean': { + label: 'apoc.map.clean', + }, + 'apoc.map.flatten': { + label: 'apoc.map.flatten', + }, + 'apoc.map.fromLists': { + label: 'apoc.map.fromLists', + }, + 'apoc.map.fromNodes': { + label: 'apoc.map.fromNodes', + }, + 'apoc.map.fromPairs': { + label: 'apoc.map.fromPairs', + }, + 'apoc.map.fromValues': { + label: 'apoc.map.fromValues', + }, + 'apoc.map.get': { + label: 'apoc.map.get', + }, + 'apoc.map.groupBy': { + label: 'apoc.map.groupBy', + }, + 'apoc.map.groupByMulti': { + label: 'apoc.map.groupByMulti', + }, + 'apoc.map.merge': { + label: 'apoc.map.merge', + }, + 'apoc.map.mergeList': { + label: 'apoc.map.mergeList', + }, + 'apoc.map.mget': { + label: 'apoc.map.mget', + }, + 'apoc.map.removeKey': { + label: 'apoc.map.removeKey', + }, + 'apoc.map.removeKeys': { + label: 'apoc.map.removeKeys', + }, + 'apoc.map.setEntry': { + label: 'apoc.map.setEntry', + }, + 'apoc.map.setKey': { + label: 'apoc.map.setKey', + }, + 'apoc.map.setLists': { + label: 'apoc.map.setLists', + }, + 'apoc.map.setPairs': { + label: 'apoc.map.setPairs', + }, + 'apoc.map.setValues': { + label: 'apoc.map.setValues', + }, + 'apoc.map.sortedProperties': { + label: 'apoc.map.sortedProperties', + }, + 'apoc.map.submap': { + label: 'apoc.map.submap', + }, + 'apoc.map.unflatten': { + label: 'apoc.map.unflatten', + }, + 'apoc.map.updateTree': { + label: 'apoc.map.updateTree', + }, + 'apoc.map.values': { + label: 'apoc.map.values', + }, + 'apoc.math.cosh': { + label: 'apoc.math.cosh', + }, + 'apoc.math.coth': { + label: 'apoc.math.coth', + }, + 'apoc.math.csch': { + label: 'apoc.math.csch', + }, + 'apoc.math.maxByte': { + label: 'apoc.math.maxByte', + }, + 'apoc.math.maxDouble': { + label: 'apoc.math.maxDouble', + }, + 'apoc.math.maxInt': { + label: 'apoc.math.maxInt', + }, + 'apoc.math.maxLong': { + label: 'apoc.math.maxLong', + }, + 'apoc.math.minByte': { + label: 'apoc.math.minByte', + }, + 'apoc.math.minDouble': { + label: 'apoc.math.minDouble', + }, + 'apoc.math.minInt': { + label: 'apoc.math.minInt', + }, + 'apoc.math.minLong': { + label: 'apoc.math.minLong', + }, + 'apoc.math.round': { + label: 'apoc.math.round', + }, + 'apoc.math.sech': { + label: 'apoc.math.sech', + }, + 'apoc.math.sigmoid': { + label: 'apoc.math.sigmoid', + }, + 'apoc.math.sigmoidPrime': { + label: 'apoc.math.sigmoidPrime', + }, + 'apoc.math.sinh': { + label: 'apoc.math.sinh', + }, + 'apoc.math.tanh': { + label: 'apoc.math.tanh', + }, + 'apoc.meta.cypher.isType': { + label: 'apoc.meta.cypher.isType', + }, + 'apoc.meta.cypher.type': { + label: 'apoc.meta.cypher.type', + }, + 'apoc.meta.cypher.types': { + label: 'apoc.meta.cypher.types', + }, + 'apoc.meta.isType': { + label: 'apoc.meta.isType', + }, + 'apoc.meta.nodes.count': { + label: 'apoc.meta.nodes.count', + }, + 'apoc.meta.type': { + label: 'apoc.meta.type', + }, + 'apoc.meta.typeName': { + label: 'apoc.meta.typeName', + }, + 'apoc.meta.types': { + label: 'apoc.meta.types', + }, + 'apoc.node.degree': { + label: 'apoc.node.degree', + }, + 'apoc.node.degree.in': { + label: 'apoc.node.degree.in', + }, + 'apoc.node.degree.out': { + label: 'apoc.node.degree.out', + }, + 'apoc.node.id': { + label: 'apoc.node.id', + }, + 'apoc.node.labels': { + label: 'apoc.node.labels', + }, + 'apoc.node.rebind': { + label: 'apoc.node.rebind', + }, + 'apoc.node.relationship.exists': { + label: 'apoc.node.relationship.exists', + }, + 'apoc.node.relationship.types': { + label: 'apoc.node.relationship.types', + }, + 'apoc.node.relationships.exist': { + label: 'apoc.node.relationships.exist', + }, + 'apoc.nodes.connected': { + label: 'apoc.nodes.connected', + }, + 'apoc.nodes.isDense': { + label: 'apoc.nodes.isDense', + }, + 'apoc.nodes.relationship.types': { + label: 'apoc.nodes.relationship.types', + }, + 'apoc.nodes.relationships.exist': { + label: 'apoc.nodes.relationships.exist', + }, + 'apoc.number.arabicToRoman': { + label: 'apoc.number.arabicToRoman', + }, + 'apoc.number.exact.add': { + label: 'apoc.number.exact.add', + }, + 'apoc.number.exact.div': { + label: 'apoc.number.exact.div', + }, + 'apoc.number.exact.mul': { + label: 'apoc.number.exact.mul', + }, + 'apoc.number.exact.sub': { + label: 'apoc.number.exact.sub', + }, + 'apoc.number.exact.toExact': { + label: 'apoc.number.exact.toExact', + }, + 'apoc.number.exact.toFloat': { + label: 'apoc.number.exact.toFloat', + }, + 'apoc.number.exact.toInteger': { + label: 'apoc.number.exact.toInteger', + }, + 'apoc.number.format': { + label: 'apoc.number.format', + }, + 'apoc.number.parseFloat': { + label: 'apoc.number.parseFloat', + }, + 'apoc.number.parseInt': { + label: 'apoc.number.parseInt', + }, + 'apoc.number.romanToArabic': { + label: 'apoc.number.romanToArabic', + }, + 'apoc.path.combine': { + label: 'apoc.path.combine', + }, + 'apoc.path.create': { + label: 'apoc.path.create', + }, + 'apoc.path.elements': { + label: 'apoc.path.elements', + }, + 'apoc.path.slice': { + label: 'apoc.path.slice', + }, + 'apoc.rel.endNode': { + label: 'apoc.rel.endNode', + }, + 'apoc.rel.id': { + label: 'apoc.rel.id', + }, + 'apoc.rel.rebind': { + label: 'apoc.rel.rebind', + }, + 'apoc.rel.startNode': { + label: 'apoc.rel.startNode', + }, + 'apoc.rel.type': { + label: 'apoc.rel.type', + }, + 'apoc.schema.node.constraintExists': { + label: 'apoc.schema.node.constraintExists', + }, + 'apoc.schema.node.indexExists': { + label: 'apoc.schema.node.indexExists', + }, + 'apoc.schema.relationship.constraintExists': { + label: 'apoc.schema.relationship.constraintExists', + }, + 'apoc.schema.relationship.indexExists': { + label: 'apoc.schema.relationship.indexExists', + }, + 'apoc.scoring.existence': { + label: 'apoc.scoring.existence', + }, + 'apoc.scoring.pareto': { + label: 'apoc.scoring.pareto', + }, + 'apoc.static.get': { + label: 'apoc.static.get', + }, + 'apoc.static.getAll': { + label: 'apoc.static.getAll', + }, + 'apoc.temporal.format': { + label: 'apoc.temporal.format', + }, + 'apoc.temporal.formatDuration': { + label: 'apoc.temporal.formatDuration', + }, + 'apoc.temporal.toZonedTemporal': { + label: 'apoc.temporal.toZonedTemporal', + }, + 'apoc.text.base64Decode': { + label: 'apoc.text.base64Decode', + }, + 'apoc.text.base64Encode': { + label: 'apoc.text.base64Encode', + }, + 'apoc.text.base64UrlDecode': { + label: 'apoc.text.base64UrlDecode', + }, + 'apoc.text.base64UrlEncode': { + label: 'apoc.text.base64UrlEncode', + }, + 'apoc.text.byteCount': { + label: 'apoc.text.byteCount', + }, + 'apoc.text.bytes': { + label: 'apoc.text.bytes', + }, + 'apoc.text.camelCase': { + label: 'apoc.text.camelCase', + }, + 'apoc.text.capitalize': { + label: 'apoc.text.capitalize', + }, + 'apoc.text.capitalizeAll': { + label: 'apoc.text.capitalizeAll', + }, + 'apoc.text.charAt': { + label: 'apoc.text.charAt', + }, + 'apoc.text.clean': { + label: 'apoc.text.clean', + }, + 'apoc.text.code': { + label: 'apoc.text.code', + }, + 'apoc.text.compareCleaned': { + label: 'apoc.text.compareCleaned', + }, + 'apoc.text.decapitalize': { + label: 'apoc.text.decapitalize', + }, + 'apoc.text.decapitalizeAll': { + label: 'apoc.text.decapitalizeAll', + }, + 'apoc.text.distance': { + label: 'apoc.text.distance', + }, + 'apoc.text.doubleMetaphone': { + label: 'apoc.text.doubleMetaphone', + }, + 'apoc.text.format': { + label: 'apoc.text.format', + }, + 'apoc.text.fuzzyMatch': { + label: 'apoc.text.fuzzyMatch', + }, + 'apoc.text.hammingDistance': { + label: 'apoc.text.hammingDistance', + }, + 'apoc.text.hexCharAt': { + label: 'apoc.text.hexCharAt', + }, + 'apoc.text.hexValue': { + label: 'apoc.text.hexValue', + }, + 'apoc.text.indexOf': { + label: 'apoc.text.indexOf', + }, + 'apoc.text.indexesOf': { + label: 'apoc.text.indexesOf', + }, + 'apoc.text.jaroWinklerDistance': { + label: 'apoc.text.jaroWinklerDistance', + }, + 'apoc.text.join': { + label: 'apoc.text.join', + }, + 'apoc.text.levenshteinDistance': { + label: 'apoc.text.levenshteinDistance', + }, + 'apoc.text.levenshteinSimilarity': { + label: 'apoc.text.levenshteinSimilarity', + }, + 'apoc.text.lpad': { + label: 'apoc.text.lpad', + }, + 'apoc.text.phonetic': { + label: 'apoc.text.phonetic', + }, + 'apoc.text.random': { + label: 'apoc.text.random', + }, + 'apoc.text.regexGroups': { + label: 'apoc.text.regexGroups', + }, + 'apoc.text.regreplace': { + label: 'apoc.text.regreplace', + }, + 'apoc.text.repeat': { + label: 'apoc.text.repeat', + }, + 'apoc.text.replace': { + label: 'apoc.text.replace', + }, + 'apoc.text.rpad': { + label: 'apoc.text.rpad', + }, + 'apoc.text.slug': { + label: 'apoc.text.slug', + }, + 'apoc.text.snakeCase': { + label: 'apoc.text.snakeCase', + }, + 'apoc.text.sorensenDiceSimilarity': { + label: 'apoc.text.sorensenDiceSimilarity', + }, + 'apoc.text.split': { + label: 'apoc.text.split', + }, + 'apoc.text.swapCase': { + label: 'apoc.text.swapCase', + }, + 'apoc.text.toCypher': { + label: 'apoc.text.toCypher', + }, + 'apoc.text.toUpperCase': { + label: 'apoc.text.toUpperCase', + }, + 'apoc.text.upperCamelCase': { + label: 'apoc.text.upperCamelCase', + }, + 'apoc.text.urldecode': { + label: 'apoc.text.urldecode', + }, + 'apoc.text.urlencode': { + label: 'apoc.text.urlencode', + }, + 'apoc.trigger.nodesByLabel': { + label: 'apoc.trigger.nodesByLabel', + }, + 'apoc.trigger.propertiesByKey': { + label: 'apoc.trigger.propertiesByKey', + }, + 'apoc.trigger.toNode': { + label: 'apoc.trigger.toNode', + }, + 'apoc.trigger.toRelationship': { + label: 'apoc.trigger.toRelationship', + }, + 'apoc.ttl.config': { + label: 'apoc.ttl.config', + }, + 'apoc.util.compress': { + label: 'apoc.util.compress', + }, + 'apoc.util.decompress': { + label: 'apoc.util.decompress', + }, + 'apoc.util.md5': { + label: 'apoc.util.md5', + }, + 'apoc.util.sha1': { + label: 'apoc.util.sha1', + }, + 'apoc.util.sha256': { + label: 'apoc.util.sha256', + }, + 'apoc.util.sha384': { + label: 'apoc.util.sha384', + }, + 'apoc.util.sha512': { + label: 'apoc.util.sha512', + }, + 'apoc.util.validatePredicate': { + label: 'apoc.util.validatePredicate', + }, + 'apoc.version': { + label: 'apoc.version', + }, + 'apoc.xml.parse': { + label: 'apoc.xml.parse', + }, + asin: { + label: 'asin', + }, + atan: { + label: 'atan', + }, + atan2: { + label: 'atan2', + }, + avg: { + label: 'avg', + }, + ceil: { + label: 'ceil', + }, + coalesce: { + label: 'coalesce', + }, + collect: { + label: 'collect', + }, + cos: { + label: 'cos', + }, + cot: { + label: 'cot', + }, + count: { + label: 'count', + }, + date: { + label: 'date', + }, + 'date.realtime': { + label: 'date.realtime', + }, + 'date.statement': { + label: 'date.statement', + }, + 'date.transaction': { + label: 'date.transaction', + }, + 'date.truncate': { + label: 'date.truncate', + }, + datetime: { + label: 'datetime', + }, + 'datetime.fromepoch': { + label: 'datetime.fromepoch', + }, + 'datetime.fromepochmillis': { + label: 'datetime.fromepochmillis', + }, + 'datetime.realtime': { + label: 'datetime.realtime', + }, + 'datetime.statement': { + label: 'datetime.statement', + }, + 'datetime.transaction': { + label: 'datetime.transaction', + }, + 'datetime.truncate': { + label: 'datetime.truncate', + }, + degrees: { + label: 'degrees', + }, + duration: { + label: 'duration', + }, + 'duration.between': { + label: 'duration.between', + }, + 'duration.inDays': { + label: 'duration.inDays', + }, + 'duration.inMonths': { + label: 'duration.inMonths', + }, + 'duration.inSeconds': { + label: 'duration.inSeconds', + }, + e: { + label: 'e', + }, + endNode: { + label: 'endNode', + }, + exists: { + label: 'exists', + }, + exp: { + label: 'exp', + }, + file: { + label: 'file', + }, + floor: { + label: 'floor', + }, + 'gds.alpha.linkprediction.adamicAdar': { + label: 'gds.alpha.linkprediction.adamicAdar', + }, + 'gds.alpha.linkprediction.commonNeighbors': { + label: 'gds.alpha.linkprediction.commonNeighbors', + }, + 'gds.alpha.linkprediction.preferentialAttachment': { + label: 'gds.alpha.linkprediction.preferentialAttachment', + }, + 'gds.alpha.linkprediction.resourceAllocation': { + label: 'gds.alpha.linkprediction.resourceAllocation', + }, + 'gds.alpha.linkprediction.sameCommunity': { + label: 'gds.alpha.linkprediction.sameCommunity', + }, + 'gds.alpha.linkprediction.totalNeighbors': { + label: 'gds.alpha.linkprediction.totalNeighbors', + }, + 'gds.alpha.ml.oneHotEncoding': { + label: 'gds.alpha.ml.oneHotEncoding', + }, + 'gds.graph.exists': { + label: 'gds.graph.exists', + }, + 'gds.graph.project': { + label: 'gds.graph.project', + }, + 'gds.similarity.cosine': { + label: 'gds.similarity.cosine', + }, + 'gds.similarity.euclidean': { + label: 'gds.similarity.euclidean', + }, + 'gds.similarity.euclideanDistance': { + label: 'gds.similarity.euclideanDistance', + }, + 'gds.similarity.jaccard': { + label: 'gds.similarity.jaccard', + }, + 'gds.similarity.overlap': { + label: 'gds.similarity.overlap', + }, + 'gds.similarity.pearson': { + label: 'gds.similarity.pearson', + }, + 'gds.util.NaN': { + label: 'gds.util.NaN', + }, + 'gds.util.asNode': { + label: 'gds.util.asNode', + }, + 'gds.util.asNodes': { + label: 'gds.util.asNodes', + }, + 'gds.util.infinity': { + label: 'gds.util.infinity', + }, + 'gds.util.isFinite': { + label: 'gds.util.isFinite', + }, + 'gds.util.isInfinite': { + label: 'gds.util.isInfinite', + }, + 'gds.util.nodeProperty': { + label: 'gds.util.nodeProperty', + }, + 'gds.version': { + label: 'gds.version', + }, + haversin: { + label: 'haversin', + }, + head: { + label: 'head', + }, + id: { + label: 'id', + }, + isEmpty: { + label: 'isEmpty', + }, + keys: { + label: 'keys', + }, + labels: { + label: 'labels', + }, + last: { + label: 'last', + }, + left: { + label: 'left', + }, + length: { + label: 'length', + }, + linenumber: { + label: 'linenumber', + }, + localdatetime: { + label: 'localdatetime', + }, + 'localdatetime.realtime': { + label: 'localdatetime.realtime', + }, + 'localdatetime.statement': { + label: 'localdatetime.statement', + }, + 'localdatetime.transaction': { + label: 'localdatetime.transaction', + }, + 'localdatetime.truncate': { + label: 'localdatetime.truncate', + }, + localtime: { + label: 'localtime', + }, + 'localtime.realtime': { + label: 'localtime.realtime', + }, + 'localtime.statement': { + label: 'localtime.statement', + }, + 'localtime.transaction': { + label: 'localtime.transaction', + }, + 'localtime.truncate': { + label: 'localtime.truncate', + }, + log: { + label: 'log', + }, + log10: { + label: 'log10', + }, + ltrim: { + label: 'ltrim', + }, + max: { + label: 'max', + }, + min: { + label: 'min', + }, + nodes: { + label: 'nodes', + }, + none: { + label: 'none', + }, + percentileCont: { + label: 'percentileCont', + }, + percentileDisc: { + label: 'percentileDisc', + }, + pi: { + label: 'pi', + }, + point: { + label: 'point', + }, + 'point.distance': { + label: 'point.distance', + }, + 'point.withinBBox': { + label: 'point.withinBBox', + }, + properties: { + label: 'properties', + }, + radians: { + label: 'radians', + }, + rand: { + label: 'rand', + }, + randomUUID: { + label: 'randomUUID', + }, + range: { + label: 'range', + }, + reduce: { + label: 'reduce', + }, + relationships: { + label: 'relationships', + }, + replace: { + label: 'replace', + }, + reverse: { + label: 'reverse', + }, + right: { + label: 'right', + }, + round: { + label: 'round', + }, + rtrim: { + label: 'rtrim', + }, + sign: { + label: 'sign', + }, + sin: { + label: 'sin', + }, + single: { + label: 'single', + }, + size: { + label: 'size', + }, + split: { + label: 'split', + }, + sqrt: { + label: 'sqrt', + }, + startNode: { + label: 'startNode', + }, + stdev: { + label: 'stdev', + }, + stdevp: { + label: 'stdevp', + }, + substring: { + label: 'substring', + }, + sum: { + label: 'sum', + }, + tail: { + label: 'tail', + }, + tan: { + label: 'tan', + }, + time: { + label: 'time', + }, + 'time.realtime': { + label: 'time.realtime', + }, + 'time.statement': { + label: 'time.statement', + }, + 'time.transaction': { + label: 'time.transaction', + }, + 'time.truncate': { + label: 'time.truncate', + }, + toBoolean: { + label: 'toBoolean', + }, + toBooleanList: { + label: 'toBooleanList', + }, + toBooleanOrNull: { + label: 'toBooleanOrNull', + }, + toFloat: { + label: 'toFloat', + }, + toFloatList: { + label: 'toFloatList', + }, + toFloatOrNull: { + label: 'toFloatOrNull', + }, + toInteger: { + label: 'toInteger', + }, + toIntegerList: { + label: 'toIntegerList', + }, + toIntegerOrNull: { + label: 'toIntegerOrNull', + }, + toLower: { + label: 'toLower', + }, + toStringList: { + label: 'toStringList', + }, + toStringOrNull: { + label: 'toStringOrNull', + }, + toUpper: { + label: 'toUpper', + }, + trim: { + label: 'trim', + }, + type: { + label: 'type', + }, + }, + procedureSignatures: { + 'apoc.algo.aStar': { + label: 'apoc.algo.aStar', + }, + 'apoc.algo.aStarConfig': { + label: 'apoc.algo.aStarConfig', + }, + 'apoc.algo.aStarWithPoint': { + label: 'apoc.algo.aStarWithPoint', + }, + 'apoc.algo.allSimplePaths': { + label: 'apoc.algo.allSimplePaths', + }, + 'apoc.algo.cover': { + label: 'apoc.algo.cover', + }, + 'apoc.algo.dijkstra': { + label: 'apoc.algo.dijkstra', + }, + 'apoc.algo.dijkstraWithDefaultWeight': { + label: 'apoc.algo.dijkstraWithDefaultWeight', + }, + 'apoc.algo.travellingSalesman': { + label: 'apoc.algo.travellingSalesman', + }, + 'apoc.atomic.add': { + label: 'apoc.atomic.add', + }, + 'apoc.atomic.concat': { + label: 'apoc.atomic.concat', + }, + 'apoc.atomic.insert': { + label: 'apoc.atomic.insert', + }, + 'apoc.atomic.remove': { + label: 'apoc.atomic.remove', + }, + 'apoc.atomic.subtract': { + label: 'apoc.atomic.subtract', + }, + 'apoc.atomic.update': { + label: 'apoc.atomic.update', + }, + 'apoc.bolt.execute': { + label: 'apoc.bolt.execute', + }, + 'apoc.bolt.load': { + label: 'apoc.bolt.load', + }, + 'apoc.bolt.load.fromLocal': { + label: 'apoc.bolt.load.fromLocal', + }, + 'apoc.case': { + label: 'apoc.case', + }, + 'apoc.cluster.graph': { + label: 'apoc.cluster.graph', + }, + 'apoc.coll.elements': { + label: 'apoc.coll.elements', + }, + 'apoc.coll.pairWithOffset': { + label: 'apoc.coll.pairWithOffset', + }, + 'apoc.coll.partition': { + label: 'apoc.coll.partition', + }, + 'apoc.coll.split': { + label: 'apoc.coll.split', + }, + 'apoc.coll.zipToRows': { + label: 'apoc.coll.zipToRows', + }, + 'apoc.config.list': { + label: 'apoc.config.list', + }, + 'apoc.config.map': { + label: 'apoc.config.map', + }, + 'apoc.convert.setJsonProperty': { + label: 'apoc.convert.setJsonProperty', + }, + 'apoc.convert.toTree': { + label: 'apoc.convert.toTree', + }, + 'apoc.couchbase.append': { + label: 'apoc.couchbase.append', + }, + 'apoc.couchbase.exists': { + label: 'apoc.couchbase.exists', + }, + 'apoc.couchbase.get': { + label: 'apoc.couchbase.get', + }, + 'apoc.couchbase.insert': { + label: 'apoc.couchbase.insert', + }, + 'apoc.couchbase.namedParamsQuery': { + label: 'apoc.couchbase.namedParamsQuery', + }, + 'apoc.couchbase.posParamsQuery': { + label: 'apoc.couchbase.posParamsQuery', + }, + 'apoc.couchbase.prepend': { + label: 'apoc.couchbase.prepend', + }, + 'apoc.couchbase.query': { + label: 'apoc.couchbase.query', + }, + 'apoc.couchbase.remove': { + label: 'apoc.couchbase.remove', + }, + 'apoc.couchbase.replace': { + label: 'apoc.couchbase.replace', + }, + 'apoc.couchbase.upsert': { + label: 'apoc.couchbase.upsert', + }, + 'apoc.create.addLabels': { + label: 'apoc.create.addLabels', + }, + 'apoc.create.clonePathToVirtual': { + label: 'apoc.create.clonePathToVirtual', + }, + 'apoc.create.clonePathsToVirtual': { + label: 'apoc.create.clonePathsToVirtual', + }, + 'apoc.create.node': { + label: 'apoc.create.node', + }, + 'apoc.create.nodes': { + label: 'apoc.create.nodes', + }, + 'apoc.create.relationship': { + label: 'apoc.create.relationship', + }, + 'apoc.create.removeLabels': { + label: 'apoc.create.removeLabels', + }, + 'apoc.create.removeProperties': { + label: 'apoc.create.removeProperties', + }, + 'apoc.create.removeRelProperties': { + label: 'apoc.create.removeRelProperties', + }, + 'apoc.create.setLabels': { + label: 'apoc.create.setLabels', + }, + 'apoc.create.setProperties': { + label: 'apoc.create.setProperties', + }, + 'apoc.create.setProperty': { + label: 'apoc.create.setProperty', + }, + 'apoc.create.setRelProperties': { + label: 'apoc.create.setRelProperties', + }, + 'apoc.create.setRelProperty': { + label: 'apoc.create.setRelProperty', + }, + 'apoc.create.uuids': { + label: 'apoc.create.uuids', + }, + 'apoc.create.vNode': { + label: 'apoc.create.vNode', + }, + 'apoc.create.vNodes': { + label: 'apoc.create.vNodes', + }, + 'apoc.create.vPattern': { + label: 'apoc.create.vPattern', + }, + 'apoc.create.vPatternFull': { + label: 'apoc.create.vPatternFull', + }, + 'apoc.create.vRelationship': { + label: 'apoc.create.vRelationship', + }, + 'apoc.create.virtualPath': { + label: 'apoc.create.virtualPath', + }, + 'apoc.custom.asFunction': { + label: 'apoc.custom.asFunction', + }, + 'apoc.custom.asProcedure': { + label: 'apoc.custom.asProcedure', + }, + 'apoc.custom.declareFunction': { + label: 'apoc.custom.declareFunction', + }, + 'apoc.custom.declareProcedure': { + label: 'apoc.custom.declareProcedure', + }, + 'apoc.custom.list': { + label: 'apoc.custom.list', + }, + 'apoc.custom.removeFunction': { + label: 'apoc.custom.removeFunction', + }, + 'apoc.custom.removeProcedure': { + label: 'apoc.custom.removeProcedure', + }, + 'apoc.cypher.doIt': { + label: 'apoc.cypher.doIt', + }, + 'apoc.cypher.mapParallel': { + label: 'apoc.cypher.mapParallel', + }, + 'apoc.cypher.mapParallel2': { + label: 'apoc.cypher.mapParallel2', + }, + 'apoc.cypher.parallel': { + label: 'apoc.cypher.parallel', + }, + 'apoc.cypher.parallel2': { + label: 'apoc.cypher.parallel2', + }, + 'apoc.cypher.run': { + label: 'apoc.cypher.run', + }, + 'apoc.cypher.runFile': { + label: 'apoc.cypher.runFile', + }, + 'apoc.cypher.runFiles': { + label: 'apoc.cypher.runFiles', + }, + 'apoc.cypher.runMany': { + label: 'apoc.cypher.runMany', + }, + 'apoc.cypher.runManyReadOnly': { + label: 'apoc.cypher.runManyReadOnly', + }, + 'apoc.cypher.runSchema': { + label: 'apoc.cypher.runSchema', + }, + 'apoc.cypher.runSchemaFile': { + label: 'apoc.cypher.runSchemaFile', + }, + 'apoc.cypher.runSchemaFiles': { + label: 'apoc.cypher.runSchemaFiles', + }, + 'apoc.cypher.runTimeboxed': { + label: 'apoc.cypher.runTimeboxed', + }, + 'apoc.cypher.runWrite': { + label: 'apoc.cypher.runWrite', + }, + 'apoc.date.expire': { + label: 'apoc.date.expire', + }, + 'apoc.date.expireIn': { + label: 'apoc.date.expireIn', + }, + 'apoc.diff.graphs': { + label: 'apoc.diff.graphs', + }, + 'apoc.do.case': { + label: 'apoc.do.case', + }, + 'apoc.do.when': { + label: 'apoc.do.when', + }, + 'apoc.dv.catalog.add': { + label: 'apoc.dv.catalog.add', + }, + 'apoc.dv.catalog.list': { + label: 'apoc.dv.catalog.list', + }, + 'apoc.dv.catalog.remove': { + label: 'apoc.dv.catalog.remove', + }, + 'apoc.dv.query': { + label: 'apoc.dv.query', + }, + 'apoc.dv.queryAndLink': { + label: 'apoc.dv.queryAndLink', + }, + 'apoc.es.get': { + label: 'apoc.es.get', + }, + 'apoc.es.getRaw': { + label: 'apoc.es.getRaw', + }, + 'apoc.es.post': { + label: 'apoc.es.post', + }, + 'apoc.es.postRaw': { + label: 'apoc.es.postRaw', + }, + 'apoc.es.put': { + label: 'apoc.es.put', + }, + 'apoc.es.query': { + label: 'apoc.es.query', + }, + 'apoc.es.stats': { + label: 'apoc.es.stats', + }, + 'apoc.example.movies': { + label: 'apoc.example.movies', + }, + 'apoc.export.arrow.all': { + label: 'apoc.export.arrow.all', + }, + 'apoc.export.arrow.graph': { + label: 'apoc.export.arrow.graph', + }, + 'apoc.export.arrow.query': { + label: 'apoc.export.arrow.query', + }, + 'apoc.export.arrow.stream.all': { + label: 'apoc.export.arrow.stream.all', + }, + 'apoc.export.arrow.stream.graph': { + label: 'apoc.export.arrow.stream.graph', + }, + 'apoc.export.arrow.stream.query': { + label: 'apoc.export.arrow.stream.query', + }, + 'apoc.export.csv.all': { + label: 'apoc.export.csv.all', + }, + 'apoc.export.csv.data': { + label: 'apoc.export.csv.data', + }, + 'apoc.export.csv.graph': { + label: 'apoc.export.csv.graph', + }, + 'apoc.export.csv.query': { + label: 'apoc.export.csv.query', + }, + 'apoc.export.cypher.all': { + label: 'apoc.export.cypher.all', + }, + 'apoc.export.cypher.data': { + label: 'apoc.export.cypher.data', + }, + 'apoc.export.cypher.graph': { + label: 'apoc.export.cypher.graph', + }, + 'apoc.export.cypher.query': { + label: 'apoc.export.cypher.query', + }, + 'apoc.export.cypher.schema': { + label: 'apoc.export.cypher.schema', + }, + 'apoc.export.cypherAll': { + label: 'apoc.export.cypherAll', + }, + 'apoc.export.cypherData': { + label: 'apoc.export.cypherData', + }, + 'apoc.export.cypherGraph': { + label: 'apoc.export.cypherGraph', + }, + 'apoc.export.cypherQuery': { + label: 'apoc.export.cypherQuery', + }, + 'apoc.export.graphml.all': { + label: 'apoc.export.graphml.all', + }, + 'apoc.export.graphml.data': { + label: 'apoc.export.graphml.data', + }, + 'apoc.export.graphml.graph': { + label: 'apoc.export.graphml.graph', + }, + 'apoc.export.graphml.query': { + label: 'apoc.export.graphml.query', + }, + 'apoc.export.json.all': { + label: 'apoc.export.json.all', + }, + 'apoc.export.json.data': { + label: 'apoc.export.json.data', + }, + 'apoc.export.json.graph': { + label: 'apoc.export.json.graph', + }, + 'apoc.export.json.query': { + label: 'apoc.export.json.query', + }, + 'apoc.generate.ba': { + label: 'apoc.generate.ba', + }, + 'apoc.generate.complete': { + label: 'apoc.generate.complete', + }, + 'apoc.generate.er': { + label: 'apoc.generate.er', + }, + 'apoc.generate.simple': { + label: 'apoc.generate.simple', + }, + 'apoc.generate.ws': { + label: 'apoc.generate.ws', + }, + 'apoc.gephi.add': { + label: 'apoc.gephi.add', + }, + 'apoc.get.nodes': { + label: 'apoc.get.nodes', + }, + 'apoc.get.rels': { + label: 'apoc.get.rels', + }, + 'apoc.graph.from': { + label: 'apoc.graph.from', + }, + 'apoc.graph.fromCypher': { + label: 'apoc.graph.fromCypher', + }, + 'apoc.graph.fromDB': { + label: 'apoc.graph.fromDB', + }, + 'apoc.graph.fromData': { + label: 'apoc.graph.fromData', + }, + 'apoc.graph.fromDocument': { + label: 'apoc.graph.fromDocument', + }, + 'apoc.graph.fromPath': { + label: 'apoc.graph.fromPath', + }, + 'apoc.graph.fromPaths': { + label: 'apoc.graph.fromPaths', + }, + 'apoc.graph.validateDocument': { + label: 'apoc.graph.validateDocument', + }, + 'apoc.help': { + label: 'apoc.help', + }, + 'apoc.import.csv': { + label: 'apoc.import.csv', + }, + 'apoc.import.graphml': { + label: 'apoc.import.graphml', + }, + 'apoc.import.json': { + label: 'apoc.import.json', + }, + 'apoc.import.xml': { + label: 'apoc.import.xml', + }, + 'apoc.json.validate': { + label: 'apoc.json.validate', + }, + 'apoc.load.arrow': { + label: 'apoc.load.arrow', + }, + 'apoc.load.arrow.stream': { + label: 'apoc.load.arrow.stream', + }, + 'apoc.load.csv': { + label: 'apoc.load.csv', + }, + 'apoc.load.csvParams': { + label: 'apoc.load.csvParams', + }, + 'apoc.load.directory': { + label: 'apoc.load.directory', + }, + 'apoc.load.directory.async.add': { + label: 'apoc.load.directory.async.add', + }, + 'apoc.load.directory.async.list': { + label: 'apoc.load.directory.async.list', + }, + 'apoc.load.directory.async.remove': { + label: 'apoc.load.directory.async.remove', + }, + 'apoc.load.directory.async.removeAll': { + label: 'apoc.load.directory.async.removeAll', + }, + 'apoc.load.driver': { + label: 'apoc.load.driver', + }, + 'apoc.load.html': { + label: 'apoc.load.html', + }, + 'apoc.load.htmlPlainText': { + label: 'apoc.load.htmlPlainText', + }, + 'apoc.load.jdbc': { + label: 'apoc.load.jdbc', + }, + 'apoc.load.jdbcParams': { + label: 'apoc.load.jdbcParams', + }, + 'apoc.load.jdbcUpdate': { + label: 'apoc.load.jdbcUpdate', + }, + 'apoc.load.json': { + label: 'apoc.load.json', + }, + 'apoc.load.jsonArray': { + label: 'apoc.load.jsonArray', + }, + 'apoc.load.jsonParams': { + label: 'apoc.load.jsonParams', + }, + 'apoc.load.ldap': { + label: 'apoc.load.ldap', + }, + 'apoc.load.xml': { + label: 'apoc.load.xml', + }, + 'apoc.lock.all': { + label: 'apoc.lock.all', + }, + 'apoc.lock.nodes': { + label: 'apoc.lock.nodes', + }, + 'apoc.lock.read.nodes': { + label: 'apoc.lock.read.nodes', + }, + 'apoc.lock.read.rels': { + label: 'apoc.lock.read.rels', + }, + 'apoc.lock.rels': { + label: 'apoc.lock.rels', + }, + 'apoc.log.debug': { + label: 'apoc.log.debug', + }, + 'apoc.log.error': { + label: 'apoc.log.error', + }, + 'apoc.log.info': { + label: 'apoc.log.info', + }, + 'apoc.log.stream': { + label: 'apoc.log.stream', + }, + 'apoc.log.warn': { + label: 'apoc.log.warn', + }, + 'apoc.math.regr': { + label: 'apoc.math.regr', + }, + 'apoc.merge.node': { + label: 'apoc.merge.node', + }, + 'apoc.merge.node.eager': { + label: 'apoc.merge.node.eager', + }, + 'apoc.merge.nodeWithStats': { + label: 'apoc.merge.nodeWithStats', + }, + 'apoc.merge.nodeWithStats.eager': { + label: 'apoc.merge.nodeWithStats.eager', + }, + 'apoc.merge.relationship': { + label: 'apoc.merge.relationship', + }, + 'apoc.merge.relationship.eager': { + label: 'apoc.merge.relationship.eager', + }, + 'apoc.merge.relationshipWithStats': { + label: 'apoc.merge.relationshipWithStats', + }, + 'apoc.merge.relationshipWithStats.eager': { + label: 'apoc.merge.relationshipWithStats.eager', + }, + 'apoc.meta.data': { + label: 'apoc.meta.data', + }, + 'apoc.meta.data.of': { + label: 'apoc.meta.data.of', + }, + 'apoc.meta.graph': { + label: 'apoc.meta.graph', + }, + 'apoc.meta.graph.of': { + label: 'apoc.meta.graph.of', + }, + 'apoc.meta.graphSample': { + label: 'apoc.meta.graphSample', + }, + 'apoc.meta.nodeTypeProperties': { + label: 'apoc.meta.nodeTypeProperties', + }, + 'apoc.meta.relTypeProperties': { + label: 'apoc.meta.relTypeProperties', + }, + 'apoc.meta.schema': { + label: 'apoc.meta.schema', + }, + 'apoc.meta.stats': { + label: 'apoc.meta.stats', + }, + 'apoc.meta.subGraph': { + label: 'apoc.meta.subGraph', + }, + 'apoc.metrics.get': { + label: 'apoc.metrics.get', + }, + 'apoc.metrics.list': { + label: 'apoc.metrics.list', + }, + 'apoc.metrics.storage': { + label: 'apoc.metrics.storage', + }, + 'apoc.model.jdbc': { + label: 'apoc.model.jdbc', + }, + 'apoc.mongo.aggregate': { + label: 'apoc.mongo.aggregate', + }, + 'apoc.mongo.count': { + label: 'apoc.mongo.count', + }, + 'apoc.mongo.delete': { + label: 'apoc.mongo.delete', + }, + 'apoc.mongo.find': { + label: 'apoc.mongo.find', + }, + 'apoc.mongo.insert': { + label: 'apoc.mongo.insert', + }, + 'apoc.mongo.update': { + label: 'apoc.mongo.update', + }, + 'apoc.mongodb.count': { + label: 'apoc.mongodb.count', + }, + 'apoc.mongodb.delete': { + label: 'apoc.mongodb.delete', + }, + 'apoc.mongodb.find': { + label: 'apoc.mongodb.find', + }, + 'apoc.mongodb.first': { + label: 'apoc.mongodb.first', + }, + 'apoc.mongodb.get': { + label: 'apoc.mongodb.get', + }, + 'apoc.mongodb.get.byObjectId': { + label: 'apoc.mongodb.get.byObjectId', + }, + 'apoc.mongodb.insert': { + label: 'apoc.mongodb.insert', + }, + 'apoc.mongodb.update': { + label: 'apoc.mongodb.update', + }, + 'apoc.monitor.ids': { + label: 'apoc.monitor.ids', + }, + 'apoc.monitor.kernel': { + label: 'apoc.monitor.kernel', + }, + 'apoc.monitor.store': { + label: 'apoc.monitor.store', + }, + 'apoc.monitor.tx': { + label: 'apoc.monitor.tx', + }, + 'apoc.neighbors.athop': { + label: 'apoc.neighbors.athop', + }, + 'apoc.neighbors.athop.count': { + label: 'apoc.neighbors.athop.count', + }, + 'apoc.neighbors.byhop': { + label: 'apoc.neighbors.byhop', + }, + 'apoc.neighbors.byhop.count': { + label: 'apoc.neighbors.byhop.count', + }, + 'apoc.neighbors.tohop': { + label: 'apoc.neighbors.tohop', + }, + 'apoc.neighbors.tohop.count': { + label: 'apoc.neighbors.tohop.count', + }, + 'apoc.nlp.azure.entities.graph': { + label: 'apoc.nlp.azure.entities.graph', + }, + 'apoc.nlp.azure.entities.stream': { + label: 'apoc.nlp.azure.entities.stream', + }, + 'apoc.nlp.azure.keyPhrases.graph': { + label: 'apoc.nlp.azure.keyPhrases.graph', + }, + 'apoc.nlp.azure.keyPhrases.stream': { + label: 'apoc.nlp.azure.keyPhrases.stream', + }, + 'apoc.nlp.azure.sentiment.graph': { + label: 'apoc.nlp.azure.sentiment.graph', + }, + 'apoc.nlp.azure.sentiment.stream': { + label: 'apoc.nlp.azure.sentiment.stream', + }, + 'apoc.nodes.collapse': { + label: 'apoc.nodes.collapse', + }, + 'apoc.nodes.cycles': { + label: 'apoc.nodes.cycles', + }, + 'apoc.nodes.delete': { + label: 'apoc.nodes.delete', + }, + 'apoc.nodes.get': { + label: 'apoc.nodes.get', + }, + 'apoc.nodes.group': { + label: 'apoc.nodes.group', + }, + 'apoc.nodes.link': { + label: 'apoc.nodes.link', + }, + 'apoc.nodes.rels': { + label: 'apoc.nodes.rels', + }, + 'apoc.path.expand': { + label: 'apoc.path.expand', + }, + 'apoc.path.expandConfig': { + label: 'apoc.path.expandConfig', + }, + 'apoc.path.spanningTree': { + label: 'apoc.path.spanningTree', + }, + 'apoc.path.subgraphAll': { + label: 'apoc.path.subgraphAll', + }, + 'apoc.path.subgraphNodes': { + label: 'apoc.path.subgraphNodes', + }, + 'apoc.periodic.cancel': { + label: 'apoc.periodic.cancel', + }, + 'apoc.periodic.commit': { + label: 'apoc.periodic.commit', + }, + 'apoc.periodic.countdown': { + label: 'apoc.periodic.countdown', + }, + 'apoc.periodic.iterate': { + label: 'apoc.periodic.iterate', + }, + 'apoc.periodic.list': { + label: 'apoc.periodic.list', + }, + 'apoc.periodic.repeat': { + label: 'apoc.periodic.repeat', + }, + 'apoc.periodic.rock_n_roll': { + label: 'apoc.periodic.rock_n_roll', + }, + 'apoc.periodic.rock_n_roll_while': { + label: 'apoc.periodic.rock_n_roll_while', + }, + 'apoc.periodic.submit': { + label: 'apoc.periodic.submit', + }, + 'apoc.periodic.truncate': { + label: 'apoc.periodic.truncate', + }, + 'apoc.redis.append': { + label: 'apoc.redis.append', + }, + 'apoc.redis.configGet': { + label: 'apoc.redis.configGet', + }, + 'apoc.redis.configSet': { + label: 'apoc.redis.configSet', + }, + 'apoc.redis.copy': { + label: 'apoc.redis.copy', + }, + 'apoc.redis.eval': { + label: 'apoc.redis.eval', + }, + 'apoc.redis.exists': { + label: 'apoc.redis.exists', + }, + 'apoc.redis.get': { + label: 'apoc.redis.get', + }, + 'apoc.redis.getSet': { + label: 'apoc.redis.getSet', + }, + 'apoc.redis.hdel': { + label: 'apoc.redis.hdel', + }, + 'apoc.redis.hexists': { + label: 'apoc.redis.hexists', + }, + 'apoc.redis.hget': { + label: 'apoc.redis.hget', + }, + 'apoc.redis.hgetall': { + label: 'apoc.redis.hgetall', + }, + 'apoc.redis.hincrby': { + label: 'apoc.redis.hincrby', + }, + 'apoc.redis.hset': { + label: 'apoc.redis.hset', + }, + 'apoc.redis.incrby': { + label: 'apoc.redis.incrby', + }, + 'apoc.redis.info': { + label: 'apoc.redis.info', + }, + 'apoc.redis.lrange': { + label: 'apoc.redis.lrange', + }, + 'apoc.redis.persist': { + label: 'apoc.redis.persist', + }, + 'apoc.redis.pexpire': { + label: 'apoc.redis.pexpire', + }, + 'apoc.redis.pop': { + label: 'apoc.redis.pop', + }, + 'apoc.redis.pttl': { + label: 'apoc.redis.pttl', + }, + 'apoc.redis.push': { + label: 'apoc.redis.push', + }, + 'apoc.redis.sadd': { + label: 'apoc.redis.sadd', + }, + 'apoc.redis.scard': { + label: 'apoc.redis.scard', + }, + 'apoc.redis.smembers': { + label: 'apoc.redis.smembers', + }, + 'apoc.redis.spop': { + label: 'apoc.redis.spop', + }, + 'apoc.redis.sunion': { + label: 'apoc.redis.sunion', + }, + 'apoc.redis.zadd': { + label: 'apoc.redis.zadd', + }, + 'apoc.redis.zcard': { + label: 'apoc.redis.zcard', + }, + 'apoc.redis.zrangebyscore': { + label: 'apoc.redis.zrangebyscore', + }, + 'apoc.redis.zrem': { + label: 'apoc.redis.zrem', + }, + 'apoc.refactor.categorize': { + label: 'apoc.refactor.categorize', + }, + 'apoc.refactor.cloneNodes': { + label: 'apoc.refactor.cloneNodes', + }, + 'apoc.refactor.cloneNodesWithRelationships': { + label: 'apoc.refactor.cloneNodesWithRelationships', + }, + 'apoc.refactor.cloneSubgraph': { + label: 'apoc.refactor.cloneSubgraph', + }, + 'apoc.refactor.cloneSubgraphFromPaths': { + label: 'apoc.refactor.cloneSubgraphFromPaths', + }, + 'apoc.refactor.collapseNode': { + label: 'apoc.refactor.collapseNode', + }, + 'apoc.refactor.deleteAndReconnect': { + label: 'apoc.refactor.deleteAndReconnect', + }, + 'apoc.refactor.extractNode': { + label: 'apoc.refactor.extractNode', + }, + 'apoc.refactor.from': { + label: 'apoc.refactor.from', + }, + 'apoc.refactor.invert': { + label: 'apoc.refactor.invert', + }, + 'apoc.refactor.mergeNodes': { + label: 'apoc.refactor.mergeNodes', + }, + 'apoc.refactor.mergeRelationships': { + label: 'apoc.refactor.mergeRelationships', + }, + 'apoc.refactor.normalizeAsBoolean': { + label: 'apoc.refactor.normalizeAsBoolean', + }, + 'apoc.refactor.rename.label': { + label: 'apoc.refactor.rename.label', + }, + 'apoc.refactor.rename.nodeProperty': { + label: 'apoc.refactor.rename.nodeProperty', + }, + 'apoc.refactor.rename.type': { + label: 'apoc.refactor.rename.type', + }, + 'apoc.refactor.rename.typeProperty': { + label: 'apoc.refactor.rename.typeProperty', + }, + 'apoc.refactor.setType': { + label: 'apoc.refactor.setType', + }, + 'apoc.refactor.to': { + label: 'apoc.refactor.to', + }, + 'apoc.schema.assert': { + label: 'apoc.schema.assert', + }, + 'apoc.schema.nodes': { + label: 'apoc.schema.nodes', + }, + 'apoc.schema.properties.distinct': { + label: 'apoc.schema.properties.distinct', + }, + 'apoc.schema.properties.distinctCount': { + label: 'apoc.schema.properties.distinctCount', + }, + 'apoc.schema.relationships': { + label: 'apoc.schema.relationships', + }, + 'apoc.search.multiSearchReduced': { + label: 'apoc.search.multiSearchReduced', + }, + 'apoc.search.node': { + label: 'apoc.search.node', + }, + 'apoc.search.nodeAll': { + label: 'apoc.search.nodeAll', + }, + 'apoc.search.nodeAllReduced': { + label: 'apoc.search.nodeAllReduced', + }, + 'apoc.search.nodeReduced': { + label: 'apoc.search.nodeReduced', + }, + 'apoc.spatial.geocode': { + label: 'apoc.spatial.geocode', + }, + 'apoc.spatial.geocodeOnce': { + label: 'apoc.spatial.geocodeOnce', + }, + 'apoc.spatial.reverseGeocode': { + label: 'apoc.spatial.reverseGeocode', + }, + 'apoc.spatial.sortByDistance': { + label: 'apoc.spatial.sortByDistance', + }, + 'apoc.static.get': { + label: 'apoc.static.get', + }, + 'apoc.static.list': { + label: 'apoc.static.list', + }, + 'apoc.static.set': { + label: 'apoc.static.set', + }, + 'apoc.stats.degrees': { + label: 'apoc.stats.degrees', + }, + 'apoc.systemdb.execute': { + label: 'apoc.systemdb.execute', + }, + 'apoc.systemdb.export.metadata': { + label: 'apoc.systemdb.export.metadata', + }, + 'apoc.systemdb.graph': { + label: 'apoc.systemdb.graph', + }, + 'apoc.text.doubleMetaphone': { + label: 'apoc.text.doubleMetaphone', + }, + 'apoc.text.phonetic': { + label: 'apoc.text.phonetic', + }, + 'apoc.text.phoneticDelta': { + label: 'apoc.text.phoneticDelta', + }, + 'apoc.trigger.add': { + label: 'apoc.trigger.add', + }, + 'apoc.trigger.drop': { + label: 'apoc.trigger.drop', + }, + 'apoc.trigger.dropAll': { + label: 'apoc.trigger.dropAll', + }, + 'apoc.trigger.install': { + label: 'apoc.trigger.install', + }, + 'apoc.trigger.list': { + label: 'apoc.trigger.list', + }, + 'apoc.trigger.pause': { + label: 'apoc.trigger.pause', + }, + 'apoc.trigger.remove': { + label: 'apoc.trigger.remove', + }, + 'apoc.trigger.removeAll': { + label: 'apoc.trigger.removeAll', + }, + 'apoc.trigger.resume': { + label: 'apoc.trigger.resume', + }, + 'apoc.trigger.show': { + label: 'apoc.trigger.show', + }, + 'apoc.trigger.start': { + label: 'apoc.trigger.start', + }, + 'apoc.trigger.stop': { + label: 'apoc.trigger.stop', + }, + 'apoc.ttl.expire': { + label: 'apoc.ttl.expire', + }, + 'apoc.ttl.expireIn': { + label: 'apoc.ttl.expireIn', + }, + 'apoc.util.sleep': { + label: 'apoc.util.sleep', + }, + 'apoc.util.validate': { + label: 'apoc.util.validate', + }, + 'apoc.uuid.drop': { + label: 'apoc.uuid.drop', + }, + 'apoc.uuid.dropAll': { + label: 'apoc.uuid.dropAll', + }, + 'apoc.uuid.install': { + label: 'apoc.uuid.install', + }, + 'apoc.uuid.list': { + label: 'apoc.uuid.list', + }, + 'apoc.uuid.remove': { + label: 'apoc.uuid.remove', + }, + 'apoc.uuid.removeAll': { + label: 'apoc.uuid.removeAll', + }, + 'apoc.uuid.setup': { + label: 'apoc.uuid.setup', + }, + 'apoc.uuid.show': { + label: 'apoc.uuid.show', + }, + 'apoc.warmup.run': { + label: 'apoc.warmup.run', + }, + 'apoc.when': { + label: 'apoc.when', + }, + 'apoc.xml.import': { + label: 'apoc.xml.import', + }, + 'db.awaitIndex': { + label: 'db.awaitIndex', + }, + 'db.awaitIndexes': { + label: 'db.awaitIndexes', + }, + 'db.checkpoint': { + label: 'db.checkpoint', + }, + 'db.clearQueryCaches': { + label: 'db.clearQueryCaches', + }, + 'db.constraints': { + label: 'db.constraints', + }, + 'db.createIndex': { + label: 'db.createIndex', + }, + 'db.createLabel': { + label: 'db.createLabel', + }, + 'db.createNodeKey': { + label: 'db.createNodeKey', + }, + 'db.createProperty': { + label: 'db.createProperty', + }, + 'db.createRelationshipType': { + label: 'db.createRelationshipType', + }, + 'db.createUniquePropertyConstraint': { + label: 'db.createUniquePropertyConstraint', + }, + 'db.index.fulltext.awaitEventuallyConsistentIndexRefresh': { + label: 'db.index.fulltext.awaitEventuallyConsistentIndexRefresh', + }, + 'db.index.fulltext.createNodeIndex': { + label: 'db.index.fulltext.createNodeIndex', + }, + 'db.index.fulltext.createRelationshipIndex': { + label: 'db.index.fulltext.createRelationshipIndex', + }, + 'db.index.fulltext.drop': { + label: 'db.index.fulltext.drop', + }, + 'db.index.fulltext.listAvailableAnalyzers': { + label: 'db.index.fulltext.listAvailableAnalyzers', + }, + 'db.index.fulltext.queryNodes': { + label: 'db.index.fulltext.queryNodes', + }, + 'db.index.fulltext.queryRelationships': { + label: 'db.index.fulltext.queryRelationships', + }, + 'db.indexDetails': { + label: 'db.indexDetails', + }, + 'db.indexes': { + label: 'db.indexes', + }, + 'db.info': { + label: 'db.info', + }, + 'db.labels': { + label: 'db.labels', + }, + 'db.listLocks': { + label: 'db.listLocks', + }, + 'db.ping': { + label: 'db.ping', + }, + 'db.prepareForReplanning': { + label: 'db.prepareForReplanning', + }, + 'db.propertyKeys': { + label: 'db.propertyKeys', + }, + 'db.relationshipTypes': { + label: 'db.relationshipTypes', + }, + 'db.resampleIndex': { + label: 'db.resampleIndex', + }, + 'db.resampleOutdatedIndexes': { + label: 'db.resampleOutdatedIndexes', + }, + 'db.schema.nodeTypeProperties': { + label: 'db.schema.nodeTypeProperties', + }, + 'db.schema.relTypeProperties': { + label: 'db.schema.relTypeProperties', + }, + 'db.schema.visualization': { + label: 'db.schema.visualization', + }, + 'db.schemaStatements': { + label: 'db.schemaStatements', + }, + 'db.stats.clear': { + label: 'db.stats.clear', + }, + 'db.stats.collect': { + label: 'db.stats.collect', + }, + 'db.stats.retrieve': { + label: 'db.stats.retrieve', + }, + 'db.stats.retrieveAllAnonymized': { + label: 'db.stats.retrieveAllAnonymized', + }, + 'db.stats.status': { + label: 'db.stats.status', + }, + 'db.stats.stop': { + label: 'db.stats.stop', + }, + 'dbms.cluster.overview': { + label: 'dbms.cluster.overview', + }, + 'dbms.cluster.protocols': { + label: 'dbms.cluster.protocols', + }, + 'dbms.cluster.role': { + label: 'dbms.cluster.role', + }, + 'dbms.cluster.routing.getRoutingTable': { + label: 'dbms.cluster.routing.getRoutingTable', + }, + 'dbms.components': { + label: 'dbms.components', + }, + 'dbms.database.state': { + label: 'dbms.database.state', + }, + 'dbms.functions': { + label: 'dbms.functions', + }, + 'dbms.info': { + label: 'dbms.info', + }, + 'dbms.killConnection': { + label: 'dbms.killConnection', + }, + 'dbms.killConnections': { + label: 'dbms.killConnections', + }, + 'dbms.killQueries': { + label: 'dbms.killQueries', + }, + 'dbms.killQuery': { + label: 'dbms.killQuery', + }, + 'dbms.killTransaction': { + label: 'dbms.killTransaction', + }, + 'dbms.killTransactions': { + label: 'dbms.killTransactions', + }, + 'dbms.listActiveLocks': { + label: 'dbms.listActiveLocks', + }, + 'dbms.listCapabilities': { + label: 'dbms.listCapabilities', + }, + 'dbms.listConfig': { + label: 'dbms.listConfig', + }, + 'dbms.listConnections': { + label: 'dbms.listConnections', + }, + 'dbms.listPools': { + label: 'dbms.listPools', + }, + 'dbms.listQueries': { + label: 'dbms.listQueries', + }, + 'dbms.listTransactions': { + label: 'dbms.listTransactions', + }, + 'dbms.procedures': { + label: 'dbms.procedures', + }, + 'dbms.quarantineDatabase': { + label: 'dbms.quarantineDatabase', + }, + 'dbms.queryJmx': { + label: 'dbms.queryJmx', + }, + 'dbms.routing.getRoutingTable': { + label: 'dbms.routing.getRoutingTable', + }, + 'dbms.scheduler.failedJobs': { + label: 'dbms.scheduler.failedJobs', + }, + 'dbms.scheduler.groups': { + label: 'dbms.scheduler.groups', + }, + 'dbms.scheduler.jobs': { + label: 'dbms.scheduler.jobs', + }, + 'dbms.scheduler.profile': { + label: 'dbms.scheduler.profile', + }, + 'dbms.security.activateUser': { + label: 'dbms.security.activateUser', + }, + 'dbms.security.addRoleToUser': { + label: 'dbms.security.addRoleToUser', + }, + 'dbms.security.changePassword': { + label: 'dbms.security.changePassword', + }, + 'dbms.security.changeUserPassword': { + label: 'dbms.security.changeUserPassword', + }, + 'dbms.security.clearAuthCache': { + label: 'dbms.security.clearAuthCache', + }, + 'dbms.security.createRole': { + label: 'dbms.security.createRole', + }, + 'dbms.security.createUser': { + label: 'dbms.security.createUser', + }, + 'dbms.security.deleteRole': { + label: 'dbms.security.deleteRole', + }, + 'dbms.security.deleteUser': { + label: 'dbms.security.deleteUser', + }, + 'dbms.security.listRoles': { + label: 'dbms.security.listRoles', + }, + 'dbms.security.listRolesForUser': { + label: 'dbms.security.listRolesForUser', + }, + 'dbms.security.listUsers': { + label: 'dbms.security.listUsers', + }, + 'dbms.security.listUsersForRole': { + label: 'dbms.security.listUsersForRole', + }, + 'dbms.security.removeRoleFromUser': { + label: 'dbms.security.removeRoleFromUser', + }, + 'dbms.security.suspendUser': { + label: 'dbms.security.suspendUser', + }, + 'dbms.setConfigValue': { + label: 'dbms.setConfigValue', + }, + 'dbms.showCurrentUser': { + label: 'dbms.showCurrentUser', + }, + 'dbms.upgrade': { + label: 'dbms.upgrade', + }, + 'dbms.upgradeStatus': { + label: 'dbms.upgradeStatus', + }, + 'gds.allShortestPaths.delta.mutate': { + label: 'gds.allShortestPaths.delta.mutate', + }, + 'gds.allShortestPaths.delta.mutate.estimate': { + label: 'gds.allShortestPaths.delta.mutate.estimate', + }, + 'gds.allShortestPaths.delta.stats': { + label: 'gds.allShortestPaths.delta.stats', + }, + 'gds.allShortestPaths.delta.stats.estimate': { + label: 'gds.allShortestPaths.delta.stats.estimate', + }, + 'gds.allShortestPaths.delta.stream': { + label: 'gds.allShortestPaths.delta.stream', + }, + 'gds.allShortestPaths.delta.stream.estimate': { + label: 'gds.allShortestPaths.delta.stream.estimate', + }, + 'gds.allShortestPaths.delta.write': { + label: 'gds.allShortestPaths.delta.write', + }, + 'gds.allShortestPaths.delta.write.estimate': { + label: 'gds.allShortestPaths.delta.write.estimate', + }, + 'gds.allShortestPaths.dijkstra.mutate': { + label: 'gds.allShortestPaths.dijkstra.mutate', + }, + 'gds.allShortestPaths.dijkstra.mutate.estimate': { + label: 'gds.allShortestPaths.dijkstra.mutate.estimate', + }, + 'gds.allShortestPaths.dijkstra.stream': { + label: 'gds.allShortestPaths.dijkstra.stream', + }, + 'gds.allShortestPaths.dijkstra.stream.estimate': { + label: 'gds.allShortestPaths.dijkstra.stream.estimate', + }, + 'gds.allShortestPaths.dijkstra.write': { + label: 'gds.allShortestPaths.dijkstra.write', + }, + 'gds.allShortestPaths.dijkstra.write.estimate': { + label: 'gds.allShortestPaths.dijkstra.write.estimate', + }, + 'gds.alpha.allShortestPaths.stream': { + label: 'gds.alpha.allShortestPaths.stream', + }, + 'gds.alpha.backup': { + label: 'gds.alpha.backup', + }, + 'gds.alpha.closeness.harmonic.stream': { + label: 'gds.alpha.closeness.harmonic.stream', + }, + 'gds.alpha.closeness.harmonic.write': { + label: 'gds.alpha.closeness.harmonic.write', + }, + 'gds.alpha.conductance.stream': { + label: 'gds.alpha.conductance.stream', + }, + 'gds.alpha.config.defaults.list': { + label: 'gds.alpha.config.defaults.list', + }, + 'gds.alpha.config.defaults.set': { + label: 'gds.alpha.config.defaults.set', + }, + 'gds.alpha.config.limits.list': { + label: 'gds.alpha.config.limits.list', + }, + 'gds.alpha.config.limits.set': { + label: 'gds.alpha.config.limits.set', + }, + 'gds.alpha.create.cypherdb': { + label: 'gds.alpha.create.cypherdb', + }, + 'gds.alpha.drop.cypherdb': { + label: 'gds.alpha.drop.cypherdb', + }, + 'gds.alpha.graph.graphProperty.drop': { + label: 'gds.alpha.graph.graphProperty.drop', + }, + 'gds.alpha.graph.graphProperty.stream': { + label: 'gds.alpha.graph.graphProperty.stream', + }, + 'gds.alpha.graph.nodeLabel.mutate': { + label: 'gds.alpha.graph.nodeLabel.mutate', + }, + 'gds.alpha.graph.nodeLabel.write': { + label: 'gds.alpha.graph.nodeLabel.write', + }, + 'gds.alpha.hits.mutate': { + label: 'gds.alpha.hits.mutate', + }, + 'gds.alpha.hits.mutate.estimate': { + label: 'gds.alpha.hits.mutate.estimate', + }, + 'gds.alpha.hits.stats': { + label: 'gds.alpha.hits.stats', + }, + 'gds.alpha.hits.stats.estimate': { + label: 'gds.alpha.hits.stats.estimate', + }, + 'gds.alpha.hits.stream': { + label: 'gds.alpha.hits.stream', + }, + 'gds.alpha.hits.stream.estimate': { + label: 'gds.alpha.hits.stream.estimate', + }, + 'gds.alpha.hits.write': { + label: 'gds.alpha.hits.write', + }, + 'gds.alpha.hits.write.estimate': { + label: 'gds.alpha.hits.write.estimate', + }, + 'gds.alpha.kSpanningTree.write': { + label: 'gds.alpha.kSpanningTree.write', + }, + 'gds.alpha.knn.filtered.mutate': { + label: 'gds.alpha.knn.filtered.mutate', + }, + 'gds.alpha.knn.filtered.stats': { + label: 'gds.alpha.knn.filtered.stats', + }, + 'gds.alpha.knn.filtered.stream': { + label: 'gds.alpha.knn.filtered.stream', + }, + 'gds.alpha.knn.filtered.write': { + label: 'gds.alpha.knn.filtered.write', + }, + 'gds.alpha.maxkcut.mutate': { + label: 'gds.alpha.maxkcut.mutate', + }, + 'gds.alpha.maxkcut.mutate.estimate': { + label: 'gds.alpha.maxkcut.mutate.estimate', + }, + 'gds.alpha.maxkcut.stream': { + label: 'gds.alpha.maxkcut.stream', + }, + 'gds.alpha.maxkcut.stream.estimate': { + label: 'gds.alpha.maxkcut.stream.estimate', + }, + 'gds.alpha.ml.splitRelationships.mutate': { + label: 'gds.alpha.ml.splitRelationships.mutate', + }, + 'gds.alpha.model.delete': { + label: 'gds.alpha.model.delete', + }, + 'gds.alpha.model.load': { + label: 'gds.alpha.model.load', + }, + 'gds.alpha.model.publish': { + label: 'gds.alpha.model.publish', + }, + 'gds.alpha.model.store': { + label: 'gds.alpha.model.store', + }, + 'gds.alpha.modularity.stats': { + label: 'gds.alpha.modularity.stats', + }, + 'gds.alpha.modularity.stream': { + label: 'gds.alpha.modularity.stream', + }, + 'gds.alpha.nodeSimilarity.filtered.mutate': { + label: 'gds.alpha.nodeSimilarity.filtered.mutate', + }, + 'gds.alpha.nodeSimilarity.filtered.mutate.estimate': { + label: 'gds.alpha.nodeSimilarity.filtered.mutate.estimate', + }, + 'gds.alpha.nodeSimilarity.filtered.stats': { + label: 'gds.alpha.nodeSimilarity.filtered.stats', + }, + 'gds.alpha.nodeSimilarity.filtered.stats.estimate': { + label: 'gds.alpha.nodeSimilarity.filtered.stats.estimate', + }, + 'gds.alpha.nodeSimilarity.filtered.stream': { + label: 'gds.alpha.nodeSimilarity.filtered.stream', + }, + 'gds.alpha.nodeSimilarity.filtered.stream.estimate': { + label: 'gds.alpha.nodeSimilarity.filtered.stream.estimate', + }, + 'gds.alpha.nodeSimilarity.filtered.write': { + label: 'gds.alpha.nodeSimilarity.filtered.write', + }, + 'gds.alpha.nodeSimilarity.filtered.write.estimate': { + label: 'gds.alpha.nodeSimilarity.filtered.write.estimate', + }, + 'gds.alpha.pipeline.linkPrediction.addMLP': { + label: 'gds.alpha.pipeline.linkPrediction.addMLP', + }, + 'gds.alpha.pipeline.linkPrediction.addRandomForest': { + label: 'gds.alpha.pipeline.linkPrediction.addRandomForest', + }, + 'gds.alpha.pipeline.linkPrediction.configureAutoTuning': { + label: 'gds.alpha.pipeline.linkPrediction.configureAutoTuning', + }, + 'gds.alpha.pipeline.nodeClassification.addMLP': { + label: 'gds.alpha.pipeline.nodeClassification.addMLP', + }, + 'gds.alpha.pipeline.nodeClassification.addRandomForest': { + label: 'gds.alpha.pipeline.nodeClassification.addRandomForest', + }, + 'gds.alpha.pipeline.nodeClassification.configureAutoTuning': { + label: 'gds.alpha.pipeline.nodeClassification.configureAutoTuning', + }, + 'gds.alpha.pipeline.nodeRegression.addLinearRegression': { + label: 'gds.alpha.pipeline.nodeRegression.addLinearRegression', + }, + 'gds.alpha.pipeline.nodeRegression.addNodeProperty': { + label: 'gds.alpha.pipeline.nodeRegression.addNodeProperty', + }, + 'gds.alpha.pipeline.nodeRegression.addRandomForest': { + label: 'gds.alpha.pipeline.nodeRegression.addRandomForest', + }, + 'gds.alpha.pipeline.nodeRegression.configureAutoTuning': { + label: 'gds.alpha.pipeline.nodeRegression.configureAutoTuning', + }, + 'gds.alpha.pipeline.nodeRegression.configureSplit': { + label: 'gds.alpha.pipeline.nodeRegression.configureSplit', + }, + 'gds.alpha.pipeline.nodeRegression.create': { + label: 'gds.alpha.pipeline.nodeRegression.create', + }, + 'gds.alpha.pipeline.nodeRegression.predict.mutate': { + label: 'gds.alpha.pipeline.nodeRegression.predict.mutate', + }, + 'gds.alpha.pipeline.nodeRegression.predict.stream': { + label: 'gds.alpha.pipeline.nodeRegression.predict.stream', + }, + 'gds.alpha.pipeline.nodeRegression.selectFeatures': { + label: 'gds.alpha.pipeline.nodeRegression.selectFeatures', + }, + 'gds.alpha.pipeline.nodeRegression.train': { + label: 'gds.alpha.pipeline.nodeRegression.train', + }, + 'gds.alpha.restore': { + label: 'gds.alpha.restore', + }, + 'gds.alpha.scaleProperties.mutate': { + label: 'gds.alpha.scaleProperties.mutate', + }, + 'gds.alpha.scaleProperties.stream': { + label: 'gds.alpha.scaleProperties.stream', + }, + 'gds.alpha.scc.stream': { + label: 'gds.alpha.scc.stream', + }, + 'gds.alpha.scc.write': { + label: 'gds.alpha.scc.write', + }, + 'gds.alpha.sllpa.mutate': { + label: 'gds.alpha.sllpa.mutate', + }, + 'gds.alpha.sllpa.mutate.estimate': { + label: 'gds.alpha.sllpa.mutate.estimate', + }, + 'gds.alpha.sllpa.stats': { + label: 'gds.alpha.sllpa.stats', + }, + 'gds.alpha.sllpa.stats.estimate': { + label: 'gds.alpha.sllpa.stats.estimate', + }, + 'gds.alpha.sllpa.stream': { + label: 'gds.alpha.sllpa.stream', + }, + 'gds.alpha.sllpa.stream.estimate': { + label: 'gds.alpha.sllpa.stream.estimate', + }, + 'gds.alpha.sllpa.write': { + label: 'gds.alpha.sllpa.write', + }, + 'gds.alpha.sllpa.write.estimate': { + label: 'gds.alpha.sllpa.write.estimate', + }, + 'gds.alpha.systemMonitor': { + label: 'gds.alpha.systemMonitor', + }, + 'gds.alpha.triangles': { + label: 'gds.alpha.triangles', + }, + 'gds.alpha.userLog': { + label: 'gds.alpha.userLog', + }, + 'gds.articleRank.mutate': { + label: 'gds.articleRank.mutate', + }, + 'gds.articleRank.mutate.estimate': { + label: 'gds.articleRank.mutate.estimate', + }, + 'gds.articleRank.stats': { + label: 'gds.articleRank.stats', + }, + 'gds.articleRank.stats.estimate': { + label: 'gds.articleRank.stats.estimate', + }, + 'gds.articleRank.stream': { + label: 'gds.articleRank.stream', + }, + 'gds.articleRank.stream.estimate': { + label: 'gds.articleRank.stream.estimate', + }, + 'gds.articleRank.write': { + label: 'gds.articleRank.write', + }, + 'gds.articleRank.write.estimate': { + label: 'gds.articleRank.write.estimate', + }, + 'gds.bellmanFord.mutate': { + label: 'gds.bellmanFord.mutate', + }, + 'gds.bellmanFord.mutate.estimate': { + label: 'gds.bellmanFord.mutate.estimate', + }, + 'gds.bellmanFord.stats': { + label: 'gds.bellmanFord.stats', + }, + 'gds.bellmanFord.stats.estimate': { + label: 'gds.bellmanFord.stats.estimate', + }, + 'gds.bellmanFord.stream': { + label: 'gds.bellmanFord.stream', + }, + 'gds.bellmanFord.stream.estimate': { + label: 'gds.bellmanFord.stream.estimate', + }, + 'gds.bellmanFord.write': { + label: 'gds.bellmanFord.write', + }, + 'gds.bellmanFord.write.estimate': { + label: 'gds.bellmanFord.write.estimate', + }, + 'gds.beta.closeness.mutate': { + label: 'gds.beta.closeness.mutate', + }, + 'gds.beta.closeness.stats': { + label: 'gds.beta.closeness.stats', + }, + 'gds.beta.closeness.stream': { + label: 'gds.beta.closeness.stream', + }, + 'gds.beta.closeness.write': { + label: 'gds.beta.closeness.write', + }, + 'gds.beta.collapsePath.mutate': { + label: 'gds.beta.collapsePath.mutate', + }, + 'gds.beta.graph.export.csv': { + label: 'gds.beta.graph.export.csv', + }, + 'gds.beta.graph.export.csv.estimate': { + label: 'gds.beta.graph.export.csv.estimate', + }, + 'gds.beta.graph.generate': { + label: 'gds.beta.graph.generate', + }, + 'gds.beta.graph.project.subgraph': { + label: 'gds.beta.graph.project.subgraph', + }, + 'gds.beta.graph.relationships.stream': { + label: 'gds.beta.graph.relationships.stream', + }, + 'gds.beta.graph.relationships.toUndirected': { + label: 'gds.beta.graph.relationships.toUndirected', + }, + 'gds.beta.graph.relationships.toUndirected.estimate': { + label: 'gds.beta.graph.relationships.toUndirected.estimate', + }, + 'gds.beta.graphSage.mutate': { + label: 'gds.beta.graphSage.mutate', + }, + 'gds.beta.graphSage.mutate.estimate': { + label: 'gds.beta.graphSage.mutate.estimate', + }, + 'gds.beta.graphSage.stream': { + label: 'gds.beta.graphSage.stream', + }, + 'gds.beta.graphSage.stream.estimate': { + label: 'gds.beta.graphSage.stream.estimate', + }, + 'gds.beta.graphSage.train': { + label: 'gds.beta.graphSage.train', + }, + 'gds.beta.graphSage.train.estimate': { + label: 'gds.beta.graphSage.train.estimate', + }, + 'gds.beta.graphSage.write': { + label: 'gds.beta.graphSage.write', + }, + 'gds.beta.graphSage.write.estimate': { + label: 'gds.beta.graphSage.write.estimate', + }, + 'gds.beta.hashgnn.mutate': { + label: 'gds.beta.hashgnn.mutate', + }, + 'gds.beta.hashgnn.mutate.estimate': { + label: 'gds.beta.hashgnn.mutate.estimate', + }, + 'gds.beta.hashgnn.stream': { + label: 'gds.beta.hashgnn.stream', + }, + 'gds.beta.hashgnn.stream.estimate': { + label: 'gds.beta.hashgnn.stream.estimate', + }, + 'gds.beta.influenceMaximization.celf.mutate': { + label: 'gds.beta.influenceMaximization.celf.mutate', + }, + 'gds.beta.influenceMaximization.celf.mutate.estimate': { + label: 'gds.beta.influenceMaximization.celf.mutate.estimate', + }, + 'gds.beta.influenceMaximization.celf.stats': { + label: 'gds.beta.influenceMaximization.celf.stats', + }, + 'gds.beta.influenceMaximization.celf.stats.estimate': { + label: 'gds.beta.influenceMaximization.celf.stats.estimate', + }, + 'gds.beta.influenceMaximization.celf.stream': { + label: 'gds.beta.influenceMaximization.celf.stream', + }, + 'gds.beta.influenceMaximization.celf.stream.estimate': { + label: 'gds.beta.influenceMaximization.celf.stream.estimate', + }, + 'gds.beta.influenceMaximization.celf.write': { + label: 'gds.beta.influenceMaximization.celf.write', + }, + 'gds.beta.influenceMaximization.celf.write.estimate': { + label: 'gds.beta.influenceMaximization.celf.write.estimate', + }, + 'gds.beta.k1coloring.mutate': { + label: 'gds.beta.k1coloring.mutate', + }, + 'gds.beta.k1coloring.mutate.estimate': { + label: 'gds.beta.k1coloring.mutate.estimate', + }, + 'gds.beta.k1coloring.stats': { + label: 'gds.beta.k1coloring.stats', + }, + 'gds.beta.k1coloring.stats.estimate': { + label: 'gds.beta.k1coloring.stats.estimate', + }, + 'gds.beta.k1coloring.stream': { + label: 'gds.beta.k1coloring.stream', + }, + 'gds.beta.k1coloring.stream.estimate': { + label: 'gds.beta.k1coloring.stream.estimate', + }, + 'gds.beta.k1coloring.write': { + label: 'gds.beta.k1coloring.write', + }, + 'gds.beta.k1coloring.write.estimate': { + label: 'gds.beta.k1coloring.write.estimate', + }, + 'gds.beta.kmeans.mutate': { + label: 'gds.beta.kmeans.mutate', + }, + 'gds.beta.kmeans.mutate.estimate': { + label: 'gds.beta.kmeans.mutate.estimate', + }, + 'gds.beta.kmeans.stats': { + label: 'gds.beta.kmeans.stats', + }, + 'gds.beta.kmeans.stats.estimate': { + label: 'gds.beta.kmeans.stats.estimate', + }, + 'gds.beta.kmeans.stream': { + label: 'gds.beta.kmeans.stream', + }, + 'gds.beta.kmeans.stream.estimate': { + label: 'gds.beta.kmeans.stream.estimate', + }, + 'gds.beta.kmeans.write': { + label: 'gds.beta.kmeans.write', + }, + 'gds.beta.kmeans.write.estimate': { + label: 'gds.beta.kmeans.write.estimate', + }, + 'gds.beta.leiden.mutate': { + label: 'gds.beta.leiden.mutate', + }, + 'gds.beta.leiden.mutate.estimate': { + label: 'gds.beta.leiden.mutate.estimate', + }, + 'gds.beta.leiden.stats': { + label: 'gds.beta.leiden.stats', + }, + 'gds.beta.leiden.stats.estimate': { + label: 'gds.beta.leiden.stats.estimate', + }, + 'gds.beta.leiden.stream': { + label: 'gds.beta.leiden.stream', + }, + 'gds.beta.leiden.stream.estimate': { + label: 'gds.beta.leiden.stream.estimate', + }, + 'gds.beta.leiden.write': { + label: 'gds.beta.leiden.write', + }, + 'gds.beta.leiden.write.estimate': { + label: 'gds.beta.leiden.write.estimate', + }, + 'gds.beta.listProgress': { + label: 'gds.beta.listProgress', + }, + 'gds.beta.model.drop': { + label: 'gds.beta.model.drop', + }, + 'gds.beta.model.exists': { + label: 'gds.beta.model.exists', + }, + 'gds.beta.model.list': { + label: 'gds.beta.model.list', + }, + 'gds.beta.modularityOptimization.mutate': { + label: 'gds.beta.modularityOptimization.mutate', + }, + 'gds.beta.modularityOptimization.mutate.estimate': { + label: 'gds.beta.modularityOptimization.mutate.estimate', + }, + 'gds.beta.modularityOptimization.stream': { + label: 'gds.beta.modularityOptimization.stream', + }, + 'gds.beta.modularityOptimization.stream.estimate': { + label: 'gds.beta.modularityOptimization.stream.estimate', + }, + 'gds.beta.modularityOptimization.write': { + label: 'gds.beta.modularityOptimization.write', + }, + 'gds.beta.modularityOptimization.write.estimate': { + label: 'gds.beta.modularityOptimization.write.estimate', + }, + 'gds.beta.node2vec.mutate': { + label: 'gds.beta.node2vec.mutate', + }, + 'gds.beta.node2vec.mutate.estimate': { + label: 'gds.beta.node2vec.mutate.estimate', + }, + 'gds.beta.node2vec.stream': { + label: 'gds.beta.node2vec.stream', + }, + 'gds.beta.node2vec.stream.estimate': { + label: 'gds.beta.node2vec.stream.estimate', + }, + 'gds.beta.node2vec.write': { + label: 'gds.beta.node2vec.write', + }, + 'gds.beta.node2vec.write.estimate': { + label: 'gds.beta.node2vec.write.estimate', + }, + 'gds.beta.pipeline.drop': { + label: 'gds.beta.pipeline.drop', + }, + 'gds.beta.pipeline.exists': { + label: 'gds.beta.pipeline.exists', + }, + 'gds.beta.pipeline.linkPrediction.addFeature': { + label: 'gds.beta.pipeline.linkPrediction.addFeature', + }, + 'gds.beta.pipeline.linkPrediction.addLogisticRegression': { + label: 'gds.beta.pipeline.linkPrediction.addLogisticRegression', + }, + 'gds.beta.pipeline.linkPrediction.addNodeProperty': { + label: 'gds.beta.pipeline.linkPrediction.addNodeProperty', + }, + 'gds.beta.pipeline.linkPrediction.addRandomForest': { + label: 'gds.beta.pipeline.linkPrediction.addRandomForest', + }, + 'gds.beta.pipeline.linkPrediction.configureSplit': { + label: 'gds.beta.pipeline.linkPrediction.configureSplit', + }, + 'gds.beta.pipeline.linkPrediction.create': { + label: 'gds.beta.pipeline.linkPrediction.create', + }, + 'gds.beta.pipeline.linkPrediction.predict.mutate': { + label: 'gds.beta.pipeline.linkPrediction.predict.mutate', + }, + 'gds.beta.pipeline.linkPrediction.predict.mutate.estimate': { + label: 'gds.beta.pipeline.linkPrediction.predict.mutate.estimate', + }, + 'gds.beta.pipeline.linkPrediction.predict.stream': { + label: 'gds.beta.pipeline.linkPrediction.predict.stream', + }, + 'gds.beta.pipeline.linkPrediction.predict.stream.estimate': { + label: 'gds.beta.pipeline.linkPrediction.predict.stream.estimate', + }, + 'gds.beta.pipeline.linkPrediction.train': { + label: 'gds.beta.pipeline.linkPrediction.train', + }, + 'gds.beta.pipeline.linkPrediction.train.estimate': { + label: 'gds.beta.pipeline.linkPrediction.train.estimate', + }, + 'gds.beta.pipeline.list': { + label: 'gds.beta.pipeline.list', + }, + 'gds.beta.pipeline.nodeClassification.addLogisticRegression': { + label: 'gds.beta.pipeline.nodeClassification.addLogisticRegression', + }, + 'gds.beta.pipeline.nodeClassification.addNodeProperty': { + label: 'gds.beta.pipeline.nodeClassification.addNodeProperty', + }, + 'gds.beta.pipeline.nodeClassification.addRandomForest': { + label: 'gds.beta.pipeline.nodeClassification.addRandomForest', + }, + 'gds.beta.pipeline.nodeClassification.configureSplit': { + label: 'gds.beta.pipeline.nodeClassification.configureSplit', + }, + 'gds.beta.pipeline.nodeClassification.create': { + label: 'gds.beta.pipeline.nodeClassification.create', + }, + 'gds.beta.pipeline.nodeClassification.predict.mutate': { + label: 'gds.beta.pipeline.nodeClassification.predict.mutate', + }, + 'gds.beta.pipeline.nodeClassification.predict.mutate.estimate': { + label: 'gds.beta.pipeline.nodeClassification.predict.mutate.estimate', + }, + 'gds.beta.pipeline.nodeClassification.predict.stream': { + label: 'gds.beta.pipeline.nodeClassification.predict.stream', + }, + 'gds.beta.pipeline.nodeClassification.predict.stream.estimate': { + label: 'gds.beta.pipeline.nodeClassification.predict.stream.estimate', + }, + 'gds.beta.pipeline.nodeClassification.predict.write': { + label: 'gds.beta.pipeline.nodeClassification.predict.write', + }, + 'gds.beta.pipeline.nodeClassification.predict.write.estimate': { + label: 'gds.beta.pipeline.nodeClassification.predict.write.estimate', + }, + 'gds.beta.pipeline.nodeClassification.selectFeatures': { + label: 'gds.beta.pipeline.nodeClassification.selectFeatures', + }, + 'gds.beta.pipeline.nodeClassification.train': { + label: 'gds.beta.pipeline.nodeClassification.train', + }, + 'gds.beta.pipeline.nodeClassification.train.estimate': { + label: 'gds.beta.pipeline.nodeClassification.train.estimate', + }, + 'gds.beta.spanningTree.mutate': { + label: 'gds.beta.spanningTree.mutate', + }, + 'gds.beta.spanningTree.mutate.estimate': { + label: 'gds.beta.spanningTree.mutate.estimate', + }, + 'gds.beta.spanningTree.stats': { + label: 'gds.beta.spanningTree.stats', + }, + 'gds.beta.spanningTree.stats.estimate': { + label: 'gds.beta.spanningTree.stats.estimate', + }, + 'gds.beta.spanningTree.stream': { + label: 'gds.beta.spanningTree.stream', + }, + 'gds.beta.spanningTree.stream.estimate': { + label: 'gds.beta.spanningTree.stream.estimate', + }, + 'gds.beta.spanningTree.write': { + label: 'gds.beta.spanningTree.write', + }, + 'gds.beta.spanningTree.write.estimate': { + label: 'gds.beta.spanningTree.write.estimate', + }, + 'gds.beta.steinerTree.mutate': { + label: 'gds.beta.steinerTree.mutate', + }, + 'gds.beta.steinerTree.stats': { + label: 'gds.beta.steinerTree.stats', + }, + 'gds.beta.steinerTree.stream': { + label: 'gds.beta.steinerTree.stream', + }, + 'gds.beta.steinerTree.write': { + label: 'gds.beta.steinerTree.write', + }, + 'gds.betweenness.mutate': { + label: 'gds.betweenness.mutate', + }, + 'gds.betweenness.mutate.estimate': { + label: 'gds.betweenness.mutate.estimate', + }, + 'gds.betweenness.stats': { + label: 'gds.betweenness.stats', + }, + 'gds.betweenness.stats.estimate': { + label: 'gds.betweenness.stats.estimate', + }, + 'gds.betweenness.stream': { + label: 'gds.betweenness.stream', + }, + 'gds.betweenness.stream.estimate': { + label: 'gds.betweenness.stream.estimate', + }, + 'gds.betweenness.write': { + label: 'gds.betweenness.write', + }, + 'gds.betweenness.write.estimate': { + label: 'gds.betweenness.write.estimate', + }, + 'gds.bfs.mutate': { + label: 'gds.bfs.mutate', + }, + 'gds.bfs.mutate.estimate': { + label: 'gds.bfs.mutate.estimate', + }, + 'gds.bfs.stats': { + label: 'gds.bfs.stats', + }, + 'gds.bfs.stats.estimate': { + label: 'gds.bfs.stats.estimate', + }, + 'gds.bfs.stream': { + label: 'gds.bfs.stream', + }, + 'gds.bfs.stream.estimate': { + label: 'gds.bfs.stream.estimate', + }, + 'gds.debug.arrow': { + label: 'gds.debug.arrow', + }, + 'gds.debug.sysInfo': { + label: 'gds.debug.sysInfo', + }, + 'gds.degree.mutate': { + label: 'gds.degree.mutate', + }, + 'gds.degree.mutate.estimate': { + label: 'gds.degree.mutate.estimate', + }, + 'gds.degree.stats': { + label: 'gds.degree.stats', + }, + 'gds.degree.stats.estimate': { + label: 'gds.degree.stats.estimate', + }, + 'gds.degree.stream': { + label: 'gds.degree.stream', + }, + 'gds.degree.stream.estimate': { + label: 'gds.degree.stream.estimate', + }, + 'gds.degree.write': { + label: 'gds.degree.write', + }, + 'gds.degree.write.estimate': { + label: 'gds.degree.write.estimate', + }, + 'gds.dfs.mutate': { + label: 'gds.dfs.mutate', + }, + 'gds.dfs.mutate.estimate': { + label: 'gds.dfs.mutate.estimate', + }, + 'gds.dfs.stream': { + label: 'gds.dfs.stream', + }, + 'gds.dfs.stream.estimate': { + label: 'gds.dfs.stream.estimate', + }, + 'gds.eigenvector.mutate': { + label: 'gds.eigenvector.mutate', + }, + 'gds.eigenvector.mutate.estimate': { + label: 'gds.eigenvector.mutate.estimate', + }, + 'gds.eigenvector.stats': { + label: 'gds.eigenvector.stats', + }, + 'gds.eigenvector.stats.estimate': { + label: 'gds.eigenvector.stats.estimate', + }, + 'gds.eigenvector.stream': { + label: 'gds.eigenvector.stream', + }, + 'gds.eigenvector.stream.estimate': { + label: 'gds.eigenvector.stream.estimate', + }, + 'gds.eigenvector.write': { + label: 'gds.eigenvector.write', + }, + 'gds.eigenvector.write.estimate': { + label: 'gds.eigenvector.write.estimate', + }, + 'gds.fastRP.mutate': { + label: 'gds.fastRP.mutate', + }, + 'gds.fastRP.mutate.estimate': { + label: 'gds.fastRP.mutate.estimate', + }, + 'gds.fastRP.stats': { + label: 'gds.fastRP.stats', + }, + 'gds.fastRP.stats.estimate': { + label: 'gds.fastRP.stats.estimate', + }, + 'gds.fastRP.stream': { + label: 'gds.fastRP.stream', + }, + 'gds.fastRP.stream.estimate': { + label: 'gds.fastRP.stream.estimate', + }, + 'gds.fastRP.write': { + label: 'gds.fastRP.write', + }, + 'gds.fastRP.write.estimate': { + label: 'gds.fastRP.write.estimate', + }, + 'gds.graph.deleteRelationships': { + label: 'gds.graph.deleteRelationships', + }, + 'gds.graph.drop': { + label: 'gds.graph.drop', + }, + 'gds.graph.exists': { + label: 'gds.graph.exists', + }, + 'gds.graph.export': { + label: 'gds.graph.export', + }, + 'gds.graph.list': { + label: 'gds.graph.list', + }, + 'gds.graph.nodeProperties.drop': { + label: 'gds.graph.nodeProperties.drop', + }, + 'gds.graph.nodeProperties.stream': { + label: 'gds.graph.nodeProperties.stream', + }, + 'gds.graph.nodeProperties.write': { + label: 'gds.graph.nodeProperties.write', + }, + 'gds.graph.nodeProperty.stream': { + label: 'gds.graph.nodeProperty.stream', + }, + 'gds.graph.project': { + label: 'gds.graph.project', + }, + 'gds.graph.project.cypher': { + label: 'gds.graph.project.cypher', + }, + 'gds.graph.project.cypher.estimate': { + label: 'gds.graph.project.cypher.estimate', + }, + 'gds.graph.project.estimate': { + label: 'gds.graph.project.estimate', + }, + 'gds.graph.relationship.write': { + label: 'gds.graph.relationship.write', + }, + 'gds.graph.relationshipProperties.stream': { + label: 'gds.graph.relationshipProperties.stream', + }, + 'gds.graph.relationshipProperties.write': { + label: 'gds.graph.relationshipProperties.write', + }, + 'gds.graph.relationshipProperty.stream': { + label: 'gds.graph.relationshipProperty.stream', + }, + 'gds.graph.relationships.drop': { + label: 'gds.graph.relationships.drop', + }, + 'gds.graph.removeNodeProperties': { + label: 'gds.graph.removeNodeProperties', + }, + 'gds.graph.sample.cnarw': { + label: 'gds.graph.sample.cnarw', + }, + 'gds.graph.sample.cnarw.estimate': { + label: 'gds.graph.sample.cnarw.estimate', + }, + 'gds.graph.sample.rwr': { + label: 'gds.graph.sample.rwr', + }, + 'gds.graph.streamNodeProperties': { + label: 'gds.graph.streamNodeProperties', + }, + 'gds.graph.streamNodeProperty': { + label: 'gds.graph.streamNodeProperty', + }, + 'gds.graph.streamRelationshipProperties': { + label: 'gds.graph.streamRelationshipProperties', + }, + 'gds.graph.streamRelationshipProperty': { + label: 'gds.graph.streamRelationshipProperty', + }, + 'gds.graph.writeNodeProperties': { + label: 'gds.graph.writeNodeProperties', + }, + 'gds.graph.writeRelationship': { + label: 'gds.graph.writeRelationship', + }, + 'gds.kcore.mutate': { + label: 'gds.kcore.mutate', + }, + 'gds.kcore.mutate.estimate': { + label: 'gds.kcore.mutate.estimate', + }, + 'gds.kcore.stats': { + label: 'gds.kcore.stats', + }, + 'gds.kcore.stats.estimate': { + label: 'gds.kcore.stats.estimate', + }, + 'gds.kcore.stream': { + label: 'gds.kcore.stream', + }, + 'gds.kcore.stream.estimate': { + label: 'gds.kcore.stream.estimate', + }, + 'gds.kcore.write': { + label: 'gds.kcore.write', + }, + 'gds.kcore.write.estimate': { + label: 'gds.kcore.write.estimate', + }, + 'gds.knn.mutate': { + label: 'gds.knn.mutate', + }, + 'gds.knn.mutate.estimate': { + label: 'gds.knn.mutate.estimate', + }, + 'gds.knn.stats': { + label: 'gds.knn.stats', + }, + 'gds.knn.stats.estimate': { + label: 'gds.knn.stats.estimate', + }, + 'gds.knn.stream': { + label: 'gds.knn.stream', + }, + 'gds.knn.stream.estimate': { + label: 'gds.knn.stream.estimate', + }, + 'gds.knn.write': { + label: 'gds.knn.write', + }, + 'gds.knn.write.estimate': { + label: 'gds.knn.write.estimate', + }, + 'gds.labelPropagation.mutate': { + label: 'gds.labelPropagation.mutate', + }, + 'gds.labelPropagation.mutate.estimate': { + label: 'gds.labelPropagation.mutate.estimate', + }, + 'gds.labelPropagation.stats': { + label: 'gds.labelPropagation.stats', + }, + 'gds.labelPropagation.stats.estimate': { + label: 'gds.labelPropagation.stats.estimate', + }, + 'gds.labelPropagation.stream': { + label: 'gds.labelPropagation.stream', + }, + 'gds.labelPropagation.stream.estimate': { + label: 'gds.labelPropagation.stream.estimate', + }, + 'gds.labelPropagation.write': { + label: 'gds.labelPropagation.write', + }, + 'gds.labelPropagation.write.estimate': { + label: 'gds.labelPropagation.write.estimate', + }, + 'gds.list': { + label: 'gds.list', + }, + 'gds.localClusteringCoefficient.mutate': { + label: 'gds.localClusteringCoefficient.mutate', + }, + 'gds.localClusteringCoefficient.mutate.estimate': { + label: 'gds.localClusteringCoefficient.mutate.estimate', + }, + 'gds.localClusteringCoefficient.stats': { + label: 'gds.localClusteringCoefficient.stats', + }, + 'gds.localClusteringCoefficient.stats.estimate': { + label: 'gds.localClusteringCoefficient.stats.estimate', + }, + 'gds.localClusteringCoefficient.stream': { + label: 'gds.localClusteringCoefficient.stream', + }, + 'gds.localClusteringCoefficient.stream.estimate': { + label: 'gds.localClusteringCoefficient.stream.estimate', + }, + 'gds.localClusteringCoefficient.write': { + label: 'gds.localClusteringCoefficient.write', + }, + 'gds.localClusteringCoefficient.write.estimate': { + label: 'gds.localClusteringCoefficient.write.estimate', + }, + 'gds.louvain.mutate': { + label: 'gds.louvain.mutate', + }, + 'gds.louvain.mutate.estimate': { + label: 'gds.louvain.mutate.estimate', + }, + 'gds.louvain.stats': { + label: 'gds.louvain.stats', + }, + 'gds.louvain.stats.estimate': { + label: 'gds.louvain.stats.estimate', + }, + 'gds.louvain.stream': { + label: 'gds.louvain.stream', + }, + 'gds.louvain.stream.estimate': { + label: 'gds.louvain.stream.estimate', + }, + 'gds.louvain.write': { + label: 'gds.louvain.write', + }, + 'gds.louvain.write.estimate': { + label: 'gds.louvain.write.estimate', + }, + 'gds.nodeSimilarity.mutate': { + label: 'gds.nodeSimilarity.mutate', + }, + 'gds.nodeSimilarity.mutate.estimate': { + label: 'gds.nodeSimilarity.mutate.estimate', + }, + 'gds.nodeSimilarity.stats': { + label: 'gds.nodeSimilarity.stats', + }, + 'gds.nodeSimilarity.stats.estimate': { + label: 'gds.nodeSimilarity.stats.estimate', + }, + 'gds.nodeSimilarity.stream': { + label: 'gds.nodeSimilarity.stream', + }, + 'gds.nodeSimilarity.stream.estimate': { + label: 'gds.nodeSimilarity.stream.estimate', + }, + 'gds.nodeSimilarity.write': { + label: 'gds.nodeSimilarity.write', + }, + 'gds.nodeSimilarity.write.estimate': { + label: 'gds.nodeSimilarity.write.estimate', + }, + 'gds.pageRank.mutate': { + label: 'gds.pageRank.mutate', + }, + 'gds.pageRank.mutate.estimate': { + label: 'gds.pageRank.mutate.estimate', + }, + 'gds.pageRank.stats': { + label: 'gds.pageRank.stats', + }, + 'gds.pageRank.stats.estimate': { + label: 'gds.pageRank.stats.estimate', + }, + 'gds.pageRank.stream': { + label: 'gds.pageRank.stream', + }, + 'gds.pageRank.stream.estimate': { + label: 'gds.pageRank.stream.estimate', + }, + 'gds.pageRank.write': { + label: 'gds.pageRank.write', + }, + 'gds.pageRank.write.estimate': { + label: 'gds.pageRank.write.estimate', + }, + 'gds.randomWalk.stats': { + label: 'gds.randomWalk.stats', + }, + 'gds.randomWalk.stats.estimate': { + label: 'gds.randomWalk.stats.estimate', + }, + 'gds.randomWalk.stream': { + label: 'gds.randomWalk.stream', + }, + 'gds.randomWalk.stream.estimate': { + label: 'gds.randomWalk.stream.estimate', + }, + 'gds.scaleProperties.mutate': { + label: 'gds.scaleProperties.mutate', + }, + 'gds.scaleProperties.mutate.estimate': { + label: 'gds.scaleProperties.mutate.estimate', + }, + 'gds.scaleProperties.stats': { + label: 'gds.scaleProperties.stats', + }, + 'gds.scaleProperties.stats.estimate': { + label: 'gds.scaleProperties.stats.estimate', + }, + 'gds.scaleProperties.stream': { + label: 'gds.scaleProperties.stream', + }, + 'gds.scaleProperties.stream.estimate': { + label: 'gds.scaleProperties.stream.estimate', + }, + 'gds.scaleProperties.write': { + label: 'gds.scaleProperties.write', + }, + 'gds.scaleProperties.write.estimate': { + label: 'gds.scaleProperties.write.estimate', + }, + 'gds.shortestPath.astar.mutate': { + label: 'gds.shortestPath.astar.mutate', + }, + 'gds.shortestPath.astar.mutate.estimate': { + label: 'gds.shortestPath.astar.mutate.estimate', + }, + 'gds.shortestPath.astar.stream': { + label: 'gds.shortestPath.astar.stream', + }, + 'gds.shortestPath.astar.stream.estimate': { + label: 'gds.shortestPath.astar.stream.estimate', + }, + 'gds.shortestPath.astar.write': { + label: 'gds.shortestPath.astar.write', + }, + 'gds.shortestPath.astar.write.estimate': { + label: 'gds.shortestPath.astar.write.estimate', + }, + 'gds.shortestPath.dijkstra.mutate': { + label: 'gds.shortestPath.dijkstra.mutate', + }, + 'gds.shortestPath.dijkstra.mutate.estimate': { + label: 'gds.shortestPath.dijkstra.mutate.estimate', + }, + 'gds.shortestPath.dijkstra.stream': { + label: 'gds.shortestPath.dijkstra.stream', + }, + 'gds.shortestPath.dijkstra.stream.estimate': { + label: 'gds.shortestPath.dijkstra.stream.estimate', + }, + 'gds.shortestPath.dijkstra.write': { + label: 'gds.shortestPath.dijkstra.write', + }, + 'gds.shortestPath.dijkstra.write.estimate': { + label: 'gds.shortestPath.dijkstra.write.estimate', + }, + 'gds.shortestPath.yens.mutate': { + label: 'gds.shortestPath.yens.mutate', + }, + 'gds.shortestPath.yens.mutate.estimate': { + label: 'gds.shortestPath.yens.mutate.estimate', + }, + 'gds.shortestPath.yens.stream': { + label: 'gds.shortestPath.yens.stream', + }, + 'gds.shortestPath.yens.stream.estimate': { + label: 'gds.shortestPath.yens.stream.estimate', + }, + 'gds.shortestPath.yens.write': { + label: 'gds.shortestPath.yens.write', + }, + 'gds.shortestPath.yens.write.estimate': { + label: 'gds.shortestPath.yens.write.estimate', + }, + 'gds.triangleCount.mutate': { + label: 'gds.triangleCount.mutate', + }, + 'gds.triangleCount.mutate.estimate': { + label: 'gds.triangleCount.mutate.estimate', + }, + 'gds.triangleCount.stats': { + label: 'gds.triangleCount.stats', + }, + 'gds.triangleCount.stats.estimate': { + label: 'gds.triangleCount.stats.estimate', + }, + 'gds.triangleCount.stream': { + label: 'gds.triangleCount.stream', + }, + 'gds.triangleCount.stream.estimate': { + label: 'gds.triangleCount.stream.estimate', + }, + 'gds.triangleCount.write': { + label: 'gds.triangleCount.write', + }, + 'gds.triangleCount.write.estimate': { + label: 'gds.triangleCount.write.estimate', + }, + 'gds.wcc.mutate': { + label: 'gds.wcc.mutate', + }, + 'gds.wcc.mutate.estimate': { + label: 'gds.wcc.mutate.estimate', + }, + 'gds.wcc.stats': { + label: 'gds.wcc.stats', + }, + 'gds.wcc.stats.estimate': { + label: 'gds.wcc.stats.estimate', + }, + 'gds.wcc.stream': { + label: 'gds.wcc.stream', + }, + 'gds.wcc.stream.estimate': { + label: 'gds.wcc.stream.estimate', + }, + 'gds.wcc.write': { + label: 'gds.wcc.write', + }, + 'gds.wcc.write.estimate': { + label: 'gds.wcc.write.estimate', + }, + 'jwt.security.requestAccess': { + label: 'jwt.security.requestAccess', + }, + 'tx.getMetaData': { + label: 'tx.getMetaData', + }, + 'tx.setMetaData': { + label: 'tx.setMetaData', + }, + }, + labels: [ + 'Actor', + 'Airport', + 'Apple', + 'Aquarium', + 'Arena', + 'Backpack', + 'Bag', + 'Ball', + 'Bar', + 'Beach', + 'Bed', + 'Bicycle', + 'Bird', + 'Book', + 'Book', + 'Bottle', + 'Bridge', + 'Cafe', + 'Canyon', + 'Car', + 'Cat', + 'Cave', + 'Chair', + 'Church', + 'Cinema', + 'City', + 'Clock', + 'Coat', + 'Computer', + 'Concert', + 'Country', + 'Cup', + 'Desert', + 'Dog', + 'Door', + 'Elephant', + 'Factory', + 'Farm', + 'Festival', + 'Field', + 'Fish', + 'Flower', + 'Forest', + 'Fork', + 'Garden', + 'Genre', + 'Glacier', + 'Glass', + 'Greeting', + 'Gym', + 'Hat', + 'Hill', + 'Hospital', + 'Hotel', + 'House', + 'Island', + 'Knife', + 'Lake', + 'Library', + 'Mall', + 'Map', + 'Meeting', + 'Moon', + 'Mosque', + 'Mountain', + 'Movie', + 'Museum', + 'Notebook', + 'Ocean', + 'Office', + 'Orchard', + 'Pants', + 'Paper', + 'Park', + 'Party', + 'Path', + 'Pen', + 'Pencil', + 'Person', + 'Phone', + 'Plate', + 'Playground', + 'Pool', + 'Restaurant', + 'River', + 'Riverbank', + 'Road', + 'School', + 'Shirt', + 'Shoe', + 'Shop', + 'Spoon', + 'Stadium', + 'Star', + 'Sun', + 'Supermarket', + 'Table', + 'Television', + 'Temple', + 'Theater', + 'Tree', + 'User', + 'Valley', + 'Visualisation', + 'Volcano', + 'Wedding', + 'Window', + 'Zoo', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + ], + relationshipTypes: [ + 'ACTED_IN', + 'DIRECTED', + 'FOLLOWS', + 'PRODUCED', + 'REVIEWED', + 'WROTE', + 'RUNS', + 'JUMPS', + 'SWIMS', + 'THINKS', + 'WRITES', + 'READS', + 'SINGS', + 'DANCES', + 'PLAYS', + 'WALKS', + 'TALKS', + 'LISTENS', + 'SCREAMS', + 'LAUGHS', + 'CRIES', + 'EATS', + 'DRINKS', + 'SLEEPS', + 'WORKS', + 'STUDIES', + 'WATCHES', + 'OBSERVES', + 'BUILDS', + 'CREATES', + 'DESTROYS', + 'REPAIRS', + 'OPENS', + 'CLOSES', + 'PUSHES', + 'PULLS', + 'LIFTS', + 'DROPS', + 'CATCHES', + 'THROWS', + 'CLIMBS', + 'FALLS', + 'FLIES', + 'SWINGS', + 'EXPLORES', + 'DISCOVERS', + 'INVENTS', + 'IMAGINES', + 'REMEMBERS', + 'FORGETS', + 'LOVES', + 'HATES', + 'GIVES', + 'TAKES', + 'SEES', + 'HEARS', + 'SMELLS', + 'TOUCHES', + 'FEELS', + 'LEARNS', + 'TEACHES', + 'GROWS', + 'SHRINKS', + 'FIGHTS', + 'MAKES', + 'PEACE', + 'WINS', + 'LOSES', + 'LEADS', + 'FOLLOWS', + 'CHANGES', + 'STAYS', + 'MOVES', + 'STOPS', + 'GOES', + 'BEGINS', + 'ENDS', + 'IMPROVES', + 'DEGRADES', + 'HELPS', + 'HARMS', + 'SAVES', + 'SPENDS', + 'INCREASES', + 'DECREASES', + 'OPTIMIZES', + 'COMPLICATES', + 'SIMPLIFIES', + 'AMPLIFIES', + 'REDUCES', + 'COMPARES', + 'CONTRASTS', + 'COPIES', + 'PASTES', + 'CUTS', + 'PAINTS', + 'DRAWS', + 'DESIGNS', + 'CALCULATES', + 'MEASURES', + 'WEIGHS', + 'PROGRAMS', + 'CODES', + 'ANALYZES', + 'SOLVES', + 'EXPLAINS', + 'DESCRIBES', + 'DISCUSSES', + 'ARGUES', + 'CONVINCES', + 'PERSUADES', + 'INSPIRES', + 'MOTIVATES', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + 'longlabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothreelonglabelonetwothreefourfivesixseveneightninetenonetwothree', + ], + propertyKeys: [ + 'born', + 'data', + 'id', + 'name', + 'nodes', + 'rating', + 'relationships', + 'released', + 'roles', + 'style', + 'summary', + 'tagline', + 'title', + 'visualisation', + ], + parameters: { + param1: { + property: 'value', + speed: 123.4, + }, + favColor: 'green', + myParam: 1337, + }, + databaseNames: [ + 'neo4j', + 'oskar', + 'system', + 'Restaurant', + 'Cafe', + 'Bar', + 'Hotel', + 'Supermarket', + 'Mall', + 'Shop', + 'Office', + 'Factory', + 'Gym', + 'Stadium', + ], + aliasNames: [ + 'alias2', + 'testalias', + 'Bar', + 'Hotel', + 'Supermarket', + 'Mall', + 'Shop', + 'Office', + 'Factory', + 'Gym', + 'Stadium', + ], +}; diff --git a/packages/language-support/src/tests/benchmarks/benchmark.ts b/packages/language-support/src/tests/benchmarks/benchmark.ts index 39989db27..df47f9727 100644 --- a/packages/language-support/src/tests/benchmarks/benchmark.ts +++ b/packages/language-support/src/tests/benchmarks/benchmark.ts @@ -1,14 +1,19 @@ +/* eslint-disable no-console */ import Benchmark from 'benchmark'; import { autocomplete } from '../../autocompletion/autocompletion'; import { applySyntaxColouring } from '../../highlighting/syntaxColouring/syntaxColouring'; import { validateSyntax } from '../../highlighting/syntaxValidation/syntaxValidation'; import { parse } from '../../parserWrapper'; +import { benchmarkingMediumSizeSchema } from './benchmark-dbschemas'; import { autocompletionQueries, createMovieDb, simpleQuery, tictactoe, } from './benchmark-queries'; + +Benchmark.options.minSamples = 20; + const suite = new Benchmark.Suite(); suite @@ -19,10 +24,10 @@ suite applySyntaxColouring(simpleQuery); }) .add('simple - validate syntax', function () { - validateSyntax(simpleQuery, {}); + validateSyntax(simpleQuery, benchmarkingMediumSizeSchema); }) .add('simple - autocomplete next statement', function () { - autocomplete(simpleQuery, {}); + autocomplete(simpleQuery, benchmarkingMediumSizeSchema); }) .add('movies - parse', function () { parse(createMovieDb); @@ -31,10 +36,10 @@ suite applySyntaxColouring(createMovieDb); }) .add('movies - validate syntax', function () { - validateSyntax(createMovieDb, {}); + validateSyntax(createMovieDb, benchmarkingMediumSizeSchema); }) .add('movies - autocomplete next statement', function () { - autocomplete(createMovieDb, {}); + autocomplete(createMovieDb, benchmarkingMediumSizeSchema); }) .add('tictactoe - parse', function () { parse(tictactoe); @@ -43,29 +48,76 @@ suite applySyntaxColouring(tictactoe); }) .add('tictactoe - validate syntax', function () { - validateSyntax(tictactoe, {}); + validateSyntax(tictactoe, benchmarkingMediumSizeSchema); }) - .add('tictactoe - autocomplete next statement', function () { + .add('tictactoe - autocomplete next statement - no Schema', function () { autocomplete(tictactoe, {}); + }) + .add('tictactoe - autocomplete next statement - medium Schema', function () { + autocomplete(tictactoe, benchmarkingMediumSizeSchema); }); Object.entries(autocompletionQueries).forEach(([name, query]) => { + suite.add(`autocomplete - ${name} (parse.time.only)`, function () { + parse(query); + }); suite.add(`autocomplete - ${name}`, function () { - autocomplete(query, { - aliasNames: ['alias'], - databaseNames: ['db'], - labels: ['label'], - relationshipTypes: ['relType'], - propertyKeys: ['prop'], - functionSignatures: { 'apoc.util.sleep': { label: 'apoc.util.sleep' } }, - procedureSignatures: { 'db.ping': { label: 'db.ping' } }, - }); + autocomplete(query, benchmarkingMediumSizeSchema); }); }); suite .on('cycle', function (event: { target: { toString: () => string } }) { - // eslint-disable-next-line no-console console.log(String(event.target)); }) - .run({ async: false }); + .on('complete', async function () { + const API_KEY = process.env.GRAFANA_API_KEY; + + if (API_KEY) { + console.log('Publishing metrics to grafana'); + const USER_ID = 1226722; + + const metrics: Record = {}; + + // arcane magic to get the benchmark results + // eslint-disable-next-line + this.forEach(function (benchmark: { + name: string; + hz: number /* operations per second */; + }) { + metrics[benchmark.name] = benchmark.hz; + }); + + const body = Object.entries(metrics) + .map( + ([key, value]) => + `unit-benchmark,bar_label=${key.replaceAll( + /\s/g, + '', + )},source=benchmarkjs metric=${value}`, + ) + .join('\n'); + + console.log(body); + await fetch( + 'https://influx-prod-39-prod-eu-north-0.grafana.net/api/v1/push/influx/write', + { + method: 'post', + body, + headers: { + Authorization: `Bearer ${USER_ID}:${API_KEY}`, + 'Content-Type': 'text/plain', + }, + }, + ).then((res) => { + if (res.ok) { + console.log('Metrics pushed to grafana successfully'); + } else { + throw new Error( + `Failed to push metrics to grafana: ${res.statusText}`, + ); + } + }); + } + }) + .run({ async: true }); diff --git a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx index 5ebc8274a..3c530aadc 100644 --- a/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx +++ b/packages/react-codemirror/src/e2e_tests/performance-test.spec.tsx @@ -106,7 +106,6 @@ test('benchmarking & performance test session', async ({ mount, page }) => { const USER_ID = 1226722; const API_KEY = process.env.GRAFANA_API_KEY; - if (!API_KEY) { throw new Error('Missing grafana api key'); } @@ -136,6 +135,13 @@ test('benchmarking & performance test session', async ({ mount, page }) => { 'Content-Type': 'text/plain', }, }, - ); + ).then((res) => { + if (res.ok) { + // eslint-disable-next-line no-console + console.log('Metrics pushed to grafana successfully'); + } else { + throw new Error(`Failed to push metrics to grafana: ${res.statusText}`); + } + }); } }); diff --git a/turbo.json b/turbo.json index 765116294..90a33c102 100644 --- a/turbo.json +++ b/turbo.json @@ -53,6 +53,8 @@ "persistent": false, "dependsOn": ["@neo4j-cypher/react-codemirror#test:e2e"] }, - "build-benchmark": { "dependsOn": ["build"] } + "benchmark": { + "cache": false + } } } From bb8e2f943e12717da27ec62dc92cc44166ee76a1 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Thu, 30 Nov 2023 16:41:54 +0100 Subject: [PATCH 20/27] addpokemonquery --- .../src/tests/benchmarks/benchmark-queries.ts | 3495 +++++++++++++++++ 1 file changed, 3495 insertions(+) diff --git a/packages/language-support/src/tests/benchmarks/benchmark-queries.ts b/packages/language-support/src/tests/benchmarks/benchmark-queries.ts index 0218301ec..cdf28e449 100644 --- a/packages/language-support/src/tests/benchmarks/benchmark-queries.ts +++ b/packages/language-support/src/tests/benchmarks/benchmark-queries.ts @@ -625,3 +625,3498 @@ export const autocompletionQueries = { propertyKeyCompletion: 'MATCH (n) RETURN n.', variableCompletion: 'WITH 1 as variable MATCH (n) WHERE n.name = ', }; + +export const pokemonquery = ` +CREATE +(Grass:Type {name:"Grass"}), +(Poison:Type {name:"Poison"}), +(Fire:Type {name:"Fire"}), +(Flying:Type {name:"Flying"}), +(Water:Type {name:"Water"}), +(Bug:Type {name:"Bug"}), +(Normal:Type {name:"Normal"}), +(Electric:Type {name:"Electric"}), +(Ground:Type {name:"Ground"}), +(Fairy:Type {name:"Fairy"}), +(Fighting:Type {name:"Fighting"}), +(Psychic:Type {name:"Psychic"}), +(Rock:Type {name:"Rock"}), +(Steel:Type {name:"Steel"}), +(Ice:Type {name:"Ice"}), +(Ghost:Type {name:"Ghost"}), +(Dragon:Type {name:"Dragon"}), +(Dark:Type {name:"Dark"}) + +CREATE +(Bulbasaur:Pokemon {name:"Bulbasaur", nationalPokedexNumber:1, regionalPokedexNumber:"001", picture:"https://cdn.bulbagarden.net/upload/e/ec/001MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bulbasaur_(Pok%C3%A9mon)"}), +(Ivysaur:Pokemon {name:"Ivysaur", nationalPokedexNumber:2, regionalPokedexNumber:"002", picture:"https://cdn.bulbagarden.net/upload/6/6b/002MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ivysaur_(Pok%C3%A9mon)"}), +(Venusaur:Pokemon {name:"Venusaur", nationalPokedexNumber:3, regionalPokedexNumber:"003", picture:"https://cdn.bulbagarden.net/upload/d/df/003MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Venusaur_(Pok%C3%A9mon)"}), +(Charmander:Pokemon {name:"Charmander", nationalPokedexNumber:4, regionalPokedexNumber:"004", picture:"https://cdn.bulbagarden.net/upload/b/bb/004MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Charmander_(Pok%C3%A9mon)"}), +(Charmeleon:Pokemon {name:"Charmeleon", nationalPokedexNumber:5, regionalPokedexNumber:"005", picture:"https://cdn.bulbagarden.net/upload/d/dc/005MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Charmeleon_(Pok%C3%A9mon)"}), +(Charizard:Pokemon {name:"Charizard", nationalPokedexNumber:6, regionalPokedexNumber:"006", picture:"https://cdn.bulbagarden.net/upload/0/01/006MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Charizard_(Pok%C3%A9mon)"}), +(Squirtle:Pokemon {name:"Squirtle", nationalPokedexNumber:7, regionalPokedexNumber:"007", picture:"https://cdn.bulbagarden.net/upload/9/92/007MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Squirtle_(Pok%C3%A9mon)"}), +(Wartortle:Pokemon {name:"Wartortle", nationalPokedexNumber:8, regionalPokedexNumber:"008", picture:"https://cdn.bulbagarden.net/upload/f/f3/008MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wartortle_(Pok%C3%A9mon)"}), +(Blastoise:Pokemon {name:"Blastoise", nationalPokedexNumber:9, regionalPokedexNumber:"009", picture:"https://cdn.bulbagarden.net/upload/c/cb/009MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Blastoise_(Pok%C3%A9mon)"}), +(Caterpie:Pokemon {name:"Caterpie", nationalPokedexNumber:10, regionalPokedexNumber:"010", picture:"https://cdn.bulbagarden.net/upload/6/69/010MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Caterpie_(Pok%C3%A9mon)"}), +(Metapod:Pokemon {name:"Metapod", nationalPokedexNumber:11, regionalPokedexNumber:"011", picture:"https://cdn.bulbagarden.net/upload/c/ce/011MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Metapod_(Pok%C3%A9mon)"}), +(Butterfree:Pokemon {name:"Butterfree", nationalPokedexNumber:12, regionalPokedexNumber:"012", picture:"https://cdn.bulbagarden.net/upload/1/14/012MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Butterfree_(Pok%C3%A9mon)"}), +(Weedle:Pokemon {name:"Weedle", nationalPokedexNumber:13, regionalPokedexNumber:"013", picture:"https://cdn.bulbagarden.net/upload/6/65/013MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Weedle_(Pok%C3%A9mon)"}), +(Kakuna:Pokemon {name:"Kakuna", nationalPokedexNumber:14, regionalPokedexNumber:"014", picture:"https://cdn.bulbagarden.net/upload/8/81/014MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kakuna_(Pok%C3%A9mon)"}), +(Beedrill:Pokemon {name:"Beedrill", nationalPokedexNumber:15, regionalPokedexNumber:"015", picture:"https://cdn.bulbagarden.net/upload/5/5a/015MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Beedrill_(Pok%C3%A9mon)"}), +(Pidgey:Pokemon {name:"Pidgey", nationalPokedexNumber:16, regionalPokedexNumber:"016", picture:"https://cdn.bulbagarden.net/upload/9/9c/016MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pidgey_(Pok%C3%A9mon)"}), +(Pidgeotto:Pokemon {name:"Pidgeotto", nationalPokedexNumber:17, regionalPokedexNumber:"017", picture:"https://cdn.bulbagarden.net/upload/a/a9/017MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pidgeotto_(Pok%C3%A9mon)"}), +(Pidgeot:Pokemon {name:"Pidgeot", nationalPokedexNumber:18, regionalPokedexNumber:"018", picture:"https://cdn.bulbagarden.net/upload/6/68/018MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pidgeot_(Pok%C3%A9mon)"}), +(Rattata:Pokemon {name:"Rattata", nationalPokedexNumber:19, regionalPokedexNumber:"019", picture:"https://cdn.bulbagarden.net/upload/4/4d/019MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rattata_(Pok%C3%A9mon)"}), +(Raticate:Pokemon {name:"Raticate", nationalPokedexNumber:20, regionalPokedexNumber:"020", picture:"https://cdn.bulbagarden.net/upload/4/4d/020MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Raticate_(Pok%C3%A9mon)"}), +(Spearow:Pokemon {name:"Spearow", nationalPokedexNumber:21, regionalPokedexNumber:"021", picture:"https://cdn.bulbagarden.net/upload/5/5b/021MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Spearow_(Pok%C3%A9mon)"}), +(Fearow:Pokemon {name:"Fearow", nationalPokedexNumber:22, regionalPokedexNumber:"022", picture:"https://cdn.bulbagarden.net/upload/3/35/022MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Fearow_(Pok%C3%A9mon)"}), +(Ekans:Pokemon {name:"Ekans", nationalPokedexNumber:23, regionalPokedexNumber:"023", picture:"https://cdn.bulbagarden.net/upload/0/0d/023MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ekans_(Pok%C3%A9mon)"}), +(Arbok:Pokemon {name:"Arbok", nationalPokedexNumber:24, regionalPokedexNumber:"024", picture:"https://cdn.bulbagarden.net/upload/d/d3/024MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Arbok_(Pok%C3%A9mon)"}), +(Pikachu:Pokemon {name:"Pikachu", nationalPokedexNumber:25, regionalPokedexNumber:"025", picture:"https://cdn.bulbagarden.net/upload/0/0f/025MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pikachu_(Pok%C3%A9mon)"}), +(Raichu:Pokemon {name:"Raichu", nationalPokedexNumber:26, regionalPokedexNumber:"026", picture:"https://cdn.bulbagarden.net/upload/d/da/026MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Raichu_(Pok%C3%A9mon)"}), +(Sandshrew:Pokemon {name:"Sandshrew", nationalPokedexNumber:27, regionalPokedexNumber:"027", picture:"https://cdn.bulbagarden.net/upload/c/c3/027MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sandshrew_(Pok%C3%A9mon)"}), +(Sandslash:Pokemon {name:"Sandslash", nationalPokedexNumber:28, regionalPokedexNumber:"028", picture:"https://cdn.bulbagarden.net/upload/e/e0/028MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sandslash_(Pok%C3%A9mon)"}), +(NidoranF:Pokemon {name:"Nidoran♀", nationalPokedexNumber:29, regionalPokedexNumber:"029", picture:"https://cdn.bulbagarden.net/upload/a/ab/029MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nidoran%E2%99%80_(Pok%C3%A9mon)"}), +(Nidorina:Pokemon {name:"Nidorina", nationalPokedexNumber:30, regionalPokedexNumber:"030", picture:"https://cdn.bulbagarden.net/upload/d/d0/030MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nidorina_(Pok%C3%A9mon)"}), +(Nidoqueen:Pokemon {name:"Nidoqueen", nationalPokedexNumber:31, regionalPokedexNumber:"031", picture:"https://cdn.bulbagarden.net/upload/3/31/031MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nidoqueen_(Pok%C3%A9mon)"}), +(NidoranM:Pokemon {name:"Nidoran♂", nationalPokedexNumber:32, regionalPokedexNumber:"032", picture:"https://cdn.bulbagarden.net/upload/f/fb/032MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nidoran%E2%99%82_(Pok%C3%A9mon)"}), +(Nidorino:Pokemon {name:"Nidorino", nationalPokedexNumber:33, regionalPokedexNumber:"033", picture:"https://cdn.bulbagarden.net/upload/0/0e/033MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nidorino_(Pok%C3%A9mon)"}), +(Nidoking:Pokemon {name:"Nidoking", nationalPokedexNumber:34, regionalPokedexNumber:"034", picture:"https://cdn.bulbagarden.net/upload/1/18/034MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nidoking_(Pok%C3%A9mon)"}), +(Clefairy:Pokemon {name:"Clefairy", nationalPokedexNumber:35, regionalPokedexNumber:"035", picture:"https://cdn.bulbagarden.net/upload/f/f9/035MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Clefairy_(Pok%C3%A9mon)"}), +(Clefable:Pokemon {name:"Clefable", nationalPokedexNumber:36, regionalPokedexNumber:"036", picture:"https://cdn.bulbagarden.net/upload/7/75/036MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Clefable_(Pok%C3%A9mon)"}), +(Vulpix:Pokemon {name:"Vulpix", nationalPokedexNumber:37, regionalPokedexNumber:"037", picture:"https://cdn.bulbagarden.net/upload/8/85/037MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vulpix_(Pok%C3%A9mon)"}), +(Ninetales:Pokemon {name:"Ninetales", nationalPokedexNumber:38, regionalPokedexNumber:"038", picture:"https://cdn.bulbagarden.net/upload/1/10/038MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ninetales_(Pok%C3%A9mon)"}), +(Jigglypuff:Pokemon {name:"Jigglypuff", nationalPokedexNumber:39, regionalPokedexNumber:"039", picture:"https://cdn.bulbagarden.net/upload/9/9c/039MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Jigglypuff_(Pok%C3%A9mon)"}), +(Wigglytuff:Pokemon {name:"Wigglytuff", nationalPokedexNumber:40, regionalPokedexNumber:"040", picture:"https://cdn.bulbagarden.net/upload/f/f1/040MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wigglytuff_(Pok%C3%A9mon)"}), +(Zubat:Pokemon {name:"Zubat", nationalPokedexNumber:41, regionalPokedexNumber:"041", picture:"https://cdn.bulbagarden.net/upload/9/96/041MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zubat_(Pok%C3%A9mon)"}), +(Golbat:Pokemon {name:"Golbat", nationalPokedexNumber:42, regionalPokedexNumber:"042", picture:"https://cdn.bulbagarden.net/upload/d/d0/042MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Golbat_(Pok%C3%A9mon)"}), +(Oddish:Pokemon {name:"Oddish", nationalPokedexNumber:43, regionalPokedexNumber:"043", picture:"https://cdn.bulbagarden.net/upload/a/a5/043MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Oddish_(Pok%C3%A9mon)"}), +(Gloom:Pokemon {name:"Gloom", nationalPokedexNumber:44, regionalPokedexNumber:"044", picture:"https://cdn.bulbagarden.net/upload/d/d9/044MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gloom_(Pok%C3%A9mon)"}), +(Vileplume:Pokemon {name:"Vileplume", nationalPokedexNumber:45, regionalPokedexNumber:"045", picture:"https://cdn.bulbagarden.net/upload/3/3e/045MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vileplume_(Pok%C3%A9mon)"}), +(Paras:Pokemon {name:"Paras", nationalPokedexNumber:46, regionalPokedexNumber:"046", picture:"https://cdn.bulbagarden.net/upload/7/7a/046MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Paras_(Pok%C3%A9mon)"}), +(Parasect:Pokemon {name:"Parasect", nationalPokedexNumber:47, regionalPokedexNumber:"047", picture:"https://cdn.bulbagarden.net/upload/4/41/047MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Parasect_(Pok%C3%A9mon)"}), +(Venonat:Pokemon {name:"Venonat", nationalPokedexNumber:48, regionalPokedexNumber:"048", picture:"https://cdn.bulbagarden.net/upload/1/1e/048MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Venonat_(Pok%C3%A9mon)"}), +(Venomoth:Pokemon {name:"Venomoth", nationalPokedexNumber:49, regionalPokedexNumber:"049", picture:"https://cdn.bulbagarden.net/upload/3/31/049MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Venomoth_(Pok%C3%A9mon)"}), +(Diglett:Pokemon {name:"Diglett", nationalPokedexNumber:50, regionalPokedexNumber:"050", picture:"https://cdn.bulbagarden.net/upload/8/8b/050MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Diglett_(Pok%C3%A9mon)"}), +(Dugtrio:Pokemon {name:"Dugtrio", nationalPokedexNumber:51, regionalPokedexNumber:"051", picture:"https://cdn.bulbagarden.net/upload/8/86/051MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dugtrio_(Pok%C3%A9mon)"}), +(Meowth:Pokemon {name:"Meowth", nationalPokedexNumber:52, regionalPokedexNumber:"052", picture:"https://cdn.bulbagarden.net/upload/5/50/052MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Meowth_(Pok%C3%A9mon)"}), +(Persian:Pokemon {name:"Persian", nationalPokedexNumber:53, regionalPokedexNumber:"053", picture:"https://cdn.bulbagarden.net/upload/a/a7/053MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Persian_(Pok%C3%A9mon)"}), +(Psyduck:Pokemon {name:"Psyduck", nationalPokedexNumber:54, regionalPokedexNumber:"054", picture:"https://cdn.bulbagarden.net/upload/6/6b/054MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Psyduck_(Pok%C3%A9mon)"}), +(Golduck:Pokemon {name:"Golduck", nationalPokedexNumber:55, regionalPokedexNumber:"055", picture:"https://cdn.bulbagarden.net/upload/6/64/055MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Golduck_(Pok%C3%A9mon)"}), +(Mankey:Pokemon {name:"Mankey", nationalPokedexNumber:56, regionalPokedexNumber:"056", picture:"https://cdn.bulbagarden.net/upload/a/ad/056MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mankey_(Pok%C3%A9mon)"}), +(Primeape:Pokemon {name:"Primeape", nationalPokedexNumber:57, regionalPokedexNumber:"057", picture:"https://cdn.bulbagarden.net/upload/f/f1/057MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Primeape_(Pok%C3%A9mon)"}), +(Growlithe:Pokemon {name:"Growlithe", nationalPokedexNumber:58, regionalPokedexNumber:"058", picture:"https://cdn.bulbagarden.net/upload/6/69/058MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Growlithe_(Pok%C3%A9mon)"}), +(Arcanine:Pokemon {name:"Arcanine", nationalPokedexNumber:59, regionalPokedexNumber:"059", picture:"https://cdn.bulbagarden.net/upload/3/35/059MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Arcanine_(Pok%C3%A9mon)"}), +(Poliwag:Pokemon {name:"Poliwag", nationalPokedexNumber:60, regionalPokedexNumber:"060", picture:"https://cdn.bulbagarden.net/upload/1/17/060MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Poliwag_(Pok%C3%A9mon)"}), +(Poliwhirl:Pokemon {name:"Poliwhirl", nationalPokedexNumber:61, regionalPokedexNumber:"061", picture:"https://cdn.bulbagarden.net/upload/3/36/061MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Poliwhirl_(Pok%C3%A9mon)"}), +(Poliwrath:Pokemon {name:"Poliwrath", nationalPokedexNumber:62, regionalPokedexNumber:"062", picture:"https://cdn.bulbagarden.net/upload/5/5e/062MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Poliwrath_(Pok%C3%A9mon)"}), +(Abra:Pokemon {name:"Abra", nationalPokedexNumber:63, regionalPokedexNumber:"063", picture:"https://cdn.bulbagarden.net/upload/c/cf/063MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Abra_(Pok%C3%A9mon)"}), +(Kadabra:Pokemon {name:"Kadabra", nationalPokedexNumber:64, regionalPokedexNumber:"064", picture:"https://cdn.bulbagarden.net/upload/b/b6/064MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kadabra_(Pok%C3%A9mon)"}), +(Alakazam:Pokemon {name:"Alakazam", nationalPokedexNumber:65, regionalPokedexNumber:"065", picture:"https://cdn.bulbagarden.net/upload/c/ca/065MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Alakazam_(Pok%C3%A9mon)"}), +(Machop:Pokemon {name:"Machop", nationalPokedexNumber:66, regionalPokedexNumber:"066", picture:"https://cdn.bulbagarden.net/upload/6/6c/066MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Machop_(Pok%C3%A9mon)"}), +(Machoke:Pokemon {name:"Machoke", nationalPokedexNumber:67, regionalPokedexNumber:"067", picture:"https://cdn.bulbagarden.net/upload/0/0f/067MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Machoke_(Pok%C3%A9mon)"}), +(Machamp:Pokemon {name:"Machamp", nationalPokedexNumber:68, regionalPokedexNumber:"068", picture:"https://cdn.bulbagarden.net/upload/1/1e/068MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Machamp_(Pok%C3%A9mon)"}), +(Bellsprout:Pokemon {name:"Bellsprout", nationalPokedexNumber:69, regionalPokedexNumber:"069", picture:"https://cdn.bulbagarden.net/upload/7/7b/069MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bellsprout_(Pok%C3%A9mon)"}), +(Weepinbell:Pokemon {name:"Weepinbell", nationalPokedexNumber:70, regionalPokedexNumber:"070", picture:"https://cdn.bulbagarden.net/upload/d/d5/070MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Weepinbell_(Pok%C3%A9mon)"}), +(Victreebel:Pokemon {name:"Victreebel", nationalPokedexNumber:71, regionalPokedexNumber:"071", picture:"https://cdn.bulbagarden.net/upload/9/9b/071MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Victreebel_(Pok%C3%A9mon)"}), +(Tentacool:Pokemon {name:"Tentacool", nationalPokedexNumber:72, regionalPokedexNumber:"072", picture:"https://cdn.bulbagarden.net/upload/4/42/072MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tentacool_(Pok%C3%A9mon)"}), +(Tentacruel:Pokemon {name:"Tentacruel", nationalPokedexNumber:73, regionalPokedexNumber:"073", picture:"https://cdn.bulbagarden.net/upload/f/fc/073MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tentacruel_(Pok%C3%A9mon)"}), +(Geodude:Pokemon {name:"Geodude", nationalPokedexNumber:74, regionalPokedexNumber:"074", picture:"https://cdn.bulbagarden.net/upload/0/04/074MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Geodude_(Pok%C3%A9mon)"}), +(Graveler:Pokemon {name:"Graveler", nationalPokedexNumber:75, regionalPokedexNumber:"075", picture:"https://cdn.bulbagarden.net/upload/5/5c/075MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Graveler_(Pok%C3%A9mon)"}), +(Golem:Pokemon {name:"Golem", nationalPokedexNumber:76, regionalPokedexNumber:"076", picture:"https://cdn.bulbagarden.net/upload/3/34/076MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Golem_(Pok%C3%A9mon)"}), +(Ponyta:Pokemon {name:"Ponyta", nationalPokedexNumber:77, regionalPokedexNumber:"077", picture:"https://cdn.bulbagarden.net/upload/5/55/077MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ponyta_(Pok%C3%A9mon)"}), +(Rapidash:Pokemon {name:"Rapidash", nationalPokedexNumber:78, regionalPokedexNumber:"078", picture:"https://cdn.bulbagarden.net/upload/6/66/078MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rapidash_(Pok%C3%A9mon)"}), +(Slowpoke:Pokemon {name:"Slowpoke", nationalPokedexNumber:79, regionalPokedexNumber:"079", picture:"https://cdn.bulbagarden.net/upload/6/6a/079MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Slowpoke_(Pok%C3%A9mon)"}), +(Slowbro:Pokemon {name:"Slowbro", nationalPokedexNumber:80, regionalPokedexNumber:"080", picture:"https://cdn.bulbagarden.net/upload/b/b6/080MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Slowbro_(Pok%C3%A9mon)"}), +(Magnemite:Pokemon {name:"Magnemite", nationalPokedexNumber:81, regionalPokedexNumber:"081", picture:"https://cdn.bulbagarden.net/upload/0/0f/081MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magnemite_(Pok%C3%A9mon)"}), +(Magneton:Pokemon {name:"Magneton", nationalPokedexNumber:82, regionalPokedexNumber:"082", picture:"https://cdn.bulbagarden.net/upload/0/0c/082MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magneton_(Pok%C3%A9mon)"}), +(Farfetchd:Pokemon {name:"Farfetch'd", nationalPokedexNumber:83, regionalPokedexNumber:"083", picture:"https://cdn.bulbagarden.net/upload/5/57/083MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Farfetch%27d_(Pok%C3%A9mon)"}), +(Doduo:Pokemon {name:"Doduo", nationalPokedexNumber:84, regionalPokedexNumber:"084", picture:"https://cdn.bulbagarden.net/upload/f/fc/084MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Doduo_(Pok%C3%A9mon)"}), +(Dodrio:Pokemon {name:"Dodrio", nationalPokedexNumber:85, regionalPokedexNumber:"085", picture:"https://cdn.bulbagarden.net/upload/1/19/085MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dodrio_(Pok%C3%A9mon)"}), +(Seel:Pokemon {name:"Seel", nationalPokedexNumber:86, regionalPokedexNumber:"086", picture:"https://cdn.bulbagarden.net/upload/9/9b/086MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Seel_(Pok%C3%A9mon)"}), +(Dewgong:Pokemon {name:"Dewgong", nationalPokedexNumber:87, regionalPokedexNumber:"087", picture:"https://cdn.bulbagarden.net/upload/2/20/087MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dewgong_(Pok%C3%A9mon)"}), +(Grimer:Pokemon {name:"Grimer", nationalPokedexNumber:88, regionalPokedexNumber:"088", picture:"https://cdn.bulbagarden.net/upload/5/50/088MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Grimer_(Pok%C3%A9mon)"}), +(Muk:Pokemon {name:"Muk", nationalPokedexNumber:89, regionalPokedexNumber:"089", picture:"https://cdn.bulbagarden.net/upload/b/b4/089MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Muk_(Pok%C3%A9mon)"}), +(Shellder:Pokemon {name:"Shellder", nationalPokedexNumber:90, regionalPokedexNumber:"090", picture:"https://cdn.bulbagarden.net/upload/4/41/090MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shellder_(Pok%C3%A9mon)"}), +(Cloyster:Pokemon {name:"Cloyster", nationalPokedexNumber:91, regionalPokedexNumber:"091", picture:"https://cdn.bulbagarden.net/upload/b/bc/091MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cloyster_(Pok%C3%A9mon)"}), +(Gastly:Pokemon {name:"Gastly", nationalPokedexNumber:92, regionalPokedexNumber:"092", picture:"https://cdn.bulbagarden.net/upload/c/cf/092MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gastly_(Pok%C3%A9mon)"}), +(Haunter:Pokemon {name:"Haunter", nationalPokedexNumber:93, regionalPokedexNumber:"093", picture:"https://cdn.bulbagarden.net/upload/7/71/093MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Haunter_(Pok%C3%A9mon)"}), +(Gengar:Pokemon {name:"Gengar", nationalPokedexNumber:94, regionalPokedexNumber:"094", picture:"https://cdn.bulbagarden.net/upload/a/a4/094MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gengar_(Pok%C3%A9mon)"}), +(Onix:Pokemon {name:"Onix", nationalPokedexNumber:95, regionalPokedexNumber:"095", picture:"https://cdn.bulbagarden.net/upload/c/cd/095MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Onix_(Pok%C3%A9mon)"}), +(Drowzee:Pokemon {name:"Drowzee", nationalPokedexNumber:96, regionalPokedexNumber:"096", picture:"https://cdn.bulbagarden.net/upload/8/8e/096MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Drowzee_(Pok%C3%A9mon)"}), +(Hypno:Pokemon {name:"Hypno", nationalPokedexNumber:97, regionalPokedexNumber:"097", picture:"https://cdn.bulbagarden.net/upload/9/98/097MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hypno_(Pok%C3%A9mon)"}), +(Krabby:Pokemon {name:"Krabby", nationalPokedexNumber:98, regionalPokedexNumber:"098", picture:"https://cdn.bulbagarden.net/upload/4/40/098MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Krabby_(Pok%C3%A9mon)"}), +(Kingler:Pokemon {name:"Kingler", nationalPokedexNumber:99, regionalPokedexNumber:"099", picture:"https://cdn.bulbagarden.net/upload/5/5c/099MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kingler_(Pok%C3%A9mon)"}), +(Voltorb:Pokemon {name:"Voltorb", nationalPokedexNumber:100, regionalPokedexNumber:"100", picture:"https://cdn.bulbagarden.net/upload/c/c1/100MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Voltorb_(Pok%C3%A9mon)"}), +(Electrode:Pokemon {name:"Electrode", nationalPokedexNumber:101, regionalPokedexNumber:"101", picture:"https://cdn.bulbagarden.net/upload/6/69/101MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Electrode_(Pok%C3%A9mon)"}), +(Exeggcute:Pokemon {name:"Exeggcute", nationalPokedexNumber:102, regionalPokedexNumber:"102", picture:"https://cdn.bulbagarden.net/upload/a/a6/102MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Exeggcute_(Pok%C3%A9mon)"}), +(Exeggutor:Pokemon {name:"Exeggutor", nationalPokedexNumber:103, regionalPokedexNumber:"103", picture:"https://cdn.bulbagarden.net/upload/d/db/103MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Exeggutor_(Pok%C3%A9mon)"}), +(Cubone:Pokemon {name:"Cubone", nationalPokedexNumber:104, regionalPokedexNumber:"104", picture:"https://cdn.bulbagarden.net/upload/2/2e/104MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cubone_(Pok%C3%A9mon)"}), +(Marowak:Pokemon {name:"Marowak", nationalPokedexNumber:105, regionalPokedexNumber:"105", picture:"https://cdn.bulbagarden.net/upload/6/6f/105MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Marowak_(Pok%C3%A9mon)"}), +(Hitmonlee:Pokemon {name:"Hitmonlee", nationalPokedexNumber:106, regionalPokedexNumber:"106", picture:"https://cdn.bulbagarden.net/upload/6/60/106MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hitmonlee_(Pok%C3%A9mon)"}), +(Hitmonchan:Pokemon {name:"Hitmonchan", nationalPokedexNumber:107, regionalPokedexNumber:"107", picture:"https://cdn.bulbagarden.net/upload/1/1a/107MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hitmonchan_(Pok%C3%A9mon)"}), +(Lickitung:Pokemon {name:"Lickitung", nationalPokedexNumber:108, regionalPokedexNumber:"108", picture:"https://cdn.bulbagarden.net/upload/2/25/108MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lickitung_(Pok%C3%A9mon)"}), +(Koffing:Pokemon {name:"Koffing", nationalPokedexNumber:109, regionalPokedexNumber:"109", picture:"https://cdn.bulbagarden.net/upload/3/3f/109MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Koffing_(Pok%C3%A9mon)"}), +(Weezing:Pokemon {name:"Weezing", nationalPokedexNumber:110, regionalPokedexNumber:"110", picture:"https://cdn.bulbagarden.net/upload/2/22/110MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Weezing_(Pok%C3%A9mon)"}), +(Rhyhorn:Pokemon {name:"Rhyhorn", nationalPokedexNumber:111, regionalPokedexNumber:"111", picture:"https://cdn.bulbagarden.net/upload/6/67/111MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rhyhorn_(Pok%C3%A9mon)"}), +(Rhydon:Pokemon {name:"Rhydon", nationalPokedexNumber:112, regionalPokedexNumber:"112", picture:"https://cdn.bulbagarden.net/upload/c/ce/112MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rhydon_(Pok%C3%A9mon)"}), +(Chansey:Pokemon {name:"Chansey", nationalPokedexNumber:113, regionalPokedexNumber:"113", picture:"https://cdn.bulbagarden.net/upload/e/ea/113MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chansey_(Pok%C3%A9mon)"}), +(Tangela:Pokemon {name:"Tangela", nationalPokedexNumber:114, regionalPokedexNumber:"114", picture:"https://cdn.bulbagarden.net/upload/4/45/114MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tangela_(Pok%C3%A9mon)"}), +(Kangaskhan:Pokemon {name:"Kangaskhan", nationalPokedexNumber:115, regionalPokedexNumber:"115", picture:"https://cdn.bulbagarden.net/upload/6/68/115MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kangaskhan_(Pok%C3%A9mon)"}), +(Horsea:Pokemon {name:"Horsea", nationalPokedexNumber:116, regionalPokedexNumber:"116", picture:"https://cdn.bulbagarden.net/upload/2/23/116MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Horsea_(Pok%C3%A9mon)"}), +(Seadra:Pokemon {name:"Seadra", nationalPokedexNumber:117, regionalPokedexNumber:"117", picture:"https://cdn.bulbagarden.net/upload/8/81/117MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Seadra_(Pok%C3%A9mon)"}), +(Goldeen:Pokemon {name:"Goldeen", nationalPokedexNumber:118, regionalPokedexNumber:"118", picture:"https://cdn.bulbagarden.net/upload/9/9b/118MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Goldeen_(Pok%C3%A9mon)"}), +(Seaking:Pokemon {name:"Seaking", nationalPokedexNumber:119, regionalPokedexNumber:"119", picture:"https://cdn.bulbagarden.net/upload/8/88/119MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Seaking_(Pok%C3%A9mon)"}), +(Staryu:Pokemon {name:"Staryu", nationalPokedexNumber:120, regionalPokedexNumber:"120", picture:"https://cdn.bulbagarden.net/upload/6/60/120MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Staryu_(Pok%C3%A9mon)"}), +(Starmie:Pokemon {name:"Starmie", nationalPokedexNumber:121, regionalPokedexNumber:"121", picture:"https://cdn.bulbagarden.net/upload/5/55/121MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Starmie_(Pok%C3%A9mon)"}), +(MrMime:Pokemon {name:"Mr. Mime", nationalPokedexNumber:122, regionalPokedexNumber:"122", picture:"https://cdn.bulbagarden.net/upload/5/58/122MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mr._Mime_(Pok%C3%A9mon)"}), +(Scyther:Pokemon {name:"Scyther", nationalPokedexNumber:123, regionalPokedexNumber:"123", picture:"https://cdn.bulbagarden.net/upload/5/54/123MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Scyther_(Pok%C3%A9mon)"}), +(Jynx:Pokemon {name:"Jynx", nationalPokedexNumber:124, regionalPokedexNumber:"124", picture:"https://cdn.bulbagarden.net/upload/f/f5/124MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Jynx_(Pok%C3%A9mon)"}), +(Electabuzz:Pokemon {name:"Electabuzz", nationalPokedexNumber:125, regionalPokedexNumber:"125", picture:"https://cdn.bulbagarden.net/upload/7/72/125MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Electabuzz_(Pok%C3%A9mon)"}), +(Magmar:Pokemon {name:"Magmar", nationalPokedexNumber:126, regionalPokedexNumber:"126", picture:"https://cdn.bulbagarden.net/upload/e/e7/126MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magmar_(Pok%C3%A9mon)"}), +(Pinsir:Pokemon {name:"Pinsir", nationalPokedexNumber:127, regionalPokedexNumber:"127", picture:"https://cdn.bulbagarden.net/upload/5/5c/127MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pinsir_(Pok%C3%A9mon)"}), +(Tauros:Pokemon {name:"Tauros", nationalPokedexNumber:128, regionalPokedexNumber:"128", picture:"https://cdn.bulbagarden.net/upload/9/95/128MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tauros_(Pok%C3%A9mon)"}), +(Magikarp:Pokemon {name:"Magikarp", nationalPokedexNumber:129, regionalPokedexNumber:"129", picture:"https://cdn.bulbagarden.net/upload/7/7c/129MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magikarp_(Pok%C3%A9mon)"}), +(Gyarados:Pokemon {name:"Gyarados", nationalPokedexNumber:130, regionalPokedexNumber:"130", picture:"https://cdn.bulbagarden.net/upload/a/a0/130MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gyarados_(Pok%C3%A9mon)"}), +(Lapras:Pokemon {name:"Lapras", nationalPokedexNumber:131, regionalPokedexNumber:"131", picture:"https://cdn.bulbagarden.net/upload/4/4b/131MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lapras_(Pok%C3%A9mon)"}), +(Ditto:Pokemon {name:"Ditto", nationalPokedexNumber:132, regionalPokedexNumber:"132", picture:"https://cdn.bulbagarden.net/upload/5/53/132MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ditto_(Pok%C3%A9mon)"}), +(Eevee:Pokemon {name:"Eevee", nationalPokedexNumber:133, regionalPokedexNumber:"133", picture:"https://cdn.bulbagarden.net/upload/d/de/133MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Eevee_(Pok%C3%A9mon)"}), +(Vaporeon:Pokemon {name:"Vaporeon", nationalPokedexNumber:134, regionalPokedexNumber:"134", picture:"https://cdn.bulbagarden.net/upload/b/be/134MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vaporeon_(Pok%C3%A9mon)"}), +(Jolteon:Pokemon {name:"Jolteon", nationalPokedexNumber:135, regionalPokedexNumber:"135", picture:"https://cdn.bulbagarden.net/upload/1/16/135MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Jolteon_(Pok%C3%A9mon)"}), +(Flareon:Pokemon {name:"Flareon", nationalPokedexNumber:136, regionalPokedexNumber:"136", picture:"https://cdn.bulbagarden.net/upload/3/30/136MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Flareon_(Pok%C3%A9mon)"}), +(Porygon:Pokemon {name:"Porygon", nationalPokedexNumber:137, regionalPokedexNumber:"137", picture:"https://cdn.bulbagarden.net/upload/f/f7/137MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Porygon_(Pok%C3%A9mon)"}), +(Omanyte:Pokemon {name:"Omanyte", nationalPokedexNumber:138, regionalPokedexNumber:"138", picture:"https://cdn.bulbagarden.net/upload/9/97/138MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Omanyte_(Pok%C3%A9mon)"}), +(Omastar:Pokemon {name:"Omastar", nationalPokedexNumber:139, regionalPokedexNumber:"139", picture:"https://cdn.bulbagarden.net/upload/2/2a/139MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Omastar_(Pok%C3%A9mon)"}), +(Kabuto:Pokemon {name:"Kabuto", nationalPokedexNumber:140, regionalPokedexNumber:"140", picture:"https://cdn.bulbagarden.net/upload/1/1e/140MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kabuto_(Pok%C3%A9mon)"}), +(Kabutops:Pokemon {name:"Kabutops", nationalPokedexNumber:141, regionalPokedexNumber:"141", picture:"https://cdn.bulbagarden.net/upload/0/08/141MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kabutops_(Pok%C3%A9mon)"}), +(Aerodactyl:Pokemon {name:"Aerodactyl", nationalPokedexNumber:142, regionalPokedexNumber:"142", picture:"https://cdn.bulbagarden.net/upload/d/d1/142MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Aerodactyl_(Pok%C3%A9mon)"}), +(Snorlax:Pokemon {name:"Snorlax", nationalPokedexNumber:143, regionalPokedexNumber:"143", picture:"https://cdn.bulbagarden.net/upload/d/d6/143MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Snorlax_(Pok%C3%A9mon)"}), +(Articuno:Pokemon {name:"Articuno", nationalPokedexNumber:144, regionalPokedexNumber:"144", picture:"https://cdn.bulbagarden.net/upload/0/04/144MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Articuno_(Pok%C3%A9mon)"}), +(Zapdos:Pokemon {name:"Zapdos", nationalPokedexNumber:145, regionalPokedexNumber:"145", picture:"https://cdn.bulbagarden.net/upload/3/3f/145MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zapdos_(Pok%C3%A9mon)"}), +(Moltres:Pokemon {name:"Moltres", nationalPokedexNumber:146, regionalPokedexNumber:"146", picture:"https://cdn.bulbagarden.net/upload/f/fe/146MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Moltres_(Pok%C3%A9mon)"}), +(Dratini:Pokemon {name:"Dratini", nationalPokedexNumber:147, regionalPokedexNumber:"147", picture:"https://cdn.bulbagarden.net/upload/2/26/147MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dratini_(Pok%C3%A9mon)"}), +(Dragonair:Pokemon {name:"Dragonair", nationalPokedexNumber:148, regionalPokedexNumber:"148", picture:"https://cdn.bulbagarden.net/upload/4/4e/148MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dragonair_(Pok%C3%A9mon)"}), +(Dragonite:Pokemon {name:"Dragonite", nationalPokedexNumber:149, regionalPokedexNumber:"149", picture:"https://cdn.bulbagarden.net/upload/c/cc/149MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dragonite_(Pok%C3%A9mon)"}), +(Mewtwo:Pokemon {name:"Mewtwo", nationalPokedexNumber:150, regionalPokedexNumber:"150", picture:"https://cdn.bulbagarden.net/upload/1/1a/150MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mewtwo_(Pok%C3%A9mon)"}), +(Mew:Pokemon {name:"Mew", nationalPokedexNumber:151, regionalPokedexNumber:"151", picture:"https://cdn.bulbagarden.net/upload/a/a7/151MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mew_(Pok%C3%A9mon)"}), +(Chikorita:Pokemon {name:"Chikorita", nationalPokedexNumber:152, regionalPokedexNumber:"001", picture:"https://cdn.bulbagarden.net/upload/7/79/152MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chikorita_(Pok%C3%A9mon)"}), +(Bayleef:Pokemon {name:"Bayleef", nationalPokedexNumber:153, regionalPokedexNumber:"002", picture:"https://cdn.bulbagarden.net/upload/3/31/153MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bayleef_(Pok%C3%A9mon)"}), +(Meganium:Pokemon {name:"Meganium", nationalPokedexNumber:154, regionalPokedexNumber:"003", picture:"https://cdn.bulbagarden.net/upload/8/89/154MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Meganium_(Pok%C3%A9mon)"}), +(Cyndaquil:Pokemon {name:"Cyndaquil", nationalPokedexNumber:155, regionalPokedexNumber:"004", picture:"https://cdn.bulbagarden.net/upload/3/39/155MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cyndaquil_(Pok%C3%A9mon)"}), +(Quilava:Pokemon {name:"Quilava", nationalPokedexNumber:156, regionalPokedexNumber:"005", picture:"https://cdn.bulbagarden.net/upload/3/36/156MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Quilava_(Pok%C3%A9mon)"}), +(Typhlosion:Pokemon {name:"Typhlosion", nationalPokedexNumber:157, regionalPokedexNumber:"006", picture:"https://cdn.bulbagarden.net/upload/5/56/157MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Typhlosion_(Pok%C3%A9mon)"}), +(Totodile:Pokemon {name:"Totodile", nationalPokedexNumber:158, regionalPokedexNumber:"007", picture:"https://cdn.bulbagarden.net/upload/f/f5/158MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Totodile_(Pok%C3%A9mon)"}), +(Croconaw:Pokemon {name:"Croconaw", nationalPokedexNumber:159, regionalPokedexNumber:"008", picture:"https://cdn.bulbagarden.net/upload/e/ea/159MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Croconaw_(Pok%C3%A9mon)"}), +(Feraligatr:Pokemon {name:"Feraligatr", nationalPokedexNumber:160, regionalPokedexNumber:"009", picture:"https://cdn.bulbagarden.net/upload/6/6d/160MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Feraligatr_(Pok%C3%A9mon)"}), +(Sentret:Pokemon {name:"Sentret", nationalPokedexNumber:161, regionalPokedexNumber:"019", picture:"https://cdn.bulbagarden.net/upload/5/5c/161MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sentret_(Pok%C3%A9mon)"}), +(Furret:Pokemon {name:"Furret", nationalPokedexNumber:162, regionalPokedexNumber:"020", picture:"https://cdn.bulbagarden.net/upload/c/c1/162MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Furret_(Pok%C3%A9mon)"}), +(Hoothoot:Pokemon {name:"Hoothoot", nationalPokedexNumber:163, regionalPokedexNumber:"015", picture:"https://cdn.bulbagarden.net/upload/c/c0/163MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hoothoot_(Pok%C3%A9mon)"}), +(Noctowl:Pokemon {name:"Noctowl", nationalPokedexNumber:164, regionalPokedexNumber:"016", picture:"https://cdn.bulbagarden.net/upload/7/7a/164MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Noctowl_(Pok%C3%A9mon)"}), +(Ledyba:Pokemon {name:"Ledyba", nationalPokedexNumber:165, regionalPokedexNumber:"030", picture:"https://cdn.bulbagarden.net/upload/e/e1/165MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ledyba_(Pok%C3%A9mon)"}), +(Ledian:Pokemon {name:"Ledian", nationalPokedexNumber:166, regionalPokedexNumber:"031", picture:"https://cdn.bulbagarden.net/upload/4/44/166MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ledian_(Pok%C3%A9mon)"}), +(Spinarak:Pokemon {name:"Spinarak", nationalPokedexNumber:167, regionalPokedexNumber:"032", picture:"https://cdn.bulbagarden.net/upload/0/08/167MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Spinarak_(Pok%C3%A9mon)"}), +(Ariados:Pokemon {name:"Ariados", nationalPokedexNumber:168, regionalPokedexNumber:"033", picture:"https://cdn.bulbagarden.net/upload/a/ae/168MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ariados_(Pok%C3%A9mon)"}), +(Crobat:Pokemon {name:"Crobat", nationalPokedexNumber:169, regionalPokedexNumber:"039", picture:"https://cdn.bulbagarden.net/upload/9/96/169MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Crobat_(Pok%C3%A9mon)"}), +(Chinchou:Pokemon {name:"Chinchou", nationalPokedexNumber:170, regionalPokedexNumber:"176", picture:"https://cdn.bulbagarden.net/upload/2/22/170MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chinchou_(Pok%C3%A9mon)"}), +(Lanturn:Pokemon {name:"Lanturn", nationalPokedexNumber:171, regionalPokedexNumber:"177", picture:"https://cdn.bulbagarden.net/upload/4/43/171MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lanturn_(Pok%C3%A9mon)"}), +(Pichu:Pokemon {name:"Pichu", nationalPokedexNumber:172, regionalPokedexNumber:"021", picture:"https://cdn.bulbagarden.net/upload/5/50/172MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pichu_(Pok%C3%A9mon)"}), +(Cleffa:Pokemon {name:"Cleffa", nationalPokedexNumber:173, regionalPokedexNumber:"040", picture:"https://cdn.bulbagarden.net/upload/9/90/173MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cleffa_(Pok%C3%A9mon)"}), +(Igglybuff:Pokemon {name:"Igglybuff", nationalPokedexNumber:174, regionalPokedexNumber:"044", picture:"https://cdn.bulbagarden.net/upload/4/44/174MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Igglybuff_(Pok%C3%A9mon)"}), +(Togepi:Pokemon {name:"Togepi", nationalPokedexNumber:175, regionalPokedexNumber:"046", picture:"https://cdn.bulbagarden.net/upload/e/ef/175MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Togepi_(Pok%C3%A9mon)"}), +(Togetic:Pokemon {name:"Togetic", nationalPokedexNumber:176, regionalPokedexNumber:"047", picture:"https://cdn.bulbagarden.net/upload/8/82/176MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Togetic_(Pok%C3%A9mon)"}), +(Natu:Pokemon {name:"Natu", nationalPokedexNumber:177, regionalPokedexNumber:"161", picture:"https://cdn.bulbagarden.net/upload/0/07/177MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Natu_(Pok%C3%A9mon)"}), +(Xatu:Pokemon {name:"Xatu", nationalPokedexNumber:178, regionalPokedexNumber:"162", picture:"https://cdn.bulbagarden.net/upload/1/12/178MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Xatu_(Pok%C3%A9mon)"}), +(Mareep:Pokemon {name:"Mareep", nationalPokedexNumber:179, regionalPokedexNumber:"053", picture:"https://cdn.bulbagarden.net/upload/7/75/179MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mareep_(Pok%C3%A9mon)"}), +(Flaaffy:Pokemon {name:"Flaaffy", nationalPokedexNumber:180, regionalPokedexNumber:"054", picture:"https://cdn.bulbagarden.net/upload/2/2a/180MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Flaaffy_(Pok%C3%A9mon)"}), +(Ampharos:Pokemon {name:"Ampharos", nationalPokedexNumber:181, regionalPokedexNumber:"055", picture:"https://cdn.bulbagarden.net/upload/9/91/181MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ampharos_(Pok%C3%A9mon)"}), +(Bellossom:Pokemon {name:"Bellossom", nationalPokedexNumber:182, regionalPokedexNumber:"086", picture:"https://cdn.bulbagarden.net/upload/8/85/182MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bellossom_(Pok%C3%A9mon)"}), +(Marill:Pokemon {name:"Marill", nationalPokedexNumber:183, regionalPokedexNumber:"132", picture:"https://cdn.bulbagarden.net/upload/3/36/183MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Marill_(Pok%C3%A9mon)"}), +(Azumarill:Pokemon {name:"Azumarill", nationalPokedexNumber:184, regionalPokedexNumber:"133", picture:"https://cdn.bulbagarden.net/upload/8/89/184MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Azumarill_(Pok%C3%A9mon)"}), +(Sudowoodo:Pokemon {name:"Sudowoodo", nationalPokedexNumber:185, regionalPokedexNumber:"107", picture:"https://cdn.bulbagarden.net/upload/3/3b/185MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sudowoodo_(Pok%C3%A9mon)"}), +(Politoed:Pokemon {name:"Politoed", nationalPokedexNumber:186, regionalPokedexNumber:"075", picture:"https://cdn.bulbagarden.net/upload/e/e9/186MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Politoed_(Pok%C3%A9mon)"}), +(Hoppip:Pokemon {name:"Hoppip", nationalPokedexNumber:187, regionalPokedexNumber:"067", picture:"https://cdn.bulbagarden.net/upload/4/43/187MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hoppip_(Pok%C3%A9mon)"}), +(Skiploom:Pokemon {name:"Skiploom", nationalPokedexNumber:188, regionalPokedexNumber:"068", picture:"https://cdn.bulbagarden.net/upload/8/88/188MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Skiploom_(Pok%C3%A9mon)"}), +(Jumpluff:Pokemon {name:"Jumpluff", nationalPokedexNumber:189, regionalPokedexNumber:"069", picture:"https://cdn.bulbagarden.net/upload/b/ba/189MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Jumpluff_(Pok%C3%A9mon)"}), +(Aipom:Pokemon {name:"Aipom", nationalPokedexNumber:190, regionalPokedexNumber:"123", picture:"https://cdn.bulbagarden.net/upload/0/00/190MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Aipom_(Pok%C3%A9mon)"}), +(Sunkern:Pokemon {name:"Sunkern", nationalPokedexNumber:191, regionalPokedexNumber:"103", picture:"https://cdn.bulbagarden.net/upload/e/e5/191MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sunkern_(Pok%C3%A9mon)"}), +(Sunflora:Pokemon {name:"Sunflora", nationalPokedexNumber:192, regionalPokedexNumber:"104", picture:"https://cdn.bulbagarden.net/upload/5/5a/192MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sunflora_(Pok%C3%A9mon)"}), +(Yanma:Pokemon {name:"Yanma", nationalPokedexNumber:193, regionalPokedexNumber:"101", picture:"https://cdn.bulbagarden.net/upload/9/97/193MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Yanma_(Pok%C3%A9mon)"}), +(Wooper:Pokemon {name:"Wooper", nationalPokedexNumber:194, regionalPokedexNumber:"056", picture:"https://cdn.bulbagarden.net/upload/0/0d/194MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wooper_(Pok%C3%A9mon)"}), +(Quagsire:Pokemon {name:"Quagsire", nationalPokedexNumber:195, regionalPokedexNumber:"057", picture:"https://cdn.bulbagarden.net/upload/8/8b/195MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Quagsire_(Pok%C3%A9mon)"}), +(Espeon:Pokemon {name:"Espeon", nationalPokedexNumber:196, regionalPokedexNumber:"188", picture:"https://cdn.bulbagarden.net/upload/a/a7/196MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Espeon_(Pok%C3%A9mon)"}), +(Umbreon:Pokemon {name:"Umbreon", nationalPokedexNumber:197, regionalPokedexNumber:"189", picture:"https://cdn.bulbagarden.net/upload/7/76/197MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Umbreon_(Pok%C3%A9mon)"}), +(Murkrow:Pokemon {name:"Murkrow", nationalPokedexNumber:198, regionalPokedexNumber:"213", picture:"https://cdn.bulbagarden.net/upload/7/71/198MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Murkrow_(Pok%C3%A9mon)"}), +(Slowking:Pokemon {name:"Slowking", nationalPokedexNumber:199, regionalPokedexNumber:"082", picture:"https://cdn.bulbagarden.net/upload/8/80/199MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Slowking_(Pok%C3%A9mon)"}), +(Misdreavus:Pokemon {name:"Misdreavus", nationalPokedexNumber:200, regionalPokedexNumber:"219", picture:"https://cdn.bulbagarden.net/upload/8/89/200MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Misdreavus_(Pok%C3%A9mon)"}), +(Unown:Pokemon {name:"Unown", nationalPokedexNumber:201, regionalPokedexNumber:"061", picture:"https://cdn.bulbagarden.net/upload/a/a4/201MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Unown_(Pok%C3%A9mon)"}), +(Wobbuffet:Pokemon {name:"Wobbuffet", nationalPokedexNumber:202, regionalPokedexNumber:"108", picture:"https://cdn.bulbagarden.net/upload/f/fa/202MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wobbuffet_(Pok%C3%A9mon)"}), +(Girafarig:Pokemon {name:"Girafarig", nationalPokedexNumber:203, regionalPokedexNumber:"149", picture:"https://cdn.bulbagarden.net/upload/6/6a/203MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Girafarig_(Pok%C3%A9mon)"}), +(Pineco:Pokemon {name:"Pineco", nationalPokedexNumber:204, regionalPokedexNumber:"093", picture:"https://cdn.bulbagarden.net/upload/5/52/204MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pineco_(Pok%C3%A9mon)"}), +(Forretress:Pokemon {name:"Forretress", nationalPokedexNumber:205, regionalPokedexNumber:"094", picture:"https://cdn.bulbagarden.net/upload/5/5f/205MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Forretress_(Pok%C3%A9mon)"}), +(Dunsparce:Pokemon {name:"Dunsparce", nationalPokedexNumber:206, regionalPokedexNumber:"052", picture:"https://cdn.bulbagarden.net/upload/b/b0/206MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dunsparce_(Pok%C3%A9mon)"}), +(Gligar:Pokemon {name:"Gligar", nationalPokedexNumber:207, regionalPokedexNumber:"193", picture:"https://cdn.bulbagarden.net/upload/6/67/207MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gligar_(Pok%C3%A9mon)"}), +(Steelix:Pokemon {name:"Steelix", nationalPokedexNumber:208, regionalPokedexNumber:"063", picture:"https://cdn.bulbagarden.net/upload/b/bf/208MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Steelix_(Pok%C3%A9mon)"}), +(Snubbull:Pokemon {name:"Snubbull", nationalPokedexNumber:209, regionalPokedexNumber:"125", picture:"https://cdn.bulbagarden.net/upload/6/6c/209MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Snubbull_(Pok%C3%A9mon)"}), +(Granbull:Pokemon {name:"Granbull", nationalPokedexNumber:210, regionalPokedexNumber:"126", picture:"https://cdn.bulbagarden.net/upload/c/cd/210MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Granbull_(Pok%C3%A9mon)"}), +(Qwilfish:Pokemon {name:"Qwilfish", nationalPokedexNumber:211, regionalPokedexNumber:"163", picture:"https://cdn.bulbagarden.net/upload/9/93/211MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Qwilfish_(Pok%C3%A9mon)"}), +(Scizor:Pokemon {name:"Scizor", nationalPokedexNumber:212, regionalPokedexNumber:"112", picture:"https://cdn.bulbagarden.net/upload/f/f2/212MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Scizor_(Pok%C3%A9mon)"}), +(Shuckle:Pokemon {name:"Shuckle", nationalPokedexNumber:213, regionalPokedexNumber:"168", picture:"https://cdn.bulbagarden.net/upload/0/0a/213MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shuckle_(Pok%C3%A9mon)"}), +(Heracross:Pokemon {name:"Heracross", nationalPokedexNumber:214, regionalPokedexNumber:"114", picture:"https://cdn.bulbagarden.net/upload/4/4c/214MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Heracross_(Pok%C3%A9mon)"}), +(Sneasel:Pokemon {name:"Sneasel", nationalPokedexNumber:215, regionalPokedexNumber:"218", picture:"https://cdn.bulbagarden.net/upload/6/67/215MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sneasel_(Pok%C3%A9mon)"}), +(Teddiursa:Pokemon {name:"Teddiursa", nationalPokedexNumber:216, regionalPokedexNumber:"198", picture:"https://cdn.bulbagarden.net/upload/5/5e/216MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Teddiursa_(Pok%C3%A9mon)"}), +(Ursaring:Pokemon {name:"Ursaring", nationalPokedexNumber:217, regionalPokedexNumber:"199", picture:"https://cdn.bulbagarden.net/upload/5/50/217MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ursaring_(Pok%C3%A9mon)"}), +(Slugma:Pokemon {name:"Slugma", nationalPokedexNumber:218, regionalPokedexNumber:"216", picture:"https://cdn.bulbagarden.net/upload/d/dc/218MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Slugma_(Pok%C3%A9mon)"}), +(Magcargo:Pokemon {name:"Magcargo", nationalPokedexNumber:219, regionalPokedexNumber:"217", picture:"https://cdn.bulbagarden.net/upload/6/6b/219MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magcargo_(Pok%C3%A9mon)"}), +(Swinub:Pokemon {name:"Swinub", nationalPokedexNumber:220, regionalPokedexNumber:"195", picture:"https://cdn.bulbagarden.net/upload/1/10/220MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swinub_(Pok%C3%A9mon)"}), +(Piloswine:Pokemon {name:"Piloswine", nationalPokedexNumber:221, regionalPokedexNumber:"196", picture:"https://cdn.bulbagarden.net/upload/6/6d/221MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Piloswine_(Pok%C3%A9mon)"}), +(Corsola:Pokemon {name:"Corsola", nationalPokedexNumber:222, regionalPokedexNumber:"173", picture:"https://cdn.bulbagarden.net/upload/9/97/222MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Corsola_(Pok%C3%A9mon)"}), +(Remoraid:Pokemon {name:"Remoraid", nationalPokedexNumber:223, regionalPokedexNumber:"174", picture:"https://cdn.bulbagarden.net/upload/4/4f/223MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Remoraid_(Pok%C3%A9mon)"}), +(Octillery:Pokemon {name:"Octillery", nationalPokedexNumber:224, regionalPokedexNumber:"175", picture:"https://cdn.bulbagarden.net/upload/b/b5/224MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Octillery_(Pok%C3%A9mon)"}), +(Delibird:Pokemon {name:"Delibird", nationalPokedexNumber:225, regionalPokedexNumber:"194", picture:"https://cdn.bulbagarden.net/upload/0/0b/225MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Delibird_(Pok%C3%A9mon)"}), +(Mantine:Pokemon {name:"Mantine", nationalPokedexNumber:226, regionalPokedexNumber:"202", picture:"https://cdn.bulbagarden.net/upload/1/11/226MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mantine_(Pok%C3%A9mon)"}), +(Skarmory:Pokemon {name:"Skarmory", nationalPokedexNumber:227, regionalPokedexNumber:"203", picture:"https://cdn.bulbagarden.net/upload/c/c9/227MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Skarmory_(Pok%C3%A9mon)"}), +(Houndour:Pokemon {name:"Houndour", nationalPokedexNumber:228, regionalPokedexNumber:"214", picture:"https://cdn.bulbagarden.net/upload/3/3b/228MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Houndour_(Pok%C3%A9mon)"}), +(Houndoom:Pokemon {name:"Houndoom", nationalPokedexNumber:229, regionalPokedexNumber:"215", picture:"https://cdn.bulbagarden.net/upload/6/6b/229MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Houndoom_(Pok%C3%A9mon)"}), +(Kingdra:Pokemon {name:"Kingdra", nationalPokedexNumber:230, regionalPokedexNumber:"192", picture:"https://cdn.bulbagarden.net/upload/8/8e/230MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kingdra_(Pok%C3%A9mon)"}), +(Phanpy:Pokemon {name:"Phanpy", nationalPokedexNumber:231, regionalPokedexNumber:"200", picture:"https://cdn.bulbagarden.net/upload/9/90/231MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Phanpy_(Pok%C3%A9mon)"}), +(Donphan:Pokemon {name:"Donphan", nationalPokedexNumber:232, regionalPokedexNumber:"201", picture:"https://cdn.bulbagarden.net/upload/2/2c/232MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Donphan_(Pok%C3%A9mon)"}), +(Porygon2:Pokemon {name:"Porygon2", nationalPokedexNumber:233, regionalPokedexNumber:"221", picture:"https://cdn.bulbagarden.net/upload/7/78/233MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Porygon2_(Pok%C3%A9mon)"}), +(Stantler:Pokemon {name:"Stantler", nationalPokedexNumber:234, regionalPokedexNumber:"131", picture:"https://cdn.bulbagarden.net/upload/4/40/234MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Stantler_(Pok%C3%A9mon)"}), +(Smeargle:Pokemon {name:"Smeargle", nationalPokedexNumber:235, regionalPokedexNumber:"159", picture:"https://cdn.bulbagarden.net/upload/7/7c/235MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Smeargle_(Pok%C3%A9mon)"}), +(Tyrogue:Pokemon {name:"Tyrogue", nationalPokedexNumber:236, regionalPokedexNumber:"145", picture:"https://cdn.bulbagarden.net/upload/e/ed/236MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tyrogue_(Pok%C3%A9mon)"}), +(Hitmontop:Pokemon {name:"Hitmontop", nationalPokedexNumber:237, regionalPokedexNumber:"148", picture:"https://cdn.bulbagarden.net/upload/e/ed/237MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hitmontop_(Pok%C3%A9mon)"}), +(Smoochum:Pokemon {name:"Smoochum", nationalPokedexNumber:238, regionalPokedexNumber:"154", picture:"https://cdn.bulbagarden.net/upload/0/00/238MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Smoochum_(Pok%C3%A9mon)"}), +(Elekid:Pokemon {name:"Elekid", nationalPokedexNumber:239, regionalPokedexNumber:"156", picture:"https://cdn.bulbagarden.net/upload/b/b5/239MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Elekid_(Pok%C3%A9mon)"}), +(Magby:Pokemon {name:"Magby", nationalPokedexNumber:240, regionalPokedexNumber:"152", picture:"https://cdn.bulbagarden.net/upload/e/e4/240MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magby_(Pok%C3%A9mon)"}), +(Miltank:Pokemon {name:"Miltank", nationalPokedexNumber:241, regionalPokedexNumber:"151", picture:"https://cdn.bulbagarden.net/upload/c/ce/241MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Miltank_(Pok%C3%A9mon)"}), +(Blissey:Pokemon {name:"Blissey", nationalPokedexNumber:242, regionalPokedexNumber:"223", picture:"https://cdn.bulbagarden.net/upload/f/f8/242MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Blissey_(Pok%C3%A9mon)"}), +(Raikou:Pokemon {name:"Raikou", nationalPokedexNumber:243, regionalPokedexNumber:"243", picture:"https://cdn.bulbagarden.net/upload/8/80/243MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Raikou_(Pok%C3%A9mon)"}), +(Entei:Pokemon {name:"Entei", nationalPokedexNumber:244, regionalPokedexNumber:"244", picture:"https://cdn.bulbagarden.net/upload/4/4e/244MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Entei_(Pok%C3%A9mon)"}), +(Suicune:Pokemon {name:"Suicune", nationalPokedexNumber:245, regionalPokedexNumber:"245", picture:"https://cdn.bulbagarden.net/upload/e/ea/245MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Suicune_(Pok%C3%A9mon)"}), +(Larvitar:Pokemon {name:"Larvitar", nationalPokedexNumber:246, regionalPokedexNumber:"249", picture:"https://cdn.bulbagarden.net/upload/8/85/246MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Larvitar_(Pok%C3%A9mon)"}), +(Pupitar:Pokemon {name:"Pupitar", nationalPokedexNumber:247, regionalPokedexNumber:"250", picture:"https://cdn.bulbagarden.net/upload/f/f9/247MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pupitar_(Pok%C3%A9mon)"}), +(Tyranitar:Pokemon {name:"Tyranitar", nationalPokedexNumber:248, regionalPokedexNumber:"251", picture:"https://cdn.bulbagarden.net/upload/0/0f/248MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tyranitar_(Pok%C3%A9mon)"}), +(Lugia:Pokemon {name:"Lugia", nationalPokedexNumber:249, regionalPokedexNumber:"252", picture:"https://cdn.bulbagarden.net/upload/c/c8/249MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lugia_(Pok%C3%A9mon)"}), +(HoOh:Pokemon {name:"Ho-Oh", nationalPokedexNumber:250, regionalPokedexNumber:"253", picture:"https://cdn.bulbagarden.net/upload/e/ee/250MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ho-Oh_(Pok%C3%A9mon)"}), +(Celebi:Pokemon {name:"Celebi", nationalPokedexNumber:251, regionalPokedexNumber:"256", picture:"https://cdn.bulbagarden.net/upload/5/5a/251MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Celebi_(Pok%C3%A9mon)"}), +(Treecko:Pokemon {name:"Treecko", nationalPokedexNumber:252, regionalPokedexNumber:"001", picture:"https://cdn.bulbagarden.net/upload/c/cf/252MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Treecko_(Pok%C3%A9mon)"}), +(Grovyle:Pokemon {name:"Grovyle", nationalPokedexNumber:253, regionalPokedexNumber:"002", picture:"https://cdn.bulbagarden.net/upload/a/a5/253MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Grovyle_(Pok%C3%A9mon)"}), +(Sceptile:Pokemon {name:"Sceptile", nationalPokedexNumber:254, regionalPokedexNumber:"003", picture:"https://cdn.bulbagarden.net/upload/f/ff/254MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sceptile_(Pok%C3%A9mon)"}), +(Torchic:Pokemon {name:"Torchic", nationalPokedexNumber:255, regionalPokedexNumber:"004", picture:"https://cdn.bulbagarden.net/upload/d/d5/255MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Torchic_(Pok%C3%A9mon)"}), +(Combusken:Pokemon {name:"Combusken", nationalPokedexNumber:256, regionalPokedexNumber:"005", picture:"https://cdn.bulbagarden.net/upload/4/4d/256MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Combusken_(Pok%C3%A9mon)"}), +(Blaziken:Pokemon {name:"Blaziken", nationalPokedexNumber:257, regionalPokedexNumber:"006", picture:"https://cdn.bulbagarden.net/upload/3/3e/257MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Blaziken_(Pok%C3%A9mon)"}), +(Mudkip:Pokemon {name:"Mudkip", nationalPokedexNumber:258, regionalPokedexNumber:"007", picture:"https://cdn.bulbagarden.net/upload/1/19/258MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mudkip_(Pok%C3%A9mon)"}), +(Marshtomp:Pokemon {name:"Marshtomp", nationalPokedexNumber:259, regionalPokedexNumber:"008", picture:"https://cdn.bulbagarden.net/upload/2/21/259MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Marshtomp_(Pok%C3%A9mon)"}), +(Swampert:Pokemon {name:"Swampert", nationalPokedexNumber:260, regionalPokedexNumber:"009", picture:"https://cdn.bulbagarden.net/upload/a/a6/260MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swampert_(Pok%C3%A9mon)"}), +(Poochyena:Pokemon {name:"Poochyena", nationalPokedexNumber:261, regionalPokedexNumber:"010", picture:"https://cdn.bulbagarden.net/upload/5/5c/261MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Poochyena_(Pok%C3%A9mon)"}), +(Mightyena:Pokemon {name:"Mightyena", nationalPokedexNumber:262, regionalPokedexNumber:"011", picture:"https://cdn.bulbagarden.net/upload/4/4d/262MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mightyena_(Pok%C3%A9mon)"}), +(Zigzagoon:Pokemon {name:"Zigzagoon", nationalPokedexNumber:263, regionalPokedexNumber:"012", picture:"https://cdn.bulbagarden.net/upload/a/a5/263MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zigzagoon_(Pok%C3%A9mon)"}), +(Linoone:Pokemon {name:"Linoone", nationalPokedexNumber:264, regionalPokedexNumber:"013", picture:"https://cdn.bulbagarden.net/upload/7/71/264MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Linoone_(Pok%C3%A9mon)"}), +(Wurmple:Pokemon {name:"Wurmple", nationalPokedexNumber:265, regionalPokedexNumber:"014", picture:"https://cdn.bulbagarden.net/upload/7/78/265MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wurmple_(Pok%C3%A9mon)"}), +(Silcoon:Pokemon {name:"Silcoon", nationalPokedexNumber:266, regionalPokedexNumber:"015", picture:"https://cdn.bulbagarden.net/upload/4/41/266MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Silcoon_(Pok%C3%A9mon)"}), +(Beautifly:Pokemon {name:"Beautifly", nationalPokedexNumber:267, regionalPokedexNumber:"016", picture:"https://cdn.bulbagarden.net/upload/e/e9/267MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Beautifly_(Pok%C3%A9mon)"}), +(Cascoon:Pokemon {name:"Cascoon", nationalPokedexNumber:268, regionalPokedexNumber:"017", picture:"https://cdn.bulbagarden.net/upload/6/64/268MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cascoon_(Pok%C3%A9mon)"}), +(Dustox:Pokemon {name:"Dustox", nationalPokedexNumber:269, regionalPokedexNumber:"018", picture:"https://cdn.bulbagarden.net/upload/a/ad/269MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dustox_(Pok%C3%A9mon)"}), +(Lotad:Pokemon {name:"Lotad", nationalPokedexNumber:270, regionalPokedexNumber:"019", picture:"https://cdn.bulbagarden.net/upload/1/12/270MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lotad_(Pok%C3%A9mon)"}), +(Lombre:Pokemon {name:"Lombre", nationalPokedexNumber:271, regionalPokedexNumber:"020", picture:"https://cdn.bulbagarden.net/upload/e/e1/271MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lombre_(Pok%C3%A9mon)"}), +(Ludicolo:Pokemon {name:"Ludicolo", nationalPokedexNumber:272, regionalPokedexNumber:"021", picture:"https://cdn.bulbagarden.net/upload/a/a0/272MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ludicolo_(Pok%C3%A9mon)"}), +(Seedot:Pokemon {name:"Seedot", nationalPokedexNumber:273, regionalPokedexNumber:"022", picture:"https://cdn.bulbagarden.net/upload/c/cb/273MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Seedot_(Pok%C3%A9mon)"}), +(Nuzleaf:Pokemon {name:"Nuzleaf", nationalPokedexNumber:274, regionalPokedexNumber:"023", picture:"https://cdn.bulbagarden.net/upload/c/c6/274MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nuzleaf_(Pok%C3%A9mon)"}), +(Shiftry:Pokemon {name:"Shiftry", nationalPokedexNumber:275, regionalPokedexNumber:"024", picture:"https://cdn.bulbagarden.net/upload/3/34/275MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shiftry_(Pok%C3%A9mon)"}), +(Taillow:Pokemon {name:"Taillow", nationalPokedexNumber:276, regionalPokedexNumber:"025", picture:"https://cdn.bulbagarden.net/upload/f/f3/276MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Taillow_(Pok%C3%A9mon)"}), +(Swellow:Pokemon {name:"Swellow", nationalPokedexNumber:277, regionalPokedexNumber:"026", picture:"https://cdn.bulbagarden.net/upload/1/1a/277MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swellow_(Pok%C3%A9mon)"}), +(Wingull:Pokemon {name:"Wingull", nationalPokedexNumber:278, regionalPokedexNumber:"027", picture:"https://cdn.bulbagarden.net/upload/b/b4/278MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wingull_(Pok%C3%A9mon)"}), +(Pelipper:Pokemon {name:"Pelipper", nationalPokedexNumber:279, regionalPokedexNumber:"028", picture:"https://cdn.bulbagarden.net/upload/9/96/279MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pelipper_(Pok%C3%A9mon)"}), +(Ralts:Pokemon {name:"Ralts", nationalPokedexNumber:280, regionalPokedexNumber:"029", picture:"https://cdn.bulbagarden.net/upload/3/32/280MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ralts_(Pok%C3%A9mon)"}), +(Kirlia:Pokemon {name:"Kirlia", nationalPokedexNumber:281, regionalPokedexNumber:"030", picture:"https://cdn.bulbagarden.net/upload/7/77/281MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kirlia_(Pok%C3%A9mon)"}), +(Gardevoir:Pokemon {name:"Gardevoir", nationalPokedexNumber:282, regionalPokedexNumber:"031", picture:"https://cdn.bulbagarden.net/upload/4/4a/282MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gardevoir_(Pok%C3%A9mon)"}), +(Surskit:Pokemon {name:"Surskit", nationalPokedexNumber:283, regionalPokedexNumber:"032", picture:"https://cdn.bulbagarden.net/upload/1/1f/283MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Surskit_(Pok%C3%A9mon)"}), +(Masquerain:Pokemon {name:"Masquerain", nationalPokedexNumber:284, regionalPokedexNumber:"033", picture:"https://cdn.bulbagarden.net/upload/a/af/284MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Masquerain_(Pok%C3%A9mon)"}), +(Shroomish:Pokemon {name:"Shroomish", nationalPokedexNumber:285, regionalPokedexNumber:"034", picture:"https://cdn.bulbagarden.net/upload/8/8e/285MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shroomish_(Pok%C3%A9mon)"}), +(Breloom:Pokemon {name:"Breloom", nationalPokedexNumber:286, regionalPokedexNumber:"035", picture:"https://cdn.bulbagarden.net/upload/e/ed/286MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Breloom_(Pok%C3%A9mon)"}), +(Slakoth:Pokemon {name:"Slakoth", nationalPokedexNumber:287, regionalPokedexNumber:"036", picture:"https://cdn.bulbagarden.net/upload/6/62/287MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Slakoth_(Pok%C3%A9mon)"}), +(Vigoroth:Pokemon {name:"Vigoroth", nationalPokedexNumber:288, regionalPokedexNumber:"037", picture:"https://cdn.bulbagarden.net/upload/3/38/288MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vigoroth_(Pok%C3%A9mon)"}), +(Slaking:Pokemon {name:"Slaking", nationalPokedexNumber:289, regionalPokedexNumber:"038", picture:"https://cdn.bulbagarden.net/upload/0/0d/289MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Slaking_(Pok%C3%A9mon)"}), +(Nincada:Pokemon {name:"Nincada", nationalPokedexNumber:290, regionalPokedexNumber:"042", picture:"https://cdn.bulbagarden.net/upload/9/9f/290MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nincada_(Pok%C3%A9mon)"}), +(Ninjask:Pokemon {name:"Ninjask", nationalPokedexNumber:291, regionalPokedexNumber:"043", picture:"https://cdn.bulbagarden.net/upload/5/54/291MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ninjask_(Pok%C3%A9mon)"}), +(Shedinja:Pokemon {name:"Shedinja", nationalPokedexNumber:292, regionalPokedexNumber:"044", picture:"https://cdn.bulbagarden.net/upload/3/30/292MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shedinja_(Pok%C3%A9mon)"}), +(Whismur:Pokemon {name:"Whismur", nationalPokedexNumber:293, regionalPokedexNumber:"045", picture:"https://cdn.bulbagarden.net/upload/5/54/293MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Whismur_(Pok%C3%A9mon)"}), +(Loudred:Pokemon {name:"Loudred", nationalPokedexNumber:294, regionalPokedexNumber:"046", picture:"https://cdn.bulbagarden.net/upload/7/73/294MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Loudred_(Pok%C3%A9mon)"}), +(Exploud:Pokemon {name:"Exploud", nationalPokedexNumber:295, regionalPokedexNumber:"047", picture:"https://cdn.bulbagarden.net/upload/c/c2/295MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Exploud_(Pok%C3%A9mon)"}), +(Makuhita:Pokemon {name:"Makuhita", nationalPokedexNumber:296, regionalPokedexNumber:"048", picture:"https://cdn.bulbagarden.net/upload/7/7e/296MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Makuhita_(Pok%C3%A9mon)"}), +(Hariyama:Pokemon {name:"Hariyama", nationalPokedexNumber:297, regionalPokedexNumber:"049", picture:"https://cdn.bulbagarden.net/upload/d/dd/297MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hariyama_(Pok%C3%A9mon)"}), +(Azurill:Pokemon {name:"Azurill", nationalPokedexNumber:298, regionalPokedexNumber:"054", picture:"https://cdn.bulbagarden.net/upload/5/52/298MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Azurill_(Pok%C3%A9mon)"}), +(Nosepass:Pokemon {name:"Nosepass", nationalPokedexNumber:299, regionalPokedexNumber:"060", picture:"https://cdn.bulbagarden.net/upload/a/a6/299MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nosepass_(Pok%C3%A9mon)"}), +(Skitty:Pokemon {name:"Skitty", nationalPokedexNumber:300, regionalPokedexNumber:"061", picture:"https://cdn.bulbagarden.net/upload/e/e4/300MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Skitty_(Pok%C3%A9mon)"}), +(Delcatty:Pokemon {name:"Delcatty", nationalPokedexNumber:301, regionalPokedexNumber:"062", picture:"https://cdn.bulbagarden.net/upload/0/0a/301MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Delcatty_(Pok%C3%A9mon)"}), +(Sableye:Pokemon {name:"Sableye", nationalPokedexNumber:302, regionalPokedexNumber:"068", picture:"https://cdn.bulbagarden.net/upload/6/60/302MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sableye_(Pok%C3%A9mon)"}), +(Mawile:Pokemon {name:"Mawile", nationalPokedexNumber:303, regionalPokedexNumber:"069", picture:"https://cdn.bulbagarden.net/upload/5/53/303MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mawile_(Pok%C3%A9mon)"}), +(Aron:Pokemon {name:"Aron", nationalPokedexNumber:304, regionalPokedexNumber:"070", picture:"https://cdn.bulbagarden.net/upload/c/c5/304MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Aron_(Pok%C3%A9mon)"}), +(Lairon:Pokemon {name:"Lairon", nationalPokedexNumber:305, regionalPokedexNumber:"071", picture:"https://cdn.bulbagarden.net/upload/3/3e/305MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lairon_(Pok%C3%A9mon)"}), +(Aggron:Pokemon {name:"Aggron", nationalPokedexNumber:306, regionalPokedexNumber:"072", picture:"https://cdn.bulbagarden.net/upload/d/d5/306MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Aggron_(Pok%C3%A9mon)"}), +(Meditite:Pokemon {name:"Meditite", nationalPokedexNumber:307, regionalPokedexNumber:"076", picture:"https://cdn.bulbagarden.net/upload/6/67/307MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Meditite_(Pok%C3%A9mon)"}), +(Medicham:Pokemon {name:"Medicham", nationalPokedexNumber:308, regionalPokedexNumber:"077", picture:"https://cdn.bulbagarden.net/upload/0/0b/308MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Medicham_(Pok%C3%A9mon)"}), +(Electrike:Pokemon {name:"Electrike", nationalPokedexNumber:309, regionalPokedexNumber:"078", picture:"https://cdn.bulbagarden.net/upload/6/62/309MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Electrike_(Pok%C3%A9mon)"}), +(Manectric:Pokemon {name:"Manectric", nationalPokedexNumber:310, regionalPokedexNumber:"079", picture:"https://cdn.bulbagarden.net/upload/0/04/310MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Manectric_(Pok%C3%A9mon)"}), +(Plusle:Pokemon {name:"Plusle", nationalPokedexNumber:311, regionalPokedexNumber:"080", picture:"https://cdn.bulbagarden.net/upload/e/e7/311MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Plusle_(Pok%C3%A9mon)"}), +(Minun:Pokemon {name:"Minun", nationalPokedexNumber:312, regionalPokedexNumber:"081", picture:"https://cdn.bulbagarden.net/upload/9/94/312MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Minun_(Pok%C3%A9mon)"}), +(Volbeat:Pokemon {name:"Volbeat", nationalPokedexNumber:313, regionalPokedexNumber:"086", picture:"https://cdn.bulbagarden.net/upload/b/bd/313MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Volbeat_(Pok%C3%A9mon)"}), +(Illumise:Pokemon {name:"Illumise", nationalPokedexNumber:314, regionalPokedexNumber:"087", picture:"https://cdn.bulbagarden.net/upload/4/41/314MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Illumise_(Pok%C3%A9mon)"}), +(Roselia:Pokemon {name:"Roselia", nationalPokedexNumber:315, regionalPokedexNumber:"094", picture:"https://cdn.bulbagarden.net/upload/b/bf/315MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Roselia_(Pok%C3%A9mon)"}), +(Gulpin:Pokemon {name:"Gulpin", nationalPokedexNumber:316, regionalPokedexNumber:"095", picture:"https://cdn.bulbagarden.net/upload/0/03/316MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gulpin_(Pok%C3%A9mon)"}), +(Swalot:Pokemon {name:"Swalot", nationalPokedexNumber:317, regionalPokedexNumber:"096", picture:"https://cdn.bulbagarden.net/upload/a/a3/317MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swalot_(Pok%C3%A9mon)"}), +(Carvanha:Pokemon {name:"Carvanha", nationalPokedexNumber:318, regionalPokedexNumber:"097", picture:"https://cdn.bulbagarden.net/upload/c/ca/318MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Carvanha_(Pok%C3%A9mon)"}), +(Sharpedo:Pokemon {name:"Sharpedo", nationalPokedexNumber:319, regionalPokedexNumber:"098", picture:"https://cdn.bulbagarden.net/upload/e/e2/319MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sharpedo_(Pok%C3%A9mon)"}), +(Wailmer:Pokemon {name:"Wailmer", nationalPokedexNumber:320, regionalPokedexNumber:"099", picture:"https://cdn.bulbagarden.net/upload/5/55/320MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wailmer_(Pok%C3%A9mon)"}), +(Wailord:Pokemon {name:"Wailord", nationalPokedexNumber:321, regionalPokedexNumber:"100", picture:"https://cdn.bulbagarden.net/upload/e/ec/321MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wailord_(Pok%C3%A9mon)"}), +(Numel:Pokemon {name:"Numel", nationalPokedexNumber:322, regionalPokedexNumber:"101", picture:"https://cdn.bulbagarden.net/upload/5/5c/322MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Numel_(Pok%C3%A9mon)"}), +(Camerupt:Pokemon {name:"Camerupt", nationalPokedexNumber:323, regionalPokedexNumber:"102", picture:"https://cdn.bulbagarden.net/upload/6/6f/323MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Camerupt_(Pok%C3%A9mon)"}), +(Torkoal:Pokemon {name:"Torkoal", nationalPokedexNumber:324, regionalPokedexNumber:"105", picture:"https://cdn.bulbagarden.net/upload/3/39/324MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Torkoal_(Pok%C3%A9mon)"}), +(Spoink:Pokemon {name:"Spoink", nationalPokedexNumber:325, regionalPokedexNumber:"110", picture:"https://cdn.bulbagarden.net/upload/a/a7/325MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Spoink_(Pok%C3%A9mon)"}), +(Grumpig:Pokemon {name:"Grumpig", nationalPokedexNumber:326, regionalPokedexNumber:"111", picture:"https://cdn.bulbagarden.net/upload/b/b8/326MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Grumpig_(Pok%C3%A9mon)"}), +(Spinda:Pokemon {name:"Spinda", nationalPokedexNumber:327, regionalPokedexNumber:"114", picture:"https://cdn.bulbagarden.net/upload/c/c2/327MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Spinda_(Pok%C3%A9mon)"}), +(Trapinch:Pokemon {name:"Trapinch", nationalPokedexNumber:328, regionalPokedexNumber:"116", picture:"https://cdn.bulbagarden.net/upload/f/f8/328MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Trapinch_(Pok%C3%A9mon)"}), +(Vibrava:Pokemon {name:"Vibrava", nationalPokedexNumber:329, regionalPokedexNumber:"117", picture:"https://cdn.bulbagarden.net/upload/6/6c/329MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vibrava_(Pok%C3%A9mon)"}), +(Flygon:Pokemon {name:"Flygon", nationalPokedexNumber:330, regionalPokedexNumber:"118", picture:"https://cdn.bulbagarden.net/upload/e/eb/330MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Flygon_(Pok%C3%A9mon)"}), +(Cacnea:Pokemon {name:"Cacnea", nationalPokedexNumber:331, regionalPokedexNumber:"119", picture:"https://cdn.bulbagarden.net/upload/3/3a/331MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cacnea_(Pok%C3%A9mon)"}), +(Cacturne:Pokemon {name:"Cacturne", nationalPokedexNumber:332, regionalPokedexNumber:"120", picture:"https://cdn.bulbagarden.net/upload/9/95/332MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cacturne_(Pok%C3%A9mon)"}), +(Swablu:Pokemon {name:"Swablu", nationalPokedexNumber:333, regionalPokedexNumber:"121", picture:"https://cdn.bulbagarden.net/upload/6/61/333MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swablu_(Pok%C3%A9mon)"}), +(Altaria:Pokemon {name:"Altaria", nationalPokedexNumber:334, regionalPokedexNumber:"122", picture:"https://cdn.bulbagarden.net/upload/a/a2/334MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Altaria_(Pok%C3%A9mon)"}), +(Zangoose:Pokemon {name:"Zangoose", nationalPokedexNumber:335, regionalPokedexNumber:"123", picture:"https://cdn.bulbagarden.net/upload/2/2c/335MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zangoose_(Pok%C3%A9mon)"}), +(Seviper:Pokemon {name:"Seviper", nationalPokedexNumber:336, regionalPokedexNumber:"124", picture:"https://cdn.bulbagarden.net/upload/b/b4/336MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Seviper_(Pok%C3%A9mon)"}), +(Lunatone:Pokemon {name:"Lunatone", nationalPokedexNumber:337, regionalPokedexNumber:"125", picture:"https://cdn.bulbagarden.net/upload/d/d5/337MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lunatone_(Pok%C3%A9mon)"}), +(Solrock:Pokemon {name:"Solrock", nationalPokedexNumber:338, regionalPokedexNumber:"126", picture:"https://cdn.bulbagarden.net/upload/1/1e/338MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Solrock_(Pok%C3%A9mon)"}), +(Barboach:Pokemon {name:"Barboach", nationalPokedexNumber:339, regionalPokedexNumber:"127", picture:"https://cdn.bulbagarden.net/upload/9/9c/339MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Barboach_(Pok%C3%A9mon)"}), +(Whiscash:Pokemon {name:"Whiscash", nationalPokedexNumber:340, regionalPokedexNumber:"128", picture:"https://cdn.bulbagarden.net/upload/7/76/340MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Whiscash_(Pok%C3%A9mon)"}), +(Corphish:Pokemon {name:"Corphish", nationalPokedexNumber:341, regionalPokedexNumber:"129", picture:"https://cdn.bulbagarden.net/upload/5/5a/341MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Corphish_(Pok%C3%A9mon)"}), +(Crawdaunt:Pokemon {name:"Crawdaunt", nationalPokedexNumber:342, regionalPokedexNumber:"130", picture:"https://cdn.bulbagarden.net/upload/e/e4/342MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Crawdaunt_(Pok%C3%A9mon)"}), +(Baltoy:Pokemon {name:"Baltoy", nationalPokedexNumber:343, regionalPokedexNumber:"131", picture:"https://cdn.bulbagarden.net/upload/6/6e/343MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Baltoy_(Pok%C3%A9mon)"}), +(Claydol:Pokemon {name:"Claydol", nationalPokedexNumber:344, regionalPokedexNumber:"132", picture:"https://cdn.bulbagarden.net/upload/7/75/344MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Claydol_(Pok%C3%A9mon)"}), +(Lileep:Pokemon {name:"Lileep", nationalPokedexNumber:345, regionalPokedexNumber:"133", picture:"https://cdn.bulbagarden.net/upload/8/88/345MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lileep_(Pok%C3%A9mon)"}), +(Cradily:Pokemon {name:"Cradily", nationalPokedexNumber:346, regionalPokedexNumber:"134", picture:"https://cdn.bulbagarden.net/upload/1/16/346MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cradily_(Pok%C3%A9mon)"}), +(Anorith:Pokemon {name:"Anorith", nationalPokedexNumber:347, regionalPokedexNumber:"135", picture:"https://cdn.bulbagarden.net/upload/b/b2/347MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Anorith_(Pok%C3%A9mon)"}), +(Armaldo:Pokemon {name:"Armaldo", nationalPokedexNumber:348, regionalPokedexNumber:"136", picture:"https://cdn.bulbagarden.net/upload/6/69/348MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Armaldo_(Pok%C3%A9mon)"}), +(Feebas:Pokemon {name:"Feebas", nationalPokedexNumber:349, regionalPokedexNumber:"140", picture:"https://cdn.bulbagarden.net/upload/7/7d/349MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Feebas_(Pok%C3%A9mon)"}), +(Milotic:Pokemon {name:"Milotic", nationalPokedexNumber:350, regionalPokedexNumber:"141", picture:"https://cdn.bulbagarden.net/upload/5/5a/350MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Milotic_(Pok%C3%A9mon)"}), +(Castform:Pokemon {name:"Castform", nationalPokedexNumber:351, regionalPokedexNumber:"142", picture:"https://cdn.bulbagarden.net/upload/f/fc/351MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Castform_(Pok%C3%A9mon)"}), +(Kecleon:Pokemon {name:"Kecleon", nationalPokedexNumber:352, regionalPokedexNumber:"145", picture:"https://cdn.bulbagarden.net/upload/3/39/352MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kecleon_(Pok%C3%A9mon)"}), +(Shuppet:Pokemon {name:"Shuppet", nationalPokedexNumber:353, regionalPokedexNumber:"146", picture:"https://cdn.bulbagarden.net/upload/f/fd/353MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shuppet_(Pok%C3%A9mon)"}), +(Banette:Pokemon {name:"Banette", nationalPokedexNumber:354, regionalPokedexNumber:"147", picture:"https://cdn.bulbagarden.net/upload/c/c8/354MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Banette_(Pok%C3%A9mon)"}), +(Duskull:Pokemon {name:"Duskull", nationalPokedexNumber:355, regionalPokedexNumber:"148", picture:"https://cdn.bulbagarden.net/upload/2/2d/355MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Duskull_(Pok%C3%A9mon)"}), +(Dusclops:Pokemon {name:"Dusclops", nationalPokedexNumber:356, regionalPokedexNumber:"149", picture:"https://cdn.bulbagarden.net/upload/c/cd/356MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dusclops_(Pok%C3%A9mon)"}), +(Tropius:Pokemon {name:"Tropius", nationalPokedexNumber:357, regionalPokedexNumber:"150", picture:"https://cdn.bulbagarden.net/upload/0/0b/357MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tropius_(Pok%C3%A9mon)"}), +(Chimecho:Pokemon {name:"Chimecho", nationalPokedexNumber:358, regionalPokedexNumber:"151", picture:"https://cdn.bulbagarden.net/upload/7/78/358MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chimecho_(Pok%C3%A9mon)"}), +(Absol:Pokemon {name:"Absol", nationalPokedexNumber:359, regionalPokedexNumber:"152", picture:"https://cdn.bulbagarden.net/upload/7/7c/359MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Absol_(Pok%C3%A9mon)"}), +(Wynaut:Pokemon {name:"Wynaut", nationalPokedexNumber:360, regionalPokedexNumber:"160", picture:"https://cdn.bulbagarden.net/upload/4/44/360MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wynaut_(Pok%C3%A9mon)"}), +(Snorunt:Pokemon {name:"Snorunt", nationalPokedexNumber:361, regionalPokedexNumber:"171", picture:"https://cdn.bulbagarden.net/upload/6/66/361MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Snorunt_(Pok%C3%A9mon)"}), +(Glalie:Pokemon {name:"Glalie", nationalPokedexNumber:362, regionalPokedexNumber:"172", picture:"https://cdn.bulbagarden.net/upload/d/d0/362MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Glalie_(Pok%C3%A9mon)"}), +(Spheal:Pokemon {name:"Spheal", nationalPokedexNumber:363, regionalPokedexNumber:"173", picture:"https://cdn.bulbagarden.net/upload/4/43/363MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Spheal_(Pok%C3%A9mon)"}), +(Sealeo:Pokemon {name:"Sealeo", nationalPokedexNumber:364, regionalPokedexNumber:"174", picture:"https://cdn.bulbagarden.net/upload/9/92/364MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sealeo_(Pok%C3%A9mon)"}), +(Walrein:Pokemon {name:"Walrein", nationalPokedexNumber:365, regionalPokedexNumber:"175", picture:"https://cdn.bulbagarden.net/upload/6/66/365MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Walrein_(Pok%C3%A9mon)"}), +(Clamperl:Pokemon {name:"Clamperl", nationalPokedexNumber:366, regionalPokedexNumber:"176", picture:"https://cdn.bulbagarden.net/upload/b/bb/366MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Clamperl_(Pok%C3%A9mon)"}), +(Huntail:Pokemon {name:"Huntail", nationalPokedexNumber:367, regionalPokedexNumber:"177", picture:"https://cdn.bulbagarden.net/upload/2/2e/367MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Huntail_(Pok%C3%A9mon)"}), +(Gorebyss:Pokemon {name:"Gorebyss", nationalPokedexNumber:368, regionalPokedexNumber:"178", picture:"https://cdn.bulbagarden.net/upload/d/dc/368MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gorebyss_(Pok%C3%A9mon)"}), +(Relicanth:Pokemon {name:"Relicanth", nationalPokedexNumber:369, regionalPokedexNumber:"179", picture:"https://cdn.bulbagarden.net/upload/6/6a/369MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Relicanth_(Pok%C3%A9mon)"}), +(Luvdisc:Pokemon {name:"Luvdisc", nationalPokedexNumber:370, regionalPokedexNumber:"183", picture:"https://cdn.bulbagarden.net/upload/d/d1/370MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Luvdisc_(Pok%C3%A9mon)"}), +(Bagon:Pokemon {name:"Bagon", nationalPokedexNumber:371, regionalPokedexNumber:"187", picture:"https://cdn.bulbagarden.net/upload/f/fe/371MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bagon_(Pok%C3%A9mon)"}), +(Shelgon:Pokemon {name:"Shelgon", nationalPokedexNumber:372, regionalPokedexNumber:"188", picture:"https://cdn.bulbagarden.net/upload/2/25/372MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shelgon_(Pok%C3%A9mon)"}), +(Salamence:Pokemon {name:"Salamence", nationalPokedexNumber:373, regionalPokedexNumber:"189", picture:"https://cdn.bulbagarden.net/upload/8/8c/373MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Salamence_(Pok%C3%A9mon)"}), +(Beldum:Pokemon {name:"Beldum", nationalPokedexNumber:374, regionalPokedexNumber:"190", picture:"https://cdn.bulbagarden.net/upload/c/c8/374MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Beldum_(Pok%C3%A9mon)"}), +(Metang:Pokemon {name:"Metang", nationalPokedexNumber:375, regionalPokedexNumber:"191", picture:"https://cdn.bulbagarden.net/upload/2/22/375MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Metang_(Pok%C3%A9mon)"}), +(Metagross:Pokemon {name:"Metagross", nationalPokedexNumber:376, regionalPokedexNumber:"192", picture:"https://cdn.bulbagarden.net/upload/2/2d/376MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Metagross_(Pok%C3%A9mon)"}), +(Regirock:Pokemon {name:"Regirock", nationalPokedexNumber:377, regionalPokedexNumber:"193", picture:"https://cdn.bulbagarden.net/upload/6/6c/377MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Regirock_(Pok%C3%A9mon)"}), +(Regice:Pokemon {name:"Regice", nationalPokedexNumber:378, regionalPokedexNumber:"194", picture:"https://cdn.bulbagarden.net/upload/9/99/378MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Regice_(Pok%C3%A9mon)"}), +(Registeel:Pokemon {name:"Registeel", nationalPokedexNumber:379, regionalPokedexNumber:"195", picture:"https://cdn.bulbagarden.net/upload/2/2e/379MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Registeel_(Pok%C3%A9mon)"}), +(Latias:Pokemon {name:"Latias", nationalPokedexNumber:380, regionalPokedexNumber:"196", picture:"https://cdn.bulbagarden.net/upload/8/84/380MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Latias_(Pok%C3%A9mon)"}), +(Latios:Pokemon {name:"Latios", nationalPokedexNumber:381, regionalPokedexNumber:"197", picture:"https://cdn.bulbagarden.net/upload/a/a4/381MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Latios_(Pok%C3%A9mon)"}), +(Kyogre:Pokemon {name:"Kyogre", nationalPokedexNumber:382, regionalPokedexNumber:"198", picture:"https://cdn.bulbagarden.net/upload/1/11/382MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kyogre_(Pok%C3%A9mon)"}), +(Groudon:Pokemon {name:"Groudon", nationalPokedexNumber:383, regionalPokedexNumber:"199", picture:"https://cdn.bulbagarden.net/upload/b/bc/383MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Groudon_(Pok%C3%A9mon)"}), +(Rayquaza:Pokemon {name:"Rayquaza", nationalPokedexNumber:384, regionalPokedexNumber:"200", picture:"https://cdn.bulbagarden.net/upload/9/90/384MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rayquaza_(Pok%C3%A9mon)"}), +(Jirachi:Pokemon {name:"Jirachi", nationalPokedexNumber:385, regionalPokedexNumber:"201", picture:"https://cdn.bulbagarden.net/upload/9/9e/385MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Jirachi_(Pok%C3%A9mon)"}), +(Deoxys:Pokemon {name:"Deoxys", nationalPokedexNumber:386, regionalPokedexNumber:"202", picture:"https://cdn.bulbagarden.net/upload/8/86/386MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Deoxys_(Pok%C3%A9mon)"}), +(Turtwig:Pokemon {name:"Turtwig", nationalPokedexNumber:387, regionalPokedexNumber:"001", picture:"https://cdn.bulbagarden.net/upload/2/27/387MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Turtwig_(Pok%C3%A9mon)"}), +(Grotle:Pokemon {name:"Grotle", nationalPokedexNumber:388, regionalPokedexNumber:"002", picture:"https://cdn.bulbagarden.net/upload/4/40/388MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Grotle_(Pok%C3%A9mon)"}), +(Torterra:Pokemon {name:"Torterra", nationalPokedexNumber:389, regionalPokedexNumber:"003", picture:"https://cdn.bulbagarden.net/upload/1/1f/389MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Torterra_(Pok%C3%A9mon)"}), +(Chimchar:Pokemon {name:"Chimchar", nationalPokedexNumber:390, regionalPokedexNumber:"004", picture:"https://cdn.bulbagarden.net/upload/9/93/390MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chimchar_(Pok%C3%A9mon)"}), +(Monferno:Pokemon {name:"Monferno", nationalPokedexNumber:391, regionalPokedexNumber:"005", picture:"https://cdn.bulbagarden.net/upload/7/70/391MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Monferno_(Pok%C3%A9mon)"}), +(Infernape:Pokemon {name:"Infernape", nationalPokedexNumber:392, regionalPokedexNumber:"006", picture:"https://cdn.bulbagarden.net/upload/f/f5/392MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Infernape_(Pok%C3%A9mon)"}), +(Piplup:Pokemon {name:"Piplup", nationalPokedexNumber:393, regionalPokedexNumber:"007", picture:"https://cdn.bulbagarden.net/upload/8/85/393MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Piplup_(Pok%C3%A9mon)"}), +(Prinplup:Pokemon {name:"Prinplup", nationalPokedexNumber:394, regionalPokedexNumber:"008", picture:"https://cdn.bulbagarden.net/upload/a/a3/394MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Prinplup_(Pok%C3%A9mon)"}), +(Empoleon:Pokemon {name:"Empoleon", nationalPokedexNumber:395, regionalPokedexNumber:"009", picture:"https://cdn.bulbagarden.net/upload/f/ff/395MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Empoleon_(Pok%C3%A9mon)"}), +(Starly:Pokemon {name:"Starly", nationalPokedexNumber:396, regionalPokedexNumber:"010", picture:"https://cdn.bulbagarden.net/upload/1/16/396MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Starly_(Pok%C3%A9mon)"}), +(Staravia:Pokemon {name:"Staravia", nationalPokedexNumber:397, regionalPokedexNumber:"011", picture:"https://cdn.bulbagarden.net/upload/e/e2/397MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Staravia_(Pok%C3%A9mon)"}), +(Staraptor:Pokemon {name:"Staraptor", nationalPokedexNumber:398, regionalPokedexNumber:"012", picture:"https://cdn.bulbagarden.net/upload/5/5f/398MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Staraptor_(Pok%C3%A9mon)"}), +(Bidoof:Pokemon {name:"Bidoof", nationalPokedexNumber:399, regionalPokedexNumber:"013", picture:"https://cdn.bulbagarden.net/upload/b/bc/399MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bidoof_(Pok%C3%A9mon)"}), +(Bibarel:Pokemon {name:"Bibarel", nationalPokedexNumber:400, regionalPokedexNumber:"014", picture:"https://cdn.bulbagarden.net/upload/b/b1/400MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bibarel_(Pok%C3%A9mon)"}), +(Kricketot:Pokemon {name:"Kricketot", nationalPokedexNumber:401, regionalPokedexNumber:"015", picture:"https://cdn.bulbagarden.net/upload/f/f9/401MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kricketot_(Pok%C3%A9mon)"}), +(Kricketune:Pokemon {name:"Kricketune", nationalPokedexNumber:402, regionalPokedexNumber:"016", picture:"https://cdn.bulbagarden.net/upload/1/18/402MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kricketune_(Pok%C3%A9mon)"}), +(Shinx:Pokemon {name:"Shinx", nationalPokedexNumber:403, regionalPokedexNumber:"017", picture:"https://cdn.bulbagarden.net/upload/a/a0/403MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shinx_(Pok%C3%A9mon)"}), +(Luxio:Pokemon {name:"Luxio", nationalPokedexNumber:404, regionalPokedexNumber:"018", picture:"https://cdn.bulbagarden.net/upload/e/e3/404MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Luxio_(Pok%C3%A9mon)"}), +(Luxray:Pokemon {name:"Luxray", nationalPokedexNumber:405, regionalPokedexNumber:"019", picture:"https://cdn.bulbagarden.net/upload/8/8a/405MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Luxray_(Pok%C3%A9mon)"}), +(Budew:Pokemon {name:"Budew", nationalPokedexNumber:406, regionalPokedexNumber:"025", picture:"https://cdn.bulbagarden.net/upload/e/ef/406MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Budew_(Pok%C3%A9mon)"}), +(Roserade:Pokemon {name:"Roserade", nationalPokedexNumber:407, regionalPokedexNumber:"027", picture:"https://cdn.bulbagarden.net/upload/f/fe/407MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Roserade_(Pok%C3%A9mon)"}), +(Cranidos:Pokemon {name:"Cranidos", nationalPokedexNumber:408, regionalPokedexNumber:"036", picture:"https://cdn.bulbagarden.net/upload/9/98/408MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cranidos_(Pok%C3%A9mon)"}), +(Rampardos:Pokemon {name:"Rampardos", nationalPokedexNumber:409, regionalPokedexNumber:"037", picture:"https://cdn.bulbagarden.net/upload/9/91/409MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rampardos_(Pok%C3%A9mon)"}), +(Shieldon:Pokemon {name:"Shieldon", nationalPokedexNumber:410, regionalPokedexNumber:"038", picture:"https://cdn.bulbagarden.net/upload/9/9e/410MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shieldon_(Pok%C3%A9mon)"}), +(Bastiodon:Pokemon {name:"Bastiodon", nationalPokedexNumber:411, regionalPokedexNumber:"039", picture:"https://cdn.bulbagarden.net/upload/e/ef/411MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bastiodon_(Pok%C3%A9mon)"}), +(Burmy:Pokemon {name:"Burmy", nationalPokedexNumber:412, regionalPokedexNumber:"045", picture:"https://cdn.bulbagarden.net/upload/8/87/412MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Burmy_(Pok%C3%A9mon)"}), +(Wormadam:Pokemon {name:"Wormadam", nationalPokedexNumber:413, regionalPokedexNumber:"046", picture:"https://cdn.bulbagarden.net/upload/f/fa/413MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wormadam_(Pok%C3%A9mon)"}), +(Mothim:Pokemon {name:"Mothim", nationalPokedexNumber:414, regionalPokedexNumber:"047", picture:"https://cdn.bulbagarden.net/upload/8/8e/414MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mothim_(Pok%C3%A9mon)"}), +(Combee:Pokemon {name:"Combee", nationalPokedexNumber:415, regionalPokedexNumber:"053", picture:"https://cdn.bulbagarden.net/upload/e/ee/415MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Combee_(Pok%C3%A9mon)"}), +(Vespiquen:Pokemon {name:"Vespiquen", nationalPokedexNumber:416, regionalPokedexNumber:"054", picture:"https://cdn.bulbagarden.net/upload/d/dd/416MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vespiquen_(Pok%C3%A9mon)"}), +(Pachirisu:Pokemon {name:"Pachirisu", nationalPokedexNumber:417, regionalPokedexNumber:"055", picture:"https://cdn.bulbagarden.net/upload/1/14/417MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pachirisu_(Pok%C3%A9mon)"}), +(Buizel:Pokemon {name:"Buizel", nationalPokedexNumber:418, regionalPokedexNumber:"056", picture:"https://cdn.bulbagarden.net/upload/7/7c/418MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Buizel_(Pok%C3%A9mon)"}), +(Floatzel:Pokemon {name:"Floatzel", nationalPokedexNumber:419, regionalPokedexNumber:"057", picture:"https://cdn.bulbagarden.net/upload/6/6c/419MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Floatzel_(Pok%C3%A9mon)"}), +(Cherubi:Pokemon {name:"Cherubi", nationalPokedexNumber:420, regionalPokedexNumber:"058", picture:"https://cdn.bulbagarden.net/upload/5/5d/420MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cherubi_(Pok%C3%A9mon)"}), +(Cherrim:Pokemon {name:"Cherrim", nationalPokedexNumber:421, regionalPokedexNumber:"059", picture:"https://cdn.bulbagarden.net/upload/6/65/421MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cherrim_(Pok%C3%A9mon)"}), +(Shellos:Pokemon {name:"Shellos", nationalPokedexNumber:422, regionalPokedexNumber:"060", picture:"https://cdn.bulbagarden.net/upload/f/f1/422MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shellos_(Pok%C3%A9mon)"}), +(Gastrodon:Pokemon {name:"Gastrodon", nationalPokedexNumber:423, regionalPokedexNumber:"061", picture:"https://cdn.bulbagarden.net/upload/4/44/423MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gastrodon_(Pok%C3%A9mon)"}), +(Ambipom:Pokemon {name:"Ambipom", nationalPokedexNumber:424, regionalPokedexNumber:"064", picture:"https://cdn.bulbagarden.net/upload/5/5b/424MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ambipom_(Pok%C3%A9mon)"}), +(Drifloon:Pokemon {name:"Drifloon", nationalPokedexNumber:425, regionalPokedexNumber:"065", picture:"https://cdn.bulbagarden.net/upload/0/03/425MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Drifloon_(Pok%C3%A9mon)"}), +(Drifblim:Pokemon {name:"Drifblim", nationalPokedexNumber:426, regionalPokedexNumber:"066", picture:"https://cdn.bulbagarden.net/upload/4/45/426MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Drifblim_(Pok%C3%A9mon)"}), +(Buneary:Pokemon {name:"Buneary", nationalPokedexNumber:427, regionalPokedexNumber:"067", picture:"https://cdn.bulbagarden.net/upload/4/42/427MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Buneary_(Pok%C3%A9mon)"}), +(Lopunny:Pokemon {name:"Lopunny", nationalPokedexNumber:428, regionalPokedexNumber:"068", picture:"https://cdn.bulbagarden.net/upload/3/33/428MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lopunny_(Pok%C3%A9mon)"}), +(Mismagius:Pokemon {name:"Mismagius", nationalPokedexNumber:429, regionalPokedexNumber:"073", picture:"https://cdn.bulbagarden.net/upload/4/47/429MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mismagius_(Pok%C3%A9mon)"}), +(Honchkrow:Pokemon {name:"Honchkrow", nationalPokedexNumber:430, regionalPokedexNumber:"075", picture:"https://cdn.bulbagarden.net/upload/c/c0/430MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Honchkrow_(Pok%C3%A9mon)"}), +(Glameow:Pokemon {name:"Glameow", nationalPokedexNumber:431, regionalPokedexNumber:"076", picture:"https://cdn.bulbagarden.net/upload/f/f1/431MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Glameow_(Pok%C3%A9mon)"}), +(Purugly:Pokemon {name:"Purugly", nationalPokedexNumber:432, regionalPokedexNumber:"077", picture:"https://cdn.bulbagarden.net/upload/3/3f/432MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Purugly_(Pok%C3%A9mon)"}), +(Chingling:Pokemon {name:"Chingling", nationalPokedexNumber:433, regionalPokedexNumber:"082", picture:"https://cdn.bulbagarden.net/upload/7/72/433MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chingling_(Pok%C3%A9mon)"}), +(Stunky:Pokemon {name:"Stunky", nationalPokedexNumber:434, regionalPokedexNumber:"084", picture:"https://cdn.bulbagarden.net/upload/f/f9/434MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Stunky_(Pok%C3%A9mon)"}), +(Skuntank:Pokemon {name:"Skuntank", nationalPokedexNumber:435, regionalPokedexNumber:"085", picture:"https://cdn.bulbagarden.net/upload/8/8a/435MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Skuntank_(Pok%C3%A9mon)"}), +(Bronzor:Pokemon {name:"Bronzor", nationalPokedexNumber:436, regionalPokedexNumber:"088", picture:"https://cdn.bulbagarden.net/upload/6/63/436MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bronzor_(Pok%C3%A9mon)"}), +(Bronzong:Pokemon {name:"Bronzong", nationalPokedexNumber:437, regionalPokedexNumber:"089", picture:"https://cdn.bulbagarden.net/upload/0/0c/437MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bronzong_(Pok%C3%A9mon)"}), +(Bonsly:Pokemon {name:"Bonsly", nationalPokedexNumber:438, regionalPokedexNumber:"092", picture:"https://cdn.bulbagarden.net/upload/7/7a/438MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bonsly_(Pok%C3%A9mon)"}), +(MimeJr:Pokemon {name:"Mime Jr.", nationalPokedexNumber:439, regionalPokedexNumber:"094", picture:"https://cdn.bulbagarden.net/upload/4/4d/439MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mime_Jr._(Pok%C3%A9mon)"}), +(Happiny:Pokemon {name:"Happiny", nationalPokedexNumber:440, regionalPokedexNumber:"096", picture:"https://cdn.bulbagarden.net/upload/8/8e/440MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Happiny_(Pok%C3%A9mon)"}), +(Chatot:Pokemon {name:"Chatot", nationalPokedexNumber:441, regionalPokedexNumber:"102", picture:"https://cdn.bulbagarden.net/upload/d/db/441MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chatot_(Pok%C3%A9mon)"}), +(Spiritomb:Pokemon {name:"Spiritomb", nationalPokedexNumber:442, regionalPokedexNumber:"108", picture:"https://cdn.bulbagarden.net/upload/e/e0/442MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Spiritomb_(Pok%C3%A9mon)"}), +(Gible:Pokemon {name:"Gible", nationalPokedexNumber:443, regionalPokedexNumber:"109", picture:"https://cdn.bulbagarden.net/upload/7/7c/443MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gible_(Pok%C3%A9mon)"}), +(Gabite:Pokemon {name:"Gabite", nationalPokedexNumber:444, regionalPokedexNumber:"110", picture:"https://cdn.bulbagarden.net/upload/6/69/444MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gabite_(Pok%C3%A9mon)"}), +(Garchomp:Pokemon {name:"Garchomp", nationalPokedexNumber:445, regionalPokedexNumber:"111", picture:"https://cdn.bulbagarden.net/upload/6/63/445MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Garchomp_(Pok%C3%A9mon)"}), +(Munchlax:Pokemon {name:"Munchlax", nationalPokedexNumber:446, regionalPokedexNumber:"112", picture:"https://cdn.bulbagarden.net/upload/0/06/446MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Munchlax_(Pok%C3%A9mon)"}), +(Riolu:Pokemon {name:"Riolu", nationalPokedexNumber:447, regionalPokedexNumber:"115", picture:"https://cdn.bulbagarden.net/upload/0/0a/447MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Riolu_(Pok%C3%A9mon)"}), +(Lucario:Pokemon {name:"Lucario", nationalPokedexNumber:448, regionalPokedexNumber:"116", picture:"https://cdn.bulbagarden.net/upload/b/be/448MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lucario_(Pok%C3%A9mon)"}), +(Hippopotas:Pokemon {name:"Hippopotas", nationalPokedexNumber:449, regionalPokedexNumber:"122", picture:"https://cdn.bulbagarden.net/upload/5/58/449MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hippopotas_(Pok%C3%A9mon)"}), +(Hippowdon:Pokemon {name:"Hippowdon", nationalPokedexNumber:450, regionalPokedexNumber:"123", picture:"https://cdn.bulbagarden.net/upload/5/57/450MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hippowdon_(Pok%C3%A9mon)"}), +(Skorupi:Pokemon {name:"Skorupi", nationalPokedexNumber:451, regionalPokedexNumber:"127", picture:"https://cdn.bulbagarden.net/upload/0/02/451MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Skorupi_(Pok%C3%A9mon)"}), +(Drapion:Pokemon {name:"Drapion", nationalPokedexNumber:452, regionalPokedexNumber:"128", picture:"https://cdn.bulbagarden.net/upload/9/96/452MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Drapion_(Pok%C3%A9mon)"}), +(Croagunk:Pokemon {name:"Croagunk", nationalPokedexNumber:453, regionalPokedexNumber:"129", picture:"https://cdn.bulbagarden.net/upload/2/2c/453MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Croagunk_(Pok%C3%A9mon)"}), +(Toxicroak:Pokemon {name:"Toxicroak", nationalPokedexNumber:454, regionalPokedexNumber:"130", picture:"https://cdn.bulbagarden.net/upload/f/f9/454MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Toxicroak_(Pok%C3%A9mon)"}), +(Carnivine:Pokemon {name:"Carnivine", nationalPokedexNumber:455, regionalPokedexNumber:"131", picture:"https://cdn.bulbagarden.net/upload/d/d1/455MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Carnivine_(Pok%C3%A9mon)"}), +(Finneon:Pokemon {name:"Finneon", nationalPokedexNumber:456, regionalPokedexNumber:"134", picture:"https://cdn.bulbagarden.net/upload/7/73/456MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Finneon_(Pok%C3%A9mon)"}), +(Lumineon:Pokemon {name:"Lumineon", nationalPokedexNumber:457, regionalPokedexNumber:"135", picture:"https://cdn.bulbagarden.net/upload/2/2b/457MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lumineon_(Pok%C3%A9mon)"}), +(Mantyke:Pokemon {name:"Mantyke", nationalPokedexNumber:458, regionalPokedexNumber:"140", picture:"https://cdn.bulbagarden.net/upload/8/80/458MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mantyke_(Pok%C3%A9mon)"}), +(Snover:Pokemon {name:"Snover", nationalPokedexNumber:459, regionalPokedexNumber:"142", picture:"https://cdn.bulbagarden.net/upload/0/06/459MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Snover_(Pok%C3%A9mon)"}), +(Abomasnow:Pokemon {name:"Abomasnow", nationalPokedexNumber:460, regionalPokedexNumber:"143", picture:"https://cdn.bulbagarden.net/upload/f/fc/460MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Abomasnow_(Pok%C3%A9mon)"}), +(Weavile:Pokemon {name:"Weavile", nationalPokedexNumber:461, regionalPokedexNumber:"145", picture:"https://cdn.bulbagarden.net/upload/9/96/461MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Weavile_(Pok%C3%A9mon)"}), +(Magnezone:Pokemon {name:"Magnezone", nationalPokedexNumber:462, regionalPokedexNumber:"180", picture:"https://cdn.bulbagarden.net/upload/2/26/462MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magnezone_(Pok%C3%A9mon)"}), +(Lickilicky:Pokemon {name:"Lickilicky", nationalPokedexNumber:463, regionalPokedexNumber:"162", picture:"https://cdn.bulbagarden.net/upload/9/9b/463MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lickilicky_(Pok%C3%A9mon)"}), +(Rhyperior:Pokemon {name:"Rhyperior", nationalPokedexNumber:464, regionalPokedexNumber:"188", picture:"https://cdn.bulbagarden.net/upload/e/e9/464MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rhyperior_(Pok%C3%A9mon)"}), +(Tangrowth:Pokemon {name:"Tangrowth", nationalPokedexNumber:465, regionalPokedexNumber:"182", picture:"https://cdn.bulbagarden.net/upload/a/aa/465MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tangrowth_(Pok%C3%A9mon)"}), +(Electivire:Pokemon {name:"Electivire", nationalPokedexNumber:466, regionalPokedexNumber:"199", picture:"https://cdn.bulbagarden.net/upload/5/53/466MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Electivire_(Pok%C3%A9mon)"}), +(Magmortar:Pokemon {name:"Magmortar", nationalPokedexNumber:467, regionalPokedexNumber:"202", picture:"https://cdn.bulbagarden.net/upload/4/4e/467MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magmortar_(Pok%C3%A9mon)"}), +(Togekiss:Pokemon {name:"Togekiss", nationalPokedexNumber:468, regionalPokedexNumber:"175", picture:"https://cdn.bulbagarden.net/upload/6/63/468MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Togekiss_(Pok%C3%A9mon)"}), +(Yanmega:Pokemon {name:"Yanmega", nationalPokedexNumber:469, regionalPokedexNumber:"184", picture:"https://cdn.bulbagarden.net/upload/a/aa/469MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Yanmega_(Pok%C3%A9mon)"}), +(Leafeon:Pokemon {name:"Leafeon", nationalPokedexNumber:470, regionalPokedexNumber:"169", picture:"https://cdn.bulbagarden.net/upload/1/12/470MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Leafeon_(Pok%C3%A9mon)"}), +(Glaceon:Pokemon {name:"Glaceon", nationalPokedexNumber:471, regionalPokedexNumber:"170", picture:"https://cdn.bulbagarden.net/upload/b/bb/471MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Glaceon_(Pok%C3%A9mon)"}), +(Gliscor:Pokemon {name:"Gliscor", nationalPokedexNumber:472, regionalPokedexNumber:"154", picture:"https://cdn.bulbagarden.net/upload/a/ad/472MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gliscor_(Pok%C3%A9mon)"}), +(Mamoswine:Pokemon {name:"Mamoswine", nationalPokedexNumber:473, regionalPokedexNumber:"205", picture:"https://cdn.bulbagarden.net/upload/1/12/473MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mamoswine_(Pok%C3%A9mon)"}), +(PorygonZ:Pokemon {name:"Porygon-Z", nationalPokedexNumber:474, regionalPokedexNumber:"194", picture:"https://cdn.bulbagarden.net/upload/6/65/474MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Porygon-Z_(Pok%C3%A9mon)"}), +(Gallade:Pokemon {name:"Gallade", nationalPokedexNumber:475, regionalPokedexNumber:"160", picture:"https://cdn.bulbagarden.net/upload/8/85/475MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gallade_(Pok%C3%A9mon)"}), +(Probopass:Pokemon {name:"Probopass", nationalPokedexNumber:476, regionalPokedexNumber:"156", picture:"https://cdn.bulbagarden.net/upload/a/aa/476MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Probopass_(Pok%C3%A9mon)"}), +(Dusknoir:Pokemon {name:"Dusknoir", nationalPokedexNumber:477, regionalPokedexNumber:"191", picture:"https://cdn.bulbagarden.net/upload/7/71/477MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dusknoir_(Pok%C3%A9mon)"}), +(Froslass:Pokemon {name:"Froslass", nationalPokedexNumber:478, regionalPokedexNumber:"208", picture:"https://cdn.bulbagarden.net/upload/8/8f/478MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Froslass_(Pok%C3%A9mon)"}), +(Rotom:Pokemon {name:"Rotom", nationalPokedexNumber:479, regionalPokedexNumber:"152", picture:"https://cdn.bulbagarden.net/upload/1/14/479MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rotom_(Pok%C3%A9mon)"}), +(Uxie:Pokemon {name:"Uxie", nationalPokedexNumber:480, regionalPokedexNumber:"146", picture:"https://cdn.bulbagarden.net/upload/0/0e/480MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Uxie_(Pok%C3%A9mon)"}), +(Mesprit:Pokemon {name:"Mesprit", nationalPokedexNumber:481, regionalPokedexNumber:"147", picture:"https://cdn.bulbagarden.net/upload/c/c7/481MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mesprit_(Pok%C3%A9mon)"}), +(Azelf:Pokemon {name:"Azelf", nationalPokedexNumber:482, regionalPokedexNumber:"148", picture:"https://cdn.bulbagarden.net/upload/0/01/482MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Azelf_(Pok%C3%A9mon)"}), +(Dialga:Pokemon {name:"Dialga", nationalPokedexNumber:483, regionalPokedexNumber:"149", picture:"https://cdn.bulbagarden.net/upload/c/ca/483MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dialga_(Pok%C3%A9mon)"}), +(Palkia:Pokemon {name:"Palkia", nationalPokedexNumber:484, regionalPokedexNumber:"150", picture:"https://cdn.bulbagarden.net/upload/2/24/484MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Palkia_(Pok%C3%A9mon)"}), +(Heatran:Pokemon {name:"Heatran", nationalPokedexNumber:485, picture:"https://cdn.bulbagarden.net/upload/c/cf/485MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Heatran_(Pok%C3%A9mon)"}), +(Regigigas:Pokemon {name:"Regigigas", nationalPokedexNumber:486, picture:"https://cdn.bulbagarden.net/upload/8/8e/486MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Regigigas_(Pok%C3%A9mon)"}), +(Giratina:Pokemon {name:"Giratina", nationalPokedexNumber:487, regionalPokedexNumber:"210", picture:"https://cdn.bulbagarden.net/upload/e/e8/487MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Giratina_(Pok%C3%A9mon)"}), +(Cresselia:Pokemon {name:"Cresselia", nationalPokedexNumber:488, picture:"https://cdn.bulbagarden.net/upload/5/51/488MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cresselia_(Pok%C3%A9mon)"}), +(Phione:Pokemon {name:"Phione", nationalPokedexNumber:489, picture:"https://cdn.bulbagarden.net/upload/c/ce/489MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Phione_(Pok%C3%A9mon)"}), +(Manaphy:Pokemon {name:"Manaphy", nationalPokedexNumber:490, regionalPokedexNumber:"151", picture:"https://cdn.bulbagarden.net/upload/0/01/490MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Manaphy_(Pok%C3%A9mon)"}), +(Darkrai:Pokemon {name:"Darkrai", nationalPokedexNumber:491, picture:"https://cdn.bulbagarden.net/upload/a/a7/491MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Darkrai_(Pok%C3%A9mon)"}), +(Shaymin:Pokemon {name:"Shaymin", nationalPokedexNumber:492, picture:"https://cdn.bulbagarden.net/upload/a/a6/492MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shaymin_(Pok%C3%A9mon)"}), +(Arceus:Pokemon {name:"Arceus", nationalPokedexNumber:493, picture:"https://cdn.bulbagarden.net/upload/9/94/493MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Arceus_(Pok%C3%A9mon)"}), +(Victini:Pokemon {name:"Victini", nationalPokedexNumber:494, regionalPokedexNumber:"000", picture:"https://cdn.bulbagarden.net/upload/0/0c/494MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Victini_(Pok%C3%A9mon)"}), +(Snivy:Pokemon {name:"Snivy", nationalPokedexNumber:495, regionalPokedexNumber:"001", picture:"https://cdn.bulbagarden.net/upload/2/23/495MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Snivy_(Pok%C3%A9mon)"}), +(Servine:Pokemon {name:"Servine", nationalPokedexNumber:496, regionalPokedexNumber:"002", picture:"https://cdn.bulbagarden.net/upload/8/8f/496MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Servine_(Pok%C3%A9mon)"}), +(Serperior:Pokemon {name:"Serperior", nationalPokedexNumber:497, regionalPokedexNumber:"003", picture:"https://cdn.bulbagarden.net/upload/2/2e/497MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Serperior_(Pok%C3%A9mon)"}), +(Tepig:Pokemon {name:"Tepig", nationalPokedexNumber:498, regionalPokedexNumber:"004", picture:"https://cdn.bulbagarden.net/upload/6/6f/498MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tepig_(Pok%C3%A9mon)"}), +(Pignite:Pokemon {name:"Pignite", nationalPokedexNumber:499, regionalPokedexNumber:"005", picture:"https://cdn.bulbagarden.net/upload/2/29/499MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pignite_(Pok%C3%A9mon)"}), +(Emboar:Pokemon {name:"Emboar", nationalPokedexNumber:500, regionalPokedexNumber:"006", picture:"https://cdn.bulbagarden.net/upload/b/be/500MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Emboar_(Pok%C3%A9mon)"}), +(Oshawott:Pokemon {name:"Oshawott", nationalPokedexNumber:501, regionalPokedexNumber:"007", picture:"https://cdn.bulbagarden.net/upload/c/cb/501MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Oshawott_(Pok%C3%A9mon)"}), +(Dewott:Pokemon {name:"Dewott", nationalPokedexNumber:502, regionalPokedexNumber:"008", picture:"https://cdn.bulbagarden.net/upload/e/ed/502MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dewott_(Pok%C3%A9mon)"}), +(Samurott:Pokemon {name:"Samurott", nationalPokedexNumber:503, regionalPokedexNumber:"009", picture:"https://cdn.bulbagarden.net/upload/9/99/503MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Samurott_(Pok%C3%A9mon)"}), +(Patrat:Pokemon {name:"Patrat", nationalPokedexNumber:504, regionalPokedexNumber:"010", picture:"https://cdn.bulbagarden.net/upload/7/73/504MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Patrat_(Pok%C3%A9mon)"}), +(Watchog:Pokemon {name:"Watchog", nationalPokedexNumber:505, regionalPokedexNumber:"011", picture:"https://cdn.bulbagarden.net/upload/9/9b/505MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Watchog_(Pok%C3%A9mon)"}), +(Lillipup:Pokemon {name:"Lillipup", nationalPokedexNumber:506, regionalPokedexNumber:"012", picture:"https://cdn.bulbagarden.net/upload/c/cc/506MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lillipup_(Pok%C3%A9mon)"}), +(Herdier:Pokemon {name:"Herdier", nationalPokedexNumber:507, regionalPokedexNumber:"013", picture:"https://cdn.bulbagarden.net/upload/f/f2/507MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Herdier_(Pok%C3%A9mon)"}), +(Stoutland:Pokemon {name:"Stoutland", nationalPokedexNumber:508, regionalPokedexNumber:"014", picture:"https://cdn.bulbagarden.net/upload/0/0f/508MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Stoutland_(Pok%C3%A9mon)"}), +(Purrloin:Pokemon {name:"Purrloin", nationalPokedexNumber:509, regionalPokedexNumber:"015", picture:"https://cdn.bulbagarden.net/upload/b/b5/509MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Purrloin_(Pok%C3%A9mon)"}), +(Liepard:Pokemon {name:"Liepard", nationalPokedexNumber:510, regionalPokedexNumber:"016", picture:"https://cdn.bulbagarden.net/upload/4/4e/510MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Liepard_(Pok%C3%A9mon)"}), +(Pansage:Pokemon {name:"Pansage", nationalPokedexNumber:511, regionalPokedexNumber:"017", picture:"https://cdn.bulbagarden.net/upload/9/99/511MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pansage_(Pok%C3%A9mon)"}), +(Simisage:Pokemon {name:"Simisage", nationalPokedexNumber:512, regionalPokedexNumber:"018", picture:"https://cdn.bulbagarden.net/upload/6/6a/512MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Simisage_(Pok%C3%A9mon)"}), +(Pansear:Pokemon {name:"Pansear", nationalPokedexNumber:513, regionalPokedexNumber:"019", picture:"https://cdn.bulbagarden.net/upload/c/cb/513MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pansear_(Pok%C3%A9mon)"}), +(Simisear:Pokemon {name:"Simisear", nationalPokedexNumber:514, regionalPokedexNumber:"020", picture:"https://cdn.bulbagarden.net/upload/0/00/514MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Simisear_(Pok%C3%A9mon)"}), +(Panpour:Pokemon {name:"Panpour", nationalPokedexNumber:515, regionalPokedexNumber:"021", picture:"https://cdn.bulbagarden.net/upload/9/91/515MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Panpour_(Pok%C3%A9mon)"}), +(Simipour:Pokemon {name:"Simipour", nationalPokedexNumber:516, regionalPokedexNumber:"022", picture:"https://cdn.bulbagarden.net/upload/1/19/516MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Simipour_(Pok%C3%A9mon)"}), +(Munna:Pokemon {name:"Munna", nationalPokedexNumber:517, regionalPokedexNumber:"023", picture:"https://cdn.bulbagarden.net/upload/f/f2/517MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Munna_(Pok%C3%A9mon)"}), +(Musharna:Pokemon {name:"Musharna", nationalPokedexNumber:518, regionalPokedexNumber:"024", picture:"https://cdn.bulbagarden.net/upload/3/3e/518MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Musharna_(Pok%C3%A9mon)"}), +(Pidove:Pokemon {name:"Pidove", nationalPokedexNumber:519, regionalPokedexNumber:"025", picture:"https://cdn.bulbagarden.net/upload/a/a9/519MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pidove_(Pok%C3%A9mon)"}), +(Tranquill:Pokemon {name:"Tranquill", nationalPokedexNumber:520, regionalPokedexNumber:"026", picture:"https://cdn.bulbagarden.net/upload/9/90/520MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tranquill_(Pok%C3%A9mon)"}), +(Unfezant:Pokemon {name:"Unfezant", nationalPokedexNumber:521, regionalPokedexNumber:"027", picture:"https://cdn.bulbagarden.net/upload/a/a9/521MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Unfezant_(Pok%C3%A9mon)"}), +(Blitzle:Pokemon {name:"Blitzle", nationalPokedexNumber:522, regionalPokedexNumber:"028", picture:"https://cdn.bulbagarden.net/upload/5/58/522MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Blitzle_(Pok%C3%A9mon)"}), +(Zebstrika:Pokemon {name:"Zebstrika", nationalPokedexNumber:523, regionalPokedexNumber:"029", picture:"https://cdn.bulbagarden.net/upload/d/d7/523MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zebstrika_(Pok%C3%A9mon)"}), +(Roggenrola:Pokemon {name:"Roggenrola", nationalPokedexNumber:524, regionalPokedexNumber:"030", picture:"https://cdn.bulbagarden.net/upload/6/62/524MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Roggenrola_(Pok%C3%A9mon)"}), +(Boldore:Pokemon {name:"Boldore", nationalPokedexNumber:525, regionalPokedexNumber:"031", picture:"https://cdn.bulbagarden.net/upload/2/25/525MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Boldore_(Pok%C3%A9mon)"}), +(Gigalith:Pokemon {name:"Gigalith", nationalPokedexNumber:526, regionalPokedexNumber:"032", picture:"https://cdn.bulbagarden.net/upload/5/53/526MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gigalith_(Pok%C3%A9mon)"}), +(Woobat:Pokemon {name:"Woobat", nationalPokedexNumber:527, regionalPokedexNumber:"033", picture:"https://cdn.bulbagarden.net/upload/8/8d/527MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Woobat_(Pok%C3%A9mon)"}), +(Swoobat:Pokemon {name:"Swoobat", nationalPokedexNumber:528, regionalPokedexNumber:"034", picture:"https://cdn.bulbagarden.net/upload/d/de/528MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swoobat_(Pok%C3%A9mon)"}), +(Drilbur:Pokemon {name:"Drilbur", nationalPokedexNumber:529, regionalPokedexNumber:"035", picture:"https://cdn.bulbagarden.net/upload/0/0a/529MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Drilbur_(Pok%C3%A9mon)"}), +(Excadrill:Pokemon {name:"Excadrill", nationalPokedexNumber:530, regionalPokedexNumber:"036", picture:"https://cdn.bulbagarden.net/upload/7/71/530MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Excadrill_(Pok%C3%A9mon)"}), +(Audino:Pokemon {name:"Audino", nationalPokedexNumber:531, regionalPokedexNumber:"037", picture:"https://cdn.bulbagarden.net/upload/a/a5/531MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Audino_(Pok%C3%A9mon)"}), +(Timburr:Pokemon {name:"Timburr", nationalPokedexNumber:532, regionalPokedexNumber:"038", picture:"https://cdn.bulbagarden.net/upload/8/80/532MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Timburr_(Pok%C3%A9mon)"}), +(Gurdurr:Pokemon {name:"Gurdurr", nationalPokedexNumber:533, regionalPokedexNumber:"039", picture:"https://cdn.bulbagarden.net/upload/2/2d/533MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gurdurr_(Pok%C3%A9mon)"}), +(Conkeldurr:Pokemon {name:"Conkeldurr", nationalPokedexNumber:534, regionalPokedexNumber:"040", picture:"https://cdn.bulbagarden.net/upload/8/8b/534MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Conkeldurr_(Pok%C3%A9mon)"}), +(Tympole:Pokemon {name:"Tympole", nationalPokedexNumber:535, regionalPokedexNumber:"041", picture:"https://cdn.bulbagarden.net/upload/0/0e/535MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tympole_(Pok%C3%A9mon)"}), +(Palpitoad:Pokemon {name:"Palpitoad", nationalPokedexNumber:536, regionalPokedexNumber:"042", picture:"https://cdn.bulbagarden.net/upload/2/2a/536MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Palpitoad_(Pok%C3%A9mon)"}), +(Seismitoad:Pokemon {name:"Seismitoad", nationalPokedexNumber:537, regionalPokedexNumber:"043", picture:"https://cdn.bulbagarden.net/upload/9/95/537MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Seismitoad_(Pok%C3%A9mon)"}), +(Throh:Pokemon {name:"Throh", nationalPokedexNumber:538, regionalPokedexNumber:"044", picture:"https://cdn.bulbagarden.net/upload/7/73/538MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Throh_(Pok%C3%A9mon)"}), +(Sawk:Pokemon {name:"Sawk", nationalPokedexNumber:539, regionalPokedexNumber:"045", picture:"https://cdn.bulbagarden.net/upload/8/82/539MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sawk_(Pok%C3%A9mon)"}), +(Sewaddle:Pokemon {name:"Sewaddle", nationalPokedexNumber:540, regionalPokedexNumber:"046", picture:"https://cdn.bulbagarden.net/upload/9/97/540MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sewaddle_(Pok%C3%A9mon)"}), +(Swadloon:Pokemon {name:"Swadloon", nationalPokedexNumber:541, regionalPokedexNumber:"047", picture:"https://cdn.bulbagarden.net/upload/a/ab/541MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swadloon_(Pok%C3%A9mon)"}), +(Leavanny:Pokemon {name:"Leavanny", nationalPokedexNumber:542, regionalPokedexNumber:"048", picture:"https://cdn.bulbagarden.net/upload/2/2d/542MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Leavanny_(Pok%C3%A9mon)"}), +(Venipede:Pokemon {name:"Venipede", nationalPokedexNumber:543, regionalPokedexNumber:"049", picture:"https://cdn.bulbagarden.net/upload/2/2c/543MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Venipede_(Pok%C3%A9mon)"}), +(Whirlipede:Pokemon {name:"Whirlipede", nationalPokedexNumber:544, regionalPokedexNumber:"050", picture:"https://cdn.bulbagarden.net/upload/b/ba/544MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Whirlipede_(Pok%C3%A9mon)"}), +(Scolipede:Pokemon {name:"Scolipede", nationalPokedexNumber:545, regionalPokedexNumber:"051", picture:"https://cdn.bulbagarden.net/upload/d/d3/545MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Scolipede_(Pok%C3%A9mon)"}), +(Cottonee:Pokemon {name:"Cottonee", nationalPokedexNumber:546, regionalPokedexNumber:"052", picture:"https://cdn.bulbagarden.net/upload/a/ac/546MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cottonee_(Pok%C3%A9mon)"}), +(Whimsicott:Pokemon {name:"Whimsicott", nationalPokedexNumber:547, regionalPokedexNumber:"053", picture:"https://cdn.bulbagarden.net/upload/1/1c/547MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Whimsicott_(Pok%C3%A9mon)"}), +(Petilil:Pokemon {name:"Petilil", nationalPokedexNumber:548, regionalPokedexNumber:"054", picture:"https://cdn.bulbagarden.net/upload/d/d4/548MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Petilil_(Pok%C3%A9mon)"}), +(Lilligant:Pokemon {name:"Lilligant", nationalPokedexNumber:549, regionalPokedexNumber:"055", picture:"https://cdn.bulbagarden.net/upload/d/d1/549MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lilligant_(Pok%C3%A9mon)"}), +(Basculin:Pokemon {name:"Basculin", nationalPokedexNumber:550, regionalPokedexNumber:"056", picture:"https://cdn.bulbagarden.net/upload/a/a7/550MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Basculin_(Pok%C3%A9mon)"}), +(Sandile:Pokemon {name:"Sandile", nationalPokedexNumber:551, regionalPokedexNumber:"057", picture:"https://cdn.bulbagarden.net/upload/1/1a/551MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sandile_(Pok%C3%A9mon)"}), +(Krokorok:Pokemon {name:"Krokorok", nationalPokedexNumber:552, regionalPokedexNumber:"058", picture:"https://cdn.bulbagarden.net/upload/c/cd/552MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Krokorok_(Pok%C3%A9mon)"}), +(Krookodile:Pokemon {name:"Krookodile", nationalPokedexNumber:553, regionalPokedexNumber:"059", picture:"https://cdn.bulbagarden.net/upload/f/fe/553MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Krookodile_(Pok%C3%A9mon)"}), +(Darumaka:Pokemon {name:"Darumaka", nationalPokedexNumber:554, regionalPokedexNumber:"060", picture:"https://cdn.bulbagarden.net/upload/8/8f/554MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Darumaka_(Pok%C3%A9mon)"}), +(Darmanitan:Pokemon {name:"Darmanitan", nationalPokedexNumber:555, regionalPokedexNumber:"061", picture:"https://cdn.bulbagarden.net/upload/5/52/555MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Darmanitan_(Pok%C3%A9mon)"}), +(Maractus:Pokemon {name:"Maractus", nationalPokedexNumber:556, regionalPokedexNumber:"062", picture:"https://cdn.bulbagarden.net/upload/f/f2/556MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Maractus_(Pok%C3%A9mon)"}), +(Dwebble:Pokemon {name:"Dwebble", nationalPokedexNumber:557, regionalPokedexNumber:"063", picture:"https://cdn.bulbagarden.net/upload/9/9e/557MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dwebble_(Pok%C3%A9mon)"}), +(Crustle:Pokemon {name:"Crustle", nationalPokedexNumber:558, regionalPokedexNumber:"064", picture:"https://cdn.bulbagarden.net/upload/e/e3/558MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Crustle_(Pok%C3%A9mon)"}), +(Scraggy:Pokemon {name:"Scraggy", nationalPokedexNumber:559, regionalPokedexNumber:"065", picture:"https://cdn.bulbagarden.net/upload/0/09/559MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Scraggy_(Pok%C3%A9mon)"}), +(Scrafty:Pokemon {name:"Scrafty", nationalPokedexNumber:560, regionalPokedexNumber:"066", picture:"https://cdn.bulbagarden.net/upload/a/a3/560MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Scrafty_(Pok%C3%A9mon)"}), +(Sigilyph:Pokemon {name:"Sigilyph", nationalPokedexNumber:561, regionalPokedexNumber:"067", picture:"https://cdn.bulbagarden.net/upload/7/76/561MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sigilyph_(Pok%C3%A9mon)"}), +(Yamask:Pokemon {name:"Yamask", nationalPokedexNumber:562, regionalPokedexNumber:"068", picture:"https://cdn.bulbagarden.net/upload/a/a9/562MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Yamask_(Pok%C3%A9mon)"}), +(Cofagrigus:Pokemon {name:"Cofagrigus", nationalPokedexNumber:563, regionalPokedexNumber:"069", picture:"https://cdn.bulbagarden.net/upload/9/9b/563MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cofagrigus_(Pok%C3%A9mon)"}), +(Tirtouga:Pokemon {name:"Tirtouga", nationalPokedexNumber:564, regionalPokedexNumber:"070", picture:"https://cdn.bulbagarden.net/upload/f/f7/564MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tirtouga_(Pok%C3%A9mon)"}), +(Carracosta:Pokemon {name:"Carracosta", nationalPokedexNumber:565, regionalPokedexNumber:"071", picture:"https://cdn.bulbagarden.net/upload/a/a3/565MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Carracosta_(Pok%C3%A9mon)"}), +(Archen:Pokemon {name:"Archen", nationalPokedexNumber:566, regionalPokedexNumber:"072", picture:"https://cdn.bulbagarden.net/upload/8/8a/566MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Archen_(Pok%C3%A9mon)"}), +(Archeops:Pokemon {name:"Archeops", nationalPokedexNumber:567, regionalPokedexNumber:"073", picture:"https://cdn.bulbagarden.net/upload/a/a9/567MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Archeops_(Pok%C3%A9mon)"}), +(Trubbish:Pokemon {name:"Trubbish", nationalPokedexNumber:568, regionalPokedexNumber:"074", picture:"https://cdn.bulbagarden.net/upload/d/d8/568MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Trubbish_(Pok%C3%A9mon)"}), +(Garbodor:Pokemon {name:"Garbodor", nationalPokedexNumber:569, regionalPokedexNumber:"075", picture:"https://cdn.bulbagarden.net/upload/2/2e/569MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Garbodor_(Pok%C3%A9mon)"}), +(Zorua:Pokemon {name:"Zorua", nationalPokedexNumber:570, regionalPokedexNumber:"076", picture:"https://cdn.bulbagarden.net/upload/d/d5/570MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zorua_(Pok%C3%A9mon)"}), +(Zoroark:Pokemon {name:"Zoroark", nationalPokedexNumber:571, regionalPokedexNumber:"077", picture:"https://cdn.bulbagarden.net/upload/b/bd/571MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zoroark_(Pok%C3%A9mon)"}), +(Minccino:Pokemon {name:"Minccino", nationalPokedexNumber:572, regionalPokedexNumber:"078", picture:"https://cdn.bulbagarden.net/upload/b/b7/572MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Minccino_(Pok%C3%A9mon)"}), +(Cinccino:Pokemon {name:"Cinccino", nationalPokedexNumber:573, regionalPokedexNumber:"079", picture:"https://cdn.bulbagarden.net/upload/8/82/573MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cinccino_(Pok%C3%A9mon)"}), +(Gothita:Pokemon {name:"Gothita", nationalPokedexNumber:574, regionalPokedexNumber:"080", picture:"https://cdn.bulbagarden.net/upload/5/57/574MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gothita_(Pok%C3%A9mon)"}), +(Gothorita:Pokemon {name:"Gothorita", nationalPokedexNumber:575, regionalPokedexNumber:"081", picture:"https://cdn.bulbagarden.net/upload/7/75/575MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gothorita_(Pok%C3%A9mon)"}), +(Gothitelle:Pokemon {name:"Gothitelle", nationalPokedexNumber:576, regionalPokedexNumber:"082", picture:"https://cdn.bulbagarden.net/upload/b/be/576MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gothitelle_(Pok%C3%A9mon)"}), +(Solosis:Pokemon {name:"Solosis", nationalPokedexNumber:577, regionalPokedexNumber:"083", picture:"https://cdn.bulbagarden.net/upload/7/7e/577MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Solosis_(Pok%C3%A9mon)"}), +(Duosion:Pokemon {name:"Duosion", nationalPokedexNumber:578, regionalPokedexNumber:"084", picture:"https://cdn.bulbagarden.net/upload/6/64/578MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Duosion_(Pok%C3%A9mon)"}), +(Reuniclus:Pokemon {name:"Reuniclus", nationalPokedexNumber:579, regionalPokedexNumber:"085", picture:"https://cdn.bulbagarden.net/upload/7/77/579MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Reuniclus_(Pok%C3%A9mon)"}), +(Ducklett:Pokemon {name:"Ducklett", nationalPokedexNumber:580, regionalPokedexNumber:"086", picture:"https://cdn.bulbagarden.net/upload/e/e7/580MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ducklett_(Pok%C3%A9mon)"}), +(Swanna:Pokemon {name:"Swanna", nationalPokedexNumber:581, regionalPokedexNumber:"087", picture:"https://cdn.bulbagarden.net/upload/e/e8/581MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swanna_(Pok%C3%A9mon)"}), +(Vanillite:Pokemon {name:"Vanillite", nationalPokedexNumber:582, regionalPokedexNumber:"088", picture:"https://cdn.bulbagarden.net/upload/5/51/582MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vanillite_(Pok%C3%A9mon)"}), +(Vanillish:Pokemon {name:"Vanillish", nationalPokedexNumber:583, regionalPokedexNumber:"089", picture:"https://cdn.bulbagarden.net/upload/7/70/583MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vanillish_(Pok%C3%A9mon)"}), +(Vanilluxe:Pokemon {name:"Vanilluxe", nationalPokedexNumber:584, regionalPokedexNumber:"090", picture:"https://cdn.bulbagarden.net/upload/8/83/584MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vanilluxe_(Pok%C3%A9mon)"}), +(Deerling:Pokemon {name:"Deerling", nationalPokedexNumber:585, regionalPokedexNumber:"091", picture:"https://cdn.bulbagarden.net/upload/d/d9/585MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Deerling_(Pok%C3%A9mon)"}), +(Sawsbuck:Pokemon {name:"Sawsbuck", nationalPokedexNumber:586, regionalPokedexNumber:"092", picture:"https://cdn.bulbagarden.net/upload/6/64/586MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sawsbuck_(Pok%C3%A9mon)"}), +(Emolga:Pokemon {name:"Emolga", nationalPokedexNumber:587, regionalPokedexNumber:"093", picture:"https://cdn.bulbagarden.net/upload/9/95/587MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Emolga_(Pok%C3%A9mon)"}), +(Karrablast:Pokemon {name:"Karrablast", nationalPokedexNumber:588, regionalPokedexNumber:"094", picture:"https://cdn.bulbagarden.net/upload/c/ca/588MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Karrablast_(Pok%C3%A9mon)"}), +(Escavalier:Pokemon {name:"Escavalier", nationalPokedexNumber:589, regionalPokedexNumber:"095", picture:"https://cdn.bulbagarden.net/upload/0/0e/589MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Escavalier_(Pok%C3%A9mon)"}), +(Foongus:Pokemon {name:"Foongus", nationalPokedexNumber:590, regionalPokedexNumber:"096", picture:"https://cdn.bulbagarden.net/upload/8/88/590MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Foongus_(Pok%C3%A9mon)"}), +(Amoonguss:Pokemon {name:"Amoonguss", nationalPokedexNumber:591, regionalPokedexNumber:"097", picture:"https://cdn.bulbagarden.net/upload/2/23/591MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Amoonguss_(Pok%C3%A9mon)"}), +(Frillish:Pokemon {name:"Frillish", nationalPokedexNumber:592, regionalPokedexNumber:"098", picture:"https://cdn.bulbagarden.net/upload/0/09/592MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Frillish_(Pok%C3%A9mon)"}), +(Jellicent:Pokemon {name:"Jellicent", nationalPokedexNumber:593, regionalPokedexNumber:"099", picture:"https://cdn.bulbagarden.net/upload/7/71/593MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Jellicent_(Pok%C3%A9mon)"}), +(Alomomola:Pokemon {name:"Alomomola", nationalPokedexNumber:594, regionalPokedexNumber:"100", picture:"https://cdn.bulbagarden.net/upload/5/5a/594MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Alomomola_(Pok%C3%A9mon)"}), +(Joltik:Pokemon {name:"Joltik", nationalPokedexNumber:595, regionalPokedexNumber:"101", picture:"https://cdn.bulbagarden.net/upload/f/f3/595MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Joltik_(Pok%C3%A9mon)"}), +(Galvantula:Pokemon {name:"Galvantula", nationalPokedexNumber:596, regionalPokedexNumber:"102", picture:"https://cdn.bulbagarden.net/upload/c/c4/596MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Galvantula_(Pok%C3%A9mon)"}), +(Ferroseed:Pokemon {name:"Ferroseed", nationalPokedexNumber:597, regionalPokedexNumber:"103", picture:"https://cdn.bulbagarden.net/upload/b/b2/597MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ferroseed_(Pok%C3%A9mon)"}), +(Ferrothorn:Pokemon {name:"Ferrothorn", nationalPokedexNumber:598, regionalPokedexNumber:"104", picture:"https://cdn.bulbagarden.net/upload/9/9e/598MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ferrothorn_(Pok%C3%A9mon)"}), +(Klink:Pokemon {name:"Klink", nationalPokedexNumber:599, regionalPokedexNumber:"105", picture:"https://cdn.bulbagarden.net/upload/6/61/599MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Klink_(Pok%C3%A9mon)"}), +(Klang:Pokemon {name:"Klang", nationalPokedexNumber:600, regionalPokedexNumber:"106", picture:"https://cdn.bulbagarden.net/upload/3/3a/600MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Klang_(Pok%C3%A9mon)"}), +(Klinklang:Pokemon {name:"Klinklang", nationalPokedexNumber:601, regionalPokedexNumber:"107", picture:"https://cdn.bulbagarden.net/upload/2/25/601MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Klinklang_(Pok%C3%A9mon)"}), +(Tynamo:Pokemon {name:"Tynamo", nationalPokedexNumber:602, regionalPokedexNumber:"108", picture:"https://cdn.bulbagarden.net/upload/e/e1/602MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tynamo_(Pok%C3%A9mon)"}), +(Eelektrik:Pokemon {name:"Eelektrik", nationalPokedexNumber:603, regionalPokedexNumber:"109", picture:"https://cdn.bulbagarden.net/upload/c/cb/603MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Eelektrik_(Pok%C3%A9mon)"}), +(Eelektross:Pokemon {name:"Eelektross", nationalPokedexNumber:604, regionalPokedexNumber:"110", picture:"https://cdn.bulbagarden.net/upload/0/0f/604MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Eelektross_(Pok%C3%A9mon)"}), +(Elgyem:Pokemon {name:"Elgyem", nationalPokedexNumber:605, regionalPokedexNumber:"111", picture:"https://cdn.bulbagarden.net/upload/6/6f/605MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Elgyem_(Pok%C3%A9mon)"}), +(Beheeyem:Pokemon {name:"Beheeyem", nationalPokedexNumber:606, regionalPokedexNumber:"112", picture:"https://cdn.bulbagarden.net/upload/5/53/606MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Beheeyem_(Pok%C3%A9mon)"}), +(Litwick:Pokemon {name:"Litwick", nationalPokedexNumber:607, regionalPokedexNumber:"113", picture:"https://cdn.bulbagarden.net/upload/7/7c/607MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Litwick_(Pok%C3%A9mon)"}), +(Lampent:Pokemon {name:"Lampent", nationalPokedexNumber:608, regionalPokedexNumber:"114", picture:"https://cdn.bulbagarden.net/upload/0/04/608MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lampent_(Pok%C3%A9mon)"}), +(Chandelure:Pokemon {name:"Chandelure", nationalPokedexNumber:609, regionalPokedexNumber:"115", picture:"https://cdn.bulbagarden.net/upload/3/39/609MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chandelure_(Pok%C3%A9mon)"}), +(Axew:Pokemon {name:"Axew", nationalPokedexNumber:610, regionalPokedexNumber:"116", picture:"https://cdn.bulbagarden.net/upload/0/0c/610MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Axew_(Pok%C3%A9mon)"}), +(Fraxure:Pokemon {name:"Fraxure", nationalPokedexNumber:611, regionalPokedexNumber:"117", picture:"https://cdn.bulbagarden.net/upload/1/1d/611MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Fraxure_(Pok%C3%A9mon)"}), +(Haxorus:Pokemon {name:"Haxorus", nationalPokedexNumber:612, regionalPokedexNumber:"118", picture:"https://cdn.bulbagarden.net/upload/5/5d/612MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Haxorus_(Pok%C3%A9mon)"}), +(Cubchoo:Pokemon {name:"Cubchoo", nationalPokedexNumber:613, regionalPokedexNumber:"119", picture:"https://cdn.bulbagarden.net/upload/f/fe/613MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cubchoo_(Pok%C3%A9mon)"}), +(Beartic:Pokemon {name:"Beartic", nationalPokedexNumber:614, regionalPokedexNumber:"120", picture:"https://cdn.bulbagarden.net/upload/f/f9/614MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Beartic_(Pok%C3%A9mon)"}), +(Cryogonal:Pokemon {name:"Cryogonal", nationalPokedexNumber:615, regionalPokedexNumber:"121", picture:"https://cdn.bulbagarden.net/upload/d/d9/615MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cryogonal_(Pok%C3%A9mon)"}), +(Shelmet:Pokemon {name:"Shelmet", nationalPokedexNumber:616, regionalPokedexNumber:"122", picture:"https://cdn.bulbagarden.net/upload/d/da/616MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shelmet_(Pok%C3%A9mon)"}), +(Accelgor:Pokemon {name:"Accelgor", nationalPokedexNumber:617, regionalPokedexNumber:"123", picture:"https://cdn.bulbagarden.net/upload/3/33/617MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Accelgor_(Pok%C3%A9mon)"}), +(Stunfisk:Pokemon {name:"Stunfisk", nationalPokedexNumber:618, regionalPokedexNumber:"124", picture:"https://cdn.bulbagarden.net/upload/3/31/618MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Stunfisk_(Pok%C3%A9mon)"}), +(Mienfoo:Pokemon {name:"Mienfoo", nationalPokedexNumber:619, regionalPokedexNumber:"125", picture:"https://cdn.bulbagarden.net/upload/a/a9/619MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mienfoo_(Pok%C3%A9mon)"}), +(Mienshao:Pokemon {name:"Mienshao", nationalPokedexNumber:620, regionalPokedexNumber:"126", picture:"https://cdn.bulbagarden.net/upload/e/e4/620MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mienshao_(Pok%C3%A9mon)"}), +(Druddigon:Pokemon {name:"Druddigon", nationalPokedexNumber:621, regionalPokedexNumber:"127", picture:"https://cdn.bulbagarden.net/upload/5/53/621MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Druddigon_(Pok%C3%A9mon)"}), +(Golett:Pokemon {name:"Golett", nationalPokedexNumber:622, regionalPokedexNumber:"128", picture:"https://cdn.bulbagarden.net/upload/3/3b/622MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Golett_(Pok%C3%A9mon)"}), +(Golurk:Pokemon {name:"Golurk", nationalPokedexNumber:623, regionalPokedexNumber:"129", picture:"https://cdn.bulbagarden.net/upload/8/85/623MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Golurk_(Pok%C3%A9mon)"}), +(Pawniard:Pokemon {name:"Pawniard", nationalPokedexNumber:624, regionalPokedexNumber:"130", picture:"https://cdn.bulbagarden.net/upload/5/59/624MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pawniard_(Pok%C3%A9mon)"}), +(Bisharp:Pokemon {name:"Bisharp", nationalPokedexNumber:625, regionalPokedexNumber:"131", picture:"https://cdn.bulbagarden.net/upload/3/3e/625MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bisharp_(Pok%C3%A9mon)"}), +(Bouffalant:Pokemon {name:"Bouffalant", nationalPokedexNumber:626, regionalPokedexNumber:"132", picture:"https://cdn.bulbagarden.net/upload/0/01/626MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bouffalant_(Pok%C3%A9mon)"}), +(Rufflet:Pokemon {name:"Rufflet", nationalPokedexNumber:627, regionalPokedexNumber:"133", picture:"https://cdn.bulbagarden.net/upload/e/e5/627MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rufflet_(Pok%C3%A9mon)"}), +(Braviary:Pokemon {name:"Braviary", nationalPokedexNumber:628, regionalPokedexNumber:"134", picture:"https://cdn.bulbagarden.net/upload/5/54/628MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Braviary_(Pok%C3%A9mon)"}), +(Vullaby:Pokemon {name:"Vullaby", nationalPokedexNumber:629, regionalPokedexNumber:"135", picture:"https://cdn.bulbagarden.net/upload/2/2f/629MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vullaby_(Pok%C3%A9mon)"}), +(Mandibuzz:Pokemon {name:"Mandibuzz", nationalPokedexNumber:630, regionalPokedexNumber:"136", picture:"https://cdn.bulbagarden.net/upload/f/f7/630MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mandibuzz_(Pok%C3%A9mon)"}), +(Heatmor:Pokemon {name:"Heatmor", nationalPokedexNumber:631, regionalPokedexNumber:"137", picture:"https://cdn.bulbagarden.net/upload/e/e2/631MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Heatmor_(Pok%C3%A9mon)"}), +(Durant:Pokemon {name:"Durant", nationalPokedexNumber:632, regionalPokedexNumber:"138", picture:"https://cdn.bulbagarden.net/upload/a/a4/632MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Durant_(Pok%C3%A9mon)"}), +(Deino:Pokemon {name:"Deino", nationalPokedexNumber:633, regionalPokedexNumber:"139", picture:"https://cdn.bulbagarden.net/upload/3/39/633MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Deino_(Pok%C3%A9mon)"}), +(Zweilous:Pokemon {name:"Zweilous", nationalPokedexNumber:634, regionalPokedexNumber:"140", picture:"https://cdn.bulbagarden.net/upload/6/69/634MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zweilous_(Pok%C3%A9mon)"}), +(Hydreigon:Pokemon {name:"Hydreigon", nationalPokedexNumber:635, regionalPokedexNumber:"141", picture:"https://cdn.bulbagarden.net/upload/8/83/635MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hydreigon_(Pok%C3%A9mon)"}), +(Larvesta:Pokemon {name:"Larvesta", nationalPokedexNumber:636, regionalPokedexNumber:"142", picture:"https://cdn.bulbagarden.net/upload/0/09/636MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Larvesta_(Pok%C3%A9mon)"}), +(Volcarona:Pokemon {name:"Volcarona", nationalPokedexNumber:637, regionalPokedexNumber:"143", picture:"https://cdn.bulbagarden.net/upload/7/78/637MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Volcarona_(Pok%C3%A9mon)"}), +(Cobalion:Pokemon {name:"Cobalion", nationalPokedexNumber:638, regionalPokedexNumber:"144", picture:"https://cdn.bulbagarden.net/upload/3/36/638MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cobalion_(Pok%C3%A9mon)"}), +(Terrakion:Pokemon {name:"Terrakion", nationalPokedexNumber:639, regionalPokedexNumber:"145", picture:"https://cdn.bulbagarden.net/upload/5/5d/639MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Terrakion_(Pok%C3%A9mon)"}), +(Virizion:Pokemon {name:"Virizion", nationalPokedexNumber:640, regionalPokedexNumber:"146", picture:"https://cdn.bulbagarden.net/upload/6/60/640MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Virizion_(Pok%C3%A9mon)"}), +(Tornadus:Pokemon {name:"Tornadus", nationalPokedexNumber:641, regionalPokedexNumber:"147", picture:"https://cdn.bulbagarden.net/upload/1/13/641MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tornadus_(Pok%C3%A9mon)"}), +(Thundurus:Pokemon {name:"Thundurus", nationalPokedexNumber:642, regionalPokedexNumber:"148", picture:"https://cdn.bulbagarden.net/upload/b/b4/642MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Thundurus_(Pok%C3%A9mon)"}), +(Reshiram:Pokemon {name:"Reshiram", nationalPokedexNumber:643, regionalPokedexNumber:"149", picture:"https://cdn.bulbagarden.net/upload/0/03/643MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Reshiram_(Pok%C3%A9mon)"}), +(Zekrom:Pokemon {name:"Zekrom", nationalPokedexNumber:644, regionalPokedexNumber:"150", picture:"https://cdn.bulbagarden.net/upload/b/b2/644MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zekrom_(Pok%C3%A9mon)"}), +(Landorus:Pokemon {name:"Landorus", nationalPokedexNumber:645, regionalPokedexNumber:"151", picture:"https://cdn.bulbagarden.net/upload/a/a4/645MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Landorus_(Pok%C3%A9mon)"}), +(Kyurem:Pokemon {name:"Kyurem", nationalPokedexNumber:646, regionalPokedexNumber:"152", picture:"https://cdn.bulbagarden.net/upload/1/12/646MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kyurem_(Pok%C3%A9mon)"}), +(Keldeo:Pokemon {name:"Keldeo", nationalPokedexNumber:647, regionalPokedexNumber:"153", picture:"https://cdn.bulbagarden.net/upload/7/78/647MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Keldeo_(Pok%C3%A9mon)"}), +(Meloetta:Pokemon {name:"Meloetta", nationalPokedexNumber:648, regionalPokedexNumber:"154", picture:"https://cdn.bulbagarden.net/upload/1/1f/648MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Meloetta_(Pok%C3%A9mon)"}), +(Genesect:Pokemon {name:"Genesect", nationalPokedexNumber:649, regionalPokedexNumber:"155", picture:"https://cdn.bulbagarden.net/upload/1/17/649MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Genesect_(Pok%C3%A9mon)"}), +(Chespin:Pokemon {name:"Chespin", nationalPokedexNumber:650, regionalPokedexNumber:"001Ce", picture:"https://cdn.bulbagarden.net/upload/6/67/650MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chespin_(Pok%C3%A9mon)"}), +(Quilladin:Pokemon {name:"Quilladin", nationalPokedexNumber:651, regionalPokedexNumber:"002Ce", picture:"https://cdn.bulbagarden.net/upload/b/bf/651MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Quilladin_(Pok%C3%A9mon)"}), +(Chesnaught:Pokemon {name:"Chesnaught", nationalPokedexNumber:652, regionalPokedexNumber:"003Ce", picture:"https://cdn.bulbagarden.net/upload/1/1c/652MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Chesnaught_(Pok%C3%A9mon)"}), +(Fennekin:Pokemon {name:"Fennekin", nationalPokedexNumber:653, regionalPokedexNumber:"004Ce", picture:"https://cdn.bulbagarden.net/upload/f/f9/653MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Fennekin_(Pok%C3%A9mon)"}), +(Braixen:Pokemon {name:"Braixen", nationalPokedexNumber:654, regionalPokedexNumber:"005Ce", picture:"https://cdn.bulbagarden.net/upload/6/62/654MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Braixen_(Pok%C3%A9mon)"}), +(Delphox:Pokemon {name:"Delphox", nationalPokedexNumber:655, regionalPokedexNumber:"006Ce", picture:"https://cdn.bulbagarden.net/upload/f/f8/655MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Delphox_(Pok%C3%A9mon)"}), +(Froakie:Pokemon {name:"Froakie", nationalPokedexNumber:656, regionalPokedexNumber:"007Ce", picture:"https://cdn.bulbagarden.net/upload/d/d4/656MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Froakie_(Pok%C3%A9mon)"}), +(Frogadier:Pokemon {name:"Frogadier", nationalPokedexNumber:657, regionalPokedexNumber:"008Ce", picture:"https://cdn.bulbagarden.net/upload/1/15/657MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Frogadier_(Pok%C3%A9mon)"}), +(Greninja:Pokemon {name:"Greninja", nationalPokedexNumber:658, regionalPokedexNumber:"009Ce", picture:"https://cdn.bulbagarden.net/upload/8/87/658MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Greninja_(Pok%C3%A9mon)"}), +(Bunnelby:Pokemon {name:"Bunnelby", nationalPokedexNumber:659, regionalPokedexNumber:"010Ce", picture:"https://cdn.bulbagarden.net/upload/e/e2/659MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bunnelby_(Pok%C3%A9mon)"}), +(Diggersby:Pokemon {name:"Diggersby", nationalPokedexNumber:660, regionalPokedexNumber:"011Ce", picture:"https://cdn.bulbagarden.net/upload/0/05/660MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Diggersby_(Pok%C3%A9mon)"}), +(Fletchling:Pokemon {name:"Fletchling", nationalPokedexNumber:661, regionalPokedexNumber:"014Ce", picture:"https://cdn.bulbagarden.net/upload/9/9c/661MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Fletchling_(Pok%C3%A9mon)"}), +(Fletchinder:Pokemon {name:"Fletchinder", nationalPokedexNumber:662, regionalPokedexNumber:"015Ce", picture:"https://cdn.bulbagarden.net/upload/5/56/662MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Fletchinder_(Pok%C3%A9mon)"}), +(Talonflame:Pokemon {name:"Talonflame", nationalPokedexNumber:663, regionalPokedexNumber:"016Ce", picture:"https://cdn.bulbagarden.net/upload/8/81/663MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Talonflame_(Pok%C3%A9mon)"}), +(Scatterbug:Pokemon {name:"Scatterbug", nationalPokedexNumber:664, regionalPokedexNumber:"020Ce", picture:"https://cdn.bulbagarden.net/upload/e/e0/664MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Scatterbug_(Pok%C3%A9mon)"}), +(Spewpa:Pokemon {name:"Spewpa", nationalPokedexNumber:665, regionalPokedexNumber:"021Ce", picture:"https://cdn.bulbagarden.net/upload/8/8e/665MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Spewpa_(Pok%C3%A9mon)"}), +(Vivillon:Pokemon {name:"Vivillon", nationalPokedexNumber:666, regionalPokedexNumber:"022Ce", picture:"https://cdn.bulbagarden.net/upload/c/c5/666MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vivillon_(Pok%C3%A9mon)"}), +(Litleo:Pokemon {name:"Litleo", nationalPokedexNumber:667, regionalPokedexNumber:"057Ce", picture:"https://cdn.bulbagarden.net/upload/8/80/667MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Litleo_(Pok%C3%A9mon)"}), +(Pyroar:Pokemon {name:"Pyroar", nationalPokedexNumber:668, regionalPokedexNumber:"058Ce", picture:"https://cdn.bulbagarden.net/upload/0/0c/668MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pyroar_(Pok%C3%A9mon)"}), +(Flabebe:Pokemon {name:"Flabébé", nationalPokedexNumber:669, regionalPokedexNumber:"068Ce", picture:"https://cdn.bulbagarden.net/upload/3/38/669MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Flab%C3%A9b%C3%A9_(Pok%C3%A9mon)"}), +(Floette:Pokemon {name:"Floette", nationalPokedexNumber:670, regionalPokedexNumber:"069Ce", picture:"https://cdn.bulbagarden.net/upload/0/04/670MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Floette_(Pok%C3%A9mon)"}), +(Florges:Pokemon {name:"Florges", nationalPokedexNumber:671, regionalPokedexNumber:"070Ce", picture:"https://cdn.bulbagarden.net/upload/e/ea/671MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Florges_(Pok%C3%A9mon)"}), +(Skiddo:Pokemon {name:"Skiddo", nationalPokedexNumber:672, regionalPokedexNumber:"089Ce", picture:"https://cdn.bulbagarden.net/upload/0/04/672MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Skiddo_(Pok%C3%A9mon)"}), +(Gogoat:Pokemon {name:"Gogoat", nationalPokedexNumber:673, regionalPokedexNumber:"090Ce", picture:"https://cdn.bulbagarden.net/upload/7/71/673MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gogoat_(Pok%C3%A9mon)"}), +(Pancham:Pokemon {name:"Pancham", nationalPokedexNumber:674, regionalPokedexNumber:"091Ce", picture:"https://cdn.bulbagarden.net/upload/f/f8/674MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pancham_(Pok%C3%A9mon)"}), +(Pangoro:Pokemon {name:"Pangoro", nationalPokedexNumber:675, regionalPokedexNumber:"092Ce", picture:"https://cdn.bulbagarden.net/upload/3/39/675MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pangoro_(Pok%C3%A9mon)"}), +(Furfrou:Pokemon {name:"Furfrou", nationalPokedexNumber:676, regionalPokedexNumber:"093Ce", picture:"https://cdn.bulbagarden.net/upload/c/c4/676MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Furfrou_(Pok%C3%A9mon)"}), +(Espurr:Pokemon {name:"Espurr", nationalPokedexNumber:677, regionalPokedexNumber:"114Ce", picture:"https://cdn.bulbagarden.net/upload/2/21/677MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Espurr_(Pok%C3%A9mon)"}), +(Meowstic:Pokemon {name:"Meowstic", nationalPokedexNumber:678, regionalPokedexNumber:"115Ce", picture:"https://cdn.bulbagarden.net/upload/7/70/678MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Meowstic_(Pok%C3%A9mon)"}), +(Honedge:Pokemon {name:"Honedge", nationalPokedexNumber:679, regionalPokedexNumber:"117Ce", picture:"https://cdn.bulbagarden.net/upload/0/04/679MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Honedge_(Pok%C3%A9mon)"}), +(Doublade:Pokemon {name:"Doublade", nationalPokedexNumber:680, regionalPokedexNumber:"118Ce", picture:"https://cdn.bulbagarden.net/upload/a/a0/680MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Doublade_(Pok%C3%A9mon)"}), +(Aegislash:Pokemon {name:"Aegislash", nationalPokedexNumber:681, regionalPokedexNumber:"119Ce", picture:"https://cdn.bulbagarden.net/upload/3/37/681MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Aegislash_(Pok%C3%A9mon)"}), +(Spritzee:Pokemon {name:"Spritzee", nationalPokedexNumber:682, regionalPokedexNumber:"129Ce", picture:"https://cdn.bulbagarden.net/upload/4/47/682MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Spritzee_(Pok%C3%A9mon)"}), +(Aromatisse:Pokemon {name:"Aromatisse", nationalPokedexNumber:683, regionalPokedexNumber:"130Ce", picture:"https://cdn.bulbagarden.net/upload/b/b3/683MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Aromatisse_(Pok%C3%A9mon)"}), +(Swirlix:Pokemon {name:"Swirlix", nationalPokedexNumber:684, regionalPokedexNumber:"131Ce", picture:"https://cdn.bulbagarden.net/upload/c/c0/684MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Swirlix_(Pok%C3%A9mon)"}), +(Slurpuff:Pokemon {name:"Slurpuff", nationalPokedexNumber:685, regionalPokedexNumber:"132Ce", picture:"https://cdn.bulbagarden.net/upload/c/cd/685MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Slurpuff_(Pok%C3%A9mon)"}), +(Inkay:Pokemon {name:"Inkay", nationalPokedexNumber:686, regionalPokedexNumber:"010Co", picture:"https://cdn.bulbagarden.net/upload/6/63/686MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Inkay_(Pok%C3%A9mon)"}), +(Malamar:Pokemon {name:"Malamar", nationalPokedexNumber:687, regionalPokedexNumber:"011Co", picture:"https://cdn.bulbagarden.net/upload/8/89/687MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Malamar_(Pok%C3%A9mon)"}), +(Binacle:Pokemon {name:"Binacle", nationalPokedexNumber:688, regionalPokedexNumber:"021Co", picture:"https://cdn.bulbagarden.net/upload/7/77/688MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Binacle_(Pok%C3%A9mon)"}), +(Barbaracle:Pokemon {name:"Barbaracle", nationalPokedexNumber:689, regionalPokedexNumber:"022Co", picture:"https://cdn.bulbagarden.net/upload/a/aa/689MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Barbaracle_(Pok%C3%A9mon)"}), +(Skrelp:Pokemon {name:"Skrelp", nationalPokedexNumber:690, regionalPokedexNumber:"030Co", picture:"https://cdn.bulbagarden.net/upload/4/40/690MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Skrelp_(Pok%C3%A9mon)"}), +(Dragalge:Pokemon {name:"Dragalge", nationalPokedexNumber:691, regionalPokedexNumber:"031Co", picture:"https://cdn.bulbagarden.net/upload/f/f0/691MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dragalge_(Pok%C3%A9mon)"}), +(Clauncher:Pokemon {name:"Clauncher", nationalPokedexNumber:692, regionalPokedexNumber:"032Co", picture:"https://cdn.bulbagarden.net/upload/6/68/692MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Clauncher_(Pok%C3%A9mon)"}), +(Clawitzer:Pokemon {name:"Clawitzer", nationalPokedexNumber:693, regionalPokedexNumber:"033Co", picture:"https://cdn.bulbagarden.net/upload/d/d8/693MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Clawitzer_(Pok%C3%A9mon)"}), +(Helioptile:Pokemon {name:"Helioptile", nationalPokedexNumber:694, regionalPokedexNumber:"046Co", picture:"https://cdn.bulbagarden.net/upload/f/f7/694MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Helioptile_(Pok%C3%A9mon)"}), +(Heliolisk:Pokemon {name:"Heliolisk", nationalPokedexNumber:695, regionalPokedexNumber:"047Co", picture:"https://cdn.bulbagarden.net/upload/3/3f/695MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Heliolisk_(Pok%C3%A9mon)"}), +(Tyrunt:Pokemon {name:"Tyrunt", nationalPokedexNumber:696, regionalPokedexNumber:"064Co", picture:"https://cdn.bulbagarden.net/upload/c/c1/696MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tyrunt_(Pok%C3%A9mon)"}), +(Tyrantrum:Pokemon {name:"Tyrantrum", nationalPokedexNumber:697, regionalPokedexNumber:"065Co", picture:"https://cdn.bulbagarden.net/upload/2/29/697MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tyrantrum_(Pok%C3%A9mon)"}), +(Amaura:Pokemon {name:"Amaura", nationalPokedexNumber:698, regionalPokedexNumber:"066Co", picture:"https://cdn.bulbagarden.net/upload/a/a4/698MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Amaura_(Pok%C3%A9mon)"}), +(Aurorus:Pokemon {name:"Aurorus", nationalPokedexNumber:699, regionalPokedexNumber:"067Co", picture:"https://cdn.bulbagarden.net/upload/8/8e/699MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Aurorus_(Pok%C3%A9mon)"}), +(Sylveon:Pokemon {name:"Sylveon", nationalPokedexNumber:700, regionalPokedexNumber:"085Co", picture:"https://cdn.bulbagarden.net/upload/4/49/700MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sylveon_(Pok%C3%A9mon)"}), +(Hawlucha:Pokemon {name:"Hawlucha", nationalPokedexNumber:701, regionalPokedexNumber:"089Co", picture:"https://cdn.bulbagarden.net/upload/0/04/701MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hawlucha_(Pok%C3%A9mon)"}), +(Dedenne:Pokemon {name:"Dedenne", nationalPokedexNumber:702, regionalPokedexNumber:"110Co", picture:"https://cdn.bulbagarden.net/upload/4/43/702MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dedenne_(Pok%C3%A9mon)"}), +(Carbink:Pokemon {name:"Carbink", nationalPokedexNumber:703, regionalPokedexNumber:"124Co", picture:"https://cdn.bulbagarden.net/upload/5/5b/703MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Carbink_(Pok%C3%A9mon)"}), +(Goomy:Pokemon {name:"Goomy", nationalPokedexNumber:704, regionalPokedexNumber:"019Mo", picture:"https://cdn.bulbagarden.net/upload/5/5d/704MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Goomy_(Pok%C3%A9mon)"}), +(Sliggoo:Pokemon {name:"Sliggoo", nationalPokedexNumber:705, regionalPokedexNumber:"020Mo", picture:"https://cdn.bulbagarden.net/upload/b/b9/705MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sliggoo_(Pok%C3%A9mon)"}), +(Goodra:Pokemon {name:"Goodra", nationalPokedexNumber:706, regionalPokedexNumber:"021Mo", picture:"https://cdn.bulbagarden.net/upload/3/3c/706MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Goodra_(Pok%C3%A9mon)"}), +(Klefki:Pokemon {name:"Klefki", nationalPokedexNumber:707, regionalPokedexNumber:"050Mo", picture:"https://cdn.bulbagarden.net/upload/2/21/707MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Klefki_(Pok%C3%A9mon)"}), +(Phantump:Pokemon {name:"Phantump", nationalPokedexNumber:708, regionalPokedexNumber:"061Mo", picture:"https://cdn.bulbagarden.net/upload/e/e2/708MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Phantump_(Pok%C3%A9mon)"}), +(Trevenant:Pokemon {name:"Trevenant", nationalPokedexNumber:709, regionalPokedexNumber:"062Mo", picture:"https://cdn.bulbagarden.net/upload/f/ff/709MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Trevenant_(Pok%C3%A9mon)"}), +(Pumpkaboo:Pokemon {name:"Pumpkaboo", nationalPokedexNumber:710, regionalPokedexNumber:"063Mo", picture:"https://cdn.bulbagarden.net/upload/5/5e/710MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pumpkaboo_(Pok%C3%A9mon)"}), +(Gourgeist:Pokemon {name:"Gourgeist", nationalPokedexNumber:711, regionalPokedexNumber:"064Mo", picture:"https://cdn.bulbagarden.net/upload/f/f9/711MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gourgeist_(Pok%C3%A9mon)"}), +(Bergmite:Pokemon {name:"Bergmite", nationalPokedexNumber:712, regionalPokedexNumber:"079Mo", picture:"https://cdn.bulbagarden.net/upload/f/fc/712MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bergmite_(Pok%C3%A9mon)"}), +(Avalugg:Pokemon {name:"Avalugg", nationalPokedexNumber:713, regionalPokedexNumber:"080Mo", picture:"https://cdn.bulbagarden.net/upload/5/53/713MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Avalugg_(Pok%C3%A9mon)"}), +(Noibat:Pokemon {name:"Noibat", nationalPokedexNumber:714, regionalPokedexNumber:"113Mo", picture:"https://cdn.bulbagarden.net/upload/d/d0/714MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Noibat_(Pok%C3%A9mon)"}), +(Noivern:Pokemon {name:"Noivern", nationalPokedexNumber:715, regionalPokedexNumber:"114Mo", picture:"https://cdn.bulbagarden.net/upload/4/4f/715MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Noivern_(Pok%C3%A9mon)"}), +(Xerneas:Pokemon {name:"Xerneas", nationalPokedexNumber:716, regionalPokedexNumber:"148Mo", picture:"https://cdn.bulbagarden.net/upload/4/45/716MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Xerneas_(Pok%C3%A9mon)"}), +(Yveltal:Pokemon {name:"Yveltal", nationalPokedexNumber:717, regionalPokedexNumber:"149Mo", picture:"https://cdn.bulbagarden.net/upload/c/c1/717MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Yveltal_(Pok%C3%A9mon)"}), +(Zygarde:Pokemon {name:"Zygarde", nationalPokedexNumber:718, regionalPokedexNumber:"150Mo", picture:"https://cdn.bulbagarden.net/upload/0/02/718MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zygarde_(Pok%C3%A9mon)"}), +(Diancie:Pokemon {name:"Diancie", nationalPokedexNumber:719, regionalPokedexNumber:"151Ce", picture:"https://cdn.bulbagarden.net/upload/5/53/719MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Diancie_(Pok%C3%A9mon)"}), +(Hoopa:Pokemon {name:"Hoopa", nationalPokedexNumber:720, regionalPokedexNumber:"152Ce", picture:"https://cdn.bulbagarden.net/upload/d/d0/720MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hoopa_(Pok%C3%A9mon)"}), +(Volcanion:Pokemon {name:"Volcanion", nationalPokedexNumber:721, regionalPokedexNumber:"153Ce", picture:"https://cdn.bulbagarden.net/upload/e/e4/721MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Volcanion_(Pok%C3%A9mon)"}), +(Rowlet:Pokemon {name:"Rowlet", nationalPokedexNumber:722, regionalPokedexNumber:"001", picture:"https://cdn.bulbagarden.net/upload/4/48/722MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rowlet_(Pok%C3%A9mon)"}), +(Dartrix:Pokemon {name:"Dartrix", nationalPokedexNumber:723, regionalPokedexNumber:"002", picture:"https://cdn.bulbagarden.net/upload/9/95/723MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dartrix_(Pok%C3%A9mon)"}), +(Decidueye:Pokemon {name:"Decidueye", nationalPokedexNumber:724, regionalPokedexNumber:"003", picture:"https://cdn.bulbagarden.net/upload/0/01/724MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Decidueye_(Pok%C3%A9mon)"}), +(Litten:Pokemon {name:"Litten", nationalPokedexNumber:725, regionalPokedexNumber:"004", picture:"https://cdn.bulbagarden.net/upload/0/07/725MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Litten_(Pok%C3%A9mon)"}), +(Torracat:Pokemon {name:"Torracat", nationalPokedexNumber:726, regionalPokedexNumber:"005", picture:"https://cdn.bulbagarden.net/upload/9/99/726MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Torracat_(Pok%C3%A9mon)"}), +(Incineroar:Pokemon {name:"Incineroar", nationalPokedexNumber:727, regionalPokedexNumber:"006", picture:"https://cdn.bulbagarden.net/upload/5/58/727MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Incineroar_(Pok%C3%A9mon)"}), +(Popplio:Pokemon {name:"Popplio", nationalPokedexNumber:728, regionalPokedexNumber:"007", picture:"https://cdn.bulbagarden.net/upload/0/02/728MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Popplio_(Pok%C3%A9mon)"}), +(Brionne:Pokemon {name:"Brionne", nationalPokedexNumber:729, regionalPokedexNumber:"008", picture:"https://cdn.bulbagarden.net/upload/6/6c/729MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Brionne_(Pok%C3%A9mon)"}), +(Primarina:Pokemon {name:"Primarina", nationalPokedexNumber:730, regionalPokedexNumber:"009", picture:"https://cdn.bulbagarden.net/upload/9/9b/730MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Primarina_(Pok%C3%A9mon)"}), +(Pikipek:Pokemon {name:"Pikipek", nationalPokedexNumber:731, regionalPokedexNumber:"010", picture:"https://cdn.bulbagarden.net/upload/a/a5/731MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pikipek_(Pok%C3%A9mon)"}), +(Trumbeak:Pokemon {name:"Trumbeak", nationalPokedexNumber:732, regionalPokedexNumber:"011", picture:"https://cdn.bulbagarden.net/upload/7/79/732MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Trumbeak_(Pok%C3%A9mon)"}), +(Toucannon:Pokemon {name:"Toucannon", nationalPokedexNumber:733, regionalPokedexNumber:"012", picture:"https://cdn.bulbagarden.net/upload/c/c5/733MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Toucannon_(Pok%C3%A9mon)"}), +(Yungoos:Pokemon {name:"Yungoos", nationalPokedexNumber:734, regionalPokedexNumber:"013", picture:"https://cdn.bulbagarden.net/upload/f/f2/734MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Yungoos_(Pok%C3%A9mon)"}), +(Gumshoos:Pokemon {name:"Gumshoos", nationalPokedexNumber:735, regionalPokedexNumber:"014", picture:"https://cdn.bulbagarden.net/upload/e/e2/735MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Gumshoos_(Pok%C3%A9mon)"}), +(Grubbin:Pokemon {name:"Grubbin", nationalPokedexNumber:736, regionalPokedexNumber:"027", picture:"https://cdn.bulbagarden.net/upload/b/b5/736MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Grubbin_(Pok%C3%A9mon)"}), +(Charjabug:Pokemon {name:"Charjabug", nationalPokedexNumber:737, regionalPokedexNumber:"028", picture:"https://cdn.bulbagarden.net/upload/7/7e/737MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Charjabug_(Pok%C3%A9mon)"}), +(Vikavolt:Pokemon {name:"Vikavolt", nationalPokedexNumber:738, regionalPokedexNumber:"029", picture:"https://cdn.bulbagarden.net/upload/e/e6/738MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Vikavolt_(Pok%C3%A9mon)"}), +(Crabrawler:Pokemon {name:"Crabrawler", nationalPokedexNumber:739, regionalPokedexNumber:"059", picture:"https://cdn.bulbagarden.net/upload/1/1a/739MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Crabrawler_(Pok%C3%A9mon)"}), +(Crabominable:Pokemon {name:"Crabominable", nationalPokedexNumber:740, regionalPokedexNumber:"060", picture:"https://cdn.bulbagarden.net/upload/2/28/740MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Crabominable_(Pok%C3%A9mon)"}), +(Oricorio:Pokemon {name:"Oricorio", nationalPokedexNumber:741, regionalPokedexNumber:"082", picture:"https://cdn.bulbagarden.net/upload/7/72/741MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Oricorio_(Pok%C3%A9mon)"}), +(Cutiefly:Pokemon {name:"Cutiefly", nationalPokedexNumber:742, regionalPokedexNumber:"083", picture:"https://cdn.bulbagarden.net/upload/5/57/742MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cutiefly_(Pok%C3%A9mon)"}), +(Ribombee:Pokemon {name:"Ribombee", nationalPokedexNumber:743, regionalPokedexNumber:"084", picture:"https://cdn.bulbagarden.net/upload/1/18/743MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Ribombee_(Pok%C3%A9mon)"}), +(Rockruff:Pokemon {name:"Rockruff", nationalPokedexNumber:744, regionalPokedexNumber:"103", picture:"https://cdn.bulbagarden.net/upload/f/f8/744MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Rockruff_(Pok%C3%A9mon)"}), +(Lycanroc:Pokemon {name:"Lycanroc", nationalPokedexNumber:745, regionalPokedexNumber:"104", picture:"https://cdn.bulbagarden.net/upload/b/b3/745MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lycanroc_(Pok%C3%A9mon)"}), +(Wishiwashi:Pokemon {name:"Wishiwashi", nationalPokedexNumber:746, regionalPokedexNumber:"110", picture:"https://cdn.bulbagarden.net/upload/0/0f/746MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wishiwashi_(Pok%C3%A9mon)"}), +(Mareanie:Pokemon {name:"Mareanie", nationalPokedexNumber:747, regionalPokedexNumber:"113", picture:"https://cdn.bulbagarden.net/upload/7/74/747MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mareanie_(Pok%C3%A9mon)"}), +(Toxapex:Pokemon {name:"Toxapex", nationalPokedexNumber:748, regionalPokedexNumber:"114", picture:"https://cdn.bulbagarden.net/upload/1/1b/748MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Toxapex_(Pok%C3%A9mon)"}), +(Mudbray:Pokemon {name:"Mudbray", nationalPokedexNumber:749, regionalPokedexNumber:"132", picture:"https://cdn.bulbagarden.net/upload/0/06/749MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mudbray_(Pok%C3%A9mon)"}), +(Mudsdale:Pokemon {name:"Mudsdale", nationalPokedexNumber:750, regionalPokedexNumber:"133", picture:"https://cdn.bulbagarden.net/upload/6/68/750MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mudsdale_(Pok%C3%A9mon)"}), +(Dewpider:Pokemon {name:"Dewpider", nationalPokedexNumber:751, regionalPokedexNumber:"141", picture:"https://cdn.bulbagarden.net/upload/e/ee/751MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dewpider_(Pok%C3%A9mon)"}), +(Araquanid:Pokemon {name:"Araquanid", nationalPokedexNumber:752, regionalPokedexNumber:"142", picture:"https://cdn.bulbagarden.net/upload/8/80/752MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Araquanid_(Pok%C3%A9mon)"}), +(Fomantis:Pokemon {name:"Fomantis", nationalPokedexNumber:753, regionalPokedexNumber:"143", picture:"https://cdn.bulbagarden.net/upload/d/d9/753MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Fomantis_(Pok%C3%A9mon)"}), +(Lurantis:Pokemon {name:"Lurantis", nationalPokedexNumber:754, regionalPokedexNumber:"144", picture:"https://cdn.bulbagarden.net/upload/9/95/754MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lurantis_(Pok%C3%A9mon)"}), +(Morelull:Pokemon {name:"Morelull", nationalPokedexNumber:755, regionalPokedexNumber:"145", picture:"https://cdn.bulbagarden.net/upload/5/5f/755MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Morelull_(Pok%C3%A9mon)"}), +(Shiinotic:Pokemon {name:"Shiinotic", nationalPokedexNumber:756, regionalPokedexNumber:"146", picture:"https://cdn.bulbagarden.net/upload/6/68/756MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Shiinotic_(Pok%C3%A9mon)"}), +(Salandit:Pokemon {name:"Salandit", nationalPokedexNumber:757, regionalPokedexNumber:"161", picture:"https://cdn.bulbagarden.net/upload/f/f2/757MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Salandit_(Pok%C3%A9mon)"}), +(Salazzle:Pokemon {name:"Salazzle", nationalPokedexNumber:758, regionalPokedexNumber:"162", picture:"https://cdn.bulbagarden.net/upload/c/c8/758MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Salazzle_(Pok%C3%A9mon)"}), +(Stufful:Pokemon {name:"Stufful", nationalPokedexNumber:759, regionalPokedexNumber:"169", picture:"https://cdn.bulbagarden.net/upload/9/9f/759MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Stufful_(Pok%C3%A9mon)"}), +(Bewear:Pokemon {name:"Bewear", nationalPokedexNumber:760, regionalPokedexNumber:"170", picture:"https://cdn.bulbagarden.net/upload/0/06/760MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bewear_(Pok%C3%A9mon)"}), +(Bounsweet:Pokemon {name:"Bounsweet", nationalPokedexNumber:761, regionalPokedexNumber:"171", picture:"https://cdn.bulbagarden.net/upload/2/2a/761MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bounsweet_(Pok%C3%A9mon)"}), +(Steenee:Pokemon {name:"Steenee", nationalPokedexNumber:762, regionalPokedexNumber:"172", picture:"https://cdn.bulbagarden.net/upload/1/15/762MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Steenee_(Pok%C3%A9mon)"}), +(Tsareena:Pokemon {name:"Tsareena", nationalPokedexNumber:763, regionalPokedexNumber:"173", picture:"https://cdn.bulbagarden.net/upload/3/31/763MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tsareena_(Pok%C3%A9mon)"}), +(Comfey:Pokemon {name:"Comfey", nationalPokedexNumber:764, regionalPokedexNumber:"174", picture:"https://cdn.bulbagarden.net/upload/3/3c/764MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Comfey_(Pok%C3%A9mon)"}), +(Oranguru:Pokemon {name:"Oranguru", nationalPokedexNumber:765, regionalPokedexNumber:"176", picture:"https://cdn.bulbagarden.net/upload/c/cd/765MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Oranguru_(Pok%C3%A9mon)"}), +(Passimian:Pokemon {name:"Passimian", nationalPokedexNumber:766, regionalPokedexNumber:"177", picture:"https://cdn.bulbagarden.net/upload/4/41/766MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Passimian_(Pok%C3%A9mon)"}), +(Wimpod:Pokemon {name:"Wimpod", nationalPokedexNumber:767, regionalPokedexNumber:"182", picture:"https://cdn.bulbagarden.net/upload/e/ef/767MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Wimpod_(Pok%C3%A9mon)"}), +(Golisopod:Pokemon {name:"Golisopod", nationalPokedexNumber:768, regionalPokedexNumber:"183", picture:"https://cdn.bulbagarden.net/upload/6/6d/768MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Golisopod_(Pok%C3%A9mon)"}), +(Sandygast:Pokemon {name:"Sandygast", nationalPokedexNumber:769, regionalPokedexNumber:"186", picture:"https://cdn.bulbagarden.net/upload/f/fb/769MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Sandygast_(Pok%C3%A9mon)"}), +(Palossand:Pokemon {name:"Palossand", nationalPokedexNumber:770, regionalPokedexNumber:"187", picture:"https://cdn.bulbagarden.net/upload/d/d4/770MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Palossand_(Pok%C3%A9mon)"}), +(Pyukumuku:Pokemon {name:"Pyukumuku", nationalPokedexNumber:771, regionalPokedexNumber:"200", picture:"https://cdn.bulbagarden.net/upload/3/3d/771MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pyukumuku_(Pok%C3%A9mon)"}), +(TypeNull:Pokemon {name:"Type: Null", nationalPokedexNumber:772, regionalPokedexNumber:"203", picture:"https://cdn.bulbagarden.net/upload/3/37/772MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Type:_Null_(Pok%C3%A9mon)"}), +(Silvally:Pokemon {name:"Silvally", nationalPokedexNumber:773, regionalPokedexNumber:"204", picture:"https://cdn.bulbagarden.net/upload/0/05/773MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Silvally_(Pok%C3%A9mon)"}), +(Minior:Pokemon {name:"Minior", nationalPokedexNumber:774, regionalPokedexNumber:"213", picture:"https://cdn.bulbagarden.net/upload/d/d6/774MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Minior_(Pok%C3%A9mon)"}), +(Komala:Pokemon {name:"Komala", nationalPokedexNumber:775, regionalPokedexNumber:"222", picture:"https://cdn.bulbagarden.net/upload/a/ab/775MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Komala_(Pok%C3%A9mon)"}), +(Turtonator:Pokemon {name:"Turtonator", nationalPokedexNumber:776, regionalPokedexNumber:"224", picture:"https://cdn.bulbagarden.net/upload/5/50/776MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Turtonator_(Pok%C3%A9mon)"}), +(Togedemaru:Pokemon {name:"Togedemaru", nationalPokedexNumber:777, regionalPokedexNumber:"225", picture:"https://cdn.bulbagarden.net/upload/1/16/777MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Togedemaru_(Pok%C3%A9mon)"}), +(Mimikyu:Pokemon {name:"Mimikyu", nationalPokedexNumber:778, regionalPokedexNumber:"242", picture:"https://cdn.bulbagarden.net/upload/6/6f/778MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Mimikyu_(Pok%C3%A9mon)"}), +(Bruxish:Pokemon {name:"Bruxish", nationalPokedexNumber:779, regionalPokedexNumber:"243", picture:"https://cdn.bulbagarden.net/upload/1/1b/779MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Bruxish_(Pok%C3%A9mon)"}), +(Drampa:Pokemon {name:"Drampa", nationalPokedexNumber:780, regionalPokedexNumber:"244", picture:"https://cdn.bulbagarden.net/upload/a/a0/780MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Drampa_(Pok%C3%A9mon)"}), +(Dhelmise:Pokemon {name:"Dhelmise", nationalPokedexNumber:781, regionalPokedexNumber:"263", picture:"https://cdn.bulbagarden.net/upload/9/95/781MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Dhelmise_(Pok%C3%A9mon)"}), +(Jangmoo:Pokemon {name:"Jangmo-o", nationalPokedexNumber:782, regionalPokedexNumber:"271", picture:"https://cdn.bulbagarden.net/upload/4/4d/782MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Jangmo-o_(Pok%C3%A9mon)"}), +(Hakamoo:Pokemon {name:"Hakamo-o", nationalPokedexNumber:783, regionalPokedexNumber:"272", picture:"https://cdn.bulbagarden.net/upload/d/d4/783MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Hakamo-o_(Pok%C3%A9mon)"}), +(Kommoo:Pokemon {name:"Kommo-o", nationalPokedexNumber:784, regionalPokedexNumber:"273", picture:"https://cdn.bulbagarden.net/upload/2/27/784MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kommo-o_(Pok%C3%A9mon)"}), +(TapuKoko:Pokemon {name:"Tapu Koko", nationalPokedexNumber:785, regionalPokedexNumber:"285", picture:"https://cdn.bulbagarden.net/upload/2/27/785MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tapu_Koko_(Pok%C3%A9mon)"}), +(TapuLele:Pokemon {name:"Tapu Lele", nationalPokedexNumber:786, regionalPokedexNumber:"286", picture:"https://cdn.bulbagarden.net/upload/e/e1/786MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tapu_Lele_(Pok%C3%A9mon)"}), +(TapuBulu:Pokemon {name:"Tapu Bulu", nationalPokedexNumber:787, regionalPokedexNumber:"287", picture:"https://cdn.bulbagarden.net/upload/7/78/787MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tapu_Bulu_(Pok%C3%A9mon)"}), +(TapuFini:Pokemon {name:"Tapu Fini", nationalPokedexNumber:788, regionalPokedexNumber:"288", picture:"https://cdn.bulbagarden.net/upload/8/88/788MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Tapu_Fini_(Pok%C3%A9mon)"}), +(Cosmog:Pokemon {name:"Cosmog", nationalPokedexNumber:789, regionalPokedexNumber:"289", picture:"https://cdn.bulbagarden.net/upload/b/b9/789MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cosmog_(Pok%C3%A9mon)"}), +(Cosmoem:Pokemon {name:"Cosmoem", nationalPokedexNumber:790, regionalPokedexNumber:"290", picture:"https://cdn.bulbagarden.net/upload/7/73/790MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Cosmoem_(Pok%C3%A9mon)"}), +(Solgaleo:Pokemon {name:"Solgaleo", nationalPokedexNumber:791, regionalPokedexNumber:"291", picture:"https://cdn.bulbagarden.net/upload/a/af/791MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Solgaleo_(Pok%C3%A9mon)"}), +(Lunala:Pokemon {name:"Lunala", nationalPokedexNumber:792, regionalPokedexNumber:"292", picture:"https://cdn.bulbagarden.net/upload/7/76/792MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Lunala_(Pok%C3%A9mon)"}), +(Nihilego:Pokemon {name:"Nihilego", nationalPokedexNumber:793, regionalPokedexNumber:"293", picture:"https://cdn.bulbagarden.net/upload/f/f0/793MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Nihilego_(Pok%C3%A9mon)"}), +(Buzzwole:Pokemon {name:"Buzzwole", nationalPokedexNumber:794, regionalPokedexNumber:"294", picture:"https://cdn.bulbagarden.net/upload/0/0a/794MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Buzzwole_(Pok%C3%A9mon)"}), +(Pheromosa:Pokemon {name:"Pheromosa", nationalPokedexNumber:795, regionalPokedexNumber:"295", picture:"https://cdn.bulbagarden.net/upload/1/15/795MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Pheromosa_(Pok%C3%A9mon)"}), +(Xurkitree:Pokemon {name:"Xurkitree", nationalPokedexNumber:796, regionalPokedexNumber:"296", picture:"https://cdn.bulbagarden.net/upload/9/9f/796MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Xurkitree_(Pok%C3%A9mon)"}), +(Celesteela:Pokemon {name:"Celesteela", nationalPokedexNumber:797, regionalPokedexNumber:"297", picture:"https://cdn.bulbagarden.net/upload/6/62/797MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Celesteela_(Pok%C3%A9mon)"}), +(Kartana:Pokemon {name:"Kartana", nationalPokedexNumber:798, regionalPokedexNumber:"298", picture:"https://cdn.bulbagarden.net/upload/6/69/798MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Kartana_(Pok%C3%A9mon)"}), +(Guzzlord:Pokemon {name:"Guzzlord", nationalPokedexNumber:799, regionalPokedexNumber:"299", picture:"https://cdn.bulbagarden.net/upload/3/3e/799MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Guzzlord_(Pok%C3%A9mon)"}), +(Necrozma:Pokemon {name:"Necrozma", nationalPokedexNumber:800, regionalPokedexNumber:"300", picture:"https://cdn.bulbagarden.net/upload/a/a4/800MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Necrozma_(Pok%C3%A9mon)"}), +(Magearna:Pokemon {name:"Magearna", nationalPokedexNumber:801, regionalPokedexNumber:"301", picture:"https://cdn.bulbagarden.net/upload/2/20/801MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Magearna_(Pok%C3%A9mon)"}), +(Marshadow:Pokemon {name:"Marshadow", nationalPokedexNumber:802, regionalPokedexNumber:"302", picture:"https://cdn.bulbagarden.net/upload/2/2a/802MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Marshadow_(Pok%C3%A9mon)"}), +(Poipole:Pokemon {name:"Poipole", nationalPokedexNumber:803, regionalPokedexNumber:"261", picture:"https://cdn.bulbagarden.net/upload/0/08/803MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Poipole_(Pok%C3%A9mon)"}), +(Naganadel:Pokemon {name:"Naganadel", nationalPokedexNumber:804, regionalPokedexNumber:"262", picture:"https://cdn.bulbagarden.net/upload/7/7a/804MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Naganadel_(Pok%C3%A9mon)"}), +(Stakataka:Pokemon {name:"Stakataka", nationalPokedexNumber:805, regionalPokedexNumber:"392", picture:"https://cdn.bulbagarden.net/upload/5/55/805MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Stakataka_(Pok%C3%A9mon)"}), +(Blacephalon:Pokemon {name:"Blacephalon", nationalPokedexNumber:806, regionalPokedexNumber:"393", picture:"https://cdn.bulbagarden.net/upload/8/8d/806MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Blacephalon_(Pok%C3%A9mon)"}), +(Zeraora:Pokemon {name:"Zeraora", nationalPokedexNumber:807, regionalPokedexNumber:"403", picture:"https://cdn.bulbagarden.net/upload/f/ff/807MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Zeraora_(Pok%C3%A9mon)"}), +(Meltan:Pokemon {name:"Meltan", nationalPokedexNumber:808, picture:"https://cdn.bulbagarden.net/upload/3/34/808MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Meltan_(Pok%C3%A9mon)"}), +(Melmetal:Pokemon {name:"Melmetal", nationalPokedexNumber:809, picture:"https://cdn.bulbagarden.net/upload/f/f1/809MS.png", profileUrl:"https://bulbapedia.bulbagarden.net/w/index.php?title=Melmetal_(Pok%C3%A9mon)"}) + + +CREATE +(MegaVenusaur:MegaEvolution {name:"Mega Venusaur", picture:"https://cdn.bulbagarden.net/upload/thumb/7/73/003Venusaur-Mega.png/150px-003Venusaur-Mega.png"}), +(MegaCharizardX:MegaEvolution {name:"Mega Charizard X", picture:"https://cdn.bulbagarden.net/upload/thumb/3/36/006Charizard-Mega_X.png/150px-006Charizard-Mega_X.png"}), +(MegaCharizardY:MegaEvolution {name:"Mega Charizard Y", picture:"https://cdn.bulbagarden.net/upload/thumb/f/fd/006Charizard-Mega_Y.png/150px-006Charizard-Mega_Y.png"}), +(MegaBlastoise:MegaEvolution {name:"Mega Blastoise", picture:"https://cdn.bulbagarden.net/upload/thumb/8/85/009Blastoise-Mega.png/150px-009Blastoise-Mega.png"}), +(MegaBeedrill:MegaEvolution {name:"Mega Beedrill", picture:"https://cdn.bulbagarden.net/upload/thumb/7/76/015Beedrill-Mega.png/150px-015Beedrill-Mega.png"}), +(MegaPidgeot:MegaEvolution {name:"Mega Pidgeot", picture:"https://cdn.bulbagarden.net/upload/thumb/7/71/018Pidgeot-Mega.png/150px-018Pidgeot-Mega.png"}), +(MegaAlakazam:MegaEvolution {name:"Mega Alakazam", picture:"https://cdn.bulbagarden.net/upload/thumb/3/34/065Alakazam-Mega.png/150px-065Alakazam-Mega.png"}), +(MegaSlowbro:MegaEvolution {name:"Mega Slowbro", picture:"https://cdn.bulbagarden.net/upload/thumb/6/69/080Slowbro-Mega.png/150px-080Slowbro-Mega.png"}), +(MegaGengar:MegaEvolution {name:"Mega Gengar", picture:"https://cdn.bulbagarden.net/upload/thumb/8/80/094Gengar-Mega.png/150px-094Gengar-Mega.png"}), +(MegaKangaskhan:MegaEvolution {name:"Mega Kangaskhan", picture:"https://cdn.bulbagarden.net/upload/thumb/e/e3/115Kangaskhan-Mega.png/150px-115Kangaskhan-Mega.png"}), +(MegaPinsir:MegaEvolution {name:"Mega Pinsir", picture:"https://cdn.bulbagarden.net/upload/thumb/7/74/127Pinsir-Mega.png/150px-127Pinsir-Mega.png"}), +(MegaGyarados:MegaEvolution {name:"Mega Gyarados", picture:"https://cdn.bulbagarden.net/upload/thumb/3/30/130Gyarados-Mega.png/150px-130Gyarados-Mega.png"}), +(MegaAerodactyl:MegaEvolution {name:"Mega Aerodactyl", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a5/142Aerodactyl-Mega.png/150px-142Aerodactyl-Mega.png"}), +(MegaMewtwoX:MegaEvolution {name:"Mega Mewtwo X", picture:"https://cdn.bulbagarden.net/upload/thumb/7/7f/150Mewtwo-Mega_X.png/150px-150Mewtwo-Mega_X.png"}), +(MegaMewtwoY:MegaEvolution {name:"Mega Mewtwo Y", picture:"https://cdn.bulbagarden.net/upload/thumb/5/5f/150Mewtwo-Mega_Y.png/150px-150Mewtwo-Mega_Y.png"}), +(MegaAmpharos:MegaEvolution {name:"Mega Ampharos", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a2/181Ampharos-Mega.png/150px-181Ampharos-Mega.png"}), +(MegaSteelix:MegaEvolution {name:"Mega Steelix", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1b/208Steelix-Mega.png/150px-208Steelix-Mega.png"}), +(MegaScizor:MegaEvolution {name:"Mega Scizor", picture:"https://cdn.bulbagarden.net/upload/thumb/8/80/212Scizor-Mega.png/150px-212Scizor-Mega.png"}), +(MegaHeracross:MegaEvolution {name:"Mega Heracross", picture:"https://cdn.bulbagarden.net/upload/thumb/d/da/214Heracross-Mega.png/150px-214Heracross-Mega.png"}), +(MegaHoundoom:MegaEvolution {name:"Mega Houndoom", picture:"https://cdn.bulbagarden.net/upload/thumb/3/39/229Houndoom-Mega.png/150px-229Houndoom-Mega.png"}), +(MegaTyranitar:MegaEvolution {name:"Mega Tyranitar", picture:"https://cdn.bulbagarden.net/upload/thumb/0/0d/248Tyranitar-Mega.png/150px-248Tyranitar-Mega.png"}), +(MegaSceptile:MegaEvolution {name:"Mega Sceptile", picture:"https://cdn.bulbagarden.net/upload/thumb/6/67/254Sceptile-Mega.png/150px-254Sceptile-Mega.png"}), +(MegaBlaziken:MegaEvolution {name:"Mega Blaziken", picture:"https://cdn.bulbagarden.net/upload/thumb/f/fa/257Blaziken-Mega.png/150px-257Blaziken-Mega.png"}), +(MegaSwampert:MegaEvolution {name:"Mega Swampert", picture:"https://cdn.bulbagarden.net/upload/thumb/9/98/260Swampert-Mega.png/150px-260Swampert-Mega.png"}), +(MegaGardevoir:MegaEvolution {name:"Mega Gardevoir", picture:"https://cdn.bulbagarden.net/upload/thumb/2/20/282Gardevoir-Mega.png/150px-282Gardevoir-Mega.png"}), +(MegaSableye:MegaEvolution {name:"Mega Sableye", picture:"https://cdn.bulbagarden.net/upload/thumb/e/e9/302Sableye-Mega.png/150px-302Sableye-Mega.png"}), +(MegaMawile:MegaEvolution {name:"Mega Mawile", picture:"https://cdn.bulbagarden.net/upload/thumb/8/86/303Mawile-Mega.png/150px-303Mawile-Mega.png"}), +(MegaAggron:MegaEvolution {name:"Mega Aggron", picture:"https://cdn.bulbagarden.net/upload/thumb/1/10/306Aggron-Mega.png/150px-306Aggron-Mega.png"}), +(MegaMedicham:MegaEvolution {name:"Mega Medicham", picture:"https://cdn.bulbagarden.net/upload/thumb/c/cd/308Medicham-Mega.png/150px-308Medicham-Mega.png"}), +(MegaManectric:MegaEvolution {name:"Mega Manectric", picture:"https://cdn.bulbagarden.net/upload/thumb/b/bc/310Manectric-Mega.png/150px-310Manectric-Mega.png"}), +(MegaSharpedo:MegaEvolution {name:"Mega Sharpedo", picture:"https://cdn.bulbagarden.net/upload/thumb/3/35/319Sharpedo-Mega.png/150px-319Sharpedo-Mega.png"}), +(MegaCamerupt:MegaEvolution {name:"Mega Camerupt", picture:"https://cdn.bulbagarden.net/upload/thumb/9/96/323Camerupt-Mega.png/150px-323Camerupt-Mega.png"}), +(MegaAltaria:MegaEvolution {name:"Mega Altaria", picture:"https://cdn.bulbagarden.net/upload/thumb/0/08/334Altaria-Mega.png/150px-334Altaria-Mega.png"}), +(MegaBanette:MegaEvolution {name:"Mega Banette", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a3/354Banette-Mega.png/150px-354Banette-Mega.png"}), +(MegaAbsol:MegaEvolution {name:"Mega Absol", picture:"https://cdn.bulbagarden.net/upload/thumb/f/f4/359Absol-Mega.png/150px-359Absol-Mega.png"}), +(MegaGlalie:MegaEvolution {name:"Mega Glalie", picture:"https://cdn.bulbagarden.net/upload/thumb/0/0d/362Glalie-Mega.png/150px-362Glalie-Mega.png"}), +(MegaSalamence:MegaEvolution {name:"Mega Salamence", picture:"https://cdn.bulbagarden.net/upload/thumb/f/f3/373Salamence-Mega.png/150px-373Salamence-Mega.png"}), +(MegaMetagross:MegaEvolution {name:"Mega Metagross", picture:"https://cdn.bulbagarden.net/upload/thumb/8/85/376Metagross-Mega.png/150px-376Metagross-Mega.png"}), +(MegaLatias:MegaEvolution {name:"Mega Latias", picture:"https://cdn.bulbagarden.net/upload/thumb/0/0f/380Latias-Mega.png/150px-380Latias-Mega.png"}), +(MegaLatios:MegaEvolution {name:"Mega Latios", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a0/381Latios-Mega.png/150px-381Latios-Mega.png"}), +(MegaRayquaza:MegaEvolution {name:"Mega Rayquaza", picture:"https://cdn.bulbagarden.net/upload/thumb/5/58/384Rayquaza-Mega.png/150px-384Rayquaza-Mega.png"}), +(MegaLopunny:MegaEvolution {name:"Mega Lopunny", picture:"https://cdn.bulbagarden.net/upload/thumb/d/dc/428Lopunny-Mega.png/150px-428Lopunny-Mega.png"}), +(MegaGarchomp:MegaEvolution {name:"Mega Garchomp", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b2/445Garchomp-Mega.png/150px-445Garchomp-Mega.png"}), +(MegaLucario:MegaEvolution {name:"Mega Lucario", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b9/448Lucario-Mega.png/150px-448Lucario-Mega.png"}), +(MegaAbomasnow:MegaEvolution {name:"Mega Abomasnow", picture:"https://cdn.bulbagarden.net/upload/thumb/d/dc/460Abomasnow-Mega.png/150px-460Abomasnow-Mega.png"}), +(MegaGallade:MegaEvolution {name:"Mega Gallade", picture:"https://cdn.bulbagarden.net/upload/thumb/f/f3/475Gallade-Mega.png/150px-475Gallade-Mega.png"}), +(MegaAudino:MegaEvolution {name:"Mega Audino", picture:"https://cdn.bulbagarden.net/upload/thumb/1/17/531Audino-Mega.png/150px-531Audino-Mega.png"}), +(MegaDiancie:MegaEvolution {name:"Mega Diancie", picture:"https://cdn.bulbagarden.net/upload/thumb/8/8f/719Diancie-Mega.png/150px-719Diancie-Mega.png"}) + + +CREATE +(RattataAlola:Form {name:"Rattata", picture:"https://cdn.bulbagarden.net/upload/2/28/019AMS.png", isInterchangeable:False, isAlola:True}), +(RaticateAlola:Form {name:"Raticate", picture:"https://cdn.bulbagarden.net/upload/5/56/020AMS.png", isInterchangeable:False, isAlola:True}), +(RaichuAlola:Form {name:"Raichu", picture:"https://cdn.bulbagarden.net/upload/a/a4/026AMS.png", isInterchangeable:False, isAlola:True}), +(SandshrewAlola:Form {name:"Sandshrew", picture:"https://cdn.bulbagarden.net/upload/4/46/027AMS.png", isInterchangeable:False, isAlola:True}), +(SandslashAlola:Form {name:"Sandslash", picture:"https://cdn.bulbagarden.net/upload/c/c1/028AMS.png", isInterchangeable:False, isAlola:True}), +(VulpixAlola:Form {name:"Vulpix", picture:"https://cdn.bulbagarden.net/upload/2/20/037AMS.png", isInterchangeable:False, isAlola:True}), +(NinetalesAlola:Form {name:"Ninetales", picture:"https://cdn.bulbagarden.net/upload/1/13/038AMS.png", isInterchangeable:False, isAlola:True}), +(DiglettAlola:Form {name:"Diglett", picture:"https://cdn.bulbagarden.net/upload/6/61/050AMS.png", isInterchangeable:False, isAlola:True}), +(DugtrioAlola:Form {name:"Dugtrio", picture:"https://cdn.bulbagarden.net/upload/a/a6/051AMS.png", isInterchangeable:False, isAlola:True}), +(MeowthAlola:Form {name:"Meowth", picture:"https://cdn.bulbagarden.net/upload/b/b1/052AMS.png", isInterchangeable:False, isAlola:True}), +(PersianAlola:Form {name:"Persian", picture:"https://cdn.bulbagarden.net/upload/f/ff/053AMS.png", isInterchangeable:False, isAlola:True}), +(GeodudeAlola:Form {name:"Geodude", picture:"https://cdn.bulbagarden.net/upload/d/d8/074AMS.png", isInterchangeable:False, isAlola:True}), +(GravelerAlola:Form {name:"Graveler", picture:"https://cdn.bulbagarden.net/upload/4/41/075AMS.png", isInterchangeable:False, isAlola:True}), +(GolemAlola:Form {name:"Golem", picture:"https://cdn.bulbagarden.net/upload/0/0c/076AMS.png", isInterchangeable:False, isAlola:True}), +(GrimerAlola:Form {name:"Grimer", picture:"https://cdn.bulbagarden.net/upload/9/9e/088AMS.png", isInterchangeable:False, isAlola:True}), +(MukAlola:Form {name:"Muk", picture:"https://cdn.bulbagarden.net/upload/e/e4/089AMS.png", isInterchangeable:False, isAlola:True}), +(ExeggutorAlola:Form {name:"Exeggutor", picture:"https://cdn.bulbagarden.net/upload/2/25/103AMS.png", isInterchangeable:False, isAlola:True}), +(MarowakAlola:Form {name:"Marowak", picture:"https://cdn.bulbagarden.net/upload/e/e5/105AMS.png", isInterchangeable:False, isAlola:True}) + + +CREATE +(UnownUnownA:Form {name:"Unown A", picture:"cdn.bulbagarden.net/upload/a/a4/201MS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownK:Form {name:"Unown K", picture:"cdn.bulbagarden.net/upload/2/2d/201KMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownU:Form {name:"Unown U", picture:"cdn.bulbagarden.net/upload/d/d3/201UMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownB:Form {name:"Unown B", picture:"cdn.bulbagarden.net/upload/e/ec/201BMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownL:Form {name:"Unown L", picture:"cdn.bulbagarden.net/upload/4/47/201LMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownV:Form {name:"Unown V", picture:"cdn.bulbagarden.net/upload/d/db/201VMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownC:Form {name:"Unown C", picture:"cdn.bulbagarden.net/upload/5/5f/201CMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownM:Form {name:"Unown M", picture:"cdn.bulbagarden.net/upload/4/4c/201MMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownW:Form {name:"Unown W", picture:"cdn.bulbagarden.net/upload/c/ca/201WMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownD:Form {name:"Unown D", picture:"cdn.bulbagarden.net/upload/0/00/201DMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownN:Form {name:"Unown N", picture:"cdn.bulbagarden.net/upload/a/a6/201NMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownX:Form {name:"Unown X", picture:"cdn.bulbagarden.net/upload/b/b3/201XMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownE:Form {name:"Unown E", picture:"cdn.bulbagarden.net/upload/1/15/201EMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownO:Form {name:"Unown O", picture:"cdn.bulbagarden.net/upload/2/29/201OMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownY:Form {name:"Unown Y", picture:"cdn.bulbagarden.net/upload/7/74/201YMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownF:Form {name:"Unown F", picture:"cdn.bulbagarden.net/upload/3/3f/201FMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownP:Form {name:"Unown P", picture:"cdn.bulbagarden.net/upload/a/af/201PMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownZ:Form {name:"Unown Z", picture:"cdn.bulbagarden.net/upload/0/0b/201ZMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownG:Form {name:"Unown G", picture:"cdn.bulbagarden.net/upload/5/5b/201GMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownQ:Form {name:"Unown Q", picture:"cdn.bulbagarden.net/upload/a/a9/201QMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnown33:Form {name:"Unown !", picture:"cdn.bulbagarden.net/upload/1/15/201EXMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownH:Form {name:"Unown H", picture:"cdn.bulbagarden.net/upload/2/22/201HMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownR:Form {name:"Unown R", picture:"cdn.bulbagarden.net/upload/f/fd/201RMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnown63:Form {name:"Unown ?", picture:"cdn.bulbagarden.net/upload/e/e7/201QUMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownI:Form {name:"Unown I", picture:"cdn.bulbagarden.net/upload/c/c3/201IMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownS:Form {name:"Unown S", picture:"cdn.bulbagarden.net/upload/1/18/201SMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownJ:Form {name:"Unown J", picture:"cdn.bulbagarden.net/upload/0/08/201JMS.png", isInterchangeable:True, isAlola:False}), +(UnownUnownT:Form {name:"Unown T", picture:"cdn.bulbagarden.net/upload/c/c4/201TMS.png", isInterchangeable:True, isAlola:False}), +(CastformNormal:Form {name:"Normal", picture:"https://cdn.bulbagarden.net/upload/thumb/f/f3/351Castform.png/96px-351Castform.png", isInterchangeable:True, isAlola:False}), +(CastformSunnyForm:Form {name:"Sunny Form", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b6/351Castform-Sunny.png/96px-351Castform-Sunny.png", isInterchangeable:True, isAlola:False}), +(CastformRainyForm:Form {name:"Rainy Form", picture:"https://cdn.bulbagarden.net/upload/thumb/8/89/351Castform-Rainy.png/96px-351Castform-Rainy.png", isInterchangeable:True, isAlola:False}), +(CastformSnowyForm:Form {name:"Snowy Form", picture:"https://cdn.bulbagarden.net/upload/thumb/f/f9/351Castform-Snowy.png/96px-351Castform-Snowy.png", isInterchangeable:True, isAlola:False}), +(DeoxysNormalForme:Form {name:"Normal Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/e/e7/386Deoxys.png/96px-386Deoxys.png", isInterchangeable:True, isAlola:False}), +(DeoxysAttackForme:Form {name:"Attack Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d8/386Deoxys-Attack.png/96px-386Deoxys-Attack.png", isInterchangeable:True, isAlola:False}), +(DeoxysDefenseForme:Form {name:"Defense Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/c/cc/386Deoxys-Defense.png/96px-386Deoxys-Defense.png", isInterchangeable:True, isAlola:False}), +(DeoxysSpeedForme:Form {name:"Speed Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/2/2b/386Deoxys-Speed.png/96px-386Deoxys-Speed.png", isInterchangeable:True, isAlola:False}), +(BurmyPlantCloak:Form {name:"Plant Cloak", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c9/412Burmy-Plant.png/96px-412Burmy-Plant.png", isInterchangeable:True, isAlola:False}), +(BurmySandyCloak:Form {name:"Sandy Cloak", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1f/412Burmy-Sandy.png/96px-412Burmy-Sandy.png", isInterchangeable:True, isAlola:False}), +(BurmyTrashCloak:Form {name:"Trash Cloak", picture:"https://cdn.bulbagarden.net/upload/thumb/8/8e/412Burmy-Trash.png/96px-412Burmy-Trash.png", isInterchangeable:True, isAlola:False}), +(WormadamPlantCloak:Form {name:"Plant Cloak", picture:"https://cdn.bulbagarden.net/upload/thumb/d/db/413Wormadam-Plant.png/96px-413Wormadam-Plant.png", isInterchangeable:False, isAlola:False}), +(WormadamSandyCloak:Form {name:"Sandy Cloak", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1c/413Wormadam-Sandy.png/96px-413Wormadam-Sandy.png", isInterchangeable:False, isAlola:False}), +(WormadamTrashCloak:Form {name:"Trash Cloak", picture:"https://cdn.bulbagarden.net/upload/thumb/0/0b/413Wormadam-Trash.png/96px-413Wormadam-Trash.png", isInterchangeable:False, isAlola:False}), +(CherrimOvercastForm:Form {name:"Overcast Form", picture:"https://cdn.bulbagarden.net/upload/thumb/2/25/421Cherrim-Overcast.png/96px-421Cherrim-Overcast.png", isInterchangeable:True, isAlola:False}), +(CherrimSunshineForm:Form {name:"Sunshine Form", picture:"https://cdn.bulbagarden.net/upload/thumb/b/bc/421Cherrim-Sunny.png/96px-421Cherrim-Sunny.png", isInterchangeable:True, isAlola:False}), +(ShellosWestSea:Form {name:"West Sea", picture:"https://cdn.bulbagarden.net/upload/thumb/7/71/422Shellos-West.png/96px-422Shellos-West.png", isInterchangeable:False, isAlola:False}), +(ShellosEastSea:Form {name:"East Sea", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d5/422Shellos-East.png/96px-422Shellos-East.png", isInterchangeable:False, isAlola:False}), +(GastrodonWestSea:Form {name:"West Sea", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1d/423Gastrodon-West.png/96px-423Gastrodon-West.png", isInterchangeable:False, isAlola:False}), +(GastrodonEastSea:Form {name:"East Sea", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1b/423Gastrodon-East.png/96px-423Gastrodon-East.png", isInterchangeable:False, isAlola:False}), +(RotomRotom:Form {name:"Rotom", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c5/479Rotom.png/96px-479Rotom.png", isInterchangeable:True, isAlola:False}), +(RotomHeatRotom:Form {name:"Heat Rotom", picture:"https://cdn.bulbagarden.net/upload/thumb/9/99/479Rotom-Heat.png/96px-479Rotom-Heat.png", isInterchangeable:True, isAlola:False}), +(RotomWashRotom:Form {name:"Wash Rotom", picture:"https://cdn.bulbagarden.net/upload/thumb/e/ea/479Rotom-Wash.png/96px-479Rotom-Wash.png", isInterchangeable:True, isAlola:False}), +(RotomFrostRotom:Form {name:"Frost Rotom", picture:"https://cdn.bulbagarden.net/upload/thumb/7/77/479Rotom-Frost.png/96px-479Rotom-Frost.png", isInterchangeable:True, isAlola:False}), +(RotomFanRotom:Form {name:"Fan Rotom", picture:"https://cdn.bulbagarden.net/upload/thumb/6/64/479Rotom-Fan.png/96px-479Rotom-Fan.png", isInterchangeable:True, isAlola:False}), +(RotomMowRotom:Form {name:"Mow Rotom", picture:"https://cdn.bulbagarden.net/upload/thumb/d/da/479Rotom-Mow.png/96px-479Rotom-Mow.png", isInterchangeable:True, isAlola:False}), +(GiratinaAlteredForme:Form {name:"Altered Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c5/487Giratina-Altered.png/96px-487Giratina-Altered.png", isInterchangeable:True, isAlola:False}), +(GiratinaOriginForme:Form {name:"Origin Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/2/2b/487Giratina-Origin.png/96px-487Giratina-Origin.png", isInterchangeable:True, isAlola:False}), +(ShayminLandForme:Form {name:"Land Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/0/05/492Shaymin-Land.png/96px-492Shaymin-Land.png", isInterchangeable:True, isAlola:False}), +(ShayminSkyForme:Form {name:"Sky Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/d/da/492Shaymin-Sky.png/96px-492Shaymin-Sky.png", isInterchangeable:True, isAlola:False}), +(ArceusNormal:Form {name:"Normal", picture:"https://cdn.bulbagarden.net/upload/thumb/4/40/493Arceus_Normal_Dream.png/96px-493Arceus_Normal_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusFire:Form {name:"Fire", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b0/493Arceus_Fire_Dream.png/96px-493Arceus_Fire_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusWater:Form {name:"Water", picture:"https://cdn.bulbagarden.net/upload/thumb/8/8a/493Arceus_Water_Dream.png/96px-493Arceus_Water_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusElectric:Form {name:"Electric", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b2/493Arceus_Electric_Dream.png/96px-493Arceus_Electric_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusGrass:Form {name:"Grass", picture:"https://cdn.bulbagarden.net/upload/thumb/c/cc/493Arceus_Grass_Dream.png/96px-493Arceus_Grass_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusIce:Form {name:"Ice", picture:"https://cdn.bulbagarden.net/upload/thumb/5/52/493Arceus_Ice_Dream.png/96px-493Arceus_Ice_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusFighting:Form {name:"Fighting", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c4/493Arceus_Fighting_Dream.png/96px-493Arceus_Fighting_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusPoison:Form {name:"Poison", picture:"https://cdn.bulbagarden.net/upload/thumb/2/27/493Arceus_Poison_Dream.png/96px-493Arceus_Poison_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusGround:Form {name:"Ground", picture:"https://cdn.bulbagarden.net/upload/thumb/9/90/493Arceus_Ground_Dream.png/96px-493Arceus_Ground_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusFlying:Form {name:"Flying", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a7/493Arceus_Flying_Dream.png/96px-493Arceus_Flying_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusPsychic:Form {name:"Psychic", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c9/493Arceus_Psychic_Dream.png/96px-493Arceus_Psychic_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusBug:Form {name:"Bug", picture:"https://cdn.bulbagarden.net/upload/thumb/7/79/493Arceus_Bug_Dream.png/96px-493Arceus_Bug_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusRock:Form {name:"Rock", picture:"https://cdn.bulbagarden.net/upload/thumb/b/bd/493Arceus_Rock_Dream.png/96px-493Arceus_Rock_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusGhost:Form {name:"Ghost", picture:"https://cdn.bulbagarden.net/upload/thumb/0/02/493Arceus_Ghost_Dream.png/96px-493Arceus_Ghost_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusDragon:Form {name:"Dragon", picture:"https://cdn.bulbagarden.net/upload/thumb/9/96/493Arceus_Dragon_Dream.png/96px-493Arceus_Dragon_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusDark:Form {name:"Dark", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c8/493Arceus_Dark_Dream.png/96px-493Arceus_Dark_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusSteel:Form {name:"Steel", picture:"https://cdn.bulbagarden.net/upload/thumb/a/ab/493Arceus_Steel_Dream.png/96px-493Arceus_Steel_Dream.png", isInterchangeable:True, isAlola:False}), +(ArceusFairy:Form {name:"Fairy", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c7/493Arceus_Fairy_Dream.png/96px-493Arceus_Fairy_Dream.png", isInterchangeable:True, isAlola:False}), +(BasculinRedStripedForm:Form {name:"Red-Striped Form", picture:"https://cdn.bulbagarden.net/upload/thumb/2/24/550Basculin-Red.png/96px-550Basculin-Red.png", isInterchangeable:False, isAlola:False}), +(BasculinBlueStripedForm:Form {name:"Blue-Striped Form", picture:"https://cdn.bulbagarden.net/upload/thumb/f/fa/550Basculin-Blue.png/96px-550Basculin-Blue.png", isInterchangeable:False, isAlola:False}), +(DarmanitanStandardMode:Form {name:"Standard Mode", picture:"https://cdn.bulbagarden.net/upload/thumb/4/40/555Darmanitan.png/96px-555Darmanitan.png", isInterchangeable:True, isAlola:False}), +(DarmanitanZenMode:Form {name:"Zen Mode", picture:"https://cdn.bulbagarden.net/upload/thumb/f/fe/555Darmanitan-Zen.png/96px-555Darmanitan-Zen.png", isInterchangeable:True, isAlola:False}), +(DeerlingSpringForm:Form {name:"Spring Form", picture:"https://cdn.bulbagarden.net/upload/thumb/6/68/585Deerling-Spring.png/96px-585Deerling-Spring.png", isInterchangeable:True, isAlola:False}), +(DeerlingSummerForm:Form {name:"Summer Form", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d7/585Deerling-Summer.png/96px-585Deerling-Summer.png", isInterchangeable:True, isAlola:False}), +(DeerlingAutumnForm:Form {name:"Autumn Form", picture:"https://cdn.bulbagarden.net/upload/thumb/e/e3/585Deerling-Autumn.png/96px-585Deerling-Autumn.png", isInterchangeable:True, isAlola:False}), +(DeerlingWinterForm:Form {name:"Winter Form", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d4/585Deerling-Winter.png/96px-585Deerling-Winter.png", isInterchangeable:True, isAlola:False}), +(SawsbuckSpringForm:Form {name:"Spring Form", picture:"https://cdn.bulbagarden.net/upload/thumb/8/8d/586Sawsbuck-Spring.png/96px-586Sawsbuck-Spring.png", isInterchangeable:True, isAlola:False}), +(SawsbuckSummerForm:Form {name:"Summer Form", picture:"https://cdn.bulbagarden.net/upload/thumb/4/44/586Sawsbuck-Summer.png/96px-586Sawsbuck-Summer.png", isInterchangeable:True, isAlola:False}), +(SawsbuckAutumnForm:Form {name:"Autumn Form", picture:"https://cdn.bulbagarden.net/upload/thumb/c/ca/586Sawsbuck-Autumn.png/96px-586Sawsbuck-Autumn.png", isInterchangeable:True, isAlola:False}), +(SawsbuckWinterForm:Form {name:"Winter Form", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c5/586Sawsbuck-Winter.png/96px-586Sawsbuck-Winter.png", isInterchangeable:True, isAlola:False}), +(TornadusIncarnateForme:Form {name:"Incarnate Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/0/08/641Tornadus.png/96px-641Tornadus.png", isInterchangeable:True, isAlola:False}), +(TornadusTherianForme:Form {name:"Therian Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/7/7e/641Tornadus-Therian.png/96px-641Tornadus-Therian.png", isInterchangeable:True, isAlola:False}), +(ThundurusIncarnateForme:Form {name:"Incarnate Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b8/642Thundurus.png/96px-642Thundurus.png", isInterchangeable:True, isAlola:False}), +(ThundurusTherianForme:Form {name:"Therian Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/8/86/642Thundurus-Therian.png/96px-642Thundurus-Therian.png", isInterchangeable:True, isAlola:False}), +(ReshiramReshiram:Form {name:"Reshiram", picture:"https://cdn.bulbagarden.net/upload/thumb/8/8d/643Reshiram.png/100px-643Reshiram.png", isInterchangeable:True, isAlola:False}), +(ReshiramInOverdrive:Form {name:"In Overdrive", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1f/643Reshiram-Activated.png/100px-643Reshiram-Activated.png", isInterchangeable:True, isAlola:False}), +(ZekromZekrom:Form {name:"Zekrom", picture:"https://cdn.bulbagarden.net/upload/thumb/8/81/644Zekrom.png/100px-644Zekrom.png", isInterchangeable:True, isAlola:False}), +(ZekromInOverdrive:Form {name:"In Overdrive", picture:"https://cdn.bulbagarden.net/upload/thumb/a/af/644Zekrom-Activated.png/100px-644Zekrom-Activated.png", isInterchangeable:True, isAlola:False}), +(LandorusIncarnateForme:Form {name:"Incarnate Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/b/bb/645Landorus.png/96px-645Landorus.png", isInterchangeable:True, isAlola:False}), +(LandorusTherianForme:Form {name:"Therian Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/0/00/645Landorus-Therian.png/96px-645Landorus-Therian.png", isInterchangeable:True, isAlola:False}), +(KyuremKyurem:Form {name:"Kyurem", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c3/646Kyurem.png/96px-646Kyurem.png", isInterchangeable:True, isAlola:False}), +(KyuremWhiteKyurem:Form {name:"White Kyurem", picture:"https://cdn.bulbagarden.net/upload/thumb/8/81/646Kyurem-White.png/96px-646Kyurem-White.png", isInterchangeable:True, isAlola:False}), +(KyuremBlackKyurem:Form {name:"Black Kyurem", picture:"https://cdn.bulbagarden.net/upload/thumb/1/16/646Kyurem-Black.png/96px-646Kyurem-Black.png", isInterchangeable:True, isAlola:False}), +(KyuremInOverdrive:Form {name:"In Overdrive", picture:"https://cdn.bulbagarden.net/upload/thumb/2/26/646Kyurem-White2.png/100px-646Kyurem-White2.png", isInterchangeable:True, isAlola:False}), +(KeldeoOrdinaryForm:Form {name:"Ordinary Form", picture:"https://cdn.bulbagarden.net/upload/thumb/5/50/647Keldeo.png/96px-647Keldeo.png", isInterchangeable:True, isAlola:False}), +(KeldeoResoluteForm:Form {name:"Resolute Form", picture:"https://cdn.bulbagarden.net/upload/thumb/7/7c/647Keldeo-Resolute.png/96px-647Keldeo-Resolute.png", isInterchangeable:True, isAlola:False}), +(MeloettaAriaForme:Form {name:"Aria Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a3/648Meloetta.png/96px-648Meloetta.png", isInterchangeable:True, isAlola:False}), +(MeloettaPirouetteForme:Form {name:"Pirouette Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/3/36/648Meloetta-Pirouette.png/96px-648Meloetta-Pirouette.png", isInterchangeable:True, isAlola:False}), +(GenesectNormalGenesect:Form {name:"Normal Genesect", picture:"https://cdn.bulbagarden.net/upload/thumb/f/f3/649Genesect_Dream.png/100px-649Genesect_Dream.png", isInterchangeable:True, isAlola:False}), +(GenesectShockDriveGenesect:Form {name:"Shock Drive Genesect", picture:"https://cdn.bulbagarden.net/upload/thumb/2/26/649Genesect_S_Dream.png/100px-649Genesect_S_Dream.png", isInterchangeable:True, isAlola:False}), +(GenesectBurnDriveGenesect:Form {name:"Burn Drive Genesect", picture:"https://cdn.bulbagarden.net/upload/thumb/2/21/649Genesect_B_Dream.png/100px-649Genesect_B_Dream.png", isInterchangeable:True, isAlola:False}), +(GenesectChillDriveGenesect:Form {name:"Chill Drive Genesect", picture:"https://cdn.bulbagarden.net/upload/thumb/0/00/649Genesect_C_Dream.png/120px-649Genesect_C_Dream.png", isInterchangeable:True, isAlola:False}), +(GenesectDouseDriveGenesect:Form {name:"Douse Drive Genesect", picture:"https://cdn.bulbagarden.net/upload/thumb/0/02/649Genesect_D_Dream.png/120px-649Genesect_D_Dream.png", isInterchangeable:True, isAlola:False}), +(GreninjaGreninja:Form {name:"Greninja", picture:"https://cdn.bulbagarden.net/upload/thumb/6/67/658Greninja.png/96px-658Greninja.png", isInterchangeable:True, isAlola:False}), +(GreninjaAshGreninja:Form {name:"Ash-Greninja", picture:"https://cdn.bulbagarden.net/upload/thumb/0/0e/658Greninja-Ash.png/96px-658Greninja-Ash.png", isInterchangeable:True, isAlola:False}), +(VivillonArchipelago:Form {name:"Archipelago", picture:"https://cdn.bulbagarden.net/upload/thumb/7/76/666Vivillon-Archipelago.png/100px-666Vivillon-Archipelago.png", isInterchangeable:False, isAlola:False}), +(VivillonContinental:Form {name:"Continental", picture:"https://cdn.bulbagarden.net/upload/thumb/3/3b/666Vivillon-Continental.png/100px-666Vivillon-Continental.png", isInterchangeable:False, isAlola:False}), +(VivillonElegant:Form {name:"Elegant", picture:"https://cdn.bulbagarden.net/upload/thumb/0/0a/666Vivillon-Elegant.png/100px-666Vivillon-Elegant.png", isInterchangeable:False, isAlola:False}), +(VivillonGarden:Form {name:"Garden", picture:"https://cdn.bulbagarden.net/upload/thumb/6/64/666Vivillon-Garden.png/100px-666Vivillon-Garden.png", isInterchangeable:False, isAlola:False}), +(VivillonHighPlains:Form {name:"High Plains", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b6/666Vivillon-High_Plains.png/100px-666Vivillon-High_Plains.png", isInterchangeable:False, isAlola:False}), +(VivillonIcySnow:Form {name:"Icy Snow", picture:"https://cdn.bulbagarden.net/upload/thumb/6/6c/666Vivillon-Icy_Snow.png/100px-666Vivillon-Icy_Snow.png", isInterchangeable:False, isAlola:False}), +(VivillonJungle:Form {name:"Jungle", picture:"https://cdn.bulbagarden.net/upload/thumb/1/19/666Vivillon-Jungle.png/100px-666Vivillon-Jungle.png", isInterchangeable:False, isAlola:False}), +(VivillonMarine:Form {name:"Marine", picture:"https://cdn.bulbagarden.net/upload/thumb/4/4d/666Vivillon-Marine.png/100px-666Vivillon-Marine.png", isInterchangeable:False, isAlola:False}), +(VivillonMeadow:Form {name:"Meadow", picture:"https://cdn.bulbagarden.net/upload/thumb/f/f4/666Vivillon-Meadow.png/100px-666Vivillon-Meadow.png", isInterchangeable:False, isAlola:False}), +(VivillonModern:Form {name:"Modern", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d8/666Vivillon-Modern.png/100px-666Vivillon-Modern.png", isInterchangeable:False, isAlola:False}), +(VivillonMonsoon:Form {name:"Monsoon", picture:"https://cdn.bulbagarden.net/upload/thumb/2/29/666Vivillon-Monsoon.png/100px-666Vivillon-Monsoon.png", isInterchangeable:False, isAlola:False}), +(VivillonOcean:Form {name:"Ocean", picture:"https://cdn.bulbagarden.net/upload/thumb/6/6c/666Vivillon-Ocean.png/100px-666Vivillon-Ocean.png", isInterchangeable:False, isAlola:False}), +(VivillonPolar:Form {name:"Polar", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a6/666Vivillon-Polar.png/100px-666Vivillon-Polar.png", isInterchangeable:False, isAlola:False}), +(VivillonRiver:Form {name:"River", picture:"https://cdn.bulbagarden.net/upload/thumb/c/ce/666Vivillon-River.png/100px-666Vivillon-River.png", isInterchangeable:False, isAlola:False}), +(VivillonSandstorm:Form {name:"Sandstorm", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d9/666Vivillon-Sandstorm.png/100px-666Vivillon-Sandstorm.png", isInterchangeable:False, isAlola:False}), +(VivillonSavanna:Form {name:"Savanna", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d4/666Vivillon-Savanna.png/100px-666Vivillon-Savanna.png", isInterchangeable:False, isAlola:False}), +(VivillonSun:Form {name:"Sun", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d8/666Vivillon-Sun.png/100px-666Vivillon-Sun.png", isInterchangeable:False, isAlola:False}), +(VivillonTundra:Form {name:"Tundra", picture:"https://cdn.bulbagarden.net/upload/thumb/9/9a/666Vivillon-Tundra.png/100px-666Vivillon-Tundra.png", isInterchangeable:False, isAlola:False}), +(VivillonPokeBall:Form {name:"Poké Ball", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c6/666Vivillon-Pok%C3%A9_Ball.png/100px-666Vivillon-Pok%C3%A9_Ball.png", isInterchangeable:False, isAlola:False}), +(VivillonFancy:Form {name:"Fancy", picture:"https://cdn.bulbagarden.net/upload/thumb/8/88/666Vivillon-Fancy.png/100px-666Vivillon-Fancy.png", isInterchangeable:False, isAlola:False}), +(FlabebeRedFlower:Form {name:"Red Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/9/9a/669Flab%C3%A9b%C3%A9_Red_Flower_Dream.png/100px-669Flab%C3%A9b%C3%A9_Red_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlabebeYellowFlower:Form {name:"Yellow Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/0/0c/669Flab%C3%A9b%C3%A9_Yellow_Flower_Dream.png/100px-669Flab%C3%A9b%C3%A9_Yellow_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlabebeOrangeFlower:Form {name:"Orange Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b9/669Flab%C3%A9b%C3%A9_Orange_Flower_Dream.png/100px-669Flab%C3%A9b%C3%A9_Orange_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlabebeBlueFlower:Form {name:"Blue Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/3/39/669Flab%C3%A9b%C3%A9_Blue_Flower_Dream.png/100px-669Flab%C3%A9b%C3%A9_Blue_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlabebeWhiteFlower:Form {name:"White Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/7/78/669Flab%C3%A9b%C3%A9_White_Flower_Dream.png/100px-669Flab%C3%A9b%C3%A9_White_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FloetteRedFlower:Form {name:"Red Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a3/670Floette_Red_Flower_Dream.png/100px-670Floette_Red_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FloetteYellowFlower:Form {name:"Yellow Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1f/670Floette_Yellow_Flower_Dream.png/100px-670Floette_Yellow_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FloetteOrangeFlower:Form {name:"Orange Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/0/06/670Floette_Orange_Flower_Dream.png/100px-670Floette_Orange_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FloetteBlueFlower:Form {name:"Blue Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/7/70/670Floette_Blue_Flower_Dream.png/100px-670Floette_Blue_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FloetteWhiteFlower:Form {name:"White Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a0/670Floette_White_Flower_Dream.png/100px-670Floette_White_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlorgesRedFlower:Form {name:"Red Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b9/671Florges_Red_Flower_Dream.png/100px-671Florges_Red_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlorgesYellowFlower:Form {name:"Yellow Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/5/5d/671Florges_Yellow_Flower_Dream.png/100px-671Florges_Yellow_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlorgesOrangeFlower:Form {name:"Orange Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/6/6f/671Florges_Orange_Flower_Dream.png/100px-671Florges_Orange_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlorgesBlueFlower:Form {name:"Blue Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/b/bc/671Florges_Blue_Flower_Dream.png/100px-671Florges_Blue_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FlorgesWhiteFlower:Form {name:"White Flower", picture:"https://cdn.bulbagarden.net/upload/thumb/e/ea/671Florges_White_Flower_Dream.png/100px-671Florges_White_Flower_Dream.png", isInterchangeable:False, isAlola:False}), +(FurfrouNaturalForm:Form {name:"Natural Form", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1b/676Furfrou_Dream.png/100px-676Furfrou_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouHeartTrim:Form {name:"Heart Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/2/2f/676Furfrou_Heart_Dream.png/100px-676Furfrou_Heart_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouStarTrim:Form {name:"Star Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/1/12/676Furfrou_Star_Dream.png/100px-676Furfrou_Star_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouDiamondTrim:Form {name:"Diamond Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/0/04/676Furfrou_Diamond_Dream.png/100px-676Furfrou_Diamond_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouDebutanteTrim:Form {name:"Debutante Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/e/e3/676Furfrou_Debutante_Dream.png/100px-676Furfrou_Debutante_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouMatronTrim:Form {name:"Matron Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/e/e7/676Furfrou_Matron_Dream.png/100px-676Furfrou_Matron_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouDandyTrim:Form {name:"Dandy Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/4/48/676Furfrou_Dandy_Dream.png/100px-676Furfrou_Dandy_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouLaReineTrim:Form {name:"La Reine Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/a/ac/676Furfrou_La_Reine_Dream.png/100px-676Furfrou_La_Reine_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouKabukiTrim:Form {name:"Kabuki Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/5/54/676Furfrou_Kabuki_Dream.png/100px-676Furfrou_Kabuki_Dream.png", isInterchangeable:True, isAlola:False}), +(FurfrouPharaohTrim:Form {name:"Pharaoh Trim", picture:"https://cdn.bulbagarden.net/upload/thumb/6/68/676Furfrou_Pharaoh_Dream.png/100px-676Furfrou_Pharaoh_Dream.png", isInterchangeable:True, isAlola:False}), +(AegislashBladeForme:Form {name:"Blade Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/f/f9/681Aegislash-Blade.png/96px-681Aegislash-Blade.png", isInterchangeable:True, isAlola:False}), +(AegislashShieldForme:Form {name:"Shield Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/e/ec/681Aegislash-Shield.png/96px-681Aegislash-Shield.png", isInterchangeable:True, isAlola:False}), +(PumpkabooSmallSize:Form {name:"Small Size", picture:"https://cdn.bulbagarden.net/upload/thumb/d/df/710Pumpkaboo.png/40px-710Pumpkaboo.png", isInterchangeable:False, isAlola:False}), +(PumpkabooAverageSize:Form {name:"Average Size", picture:"https://cdn.bulbagarden.net/upload/thumb/d/df/710Pumpkaboo.png/65px-710Pumpkaboo.png", isInterchangeable:False, isAlola:False}), +(PumpkabooLargeSize:Form {name:"Large Size", picture:"https://cdn.bulbagarden.net/upload/thumb/d/df/710Pumpkaboo.png/80px-710Pumpkaboo.png", isInterchangeable:False, isAlola:False}), +(PumpkabooSuperSize:Form {name:"Super Size", picture:"https://cdn.bulbagarden.net/upload/thumb/d/df/710Pumpkaboo.png/96px-710Pumpkaboo.png", isInterchangeable:False, isAlola:False}), +(GourgeistSmallSize:Form {name:"Small Size", picture:"https://cdn.bulbagarden.net/upload/thumb/8/88/711Gourgeist.png/40px-711Gourgeist.png", isInterchangeable:False, isAlola:False}), +(GourgeistAverageSize:Form {name:"Average Size", picture:"https://cdn.bulbagarden.net/upload/thumb/8/88/711Gourgeist.png/65px-711Gourgeist.png", isInterchangeable:False, isAlola:False}), +(GourgeistLargeSize:Form {name:"Large Size", picture:"https://cdn.bulbagarden.net/upload/thumb/8/88/711Gourgeist.png/80px-711Gourgeist.png", isInterchangeable:False, isAlola:False}), +(GourgeistSuperSize:Form {name:"Super Size", picture:"https://cdn.bulbagarden.net/upload/thumb/8/88/711Gourgeist.png/96px-711Gourgeist.png", isInterchangeable:False, isAlola:False}), +(XerneasNeutralMode:Form {name:"Neutral Mode", picture:"https://cdn.bulbagarden.net/upload/7/78/Spr_7s_716N.png", isInterchangeable:True, isAlola:False}), +(XerneasActiveMode:Form {name:"Active Mode", picture:"https://cdn.bulbagarden.net/upload/3/32/Spr_7s_716.png", isInterchangeable:True, isAlola:False}), +(ZygardeZygardeCell:Form {name:"Zygarde Cell", picture:"https://cdn.bulbagarden.net/upload/thumb/9/93/718Zygarde-Cell.png/100px-718Zygarde-Cell.png", isInterchangeable:True, isAlola:False}), +(ZygardeZygardeCore:Form {name:"Zygarde Core", picture:"https://cdn.bulbagarden.net/upload/thumb/8/8b/718Zygarde-Core.png/100px-718Zygarde-Core.png", isInterchangeable:True, isAlola:False}), +(Zygarde10Forme:Form {name:"10% Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/9/94/718Zygarde-10Percent.png/96px-718Zygarde-10Percent.png", isInterchangeable:True, isAlola:False}), +(Zygarde50Forme:Form {name:"50% Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/3/3a/718Zygarde.png/96px-718Zygarde.png", isInterchangeable:True, isAlola:False}), +(ZygardeCompleteForme:Form {name:"Complete Forme", picture:"https://cdn.bulbagarden.net/upload/thumb/9/91/718Zygarde-Complete.png/96px-718Zygarde-Complete.png", isInterchangeable:True, isAlola:False}), +(HoopaHoopaConfined:Form {name:"Hoopa Confined", picture:"https://cdn.bulbagarden.net/upload/thumb/f/fb/720Hoopa.png/96px-720Hoopa.png", isInterchangeable:True, isAlola:False}), +(HoopaHoopaUnbound:Form {name:"Hoopa Unbound", picture:"https://cdn.bulbagarden.net/upload/thumb/a/ad/720Hoopa-Unbound.png/96px-720Hoopa-Unbound.png", isInterchangeable:True, isAlola:False}), +(OricorioBaileStyle:Form {name:"Baile Style", picture:"https://cdn.bulbagarden.net/upload/thumb/e/ed/741Oricorio-Baile.png/96px-741Oricorio-Baile.png", isInterchangeable:True, isAlola:False}), +(OricorioPomPomStyle:Form {name:"Pom-Pom Style", picture:"https://cdn.bulbagarden.net/upload/thumb/6/6d/741Oricorio-Pom-Pom.png/96px-741Oricorio-Pom-Pom.png", isInterchangeable:True, isAlola:False}), +(OricorioPauStyle:Form {name:"Pa'u Style", picture:"https://cdn.bulbagarden.net/upload/thumb/5/50/741Oricorio-Pa%27u.png/96px-741Oricorio-Pa%27u.png", isInterchangeable:True, isAlola:False}), +(OricorioSensuStyle:Form {name:"Sensu Style", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1c/741Oricorio-Sensu.png/96px-741Oricorio-Sensu.png", isInterchangeable:True, isAlola:False}), +(LycanrocMiddayForm:Form {name:"Midday Form", picture:"https://cdn.bulbagarden.net/upload/thumb/1/14/745Lycanroc.png/96px-745Lycanroc.png", isInterchangeable:False, isAlola:False}), +(LycanrocMidnightForm:Form {name:"Midnight Form", picture:"https://cdn.bulbagarden.net/upload/thumb/3/34/745Lycanroc-Midnight.png/96px-745Lycanroc-Midnight.png", isInterchangeable:False, isAlola:False}), +(LycanrocDuskForm:Form {name:"Dusk Form", picture:"https://cdn.bulbagarden.net/upload/thumb/3/37/745Lycanroc-Dusk.png/96px-745Lycanroc-Dusk.png", isInterchangeable:False, isAlola:False}), +(WishiwashiSoloForm:Form {name:"Solo Form", picture:"https://cdn.bulbagarden.net/upload/thumb/1/18/746Wishiwashi-Solo.png/96px-746Wishiwashi-Solo.png", isInterchangeable:True, isAlola:False}), +(WishiwashiSchoolForm:Form {name:"School Form", picture:"https://cdn.bulbagarden.net/upload/thumb/7/7f/746Wishiwashi-School.png/96px-746Wishiwashi-School.png", isInterchangeable:True, isAlola:False}), +(SilvallyNormal:Form {name:"Normal", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a7/773Silvally_Normal_Dream.png/96px-773Silvally_Normal_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyFighting:Form {name:"Fighting", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b6/773Silvally_Fighting_Dream.png/96px-773Silvally_Fighting_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyFlying:Form {name:"Flying", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c3/773Silvally_Flying_Dream.png/96px-773Silvally_Flying_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyPoison:Form {name:"Poison", picture:"https://cdn.bulbagarden.net/upload/thumb/9/90/773Silvally_Poison_Dream.png/96px-773Silvally_Poison_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyGround:Form {name:"Ground", picture:"https://cdn.bulbagarden.net/upload/thumb/7/79/773Silvally_Ground_Dream.png/96px-773Silvally_Ground_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyRock:Form {name:"Rock", picture:"https://cdn.bulbagarden.net/upload/thumb/c/cb/773Silvally_Rock_Dream.png/96px-773Silvally_Rock_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyBug:Form {name:"Bug", picture:"https://cdn.bulbagarden.net/upload/thumb/6/6d/773Silvally_Bug_Dream.png/96px-773Silvally_Bug_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyGhost:Form {name:"Ghost", picture:"https://cdn.bulbagarden.net/upload/thumb/9/9c/773Silvally_Ghost_Dream.png/96px-773Silvally_Ghost_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallySteel:Form {name:"Steel", picture:"https://cdn.bulbagarden.net/upload/thumb/6/67/773Silvally_Steel_Dream.png/96px-773Silvally_Steel_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyFire:Form {name:"Fire", picture:"https://cdn.bulbagarden.net/upload/thumb/1/1c/773Silvally_Fire_Dream.png/96px-773Silvally_Fire_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyWater:Form {name:"Water", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a6/773Silvally_Water_Dream.png/96px-773Silvally_Water_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyGrass:Form {name:"Grass", picture:"https://cdn.bulbagarden.net/upload/thumb/a/a1/773Silvally_Grass_Dream.png/96px-773Silvally_Grass_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyElectric:Form {name:"Electric", picture:"https://cdn.bulbagarden.net/upload/thumb/5/59/773Silvally_Electric_Dream.png/96px-773Silvally_Electric_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyPsychic:Form {name:"Psychic", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c3/773Silvally_Psychic_Dream.png/96px-773Silvally_Psychic_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyIce:Form {name:"Ice", picture:"https://cdn.bulbagarden.net/upload/thumb/e/e2/773Silvally_Ice_Dream.png/96px-773Silvally_Ice_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyDragon:Form {name:"Dragon", picture:"https://cdn.bulbagarden.net/upload/thumb/c/c8/773Silvally_Dragon_Dream.png/96px-773Silvally_Dragon_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyDark:Form {name:"Dark", picture:"https://cdn.bulbagarden.net/upload/thumb/8/82/773Silvally_Dark_Dream.png/96px-773Silvally_Dark_Dream.png", isInterchangeable:True, isAlola:False}), +(SilvallyFairy:Form {name:"Fairy", picture:"https://cdn.bulbagarden.net/upload/thumb/d/dc/773Silvally_Fairy_Dream.png/96px-773Silvally_Fairy_Dream.png", isInterchangeable:True, isAlola:False}), +(MiniorMeteorForm:Form {name:"Meteor Form", picture:"https://cdn.bulbagarden.net/upload/thumb/9/90/774Minior.png/96px-774Minior.png", isInterchangeable:True, isAlola:False}), +(MiniorCore:Form {name:"Core", picture:"https://cdn.bulbagarden.net/upload/thumb/2/20/774Minior-Core.png/96px-774Minior-Core.png", isInterchangeable:True, isAlola:False}), +(MiniorRedCore:Form {name:"Red Core", picture:"https://cdn.bulbagarden.net/upload/thumb/f/ff/774Minior_Red_Dream.png/100px-774Minior_Red_Dream.png", isInterchangeable:True, isAlola:False}), +(MiniorOrangeCore:Form {name:"Orange Core", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b3/774Minior_Orange_Dream.png/100px-774Minior_Orange_Dream.png", isInterchangeable:True, isAlola:False}), +(MiniorYellowCore:Form {name:"Yellow Core", picture:"https://cdn.bulbagarden.net/upload/thumb/d/dd/774Minior_Yellow_Dream.png/100px-774Minior_Yellow_Dream.png", isInterchangeable:True, isAlola:False}), +(MiniorGreenCore:Form {name:"Green Core", picture:"https://cdn.bulbagarden.net/upload/thumb/d/d8/774Minior_Green_Dream.png/100px-774Minior_Green_Dream.png", isInterchangeable:True, isAlola:False}), +(MiniorBlueCore:Form {name:"Blue Core", picture:"https://cdn.bulbagarden.net/upload/thumb/8/81/774Minior_Blue_Dream.png/100px-774Minior_Blue_Dream.png", isInterchangeable:True, isAlola:False}), +(MiniorIndigoCore:Form {name:"Indigo Core", picture:"https://cdn.bulbagarden.net/upload/thumb/9/91/774Minior_Indigo_Dream.png/100px-774Minior_Indigo_Dream.png", isInterchangeable:True, isAlola:False}), +(MiniorVioletCore:Form {name:"Violet Core", picture:"https://cdn.bulbagarden.net/upload/thumb/3/33/774Minior_Violet_Dream.png/100px-774Minior_Violet_Dream.png", isInterchangeable:True, isAlola:False}), +(MimikyuDisguisedForm:Form {name:"Disguised Form", picture:"https://cdn.bulbagarden.net/upload/thumb/2/2c/778Mimikyu_Dream.png/100px-778Mimikyu_Dream.png", isInterchangeable:True, isAlola:False}), +(MimikyuBustedForm:Form {name:"Busted Form", picture:"https://cdn.bulbagarden.net/upload/thumb/3/3a/778Mimikyu_Busted_Dream.png/100px-778Mimikyu_Busted_Dream.png", isInterchangeable:True, isAlola:False}), +(SolgaleoSolgaleo:Form {name:"Solgaleo", picture:"https://cdn.bulbagarden.net/upload/thumb/5/57/791Solgaleo.png/100px-791Solgaleo.png", isInterchangeable:True, isAlola:False}), +(SolgaleoRadiantSunphase:Form {name:"Radiant Sun phase", picture:"https://cdn.bulbagarden.net/upload/thumb/5/58/791Solgaleo-RadiantSunPhase.png/100px-791Solgaleo-RadiantSunPhase.png", isInterchangeable:True, isAlola:False}), +(LunalaLunala:Form {name:"Lunala", picture:"https://cdn.bulbagarden.net/upload/thumb/9/9d/792Lunala.png/100px-792Lunala.png", isInterchangeable:True, isAlola:False}), +(LunalaFullMoonphase:Form {name:"Full Moon phase", picture:"https://cdn.bulbagarden.net/upload/thumb/6/64/792Lunala-FullMoonPhase.png/100px-792Lunala-FullMoonPhase.png", isInterchangeable:True, isAlola:False}), +(NecrozmaNecrozma:Form {name:"Necrozma", picture:"https://cdn.bulbagarden.net/upload/thumb/4/44/800Necrozma.png/96px-800Necrozma.png", isInterchangeable:True, isAlola:False}), +(NecrozmaDuskManeNecrozma:Form {name:"Dusk Mane Necrozma", picture:"https://cdn.bulbagarden.net/upload/thumb/8/80/800Necrozma-Dusk_Mane.png/96px-800Necrozma-Dusk_Mane.png", isInterchangeable:True, isAlola:False}), +(NecrozmaDawnWingsNecrozma:Form {name:"Dawn Wings Necrozma", picture:"https://cdn.bulbagarden.net/upload/thumb/7/7a/800Necrozma-Dawn_Wings.png/96px-800Necrozma-Dawn_Wings.png", isInterchangeable:True, isAlola:False}), +(NecrozmaUltraNecrozma:Form {name:"Ultra Necrozma", picture:"https://cdn.bulbagarden.net/upload/thumb/8/8b/800Necrozma-Ultra.png/96px-800Necrozma-Ultra.png", isInterchangeable:True, isAlola:False}), +(MagearnaMagearna:Form {name:"Magearna", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b1/Magearna_M19.png/200px-Magearna_M19.png", isInterchangeable:False, isAlola:False}), +(MagearnaOriginalColorMagearna:Form {name:"Original Color Magearna", picture:"https://cdn.bulbagarden.net/upload/thumb/b/b9/Original_Color_Magearna_M19.png/200px-Original_Color_Magearna_M19.png", isInterchangeable:False, isAlola:False}), +(MarshadowGloomdwellerMarshadow:Form {name:"Gloomdweller Marshadow", picture:"https://cdn.bulbagarden.net/upload/thumb/8/89/802Marshadow.png/100px-802Marshadow.png", isInterchangeable:True, isAlola:False}), +(MarshadowZenithMarshadow:Form {name:"Zenith Marshadow", picture:"https://cdn.bulbagarden.net/upload/thumb/1/11/802Marshadow-Alt.png/100px-802Marshadow-Alt.png", isInterchangeable:True, isAlola:False}) + +CREATE +(Bulbasaur)-[:EVOLVE {condition:"Level 16"}]->(Ivysaur), +(Ivysaur)-[:EVOLVE {condition:"Level 32"}]->(Venusaur), +(Charmander)-[:EVOLVE {condition:"Level 16"}]->(Charmeleon), +(Charmeleon)-[:EVOLVE {condition:"Level 36"}]->(Charizard), +(Squirtle)-[:EVOLVE {condition:"Level 16"}]->(Wartortle), +(Wartortle)-[:EVOLVE {condition:"Level 36"}]->(Blastoise), +(Caterpie)-[:EVOLVE {condition:"Level 7"}]->(Metapod), +(Metapod)-[:EVOLVE {condition:"Level 10"}]->(Butterfree), +(Weedle)-[:EVOLVE {condition:"Level 7"}]->(Kakuna), +(Kakuna)-[:EVOLVE {condition:"Level 10"}]->(Beedrill), +(Pidgey)-[:EVOLVE {condition:"Level 18"}]->(Pidgeotto), +(Pidgeotto)-[:EVOLVE {condition:"Level 36"}]->(Pidgeot), +(Rattata)-[:EVOLVE {condition:"Level 20"}]->(Raticate), +(Spearow)-[:EVOLVE {condition:"Level 20"}]->(Fearow), +(Ekans)-[:EVOLVE {condition:"Level 22"}]->(Arbok), +(Pikachu)-[:EVOLVE {condition:"Thunder Stone"}]->(Raichu), +(Sandshrew)-[:EVOLVE {condition:"Level 22"}]->(Sandslash), +(NidoranF)-[:EVOLVE {condition:"Level 16"}]->(Nidorina), +(Nidorina)-[:EVOLVE {condition:"Moon Stone"}]->(Nidoqueen), +(NidoranM)-[:EVOLVE {condition:"Level 16"}]->(Nidorino), +(Nidorino)-[:EVOLVE {condition:"Moon Stone"}]->(Nidoking), +(Clefairy)-[:EVOLVE {condition:"Moon Stone"}]->(Clefable), +(Vulpix)-[:EVOLVE {condition:"Fire Stone"}]->(Ninetales), +(Jigglypuff)-[:EVOLVE {condition:"Moon Stone"}]->(Wigglytuff), +(Zubat)-[:EVOLVE {condition:"Level 22"}]->(Golbat), +(Golbat)-[:EVOLVE {condition:"Friendship"}]->(Crobat), +(Oddish)-[:EVOLVE {condition:"Level 21"}]->(Gloom), +(Gloom)-[:EVOLVE {condition:"Leaf Stone"}]->(Vileplume), +(Gloom)-[:EVOLVE {condition:"Sun Stone"}]->(Bellossom), +(Paras)-[:EVOLVE {condition:"Level 24"}]->(Parasect), +(Venonat)-[:EVOLVE {condition:"Level 31"}]->(Venomoth), +(Diglett)-[:EVOLVE {condition:"Level 26"}]->(Dugtrio), +(Meowth)-[:EVOLVE {condition:"Level 28"}]->(Persian), +(Psyduck)-[:EVOLVE {condition:"Level 33"}]->(Golduck), +(Mankey)-[:EVOLVE {condition:"Level 28"}]->(Primeape), +(Growlithe)-[:EVOLVE {condition:"Fire Stone"}]->(Arcanine), +(Poliwag)-[:EVOLVE {condition:"Level 25"}]->(Poliwhirl), +(Poliwhirl)-[:EVOLVE {condition:"Water Stone"}]->(Poliwrath), +(Poliwhirl)-[:EVOLVE {condition:"Trade holding King's Rock"}]->(Politoed), +(Abra)-[:EVOLVE {condition:"Level 16"}]->(Kadabra), +(Kadabra)-[:EVOLVE {condition:"Trade"}]->(Alakazam), +(Machop)-[:EVOLVE {condition:"Level 28"}]->(Machoke), +(Machoke)-[:EVOLVE {condition:"Trade"}]->(Machamp), +(Bellsprout)-[:EVOLVE {condition:"Level 21"}]->(Weepinbell), +(Weepinbell)-[:EVOLVE {condition:"Leaf Stone"}]->(Victreebel), +(Tentacool)-[:EVOLVE {condition:"Level 30"}]->(Tentacruel), +(Geodude)-[:EVOLVE {condition:"Level 25"}]->(Graveler), +(Graveler)-[:EVOLVE {condition:"Trade"}]->(Golem), +(Ponyta)-[:EVOLVE {condition:"Level 40"}]->(Rapidash), +(Slowpoke)-[:EVOLVE {condition:"Level 37"}]->(Slowbro), +(Slowpoke)-[:EVOLVE {condition:"Trade holding King's Rock"}]->(Slowking), +(Magnemite)-[:EVOLVE {condition:"Level 30"}]->(Magneton), +(Magneton)-[:EVOLVE {condition:"Level up in a special magnetic field"}]->(Magnezone), +(Doduo)-[:EVOLVE {condition:"Level 31"}]->(Dodrio), +(Seel)-[:EVOLVE {condition:"Level 34"}]->(Dewgong), +(Grimer)-[:EVOLVE {condition:"Level 38"}]->(Muk), +(Shellder)-[:EVOLVE {condition:"Water Stone"}]->(Cloyster), +(Gastly)-[:EVOLVE {condition:"Level 25"}]->(Haunter), +(Haunter)-[:EVOLVE {condition:"Trade"}]->(Gengar), +(Onix)-[:EVOLVE {condition:"Trade holding Metal Coat"}]->(Steelix), +(Drowzee)-[:EVOLVE {condition:"Level 26"}]->(Hypno), +(Krabby)-[:EVOLVE {condition:"Level 28"}]->(Kingler), +(Voltorb)-[:EVOLVE {condition:"Level 30"}]->(Electrode), +(Exeggcute)-[:EVOLVE {condition:"Leaf Stone"}]->(Exeggutor), +(Cubone)-[:EVOLVE {condition:"Level 28"}]->(Marowak), +(Lickitung)-[:EVOLVE {condition:"Level up knowing Rollout"}]->(Lickilicky), +(Koffing)-[:EVOLVE {condition:"Level 35"}]->(Weezing), +(Rhyhorn)-[:EVOLVE {condition:"Level 42"}]->(Rhydon), +(Rhydon)-[:EVOLVE {condition:"Trade holding Protector"}]->(Rhyperior), +(Chansey)-[:EVOLVE {condition:"Friendship"}]->(Blissey), +(Tangela)-[:EVOLVE {condition:"Level up knowing Ancient Power"}]->(Tangrowth), +(Horsea)-[:EVOLVE {condition:"Level 32"}]->(Seadra), +(Seadra)-[:EVOLVE {condition:"Trade holding Dragon Scale"}]->(Kingdra), +(Goldeen)-[:EVOLVE {condition:"Level 33"}]->(Seaking), +(Staryu)-[:EVOLVE {condition:"Water Stone"}]->(Starmie), +(Scyther)-[:EVOLVE {condition:"Trade holding Metal Coat"}]->(Scizor), +(Electabuzz)-[:EVOLVE {condition:"Trade holding Electirizer"}]->(Electivire), +(Magmar)-[:EVOLVE {condition:"Trade holding Magmarizer"}]->(Magmortar), +(Magikarp)-[:EVOLVE {condition:"Level 20"}]->(Gyarados), +(Eevee)-[:EVOLVE {condition:"Water Stone"}]->(Vaporeon), +(Eevee)-[:EVOLVE {condition:"Thunder Stone"}]->(Jolteon), +(Eevee)-[:EVOLVE {condition:"Fire Stone"}]->(Flareon), +(Eevee)-[:EVOLVE {condition:"Friendship (day)Level up with Sun ShardXD"}]->(Espeon), +(Eevee)-[:EVOLVE {condition:"Friendship (night)Level up with Moon ShardXD"}]->(Umbreon), +(Eevee)-[:EVOLVE {condition:"Level up near Moss Rock"}]->(Leafeon), +(Eevee)-[:EVOLVE {condition:"Level up near Ice Rock"}]->(Glaceon), +(Eevee)-[:EVOLVE {condition:"Level up with two hearts of Affectionand know a Fairy-type move"}]->(Sylveon), +(Porygon)-[:EVOLVE {condition:"Trade holding Up-Grade"}]->(Porygon2), +(Omanyte)-[:EVOLVE {condition:"Level 40"}]->(Omastar), +(Kabuto)-[:EVOLVE {condition:"Level 40"}]->(Kabutops), +(Dratini)-[:EVOLVE {condition:"Level 30"}]->(Dragonair), +(Dragonair)-[:EVOLVE {condition:"Level 55"}]->(Dragonite), +(Chikorita)-[:EVOLVE {condition:"Level 16"}]->(Bayleef), +(Bayleef)-[:EVOLVE {condition:"Level 32"}]->(Meganium), +(Cyndaquil)-[:EVOLVE {condition:"Level 14"}]->(Quilava), +(Quilava)-[:EVOLVE {condition:"Level 36"}]->(Typhlosion), +(Totodile)-[:EVOLVE {condition:"Level 18"}]->(Croconaw), +(Croconaw)-[:EVOLVE {condition:"Level 30"}]->(Feraligatr), +(Sentret)-[:EVOLVE {condition:"Level 15"}]->(Furret), +(Hoothoot)-[:EVOLVE {condition:"Level 20"}]->(Noctowl), +(Ledyba)-[:EVOLVE {condition:"Level 18"}]->(Ledian), +(Spinarak)-[:EVOLVE {condition:"Level 22"}]->(Ariados), +(Chinchou)-[:EVOLVE {condition:"Level 27"}]->(Lanturn), +(Pichu)-[:EVOLVE {condition:"Friendship"}]->(Pikachu), +(Cleffa)-[:EVOLVE {condition:"Friendship"}]->(Clefairy), +(Igglybuff)-[:EVOLVE {condition:"Friendship"}]->(Jigglypuff), +(Togepi)-[:EVOLVE {condition:"Friendship"}]->(Togetic), +(Togetic)-[:EVOLVE {condition:"Shiny Stone"}]->(Togekiss), +(Natu)-[:EVOLVE {condition:"Level 25"}]->(Xatu), +(Mareep)-[:EVOLVE {condition:"Level 15"}]->(Flaaffy), +(Flaaffy)-[:EVOLVE {condition:"Level 30"}]->(Ampharos), +(Marill)-[:EVOLVE {condition:"Level 18"}]->(Azumarill), +(Hoppip)-[:EVOLVE {condition:"Level 18"}]->(Skiploom), +(Skiploom)-[:EVOLVE {condition:"Level 27"}]->(Jumpluff), +(Aipom)-[:EVOLVE {condition:"Level up knowing Double Hit"}]->(Ambipom), +(Sunkern)-[:EVOLVE {condition:"Sun Stone"}]->(Sunflora), +(Yanma)-[:EVOLVE {condition:"Level up knowing Ancient Power"}]->(Yanmega), +(Wooper)-[:EVOLVE {condition:"Level 20"}]->(Quagsire), +(Murkrow)-[:EVOLVE {condition:"Dusk Stone"}]->(Honchkrow), +(Misdreavus)-[:EVOLVE {condition:"Dusk Stone"}]->(Mismagius), +(Pineco)-[:EVOLVE {condition:"Level 31"}]->(Forretress), +(Gligar)-[:EVOLVE {condition:"Level up holding Razor Fang at night"}]->(Gliscor), +(Snubbull)-[:EVOLVE {condition:"Level 23"}]->(Granbull), +(Sneasel)-[:EVOLVE {condition:"Level up holding Razor Claw at night"}]->(Weavile), +(Teddiursa)-[:EVOLVE {condition:"Level 30"}]->(Ursaring), +(Slugma)-[:EVOLVE {condition:"Level 38"}]->(Magcargo), +(Swinub)-[:EVOLVE {condition:"Level 33"}]->(Piloswine), +(Piloswine)-[:EVOLVE {condition:"Level up knowing Ancient Power"}]->(Mamoswine), +(Remoraid)-[:EVOLVE {condition:"Level 25"}]->(Octillery), +(Houndour)-[:EVOLVE {condition:"Level 24"}]->(Houndoom), +(Phanpy)-[:EVOLVE {condition:"Level 25"}]->(Donphan), +(Porygon2)-[:EVOLVE {condition:"Trade holding Dubious Disc"}]->(PorygonZ), +(Tyrogue)-[:EVOLVE {condition:"Level 20 (Attack > Defense)"}]->(Hitmonlee), +(Tyrogue)-[:EVOLVE {condition:"Level 20 (Attack < Defense)"}]->(Hitmonchan), +(Tyrogue)-[:EVOLVE {condition:"Level 20 (Attack = Defense)"}]->(Hitmontop), +(Smoochum)-[:EVOLVE {condition:"Level 30"}]->(Jynx), +(Elekid)-[:EVOLVE {condition:"Level 30"}]->(Electabuzz), +(Magby)-[:EVOLVE {condition:"Level 30"}]->(Magmar), +(Larvitar)-[:EVOLVE {condition:"Level 30"}]->(Pupitar), +(Pupitar)-[:EVOLVE {condition:"Level 55"}]->(Tyranitar), +(Treecko)-[:EVOLVE {condition:"Level 16"}]->(Grovyle), +(Grovyle)-[:EVOLVE {condition:"Level 36"}]->(Sceptile), +(Torchic)-[:EVOLVE {condition:"Level 16"}]->(Combusken), +(Combusken)-[:EVOLVE {condition:"Level 36"}]->(Blaziken), +(Mudkip)-[:EVOLVE {condition:"Level 16"}]->(Marshtomp), +(Marshtomp)-[:EVOLVE {condition:"Level 36"}]->(Swampert), +(Poochyena)-[:EVOLVE {condition:"Level 18"}]->(Mightyena), +(Zigzagoon)-[:EVOLVE {condition:"Level 20"}]->(Linoone), +(Wurmple)-[:EVOLVE {condition:"Level 7"}]->(Silcoon), +(Wurmple)-[:EVOLVE {condition:"Level 7"}]->(Cascoon), +(Silcoon)-[:EVOLVE {condition:"Level 10"}]->(Beautifly), +(Cascoon)-[:EVOLVE {condition:"Level 10"}]->(Cascoon), +(Lotad)-[:EVOLVE {condition:"Level 14"}]->(Lombre), +(Lombre)-[:EVOLVE {condition:"Water Stone"}]->(Ludicolo), +(Seedot)-[:EVOLVE {condition:"Level 14"}]->(Nuzleaf), +(Nuzleaf)-[:EVOLVE {condition:"Leaf Stone"}]->(Shiftry), +(Taillow)-[:EVOLVE {condition:"Level 22"}]->(Swellow), +(Wingull)-[:EVOLVE {condition:"Level 25"}]->(Pelipper), +(Ralts)-[:EVOLVE {condition:"Level 20"}]->(Kirlia), +(Kirlia)-[:EVOLVE {condition:"Level 30"}]->(Gardevoir), +(Kirlia)-[:EVOLVE {condition:"Dawn Stone (male)"}]->(Gallade), +(Surskit)-[:EVOLVE {condition:"Level 22"}]->(Masquerain), +(Shroomish)-[:EVOLVE {condition:"Level 23"}]->(Breloom), +(Slakoth)-[:EVOLVE {condition:"Level 18"}]->(Vigoroth), +(Vigoroth)-[:EVOLVE {condition:"Level 36"}]->(Slaking), +(Nincada)-[:EVOLVE {condition:"Level 20"}]->(Ninjask), +(Nincada)-[:EVOLVE {condition:"Free spaceAdditional Poké Ball"}]->(Shedinja), +(Whismur)-[:EVOLVE {condition:"Level 20"}]->(Loudred), +(Loudred)-[:EVOLVE {condition:"Level 40"}]->(Exploud), +(Makuhita)-[:EVOLVE {condition:"Level 24"}]->(Hariyama), +(Azurill)-[:EVOLVE {condition:"Friendship"}]->(Marill), +(Nosepass)-[:EVOLVE {condition:"Level up in a special magnetic field"}]->(Probopass), +(Skitty)-[:EVOLVE {condition:"Moon Stone"}]->(Delcatty), +(Aron)-[:EVOLVE {condition:"Level 32"}]->(Lairon), +(Lairon)-[:EVOLVE {condition:"Level 42"}]->(Aggron), +(Meditite)-[:EVOLVE {condition:"Level 37"}]->(Medicham), +(Electrike)-[:EVOLVE {condition:"Level 26"}]->(Manectric), +(Roselia)-[:EVOLVE {condition:"Shiny Stone"}]->(Roserade), +(Gulpin)-[:EVOLVE {condition:"Level 26"}]->(Swalot), +(Carvanha)-[:EVOLVE {condition:"Level 30"}]->(Sharpedo), +(Wailmer)-[:EVOLVE {condition:"Level 40"}]->(Wailord), +(Numel)-[:EVOLVE {condition:"Level 33"}]->(Camerupt), +(Spoink)-[:EVOLVE {condition:"Level 32"}]->(Grumpig), +(Trapinch)-[:EVOLVE {condition:"Level 35"}]->(Vibrava), +(Vibrava)-[:EVOLVE {condition:"Level 45"}]->(Flygon), +(Cacnea)-[:EVOLVE {condition:"Level 32"}]->(Cacturne), +(Swablu)-[:EVOLVE {condition:"Level 35"}]->(Altaria), +(Barboach)-[:EVOLVE {condition:"Level 30"}]->(Whiscash), +(Corphish)-[:EVOLVE {condition:"Level 30"}]->(Crawdaunt), +(Baltoy)-[:EVOLVE {condition:"Level 36"}]->(Claydol), +(Lileep)-[:EVOLVE {condition:"Level 40"}]->(Cradily), +(Anorith)-[:EVOLVE {condition:"Level 40"}]->(Armaldo), +(Feebas)-[:EVOLVE {condition:"Level up with maximum BeautyTrade holding Prism Scale"}]->(Milotic), +(Shuppet)-[:EVOLVE {condition:"Level 37"}]->(Banette), +(Duskull)-[:EVOLVE {condition:"Level 37"}]->(Dusclops), +(Dusclops)-[:EVOLVE {condition:"Trade holding Reaper Cloth"}]->(Dusknoir), +(Wynaut)-[:EVOLVE {condition:"Level 15"}]->(Wobbuffet), +(Snorunt)-[:EVOLVE {condition:"Level 42"}]->(Glalie), +(Snorunt)-[:EVOLVE {condition:"Dawn Stone (female)"}]->(Froslass), +(Spheal)-[:EVOLVE {condition:"Level 32"}]->(Sealeo), +(Sealeo)-[:EVOLVE {condition:"Level 44"}]->(Walrein), +(Clamperl)-[:EVOLVE {condition:"Trade holding Deep Sea Tooth"}]->(Huntail), +(Clamperl)-[:EVOLVE {condition:"Trade holding Deep Sea Scale"}]->(Gorebyss), +(Bagon)-[:EVOLVE {condition:"Level 30"}]->(Shelgon), +(Shelgon)-[:EVOLVE {condition:"Level 50"}]->(Salamence), +(Beldum)-[:EVOLVE {condition:"Level 20"}]->(Metang), +(Metang)-[:EVOLVE {condition:"Level 45"}]->(Metagross), +(Turtwig)-[:EVOLVE {condition:"Level 18"}]->(Grotle), +(Grotle)-[:EVOLVE {condition:"Level 32"}]->(Torterra), +(Chimchar)-[:EVOLVE {condition:"Level 14"}]->(Monferno), +(Monferno)-[:EVOLVE {condition:"Level 36"}]->(Infernape), +(Piplup)-[:EVOLVE {condition:"Level 16"}]->(Prinplup), +(Prinplup)-[:EVOLVE {condition:"Level 36"}]->(Empoleon), +(Starly)-[:EVOLVE {condition:"Level 14"}]->(Staravia), +(Staravia)-[:EVOLVE {condition:"Level 34"}]->(Staraptor), +(Bidoof)-[:EVOLVE {condition:"Level 15"}]->(Bibarel), +(Kricketot)-[:EVOLVE {condition:"Level 10"}]->(Kricketune), +(Shinx)-[:EVOLVE {condition:"Level 15"}]->(Luxio), +(Luxio)-[:EVOLVE {condition:"Level 30"}]->(Luxray), +(Budew)-[:EVOLVE {condition:"Friendship (day)"}]->(Roselia), +(Cranidos)-[:EVOLVE {condition:"Level 30"}]->(Rampardos), +(Shieldon)-[:EVOLVE {condition:"Level 30"}]->(Bastiodon), +(Burmy)-[:EVOLVE {condition:"Level 20 (female, Plant Cloak)"}]->(Wormadam), +(Burmy)-[:EVOLVE {condition:"Level 20 (male)"}]->(Mothim), +(Combee)-[:EVOLVE {condition:"Level 21 (female)"}]->(Vespiquen), +(Buizel)-[:EVOLVE {condition:"Level 26"}]->(Floatzel), +(Cherubi)-[:EVOLVE {condition:"Level 25"}]->(Cherrim), +(Shellos)-[:EVOLVE {condition:"Level 30"}]->(Gastrodon), +(Drifloon)-[:EVOLVE {condition:"Level 28"}]->(Drifblim), +(Buneary)-[:EVOLVE {condition:"Friendship"}]->(Lopunny), +(Glameow)-[:EVOLVE {condition:"Level 38"}]->(Purugly), +(Chingling)-[:EVOLVE {condition:"Friendship (night)"}]->(Chimecho), +(Stunky)-[:EVOLVE {condition:"Level 34"}]->(Skuntank), +(Bronzor)-[:EVOLVE {condition:"Level 33"}]->(Bronzong), +(Bonsly)-[:EVOLVE {condition:"Level up knowing Mimic"}]->(Sudowoodo), +(MimeJr)-[:EVOLVE {condition:"Level up knowing Mimic"}]->(MrMime), +(Happiny)-[:EVOLVE {condition:"Level up holding Oval Stone (day)"}]->(Chansey), +(Gible)-[:EVOLVE {condition:"Level 24"}]->(Gabite), +(Gabite)-[:EVOLVE {condition:"Level 48"}]->(Garchomp), +(Munchlax)-[:EVOLVE {condition:"Friendship"}]->(Snorlax), +(Riolu)-[:EVOLVE {condition:"Friendship (day)"}]->(Lucario), +(Hippopotas)-[:EVOLVE {condition:"Level 34"}]->(Hippowdon), +(Skorupi)-[:EVOLVE {condition:"Level 40"}]->(Drapion), +(Croagunk)-[:EVOLVE {condition:"Level 37"}]->(Toxicroak), +(Finneon)-[:EVOLVE {condition:"Level 31"}]->(Lumineon), +(Mantyke)-[:EVOLVE {condition:"Level up with Remoraid in party"}]->(Mantine), +(Snover)-[:EVOLVE {condition:"Level 40"}]->(Abomasnow), +(Snivy)-[:EVOLVE {condition:"Level 17"}]->(Servine), +(Servine)-[:EVOLVE {condition:"Level 36"}]->(Serperior), +(Tepig)-[:EVOLVE {condition:"Level 17"}]->(Pignite), +(Pignite)-[:EVOLVE {condition:"Level 36"}]->(Emboar), +(Oshawott)-[:EVOLVE {condition:"Level 17"}]->(Dewott), +(Dewott)-[:EVOLVE {condition:"Level 36"}]->(Samurott), +(Patrat)-[:EVOLVE {condition:"Level 20"}]->(Watchog), +(Lillipup)-[:EVOLVE {condition:"Level 16"}]->(Herdier), +(Herdier)-[:EVOLVE {condition:"Level 32"}]->(Stoutland), +(Purrloin)-[:EVOLVE {condition:"Level 20"}]->(Liepard), +(Pansage)-[:EVOLVE {condition:"Leaf Stone"}]->(Simisage), +(Pansear)-[:EVOLVE {condition:"Fire Stone"}]->(Simisear), +(Panpour)-[:EVOLVE {condition:"Water Stone"}]->(Simipour), +(Munna)-[:EVOLVE {condition:"Moon Stone"}]->(Musharna), +(Pidove)-[:EVOLVE {condition:"Level 21"}]->(Tranquill), +(Tranquill)-[:EVOLVE {condition:"Level 32"}]->(Unfezant), +(Blitzle)-[:EVOLVE {condition:"Level 27"}]->(Zebstrika), +(Roggenrola)-[:EVOLVE {condition:"Level 25"}]->(Boldore), +(Boldore)-[:EVOLVE {condition:"Trade"}]->(Gigalith), +(Woobat)-[:EVOLVE {condition:"Friendship"}]->(Swoobat), +(Drilbur)-[:EVOLVE {condition:"Level 31"}]->(Excadrill), +(Timburr)-[:EVOLVE {condition:"Level 25"}]->(Gurdurr), +(Gurdurr)-[:EVOLVE {condition:"Trade"}]->(Conkeldurr), +(Tympole)-[:EVOLVE {condition:"Level 25"}]->(Palpitoad), +(Palpitoad)-[:EVOLVE {condition:"Level 36"}]->(Seismitoad), +(Sewaddle)-[:EVOLVE {condition:"Level 20"}]->(Swadloon), +(Swadloon)-[:EVOLVE {condition:"Friendship"}]->(Leavanny), +(Venipede)-[:EVOLVE {condition:"Level 22"}]->(Whirlipede), +(Whirlipede)-[:EVOLVE {condition:"Level 30"}]->(Scolipede), +(Cottonee)-[:EVOLVE {condition:"Sun Stone"}]->(Whimsicott), +(Petilil)-[:EVOLVE {condition:"Sun Stone"}]->(Lilligant), +(Sandile)-[:EVOLVE {condition:"Level 29"}]->(Krokorok), +(Krokorok)-[:EVOLVE {condition:"Level 40"}]->(Krookodile), +(Darumaka)-[:EVOLVE {condition:"Level 35"}]->(Darmanitan), +(Dwebble)-[:EVOLVE {condition:"Level 34"}]->(Crustle), +(Scraggy)-[:EVOLVE {condition:"Level 39"}]->(Scrafty), +(Yamask)-[:EVOLVE {condition:"Level 34"}]->(Cofagrigus), +(Tirtouga)-[:EVOLVE {condition:"Level 37"}]->(Carracosta), +(Archen)-[:EVOLVE {condition:"Level 37"}]->(Archeops), +(Trubbish)-[:EVOLVE {condition:"Level 36"}]->(Garbodor), +(Zorua)-[:EVOLVE {condition:"Level 30"}]->(Zoroark), +(Minccino)-[:EVOLVE {condition:"Shiny Stone"}]->(Cinccino), +(Gothita)-[:EVOLVE {condition:"Level 32"}]->(Gothorita), +(Gothorita)-[:EVOLVE {condition:"Level 41"}]->(Gothitelle), +(Solosis)-[:EVOLVE {condition:"Level 32"}]->(Duosion), +(Duosion)-[:EVOLVE {condition:"Level 41"}]->(Reuniclus), +(Ducklett)-[:EVOLVE {condition:"Level 35"}]->(Swanna), +(Vanillite)-[:EVOLVE {condition:"Level 35"}]->(Vanillish), +(Vanillish)-[:EVOLVE {condition:"Level 47"}]->(Vanilluxe), +(Deerling)-[:EVOLVE {condition:"Level 34"}]->(Sawsbuck), +(Karrablast)-[:EVOLVE {condition:"Trade for Shelmet"}]->(Escavalier), +(Foongus)-[:EVOLVE {condition:"Level 39"}]->(Amoonguss), +(Frillish)-[:EVOLVE {condition:"Level 40"}]->(Jellicent), +(Joltik)-[:EVOLVE {condition:"Level 36"}]->(Galvantula), +(Ferroseed)-[:EVOLVE {condition:"Level 40"}]->(Ferrothorn), +(Klink)-[:EVOLVE {condition:"Level 38"}]->(Klang), +(Klang)-[:EVOLVE {condition:"Level 49"}]->(Klinklang), +(Tynamo)-[:EVOLVE {condition:"Level 39"}]->(Eelektrik), +(Eelektrik)-[:EVOLVE {condition:"Thunder Stone"}]->(Eelektross), +(Elgyem)-[:EVOLVE {condition:"Level 42"}]->(Beheeyem), +(Litwick)-[:EVOLVE {condition:"Level 41"}]->(Lampent), +(Lampent)-[:EVOLVE {condition:"Dusk Stone"}]->(Chandelure), +(Axew)-[:EVOLVE {condition:"Level 38"}]->(Fraxure), +(Fraxure)-[:EVOLVE {condition:"Level 48"}]->(Haxorus), +(Cubchoo)-[:EVOLVE {condition:"Level 37"}]->(Beartic), +(Shelmet)-[:EVOLVE {condition:"Trade for Karrablast"}]->(Accelgor), +(Mienfoo)-[:EVOLVE {condition:"Level 50"}]->(Mienshao), +(Golett)-[:EVOLVE {condition:"Level 43"}]->(Golurk), +(Pawniard)-[:EVOLVE {condition:"Level 52"}]->(Bisharp), +(Rufflet)-[:EVOLVE {condition:"Level 54"}]->(Braviary), +(Vullaby)-[:EVOLVE {condition:"Level 54"}]->(Mandibuzz), +(Deino)-[:EVOLVE {condition:"Level 50"}]->(Zweilous), +(Zweilous)-[:EVOLVE {condition:"Level 64"}]->(Hydreigon), +(Larvesta)-[:EVOLVE {condition:"Level 59"}]->(Volcarona), +(Chespin)-[:EVOLVE {condition:"Level 16"}]->(Quilladin), +(Quilladin)-[:EVOLVE {condition:"Level 36"}]->(Chesnaught), +(Fennekin)-[:EVOLVE {condition:"Level 16"}]->(Braixen), +(Braixen)-[:EVOLVE {condition:"Level 36"}]->(Delphox), +(Froakie)-[:EVOLVE {condition:"Level 16"}]->(Frogadier), +(Frogadier)-[:EVOLVE {condition:"Level 36"}]->(Greninja), +(Bunnelby)-[:EVOLVE {condition:"Level 20"}]->(Diggersby), +(Fletchling)-[:EVOLVE {condition:"Level 17"}]->(Fletchinder), +(Fletchinder)-[:EVOLVE {condition:"Level 35"}]->(Talonflame), +(Scatterbug)-[:EVOLVE {condition:"Level 9"}]->(Spewpa), +(Spewpa)-[:EVOLVE {condition:"Level 12"}]->(Vivillon), +(Litleo)-[:EVOLVE {condition:"Level 35"}]->(Pyroar), +(Flabebe)-[:EVOLVE {condition:"Level 19"}]->(Floette), +(Floette)-[:EVOLVE {condition:"Shiny Stone"}]->(Florges), +(Skiddo)-[:EVOLVE {condition:"Level 32"}]->(Gogoat), +(Pancham)-[:EVOLVE {condition:"Level 32 with Dark-type in party"}]->(Pangoro), +(Espurr)-[:EVOLVE {condition:"Level 25"}]->(Meowstic), +(Honedge)-[:EVOLVE {condition:"Level 35"}]->(Doublade), +(Doublade)-[:EVOLVE {condition:"Dusk Stone"}]->(Aegislash), +(Spritzee)-[:EVOLVE {condition:"Trade holding Sachet"}]->(Aromatisse), +(Swirlix)-[:EVOLVE {condition:"Trade holding Whipped Dream"}]->(Slurpuff), +(Inkay)-[:EVOLVE {condition:"Level 30 with 3DS held upside down"}]->(Malamar), +(Binacle)-[:EVOLVE {condition:"Level 39"}]->(Barbaracle), +(Skrelp)-[:EVOLVE {condition:"Level 48"}]->(Dragalge), +(Clauncher)-[:EVOLVE {condition:"Level 37"}]->(Clawitzer), +(Helioptile)-[:EVOLVE {condition:"Sun Stone"}]->(Heliolisk), +(Tyrunt)-[:EVOLVE {condition:"Level 39 (day)"}]->(Tyrantrum), +(Amaura)-[:EVOLVE {condition:"Level 39 (night)"}]->(Aurorus), +(Goomy)-[:EVOLVE {condition:"Level 40"}]->(Sliggoo), +(Sliggoo)-[:EVOLVE {condition:"Level 50 in rain or fog"}]->(Goodra), +(Phantump)-[:EVOLVE {condition:"Trade"}]->(Trevenant), +(Pumpkaboo)-[:EVOLVE {condition:"Trade"}]->(Gourgeist), +(Bergmite)-[:EVOLVE {condition:"Level 37"}]->(Avalugg), +(Noibat)-[:EVOLVE {condition:"Level 48"}]->(Noivern), +(Rowlet)-[:EVOLVE {condition:"Level 17"}]->(Dartrix), +(Dartrix)-[:EVOLVE {condition:"Level 34"}]->(Decidueye), +(Litten)-[:EVOLVE {condition:"Level 17"}]->(Torracat), +(Torracat)-[:EVOLVE {condition:"Level 34"}]->(Incineroar), +(Popplio)-[:EVOLVE {condition:"Level 17"}]->(Brionne), +(Brionne)-[:EVOLVE {condition:"Level 34"}]->(Primarina), +(Pikipek)-[:EVOLVE {condition:"Level 14"}]->(Trumbeak), +(Trumbeak)-[:EVOLVE {condition:"Level 28"}]->(Toucannon), +(Yungoos)-[:EVOLVE {condition:"Level 20 (day)"}]->(Gumshoos), +(Grubbin)-[:EVOLVE {condition:"Level 20"}]->(Charjabug), +(Charjabug)-[:EVOLVE {condition:"Level up in a special magnetic field"}]->(Vikavolt), +(Crabrawler)-[:EVOLVE {condition:"Level up at Mount Lanakila"}]->(Crabominable), +(Cutiefly)-[:EVOLVE {condition:"Level 25"}]->(Ribombee), +(Rockruff)-[:EVOLVE {condition:"Level 25 (Pokémon Sun and Ultra Sun; day)"}]->(Lycanroc), +(Mareanie)-[:EVOLVE {condition:"Level 38"}]->(Toxapex), +(Mudbray)-[:EVOLVE {condition:"Level 30"}]->(Mudsdale), +(Dewpider)-[:EVOLVE {condition:"Level 22"}]->(Araquanid), +(Fomantis)-[:EVOLVE {condition:"Level 34 (day)"}]->(Lurantis), +(Morelull)-[:EVOLVE {condition:"Level 24"}]->(Shiinotic), +(Salandit)-[:EVOLVE {condition:"Level 33 (female)"}]->(Salazzle), +(Stufful)-[:EVOLVE {condition:"Level 27"}]->(Bewear), +(Bounsweet)-[:EVOLVE {condition:"Level 18"}]->(Steenee), +(Steenee)-[:EVOLVE {condition:"Level up knowing Stomp"}]->(Tsareena), +(Wimpod)-[:EVOLVE {condition:"Level 30"}]->(Golisopod), +(Sandygast)-[:EVOLVE {condition:"Level 42"}]->(Palossand), +(TypeNull)-[:EVOLVE {condition:"Friendship"}]->(Silvally), +(Jangmoo)-[:EVOLVE {condition:"Level 35"}]->(Hakamoo), +(Hakamoo)-[:EVOLVE {condition:"Level 45"}]->(Kommoo), +(Cosmog)-[:EVOLVE {condition:"Level 43"}]->(Cosmoem), +(Cosmoem)-[:EVOLVE {condition:"Level 53 (Pokémon Sun and Ultra Sun)"}]->(Solgaleo), +(Cosmoem)-[:EVOLVE {condition:"Level 53 (Pokémon Moon and Ultra Moon)"}]->(Lunala), +(Poipole)-[:EVOLVE {condition:"Level up knowing Dragon Pulse"}]->(Naganadel), +(Meltan)-[:EVOLVE {condition:"400 Meltan Candy in Pokémon Go"}]->(Melmetal) + + +CREATE +(Venusaur)-[:MEGA_EVOLVE {megaStone:"Venusaurite", image:"https://cdn.bulbagarden.net/upload/thumb/7/73/003Venusaur-Mega.png/150px-003Venusaur-Mega.png"}]->(MegaVenusaur), +(Charizard)-[:MEGA_EVOLVE {megaStone:"Charizardite X", image:"https://cdn.bulbagarden.net/upload/thumb/3/36/006Charizard-Mega_X.png/150px-006Charizard-Mega_X.png"}]->(MegaCharizardX), +(Charizard)-[:MEGA_EVOLVE {megaStone:"Charizardite Y", image:"https://cdn.bulbagarden.net/upload/thumb/f/fd/006Charizard-Mega_Y.png/150px-006Charizard-Mega_Y.png"}]->(MegaCharizardY), +(Blastoise)-[:MEGA_EVOLVE {megaStone:"Blastoisinite", image:"https://cdn.bulbagarden.net/upload/thumb/8/85/009Blastoise-Mega.png/150px-009Blastoise-Mega.png"}]->(MegaBlastoise), +(Beedrill)-[:MEGA_EVOLVE {megaStone:"Beedrillite", image:"https://cdn.bulbagarden.net/upload/thumb/7/76/015Beedrill-Mega.png/150px-015Beedrill-Mega.png"}]->(MegaBeedrill), +(Pidgeot)-[:MEGA_EVOLVE {megaStone:"Pidgeotite", image:"https://cdn.bulbagarden.net/upload/thumb/7/71/018Pidgeot-Mega.png/150px-018Pidgeot-Mega.png"}]->(MegaPidgeot), +(Alakazam)-[:MEGA_EVOLVE {megaStone:"Alakazite", image:"https://cdn.bulbagarden.net/upload/thumb/3/34/065Alakazam-Mega.png/150px-065Alakazam-Mega.png"}]->(MegaAlakazam), +(Slowbro)-[:MEGA_EVOLVE {megaStone:"Slowbronite", image:"https://cdn.bulbagarden.net/upload/thumb/6/69/080Slowbro-Mega.png/150px-080Slowbro-Mega.png"}]->(MegaSlowbro), +(Gengar)-[:MEGA_EVOLVE {megaStone:"Gengarite", image:"https://cdn.bulbagarden.net/upload/thumb/8/80/094Gengar-Mega.png/150px-094Gengar-Mega.png"}]->(MegaGengar), +(Kangaskhan)-[:MEGA_EVOLVE {megaStone:"Kangaskhanite", image:"https://cdn.bulbagarden.net/upload/thumb/e/e3/115Kangaskhan-Mega.png/150px-115Kangaskhan-Mega.png"}]->(MegaKangaskhan), +(Pinsir)-[:MEGA_EVOLVE {megaStone:"Pinsirite", image:"https://cdn.bulbagarden.net/upload/thumb/7/74/127Pinsir-Mega.png/150px-127Pinsir-Mega.png"}]->(MegaPinsir), +(Gyarados)-[:MEGA_EVOLVE {megaStone:"Gyaradosite", image:"https://cdn.bulbagarden.net/upload/thumb/3/30/130Gyarados-Mega.png/150px-130Gyarados-Mega.png"}]->(MegaGyarados), +(Aerodactyl)-[:MEGA_EVOLVE {megaStone:"Aerodactylite", image:"https://cdn.bulbagarden.net/upload/thumb/a/a5/142Aerodactyl-Mega.png/150px-142Aerodactyl-Mega.png"}]->(MegaAerodactyl), +(Mewtwo)-[:MEGA_EVOLVE {megaStone:"Mewtwonite X", image:"https://cdn.bulbagarden.net/upload/thumb/7/7f/150Mewtwo-Mega_X.png/150px-150Mewtwo-Mega_X.png"}]->(MegaMewtwoX), +(Mewtwo)-[:MEGA_EVOLVE {megaStone:"Mewtwonite Y", image:"https://cdn.bulbagarden.net/upload/thumb/5/5f/150Mewtwo-Mega_Y.png/150px-150Mewtwo-Mega_Y.png"}]->(MegaMewtwoY), +(Ampharos)-[:MEGA_EVOLVE {megaStone:"Ampharosite", image:"https://cdn.bulbagarden.net/upload/thumb/a/a2/181Ampharos-Mega.png/150px-181Ampharos-Mega.png"}]->(MegaAmpharos), +(Steelix)-[:MEGA_EVOLVE {megaStone:"Steelixite", image:"https://cdn.bulbagarden.net/upload/thumb/1/1b/208Steelix-Mega.png/150px-208Steelix-Mega.png"}]->(MegaSteelix), +(Scizor)-[:MEGA_EVOLVE {megaStone:"Scizorite", image:"https://cdn.bulbagarden.net/upload/thumb/8/80/212Scizor-Mega.png/150px-212Scizor-Mega.png"}]->(MegaScizor), +(Heracross)-[:MEGA_EVOLVE {megaStone:"Heracronite", image:"https://cdn.bulbagarden.net/upload/thumb/d/da/214Heracross-Mega.png/150px-214Heracross-Mega.png"}]->(MegaHeracross), +(Houndoom)-[:MEGA_EVOLVE {megaStone:"Houndoominite", image:"https://cdn.bulbagarden.net/upload/thumb/3/39/229Houndoom-Mega.png/150px-229Houndoom-Mega.png"}]->(MegaHoundoom), +(Tyranitar)-[:MEGA_EVOLVE {megaStone:"Tyranitarite", image:"https://cdn.bulbagarden.net/upload/thumb/0/0d/248Tyranitar-Mega.png/150px-248Tyranitar-Mega.png"}]->(MegaTyranitar), +(Sceptile)-[:MEGA_EVOLVE {megaStone:"Sceptilite", image:"https://cdn.bulbagarden.net/upload/thumb/6/67/254Sceptile-Mega.png/150px-254Sceptile-Mega.png"}]->(MegaSceptile), +(Blaziken)-[:MEGA_EVOLVE {megaStone:"Blazikenite", image:"https://cdn.bulbagarden.net/upload/thumb/f/fa/257Blaziken-Mega.png/150px-257Blaziken-Mega.png"}]->(MegaBlaziken), +(Swampert)-[:MEGA_EVOLVE {megaStone:"Swampertite", image:"https://cdn.bulbagarden.net/upload/thumb/9/98/260Swampert-Mega.png/150px-260Swampert-Mega.png"}]->(MegaSwampert), +(Gardevoir)-[:MEGA_EVOLVE {megaStone:"Gardevoirite", image:"https://cdn.bulbagarden.net/upload/thumb/2/20/282Gardevoir-Mega.png/150px-282Gardevoir-Mega.png"}]->(MegaGardevoir), +(Sableye)-[:MEGA_EVOLVE {megaStone:"Sablenite", image:"https://cdn.bulbagarden.net/upload/thumb/e/e9/302Sableye-Mega.png/150px-302Sableye-Mega.png"}]->(MegaSableye), +(Mawile)-[:MEGA_EVOLVE {megaStone:"Mawilite", image:"https://cdn.bulbagarden.net/upload/thumb/8/86/303Mawile-Mega.png/150px-303Mawile-Mega.png"}]->(MegaMawile), +(Aggron)-[:MEGA_EVOLVE {megaStone:"Aggronite", image:"https://cdn.bulbagarden.net/upload/thumb/1/10/306Aggron-Mega.png/150px-306Aggron-Mega.png"}]->(MegaAggron), +(Medicham)-[:MEGA_EVOLVE {megaStone:"Medichamite", image:"https://cdn.bulbagarden.net/upload/thumb/c/cd/308Medicham-Mega.png/150px-308Medicham-Mega.png"}]->(MegaMedicham), +(Manectric)-[:MEGA_EVOLVE {megaStone:"Manectite", image:"https://cdn.bulbagarden.net/upload/thumb/b/bc/310Manectric-Mega.png/150px-310Manectric-Mega.png"}]->(MegaManectric), +(Sharpedo)-[:MEGA_EVOLVE {megaStone:"Sharpedonite", image:"https://cdn.bulbagarden.net/upload/thumb/3/35/319Sharpedo-Mega.png/150px-319Sharpedo-Mega.png"}]->(MegaSharpedo), +(Camerupt)-[:MEGA_EVOLVE {megaStone:"Cameruptite", image:"https://cdn.bulbagarden.net/upload/thumb/9/96/323Camerupt-Mega.png/150px-323Camerupt-Mega.png"}]->(MegaCamerupt), +(Altaria)-[:MEGA_EVOLVE {megaStone:"Altarianite", image:"https://cdn.bulbagarden.net/upload/thumb/0/08/334Altaria-Mega.png/150px-334Altaria-Mega.png"}]->(MegaAltaria), +(Banette)-[:MEGA_EVOLVE {megaStone:"Banettite", image:"https://cdn.bulbagarden.net/upload/thumb/a/a3/354Banette-Mega.png/150px-354Banette-Mega.png"}]->(MegaBanette), +(Absol)-[:MEGA_EVOLVE {megaStone:"Absolite", image:"https://cdn.bulbagarden.net/upload/thumb/f/f4/359Absol-Mega.png/150px-359Absol-Mega.png"}]->(MegaAbsol), +(Glalie)-[:MEGA_EVOLVE {megaStone:"Glalitite", image:"https://cdn.bulbagarden.net/upload/thumb/0/0d/362Glalie-Mega.png/150px-362Glalie-Mega.png"}]->(MegaGlalie), +(Salamence)-[:MEGA_EVOLVE {megaStone:"Salamencite", image:"https://cdn.bulbagarden.net/upload/thumb/f/f3/373Salamence-Mega.png/150px-373Salamence-Mega.png"}]->(MegaSalamence), +(Metagross)-[:MEGA_EVOLVE {megaStone:"Metagrossite", image:"https://cdn.bulbagarden.net/upload/thumb/8/85/376Metagross-Mega.png/150px-376Metagross-Mega.png"}]->(MegaMetagross), +(Latias)-[:MEGA_EVOLVE {megaStone:"Latiasite", image:"https://cdn.bulbagarden.net/upload/thumb/0/0f/380Latias-Mega.png/150px-380Latias-Mega.png"}]->(MegaLatias), +(Latios)-[:MEGA_EVOLVE {megaStone:"Latiosite", image:"https://cdn.bulbagarden.net/upload/thumb/a/a0/381Latios-Mega.png/150px-381Latios-Mega.png"}]->(MegaLatios), +(Rayquaza)-[:MEGA_EVOLVE {megaStone:"", image:"https://cdn.bulbagarden.net/upload/thumb/5/58/384Rayquaza-Mega.png/150px-384Rayquaza-Mega.png"}]->(MegaRayquaza), +(Lopunny)-[:MEGA_EVOLVE {megaStone:"Lopunnite", image:"https://cdn.bulbagarden.net/upload/thumb/d/dc/428Lopunny-Mega.png/150px-428Lopunny-Mega.png"}]->(MegaLopunny), +(Garchomp)-[:MEGA_EVOLVE {megaStone:"Garchompite", image:"https://cdn.bulbagarden.net/upload/thumb/b/b2/445Garchomp-Mega.png/150px-445Garchomp-Mega.png"}]->(MegaGarchomp), +(Lucario)-[:MEGA_EVOLVE {megaStone:"Lucarionite", image:"https://cdn.bulbagarden.net/upload/thumb/b/b9/448Lucario-Mega.png/150px-448Lucario-Mega.png"}]->(MegaLucario), +(Abomasnow)-[:MEGA_EVOLVE {megaStone:"Abomasite", image:"https://cdn.bulbagarden.net/upload/thumb/d/dc/460Abomasnow-Mega.png/150px-460Abomasnow-Mega.png"}]->(MegaAbomasnow), +(Gallade)-[:MEGA_EVOLVE {megaStone:"Galladite", image:"https://cdn.bulbagarden.net/upload/thumb/f/f3/475Gallade-Mega.png/150px-475Gallade-Mega.png"}]->(MegaGallade), +(Audino)-[:MEGA_EVOLVE {megaStone:"Audinite", image:"https://cdn.bulbagarden.net/upload/thumb/1/17/531Audino-Mega.png/150px-531Audino-Mega.png"}]->(MegaAudino), +(Diancie)-[:MEGA_EVOLVE {megaStone:"Diancite", image:"https://cdn.bulbagarden.net/upload/thumb/8/8f/719Diancie-Mega.png/150px-719Diancie-Mega.png"}]->(MegaDiancie) + + +CREATE +(Rattata)-[:HAS]->(RattataAlola), +(Raticate)-[:HAS]->(RaticateAlola), +(Raichu)-[:HAS]->(RaichuAlola), +(Sandshrew)-[:HAS]->(SandshrewAlola), +(Sandslash)-[:HAS]->(SandslashAlola), +(Vulpix)-[:HAS]->(VulpixAlola), +(Ninetales)-[:HAS]->(NinetalesAlola), +(Diglett)-[:HAS]->(DiglettAlola), +(Dugtrio)-[:HAS]->(DugtrioAlola), +(Meowth)-[:HAS]->(MeowthAlola), +(Persian)-[:HAS]->(PersianAlola), +(Geodude)-[:HAS]->(GeodudeAlola), +(Graveler)-[:HAS]->(GravelerAlola), +(Golem)-[:HAS]->(GolemAlola), +(Grimer)-[:HAS]->(GrimerAlola), +(Muk)-[:HAS]->(MukAlola), +(Exeggutor)-[:HAS]->(ExeggutorAlola), +(Marowak)-[:HAS]->(MarowakAlola) + + +CREATE +(Unown)-[:HAS]->(UnownUnownA), +(Unown)-[:HAS]->(UnownUnownK), +(Unown)-[:HAS]->(UnownUnownU), +(Unown)-[:HAS]->(UnownUnownB), +(Unown)-[:HAS]->(UnownUnownL), +(Unown)-[:HAS]->(UnownUnownV), +(Unown)-[:HAS]->(UnownUnownC), +(Unown)-[:HAS]->(UnownUnownM), +(Unown)-[:HAS]->(UnownUnownW), +(Unown)-[:HAS]->(UnownUnownD), +(Unown)-[:HAS]->(UnownUnownN), +(Unown)-[:HAS]->(UnownUnownX), +(Unown)-[:HAS]->(UnownUnownE), +(Unown)-[:HAS]->(UnownUnownO), +(Unown)-[:HAS]->(UnownUnownY), +(Unown)-[:HAS]->(UnownUnownF), +(Unown)-[:HAS]->(UnownUnownP), +(Unown)-[:HAS]->(UnownUnownZ), +(Unown)-[:HAS]->(UnownUnownG), +(Unown)-[:HAS]->(UnownUnownQ), +(Unown)-[:HAS]->(UnownUnown33), +(Unown)-[:HAS]->(UnownUnownH), +(Unown)-[:HAS]->(UnownUnownR), +(Unown)-[:HAS]->(UnownUnown63), +(Unown)-[:HAS]->(UnownUnownI), +(Unown)-[:HAS]->(UnownUnownS), +(Unown)-[:HAS]->(UnownUnownJ), +(Unown)-[:HAS]->(UnownUnownT), +(Castform)-[:HAS]->(CastformNormal), +(Castform)-[:HAS]->(CastformSunnyForm), +(Castform)-[:HAS]->(CastformRainyForm), +(Castform)-[:HAS]->(CastformSnowyForm), +(Deoxys)-[:HAS]->(DeoxysNormalForme), +(Deoxys)-[:HAS]->(DeoxysAttackForme), +(Deoxys)-[:HAS]->(DeoxysDefenseForme), +(Deoxys)-[:HAS]->(DeoxysSpeedForme), +(Burmy)-[:HAS]->(BurmyPlantCloak), +(Burmy)-[:HAS]->(BurmySandyCloak), +(Burmy)-[:HAS]->(BurmyTrashCloak), +(Wormadam)-[:HAS]->(WormadamPlantCloak), +(Wormadam)-[:HAS]->(WormadamSandyCloak), +(Wormadam)-[:HAS]->(WormadamTrashCloak), +(Cherrim)-[:HAS]->(CherrimOvercastForm), +(Cherrim)-[:HAS]->(CherrimSunshineForm), +(Shellos)-[:HAS]->(ShellosWestSea), +(Shellos)-[:HAS]->(ShellosEastSea), +(Gastrodon)-[:HAS]->(GastrodonWestSea), +(Gastrodon)-[:HAS]->(GastrodonEastSea), +(Rotom)-[:HAS]->(RotomRotom), +(Rotom)-[:HAS]->(RotomHeatRotom), +(Rotom)-[:HAS]->(RotomWashRotom), +(Rotom)-[:HAS]->(RotomFrostRotom), +(Rotom)-[:HAS]->(RotomFanRotom), +(Rotom)-[:HAS]->(RotomMowRotom), +(Giratina)-[:HAS]->(GiratinaAlteredForme), +(Giratina)-[:HAS]->(GiratinaOriginForme), +(Shaymin)-[:HAS]->(ShayminLandForme), +(Shaymin)-[:HAS]->(ShayminSkyForme), +(Arceus)-[:HAS]->(ArceusNormal), +(Arceus)-[:HAS]->(ArceusFire), +(Arceus)-[:HAS]->(ArceusWater), +(Arceus)-[:HAS]->(ArceusElectric), +(Arceus)-[:HAS]->(ArceusGrass), +(Arceus)-[:HAS]->(ArceusIce), +(Arceus)-[:HAS]->(ArceusFighting), +(Arceus)-[:HAS]->(ArceusPoison), +(Arceus)-[:HAS]->(ArceusGround), +(Arceus)-[:HAS]->(ArceusFlying), +(Arceus)-[:HAS]->(ArceusPsychic), +(Arceus)-[:HAS]->(ArceusBug), +(Arceus)-[:HAS]->(ArceusRock), +(Arceus)-[:HAS]->(ArceusGhost), +(Arceus)-[:HAS]->(ArceusDragon), +(Arceus)-[:HAS]->(ArceusDark), +(Arceus)-[:HAS]->(ArceusSteel), +(Arceus)-[:HAS]->(ArceusFairy), +(Basculin)-[:HAS]->(BasculinRedStripedForm), +(Basculin)-[:HAS]->(BasculinBlueStripedForm), +(Darmanitan)-[:HAS]->(DarmanitanStandardMode), +(Darmanitan)-[:HAS]->(DarmanitanZenMode), +(Deerling)-[:HAS]->(DeerlingSpringForm), +(Deerling)-[:HAS]->(DeerlingSummerForm), +(Deerling)-[:HAS]->(DeerlingAutumnForm), +(Deerling)-[:HAS]->(DeerlingWinterForm), +(Sawsbuck)-[:HAS]->(SawsbuckSpringForm), +(Sawsbuck)-[:HAS]->(SawsbuckSummerForm), +(Sawsbuck)-[:HAS]->(SawsbuckAutumnForm), +(Sawsbuck)-[:HAS]->(SawsbuckWinterForm), +(Tornadus)-[:HAS]->(TornadusIncarnateForme), +(Tornadus)-[:HAS]->(TornadusTherianForme), +(Thundurus)-[:HAS]->(ThundurusIncarnateForme), +(Thundurus)-[:HAS]->(ThundurusTherianForme), +(Reshiram)-[:HAS]->(ReshiramReshiram), +(Reshiram)-[:HAS]->(ReshiramInOverdrive), +(Zekrom)-[:HAS]->(ZekromZekrom), +(Zekrom)-[:HAS]->(ZekromInOverdrive), +(Landorus)-[:HAS]->(LandorusIncarnateForme), +(Landorus)-[:HAS]->(LandorusTherianForme), +(Kyurem)-[:HAS]->(KyuremKyurem), +(Kyurem)-[:HAS]->(KyuremWhiteKyurem), +(Kyurem)-[:HAS]->(KyuremBlackKyurem), +(Kyurem)-[:HAS]->(KyuremInOverdrive), +(Keldeo)-[:HAS]->(KeldeoOrdinaryForm), +(Keldeo)-[:HAS]->(KeldeoResoluteForm), +(Meloetta)-[:HAS]->(MeloettaAriaForme), +(Meloetta)-[:HAS]->(MeloettaPirouetteForme), +(Genesect)-[:HAS]->(GenesectNormalGenesect), +(Genesect)-[:HAS]->(GenesectShockDriveGenesect), +(Genesect)-[:HAS]->(GenesectBurnDriveGenesect), +(Genesect)-[:HAS]->(GenesectChillDriveGenesect), +(Genesect)-[:HAS]->(GenesectDouseDriveGenesect), +(Greninja)-[:HAS]->(GreninjaGreninja), +(Greninja)-[:HAS]->(GreninjaAshGreninja), +(Vivillon)-[:HAS]->(VivillonArchipelago), +(Vivillon)-[:HAS]->(VivillonContinental), +(Vivillon)-[:HAS]->(VivillonElegant), +(Vivillon)-[:HAS]->(VivillonGarden), +(Vivillon)-[:HAS]->(VivillonHighPlains), +(Vivillon)-[:HAS]->(VivillonIcySnow), +(Vivillon)-[:HAS]->(VivillonJungle), +(Vivillon)-[:HAS]->(VivillonMarine), +(Vivillon)-[:HAS]->(VivillonMeadow), +(Vivillon)-[:HAS]->(VivillonModern), +(Vivillon)-[:HAS]->(VivillonMonsoon), +(Vivillon)-[:HAS]->(VivillonOcean), +(Vivillon)-[:HAS]->(VivillonPolar), +(Vivillon)-[:HAS]->(VivillonRiver), +(Vivillon)-[:HAS]->(VivillonSandstorm), +(Vivillon)-[:HAS]->(VivillonSavanna), +(Vivillon)-[:HAS]->(VivillonSun), +(Vivillon)-[:HAS]->(VivillonTundra), +(Vivillon)-[:HAS]->(VivillonPokeBall), +(Vivillon)-[:HAS]->(VivillonFancy), +(Flabebe)-[:HAS]->(FlabebeRedFlower), +(Flabebe)-[:HAS]->(FlabebeYellowFlower), +(Flabebe)-[:HAS]->(FlabebeOrangeFlower), +(Flabebe)-[:HAS]->(FlabebeBlueFlower), +(Flabebe)-[:HAS]->(FlabebeWhiteFlower), +(Floette)-[:HAS]->(FloetteRedFlower), +(Floette)-[:HAS]->(FloetteYellowFlower), +(Floette)-[:HAS]->(FloetteOrangeFlower), +(Floette)-[:HAS]->(FloetteBlueFlower), +(Floette)-[:HAS]->(FloetteWhiteFlower), +(Florges)-[:HAS]->(FlorgesRedFlower), +(Florges)-[:HAS]->(FlorgesYellowFlower), +(Florges)-[:HAS]->(FlorgesOrangeFlower), +(Florges)-[:HAS]->(FlorgesBlueFlower), +(Florges)-[:HAS]->(FlorgesWhiteFlower), +(Furfrou)-[:HAS]->(FurfrouNaturalForm), +(Furfrou)-[:HAS]->(FurfrouHeartTrim), +(Furfrou)-[:HAS]->(FurfrouStarTrim), +(Furfrou)-[:HAS]->(FurfrouDiamondTrim), +(Furfrou)-[:HAS]->(FurfrouDebutanteTrim), +(Furfrou)-[:HAS]->(FurfrouMatronTrim), +(Furfrou)-[:HAS]->(FurfrouDandyTrim), +(Furfrou)-[:HAS]->(FurfrouLaReineTrim), +(Furfrou)-[:HAS]->(FurfrouKabukiTrim), +(Furfrou)-[:HAS]->(FurfrouPharaohTrim), +(Aegislash)-[:HAS]->(AegislashBladeForme), +(Aegislash)-[:HAS]->(AegislashShieldForme), +(Pumpkaboo)-[:HAS]->(PumpkabooSmallSize), +(Pumpkaboo)-[:HAS]->(PumpkabooAverageSize), +(Pumpkaboo)-[:HAS]->(PumpkabooLargeSize), +(Pumpkaboo)-[:HAS]->(PumpkabooSuperSize), +(Gourgeist)-[:HAS]->(GourgeistSmallSize), +(Gourgeist)-[:HAS]->(GourgeistAverageSize), +(Gourgeist)-[:HAS]->(GourgeistLargeSize), +(Gourgeist)-[:HAS]->(GourgeistSuperSize), +(Xerneas)-[:HAS]->(XerneasNeutralMode), +(Xerneas)-[:HAS]->(XerneasActiveMode), +(Zygarde)-[:HAS]->(ZygardeZygardeCell), +(Zygarde)-[:HAS]->(ZygardeZygardeCore), +(Zygarde)-[:HAS]->(Zygarde10Forme), +(Zygarde)-[:HAS]->(Zygarde50Forme), +(Zygarde)-[:HAS]->(ZygardeCompleteForme), +(Hoopa)-[:HAS]->(HoopaHoopaConfined), +(Hoopa)-[:HAS]->(HoopaHoopaUnbound), +(Oricorio)-[:HAS]->(OricorioBaileStyle), +(Oricorio)-[:HAS]->(OricorioPomPomStyle), +(Oricorio)-[:HAS]->(OricorioPauStyle), +(Oricorio)-[:HAS]->(OricorioSensuStyle), +(Lycanroc)-[:HAS]->(LycanrocMiddayForm), +(Lycanroc)-[:HAS]->(LycanrocMidnightForm), +(Lycanroc)-[:HAS]->(LycanrocDuskForm), +(Wishiwashi)-[:HAS]->(WishiwashiSoloForm), +(Wishiwashi)-[:HAS]->(WishiwashiSchoolForm), +(Silvally)-[:HAS]->(SilvallyNormal), +(Silvally)-[:HAS]->(SilvallyFighting), +(Silvally)-[:HAS]->(SilvallyFlying), +(Silvally)-[:HAS]->(SilvallyPoison), +(Silvally)-[:HAS]->(SilvallyGround), +(Silvally)-[:HAS]->(SilvallyRock), +(Silvally)-[:HAS]->(SilvallyBug), +(Silvally)-[:HAS]->(SilvallyGhost), +(Silvally)-[:HAS]->(SilvallySteel), +(Silvally)-[:HAS]->(SilvallyFire), +(Silvally)-[:HAS]->(SilvallyWater), +(Silvally)-[:HAS]->(SilvallyGrass), +(Silvally)-[:HAS]->(SilvallyElectric), +(Silvally)-[:HAS]->(SilvallyPsychic), +(Silvally)-[:HAS]->(SilvallyIce), +(Silvally)-[:HAS]->(SilvallyDragon), +(Silvally)-[:HAS]->(SilvallyDark), +(Silvally)-[:HAS]->(SilvallyFairy), +(Minior)-[:HAS]->(MiniorMeteorForm), +(Minior)-[:HAS]->(MiniorCore), +(Minior)-[:HAS]->(MiniorRedCore), +(Minior)-[:HAS]->(MiniorOrangeCore), +(Minior)-[:HAS]->(MiniorYellowCore), +(Minior)-[:HAS]->(MiniorGreenCore), +(Minior)-[:HAS]->(MiniorBlueCore), +(Minior)-[:HAS]->(MiniorIndigoCore), +(Minior)-[:HAS]->(MiniorVioletCore), +(Mimikyu)-[:HAS]->(MimikyuDisguisedForm), +(Mimikyu)-[:HAS]->(MimikyuBustedForm), +(Solgaleo)-[:HAS]->(SolgaleoSolgaleo), +(Solgaleo)-[:HAS]->(SolgaleoRadiantSunphase), +(Lunala)-[:HAS]->(LunalaLunala), +(Lunala)-[:HAS]->(LunalaFullMoonphase), +(Necrozma)-[:HAS]->(NecrozmaNecrozma), +(Necrozma)-[:HAS]->(NecrozmaDuskManeNecrozma), +(Necrozma)-[:HAS]->(NecrozmaDawnWingsNecrozma), +(Necrozma)-[:HAS]->(NecrozmaUltraNecrozma), +(Magearna)-[:HAS]->(MagearnaMagearna), +(Magearna)-[:HAS]->(MagearnaOriginalColorMagearna), +(Marshadow)-[:HAS]->(MarshadowGloomdwellerMarshadow), +(Marshadow)-[:HAS]->(MarshadowZenithMarshadow) + + +CREATE +(Bulbasaur)-[:IS]->(Grass), +(Bulbasaur)-[:IS]->(Poison), +(Ivysaur)-[:IS]->(Grass), +(Ivysaur)-[:IS]->(Poison), +(Venusaur)-[:IS]->(Grass), +(Venusaur)-[:IS]->(Poison), +(MegaVenusaur)-[:IS]->(Grass), +(MegaVenusaur)-[:IS]->(Poison), +(Charmander)-[:IS]->(Fire), +(Charmeleon)-[:IS]->(Fire), +(Charizard)-[:IS]->(Fire), +(Charizard)-[:IS]->(Flying), +(MegaCharizardX)-[:IS]->(Fire), +(MegaCharizardX)-[:IS]->(Dragon), +(MegaCharizardY)-[:IS]->(Fire), +(MegaCharizardY)-[:IS]->(Flying), +(Squirtle)-[:IS]->(Water), +(Wartortle)-[:IS]->(Water), +(Blastoise)-[:IS]->(Water), +(MegaBlastoise)-[:IS]->(Water), +(Caterpie)-[:IS]->(Bug), +(Metapod)-[:IS]->(Bug), +(Butterfree)-[:IS]->(Bug), +(Butterfree)-[:IS]->(Flying), +(Weedle)-[:IS]->(Bug), +(Weedle)-[:IS]->(Poison), +(Kakuna)-[:IS]->(Bug), +(Kakuna)-[:IS]->(Poison), +(Beedrill)-[:IS]->(Bug), +(Beedrill)-[:IS]->(Poison), +(MegaBeedrill)-[:IS]->(Bug), +(MegaBeedrill)-[:IS]->(Poison), +(Pidgey)-[:IS]->(Normal), +(Pidgey)-[:IS]->(Flying), +(Pidgeotto)-[:IS]->(Normal), +(Pidgeotto)-[:IS]->(Flying), +(Pidgeot)-[:IS]->(Normal), +(Pidgeot)-[:IS]->(Flying), +(MegaPidgeot)-[:IS]->(Normal), +(MegaPidgeot)-[:IS]->(Flying), +(Rattata)-[:IS]->(Normal), +(RattataAlola)-[:IS]->(Dark), +(RattataAlola)-[:IS]->(Normal), +(Raticate)-[:IS]->(Normal), +(RaticateAlola)-[:IS]->(Dark), +(RaticateAlola)-[:IS]->(Normal), +(Spearow)-[:IS]->(Normal), +(Spearow)-[:IS]->(Flying), +(Fearow)-[:IS]->(Normal), +(Fearow)-[:IS]->(Flying), +(Ekans)-[:IS]->(Poison), +(Arbok)-[:IS]->(Poison), +(Pikachu)-[:IS]->(Electric), +(Raichu)-[:IS]->(Electric), +(RaichuAlola)-[:IS]->(Electric), +(RaichuAlola)-[:IS]->(Psychic), +(Sandshrew)-[:IS]->(Ground), +(SandshrewAlola)-[:IS]->(Ice), +(SandshrewAlola)-[:IS]->(Steel), +(Sandslash)-[:IS]->(Ground), +(SandslashAlola)-[:IS]->(Ice), +(SandslashAlola)-[:IS]->(Steel), +(NidoranF)-[:IS]->(Poison), +(Nidorina)-[:IS]->(Poison), +(Nidoqueen)-[:IS]->(Poison), +(Nidoqueen)-[:IS]->(Ground), +(NidoranM)-[:IS]->(Poison), +(Nidorino)-[:IS]->(Poison), +(Nidoking)-[:IS]->(Poison), +(Nidoking)-[:IS]->(Ground), +(Clefairy)-[:IS]->(Fairy), +(Clefable)-[:IS]->(Fairy), +(Vulpix)-[:IS]->(Fire), +(VulpixAlola)-[:IS]->(Ice), +(Ninetales)-[:IS]->(Fire), +(NinetalesAlola)-[:IS]->(Ice), +(NinetalesAlola)-[:IS]->(Fairy), +(Jigglypuff)-[:IS]->(Normal), +(Jigglypuff)-[:IS]->(Fairy), +(Wigglytuff)-[:IS]->(Normal), +(Wigglytuff)-[:IS]->(Fairy), +(Zubat)-[:IS]->(Poison), +(Zubat)-[:IS]->(Flying), +(Golbat)-[:IS]->(Poison), +(Golbat)-[:IS]->(Flying), +(Oddish)-[:IS]->(Grass), +(Oddish)-[:IS]->(Poison), +(Gloom)-[:IS]->(Grass), +(Gloom)-[:IS]->(Poison), +(Vileplume)-[:IS]->(Grass), +(Vileplume)-[:IS]->(Poison), +(Paras)-[:IS]->(Bug), +(Paras)-[:IS]->(Grass), +(Parasect)-[:IS]->(Bug), +(Parasect)-[:IS]->(Grass), +(Venonat)-[:IS]->(Bug), +(Venonat)-[:IS]->(Poison), +(Venomoth)-[:IS]->(Bug), +(Venomoth)-[:IS]->(Poison), +(Diglett)-[:IS]->(Ground), +(DiglettAlola)-[:IS]->(Ground), +(DiglettAlola)-[:IS]->(Steel), +(Dugtrio)-[:IS]->(Ground), +(DugtrioAlola)-[:IS]->(Ground), +(DugtrioAlola)-[:IS]->(Steel), +(Meowth)-[:IS]->(Normal), +(MeowthAlola)-[:IS]->(Dark), +(Persian)-[:IS]->(Normal), +(PersianAlola)-[:IS]->(Dark), +(Psyduck)-[:IS]->(Water), +(Golduck)-[:IS]->(Water), +(Mankey)-[:IS]->(Fighting), +(Primeape)-[:IS]->(Fighting), +(Growlithe)-[:IS]->(Fire), +(Arcanine)-[:IS]->(Fire), +(Poliwag)-[:IS]->(Water), +(Poliwhirl)-[:IS]->(Water), +(Poliwrath)-[:IS]->(Water), +(Poliwrath)-[:IS]->(Fighting), +(Abra)-[:IS]->(Psychic), +(Kadabra)-[:IS]->(Psychic), +(Alakazam)-[:IS]->(Psychic), +(MegaAlakazam)-[:IS]->(Psychic), +(Machop)-[:IS]->(Fighting), +(Machoke)-[:IS]->(Fighting), +(Machamp)-[:IS]->(Fighting), +(Bellsprout)-[:IS]->(Grass), +(Bellsprout)-[:IS]->(Poison), +(Weepinbell)-[:IS]->(Grass), +(Weepinbell)-[:IS]->(Poison), +(Victreebel)-[:IS]->(Grass), +(Victreebel)-[:IS]->(Poison), +(Tentacool)-[:IS]->(Water), +(Tentacool)-[:IS]->(Poison), +(Tentacruel)-[:IS]->(Water), +(Tentacruel)-[:IS]->(Poison), +(Geodude)-[:IS]->(Rock), +(Geodude)-[:IS]->(Ground), +(GeodudeAlola)-[:IS]->(Rock), +(GeodudeAlola)-[:IS]->(Electric), +(Graveler)-[:IS]->(Rock), +(Graveler)-[:IS]->(Ground), +(GravelerAlola)-[:IS]->(Rock), +(GravelerAlola)-[:IS]->(Electric), +(Golem)-[:IS]->(Rock), +(Golem)-[:IS]->(Ground), +(GolemAlola)-[:IS]->(Rock), +(GolemAlola)-[:IS]->(Electric), +(Ponyta)-[:IS]->(Fire), +(Rapidash)-[:IS]->(Fire), +(Slowpoke)-[:IS]->(Water), +(Slowpoke)-[:IS]->(Psychic), +(Slowbro)-[:IS]->(Water), +(Slowbro)-[:IS]->(Psychic), +(MegaSlowbro)-[:IS]->(Water), +(MegaSlowbro)-[:IS]->(Psychic), +(Magnemite)-[:IS]->(Electric), +(Magnemite)-[:IS]->(Steel), +(Magneton)-[:IS]->(Electric), +(Magneton)-[:IS]->(Steel), +(Farfetchd)-[:IS]->(Normal), +(Farfetchd)-[:IS]->(Flying), +(Doduo)-[:IS]->(Normal), +(Doduo)-[:IS]->(Flying), +(Dodrio)-[:IS]->(Normal), +(Dodrio)-[:IS]->(Flying), +(Seel)-[:IS]->(Water), +(Dewgong)-[:IS]->(Water), +(Dewgong)-[:IS]->(Ice), +(Grimer)-[:IS]->(Poison), +(GrimerAlola)-[:IS]->(Poison), +(GrimerAlola)-[:IS]->(Dark), +(Muk)-[:IS]->(Poison), +(MukAlola)-[:IS]->(Poison), +(MukAlola)-[:IS]->(Dark), +(Shellder)-[:IS]->(Water), +(Cloyster)-[:IS]->(Water), +(Cloyster)-[:IS]->(Ice), +(Gastly)-[:IS]->(Ghost), +(Gastly)-[:IS]->(Poison), +(Haunter)-[:IS]->(Ghost), +(Haunter)-[:IS]->(Poison), +(Gengar)-[:IS]->(Ghost), +(Gengar)-[:IS]->(Poison), +(MegaGengar)-[:IS]->(Ghost), +(MegaGengar)-[:IS]->(Poison), +(Onix)-[:IS]->(Rock), +(Onix)-[:IS]->(Ground), +(Drowzee)-[:IS]->(Psychic), +(Hypno)-[:IS]->(Psychic), +(Krabby)-[:IS]->(Water), +(Kingler)-[:IS]->(Water), +(Voltorb)-[:IS]->(Electric), +(Electrode)-[:IS]->(Electric), +(Exeggcute)-[:IS]->(Grass), +(Exeggcute)-[:IS]->(Psychic), +(Exeggutor)-[:IS]->(Grass), +(Exeggutor)-[:IS]->(Psychic), +(ExeggutorAlola)-[:IS]->(Grass), +(ExeggutorAlola)-[:IS]->(Dragon), +(Cubone)-[:IS]->(Ground), +(Marowak)-[:IS]->(Ground), +(MarowakAlola)-[:IS]->(Fire), +(MarowakAlola)-[:IS]->(Ghost), +(Hitmonlee)-[:IS]->(Fighting), +(Hitmonchan)-[:IS]->(Fighting), +(Lickitung)-[:IS]->(Normal), +(Koffing)-[:IS]->(Poison), +(Weezing)-[:IS]->(Poison), +(Rhyhorn)-[:IS]->(Ground), +(Rhyhorn)-[:IS]->(Rock), +(Rhydon)-[:IS]->(Ground), +(Rhydon)-[:IS]->(Rock), +(Chansey)-[:IS]->(Normal), +(Tangela)-[:IS]->(Grass), +(Kangaskhan)-[:IS]->(Normal), +(MegaKangaskhan)-[:IS]->(Normal), +(Horsea)-[:IS]->(Water), +(Seadra)-[:IS]->(Water), +(Goldeen)-[:IS]->(Water), +(Seaking)-[:IS]->(Water), +(Staryu)-[:IS]->(Water), +(Starmie)-[:IS]->(Water), +(Starmie)-[:IS]->(Psychic), +(MrMime)-[:IS]->(Psychic), +(MrMime)-[:IS]->(Fairy), +(Scyther)-[:IS]->(Bug), +(Scyther)-[:IS]->(Flying), +(Jynx)-[:IS]->(Ice), +(Jynx)-[:IS]->(Psychic), +(Electabuzz)-[:IS]->(Electric), +(Magmar)-[:IS]->(Fire), +(Pinsir)-[:IS]->(Bug), +(MegaPinsir)-[:IS]->(Bug), +(MegaPinsir)-[:IS]->(Flying), +(Tauros)-[:IS]->(Normal), +(Magikarp)-[:IS]->(Water), +(Gyarados)-[:IS]->(Water), +(Gyarados)-[:IS]->(Flying), +(MegaGyarados)-[:IS]->(Water), +(MegaGyarados)-[:IS]->(Dark), +(Lapras)-[:IS]->(Water), +(Lapras)-[:IS]->(Ice), +(Ditto)-[:IS]->(Normal), +(Eevee)-[:IS]->(Normal), +(Vaporeon)-[:IS]->(Water), +(Jolteon)-[:IS]->(Electric), +(Flareon)-[:IS]->(Fire), +(Porygon)-[:IS]->(Normal), +(Omanyte)-[:IS]->(Rock), +(Omanyte)-[:IS]->(Water), +(Omastar)-[:IS]->(Rock), +(Omastar)-[:IS]->(Water), +(Kabuto)-[:IS]->(Rock), +(Kabuto)-[:IS]->(Water), +(Kabutops)-[:IS]->(Rock), +(Kabutops)-[:IS]->(Water), +(Aerodactyl)-[:IS]->(Rock), +(Aerodactyl)-[:IS]->(Flying), +(MegaAerodactyl)-[:IS]->(Rock), +(MegaAerodactyl)-[:IS]->(Flying), +(Snorlax)-[:IS]->(Normal), +(Articuno)-[:IS]->(Ice), +(Articuno)-[:IS]->(Flying), +(Zapdos)-[:IS]->(Electric), +(Zapdos)-[:IS]->(Flying), +(Moltres)-[:IS]->(Fire), +(Moltres)-[:IS]->(Flying), +(Dratini)-[:IS]->(Dragon), +(Dragonair)-[:IS]->(Dragon), +(Dragonite)-[:IS]->(Dragon), +(Dragonite)-[:IS]->(Flying), +(Mewtwo)-[:IS]->(Psychic), +(MegaMewtwoX)-[:IS]->(Psychic), +(MegaMewtwoX)-[:IS]->(Fighting), +(MegaMewtwoY)-[:IS]->(Psychic), +(Mew)-[:IS]->(Psychic), +(Chikorita)-[:IS]->(Grass), +(Bayleef)-[:IS]->(Grass), +(Meganium)-[:IS]->(Grass), +(Cyndaquil)-[:IS]->(Fire), +(Quilava)-[:IS]->(Fire), +(Typhlosion)-[:IS]->(Fire), +(Totodile)-[:IS]->(Water), +(Croconaw)-[:IS]->(Water), +(Feraligatr)-[:IS]->(Water), +(Sentret)-[:IS]->(Normal), +(Furret)-[:IS]->(Normal), +(Hoothoot)-[:IS]->(Normal), +(Hoothoot)-[:IS]->(Flying), +(Noctowl)-[:IS]->(Normal), +(Noctowl)-[:IS]->(Flying), +(Ledyba)-[:IS]->(Bug), +(Ledyba)-[:IS]->(Flying), +(Ledian)-[:IS]->(Bug), +(Ledian)-[:IS]->(Flying), +(Spinarak)-[:IS]->(Bug), +(Spinarak)-[:IS]->(Poison), +(Ariados)-[:IS]->(Bug), +(Ariados)-[:IS]->(Poison), +(Crobat)-[:IS]->(Poison), +(Crobat)-[:IS]->(Flying), +(Chinchou)-[:IS]->(Water), +(Chinchou)-[:IS]->(Electric), +(Lanturn)-[:IS]->(Water), +(Lanturn)-[:IS]->(Electric), +(Pichu)-[:IS]->(Electric), +(Cleffa)-[:IS]->(Fairy), +(Igglybuff)-[:IS]->(Normal), +(Igglybuff)-[:IS]->(Fairy), +(Togepi)-[:IS]->(Fairy), +(Togetic)-[:IS]->(Fairy), +(Togetic)-[:IS]->(Flying), +(Natu)-[:IS]->(Psychic), +(Natu)-[:IS]->(Flying), +(Xatu)-[:IS]->(Psychic), +(Xatu)-[:IS]->(Flying), +(Mareep)-[:IS]->(Electric), +(Flaaffy)-[:IS]->(Electric), +(Ampharos)-[:IS]->(Electric), +(MegaAmpharos)-[:IS]->(Electric), +(MegaAmpharos)-[:IS]->(Dragon), +(Bellossom)-[:IS]->(Grass), +(Marill)-[:IS]->(Water), +(Marill)-[:IS]->(Fairy), +(Azumarill)-[:IS]->(Water), +(Azumarill)-[:IS]->(Fairy), +(Sudowoodo)-[:IS]->(Rock), +(Politoed)-[:IS]->(Water), +(Hoppip)-[:IS]->(Grass), +(Hoppip)-[:IS]->(Flying), +(Skiploom)-[:IS]->(Grass), +(Skiploom)-[:IS]->(Flying), +(Jumpluff)-[:IS]->(Grass), +(Jumpluff)-[:IS]->(Flying), +(Aipom)-[:IS]->(Normal), +(Sunkern)-[:IS]->(Grass), +(Sunflora)-[:IS]->(Grass), +(Yanma)-[:IS]->(Bug), +(Yanma)-[:IS]->(Flying), +(Wooper)-[:IS]->(Water), +(Wooper)-[:IS]->(Ground), +(Quagsire)-[:IS]->(Water), +(Quagsire)-[:IS]->(Ground), +(Espeon)-[:IS]->(Psychic), +(Umbreon)-[:IS]->(Dark), +(Murkrow)-[:IS]->(Dark), +(Murkrow)-[:IS]->(Flying), +(Slowking)-[:IS]->(Water), +(Slowking)-[:IS]->(Psychic), +(Misdreavus)-[:IS]->(Ghost), +(Unown)-[:IS]->(Psychic), +(UnownUnownA)-[:IS]->(Psychic), +(UnownUnownK)-[:IS]->(Psychic), +(UnownUnownU)-[:IS]->(Psychic), +(UnownUnownB)-[:IS]->(Psychic), +(UnownUnownL)-[:IS]->(Psychic), +(UnownUnownV)-[:IS]->(Psychic), +(UnownUnownC)-[:IS]->(Psychic), +(UnownUnownM)-[:IS]->(Psychic), +(UnownUnownW)-[:IS]->(Psychic), +(UnownUnownD)-[:IS]->(Psychic), +(UnownUnownN)-[:IS]->(Psychic), +(UnownUnownX)-[:IS]->(Psychic), +(UnownUnownE)-[:IS]->(Psychic), +(UnownUnownO)-[:IS]->(Psychic), +(UnownUnownY)-[:IS]->(Psychic), +(UnownUnownF)-[:IS]->(Psychic), +(UnownUnownP)-[:IS]->(Psychic), +(UnownUnownZ)-[:IS]->(Psychic), +(UnownUnownG)-[:IS]->(Psychic), +(UnownUnownQ)-[:IS]->(Psychic), +(UnownUnown33)-[:IS]->(Psychic), +(UnownUnownH)-[:IS]->(Psychic), +(UnownUnownR)-[:IS]->(Psychic), +(UnownUnown63)-[:IS]->(Psychic), +(UnownUnownI)-[:IS]->(Psychic), +(UnownUnownS)-[:IS]->(Psychic), +(UnownUnownJ)-[:IS]->(Psychic), +(UnownUnownT)-[:IS]->(Psychic), +(Wobbuffet)-[:IS]->(Psychic), +(Girafarig)-[:IS]->(Normal), +(Girafarig)-[:IS]->(Psychic), +(Pineco)-[:IS]->(Bug), +(Forretress)-[:IS]->(Bug), +(Forretress)-[:IS]->(Steel), +(Dunsparce)-[:IS]->(Normal), +(Gligar)-[:IS]->(Ground), +(Gligar)-[:IS]->(Flying), +(Steelix)-[:IS]->(Steel), +(Steelix)-[:IS]->(Ground), +(MegaSteelix)-[:IS]->(Steel), +(MegaSteelix)-[:IS]->(Ground), +(Snubbull)-[:IS]->(Fairy), +(Granbull)-[:IS]->(Fairy), +(Qwilfish)-[:IS]->(Water), +(Qwilfish)-[:IS]->(Poison), +(Scizor)-[:IS]->(Bug), +(Scizor)-[:IS]->(Steel), +(MegaScizor)-[:IS]->(Bug), +(MegaScizor)-[:IS]->(Steel), +(Shuckle)-[:IS]->(Bug), +(Shuckle)-[:IS]->(Rock), +(Heracross)-[:IS]->(Bug), +(Heracross)-[:IS]->(Fighting), +(MegaHeracross)-[:IS]->(Bug), +(MegaHeracross)-[:IS]->(Fighting), +(Sneasel)-[:IS]->(Dark), +(Sneasel)-[:IS]->(Ice), +(Teddiursa)-[:IS]->(Normal), +(Ursaring)-[:IS]->(Normal), +(Slugma)-[:IS]->(Fire), +(Magcargo)-[:IS]->(Fire), +(Magcargo)-[:IS]->(Rock), +(Swinub)-[:IS]->(Ice), +(Swinub)-[:IS]->(Ground), +(Piloswine)-[:IS]->(Ice), +(Piloswine)-[:IS]->(Ground), +(Corsola)-[:IS]->(Water), +(Corsola)-[:IS]->(Rock), +(Remoraid)-[:IS]->(Water), +(Octillery)-[:IS]->(Water), +(Delibird)-[:IS]->(Ice), +(Delibird)-[:IS]->(Flying), +(Mantine)-[:IS]->(Water), +(Mantine)-[:IS]->(Flying), +(Skarmory)-[:IS]->(Steel), +(Skarmory)-[:IS]->(Flying), +(Houndour)-[:IS]->(Dark), +(Houndour)-[:IS]->(Fire), +(Houndoom)-[:IS]->(Dark), +(Houndoom)-[:IS]->(Fire), +(MegaHoundoom)-[:IS]->(Dark), +(MegaHoundoom)-[:IS]->(Fire), +(Kingdra)-[:IS]->(Water), +(Kingdra)-[:IS]->(Dragon), +(Phanpy)-[:IS]->(Ground), +(Donphan)-[:IS]->(Ground), +(Porygon2)-[:IS]->(Normal), +(Stantler)-[:IS]->(Normal), +(Smeargle)-[:IS]->(Normal), +(Tyrogue)-[:IS]->(Fighting), +(Hitmontop)-[:IS]->(Fighting), +(Smoochum)-[:IS]->(Ice), +(Smoochum)-[:IS]->(Psychic), +(Elekid)-[:IS]->(Electric), +(Magby)-[:IS]->(Fire), +(Miltank)-[:IS]->(Normal), +(Blissey)-[:IS]->(Normal), +(Raikou)-[:IS]->(Electric), +(Entei)-[:IS]->(Fire), +(Suicune)-[:IS]->(Water), +(Larvitar)-[:IS]->(Rock), +(Larvitar)-[:IS]->(Ground), +(Pupitar)-[:IS]->(Rock), +(Pupitar)-[:IS]->(Ground), +(Tyranitar)-[:IS]->(Rock), +(Tyranitar)-[:IS]->(Dark), +(MegaTyranitar)-[:IS]->(Rock), +(MegaTyranitar)-[:IS]->(Dark), +(Lugia)-[:IS]->(Psychic), +(Lugia)-[:IS]->(Flying), +(HoOh)-[:IS]->(Fire), +(HoOh)-[:IS]->(Flying), +(Celebi)-[:IS]->(Psychic), +(Celebi)-[:IS]->(Grass), +(Treecko)-[:IS]->(Grass), +(Grovyle)-[:IS]->(Grass), +(Sceptile)-[:IS]->(Grass), +(MegaSceptile)-[:IS]->(Grass), +(MegaSceptile)-[:IS]->(Dragon), +(Torchic)-[:IS]->(Fire), +(Combusken)-[:IS]->(Fire), +(Combusken)-[:IS]->(Fighting), +(Blaziken)-[:IS]->(Fire), +(Blaziken)-[:IS]->(Fighting), +(MegaBlaziken)-[:IS]->(Fire), +(MegaBlaziken)-[:IS]->(Fighting), +(Mudkip)-[:IS]->(Water), +(Marshtomp)-[:IS]->(Water), +(Marshtomp)-[:IS]->(Ground), +(Swampert)-[:IS]->(Water), +(Swampert)-[:IS]->(Ground), +(MegaSwampert)-[:IS]->(Water), +(MegaSwampert)-[:IS]->(Ground), +(Poochyena)-[:IS]->(Dark), +(Mightyena)-[:IS]->(Dark), +(Zigzagoon)-[:IS]->(Normal), +(Linoone)-[:IS]->(Normal), +(Wurmple)-[:IS]->(Bug), +(Silcoon)-[:IS]->(Bug), +(Beautifly)-[:IS]->(Bug), +(Beautifly)-[:IS]->(Flying), +(Cascoon)-[:IS]->(Bug), +(Dustox)-[:IS]->(Bug), +(Dustox)-[:IS]->(Poison), +(Lotad)-[:IS]->(Water), +(Lotad)-[:IS]->(Grass), +(Lombre)-[:IS]->(Water), +(Lombre)-[:IS]->(Grass), +(Ludicolo)-[:IS]->(Water), +(Ludicolo)-[:IS]->(Grass), +(Seedot)-[:IS]->(Grass), +(Nuzleaf)-[:IS]->(Grass), +(Nuzleaf)-[:IS]->(Dark), +(Shiftry)-[:IS]->(Grass), +(Shiftry)-[:IS]->(Dark), +(Taillow)-[:IS]->(Normal), +(Taillow)-[:IS]->(Flying), +(Swellow)-[:IS]->(Normal), +(Swellow)-[:IS]->(Flying), +(Wingull)-[:IS]->(Water), +(Wingull)-[:IS]->(Flying), +(Pelipper)-[:IS]->(Water), +(Pelipper)-[:IS]->(Flying), +(Ralts)-[:IS]->(Psychic), +(Ralts)-[:IS]->(Fairy), +(Kirlia)-[:IS]->(Psychic), +(Kirlia)-[:IS]->(Fairy), +(Gardevoir)-[:IS]->(Psychic), +(Gardevoir)-[:IS]->(Fairy), +(MegaGardevoir)-[:IS]->(Psychic), +(MegaGardevoir)-[:IS]->(Fairy), +(Surskit)-[:IS]->(Bug), +(Surskit)-[:IS]->(Water), +(Masquerain)-[:IS]->(Bug), +(Masquerain)-[:IS]->(Flying), +(Shroomish)-[:IS]->(Grass), +(Breloom)-[:IS]->(Grass), +(Breloom)-[:IS]->(Fighting), +(Slakoth)-[:IS]->(Normal), +(Vigoroth)-[:IS]->(Normal), +(Slaking)-[:IS]->(Normal), +(Nincada)-[:IS]->(Bug), +(Nincada)-[:IS]->(Ground), +(Ninjask)-[:IS]->(Bug), +(Ninjask)-[:IS]->(Flying), +(Shedinja)-[:IS]->(Bug), +(Shedinja)-[:IS]->(Ghost), +(Whismur)-[:IS]->(Normal), +(Loudred)-[:IS]->(Normal), +(Exploud)-[:IS]->(Normal), +(Makuhita)-[:IS]->(Fighting), +(Hariyama)-[:IS]->(Fighting), +(Azurill)-[:IS]->(Normal), +(Azurill)-[:IS]->(Fairy), +(Nosepass)-[:IS]->(Rock), +(Skitty)-[:IS]->(Normal), +(Delcatty)-[:IS]->(Normal), +(Sableye)-[:IS]->(Dark), +(Sableye)-[:IS]->(Ghost), +(MegaSableye)-[:IS]->(Dark), +(MegaSableye)-[:IS]->(Ghost), +(Mawile)-[:IS]->(Steel), +(Mawile)-[:IS]->(Fairy), +(MegaMawile)-[:IS]->(Steel), +(MegaMawile)-[:IS]->(Fairy), +(Aron)-[:IS]->(Steel), +(Aron)-[:IS]->(Rock), +(Lairon)-[:IS]->(Steel), +(Lairon)-[:IS]->(Rock), +(Aggron)-[:IS]->(Steel), +(Aggron)-[:IS]->(Rock), +(MegaAggron)-[:IS]->(Steel), +(Meditite)-[:IS]->(Fighting), +(Meditite)-[:IS]->(Psychic), +(Medicham)-[:IS]->(Fighting), +(Medicham)-[:IS]->(Psychic), +(MegaMedicham)-[:IS]->(Fighting), +(MegaMedicham)-[:IS]->(Psychic), +(Electrike)-[:IS]->(Electric), +(Manectric)-[:IS]->(Electric), +(MegaManectric)-[:IS]->(Electric), +(Plusle)-[:IS]->(Electric), +(Minun)-[:IS]->(Electric), +(Volbeat)-[:IS]->(Bug), +(Illumise)-[:IS]->(Bug), +(Roselia)-[:IS]->(Grass), +(Roselia)-[:IS]->(Poison), +(Gulpin)-[:IS]->(Poison), +(Swalot)-[:IS]->(Poison), +(Carvanha)-[:IS]->(Water), +(Carvanha)-[:IS]->(Dark), +(Sharpedo)-[:IS]->(Water), +(Sharpedo)-[:IS]->(Dark), +(MegaSharpedo)-[:IS]->(Water), +(MegaSharpedo)-[:IS]->(Dark), +(Wailmer)-[:IS]->(Water), +(Wailord)-[:IS]->(Water), +(Numel)-[:IS]->(Fire), +(Numel)-[:IS]->(Ground), +(Camerupt)-[:IS]->(Fire), +(Camerupt)-[:IS]->(Ground), +(MegaCamerupt)-[:IS]->(Fire), +(MegaCamerupt)-[:IS]->(Ground), +(Torkoal)-[:IS]->(Fire), +(Spoink)-[:IS]->(Psychic), +(Grumpig)-[:IS]->(Psychic), +(Spinda)-[:IS]->(Normal), +(Trapinch)-[:IS]->(Ground), +(Vibrava)-[:IS]->(Ground), +(Vibrava)-[:IS]->(Dragon), +(Flygon)-[:IS]->(Ground), +(Flygon)-[:IS]->(Dragon), +(Cacnea)-[:IS]->(Grass), +(Cacturne)-[:IS]->(Grass), +(Cacturne)-[:IS]->(Dark), +(Swablu)-[:IS]->(Normal), +(Swablu)-[:IS]->(Flying), +(Altaria)-[:IS]->(Dragon), +(Altaria)-[:IS]->(Flying), +(MegaAltaria)-[:IS]->(Dragon), +(MegaAltaria)-[:IS]->(Fairy), +(Zangoose)-[:IS]->(Normal), +(Seviper)-[:IS]->(Poison), +(Lunatone)-[:IS]->(Rock), +(Lunatone)-[:IS]->(Psychic), +(Solrock)-[:IS]->(Rock), +(Solrock)-[:IS]->(Psychic), +(Barboach)-[:IS]->(Water), +(Barboach)-[:IS]->(Ground), +(Whiscash)-[:IS]->(Water), +(Whiscash)-[:IS]->(Ground), +(Corphish)-[:IS]->(Water), +(Crawdaunt)-[:IS]->(Water), +(Crawdaunt)-[:IS]->(Dark), +(Baltoy)-[:IS]->(Ground), +(Baltoy)-[:IS]->(Psychic), +(Claydol)-[:IS]->(Ground), +(Claydol)-[:IS]->(Psychic), +(Lileep)-[:IS]->(Rock), +(Lileep)-[:IS]->(Grass), +(Cradily)-[:IS]->(Rock), +(Cradily)-[:IS]->(Grass), +(Anorith)-[:IS]->(Rock), +(Anorith)-[:IS]->(Bug), +(Armaldo)-[:IS]->(Rock), +(Armaldo)-[:IS]->(Bug), +(Feebas)-[:IS]->(Water), +(Milotic)-[:IS]->(Water), +(Castform)-[:IS]->(Normal), +(CastformNormal)-[:IS]->(Normal), +(CastformSunnyForm)-[:IS]->(Fire), +(CastformRainyForm)-[:IS]->(Water), +(CastformSnowyForm)-[:IS]->(Ice), +(Kecleon)-[:IS]->(Normal), +(Shuppet)-[:IS]->(Ghost), +(Banette)-[:IS]->(Ghost), +(MegaBanette)-[:IS]->(Ghost), +(Duskull)-[:IS]->(Ghost), +(Dusclops)-[:IS]->(Ghost), +(Tropius)-[:IS]->(Grass), +(Tropius)-[:IS]->(Flying), +(Chimecho)-[:IS]->(Psychic), +(Absol)-[:IS]->(Dark), +(MegaAbsol)-[:IS]->(Dark), +(Wynaut)-[:IS]->(Psychic), +(Snorunt)-[:IS]->(Ice), +(Glalie)-[:IS]->(Ice), +(MegaGlalie)-[:IS]->(Ice), +(Spheal)-[:IS]->(Ice), +(Spheal)-[:IS]->(Water), +(Sealeo)-[:IS]->(Ice), +(Sealeo)-[:IS]->(Water), +(Walrein)-[:IS]->(Ice), +(Walrein)-[:IS]->(Water), +(Clamperl)-[:IS]->(Water), +(Huntail)-[:IS]->(Water), +(Gorebyss)-[:IS]->(Water), +(Relicanth)-[:IS]->(Water), +(Relicanth)-[:IS]->(Rock), +(Luvdisc)-[:IS]->(Water), +(Bagon)-[:IS]->(Dragon), +(Shelgon)-[:IS]->(Dragon), +(Salamence)-[:IS]->(Dragon), +(Salamence)-[:IS]->(Flying), +(MegaSalamence)-[:IS]->(Dragon), +(MegaSalamence)-[:IS]->(Flying), +(Beldum)-[:IS]->(Steel), +(Beldum)-[:IS]->(Psychic), +(Metang)-[:IS]->(Steel), +(Metang)-[:IS]->(Psychic), +(Metagross)-[:IS]->(Steel), +(Metagross)-[:IS]->(Psychic), +(MegaMetagross)-[:IS]->(Steel), +(MegaMetagross)-[:IS]->(Psychic), +(Regirock)-[:IS]->(Rock), +(Regice)-[:IS]->(Ice), +(Registeel)-[:IS]->(Steel), +(Latias)-[:IS]->(Dragon), +(Latias)-[:IS]->(Psychic), +(MegaLatias)-[:IS]->(Dragon), +(MegaLatias)-[:IS]->(Psychic), +(Latios)-[:IS]->(Dragon), +(Latios)-[:IS]->(Psychic), +(MegaLatios)-[:IS]->(Dragon), +(MegaLatios)-[:IS]->(Psychic), +(Kyogre)-[:IS]->(Water), +(Groudon)-[:IS]->(Ground), +(Rayquaza)-[:IS]->(Dragon), +(Rayquaza)-[:IS]->(Flying), +(MegaRayquaza)-[:IS]->(Dragon), +(MegaRayquaza)-[:IS]->(Flying), +(Jirachi)-[:IS]->(Steel), +(Jirachi)-[:IS]->(Psychic), +(Deoxys)-[:IS]->(Psychic), +(DeoxysNormalForme)-[:IS]->(Psychic), +(DeoxysAttackForme)-[:IS]->(Psychic), +(DeoxysDefenseForme)-[:IS]->(Psychic), +(DeoxysSpeedForme)-[:IS]->(Psychic), +(Turtwig)-[:IS]->(Grass), +(Grotle)-[:IS]->(Grass), +(Torterra)-[:IS]->(Grass), +(Torterra)-[:IS]->(Ground), +(Chimchar)-[:IS]->(Fire), +(Monferno)-[:IS]->(Fire), +(Monferno)-[:IS]->(Fighting), +(Infernape)-[:IS]->(Fire), +(Infernape)-[:IS]->(Fighting), +(Piplup)-[:IS]->(Water), +(Prinplup)-[:IS]->(Water), +(Empoleon)-[:IS]->(Water), +(Empoleon)-[:IS]->(Steel), +(Starly)-[:IS]->(Normal), +(Starly)-[:IS]->(Flying), +(Staravia)-[:IS]->(Normal), +(Staravia)-[:IS]->(Flying), +(Staraptor)-[:IS]->(Normal), +(Staraptor)-[:IS]->(Flying), +(Bidoof)-[:IS]->(Normal), +(Bibarel)-[:IS]->(Normal), +(Bibarel)-[:IS]->(Water), +(Kricketot)-[:IS]->(Bug), +(Kricketune)-[:IS]->(Bug), +(Shinx)-[:IS]->(Electric), +(Luxio)-[:IS]->(Electric), +(Luxray)-[:IS]->(Electric), +(Budew)-[:IS]->(Grass), +(Budew)-[:IS]->(Poison), +(Roserade)-[:IS]->(Grass), +(Roserade)-[:IS]->(Poison), +(Cranidos)-[:IS]->(Rock), +(Rampardos)-[:IS]->(Rock), +(Shieldon)-[:IS]->(Rock), +(Shieldon)-[:IS]->(Steel), +(Bastiodon)-[:IS]->(Rock), +(Bastiodon)-[:IS]->(Steel), +(Burmy)-[:IS]->(Bug), +(BurmyPlantCloak)-[:IS]->(Bug), +(BurmySandyCloak)-[:IS]->(Bug), +(BurmyTrashCloak)-[:IS]->(Bug), +(Wormadam)-[:IS]->(Bug), +(Wormadam)-[:IS]->(Grass), +(WormadamPlantCloak)-[:IS]->(Bug), +(WormadamPlantCloak)-[:IS]->(Grass), +(WormadamSandyCloak)-[:IS]->(Bug), +(WormadamSandyCloak)-[:IS]->(Ground), +(WormadamTrashCloak)-[:IS]->(Bug), +(WormadamTrashCloak)-[:IS]->(Steel), +(Mothim)-[:IS]->(Bug), +(Mothim)-[:IS]->(Flying), +(Combee)-[:IS]->(Bug), +(Combee)-[:IS]->(Flying), +(Vespiquen)-[:IS]->(Bug), +(Vespiquen)-[:IS]->(Flying), +(Pachirisu)-[:IS]->(Electric), +(Buizel)-[:IS]->(Water), +(Floatzel)-[:IS]->(Water), +(Cherubi)-[:IS]->(Grass), +(Cherrim)-[:IS]->(Grass), +(CherrimOvercastForm)-[:IS]->(Grass), +(CherrimSunshineForm)-[:IS]->(Grass), +(Shellos)-[:IS]->(Water), +(ShellosWestSea)-[:IS]->(Water), +(ShellosEastSea)-[:IS]->(Water), +(Gastrodon)-[:IS]->(Water), +(Gastrodon)-[:IS]->(Ground), +(GastrodonWestSea)-[:IS]->(Water), +(GastrodonWestSea)-[:IS]->(Ground), +(GastrodonEastSea)-[:IS]->(Water), +(GastrodonEastSea)-[:IS]->(Ground), +(Ambipom)-[:IS]->(Normal), +(Drifloon)-[:IS]->(Ghost), +(Drifloon)-[:IS]->(Flying), +(Drifblim)-[:IS]->(Ghost), +(Drifblim)-[:IS]->(Flying), +(Buneary)-[:IS]->(Normal), +(Lopunny)-[:IS]->(Normal), +(MegaLopunny)-[:IS]->(Normal), +(MegaLopunny)-[:IS]->(Fighting), +(Mismagius)-[:IS]->(Ghost), +(Honchkrow)-[:IS]->(Dark), +(Honchkrow)-[:IS]->(Flying), +(Glameow)-[:IS]->(Normal), +(Purugly)-[:IS]->(Normal), +(Chingling)-[:IS]->(Psychic), +(Stunky)-[:IS]->(Poison), +(Stunky)-[:IS]->(Dark), +(Skuntank)-[:IS]->(Poison), +(Skuntank)-[:IS]->(Dark), +(Bronzor)-[:IS]->(Steel), +(Bronzor)-[:IS]->(Psychic), +(Bronzong)-[:IS]->(Steel), +(Bronzong)-[:IS]->(Psychic), +(Bonsly)-[:IS]->(Rock), +(MimeJr)-[:IS]->(Psychic), +(MimeJr)-[:IS]->(Fairy), +(Happiny)-[:IS]->(Normal), +(Chatot)-[:IS]->(Normal), +(Chatot)-[:IS]->(Flying), +(Spiritomb)-[:IS]->(Ghost), +(Spiritomb)-[:IS]->(Dark), +(Gible)-[:IS]->(Dragon), +(Gible)-[:IS]->(Ground), +(Gabite)-[:IS]->(Dragon), +(Gabite)-[:IS]->(Ground), +(Garchomp)-[:IS]->(Dragon), +(Garchomp)-[:IS]->(Ground), +(MegaGarchomp)-[:IS]->(Dragon), +(MegaGarchomp)-[:IS]->(Ground), +(Munchlax)-[:IS]->(Normal), +(Riolu)-[:IS]->(Fighting), +(Lucario)-[:IS]->(Fighting), +(Lucario)-[:IS]->(Steel), +(MegaLucario)-[:IS]->(Fighting), +(MegaLucario)-[:IS]->(Steel), +(Hippopotas)-[:IS]->(Ground), +(Hippowdon)-[:IS]->(Ground), +(Skorupi)-[:IS]->(Poison), +(Skorupi)-[:IS]->(Bug), +(Drapion)-[:IS]->(Poison), +(Drapion)-[:IS]->(Dark), +(Croagunk)-[:IS]->(Poison), +(Croagunk)-[:IS]->(Fighting), +(Toxicroak)-[:IS]->(Poison), +(Toxicroak)-[:IS]->(Fighting), +(Carnivine)-[:IS]->(Grass), +(Finneon)-[:IS]->(Water), +(Lumineon)-[:IS]->(Water), +(Mantyke)-[:IS]->(Water), +(Mantyke)-[:IS]->(Flying), +(Snover)-[:IS]->(Grass), +(Snover)-[:IS]->(Ice), +(Abomasnow)-[:IS]->(Grass), +(Abomasnow)-[:IS]->(Ice), +(MegaAbomasnow)-[:IS]->(Grass), +(MegaAbomasnow)-[:IS]->(Ice), +(Weavile)-[:IS]->(Dark), +(Weavile)-[:IS]->(Ice), +(Magnezone)-[:IS]->(Electric), +(Magnezone)-[:IS]->(Steel), +(Lickilicky)-[:IS]->(Normal), +(Rhyperior)-[:IS]->(Ground), +(Rhyperior)-[:IS]->(Rock), +(Tangrowth)-[:IS]->(Grass), +(Electivire)-[:IS]->(Electric), +(Magmortar)-[:IS]->(Fire), +(Togekiss)-[:IS]->(Fairy), +(Togekiss)-[:IS]->(Flying), +(Yanmega)-[:IS]->(Bug), +(Yanmega)-[:IS]->(Flying), +(Leafeon)-[:IS]->(Grass), +(Glaceon)-[:IS]->(Ice), +(Gliscor)-[:IS]->(Ground), +(Gliscor)-[:IS]->(Flying), +(Mamoswine)-[:IS]->(Ice), +(Mamoswine)-[:IS]->(Ground), +(PorygonZ)-[:IS]->(Normal), +(Gallade)-[:IS]->(Psychic), +(Gallade)-[:IS]->(Fighting), +(MegaGallade)-[:IS]->(Psychic), +(MegaGallade)-[:IS]->(Fighting), +(Probopass)-[:IS]->(Rock), +(Probopass)-[:IS]->(Steel), +(Dusknoir)-[:IS]->(Ghost), +(Froslass)-[:IS]->(Ice), +(Froslass)-[:IS]->(Ghost), +(Rotom)-[:IS]->(Electric), +(Rotom)-[:IS]->(Ghost), +(RotomRotom)-[:IS]->(Electric), +(RotomRotom)-[:IS]->(Ghost), +(RotomHeatRotom)-[:IS]->(Electric), +(RotomHeatRotom)-[:IS]->(Fire), +(RotomWashRotom)-[:IS]->(Electric), +(RotomWashRotom)-[:IS]->(Water), +(RotomFrostRotom)-[:IS]->(Electric), +(RotomFrostRotom)-[:IS]->(Ice), +(RotomFanRotom)-[:IS]->(Electric), +(RotomFanRotom)-[:IS]->(Flying), +(RotomMowRotom)-[:IS]->(Electric), +(RotomMowRotom)-[:IS]->(Grass), +(Uxie)-[:IS]->(Psychic), +(Mesprit)-[:IS]->(Psychic), +(Azelf)-[:IS]->(Psychic), +(Dialga)-[:IS]->(Steel), +(Dialga)-[:IS]->(Dragon), +(Palkia)-[:IS]->(Water), +(Palkia)-[:IS]->(Dragon), +(Heatran)-[:IS]->(Fire), +(Heatran)-[:IS]->(Steel), +(Regigigas)-[:IS]->(Normal), +(Giratina)-[:IS]->(Ghost), +(Giratina)-[:IS]->(Dragon), +(GiratinaAlteredForme)-[:IS]->(Ghost), +(GiratinaAlteredForme)-[:IS]->(Dragon), +(GiratinaOriginForme)-[:IS]->(Ghost), +(GiratinaOriginForme)-[:IS]->(Dragon), +(Cresselia)-[:IS]->(Psychic), +(Phione)-[:IS]->(Water), +(Manaphy)-[:IS]->(Water), +(Darkrai)-[:IS]->(Dark), +(Shaymin)-[:IS]->(Grass), +(ShayminLandForme)-[:IS]->(Grass), +(ShayminSkyForme)-[:IS]->(Grass), +(ShayminSkyForme)-[:IS]->(Flying), +(Arceus)-[:IS]->(Normal), +(ArceusNormal)-[:IS]->(Normal), +(ArceusFire)-[:IS]->(Fire), +(ArceusWater)-[:IS]->(Water), +(ArceusElectric)-[:IS]->(Electric), +(ArceusGrass)-[:IS]->(Grass), +(ArceusIce)-[:IS]->(Ice), +(ArceusFighting)-[:IS]->(Fighting), +(ArceusPoison)-[:IS]->(Poison), +(ArceusGround)-[:IS]->(Ground), +(ArceusFlying)-[:IS]->(Flying), +(ArceusPsychic)-[:IS]->(Psychic), +(ArceusBug)-[:IS]->(Bug), +(ArceusRock)-[:IS]->(Rock), +(ArceusGhost)-[:IS]->(Ghost), +(ArceusDragon)-[:IS]->(Dragon), +(ArceusDark)-[:IS]->(Dark), +(ArceusSteel)-[:IS]->(Steel), +(ArceusFairy)-[:IS]->(Fairy), +(Victini)-[:IS]->(Psychic), +(Victini)-[:IS]->(Fire), +(Snivy)-[:IS]->(Grass), +(Servine)-[:IS]->(Grass), +(Serperior)-[:IS]->(Grass), +(Tepig)-[:IS]->(Fire), +(Pignite)-[:IS]->(Fire), +(Pignite)-[:IS]->(Fighting), +(Emboar)-[:IS]->(Fire), +(Emboar)-[:IS]->(Fighting), +(Oshawott)-[:IS]->(Water), +(Dewott)-[:IS]->(Water), +(Samurott)-[:IS]->(Water), +(Patrat)-[:IS]->(Normal), +(Watchog)-[:IS]->(Normal), +(Lillipup)-[:IS]->(Normal), +(Herdier)-[:IS]->(Normal), +(Stoutland)-[:IS]->(Normal), +(Purrloin)-[:IS]->(Dark), +(Liepard)-[:IS]->(Dark), +(Pansage)-[:IS]->(Grass), +(Simisage)-[:IS]->(Grass), +(Pansear)-[:IS]->(Fire), +(Simisear)-[:IS]->(Fire), +(Panpour)-[:IS]->(Water), +(Simipour)-[:IS]->(Water), +(Munna)-[:IS]->(Psychic), +(Musharna)-[:IS]->(Psychic), +(Pidove)-[:IS]->(Normal), +(Pidove)-[:IS]->(Flying), +(Tranquill)-[:IS]->(Normal), +(Tranquill)-[:IS]->(Flying), +(Unfezant)-[:IS]->(Normal), +(Unfezant)-[:IS]->(Flying), +(Blitzle)-[:IS]->(Electric), +(Zebstrika)-[:IS]->(Electric), +(Roggenrola)-[:IS]->(Rock), +(Boldore)-[:IS]->(Rock), +(Gigalith)-[:IS]->(Rock), +(Woobat)-[:IS]->(Psychic), +(Woobat)-[:IS]->(Flying), +(Swoobat)-[:IS]->(Psychic), +(Swoobat)-[:IS]->(Flying), +(Drilbur)-[:IS]->(Ground), +(Excadrill)-[:IS]->(Ground), +(Excadrill)-[:IS]->(Steel), +(Audino)-[:IS]->(Normal), +(MegaAudino)-[:IS]->(Normal), +(MegaAudino)-[:IS]->(Fairy), +(Timburr)-[:IS]->(Fighting), +(Gurdurr)-[:IS]->(Fighting), +(Conkeldurr)-[:IS]->(Fighting), +(Tympole)-[:IS]->(Water), +(Palpitoad)-[:IS]->(Water), +(Palpitoad)-[:IS]->(Ground), +(Seismitoad)-[:IS]->(Water), +(Seismitoad)-[:IS]->(Ground), +(Throh)-[:IS]->(Fighting), +(Sawk)-[:IS]->(Fighting), +(Sewaddle)-[:IS]->(Bug), +(Sewaddle)-[:IS]->(Grass), +(Swadloon)-[:IS]->(Bug), +(Swadloon)-[:IS]->(Grass), +(Leavanny)-[:IS]->(Bug), +(Leavanny)-[:IS]->(Grass), +(Venipede)-[:IS]->(Bug), +(Venipede)-[:IS]->(Poison), +(Whirlipede)-[:IS]->(Bug), +(Whirlipede)-[:IS]->(Poison), +(Scolipede)-[:IS]->(Bug), +(Scolipede)-[:IS]->(Poison), +(Cottonee)-[:IS]->(Grass), +(Cottonee)-[:IS]->(Fairy), +(Whimsicott)-[:IS]->(Grass), +(Whimsicott)-[:IS]->(Fairy), +(Petilil)-[:IS]->(Grass), +(Lilligant)-[:IS]->(Grass), +(Basculin)-[:IS]->(Water), +(BasculinRedStripedForm)-[:IS]->(Water), +(BasculinBlueStripedForm)-[:IS]->(Water), +(Sandile)-[:IS]->(Ground), +(Sandile)-[:IS]->(Dark), +(Krokorok)-[:IS]->(Ground), +(Krokorok)-[:IS]->(Dark), +(Krookodile)-[:IS]->(Ground), +(Krookodile)-[:IS]->(Dark), +(Darumaka)-[:IS]->(Fire), +(Darmanitan)-[:IS]->(Fire), +(DarmanitanStandardMode)-[:IS]->(Fire), +(DarmanitanZenMode)-[:IS]->(Fire), +(DarmanitanZenMode)-[:IS]->(Psychic), +(Maractus)-[:IS]->(Grass), +(Dwebble)-[:IS]->(Bug), +(Dwebble)-[:IS]->(Rock), +(Crustle)-[:IS]->(Bug), +(Crustle)-[:IS]->(Rock), +(Scraggy)-[:IS]->(Dark), +(Scraggy)-[:IS]->(Fighting), +(Scrafty)-[:IS]->(Dark), +(Scrafty)-[:IS]->(Fighting), +(Sigilyph)-[:IS]->(Psychic), +(Sigilyph)-[:IS]->(Flying), +(Yamask)-[:IS]->(Ghost), +(Cofagrigus)-[:IS]->(Ghost), +(Tirtouga)-[:IS]->(Water), +(Tirtouga)-[:IS]->(Rock), +(Carracosta)-[:IS]->(Water), +(Carracosta)-[:IS]->(Rock), +(Archen)-[:IS]->(Rock), +(Archen)-[:IS]->(Flying), +(Archeops)-[:IS]->(Rock), +(Archeops)-[:IS]->(Flying), +(Trubbish)-[:IS]->(Poison), +(Garbodor)-[:IS]->(Poison), +(Zorua)-[:IS]->(Dark), +(Zoroark)-[:IS]->(Dark), +(Minccino)-[:IS]->(Normal), +(Cinccino)-[:IS]->(Normal), +(Gothita)-[:IS]->(Psychic), +(Gothorita)-[:IS]->(Psychic), +(Gothitelle)-[:IS]->(Psychic), +(Solosis)-[:IS]->(Psychic), +(Duosion)-[:IS]->(Psychic), +(Reuniclus)-[:IS]->(Psychic), +(Ducklett)-[:IS]->(Water), +(Ducklett)-[:IS]->(Flying), +(Swanna)-[:IS]->(Water), +(Swanna)-[:IS]->(Flying), +(Vanillite)-[:IS]->(Ice), +(Vanillish)-[:IS]->(Ice), +(Vanilluxe)-[:IS]->(Ice), +(Deerling)-[:IS]->(Normal), +(Deerling)-[:IS]->(Grass), +(DeerlingSpringForm)-[:IS]->(Normal), +(DeerlingSpringForm)-[:IS]->(Grass), +(DeerlingSummerForm)-[:IS]->(Normal), +(DeerlingSummerForm)-[:IS]->(Grass), +(DeerlingAutumnForm)-[:IS]->(Normal), +(DeerlingAutumnForm)-[:IS]->(Grass), +(DeerlingWinterForm)-[:IS]->(Normal), +(DeerlingWinterForm)-[:IS]->(Grass), +(Sawsbuck)-[:IS]->(Normal), +(Sawsbuck)-[:IS]->(Grass), +(SawsbuckSpringForm)-[:IS]->(Normal), +(SawsbuckSpringForm)-[:IS]->(Grass), +(SawsbuckSummerForm)-[:IS]->(Normal), +(SawsbuckSummerForm)-[:IS]->(Grass), +(SawsbuckAutumnForm)-[:IS]->(Normal), +(SawsbuckAutumnForm)-[:IS]->(Grass), +(SawsbuckWinterForm)-[:IS]->(Normal), +(SawsbuckWinterForm)-[:IS]->(Grass), +(Emolga)-[:IS]->(Electric), +(Emolga)-[:IS]->(Flying), +(Karrablast)-[:IS]->(Bug), +(Escavalier)-[:IS]->(Bug), +(Escavalier)-[:IS]->(Steel), +(Foongus)-[:IS]->(Grass), +(Foongus)-[:IS]->(Poison), +(Amoonguss)-[:IS]->(Grass), +(Amoonguss)-[:IS]->(Poison), +(Frillish)-[:IS]->(Water), +(Frillish)-[:IS]->(Ghost), +(Jellicent)-[:IS]->(Water), +(Jellicent)-[:IS]->(Ghost), +(Alomomola)-[:IS]->(Water), +(Joltik)-[:IS]->(Bug), +(Joltik)-[:IS]->(Electric), +(Galvantula)-[:IS]->(Bug), +(Galvantula)-[:IS]->(Electric), +(Ferroseed)-[:IS]->(Grass), +(Ferroseed)-[:IS]->(Steel), +(Ferrothorn)-[:IS]->(Grass), +(Ferrothorn)-[:IS]->(Steel), +(Klink)-[:IS]->(Steel), +(Klang)-[:IS]->(Steel), +(Klinklang)-[:IS]->(Steel), +(Tynamo)-[:IS]->(Electric), +(Eelektrik)-[:IS]->(Electric), +(Eelektross)-[:IS]->(Electric), +(Elgyem)-[:IS]->(Psychic), +(Beheeyem)-[:IS]->(Psychic), +(Litwick)-[:IS]->(Ghost), +(Litwick)-[:IS]->(Fire), +(Lampent)-[:IS]->(Ghost), +(Lampent)-[:IS]->(Fire), +(Chandelure)-[:IS]->(Ghost), +(Chandelure)-[:IS]->(Fire), +(Axew)-[:IS]->(Dragon), +(Fraxure)-[:IS]->(Dragon), +(Haxorus)-[:IS]->(Dragon), +(Cubchoo)-[:IS]->(Ice), +(Beartic)-[:IS]->(Ice), +(Cryogonal)-[:IS]->(Ice), +(Shelmet)-[:IS]->(Bug), +(Accelgor)-[:IS]->(Bug), +(Stunfisk)-[:IS]->(Ground), +(Stunfisk)-[:IS]->(Electric), +(Mienfoo)-[:IS]->(Fighting), +(Mienshao)-[:IS]->(Fighting), +(Druddigon)-[:IS]->(Dragon), +(Golett)-[:IS]->(Ground), +(Golett)-[:IS]->(Ghost), +(Golurk)-[:IS]->(Ground), +(Golurk)-[:IS]->(Ghost), +(Pawniard)-[:IS]->(Dark), +(Pawniard)-[:IS]->(Steel), +(Bisharp)-[:IS]->(Dark), +(Bisharp)-[:IS]->(Steel), +(Bouffalant)-[:IS]->(Normal), +(Rufflet)-[:IS]->(Normal), +(Rufflet)-[:IS]->(Flying), +(Braviary)-[:IS]->(Normal), +(Braviary)-[:IS]->(Flying), +(Vullaby)-[:IS]->(Dark), +(Vullaby)-[:IS]->(Flying), +(Mandibuzz)-[:IS]->(Dark), +(Mandibuzz)-[:IS]->(Flying), +(Heatmor)-[:IS]->(Fire), +(Durant)-[:IS]->(Bug), +(Durant)-[:IS]->(Steel), +(Deino)-[:IS]->(Dark), +(Deino)-[:IS]->(Dragon), +(Zweilous)-[:IS]->(Dark), +(Zweilous)-[:IS]->(Dragon), +(Hydreigon)-[:IS]->(Dark), +(Hydreigon)-[:IS]->(Dragon), +(Larvesta)-[:IS]->(Bug), +(Larvesta)-[:IS]->(Fire), +(Volcarona)-[:IS]->(Bug), +(Volcarona)-[:IS]->(Fire), +(Cobalion)-[:IS]->(Steel), +(Cobalion)-[:IS]->(Fighting), +(Terrakion)-[:IS]->(Rock), +(Terrakion)-[:IS]->(Fighting), +(Virizion)-[:IS]->(Grass), +(Virizion)-[:IS]->(Fighting), +(Tornadus)-[:IS]->(Flying), +(TornadusIncarnateForme)-[:IS]->(Flying), +(TornadusTherianForme)-[:IS]->(Flying), +(Thundurus)-[:IS]->(Electric), +(Thundurus)-[:IS]->(Flying), +(ThundurusIncarnateForme)-[:IS]->(Electric), +(ThundurusIncarnateForme)-[:IS]->(Flying), +(ThundurusTherianForme)-[:IS]->(Electric), +(ThundurusTherianForme)-[:IS]->(Flying), +(Reshiram)-[:IS]->(Dragon), +(Reshiram)-[:IS]->(Fire), +(ReshiramReshiram)-[:IS]->(Dragon), +(ReshiramReshiram)-[:IS]->(Fire), +(ReshiramInOverdrive)-[:IS]->(Dragon), +(ReshiramInOverdrive)-[:IS]->(Fire), +(Zekrom)-[:IS]->(Dragon), +(Zekrom)-[:IS]->(Electric), +(ZekromZekrom)-[:IS]->(Dragon), +(ZekromZekrom)-[:IS]->(Electric), +(ZekromInOverdrive)-[:IS]->(Dragon), +(ZekromInOverdrive)-[:IS]->(Electric), +(Landorus)-[:IS]->(Ground), +(Landorus)-[:IS]->(Flying), +(LandorusIncarnateForme)-[:IS]->(Ground), +(LandorusIncarnateForme)-[:IS]->(Flying), +(LandorusTherianForme)-[:IS]->(Ground), +(LandorusTherianForme)-[:IS]->(Flying), +(Kyurem)-[:IS]->(Dragon), +(Kyurem)-[:IS]->(Ice), +(KyuremKyurem)-[:IS]->(Dragon), +(KyuremKyurem)-[:IS]->(Ice), +(KyuremWhiteKyurem)-[:IS]->(Dragon), +(KyuremWhiteKyurem)-[:IS]->(Ice), +(KyuremBlackKyurem)-[:IS]->(Dragon), +(KyuremBlackKyurem)-[:IS]->(Ice), +(KyuremInOverdrive)-[:IS]->(Dragon), +(KyuremInOverdrive)-[:IS]->(Ice), +(Keldeo)-[:IS]->(Water), +(Keldeo)-[:IS]->(Fighting), +(KeldeoOrdinaryForm)-[:IS]->(Water), +(KeldeoOrdinaryForm)-[:IS]->(Fighting), +(KeldeoResoluteForm)-[:IS]->(Water), +(KeldeoResoluteForm)-[:IS]->(Fighting), +(Meloetta)-[:IS]->(Normal), +(Meloetta)-[:IS]->(Psychic), +(MeloettaAriaForme)-[:IS]->(Normal), +(MeloettaAriaForme)-[:IS]->(Psychic), +(MeloettaPirouetteForme)-[:IS]->(Normal), +(MeloettaPirouetteForme)-[:IS]->(Fighting), +(Genesect)-[:IS]->(Bug), +(Genesect)-[:IS]->(Steel), +(GenesectNormalGenesect)-[:IS]->(Bug), +(GenesectNormalGenesect)-[:IS]->(Steel), +(GenesectShockDriveGenesect)-[:IS]->(Bug), +(GenesectShockDriveGenesect)-[:IS]->(Steel), +(GenesectBurnDriveGenesect)-[:IS]->(Bug), +(GenesectBurnDriveGenesect)-[:IS]->(Steel), +(GenesectChillDriveGenesect)-[:IS]->(Bug), +(GenesectChillDriveGenesect)-[:IS]->(Steel), +(GenesectDouseDriveGenesect)-[:IS]->(Bug), +(GenesectDouseDriveGenesect)-[:IS]->(Steel), +(Chespin)-[:IS]->(Grass), +(Quilladin)-[:IS]->(Grass), +(Chesnaught)-[:IS]->(Grass), +(Chesnaught)-[:IS]->(Fighting), +(Fennekin)-[:IS]->(Fire), +(Braixen)-[:IS]->(Fire), +(Delphox)-[:IS]->(Fire), +(Delphox)-[:IS]->(Psychic), +(Froakie)-[:IS]->(Water), +(Frogadier)-[:IS]->(Water), +(Greninja)-[:IS]->(Water), +(Greninja)-[:IS]->(Dark), +(GreninjaGreninja)-[:IS]->(Water), +(GreninjaGreninja)-[:IS]->(Dark), +(GreninjaAshGreninja)-[:IS]->(Water), +(GreninjaAshGreninja)-[:IS]->(Dark), +(Bunnelby)-[:IS]->(Normal), +(Diggersby)-[:IS]->(Normal), +(Diggersby)-[:IS]->(Ground), +(Fletchling)-[:IS]->(Normal), +(Fletchling)-[:IS]->(Flying), +(Fletchinder)-[:IS]->(Fire), +(Fletchinder)-[:IS]->(Flying), +(Talonflame)-[:IS]->(Fire), +(Talonflame)-[:IS]->(Flying), +(Scatterbug)-[:IS]->(Bug), +(Spewpa)-[:IS]->(Bug), +(Vivillon)-[:IS]->(Bug), +(Vivillon)-[:IS]->(Flying), +(VivillonArchipelago)-[:IS]->(Bug), +(VivillonArchipelago)-[:IS]->(Flying), +(VivillonContinental)-[:IS]->(Bug), +(VivillonContinental)-[:IS]->(Flying), +(VivillonElegant)-[:IS]->(Bug), +(VivillonElegant)-[:IS]->(Flying), +(VivillonGarden)-[:IS]->(Bug), +(VivillonGarden)-[:IS]->(Flying), +(VivillonHighPlains)-[:IS]->(Bug), +(VivillonHighPlains)-[:IS]->(Flying), +(VivillonIcySnow)-[:IS]->(Bug), +(VivillonIcySnow)-[:IS]->(Flying), +(VivillonJungle)-[:IS]->(Bug), +(VivillonJungle)-[:IS]->(Flying), +(VivillonMarine)-[:IS]->(Bug), +(VivillonMarine)-[:IS]->(Flying), +(VivillonMeadow)-[:IS]->(Bug), +(VivillonMeadow)-[:IS]->(Flying), +(VivillonModern)-[:IS]->(Bug), +(VivillonModern)-[:IS]->(Flying), +(VivillonMonsoon)-[:IS]->(Bug), +(VivillonMonsoon)-[:IS]->(Flying), +(VivillonOcean)-[:IS]->(Bug), +(VivillonOcean)-[:IS]->(Flying), +(VivillonPolar)-[:IS]->(Bug), +(VivillonPolar)-[:IS]->(Flying), +(VivillonRiver)-[:IS]->(Bug), +(VivillonRiver)-[:IS]->(Flying), +(VivillonSandstorm)-[:IS]->(Bug), +(VivillonSandstorm)-[:IS]->(Flying), +(VivillonSavanna)-[:IS]->(Bug), +(VivillonSavanna)-[:IS]->(Flying), +(VivillonSun)-[:IS]->(Bug), +(VivillonSun)-[:IS]->(Flying), +(VivillonTundra)-[:IS]->(Bug), +(VivillonTundra)-[:IS]->(Flying), +(VivillonPokeBall)-[:IS]->(Bug), +(VivillonPokeBall)-[:IS]->(Flying), +(VivillonFancy)-[:IS]->(Bug), +(VivillonFancy)-[:IS]->(Flying), +(Litleo)-[:IS]->(Fire), +(Litleo)-[:IS]->(Normal), +(Pyroar)-[:IS]->(Fire), +(Pyroar)-[:IS]->(Normal), +(Flabebe)-[:IS]->(Fairy), +(FlabebeRedFlower)-[:IS]->(Fairy), +(FlabebeYellowFlower)-[:IS]->(Fairy), +(FlabebeOrangeFlower)-[:IS]->(Fairy), +(FlabebeBlueFlower)-[:IS]->(Fairy), +(FlabebeWhiteFlower)-[:IS]->(Fairy), +(Floette)-[:IS]->(Fairy), +(FloetteRedFlower)-[:IS]->(Fairy), +(FloetteYellowFlower)-[:IS]->(Fairy), +(FloetteOrangeFlower)-[:IS]->(Fairy), +(FloetteBlueFlower)-[:IS]->(Fairy), +(FloetteWhiteFlower)-[:IS]->(Fairy), +(Florges)-[:IS]->(Fairy), +(FlorgesRedFlower)-[:IS]->(Fairy), +(FlorgesYellowFlower)-[:IS]->(Fairy), +(FlorgesOrangeFlower)-[:IS]->(Fairy), +(FlorgesBlueFlower)-[:IS]->(Fairy), +(FlorgesWhiteFlower)-[:IS]->(Fairy), +(Skiddo)-[:IS]->(Grass), +(Gogoat)-[:IS]->(Grass), +(Pancham)-[:IS]->(Fighting), +(Pangoro)-[:IS]->(Fighting), +(Pangoro)-[:IS]->(Dark), +(Furfrou)-[:IS]->(Normal), +(FurfrouNaturalForm)-[:IS]->(Normal), +(FurfrouHeartTrim)-[:IS]->(Normal), +(FurfrouStarTrim)-[:IS]->(Normal), +(FurfrouDiamondTrim)-[:IS]->(Normal), +(FurfrouDebutanteTrim)-[:IS]->(Normal), +(FurfrouMatronTrim)-[:IS]->(Normal), +(FurfrouDandyTrim)-[:IS]->(Normal), +(FurfrouLaReineTrim)-[:IS]->(Normal), +(FurfrouKabukiTrim)-[:IS]->(Normal), +(FurfrouPharaohTrim)-[:IS]->(Normal), +(Espurr)-[:IS]->(Psychic), +(Meowstic)-[:IS]->(Psychic), +(Honedge)-[:IS]->(Steel), +(Honedge)-[:IS]->(Ghost), +(Doublade)-[:IS]->(Steel), +(Doublade)-[:IS]->(Ghost), +(Aegislash)-[:IS]->(Steel), +(Aegislash)-[:IS]->(Ghost), +(AegislashBladeForme)-[:IS]->(Steel), +(AegislashBladeForme)-[:IS]->(Ghost), +(AegislashShieldForme)-[:IS]->(Steel), +(AegislashShieldForme)-[:IS]->(Ghost), +(Spritzee)-[:IS]->(Fairy), +(Aromatisse)-[:IS]->(Fairy), +(Swirlix)-[:IS]->(Fairy), +(Slurpuff)-[:IS]->(Fairy), +(Inkay)-[:IS]->(Dark), +(Inkay)-[:IS]->(Psychic), +(Malamar)-[:IS]->(Dark), +(Malamar)-[:IS]->(Psychic), +(Binacle)-[:IS]->(Rock), +(Binacle)-[:IS]->(Water), +(Barbaracle)-[:IS]->(Rock), +(Barbaracle)-[:IS]->(Water), +(Skrelp)-[:IS]->(Poison), +(Skrelp)-[:IS]->(Water), +(Dragalge)-[:IS]->(Poison), +(Dragalge)-[:IS]->(Dragon), +(Clauncher)-[:IS]->(Water), +(Clawitzer)-[:IS]->(Water), +(Helioptile)-[:IS]->(Electric), +(Helioptile)-[:IS]->(Normal), +(Heliolisk)-[:IS]->(Electric), +(Heliolisk)-[:IS]->(Normal), +(Tyrunt)-[:IS]->(Rock), +(Tyrunt)-[:IS]->(Dragon), +(Tyrantrum)-[:IS]->(Rock), +(Tyrantrum)-[:IS]->(Dragon), +(Amaura)-[:IS]->(Rock), +(Amaura)-[:IS]->(Ice), +(Aurorus)-[:IS]->(Rock), +(Aurorus)-[:IS]->(Ice), +(Sylveon)-[:IS]->(Fairy), +(Hawlucha)-[:IS]->(Fighting), +(Hawlucha)-[:IS]->(Flying), +(Dedenne)-[:IS]->(Electric), +(Dedenne)-[:IS]->(Fairy), +(Carbink)-[:IS]->(Rock), +(Carbink)-[:IS]->(Fairy), +(Goomy)-[:IS]->(Dragon), +(Sliggoo)-[:IS]->(Dragon), +(Goodra)-[:IS]->(Dragon), +(Klefki)-[:IS]->(Steel), +(Klefki)-[:IS]->(Fairy), +(Phantump)-[:IS]->(Ghost), +(Phantump)-[:IS]->(Grass), +(Trevenant)-[:IS]->(Ghost), +(Trevenant)-[:IS]->(Grass), +(Pumpkaboo)-[:IS]->(Ghost), +(Pumpkaboo)-[:IS]->(Grass), +(PumpkabooSmallSize)-[:IS]->(Ghost), +(PumpkabooSmallSize)-[:IS]->(Grass), +(PumpkabooAverageSize)-[:IS]->(Ghost), +(PumpkabooAverageSize)-[:IS]->(Grass), +(PumpkabooLargeSize)-[:IS]->(Ghost), +(PumpkabooLargeSize)-[:IS]->(Grass), +(PumpkabooSuperSize)-[:IS]->(Ghost), +(PumpkabooSuperSize)-[:IS]->(Grass), +(Gourgeist)-[:IS]->(Ghost), +(Gourgeist)-[:IS]->(Grass), +(GourgeistSmallSize)-[:IS]->(Ghost), +(GourgeistSmallSize)-[:IS]->(Grass), +(GourgeistAverageSize)-[:IS]->(Ghost), +(GourgeistAverageSize)-[:IS]->(Grass), +(GourgeistLargeSize)-[:IS]->(Ghost), +(GourgeistLargeSize)-[:IS]->(Grass), +(GourgeistSuperSize)-[:IS]->(Ghost), +(GourgeistSuperSize)-[:IS]->(Grass), +(Bergmite)-[:IS]->(Ice), +(Avalugg)-[:IS]->(Ice), +(Noibat)-[:IS]->(Flying), +(Noibat)-[:IS]->(Dragon), +(Noivern)-[:IS]->(Flying), +(Noivern)-[:IS]->(Dragon), +(Xerneas)-[:IS]->(Fairy), +(XerneasNeutralMode)-[:IS]->(Fairy), +(XerneasActiveMode)-[:IS]->(Fairy), +(Yveltal)-[:IS]->(Dark), +(Yveltal)-[:IS]->(Flying), +(Zygarde)-[:IS]->(Dragon), +(Zygarde)-[:IS]->(Ground), +(Zygarde10Forme)-[:IS]->(Dragon), +(Zygarde10Forme)-[:IS]->(Ground), +(Zygarde50Forme)-[:IS]->(Dragon), +(Zygarde50Forme)-[:IS]->(Ground), +(ZygardeCompleteForme)-[:IS]->(Dragon), +(ZygardeCompleteForme)-[:IS]->(Ground), +(Diancie)-[:IS]->(Rock), +(Diancie)-[:IS]->(Fairy), +(MegaDiancie)-[:IS]->(Rock), +(MegaDiancie)-[:IS]->(Fairy), +(Hoopa)-[:IS]->(Psychic), +(Hoopa)-[:IS]->(Ghost), +(HoopaHoopaConfined)-[:IS]->(Psychic), +(HoopaHoopaConfined)-[:IS]->(Ghost), +(HoopaHoopaUnbound)-[:IS]->(Psychic), +(HoopaHoopaUnbound)-[:IS]->(Dark), +(Volcanion)-[:IS]->(Fire), +(Volcanion)-[:IS]->(Water), +(Rowlet)-[:IS]->(Grass), +(Rowlet)-[:IS]->(Flying), +(Dartrix)-[:IS]->(Grass), +(Dartrix)-[:IS]->(Flying), +(Decidueye)-[:IS]->(Grass), +(Decidueye)-[:IS]->(Ghost), +(Litten)-[:IS]->(Fire), +(Torracat)-[:IS]->(Fire), +(Incineroar)-[:IS]->(Fire), +(Incineroar)-[:IS]->(Dark), +(Popplio)-[:IS]->(Water), +(Brionne)-[:IS]->(Water), +(Primarina)-[:IS]->(Water), +(Primarina)-[:IS]->(Fairy), +(Pikipek)-[:IS]->(Normal), +(Pikipek)-[:IS]->(Flying), +(Trumbeak)-[:IS]->(Normal), +(Trumbeak)-[:IS]->(Flying), +(Toucannon)-[:IS]->(Normal), +(Toucannon)-[:IS]->(Flying), +(Yungoos)-[:IS]->(Normal), +(Gumshoos)-[:IS]->(Normal), +(Grubbin)-[:IS]->(Bug), +(Charjabug)-[:IS]->(Bug), +(Charjabug)-[:IS]->(Electric), +(Vikavolt)-[:IS]->(Bug), +(Vikavolt)-[:IS]->(Electric), +(Crabrawler)-[:IS]->(Fighting), +(Crabominable)-[:IS]->(Fighting), +(Crabominable)-[:IS]->(Ice), +(Oricorio)-[:IS]->(Fire), +(Oricorio)-[:IS]->(Flying), +(OricorioBaileStyle)-[:IS]->(Fire), +(OricorioBaileStyle)-[:IS]->(Flying), +(OricorioPomPomStyle)-[:IS]->(Electric), +(OricorioPomPomStyle)-[:IS]->(Flying), +(OricorioPauStyle)-[:IS]->(Psychic), +(OricorioPauStyle)-[:IS]->(Flying), +(OricorioSensuStyle)-[:IS]->(Ghost), +(OricorioSensuStyle)-[:IS]->(Flying), +(Cutiefly)-[:IS]->(Bug), +(Cutiefly)-[:IS]->(Fairy), +(Ribombee)-[:IS]->(Bug), +(Ribombee)-[:IS]->(Fairy), +(Rockruff)-[:IS]->(Rock), +(Lycanroc)-[:IS]->(Rock), +(LycanrocMiddayForm)-[:IS]->(Rock), +(LycanrocMidnightForm)-[:IS]->(Rock), +(LycanrocDuskForm)-[:IS]->(Rock), +(Wishiwashi)-[:IS]->(Water), +(WishiwashiSoloForm)-[:IS]->(Water), +(WishiwashiSchoolForm)-[:IS]->(Water), +(Mareanie)-[:IS]->(Poison), +(Mareanie)-[:IS]->(Water), +(Toxapex)-[:IS]->(Poison), +(Toxapex)-[:IS]->(Water), +(Mudbray)-[:IS]->(Ground), +(Mudsdale)-[:IS]->(Ground), +(Dewpider)-[:IS]->(Water), +(Dewpider)-[:IS]->(Bug), +(Araquanid)-[:IS]->(Water), +(Araquanid)-[:IS]->(Bug), +(Fomantis)-[:IS]->(Grass), +(Lurantis)-[:IS]->(Grass), +(Morelull)-[:IS]->(Grass), +(Morelull)-[:IS]->(Fairy), +(Shiinotic)-[:IS]->(Grass), +(Shiinotic)-[:IS]->(Fairy), +(Salandit)-[:IS]->(Poison), +(Salandit)-[:IS]->(Fire), +(Salazzle)-[:IS]->(Poison), +(Salazzle)-[:IS]->(Fire), +(Stufful)-[:IS]->(Normal), +(Stufful)-[:IS]->(Fighting), +(Bewear)-[:IS]->(Normal), +(Bewear)-[:IS]->(Fighting), +(Bounsweet)-[:IS]->(Grass), +(Steenee)-[:IS]->(Grass), +(Tsareena)-[:IS]->(Grass), +(Comfey)-[:IS]->(Fairy), +(Oranguru)-[:IS]->(Normal), +(Oranguru)-[:IS]->(Psychic), +(Passimian)-[:IS]->(Fighting), +(Wimpod)-[:IS]->(Bug), +(Wimpod)-[:IS]->(Water), +(Golisopod)-[:IS]->(Bug), +(Golisopod)-[:IS]->(Water), +(Sandygast)-[:IS]->(Ghost), +(Sandygast)-[:IS]->(Ground), +(Palossand)-[:IS]->(Ghost), +(Palossand)-[:IS]->(Ground), +(Pyukumuku)-[:IS]->(Water), +(TypeNull)-[:IS]->(Normal), +(Silvally)-[:IS]->(Normal), +(SilvallyNormal)-[:IS]->(Normal), +(SilvallyFighting)-[:IS]->(Fighting), +(SilvallyFlying)-[:IS]->(Flying), +(SilvallyPoison)-[:IS]->(Poison), +(SilvallyGround)-[:IS]->(Ground), +(SilvallyRock)-[:IS]->(Rock), +(SilvallyBug)-[:IS]->(Bug), +(SilvallyGhost)-[:IS]->(Ghost), +(SilvallySteel)-[:IS]->(Steel), +(SilvallyFire)-[:IS]->(Fire), +(SilvallyWater)-[:IS]->(Water), +(SilvallyGrass)-[:IS]->(Grass), +(SilvallyElectric)-[:IS]->(Electric), +(SilvallyPsychic)-[:IS]->(Psychic), +(SilvallyIce)-[:IS]->(Ice), +(SilvallyDragon)-[:IS]->(Dragon), +(SilvallyDark)-[:IS]->(Dark), +(SilvallyFairy)-[:IS]->(Fairy), +(Minior)-[:IS]->(Rock), +(Minior)-[:IS]->(Flying), +(MiniorMeteorForm)-[:IS]->(Rock), +(MiniorMeteorForm)-[:IS]->(Flying), +(MiniorCore)-[:IS]->(Rock), +(MiniorCore)-[:IS]->(Flying), +(MiniorRedCore)-[:IS]->(Rock), +(MiniorRedCore)-[:IS]->(Flying), +(MiniorOrangeCore)-[:IS]->(Rock), +(MiniorOrangeCore)-[:IS]->(Flying), +(MiniorYellowCore)-[:IS]->(Rock), +(MiniorYellowCore)-[:IS]->(Flying), +(MiniorGreenCore)-[:IS]->(Rock), +(MiniorGreenCore)-[:IS]->(Flying), +(MiniorBlueCore)-[:IS]->(Rock), +(MiniorBlueCore)-[:IS]->(Flying), +(MiniorIndigoCore)-[:IS]->(Rock), +(MiniorIndigoCore)-[:IS]->(Flying), +(MiniorVioletCore)-[:IS]->(Rock), +(MiniorVioletCore)-[:IS]->(Flying), +(Komala)-[:IS]->(Normal), +(Turtonator)-[:IS]->(Fire), +(Turtonator)-[:IS]->(Dragon), +(Togedemaru)-[:IS]->(Electric), +(Togedemaru)-[:IS]->(Steel), +(Mimikyu)-[:IS]->(Ghost), +(Mimikyu)-[:IS]->(Fairy), +(MimikyuDisguisedForm)-[:IS]->(Ghost), +(MimikyuDisguisedForm)-[:IS]->(Fairy), +(MimikyuBustedForm)-[:IS]->(Ghost), +(MimikyuBustedForm)-[:IS]->(Fairy), +(Bruxish)-[:IS]->(Water), +(Bruxish)-[:IS]->(Psychic), +(Drampa)-[:IS]->(Normal), +(Drampa)-[:IS]->(Dragon), +(Dhelmise)-[:IS]->(Ghost), +(Dhelmise)-[:IS]->(Grass), +(Jangmoo)-[:IS]->(Dragon), +(Hakamoo)-[:IS]->(Dragon), +(Hakamoo)-[:IS]->(Fighting), +(Kommoo)-[:IS]->(Dragon), +(Kommoo)-[:IS]->(Fighting), +(TapuKoko)-[:IS]->(Electric), +(TapuKoko)-[:IS]->(Fairy), +(TapuLele)-[:IS]->(Psychic), +(TapuLele)-[:IS]->(Fairy), +(TapuBulu)-[:IS]->(Grass), +(TapuBulu)-[:IS]->(Fairy), +(TapuFini)-[:IS]->(Water), +(TapuFini)-[:IS]->(Fairy), +(Cosmog)-[:IS]->(Psychic), +(Cosmoem)-[:IS]->(Psychic), +(Solgaleo)-[:IS]->(Psychic), +(Solgaleo)-[:IS]->(Steel), +(SolgaleoSolgaleo)-[:IS]->(Psychic), +(SolgaleoSolgaleo)-[:IS]->(Steel), +(SolgaleoRadiantSunphase)-[:IS]->(Psychic), +(SolgaleoRadiantSunphase)-[:IS]->(Steel), +(Lunala)-[:IS]->(Psychic), +(Lunala)-[:IS]->(Ghost), +(LunalaLunala)-[:IS]->(Psychic), +(LunalaLunala)-[:IS]->(Ghost), +(LunalaFullMoonphase)-[:IS]->(Psychic), +(LunalaFullMoonphase)-[:IS]->(Ghost), +(Nihilego)-[:IS]->(Rock), +(Nihilego)-[:IS]->(Poison), +(Buzzwole)-[:IS]->(Bug), +(Buzzwole)-[:IS]->(Fighting), +(Pheromosa)-[:IS]->(Bug), +(Pheromosa)-[:IS]->(Fighting), +(Xurkitree)-[:IS]->(Electric), +(Celesteela)-[:IS]->(Steel), +(Celesteela)-[:IS]->(Flying), +(Kartana)-[:IS]->(Grass), +(Kartana)-[:IS]->(Steel), +(Guzzlord)-[:IS]->(Dark), +(Guzzlord)-[:IS]->(Dragon), +(Necrozma)-[:IS]->(Psychic), +(NecrozmaNecrozma)-[:IS]->(Psychic), +(NecrozmaDuskManeNecrozma)-[:IS]->(Psychic), +(NecrozmaDuskManeNecrozma)-[:IS]->(Steel), +(NecrozmaDawnWingsNecrozma)-[:IS]->(Psychic), +(NecrozmaDawnWingsNecrozma)-[:IS]->(Ghost), +(NecrozmaUltraNecrozma)-[:IS]->(Psychic), +(NecrozmaUltraNecrozma)-[:IS]->(Dragon), +(Magearna)-[:IS]->(Steel), +(Magearna)-[:IS]->(Fairy), +(MagearnaMagearna)-[:IS]->(Steel), +(MagearnaMagearna)-[:IS]->(Fairy), +(MagearnaOriginalColorMagearna)-[:IS]->(Steel), +(MagearnaOriginalColorMagearna)-[:IS]->(Fairy), +(Marshadow)-[:IS]->(Fighting), +(Marshadow)-[:IS]->(Ghost), +(MarshadowGloomdwellerMarshadow)-[:IS]->(Fighting), +(MarshadowGloomdwellerMarshadow)-[:IS]->(Ghost), +(MarshadowZenithMarshadow)-[:IS]->(Fighting), +(MarshadowZenithMarshadow)-[:IS]->(Ghost), +(Poipole)-[:IS]->(Poison), +(Naganadel)-[:IS]->(Poison), +(Naganadel)-[:IS]->(Dragon), +(Stakataka)-[:IS]->(Rock), +(Stakataka)-[:IS]->(Steel), +(Blacephalon)-[:IS]->(Fire), +(Blacephalon)-[:IS]->(Ghost), +(Zeraora)-[:IS]->(Electric), +(Meltan)-[:IS]->(Steel), +(Melmetal)-[:IS]->(Steel) `; From 5fc04cedcab1ecb8567a1eb7a87a2e2cc7816c0e Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Thu, 30 Nov 2023 16:42:53 +0100 Subject: [PATCH 21/27] update gitignore --- .gitignore | 3 ++- benchmarks.txt | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 benchmarks.txt diff --git a/.gitignore b/.gitignore index dc032942c..869632488 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,5 @@ generated *.jar *.clinic *.tsbuildinfo -*.npmrc \ No newline at end of file +*.npmrc +benchmarks.txt diff --git a/benchmarks.txt b/benchmarks.txt deleted file mode 100644 index d68b7087f..000000000 --- a/benchmarks.txt +++ /dev/null @@ -1,2 +0,0 @@ -simple - parse x 25,891 ops/sec ±0.38% (100 runs sampled) -simple - highlight x 4,987 ops/sec ±0.44% (97 runs sampled) From 7780425f5785b5966a7bc9d2d63c5702e6b1caee Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Thu, 30 Nov 2023 16:46:33 +0100 Subject: [PATCH 22/27] addpokemonquery --- .../src/tests/benchmarks/benchmark-queries.ts | 2 +- .../language-support/src/tests/benchmarks/benchmark.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/language-support/src/tests/benchmarks/benchmark-queries.ts b/packages/language-support/src/tests/benchmarks/benchmark-queries.ts index cdf28e449..6de77ca2e 100644 --- a/packages/language-support/src/tests/benchmarks/benchmark-queries.ts +++ b/packages/language-support/src/tests/benchmarks/benchmark-queries.ts @@ -626,7 +626,7 @@ export const autocompletionQueries = { variableCompletion: 'WITH 1 as variable MATCH (n) WHERE n.name = ', }; -export const pokemonquery = ` +export const largePokemonquery = ` CREATE (Grass:Type {name:"Grass"}), (Poison:Type {name:"Poison"}), diff --git a/packages/language-support/src/tests/benchmarks/benchmark.ts b/packages/language-support/src/tests/benchmarks/benchmark.ts index df47f9727..2796798d8 100644 --- a/packages/language-support/src/tests/benchmarks/benchmark.ts +++ b/packages/language-support/src/tests/benchmarks/benchmark.ts @@ -8,6 +8,7 @@ import { benchmarkingMediumSizeSchema } from './benchmark-dbschemas'; import { autocompletionQueries, createMovieDb, + largePokemonquery, simpleQuery, tictactoe, } from './benchmark-queries'; @@ -55,6 +56,12 @@ suite }) .add('tictactoe - autocomplete next statement - medium Schema', function () { autocomplete(tictactoe, benchmarkingMediumSizeSchema); + }) + .add('pokemon - parse', function () { + parse(largePokemonquery); + }) + .add('pokemon - syntax highlight', function () { + parse(largePokemonquery); }); Object.entries(autocompletionQueries).forEach(([name, query]) => { From c0a3f92779a2d29a38baa1096a54dcfadeeef69d Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Thu, 30 Nov 2023 16:54:53 +0100 Subject: [PATCH 23/27] update github action --- .github/workflows/benchmark.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 534cccf14..5b3af612b 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -7,6 +7,7 @@ on: jobs: benchmark: name: Time benchmark + environment: grafana-api-key runs-on: ubuntu-latest steps: @@ -31,3 +32,5 @@ jobs: - name: Benchmark run: npm run benchmark --concurrency 1 + env: + GRAFANA_API_KEY: ${{ secrets.GRAFANA_API_KEY }} From aedbc50f30eddad21822478be4b1c229fb1b9bb9 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Mon, 4 Dec 2023 17:12:36 +0100 Subject: [PATCH 24/27] cleanup github action --- .github/workflows/benchmark.yaml | 3 -- .github/workflows/performance-regression.yaml | 31 +++++++++---------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 5b3af612b..90175118e 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -22,9 +22,6 @@ jobs: - name: Install dependencies with frozen lock file run: npm ci - - name: Install dependencies with frozen lock file - run: npm ci - - name: Build project env: NODE_OPTIONS: '--max_old_space_size=4096' diff --git a/.github/workflows/performance-regression.yaml b/.github/workflows/performance-regression.yaml index 90f32812e..03e3341b8 100644 --- a/.github/workflows/performance-regression.yaml +++ b/.github/workflows/performance-regression.yaml @@ -22,44 +22,41 @@ jobs: - name: Setup antlr4 uses: ./main/.github/actions/setup-antlr4 - - name: Install dependencies with frozen lock file + - name: Install dependencies with frozen lock file for main branch run: npm ci working-directory: main - - name: Install dependencies with frozen lock file + - name: Install dependencies with frozen lock file for pr branch run: npm ci working-directory: pr - - name: Build benchmarks + - name: Build project for main env: NODE_OPTIONS: '--max_old_space_size=4096' - run: npm run build-benchmark - working-directory: pr + run: npm run build + working-directory: main - - name: Build benchmarks + - name: Build project for pr env: NODE_OPTIONS: '--max_old_space_size=4096' - run: npm run build-benchmark - working-directory: main + run: npm run build + working-directory: pr - # Run benchmark on main and stores the output to a file - name: Run benchmark on main (baseline) - run: BENCHMARKING=true node main/packages/language-support/dist/benchmark/benchmark.js | tee main-benchmarks.txt + run: npm run benchmark | tee main-benchmarks.txt + working-directory: main/packages/language-support - name: Run benchmark on pr - run: BENCHMARKING=true node pr/packages/language-support/dist/benchmark/benchmark.js | tee pr-benchmarks.txt - - # Run benchmark on the PR branch and stores the output to a separate file (must use the same tool as above) - #- name: Run pull request benchmark - #run: cd pr && npm install && cd packages/language-support && npm run build-benchmark && BENCHMARKING=true node dist/benchmark/benchmark.js | tee benchmarks.txt + run: npm run benchmark | tee pr-benchmarks.txt + working-directory: pr/packages/language-support - name: Compare benchmark result uses: openpgpjs/github-action-pull-request-benchmark@v1 with: name: 'Time benchmark' tool: 'benchmarkjs' - pr-benchmark-file-path: pr-benchmarks.txt - base-benchmark-file-path: main-benchmarks.txt + pr-benchmark-file-path: pr/packages/language-support/pr-benchmarks.txt + base-benchmark-file-path: main/packages/language-support/main-benchmarks.txt comment-on-alert: true alert-threshold: '130%' fail-on-alert: true From 19276d7faf308b43dd51fb044242d63b30627211 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Thu, 7 Dec 2023 09:52:13 +0100 Subject: [PATCH 25/27] fix review comment --- packages/language-support/src/tests/benchmarks/benchmark.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/language-support/src/tests/benchmarks/benchmark.ts b/packages/language-support/src/tests/benchmarks/benchmark.ts index 2796798d8..20840aff9 100644 --- a/packages/language-support/src/tests/benchmarks/benchmark.ts +++ b/packages/language-support/src/tests/benchmarks/benchmark.ts @@ -61,7 +61,7 @@ suite parse(largePokemonquery); }) .add('pokemon - syntax highlight', function () { - parse(largePokemonquery); + applySyntaxColouring(largePokemonquery); }); Object.entries(autocompletionQueries).forEach(([name, query]) => { From ee711ccca18dc3c1a9105f0e425c78388680713a Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Fri, 8 Dec 2023 11:01:09 +0100 Subject: [PATCH 26/27] reivew comments --- .../syntaxColouring/syntaxColouring.ts | 4 ++++ .../language-support/src/parserWrapper.ts | 7 +++++-- .../src/tests/benchmarks/benchmark.ts | 21 +++++++++++++++++-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/language-support/src/highlighting/syntaxColouring/syntaxColouring.ts b/packages/language-support/src/highlighting/syntaxColouring/syntaxColouring.ts index bae998630..3c5955e27 100644 --- a/packages/language-support/src/highlighting/syntaxColouring/syntaxColouring.ts +++ b/packages/language-support/src/highlighting/syntaxColouring/syntaxColouring.ts @@ -300,3 +300,7 @@ export function applySyntaxColouring( return result; } + +export function clearCache() { + delete parserWrapper.parsingResult; +} diff --git a/packages/language-support/src/parserWrapper.ts b/packages/language-support/src/parserWrapper.ts index c1a215f66..ec9aa281f 100644 --- a/packages/language-support/src/parserWrapper.ts +++ b/packages/language-support/src/parserWrapper.ts @@ -220,8 +220,7 @@ class ParserWrapper { parse(query: string): EnrichedParsingResult { if ( this.parsingResult !== undefined && - this.parsingResult.query === query && - process.env.BENCHMARKING !== 'true' + this.parsingResult.query === query ) { return this.parsingResult; } else { @@ -252,6 +251,10 @@ class ParserWrapper { return parsingResult; } } + + clearCache() { + this.parsingResult = undefined; + } } export const parserWrapper = new ParserWrapper(); diff --git a/packages/language-support/src/tests/benchmarks/benchmark.ts b/packages/language-support/src/tests/benchmarks/benchmark.ts index 20840aff9..a1de6f760 100644 --- a/packages/language-support/src/tests/benchmarks/benchmark.ts +++ b/packages/language-support/src/tests/benchmarks/benchmark.ts @@ -3,7 +3,7 @@ import Benchmark from 'benchmark'; import { autocomplete } from '../../autocompletion/autocompletion'; import { applySyntaxColouring } from '../../highlighting/syntaxColouring/syntaxColouring'; import { validateSyntax } from '../../highlighting/syntaxValidation/syntaxValidation'; -import { parse } from '../../parserWrapper'; +import { parse, parserWrapper } from '../../parserWrapper'; import { benchmarkingMediumSizeSchema } from './benchmark-dbschemas'; import { autocompletionQueries, @@ -22,45 +22,62 @@ suite parse(simpleQuery); }) .add('simple - highlight', function () { + parserWrapper.clearCache(); applySyntaxColouring(simpleQuery); }) .add('simple - validate syntax', function () { + parserWrapper.clearCache(); validateSyntax(simpleQuery, benchmarkingMediumSizeSchema); }) .add('simple - autocomplete next statement', function () { + parserWrapper.clearCache(); autocomplete(simpleQuery, benchmarkingMediumSizeSchema); }) .add('movies - parse', function () { parse(createMovieDb); }) .add('movies - highlight', function () { + parserWrapper.clearCache(); applySyntaxColouring(createMovieDb); }) .add('movies - validate syntax', function () { + parserWrapper.clearCache(); validateSyntax(createMovieDb, benchmarkingMediumSizeSchema); }) .add('movies - autocomplete next statement', function () { + parserWrapper.clearCache(); autocomplete(createMovieDb, benchmarkingMediumSizeSchema); }) .add('tictactoe - parse', function () { + parserWrapper.clearCache(); parse(tictactoe); }) .add('tictactoe - highlight', function () { + parserWrapper.clearCache(); applySyntaxColouring(tictactoe); }) .add('tictactoe - validate syntax', function () { + parserWrapper.clearCache(); validateSyntax(tictactoe, benchmarkingMediumSizeSchema); }) .add('tictactoe - autocomplete next statement - no Schema', function () { + parserWrapper.clearCache(); autocomplete(tictactoe, {}); }) .add('tictactoe - autocomplete next statement - medium Schema', function () { + parserWrapper.clearCache(); autocomplete(tictactoe, benchmarkingMediumSizeSchema); }) .add('pokemon - parse', function () { + parserWrapper.clearCache(); parse(largePokemonquery); }) + .add('pokemon - parserwrapper parse', function () { + parserWrapper.clearCache(); + parserWrapper.parse(largePokemonquery); + }) .add('pokemon - syntax highlight', function () { + parserWrapper.clearCache(); applySyntaxColouring(largePokemonquery); }); @@ -69,6 +86,7 @@ Object.entries(autocompletionQueries).forEach(([name, query]) => { parse(query); }); suite.add(`autocomplete - ${name}`, function () { + parserWrapper.clearCache(); autocomplete(query, benchmarkingMediumSizeSchema); }); }); @@ -105,7 +123,6 @@ suite ) .join('\n'); - console.log(body); await fetch( 'https://influx-prod-39-prod-eu-north-0.grafana.net/api/v1/push/influx/write', { From 3e109504b89401143796d9c71bc141dba569b9c6 Mon Sep 17 00:00:00 2001 From: Oskar Damkjaer Date: Fri, 8 Dec 2023 13:40:22 +0100 Subject: [PATCH 27/27] review comments --- .../src/highlighting/syntaxColouring/syntaxColouring.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/language-support/src/highlighting/syntaxColouring/syntaxColouring.ts b/packages/language-support/src/highlighting/syntaxColouring/syntaxColouring.ts index 3c5955e27..bae998630 100644 --- a/packages/language-support/src/highlighting/syntaxColouring/syntaxColouring.ts +++ b/packages/language-support/src/highlighting/syntaxColouring/syntaxColouring.ts @@ -300,7 +300,3 @@ export function applySyntaxColouring( return result; } - -export function clearCache() { - delete parserWrapper.parsingResult; -}