[
  {
    "path": ".github/workflows/go.yml",
    "content": "name: Go\n\non:\n  push:\n    branches: [\"*\"]\n  pull_request:\n    branches: [\"*\"]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Set up Go\n        uses: actions/setup-go@v3\n        with:\n          go-version: 1.24.0\n\n      - name: build\n        run: make build\n\n      - name: test\n        run: make test\n"
  },
  {
    "path": ".github/workflows/lint.yml",
    "content": "name: golangci-lint\non:\n  push:\n    branches: [\"*\"]\n  pull_request:\n    branches: [\"*\"]\npermissions:\n  contents: read\njobs:\n  golangci:\n    name: lint\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/setup-go@v3\n        with:\n          go-version: 1.24.0\n      - uses: actions/checkout@v3\n      - name: golangci-lint\n        uses: golangci/golangci-lint-action@v3\n        with:\n          version: latest\n"
  },
  {
    "path": ".gitignore",
    "content": "/fakedata\n/fakedata-with-cover\n.vscode\n/dist\n*.perf\n*.db\n.coverdata\n.idea\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# fakedata Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual attention or\n  advances\n- Trolling, insulting/derogatory comments, and personal or political attacks\n- Public or private harassment\n- Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team [here](mailto:ciao@lucapette.me). All\ncomplaints will be reviewed and investigated and will result in a response\nthat is deemed necessary and appropriate to the circumstances. The project\nteam is obligated to maintain confidentiality with regard to the reporter of\nan incident. Further details of specific enforcement policies may be posted\nseparately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage],\nversion 1.4, available at\n[http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nWe love every form of contribution. By participating to this project, you agree\nto abide to the `fakedata` [code of conduct](/CODE_OF_CONDUCT.md).\n\n## Set up your machine\n\nOur [Makefile](/Makefile) is the entry point for most of the activities you will\nrun into as a contributor. To get a basic understanding of what you can do with\nit, you can run:\n\n```sh\nmake help\n```\n\nWhich shows documented targets.\n\n`fakedata` is written in\n[Go](https://golang.org/). Here is a list of prerequisites to build and test the\ncode:\n\n- `make`\n- [Go 1.19+](http://golang.org/doc/install)\n\nClone `fakedata` from source:\n\n```sh\n$ git clone https://github.com/lucapette/fakedata.git\n# Cloning into 'fakedata'...\n# etc..\n$ cd fakedata\n```\n\nA good way of making sure everything is all right is running the test suite:\n\n```sh\nmake test\n```\n\nOpen an [issue](https://github.com/lucapette/fakedata/issues/new) if you run\ninto any problem.\n\n## Building and running fakedata\n\nYou can build the entire application by running `make` without arguments:\n\n```sh\nmake\n```\n\nsince `build` is the default target.\n\nYou can run `fakedata` following the steps:\n\n```sh\nmake\n$ ./fakedata username -l 3\nRussellBishop\ng3d\nrude\n```\n\n## Testing\n\nWe try to cover as much as we can with testing. The goal is having each single\nfeature covered by one or more tests. Adding more tests is a great way of\ncontributing to the project!\n\n### Running the tests\n\nOnce you are [setup](#set-up-your-machine), you can run the test suite with one\ncommand:\n\n```sh\nmake test\n```\n\nYou can run only a subset of the tests using the `TEST_PATTERN` variable:\n\n```sh\nmake test TEST_PATTERN=TheAnswerIsFortyTwo\n```\n\nYou can use pass options to `go test` through the `TEST_OPTIONS` variable:\n\n```sh\nmake test TEST_OPTIONS=-v\n```\n\nYou can combine the two options which is very helpful if you are working on a\nspecific feature and want immediate feedback. Like so:\n\n```sh\nmake test TEST_OPTIONS=-v TEST_PATTERN=TheAnswerIsFortyTwo\n```\n\n## Test your change\n\nYou can create a branch for your changes and try to build from the source as\nyou go:\n\n```sh\nmake build\n```\n\nWhen you are satisfied with the changes, we suggest running:\n\n```sh\nmake lint\n```\n\nThis command runs the linters and the tests the same way we run them in our CI\nsystem.\n\n## Submit a pull request\n\nPush your branch to your `fakedata` fork and open a pull request against the\nmain branch.\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM alpine\n\nRUN apk add --no-cache strace\n\nADD ./fakedata .\n"
  },
  {
    "path": "LICENSE",
    "content": "Permission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": "SOURCE_FILES?=$$(go list ./pkg/...)\nTEST_PATTERN?=.\nTEST_OPTIONS?=\n\nunit: ## Run tests\n\t@go test $(TEST_OPTIONS) -cover $(SOURCE_FILES) -run $(TEST_PATTERN) -timeout=30s\n\nintegration: build-with-cover ## Run integration tests\n\t@go test $(TEST_OPTIONS) $$(go list ./integration/...) -timeout=30s\n\t@go tool covdata percent -i=.coverdata\n\ntest: unit integration\n\nbench: ## Run benchmarks\n\t@go test $(TEST_OPTIONS) -cover $(SOURCE_FILES) -bench $(TEST_PATTERN) -timeout=30s\n\nlint: ## Run linters\n\t@golangci-lint run\n\nbuild: ## Build a dev version of fakedata\n\t@go build\n\nbuild-debug-image:\n\t@GOOS=linux GOARCH=amd64 go build\n\tdocker build -t fakedata .\n\nbuild-with-cover: ## Build a cover version of fakedata\n\t@rm -fr .coverdata\n\t@mkdir .coverdata\n\t@go build -cover -o ./fakedata-with-cover\n\nimport: ## Import or update data from dariusk/corpora\n\t@go run cmd/import/main.go\n\n# Absolutely awesome: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html\nhelp:\n\t@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = \":.*?## \"}; {printf \"\\033[36m%-30s\\033[0m %s\\n\", $$1, $$2}'\n\n.DEFAULT_GOAL := build\n"
  },
  {
    "path": "README.md",
    "content": "# fakedata\n\n`fakedata` is a small program that generates test data on the command line.\n\n## How to install\n\nIf you use [Homebrew](https://brew.sh/):\n\n```sh\nbrew install lucapette/tap/fakedata\n```\n\nIf you have [Go](https://go.dev/) installed:\n\n```sh\ngo install github.com/lucapette/fakedata@latest\n```\n\nOr you can download the latest [compiled\nbinary](https://github.com/lucapette/fakedata/releases) and put it anywhere in\nyour executable path.\n\nIf you want to build it yourself, refer to our [contributing\nguidelines](/CONTRIBUTING.md).\n\n## Quick Start\n\n`fakedata` helps you generate random data in a number of ways.\n\nBy default, it uses a column formatter with space separator:\n\n```sh\n$ fakedata email country\ncemshid@example.com Afghanistan\nLucasPerdidao@example.me Turkey\narthurholcombe1@test.us Saint Helena\niamgarth@example.us Montenegro\njoelcipriano@test.name Croatia\nkeryilmaz@test.name Vietnam\nplbabin@test.org Lithuania\nbermonpainter@test.us Haiti\nopnsrce@example.name Malaysia\nankitind@test.info Virgin Islands, British\n```\n\nYou can choose a different separator:\n\n```sh\n$ fakedata --separator=, product.category product.name\nShoes,Rankfix\nAutomotive,Namis\nMovies,Matquadfax\nTools,Damlight\nComputers,Silverlux\nIndustrial,Matquadfax\nHome,Sil-Home\nHealth,Toughwarm\nShoes,Freetop\nTools,Domnix\n\n# tab is a little tricky to type, but works\n$ fakedata emoji industry -s=$'\\t'\n👦\tElectrical & Electronic Manufacturing\n🆘\tInvestment Banking/Venture\n📦\tComputer Hardware\n♐\tComputer & Network Security\n🔠\tReligious Institutions\n💷\tAutomotive\n🇱\tCapital Markets\n㊙\tPublic Relations\n☺\tAlternative Dispute Resoluti\n```\n\nYou can specify a SQL formatter:\n\n```sh\n$ fakedata --format=sql --limit 1 email domain\nINSERT INTO TABLE (email,domain) values ('yigitpinar@example.org','example.me');\n```\n\nOr a [ndjson](https://github.com/ndjson/ndjson-spec) one:\n\n```sh\n$ fakedata --format=ndjson --limit 1 noun country.code\n{\"country.code\":\"PY\",\"noun\":\"mainframe\"}\n```\n\nYou can change the name of the field column using a field with the syntax\n`column_name=generator`. It works with the SQL formatter as well the ndjson one:\n\n```sh\n$ fakedata --format=sql --limit 1 login=email referral=domain\nINSERT INTO TABLE (login,referral) values ('calebogden@example.com','test.me');\n\n$ fakedata --format=ndjson --limit 1 login=email referral=domain\n{\"login\":\"rmlewisuk@example.xn--80ao21a\",\"referral\":\"example.ventures\"}\n```\n\n`fakedata` can also _stream_ rows of test data for you:\n\n```sh\n$ fakedata --stream animal\nhorse\nkoala\nchameleon\n## and so on...\n```\n\nIf you need more control over the output, use [templates](#templates).\n\n## Generators\n\n`fakedata` provides a number of generators. You can see the full list running\nthe following command:\n\n```sh\n$ fakedata --generators # or -G\ncolor             one word color\ncountry           Full country name\ncountry.code      2-digit country code\ndate              date\ndomain            domain\ndomain.tld        example|test\n#...\n#...\n#It's a long list :)\n```\n\nYou can use the `-g` (or `--generator`) option to see an example:\n\n```sh\n$ fakedata -g sentence\nDescription: sentence\n\nExample:\n\nJerk the dart from the cork target.\nDrop the ashes on the worn old rug.\nThe sense of smell is better than that of touch.\nTin cans are absent from store shelves.\nShut the hatch before the waves push it in.\n```\n\n### Constraints\n\nSome generators allow you to pass in a range to constraint the output to a\nsubset of values. To find out which generators support constraints:\n\n```sh\nfakedata -c # or fakedata --generators-with-constraints\n```\n\n#### Int\n\nHere is how you can use constraints with the `int` generator:\n\n```sh\nfakedata int:1,100 # will generate only integers between 1 and 100\nfakedata int:50, # specifying only min number works too\nfakedata int:50 # also works\n```\n\n#### Enum\n\nThe `enum` generator allows you to specify a set of values. It comes handy when\nyou need random data from a small set of values:\n\n```sh\n$ fakedata --limit 5 enum\nfoo\nbaz\nfoo\nfoo\nbaz\n$ fakedata --limit 5 enum:bug,feature,question,duplicate\nquestion\nduplicate\nduplicate\nbug\nfeature\n```\n\nWhen passing a single value `enum` can be used to repeat a value in every line:\n\n```sh\n$ fakedata --limit 5 enum:one,two enum:repeat\ntwo repeat\none repeat\ntwo repeat\none repeat\none repeat\n```\n\n#### File\n\nThe `file` generator can be use to read custom values from a file:\n\n```sh\n$ printf \"one\\ntwo\\nthree\" > values.txt\n$ fakedata -l5 file:values.txt\nthree\ntwo\ntwo\none\ntwo\n```\n\n## Templates\n\n`fakedata` supports parsing and executing template files for generating\ncustomized output formats.\n\nIt executes the provided template a number of times based on the limit flag\n(`-l`, `--limit`) and writes the output to `stdout`, exactly like using inline\ngenerators.\n\nYou pipe a template into `fakedata`:\n\n```sh\n$ echo \"#{{ Int 0 100}} {{ Name }} <{{ Email }}>\" | fakedata\n#56 Dannie Martin <bassamology@test.th>\n#89 Moshe Walsh <baires@example.autos>\n#48 Buck Reid <syropian@test.cg>\n#55 Rico Powell <findingjenny@example.pohl>\n#92 Luise Wood <91bilal@example.link>\n#96 Josphine Patton <abelcabans@test.wtf>\n#95 Jetta Blair <tgerken@example.jewelry>\n#10 Clorinda Parsons <roybarberuk@test.gives>\n#0 Dionna Bates <jefffis@test.flights>\n```\n\nOr you ask `fakedata` to read templates from disk:\n\n```sh\n$ echo \"{{Email}}--{{Int}}\" > /tmp/template.tmpl\n$ fakedata --template /tmp/template.tmpl\nademilter@test.school--214\nSilveredge9@example.anquan--379\nplbabin@example.here--902\nsilvanmuhlemann@test.aero--412\nivanfilipovbg@test.bmw--517\nrobbschiller@example.feedback--471\nrickdt@example.vista--963\nrmlewisuk@test.info--101\nlinux29@example.archi--453\ng3d@test.pl--921\n```\n\nThe generators listed under `fakedata -g` are available as functions into the\ntemplates.\n\nIf the generator name is a single word, then it's available as a function with\nthe same name capitalized (example: `int` becomes `Int`).\n\nIf the generator name is composed by multiple words joined by dots, then the\nfunction name is again capitalized by the first letter of the word and joined\ntogether (example: `product.name` becomes `ProductName`).\n\nEach generator with [constraints](#constraints) is available in templates as a\nfunction that takes arguments.\n\n### `Enum`\n\nEnum takes one or more strings and returns a random string on each run. Strings\nare passed to Enum like so:\n\n```sh\n$ echo '{{ Enum \"feature\" \"bug\" \"documentation\" }}' | fakedata -l5\nfeature\nbug\ndocumentation\nfeature\ndocumentation\n```\n\n### `File`\n\nFile reads a file from disk and returns a random line on each run. It takes one\nparameter which is the path to the file on disk.\n\n```sh\n$ echo \"uno\\ndue\\ntre\" > example.txt\n$ echo '{{ File \"./example.txt\" }}' | fakedata -l5\ntre\nuno\ndue\ndue\ndue\nfoo\n```\n\n### `Int`\n\nInt takes one or two integer values and returns a number within this range. By\ndefault it returns a number between `0` and `1000`.\n\n```sh\n$ echo \"{{ Int 15 20 }}\" | fakedata -l5\n15\n20\n15\n15\n17\n```\n\n### `Date`\n\nDate takes one or two dates and returns a date within this range. By default, it\nreturns a date between one year ago and today.\n\n### Helpers\n\nBeside the generator functions, `fakedata` templates provide a number of helper\nfunctions:\n\n- `Loop`\n- `Odd`\n- `Even`\n\nIf you need to create your own loop for advanced templates you can use the `{{ Loop }}` function.\n\nThis function takes a single integer as a parameter which is the number of\niterations. `Loop` must be used with `range` e.g.\n\n```html\n{{ range Loop 10 }} You're going to see this 10 times! {{ end }}\n```\n\n`Loop` can take a second argument, so that you can specify a range and\n`fakedata` will generate a random number of iterations in that range. For\nexample:\n\n```html\n{{ range Loop 1 5 }}42{{ end }}\n```\n\nIn combination with `Loop` and `range` you can use `Odd` and `Even` to determine\nif the current iteration is odd or even.\n\nFor example, this is helpful when creating HTML tables:\n\n```html\n{{ range $i := Loop 5 }}\n<tr>\n  {{ if Odd $i -}}\n  <td class=\"odd\">{{- else -}}</td>\n\n  <td class=\"even\">{{- end -}} {{ Name }}</td>\n</tr>\n{{ end }}\n```\n\n`Odd` takes an integer as parameter which is why we need to assign the return\nvalues of `Loop 5` to the variables `$i` and `$j`.\n\nTemplates also support string manipulation via the `printf` function. Using\n`printf` we can create custom output.\n\nFor example, to display a full name in the format `Lastname Firstname` instead\nof `Firstname Lastname`.\n\n```html\n{{ printf \"%s %s\" NameLast NameFirst }}\n```\n\n## Completion\n\n`fakedata` supports basic shell tab completion for bash, zsh, and fish shells:\n\n```sh\neval \"$(fakedata --completion zsh)\"\neval \"$(fakedata --completion bash)\"\neval (fakedata --completion fish)\n```\n\n## How to contribute\n\nWe love every form of contribution! Good entry points to the project are:\n\n- Our [contributing guidelines](/CONTRIBUTING.md) document\n- Issues with the tag\n  [gardening](https://github.com/lucapette/fakedata/issues?q=is%3Aissue+is%3Aopen+label%3Agardening)\n- Issues with the tag [good first\n  patch](https://github.com/lucapette/fakedata/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+patch%22)\n\nIf you're not sure where to start, please open a [new\nissue](https://github.com/lucapette/fakedata/issues/new) and we'll gladly help\nyou get started.\n\n## Code of Conduct\n\nYou are expected to follow our [code of conduct](/CODE_OF_CONDUCT.md) when\ninteracting with the project via issues, pull requests, or in any other form.\nMany thanks to the awesome [contributor\ncovenant](http://contributor-covenant.org/) initiative!\n\n## License\n\n[MIT License](/LICENSE) Copyright (c) [2022] [Luca Pette](https://lucapette.me)\n"
  },
  {
    "path": "cmd/import/main.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// relative package data dir\nconst targetDir = \"pkg/data\"\n\n// Content of a Go file\nconst fileTemplate = `package data\n\nvar %s = %#v\n`\n\nvar keyExtractor = func(key string) func(io.ReadCloser) []string {\n\treturn func(body io.ReadCloser) []string {\n\t\tvar jsonData map[string]json.RawMessage\n\t\tif err := json.NewDecoder(body).Decode(&jsonData); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tvar data []string\n\t\tif err := json.Unmarshal(jsonData[key], &data); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\treturn data\n\t}\n}\n\nvar tasks = []struct {\n\tURL       string\n\tExtractor func(io.ReadCloser) []string\n\tVar       string\n}{\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/words/nouns.json\",\n\t\tkeyExtractor(\"nouns\"),\n\t\t\"Nouns\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/animals/common.json\",\n\t\tkeyExtractor(\"animals\"),\n\t\t\"Animals\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/animals/dinosaurs.json\",\n\t\tkeyExtractor(\"dinosaurs\"),\n\t\t\"Dinosaurs\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/animals/dogs.json\",\n\t\tkeyExtractor(\"dogs\"),\n\t\t\"Dogs\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/animals/cats.json\",\n\t\tkeyExtractor(\"cats\"),\n\t\t\"Cats\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/words/emoji/emoji.json\",\n\t\tkeyExtractor(\"emoji\"),\n\t\t\"Emoji\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/words/adjs.json\",\n\t\tkeyExtractor(\"adjs\"),\n\t\t\"Adjectives\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/words/harvard_sentences.json\",\n\t\tkeyExtractor(\"data\"),\n\t\t\"Sentences\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/corporations/industries.json\",\n\t\tkeyExtractor(\"industries\"),\n\t\t\"Industries\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/humans/occupations.json\",\n\t\tkeyExtractor(\"occupations\"),\n\t\t\"Occupations\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/geography/nationalities.json\",\n\t\tkeyExtractor(\"nationalities\"),\n\t\t\"Nationalities\",\n\t},\n\t{\n\t\t\"https://raw.githubusercontent.com/dariusk/corpora/master/data/geography/us_cities.json\",\n\t\tfunc(body io.ReadCloser) []string {\n\t\t\tvar jsonData struct {\n\t\t\t\tCities []struct {\n\t\t\t\t\tCity string `json:\"city\"`\n\t\t\t\t} `json:\"cities\"`\n\t\t\t}\n\t\t\tif err := json.NewDecoder(body).Decode(&jsonData); err != nil {\n\t\t\t\tlog.Fatal(err)\n\t\t\t}\n\n\t\t\tdata := make([]string, len(jsonData.Cities))\n\t\t\tfor i, city := range jsonData.Cities {\n\t\t\t\tdata[i] = city.City\n\t\t\t}\n\n\t\t\treturn data\n\t\t},\n\t\t\"Cities\",\n\t},\n}\n\nfunc main() {\n\t// Check if running in the repository directory\n\t_, err := os.Stat(targetDir)\n\tif err != nil && !os.IsNotExist(err) {\n\t\tlog.Fatal(err)\n\t}\n\tif err != nil {\n\t\tlog.Fatalf(\"the data directory cannot be found at %s. Ensure the importer is running in the correct location: %v\", targetDir, err)\n\t}\n\n\tfor _, task := range tasks {\n\t\t// Get JSON from URL\n\t\tvar resp *http.Response\n\t\tresp, err = http.Get(task.URL)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tfile := filepath.Join(targetDir, strings.ToLower(task.Var)+\".go\")\n\t\tif err = os.MkdirAll(filepath.Dir(file), 0777); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tdata := task.Extractor(resp.Body)\n\n\t\tcontent := fmt.Sprintf(fileTemplate, task.Var, data)\n\n\t\tif err = os.WriteFile(file, []byte(content), 0644); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tif err = resp.Body.Close(); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/lucapette/fakedata\n\ngo 1.24.0\n\nrequire (\n\tgithub.com/gofrs/uuid v4.4.0+incompatible\n\tgithub.com/kr/pretty v0.3.1\n\tgithub.com/spf13/pflag v1.0.10\n\tgolang.org/x/text v0.33.0\n)\n\nrequire (\n\tgithub.com/kr/text v0.2.0 // indirect\n\tgithub.com/rogpeppe/go-internal v1.14.1 // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA=\ngithub.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=\ngithub.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=\ngithub.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=\ngithub.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=\ngithub.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=\ngithub.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngolang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=\ngolang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=\n"
  },
  {
    "path": "goreleaser.yml",
    "content": "build:\n  goos:\n    - windows\n    - darwin\n    - linux\n  goarch:\n    - amd64\nbrews:\n  -\n    name: fakedata\n    tap:\n      owner: lucapette\n      name: homebrew-tap\n    homepage: https://github.com/lucapette/fakedata\n"
  },
  {
    "path": "integration/cli_test.go",
    "content": "package integration\n\nimport (\n\t\"regexp\"\n\t\"testing\"\n\n\t\"reflect\"\n\n\t\"github.com/lucapette/fakedata/testutil\"\n)\n\nfunc TestCLI(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\targs    []string\n\t\tgolden  string\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\t\"no arguments\",\n\t\t\t[]string{},\n\t\t\t\"help.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"default format\",\n\t\t\t[]string{\"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"default-format.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"default format with headers\",\n\t\t\t[]string{\"--header\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"default-format-with-headers.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"unknown generators\",\n\t\t\t[]string{\"madeupgenerator\", \"anothermadeupgenerator\"},\n\t\t\t\"unknown-generators.golden\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"default format with limit short\",\n\t\t\t[]string{\"-l=5\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"default-format-with-limit.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"default format with limit\",\n\t\t\t[]string{\"--limit=5\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"default-format-with-limit.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"csv format short\",\n\t\t\t[]string{\"-s=,\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"csv-format.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"csv format\",\n\t\t\t[]string{\"--separator=,\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"csv-format.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"tab format\",\n\t\t\t[]string{\"--separator=\\t\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"tab-format.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"sql format\",\n\t\t\t[]string{\"-f=sql\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"sql-format.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"sql format with keys\",\n\t\t\t[]string{\"-f=sql\", \"age=int:42,42\", \"name=enum:foo,foo\"},\n\t\t\t\"sql-format-with-keys.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"sql format with table name\",\n\t\t\t[]string{\"-f=sql\", \"-t=USERS\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"sql-format-with-table-name.golden\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"unknown format\",\n\t\t\t[]string{\"-f=no-format\", \"-t=USERS\", \"int:42,42\", \"enum:foo,foo\"},\n\t\t\t\"unknown-format.golden\",\n\t\t\ttrue,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\toutput, err := runBinary(tt.args...)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Fatalf(\"%s\\nexpected (err != nil) to be %v, but got %v. err: %v\", output, tt.wantErr, err != nil, err)\n\t\t\t}\n\t\t\tactual := string(output)\n\n\t\t\tgolden := testutil.NewGoldenFile(t, tt.golden)\n\n\t\t\tif *update {\n\t\t\t\tgolden.Write(actual)\n\t\t\t}\n\t\t\texpected := golden.Load()\n\n\t\t\tif !reflect.DeepEqual(expected, actual) {\n\t\t\t\tt.Fatalf(\"diff: %v\", testutil.Diff(expected, actual))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGeneratorDescription(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\targs []string\n\t}{\n\t\t{\"simple generator\", []string{\"-g\", \"name.first\"}},\n\t\t{\"custom generator\", []string{\"-g\", \"int\"}},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\toutput, err := runBinary(tt.args...)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"test run returned an error: %v\\n%s\", err, output)\n\t\t\t}\n\n\t\t\tactual := string(output)\n\t\t\tmatched, err := regexp.MatchString(\"Description:\", actual)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"could not match actual: %v\", err)\n\t\t\t}\n\n\t\t\tif !matched {\n\t\t\t\tt.Fatalf(\"expected %s to match description, but did not\", actual)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestFileGenerator(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\targs    []string\n\t\tgolden  string\n\t\twantErr bool\n\t}{\n\t\t{\"no file\", []string{\"file\"}, \"path-empty.golden\", true},\n\t\t{\"file does not exist\", []string{`file:'this file does not exist.txt'`}, \"file-does-not-exist.golden\", true},\n\t\t{\"file exists\", []string{`file:testutil/fixtures/file.txt`}, \"file-exist.golden\", false},\n\t\t{\"file exists with quotes\", []string{`file:'testutil/fixtures/file.txt'`}, \"file-exist.golden\", false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\toutput, err := runBinary(tt.args...)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Fatalf(\"%s\\nexpected (err != nil) to be %v, but got %v. err: %v\", output, tt.wantErr, err != nil, err)\n\t\t\t}\n\n\t\t\tgolden := testutil.NewGoldenFile(t, tt.golden)\n\t\t\tactual := string(output)\n\t\t\tif *update {\n\t\t\t\tgolden.Write(actual)\n\t\t\t}\n\n\t\t\texpected := golden.Load()\n\n\t\t\tif !reflect.DeepEqual(actual, expected) {\n\t\t\t\tt.Fatalf(\"diff: %v\", testutil.Diff(expected, actual))\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "integration/setup_test.go",
    "content": "package integration\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"testing\"\n)\n\n// In these tests there's a lot going on. For more details:\n// https://lucapette.me/writing/writing-integration-tests-for-a-go-cli-application\n\nvar update = flag.Bool(\"update\", false, \"update golden files\")\n\nconst binaryName = \"fakedata-with-cover\"\n\nvar binaryPath string\n\nfunc TestMain(m *testing.M) {\n\terr := os.Chdir(\"..\")\n\tif err != nil {\n\t\tfmt.Printf(\"could not change dir: %v\", err)\n\t\tos.Exit(1)\n\t}\n\n\tabs, err := filepath.Abs(binaryName)\n\tif err != nil {\n\t\tfmt.Printf(\"could not get abs path for %s: %v\", binaryName, err)\n\t\tos.Exit(1)\n\t}\n\n\tbinaryPath = abs\n\n\tos.Exit(m.Run())\n}\n\nfunc runBinary(args ...string) ([]byte, error) {\n\tcmd := exec.Command(binaryPath, args...)\n\tcmd.Env = append(os.Environ(), \"GOCOVERDIR=.coverdata\")\n\treturn cmd.CombinedOutput()\n}\n"
  },
  {
    "path": "integration/templates_test.go",
    "content": "package integration\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/lucapette/fakedata/testutil\"\n)\n\ntype templateTestCase struct {\n\ttmpl    string\n\tgolden  string\n\twantErr bool\n}\n\nvar testCases = []templateTestCase{\n\t{\"simple.tmpl\", \"simple-template.golden\", false},\n\t{\"loop.tmpl\", \"loop.golden\", false},\n\t{\"loop-with-index.tmpl\", \"loop-with-index.golden\", false},\n\t{\"broken.tmpl\", \"broken-template.golden\", true},\n\t{\"unknown-function.tmpl\", \"unknown-function.golden\", true},\n}\n\nfunc TestTemplatesWithCLIArgs(t *testing.T) {\n\tfor _, tt := range testCases {\n\t\tt.Run(tt.tmpl, func(t *testing.T) {\n\t\t\toutput, err := runBinary(\"--template\", fmt.Sprintf(\"testutil/fixtures/%s\", tt.tmpl))\n\t\t\tverifyOutput(t, tt, output, err)\n\t\t})\n\t}\n}\n\nfunc TestTemplatesWithPipe(t *testing.T) {\n\tfor _, tt := range testCases {\n\t\tt.Run(tt.tmpl, func(t *testing.T) {\n\t\t\tfixture := testutil.NewFixture(t, tt.tmpl)\n\t\t\tcmd := exec.Command(binaryPath)\n\t\t\tcmd.Stdin = fixture.AsFile()\n\t\t\tcmd.Env = append(cmd.Env, \"GOCOVERDIR=.coverdata\")\n\t\t\toutput, err := cmd.CombinedOutput()\n\t\t\tverifyOutput(t, tt, output, err)\n\t\t})\n\t}\n}\n\nfunc verifyOutput(t *testing.T, tt templateTestCase, output []byte, err error) {\n\tif (err != nil) != tt.wantErr {\n\t\tt.Fatalf(\"%s\\nexpected (err != nil) to be %v, but got %v. err: %v\", output, tt.wantErr, err != nil, err)\n\t}\n\n\tgolden := testutil.NewGoldenFile(t, tt.golden)\n\tactual := string(output)\n\tif *update {\n\t\tgolden.Write(actual)\n\t}\n\n\texpected := golden.Load()\n\n\tif !reflect.DeepEqual(actual, expected) {\n\t\tt.Fatalf(\"diff: %v\", testutil.Diff(expected, actual))\n\t}\n}\n"
  },
  {
    "path": "main.go",
    "content": "package main\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/lucapette/fakedata/pkg/fakedata\"\n\tflag \"github.com/spf13/pflag\"\n)\n\nvar version = \"main\"\n\nfunc generatorsHelp(generators fakedata.Generators) string {\n\tmaxInt := 0\n\tfor _, gen := range generators {\n\t\tif len(gen.Name) > maxInt {\n\t\t\tmaxInt = len(gen.Name)\n\t\t}\n\t}\n\n\tbuffer := &bytes.Buffer{}\n\tpattern := fmt.Sprintf(\"%%-%ds%%s\\n\", maxInt+2) //+2 makes the output more readable\n\tfor _, gen := range generators {\n\t\t_, _ = fmt.Fprintf(buffer, pattern, gen.Name, gen.Desc)\n\t}\n\n\treturn buffer.String()\n}\n\nfunc isPipe() bool {\n\tstat, err := os.Stdin.Stat()\n\tif err != nil {\n\t\tfmt.Printf(\"error checking shell pipe: %v\", err)\n\t}\n\t// Check if template data is piped to fakedata\n\treturn (stat.Mode() & os.ModeCharDevice) == 0\n}\n\nfunc findTemplate(path string) string {\n\tif path != \"\" {\n\t\ttp, err := os.ReadFile(path)\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"unable to read input: %s\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\treturn string(tp)\n\t}\n\n\tif isPipe() {\n\t\ttp, err := io.ReadAll(os.Stdin)\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"unable to read input: %s\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\treturn string(tp)\n\t}\n\n\treturn \"\"\n}\n\nfunc main() {\n\tvar (\n\t\tcompletionFlag  = flag.StringP(\"completion\", \"C\", \"\", \"print shell completion function, pass shell name as argument (\\\"bash\\\", \\\"zsh\\\" or \\\"fish\\\")\")\n\t\tconstraintsFlag = flag.BoolP(\"generators-with-constraints\", \"c\", false, \"lists available generators with constraints\")\n\t\tformatFlag      = flag.StringP(\"format\", \"f\", \"column\", \"generates rows in f format. Available formats: column|ndjson|sql\")\n\t\tgeneratorFlag   = flag.StringP(\"generator\", \"g\", \"\", \"show help for a specific generator\")\n\t\tgeneratorsFlag  = flag.BoolP(\"generators\", \"G\", false, \"lists available generators\")\n\t\theaderFlag      = flag.BoolP(\"header\", \"H\", false, \"adds headers row\")\n\t\thelpFlag        = flag.BoolP(\"help\", \"h\", false, \"shows help\")\n\t\tlimitFlag       = flag.IntP(\"limit\", \"l\", 10, \"limits rows up to n\")\n\t\tseparatorFlag   = flag.StringP(\"separator\", \"s\", \" \", \"specifies separator for the column format\")\n\t\tstreamFlag      = flag.BoolP(\"stream\", \"S\", false, \"streams rows till the end of time\")\n\t\ttableFlag       = flag.StringP(\"table\", \"t\", \"TABLE\", \"table name of the sql format\")\n\t\ttemplateFlag    = flag.StringP(\"template\", \"T\", \"\", \"Use template as input\")\n\t\tversionFlag     = flag.BoolP(\"version\", \"v\", false, \"shows version information\")\n\t)\n\n\tflag.Usage = func() {\n\t\tfmt.Print(\"Usage: fakedata [option ...] generator...\\n\\n\")\n\t\tflag.PrintDefaults()\n\t}\n\tflag.Parse()\n\n\tif *helpFlag {\n\t\tflag.Usage()\n\t\tos.Exit(0)\n\t}\n\n\tif *completionFlag != \"\" {\n\t\tcompletion, err := fakedata.GetCompletionFunc(*completionFlag)\n\t\tif err != nil {\n\t\t\tfmt.Println(err)\n\t\t}\n\t\tfmt.Printf(\"%s\\n\", completion)\n\t\tos.Exit(0)\n\t}\n\n\tif *versionFlag {\n\t\tfmt.Println(version)\n\t\tos.Exit(0)\n\t}\n\n\tgenerators := fakedata.NewGenerators()\n\n\tif *generatorsFlag {\n\t\tfmt.Print(generatorsHelp(generators.Visible()))\n\t\tos.Exit(0)\n\t}\n\n\tif *generatorFlag != \"\" {\n\t\tif generator := generators.FindByName(*generatorFlag); generator != nil {\n\t\t\tfmt.Printf(\"Description: %s\\n\\nExample:\\n\\n\", generator.Desc)\n\t\t\tfor i := 0; i < 5; i++ {\n\t\t\t\tfn := generator.Func\n\t\t\t\tif generator.IsCustom() {\n\t\t\t\t\tcustom, err := generator.CustomFunc(\"\")\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tfmt.Printf(\"could not generate example: %v\", err)\n\t\t\t\t\t\tos.Exit(1)\n\t\t\t\t\t}\n\n\t\t\t\t\tfn = custom\n\t\t\t\t}\n\t\t\t\tfmt.Println(fn())\n\t\t\t}\n\t\t}\n\t\tos.Exit(0)\n\t}\n\n\tif *constraintsFlag {\n\t\tfmt.Print(generatorsHelp(generators.WithConstraints()))\n\t\tos.Exit(0)\n\t}\n\n\tif tmpl := findTemplate(*templateFlag); tmpl != \"\" {\n\t\tif err := fakedata.ExecuteTemplate(tmpl, *limitFlag, *streamFlag); err != nil {\n\t\t\tfmt.Println(err)\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\treturn\n\t}\n\n\tif len(flag.Args()) == 0 {\n\t\tflag.Usage()\n\t\tos.Exit(0)\n\t}\n\n\tcolumns, err := fakedata.NewColumns(flag.Args())\n\tif err != nil {\n\t\tfmt.Printf(\"%v\\n\\n\", err)\n\t\tflag.Usage()\n\t\tos.Exit(1)\n\t}\n\n\tvar formatter fakedata.Formatter\n\n\tswitch *formatFlag {\n\tcase \"column\":\n\t\tformatter = fakedata.NewColumnFormatter(*separatorFlag)\n\tcase \"sql\":\n\t\tformatter = fakedata.NewSQLFormatter(*tableFlag)\n\tcase \"ndjson\":\n\t\tformatter = fakedata.NewNdjsonFormatter()\n\tdefault:\n\t\tfmt.Printf(\"unknown format: %s\\n\\n\", *formatFlag)\n\t\tflag.Usage()\n\t\tos.Exit(1)\n\t}\n\n\tfOut := bufio.NewWriter(os.Stdout)\n\tdefer func() {\n\t\tif err = fOut.Flush(); err != nil {\n\t\t\t_, _ = fmt.Fprintf(os.Stderr, \"failed to flush buffer: %v\\n\", err)\n\t\t}\n\t}()\n\n\tif *headerFlag {\n\t\tcolumns.GenerateHeader(fOut, formatter)\n\t}\n\n\tif *streamFlag {\n\t\tfor {\n\t\t\tcolumns.GenerateRow(fOut, formatter)\n\t\t}\n\t}\n\tfor i := 0; i < *limitFlag; i++ {\n\t\tcolumns.GenerateRow(fOut, formatter)\n\t}\n}\n"
  },
  {
    "path": "pkg/data/adjectives.go",
    "content": "package data\n\nvar Adjectives = []string{\"Aristotelian\", \"Arthurian\", \"Bohemian\", \"Brethren\", \"Mosaic\", \"Oceanic\", \"Proctor\", \"Terran\", \"Tudor\", \"abroad\", \"absorbing\", \"abstract\", \"academic\", \"accelerated\", \"accented\", \"accountant\", \"acquainted\", \"acute\", \"addicting\", \"addictive\", \"adjustable\", \"admired\", \"adult\", \"adverse\", \"advised\", \"aerosol\", \"afraid\", \"aggravated\", \"aggressive\", \"agreeable\", \"alienate\", \"aligned\", \"all-round\", \"alleged\", \"almond\", \"alright\", \"altruistic\", \"ambient\", \"ambivalent\", \"amiable\", \"amino\", \"amorphous\", \"amused\", \"anatomical\", \"ancestral\", \"angelic\", \"angrier\", \"answerable\", \"antiquarian\", \"antiretroviral\", \"appellate\", \"applicable\", \"apportioned\", \"approachable\", \"appropriated\", \"archer\", \"aroused\", \"arrested\", \"assertive\", \"assigned\", \"athletic\", \"atrocious\", \"attained\", \"authoritarian\", \"autobiographical\", \"avaricious\", \"avocado\", \"awake\", \"awesome\", \"backstage\", \"backwoods\", \"balding\", \"bandaged\", \"banded\", \"banned\", \"barreled\", \"battle\", \"beaten\", \"begotten\", \"beguiled\", \"bellied\", \"belted\", \"beneficent\", \"besieged\", \"betting\", \"big-money\", \"biggest\", \"biochemical\", \"bipolar\", \"blackened\", \"blame\", \"blessed\", \"blindfolded\", \"bloat\", \"blocked\", \"blooded\", \"blue-collar\", \"blushing\", \"boastful\", \"bolder\", \"bolstered\", \"bonnie\", \"bored\", \"boundary\", \"bounded\", \"bounding\", \"branched\", \"brawling\", \"brazen\", \"breeding\", \"bridged\", \"brimming\", \"brimstone\", \"broadest\", \"broiled\", \"broker\", \"bronze\", \"bruising\", \"buffy\", \"bullied\", \"bungling\", \"burial\", \"buttery\", \"candied\", \"canonical\", \"cantankerous\", \"cardinal\", \"carefree\", \"caretaker\", \"casual\", \"cathartic\", \"causal\", \"chapel\", \"characterized\", \"charcoal\", \"cheeky\", \"cherished\", \"chipotle\", \"chirping\", \"chivalrous\", \"circumstantial\", \"civic\", \"civil\", \"civilised\", \"clanking\", \"clapping\", \"claptrap\", \"classless\", \"cleansed\", \"cleric\", \"cloistered\", \"codified\", \"colloquial\", \"colour\", \"combat\", \"combined\", \"comely\", \"commissioned\", \"commonplace\", \"commuter\", \"commuting\", \"comparable\", \"complementary\", \"compromising\", \"conceding\", \"concentrated\", \"conceptual\", \"conditioned\", \"confederate\", \"confident\", \"confidential\", \"confining\", \"confuse\", \"congressional\", \"consequential\", \"conservative\", \"constituent\", \"contaminated\", \"contemporaneous\", \"contraceptive\", \"convertible\", \"convex\", \"cooked\", \"coronary\", \"corporatist\", \"correlated\", \"corroborated\", \"cosmic\", \"cover\", \"crash\", \"crypto\", \"culminate\", \"cushioned\", \"dandy\", \"dashing\", \"dazzled\", \"decreased\", \"decrepit\", \"dedicated\", \"defaced\", \"defective\", \"defenseless\", \"deluded\", \"deodorant\", \"departed\", \"depress\", \"designing\", \"despairing\", \"destitute\", \"detective\", \"determined\", \"devastating\", \"deviant\", \"devilish\", \"devoted\", \"diagonal\", \"dictated\", \"didactic\", \"differentiated\", \"diffused\", \"dirtier\", \"disabling\", \"disconnected\", \"discovered\", \"disdainful\", \"diseased\", \"disfigured\", \"disheartened\", \"disheveled\", \"disillusioned\", \"disparate\", \"dissident\", \"doable\", \"doctrinal\", \"doing\", \"dotted\", \"double-blind\", \"downbeat\", \"dozen\", \"draining\", \"draught\", \"dread\", \"dried\", \"dropped\", \"dulled\", \"duplicate\", \"eaten\", \"echoing\", \"economical\", \"elaborated\", \"elastic\", \"elective\", \"electoral\", \"elven\", \"embryo\", \"emerald\", \"emergency\", \"emissary\", \"emotional\", \"employed\", \"enamel\", \"encased\", \"encrusted\", \"endangered\", \"engraved\", \"engrossing\", \"enlarged\", \"enlisted\", \"enlivened\", \"ensconced\", \"entangled\", \"enthralling\", \"entire\", \"envious\", \"eradicated\", \"eroded\", \"esoteric\", \"essential\", \"evaporated\", \"ever-present\", \"evergreen\", \"everlasting\", \"exacting\", \"exasperated\", \"excess\", \"exciting\", \"executable\", \"existent\", \"exonerated\", \"exorbitant\", \"exponential\", \"export\", \"extraordinary\", \"exultant\", \"exulting\", \"facsimile\", \"fading\", \"fainter\", \"faith-based\", \"fallacious\", \"faltering\", \"famous\", \"fancier\", \"fast-growing\", \"fated\", \"favourable\", \"fearless\", \"feathered\", \"fellow\", \"fermented\", \"ferocious\", \"fiddling\", \"filling\", \"firmer\", \"fitted\", \"flammable\", \"flawed\", \"fledgling\", \"fleshy\", \"flexible\", \"flickering\", \"floral\", \"flowering\", \"flowing\", \"foggy\", \"folic\", \"foolhardy\", \"foolish\", \"footy\", \"forehand\", \"forked\", \"formative\", \"formulaic\", \"foul-mouthed\", \"fractional\", \"fragrant\", \"fraudulent\", \"freakish\", \"freckled\", \"freelance\", \"freight\", \"fresh\", \"fretted\", \"frugal\", \"fulfilling\", \"fuming\", \"funded\", \"funny\", \"garbled\", \"gathered\", \"geologic\", \"geometric\", \"gibberish\", \"gilded\", \"ginger\", \"glare\", \"glaring\", \"gleaming\", \"glorified\", \"glorious\", \"goalless\", \"gold-plated\", \"goody\", \"grammatical\", \"grande\", \"grateful\", \"gratuitous\", \"graven\", \"greener\", \"grinding\", \"grizzly\", \"groaning\", \"grudging\", \"guaranteed\", \"gusty\", \"half-breed\", \"hand-held\", \"handheld\", \"hands-off\", \"hard-pressed\", \"harlot\", \"healing\", \"healthier\", \"healthiest\", \"heart\", \"heart-shaped\", \"heathen\", \"hedonistic\", \"heralded\", \"herbal\", \"high-density\", \"high-performance\", \"high-res\", \"high-yield\", \"hissy\", \"hitless\", \"holiness\", \"homesick\", \"honorable\", \"hooded\", \"hopeless\", \"horrendous\", \"horrible\", \"hot-button\", \"huddled\", \"human\", \"humbling\", \"humid\", \"humiliating\", \"hypnotized\", \"idealistic\", \"idiosyncratic\", \"ignited\", \"illustrated\", \"illustrative\", \"imitated\", \"immense\", \"immersive\", \"immigrant\", \"immoral\", \"impassive\", \"impressionable\", \"improbable\", \"impulsive\", \"in-between\", \"in-flight\", \"inattentive\", \"inbound\", \"inbounds\", \"incalculable\", \"incomprehensible\", \"indefatigable\", \"indigo\", \"indiscriminate\", \"indomitable\", \"inert\", \"inflate\", \"inform\", \"inheriting\", \"injured\", \"injurious\", \"inking\", \"inoffensive\", \"insane\", \"insensible\", \"insidious\", \"insincere\", \"insistent\", \"insolent\", \"insufferable\", \"intemperate\", \"interdependent\", \"interesting\", \"interfering\", \"intern\", \"interpreted\", \"intersecting\", \"intolerable\", \"intolerant\", \"intuitive\", \"irresolute\", \"irritate\", \"jealous\", \"jerking\", \"joining\", \"joint\", \"journalistic\", \"joyful\", \"keyed\", \"knowing\", \"lacklustre\", \"laden\", \"lagging\", \"lamented\", \"laughable\", \"layered\", \"leather\", \"leathern\", \"leery\", \"left-footed\", \"legible\", \"leisure\", \"lessening\", \"liberating\", \"life-size\", \"lifted\", \"lightest\", \"limitless\", \"listening\", \"literary\", \"liver\", \"livid\", \"lobster\", \"locked\", \"long-held\", \"long-lasting\", \"long-running\", \"long-suffering\", \"loudest\", \"loveliest\", \"low-budget\", \"low-carb\", \"lowering\", \"lucid\", \"luckless\", \"lusty\", \"luxurious\", \"magazine\", \"maniac\", \"manmade\", \"maroon\", \"mastered\", \"mated\", \"material\", \"materialistic\", \"meaningful\", \"measuring\", \"mediaeval\", \"medical\", \"meditated\", \"medley\", \"melodic\", \"memorable\", \"memorial\", \"metabolic\", \"metallic\", \"metallurgical\", \"metering\", \"midair\", \"midterm\", \"midway\", \"mighty\", \"migrating\", \"mind-blowing\", \"mind-boggling\", \"minor\", \"mirrored\", \"misguided\", \"misshapen\", \"mitigated\", \"mixed\", \"modernized\", \"molecular\", \"monarch\", \"monastic\", \"morbid\", \"motley\", \"motorized\", \"mounted\", \"multi-million\", \"multidisciplinary\", \"muscled\", \"muscular\", \"muted\", \"mysterious\", \"mythic\", \"nail-biting\", \"natural\", \"nauseous\", \"negative\", \"networked\", \"neurological\", \"neutered\", \"newest\", \"night\", \"nitrous\", \"no-fly\", \"noncommercial\", \"nonsense\", \"north\", \"nuanced\", \"occurring\", \"offensive\", \"oldest\", \"oncoming\", \"one-eyed\", \"one-year\", \"onstage\", \"onward\", \"opaque\", \"open-ended\", \"operating\", \"opportunist\", \"opposing\", \"opt-in\", \"ordinate\", \"outdone\", \"outlaw\", \"outsized\", \"overboard\", \"overheated\", \"oversize\", \"overworked\", \"oyster\", \"paced\", \"panting\", \"paralyzed\", \"paramount\", \"parental\", \"parted\", \"partisan\", \"passive\", \"pastel\", \"patriot\", \"peacekeeping\", \"pedestrian\", \"peevish\", \"penal\", \"penned\", \"pensive\", \"perceptual\", \"perky\", \"permissible\", \"pernicious\", \"perpetuate\", \"perplexed\", \"pervasive\", \"petrochemical\", \"philosophical\", \"picturesque\", \"pillaged\", \"piped\", \"piquant\", \"pitching\", \"plausible\", \"pliable\", \"plumb\", \"politician\", \"polygamous\", \"poorest\", \"portmanteau\", \"posed\", \"positive\", \"possible\", \"postpartum\", \"prank\", \"pre-emptive\", \"precocious\", \"predicted\", \"premium\", \"preparatory\", \"prerequisite\", \"prescient\", \"preserved\", \"presidential\", \"pressed\", \"pressurized\", \"presumed\", \"prewar\", \"priced\", \"pricier\", \"primal\", \"primer\", \"primetime\", \"printed\", \"private\", \"problem\", \"procedural\", \"process\", \"prodigious\", \"professional\", \"programmed\", \"progressive\", \"prolific\", \"promising\", \"promulgated\", \"pronged\", \"proportionate\", \"protracted\", \"pulled\", \"pulsed\", \"purgatory\", \"quick\", \"rapid-fire\", \"raunchy\", \"razed\", \"reactive\", \"readable\", \"realizing\", \"recognised\", \"recovering\", \"recurrent\", \"recycled\", \"redeemable\", \"reflecting\", \"regal\", \"registering\", \"reliable\", \"reminiscent\", \"remorseless\", \"removable\", \"renewable\", \"repeating\", \"repellent\", \"reserve\", \"resigned\", \"respectful\", \"rested\", \"restrict\", \"resultant\", \"retaliatory\", \"retiring\", \"revelatory\", \"reverend\", \"reversing\", \"revolving\", \"ridiculous\", \"right-hand\", \"ringed\", \"risque\", \"robust\", \"roomful\", \"rotating\", \"roused\", \"rubber\", \"run-down\", \"running\", \"runtime\", \"rustling\", \"safest\", \"salient\", \"sanctioned\", \"saute\", \"saved\", \"scandalized\", \"scarlet\", \"scattering\", \"sceptical\", \"scheming\", \"scoundrel\", \"scratched\", \"scratchy\", \"scrolled\", \"seated\", \"second-best\", \"segregated\", \"self-taught\", \"semiautomatic\", \"senior\", \"sensed\", \"sentient\", \"sexier\", \"shadowy\", \"shaken\", \"shaker\", \"shameless\", \"shaped\", \"shiny\", \"shipped\", \"shivering\", \"shoestring\", \"short\", \"short-lived\", \"signed\", \"simplest\", \"simplistic\", \"sizable\", \"skeleton\", \"skinny\", \"skirting\", \"skyrocketed\", \"slamming\", \"slanting\", \"slapstick\", \"sleek\", \"sleepless\", \"sleepy\", \"slender\", \"slimmer\", \"smacking\", \"smokeless\", \"smothered\", \"smouldering\", \"snuff\", \"socialized\", \"solid-state\", \"sometime\", \"sought\", \"spanking\", \"sparing\", \"spattered\", \"specialized\", \"specific\", \"speedy\", \"spherical\", \"spiky\", \"spineless\", \"sprung\", \"squint\", \"stainless\", \"standing\", \"starlight\", \"startled\", \"stately\", \"statewide\", \"stereoscopic\", \"sticky\", \"stimulant\", \"stinky\", \"stoked\", \"stolen\", \"storied\", \"strained\", \"strapping\", \"strengthened\", \"stubborn\", \"stylized\", \"suave\", \"subjective\", \"subjugated\", \"subordinate\", \"succeeding\", \"suffering\", \"summary\", \"sunset\", \"sunshine\", \"supernatural\", \"supervisory\", \"supply-side\", \"surrogate\", \"suspended\", \"suspenseful\", \"swarthy\", \"sweating\", \"sweeping\", \"swinging\", \"swooning\", \"sympathize\", \"synchronized\", \"synonymous\", \"synthetic\", \"tailed\", \"tallest\", \"tangible\", \"tanked\", \"tarry\", \"technical\", \"tectonic\", \"telepathic\", \"tenderest\", \"territorial\", \"testimonial\", \"theistic\", \"thicker\", \"threatening\", \"tight-lipped\", \"timed\", \"timely\", \"timid\", \"torrent\", \"totalled\", \"tougher\", \"traditional\", \"transformed\", \"trapped\", \"traveled\", \"traverse\", \"treated\", \"trial\", \"trunk\", \"trusting\", \"trying\", \"twisted\", \"two-lane\", \"tyrannical\", \"unaided\", \"unassisted\", \"unassuming\", \"unattractive\", \"uncapped\", \"uncomfortable\", \"uncontrolled\", \"uncooked\", \"uncooperative\", \"underground\", \"undersea\", \"undisturbed\", \"unearthly\", \"uneasy\", \"unequal\", \"unfazed\", \"unfinished\", \"unforeseen\", \"unforgivable\", \"unidentified\", \"unimaginative\", \"uninspired\", \"unintended\", \"uninvited\", \"universal\", \"unmasked\", \"unorthodox\", \"unparalleled\", \"unpleasant\", \"unprincipled\", \"unread\", \"unreasonable\", \"unregulated\", \"unreliable\", \"unremitting\", \"unsafe\", \"unsanitary\", \"unsealed\", \"unsuccessful\", \"unsupervised\", \"untimely\", \"unwary\", \"unwrapped\", \"uppity\", \"upstart\", \"useless\", \"utter\", \"valiant\", \"valid\", \"valued\", \"vanilla\", \"vaulting\", \"vaunted\", \"veering\", \"vegetative\", \"vented\", \"verbal\", \"verifying\", \"veritable\", \"versed\", \"vinyl\", \"virgin\", \"visceral\", \"visual\", \"voluptuous\", \"walk-on\", \"wanton\", \"warlike\", \"washed\", \"waterproof\", \"waved\", \"weakest\", \"well-bred\", \"well-chosen\", \"well-informed\", \"wetting\", \"wheeled\", \"whirlwind\", \"widen\", \"widening\", \"willful\", \"willing\", \"winnable\", \"winningest\", \"wireless\", \"wistful\", \"woeful\", \"wooded\", \"woodland\", \"wordless\", \"workable\", \"worldly\", \"worldwide\", \"worst-case\", \"worsted\", \"worthless\"}\n"
  },
  {
    "path": "pkg/data/animals.go",
    "content": "package data\n\nvar Animals = []string{\"aardvark\", \"alligator\", \"alpaca\", \"antelope\", \"ape\", \"armadillo\", \"baboon\", \"badger\", \"bat\", \"bear\", \"beaver\", \"bison\", \"boar\", \"buffalo\", \"bull\", \"camel\", \"canary\", \"capybara\", \"cat\", \"chameleon\", \"cheetah\", \"chimpanzee\", \"chinchilla\", \"chipmunk\", \"cougar\", \"cow\", \"coyote\", \"crocodile\", \"crow\", \"deer\", \"dingo\", \"dog\", \"donkey\", \"dromedary\", \"elephant\", \"elk\", \"ewe\", \"ferret\", \"finch\", \"fish\", \"fox\", \"frog\", \"gazelle\", \"gila monster\", \"giraffe\", \"gnu\", \"goat\", \"gopher\", \"gorilla\", \"grizzly bear\", \"ground hog\", \"guinea pig\", \"hamster\", \"hedgehog\", \"hippopotamus\", \"hog\", \"horse\", \"hyena\", \"ibex\", \"iguana\", \"impala\", \"jackal\", \"jaguar\", \"kangaroo\", \"koala\", \"lamb\", \"lemur\", \"leopard\", \"lion\", \"lizard\", \"llama\", \"lynx\", \"mandrill\", \"marmoset\", \"mink\", \"mole\", \"mongoose\", \"monkey\", \"moose\", \"mountain goat\", \"mouse\", \"mule\", \"muskrat\", \"mustang\", \"mynah bird\", \"newt\", \"ocelot\", \"opossum\", \"orangutan\", \"oryx\", \"otter\", \"ox\", \"panda\", \"panther\", \"parakeet\", \"parrot\", \"pig\", \"platypus\", \"polar bear\", \"porcupine\", \"porpoise\", \"prairie dog\", \"puma\", \"rabbit\", \"raccoon\", \"ram\", \"rat\", \"reindeer\", \"reptile\", \"rhinoceros\", \"salamander\", \"seal\", \"sheep\", \"shrew\", \"silver fox\", \"skunk\", \"sloth\", \"snake\", \"squirrel\", \"tapir\", \"tiger\", \"toad\", \"turtle\", \"walrus\", \"warthog\", \"weasel\", \"whale\", \"wildcat\", \"wolf\", \"wolverine\", \"wombat\", \"woodchuck\", \"yak\", \"zebra\"}\n"
  },
  {
    "path": "pkg/data/cats.go",
    "content": "package data\n\nvar Cats = []string{\"Abyssinian\", \"Aegean\", \"American Bobtail\", \"American Curl\", \"American Shorthair\", \"American Wirehair\", \"Arabian Mau\", \"Asian\", \"Asian Semi-longhair\", \"Australian Mist\", \"Balinese\", \"Bambino\", \"Bengal\", \"Birman\", \"Bombay\", \"Brazilian Shorthair\", \"British Longhair\", \"British Semi-longhair\", \"British Shorthair\", \"Burmese\", \"Burmilla\", \"California Spangled\", \"Chantilly-Tiffany\", \"Chartreux\", \"Chausie\", \"Cheetoh\", \"Colorpoint Shorthair\", \"Cornish Rex\", \"Cymric\", \"Cyprus\", \"Devon Rex\", \"Donskoy\", \"Dragon Li\", \"Dwarf cat\", \"Egyptian Mau\", \"European Shorthair\", \"Exotic Shorthair\", \"Foldex\", \"German Rex\", \"Havana Brown\", \"Highlander\", \"Himalayan\", \"Japanese Bobtail\", \"Javanese\", \"Khao Manee\", \"Korat\", \"Korean Bobtail\", \"Korn Ja\", \"Kurilian Bobtail\", \"LaPerm\", \"Lykoi\", \"Maine Coon\", \"Manx\", \"Mekong Bobtail\", \"Minskin\", \"Munchkin\", \"Napoleon\", \"Nebelung\", \"Norwegian Forest cat\", \"Ocicat\", \"Ojos Azules\", \"Oregon Rex\", \"Oriental Bicolor\", \"Oriental Longhair\", \"Oriental Shorthair\", \"PerFold\", \"Persian (Modern)\", \"Persian (Traditional)\", \"Peterbald\", \"Pixie-bob\", \"Raas\", \"Ragamuffin\", \"Ragdoll\", \"Russian Blue\", \"Russian White, Black and Tabby\", \"Sam Sawet\", \"Savannah\", \"Scottish Fold\", \"Selkirk Rex\", \"Serengeti\", \"Serrade Petit\", \"Siamese\", \"Siberian\", \"Singapura\", \"Snowshoe\", \"Sokoke\", \"Somali\", \"Sphynx\", \"Suphalak\", \"Thai\", \"Thai Lilac\", \"Tonkinese\", \"Toyger\", \"Turkish Angora\", \"Turkish Van\", \"Ukrainian Levkoy\"}\n"
  },
  {
    "path": "pkg/data/cities.go",
    "content": "package data\n\nvar Cities = []string{\"New York\", \"Los Angeles\", \"Chicago\", \"Houston\", \"Philadelphia\", \"Phoenix\", \"San Antonio\", \"San Diego\", \"Dallas\", \"San Jose\", \"Austin\", \"Jacksonville\", \"San Francisco\", \"Indianapolis\", \"Columbus\", \"Fort Worth\", \"Charlotte\", \"Detroit\", \"El Paso\", \"Seattle\", \"Denver\", \"Washington\", \"Boston\", \"Memphis\", \"Nashville-Davidson\", \"Baltimore\", \"Portland\", \"Oklahoma City\", \"Las Vegas\", \"Louisville/Jefferson County\", \"Milwaukee\", \"Albuquerque\", \"Tucson\", \"Fresno\", \"Sacramento\", \"Kansas City\", \"Mesa\", \"Long Beach\", \"Atlanta\", \"Virginia Beach\", \"Colorado Springs\", \"Omaha\", \"Raleigh\", \"Miami\", \"Oakland\", \"Minneapolis\", \"Tulsa\", \"Cleveland\", \"Wichita\", \"Arlington\", \"New Orleans\", \"Bakersfield\", \"Tampa\", \"Aurora\", \"San Juan\", \"Honolulu\", \"Anaheim\", \"Santa Ana\", \"Corpus Christi\", \"Riverside\", \"St. Louis\", \"Lexington-Fayette\", \"Pittsburgh\", \"Stockton\", \"Anchorage\", \"Cincinnati\", \"St. Paul\", \"Greensboro\", \"Toledo\", \"Newark\", \"Plano\", \"Henderson\", \"Lincoln\", \"Orlando\", \"Jersey City\", \"Fort Wayne\", \"Chula Vista\", \"Buffalo\", \"St. Petersburg\", \"Durham\", \"Laredo\", \"Irvine\", \"Madison\", \"Norfolk\", \"Lubbock\", \"Chandler\", \"Glendale\", \"Winston-Salem\", \"Reno\", \"Hialeah\", \"Garland\", \"Scottsdale\", \"Chesapeake\", \"Irving\", \"North Las Vegas\", \"Paradise\", \"Baton Rouge\", \"Fremont\", \"Gilbert\", \"Arlington\", \"Boise City\", \"Richmond\", \"San Bernardino\", \"Des Moines\", \"Birmingham\", \"Spokane\", \"Rochester\", \"Modesto\", \"Tacoma\", \"Fontana\", \"Oxnard\", \"Fayetteville\", \"Moreno Valley\", \"Montgomery\", \"Aurora\", \"Columbus\", \"Yonkers\", \"Huntington Beach\", \"Shreveport\", \"Akron\", \"Glendale\", \"Little Rock\", \"Amarillo\", \"Augusta-Richmond County\", \"Grand Rapids\", \"Mobile\", \"Sunrise Manor\", \"Salt Lake City\", \"Spring Valley\", \"Huntsville\", \"Tallahassee\", \"Grand Prairie\", \"Knoxville\", \"Overland Park\", \"Worcester\", \"Brownsville\", \"Newport News\", \"Santa Clarita\", \"Providence\", \"Port St. Lucie\", \"Chattanooga\", \"Fort Lauderdale\", \"Tempe\", \"Garden Grove\", \"Oceanside\", \"Bayamon\", \"Rancho Cucamonga\", \"Santa Rosa\", \"Jackson\", \"Cape Coral\", \"Vancouver\", \"Ontario\", \"Sioux Falls\", \"Springfield\", \"Pembroke Pines\", \"Elk Grove\", \"Salem\", \"Eugene\", \"Corona\", \"Lancaster\", \"Peoria\", \"Fort Collins\", \"Palmdale\", \"McKinney\", \"Salinas\", \"Cary\", \"Hayward\", \"Springfield\", \"Macon-Bibb County\", \"Pasadena\", \"Pomona\", \"Alexandria\", \"Escondido\", \"Lakewood\", \"Kansas City\", \"Rockford\", \"Sunnyvale\", \"Hollywood\", \"Carolina\", \"Joliet\", \"Torrance\", \"Bridgeport\", \"Paterson\", \"Clarksville\", \"Naperville\", \"Frisco\", \"Metairie\", \"Savannah\", \"Syracuse\", \"Mesquite\", \"Dayton\", \"Pasadena\", \"Orange\", \"Fullerton\", \"Killeen\", \"McAllen\", \"Hampton\", \"Bellevue\", \"Warren\", \"West Valley City\", \"Miramar\", \"Olathe\", \"Columbia\", \"Sterling Heights\", \"Waco\", \"Thornton\", \"New Haven\", \"Charleston\", \"Enterprise\", \"Cedar Rapids\", \"Carrollton\", \"Visalia\", \"Thousand Oaks\", \"Gainesville\", \"Denton\", \"Roseville\", \"Midland\", \"Elizabeth\", \"Coral Springs\", \"Surprise\", \"Topeka\", \"Stamford\", \"Concord\", \"Simi Valley\", \"Lafayette\", \"Kent\", \"Hartford\", \"East Los Angeles\", \"Ponce\", \"Santa Clara\", \"Abilene\", \"Murfreesboro\", \"Victorville\", \"Athens-Clarke County\", \"Evansville\", \"Vallejo\", \"Allentown\", \"Norman\", \"Berkeley\", \"Ann Arbor\", \"Beaumont\", \"Independence\", \"Columbia\", \"Springfield\", \"Peoria\", \"Fargo\", \"Provo\", \"El Monte\", \"Lansing\", \"Odessa\", \"Wilmington\", \"Arvada\", \"Downey\", \"Round Rock\", \"Miami Gardens\", \"Costa Mesa\", \"Lehigh Acres\", \"Carlsbad\", \"Elgin\", \"Westminster\", \"Clearwater\", \"Rochester\", \"Inglewood\", \"Fairfield\", \"West Jordan\", \"Manchester\", \"Gresham\", \"Lowell\", \"Brandon\", \"Waterbury\", \"Billings\", \"San Buenaventura (Ventura)\", \"High Point\", \"Temecula\", \"Cambridge\", \"Antioch\", \"Murrieta\", \"Pueblo\", \"The Woodlands\", \"Richardson\", \"Richmond\", \"Centennial\", \"West Covina\", \"Highlands Ranch\", \"Everett\", \"Palm Bay\", \"Norwalk\", \"Pearland\", \"North Charleston\", \"Pompano Beach\", \"Daly City\", \"Boulder\", \"Wichita Falls\", \"West Palm Beach\", \"Green Bay\", \"Broken Arrow\", \"College Station\", \"Burbank\", \"Santa Maria\", \"Columbia\", \"Spring Hill\", \"El Cajon\", \"Lakeland\", \"Rialto\", \"Lewisville\", \"Davenport\", \"San Mateo\", \"Sandy Springs\", \"Clovis\", \"Tyler\", \"Las Cruces\", \"South Bend\", \"Jurupa Valley\", \"Hillsboro\", \"Erie\", \"Kenosha\", \"Roanoke\", \"Greeley\", \"Flint\", \"Davie\", \"San Angelo\", \"Vista\", \"Renton\", \"Albany\", \"Compton\", \"Arden-Arcade\", \"Lawton\", \"Tuscaloosa\", \"Mission Viejo\", \"Portsmouth\", \"Vacaville\", \"Dearborn\", \"South Gate\", \"New Bedford\", \"League City\", \"Beaverton\", \"Livonia\", \"Brockton\", \"Sparks\", \"Allen\", \"Lee's Summit\", \"Federal Way\", \"Roswell\", \"Yuma\", \"Quincy\", \"Yakima\", \"Spokane Valley\", \"Orem\", \"Sandy\", \"Rio Rancho\", \"Carson\", \"Hesperia\", \"Lawrence\", \"Santa Monica\", \"Lynn\", \"Miami Beach\", \"Boca Raton\", \"Westminster\", \"San Marcos\", \"Redding\", \"Sunrise\", \"Santa Barbara\", \"Plantation\", \"Longmont\", \"Germantown\", \"Greenville\", \"Chico\", \"San Leandro\", \"Fall River\", \"Toms River\", \"San Tan Valley\", \"Edmond\", \"Newton\", \"Meridian\", \"Waukegan\", \"Norwalk\", \"Reading\", \"Nampa\", \"Fort Smith\", \"Asheville\", \"Deltona\", \"Nashua\", \"Suffolk\", \"Carmel\", \"Hawthorne\", \"Alafaya\", \"Newport Beach\", \"Whittier\", \"Livermore\", \"Tracy\", \"Duluth\", \"Citrus Heights\", \"Fishers\", \"Kirkland\", \"Concord\", \"Sugar Land\", \"Clifton\", \"Indio\", \"Bloomington\", \"Menifee\", \"Ogden\", \"Alhambra\", \"Champaign\", \"Riverview\", \"Trenton\", \"Bellingham\", \"Bend\", \"Edinburg\", \"Hoover\", \"O'Fallon\", \"Cicero\", \"Danbury\", \"Chino\", \"Bloomington\", \"Troy\", \"Johns Creek\", \"Santa Fe\", \"Buena Park\", \"Hemet\", \"Sioux City\", \"Redwood City\", \"Town 'n' Country\", \"Westland\", \"Mission\", \"Longview\", \"Warwick\", \"Merced\", \"Farmington Hills\", \"Lakewood\", \"Palm Coast\", \"Cranston\", \"Largo\", \"Lake Forest\", \"Avondale\", \"Fayetteville\", \"Bryan\", \"Parma\", \"Napa\", \"Somerville\", \"Tustin\", \"Lawrence\", \"New Rochelle\", \"Melbourne\", \"Medford\", \"Mountain View\", \"Brooklyn Park\", \"Lynchburg\", \"Deerfield Beach\", \"St. George\", \"Bloomington\", \"Hammond\", \"Caguas\", \"Silver Spring\", \"Kennewick\", \"Racine\", \"Mount Pleasant\", \"Gary\", \"Bellflower\", \"Alameda\", \"Chino Hills\", \"Pleasanton\", \"St. Joseph\", \"Baldwin Park\", \"Scranton\", \"Springdale\", \"Camden\", \"Kalamazoo\", \"Upland\", \"Arlington Heights\", \"Albany\", \"Auburn\", \"Evanston\", \"Baytown\", \"Pharr\", \"Bethlehem\", \"Plymouth\", \"Lake Charles\", \"Folsom\", \"Wyoming\", \"Cheektowaga\", \"Kendall\", \"Conroe\", \"San Ramon\", \"Schaumburg\", \"Bolingbrook\", \"Decatur\", \"Gastonia\", \"Perris\", \"Manteca\", \"Union City\", \"Milpitas\", \"Appleton\", \"Dale City\", \"Loveland\", \"Warner Robins\", \"Centreville\", \"Southfield\", \"Rochester Hills\", \"New Britain\", \"Boynton Beach\", \"Atascocita\", \"Jonesboro\", \"Goodyear\", \"Rapid City\", \"Waldorf\", \"Layton\", \"Iowa City\", \"Canton\", \"Waukesha\", \"Missouri City\", \"Guaynabo\", \"Wilmington\", \"Apple Valley\", \"Pawtucket\", \"Gulfport\", \"Lafayette\", \"Lynwood\", \"Turlock\", \"Temple\", \"Fort Myers\", \"Ellicott City\", \"Framingham\", \"Franklin\", \"Passaic\", \"Lauderhill\", \"Redlands\", \"Rock Hill\", \"Missoula\", \"Flower Mound\", \"Pine Hills\", \"Muncie\", \"Rancho Cordova\", \"The Villages\", \"Flagstaff\", \"Palatine\", \"Glen Burnie\", \"Bismarck\", \"Union City\", \"Weston\", \"Casas Adobes\", \"Pasco\", \"Jacksonville\", \"Waterloo\", \"St. Charles\", \"Frederick\", \"Mount Vernon\", \"Dothan\", \"Pittsburg\", \"North Richland Hills\", \"Redondo Beach\", \"Eau Claire\", \"Walnut Creek\", \"Yorba Linda\", \"Jackson\", \"Bossier City\", \"New Braunfels\", \"Maple Grove\", \"Kenner\", \"Davis\", \"Kissimmee\", \"St. Cloud\", \"Oshkosh\", \"Woodbury\", \"Palo Alto\", \"Portland\", \"Camarillo\", \"South San Francisco\", \"Yuba City\", \"Victoria\", \"Gaithersburg\", \"North Little Rock\", \"Eagan\", \"Bayonne\", \"Homestead\", \"Harlingen\", \"Schenectady\", \"Johnson City\", \"Mayaguez\", \"Rockville\", \"Youngstown\", \"San Clemente\", \"Delray Beach\", \"Laguna Niguel\", \"Marysville\", \"Skokie\", \"East Orange\", \"Shawnee\", \"Conway\", \"Daytona Beach\", \"Ames\", \"Janesville\", \"Lodi\", \"Tamarac\", \"Pico Rivera\", \"Lorain\", \"Carmichael\", \"Cedar Park\", \"Montebello\", \"Madera\", \"Florence-Graham\", \"Santa Cruz\", \"Eden Prairie\", \"West Hartford\", \"Mansfield\", \"Alpharetta\", \"Cheyenne\", \"Castro Valley\", \"Bowling Green\", \"Greenville\", \"South Jordan\", \"Waltham\", \"Bethesda\", \"Broomfield\", \"Haverhill\", \"Dundalk\", \"Council Bluffs\", \"Hamilton\", \"Encinitas\", \"Coon Rapids\", \"North Miami\", \"Poinciana\", \"Sammamish\", \"Rogers\", \"Taylor\", \"Tulare\", \"La Habra\", \"West Des Moines\", \"Brentwood\", \"Wellington\", \"Utica\", \"Blaine\", \"Millcreek\", \"Burnsville\", \"Terre Haute\", \"Monterey Park\", \"Vineland\", \"North Port\", \"Malden\", \"Grand Junction\", \"Springfield\", \"Jupiter\", \"West Allis\", \"Rocklin\", \"Taylorsville\", \"Bristol\", \"National City\", \"Auburn\", \"Cupertino\", \"Palm Harbor\", \"Lake Elsinore\", \"Meriden\", \"Reston\", \"Pontiac\", \"St. Clair Shores\", \"Gardena\", \"Lakeville\", \"Springfield\", \"Petaluma\", \"Marietta\", \"Moore\", \"Lakewood\", \"Great Falls\", \"Georgetown\", \"Casper\", \"Lancaster\", \"South Whittier\", \"Buckeye\", \"Redmond\", \"Kendale Lakes\", \"Rowlett\", \"Brookline\", \"La Mesa\", \"Chapel Hill\", \"San Rafael\", \"Idaho Falls\", \"Huntington Park\", \"Royal Oak\", \"Port Orange\", \"Des Plaines\", \"Noblesville\", \"Owensboro\", \"Orland Park\", \"Spring\", \"Dubuque\", \"Porterville\", \"Bartlett\", \"Novi\", \"Eastvale\", \"Towson\", \"Kokomo\", \"Port Charlotte\", \"White Plains\", \"Ocala\", \"Tonawanda\", \"Tamiami\", \"Arcadia\", \"San Marcos\", \"Coconut Creek\", \"Bowie\", \"Woodland\", \"Fountainebleau\", \"Medford\", \"Tinley Park\", \"Sanford\", \"Midwest City\", \"Brentwood\", \"Santee\", \"Oak Lawn\", \"Valdosta\", \"Fountain Valley\", \"Taunton\", \"Diamond Bar\", \"New Brunswick\", \"Berwyn\", \"Dearborn Heights\", \"Lehi\", \"Margate\", \"Rocky Mount\", \"The Hammocks\", \"Chicopee\", \"Manhattan\", \"Grand Forks\", \"St. Peters\", \"Corvallis\", \"Kettering\", \"Pflugerville\", \"Weymouth Town\", \"Hempstead\", \"Decatur\", \"Anderson\", \"South Hill\", \"Hendersonville\", \"Shoreline\", \"West Haven\", \"Paramount\", \"Port Arthur\", \"Hanford\", \"Aloha\", \"Novato\", \"Smyrna\", \"Lakewood\", \"Pocatello\", \"Greenwood\", \"Mount Prospect\", \"Normal\", \"Dublin\", \"Rosemead\", \"Highland\", \"Sarasota\", \"Carson City\", \"Hacienda Heights\", \"Elyria\", \"Colton\", \"Castle Rock\", \"Euless\", \"Blue Springs\", \"Wheaton\", \"Doral\", \"Ankeny\", \"Cathedral City\", \"Pensacola\", \"Richland\", \"Revere\", \"Hoboken\", \"Lake Havasu City\", \"Bellevue\", \"Bradenton\", \"Watsonville\", \"Yucaipa\", \"Kingsport\", \"Gilroy\", \"Burlington\", \"Delano\", \"West New York\", \"Levittown\", \"Elkhart\", \"Stratford\", \"Perth Amboy\", \"Peabody\", \"Florissant\", \"Placentia\", \"La Crosse\", \"Aspen Hill\", \"Milford\", \"Oak Park\", \"Harrisonburg\", \"Albany\", \"Palm Beach Gardens\", \"DeSoto\", \"Southaven\", \"Battle Creek\", \"Commerce City\", \"Hoffman Estates\", \"Huntersville\", \"Minnetonka\", \"Casa Grande\", \"Brookhaven\", \"West Sacramento\", \"Catalina Foothills\", \"Glendora\", \"Joplin\", \"Wesley Chapel\", \"Lenexa\", \"Irondequoit\", \"Levittown\", \"Palm Desert\", \"Pinellas Park\", \"Grand Island\", \"Enid\", \"Lakewood\", \"East Hartford\", \"Tigard\", \"Kentwood\", \"Apple Valley\", \"Plainfield\", \"Grapevine\", \"Coral Gables\", \"Caldwell\", \"Rowland Heights\", \"Aliso Viejo\", \"Charleston\", \"Burien\", \"Edina\", \"North Bethesda\", \"Saginaw\", \"Troy\", \"Country Club\", \"Bonita Springs\", \"Cerritos\", \"Wheaton\", \"Ashburn\", \"Poway\", \"Olympia\", \"Wilson\", \"Downers Grove\", \"Logan\", \"Florin\", \"Galveston\", \"Leesburg\", \"Monroe\", \"Cuyahoga Falls\", \"Niagara Falls\", \"Harrisburg\", \"La Mirada\", \"Methuen Town\", \"Rancho Santa Margarita\", \"Severn\", \"Cypress\", \"McLean\", \"Bedford\", \"Murray\", \"Sheboygan\", \"Huntington\", \"Covina\", \"Middletown\", \"Azusa\", \"Newark\", \"Parker\", \"Roswell\", \"East Lansing\", \"Antelope\", \"Mishawaka\", \"Dunwoody\", \"Stillwater\", \"Alexandria\", \"Collierville\", \"Tuckahoe\", \"East Honolulu\", \"Summerville\", \"Euclid\", \"Portage\", \"Coeur d'Alene\", \"Chesterfield\", \"Salina\", \"Roseville\", \"St. Louis Park\", \"Bel Air South\", \"Cedar Hill\", \"Lawrence\", \"Wauwatosa\", \"Minot\", \"East Providence\", \"Pearl City\", \"Ceres\", \"Apopka\", \"Middletown\", \"Mansfield\", \"Mentor\", \"Hattiesburg\", \"North Highlands\", \"Texas City\", \"San Luis Obispo\", \"Palm Springs\", \"Twin Falls\", \"Glenview\", \"Columbus\", \"Jeffersonville\", \"Draper\", \"Madison\", \"San Jacinto\", \"Binghamton\", \"Trujillo Alto\", \"Beavercreek\", \"Potomac\", \"Elmhurst\", \"Kannapolis\", \"Lincoln\", \"Wylie\", \"Lacey\", \"Hilo\", \"Charlottesville\", \"Maricopa\", \"Pine Bluff\", \"Smyrna\", \"Biloxi\", \"Altoona\", \"West Seneca\", \"Cleveland Heights\", \"Littleton\", \"Altadena\", \"Titusville\", \"Lake Ridge\", \"Newark\", \"Everett\", \"Strongsville\", \"West Lafayette\", \"Barnstable Town\", \"Arlington\", \"Sierra Vista\", \"Hackensack\", \"Sayreville\", \"Keller\", \"St. Cloud\", \"Attleboro\", \"Farmington\", \"Lombard\", \"Cutler Bay\", \"Blacksburg\", \"Apex\", \"Fort Pierce\", \"Dublin\", \"University\", \"Haltom City\", \"York\", \"Coachella\", \"Danville\", \"North Miami Beach\", \"El Centro\", \"Lompoc\", \"Oakland Park\", \"Pittsfield\", \"El Dorado Hills\", \"Bountiful\", \"West Babylon\", \"Cleveland\", \"DeKalb\", \"Freeport\", \"Annandale\", \"Bothell\", \"Jefferson City\", \"North Lauderdale\", \"Fond du Lac\", \"Hicksville\", \"Bell Gardens\", \"Moline\", \"Salem\", \"San Bruno\", \"Belleville\", \"Fairfield\", \"Concord\", \"Altamonte Springs\", \"Burlington\", \"Bentonville\", \"Rancho Palos Verdes\", \"Arecibo\", \"Oro Valley\", \"Danville\", \"Burke\", \"Beaumont\", \"State College\", \"Midland\", \"Kearny\", \"Catonsville\", \"Burleson\", \"Urbana\", \"Rohnert Park\", \"Plainfield\", \"Morgan Hill\", \"Bozeman\", \"Rockwall\", \"Hutchinson\", \"Linden\", \"Waipahu\", \"Urbandale\", \"Buffalo Grove\", \"Riverton\", \"Westfield\", \"Bartlett\", \"Findlay\", \"South Valley\"}\n"
  },
  {
    "path": "pkg/data/colors.go",
    "content": "package data\n\n// Colors is an array of colors\nvar Colors = []string{\n\t\"azure\",\n\t\"black\",\n\t\"blue\",\n\t\"cyan\",\n\t\"fuchsia\",\n\t\"gold\",\n\t\"green\",\n\t\"grey\",\n\t\"indigo\",\n\t\"ivory\",\n\t\"lavender\",\n\t\"lime\",\n\t\"magenta\",\n\t\"maroon\",\n\t\"olive\",\n\t\"orange\",\n\t\"orchid\",\n\t\"pink\",\n\t\"plum\",\n\t\"purple\",\n\t\"red\",\n\t\"salmon\",\n\t\"silver\",\n\t\"tan\",\n\t\"teal\",\n\t\"turquoise\",\n\t\"violet\",\n\t\"white\",\n\t\"yellow\",\n}\n"
  },
  {
    "path": "pkg/data/countries.go",
    "content": "package data\n\n// Countries is an array of country names\nvar Countries = []string{\n\t\"Afghanistan\",\n\t\"Albania\",\n\t\"Algeria\",\n\t\"American Samoa\",\n\t\"Andorra\",\n\t\"Angola\",\n\t\"Anguilla\",\n\t\"Antarctica (the territory South of 60 deg S)\",\n\t\"Antigua and Barbuda\",\n\t\"Argentina\",\n\t\"Armenia\",\n\t\"Aruba\",\n\t\"Australia\",\n\t\"Austria\",\n\t\"Azerbaijan\",\n\t\"Bahamas\",\n\t\"Bahrain\",\n\t\"Bangladesh\",\n\t\"Barbados\",\n\t\"Belarus\",\n\t\"Belgium\",\n\t\"Belize\",\n\t\"Benin\",\n\t\"Bermuda\",\n\t\"Bhutan\",\n\t\"Bolivia\",\n\t\"Bosnia and Herzegovina\",\n\t\"Botswana\",\n\t\"Bouvet Island (Bouvetoya)\",\n\t\"Brazil\",\n\t\"British Indian Ocean Territory (Chagos Archipelago)\",\n\t\"Brunei Darussalam\",\n\t\"Bulgaria\",\n\t\"Burkina Faso\",\n\t\"Burundi\",\n\t\"Cambodia\",\n\t\"Cameroon\",\n\t\"Canada\",\n\t\"Cape Verde\",\n\t\"Cayman Islands\",\n\t\"Central African Republic\",\n\t\"Chad\",\n\t\"Chile\",\n\t\"China\",\n\t\"Christmas Island\",\n\t\"Cocos (Keeling) Islands\",\n\t\"Colombia\",\n\t\"Comoros\",\n\t\"Congo\",\n\t\"Congo\",\n\t\"Cook Islands\",\n\t\"Costa Rica\",\n\t\"Cote d'Ivoire\",\n\t\"Croatia\",\n\t\"Cuba\",\n\t\"Cyprus\",\n\t\"Czech Republic\",\n\t\"Denmark\",\n\t\"Djibouti\",\n\t\"Dominica\",\n\t\"Dominican Republic\",\n\t\"Ecuador\",\n\t\"Egypt\",\n\t\"El Salvador\",\n\t\"Equatorial Guinea\",\n\t\"Eritrea\",\n\t\"Estonia\",\n\t\"Ethiopia\",\n\t\"Faroe Islands\",\n\t\"Falkland Islands (Malvinas)\",\n\t\"Fiji\",\n\t\"Finland\",\n\t\"France\",\n\t\"French Guiana\",\n\t\"French Polynesia\",\n\t\"French Southern Territories\",\n\t\"Gabon\",\n\t\"Gambia\",\n\t\"Georgia\",\n\t\"Germany\",\n\t\"Ghana\",\n\t\"Gibraltar\",\n\t\"Greece\",\n\t\"Greenland\",\n\t\"Grenada\",\n\t\"Guadeloupe\",\n\t\"Guam\",\n\t\"Guatemala\",\n\t\"Guernsey\",\n\t\"Guinea\",\n\t\"Guinea-Bissau\",\n\t\"Guyana\",\n\t\"Haiti\",\n\t\"Heard Island and McDonald Islands\",\n\t\"Holy See (Vatican City State)\",\n\t\"Honduras\",\n\t\"Hong Kong\",\n\t\"Hungary\",\n\t\"Iceland\",\n\t\"India\",\n\t\"Indonesia\",\n\t\"Iran\",\n\t\"Iraq\",\n\t\"Ireland\",\n\t\"Isle of Man\",\n\t\"Israel\",\n\t\"Italy\",\n\t\"Jamaica\",\n\t\"Japan\",\n\t\"Jersey\",\n\t\"Jordan\",\n\t\"Kazakhstan\",\n\t\"Kenya\",\n\t\"Kiribati\",\n\t\"Democratic People's Republic of Korea\",\n\t\"Republic of Korea\",\n\t\"Kuwait\",\n\t\"Kyrgyz Republic\",\n\t\"Lao People's Democratic Republic\",\n\t\"Latvia\",\n\t\"Lebanon\",\n\t\"Lesotho\",\n\t\"Liberia\",\n\t\"Libyan Arab Jamahiriya\",\n\t\"Liechtenstein\",\n\t\"Lithuania\",\n\t\"Luxembourg\",\n\t\"Macao\",\n\t\"Macedonia\",\n\t\"Madagascar\",\n\t\"Malawi\",\n\t\"Malaysia\",\n\t\"Maldives\",\n\t\"Mali\",\n\t\"Malta\",\n\t\"Marshall Islands\",\n\t\"Martinique\",\n\t\"Mauritania\",\n\t\"Mauritius\",\n\t\"Mayotte\",\n\t\"Mexico\",\n\t\"Micronesia\",\n\t\"Moldova\",\n\t\"Monaco\",\n\t\"Mongolia\",\n\t\"Montenegro\",\n\t\"Montserrat\",\n\t\"Morocco\",\n\t\"Mozambique\",\n\t\"Myanmar\",\n\t\"Namibia\",\n\t\"Nauru\",\n\t\"Nepal\",\n\t\"Netherlands Antilles\",\n\t\"Netherlands\",\n\t\"New Caledonia\",\n\t\"New Zealand\",\n\t\"Nicaragua\",\n\t\"Niger\",\n\t\"Nigeria\",\n\t\"Niue\",\n\t\"Norfolk Island\",\n\t\"Northern Mariana Islands\",\n\t\"Norway\",\n\t\"Oman\",\n\t\"Pakistan\",\n\t\"Palau\",\n\t\"Palestinian Territory\",\n\t\"Panama\",\n\t\"Papua New Guinea\",\n\t\"Paraguay\",\n\t\"Peru\",\n\t\"Philippines\",\n\t\"Pitcairn Islands\",\n\t\"Poland\",\n\t\"Portugal\",\n\t\"Puerto Rico\",\n\t\"Qatar\",\n\t\"Reunion\",\n\t\"Romania\",\n\t\"Russian Federation\",\n\t\"Rwanda\",\n\t\"Saint Barthelemy\",\n\t\"Saint Helena\",\n\t\"Saint Kitts and Nevis\",\n\t\"Saint Lucia\",\n\t\"Saint Martin\",\n\t\"Saint Pierre and Miquelon\",\n\t\"Saint Vincent and the Grenadines\",\n\t\"Samoa\",\n\t\"San Marino\",\n\t\"Sao Tome and Principe\",\n\t\"Saudi Arabia\",\n\t\"Senegal\",\n\t\"Serbia\",\n\t\"Seychelles\",\n\t\"Sierra Leone\",\n\t\"Singapore\",\n\t\"Slovakia (Slovak Republic)\",\n\t\"Slovenia\",\n\t\"Solomon Islands\",\n\t\"Somalia\",\n\t\"South Africa\",\n\t\"South Georgia and the South Sandwich Islands\",\n\t\"Spain\",\n\t\"Sri Lanka\",\n\t\"Sudan\",\n\t\"Suriname\",\n\t\"Svalbard & Jan Mayen Islands\",\n\t\"Swaziland\",\n\t\"Sweden\",\n\t\"Switzerland\",\n\t\"Syrian Arab Republic\",\n\t\"Taiwan\",\n\t\"Tajikistan\",\n\t\"Tanzania\",\n\t\"Thailand\",\n\t\"Timor-Leste\",\n\t\"Togo\",\n\t\"Tokelau\",\n\t\"Tonga\",\n\t\"Trinidad and Tobago\",\n\t\"Tunisia\",\n\t\"Turkey\",\n\t\"Turkmenistan\",\n\t\"Turks and Caicos Islands\",\n\t\"Tuvalu\",\n\t\"Uganda\",\n\t\"Ukraine\",\n\t\"United Arab Emirates\",\n\t\"United Kingdom\",\n\t\"United States of America\",\n\t\"United States Minor Outlying Islands\",\n\t\"Uruguay\",\n\t\"Uzbekistan\",\n\t\"Vanuatu\",\n\t\"Venezuela\",\n\t\"Vietnam\",\n\t\"Virgin Islands, British\",\n\t\"Virgin Islands, U.S.\",\n\t\"Wallis and Futuna\",\n\t\"Western Sahara\",\n\t\"Yemen\",\n\t\"Zambia\",\n\t\"Zimbabwe\",\n}\n"
  },
  {
    "path": "pkg/data/country_codes.go",
    "content": "package data\n\n// CountryCodes is a map of 2-digit country codes to calling codes\",\nvar CountryCodes = map[string]string{\n\t\"AD\": \"376\",\n\t\"AE\": \"971\",\n\t\"AF\": \"93\",\n\t\"AG\": \"1-268\",\n\t\"AI\": \"1-264\",\n\t\"AL\": \"355\",\n\t\"AM\": \"374\",\n\t\"AO\": \"244\",\n\t\"AQ\": \"672\",\n\t\"AR\": \"54\",\n\t\"AS\": \"1-684\",\n\t\"AT\": \"43\",\n\t\"AU\": \"61\",\n\t\"AW\": \"297\",\n\t\"AX\": \"358\",\n\t\"AZ\": \"994\",\n\t\"BA\": \"387\",\n\t\"BB\": \"1-246\",\n\t\"BD\": \"880\",\n\t\"BE\": \"32\",\n\t\"BF\": \"226\",\n\t\"BG\": \"359\",\n\t\"BH\": \"973\",\n\t\"BI\": \"257\",\n\t\"BJ\": \"229\",\n\t\"BL\": \"590\",\n\t\"BM\": \"1-441\",\n\t\"BN\": \"673\",\n\t\"BO\": \"591\",\n\t\"BQ\": \"599\",\n\t\"BR\": \"55\",\n\t\"BS\": \"1-242\",\n\t\"BT\": \"975\",\n\t\"BV\": \"47\",\n\t\"BW\": \"267\",\n\t\"BY\": \"375\",\n\t\"BZ\": \"501\",\n\t\"CA\": \"1\",\n\t\"CC\": \"61\",\n\t\"CD\": \"243\",\n\t\"CF\": \"236\",\n\t\"CG\": \"242\",\n\t\"CH\": \"41\",\n\t\"CI\": \"225\",\n\t\"CK\": \"682\",\n\t\"CL\": \"56\",\n\t\"CM\": \"237\",\n\t\"CN\": \"86\",\n\t\"CO\": \"57\",\n\t\"CR\": \"506\",\n\t\"CU\": \"53\",\n\t\"CV\": \"238\",\n\t\"CW\": \"599\",\n\t\"CX\": \"61\",\n\t\"CY\": \"357\",\n\t\"CZ\": \"420\",\n\t\"DE\": \"49\",\n\t\"DJ\": \"253\",\n\t\"DK\": \"45\",\n\t\"DM\": \"1-767\",\n\t\"DO\": \"1-809\",\n\t\"DZ\": \"213\",\n\t\"EC\": \"593\",\n\t\"EE\": \"372\",\n\t\"EG\": \"20\",\n\t\"EH\": \"212\",\n\t\"ER\": \"291\",\n\t\"ES\": \"34\",\n\t\"ET\": \"251\",\n\t\"FI\": \"358\",\n\t\"FJ\": \"679\",\n\t\"FK\": \"500\",\n\t\"FM\": \"691\",\n\t\"FO\": \"298\",\n\t\"FR\": \"33\",\n\t\"GA\": \"241\",\n\t\"GB\": \"44\",\n\t\"GD\": \"1-473\",\n\t\"GE\": \"995\",\n\t\"GF\": \"594\",\n\t\"GG\": \"44\",\n\t\"GH\": \"233\",\n\t\"GI\": \"350\",\n\t\"GL\": \"299\",\n\t\"GM\": \"220\",\n\t\"GN\": \"224\",\n\t\"GP\": \"590\",\n\t\"GQ\": \"240\",\n\t\"GR\": \"30\",\n\t\"GS\": \"500\",\n\t\"GT\": \"502\",\n\t\"GU\": \"1-671\",\n\t\"GW\": \"245\",\n\t\"GY\": \"592\",\n\t\"HK\": \"852\",\n\t\"HM\": \"672\",\n\t\"HN\": \"504\",\n\t\"HR\": \"385\",\n\t\"HT\": \"509\",\n\t\"HU\": \"36\",\n\t\"ID\": \"62\",\n\t\"IE\": \"353\",\n\t\"IL\": \"972\",\n\t\"IM\": \"44\",\n\t\"IN\": \"91\",\n\t\"IO\": \"246\",\n\t\"IQ\": \"964\",\n\t\"IR\": \"98\",\n\t\"IS\": \"354\",\n\t\"IT\": \"39\",\n\t\"JE\": \"44\",\n\t\"JM\": \"1-876\",\n\t\"JO\": \"962\",\n\t\"JP\": \"81\",\n\t\"KE\": \"254\",\n\t\"KG\": \"996\",\n\t\"KH\": \"855\",\n\t\"KI\": \"686\",\n\t\"KM\": \"269\",\n\t\"KN\": \"1-869\",\n\t\"KP\": \"850\",\n\t\"KR\": \"82\",\n\t\"KW\": \"965\",\n\t\"KY\": \"1-345\",\n\t\"KZ\": \"7\",\n\t\"LA\": \"856\",\n\t\"LB\": \"961\",\n\t\"LC\": \"1-758\",\n\t\"LI\": \"423\",\n\t\"LK\": \"94\",\n\t\"LR\": \"231\",\n\t\"LS\": \"266\",\n\t\"LT\": \"370\",\n\t\"LU\": \"352\",\n\t\"LV\": \"371\",\n\t\"LY\": \"218\",\n\t\"MA\": \"212\",\n\t\"MC\": \"377\",\n\t\"MD\": \"373\",\n\t\"ME\": \"382\",\n\t\"MF\": \"590\",\n\t\"MG\": \"261\",\n\t\"MH\": \"692\",\n\t\"MK\": \"389\",\n\t\"ML\": \"223\",\n\t\"MM\": \"95\",\n\t\"MN\": \"976\",\n\t\"MO\": \"853\",\n\t\"MP\": \"1-670\",\n\t\"MQ\": \"596\",\n\t\"MR\": \"222\",\n\t\"MS\": \"1-664\",\n\t\"MT\": \"356\",\n\t\"MU\": \"230\",\n\t\"MV\": \"960\",\n\t\"MW\": \"265\",\n\t\"MX\": \"52\",\n\t\"MY\": \"60\",\n\t\"MZ\": \"258\",\n\t\"NA\": \"264\",\n\t\"NC\": \"687\",\n\t\"NE\": \"227\",\n\t\"NF\": \"672\",\n\t\"NG\": \"234\",\n\t\"NI\": \"505\",\n\t\"NL\": \"31\",\n\t\"NO\": \"47\",\n\t\"NP\": \"977\",\n\t\"NR\": \"674\",\n\t\"NU\": \"683\",\n\t\"NZ\": \"64\",\n\t\"OM\": \"968\",\n\t\"PA\": \"507\",\n\t\"PE\": \"51\",\n\t\"PF\": \"689\",\n\t\"PG\": \"675\",\n\t\"PH\": \"63\",\n\t\"PK\": \"92\",\n\t\"PL\": \"48\",\n\t\"PM\": \"508\",\n\t\"PN\": \"870\",\n\t\"PR\": \"1\",\n\t\"PS\": \"970\",\n\t\"PT\": \"351\",\n\t\"PW\": \"680\",\n\t\"PY\": \"595\",\n\t\"QA\": \"974\",\n\t\"RE\": \"262\",\n\t\"RO\": \"40\",\n\t\"RS\": \"381\",\n\t\"RU\": \"7\",\n\t\"RW\": \"250\",\n\t\"SA\": \"966\",\n\t\"SB\": \"677\",\n\t\"SC\": \"248\",\n\t\"SD\": \"249\",\n\t\"SE\": \"46\",\n\t\"SG\": \"65\",\n\t\"SH\": \"290\",\n\t\"SI\": \"386\",\n\t\"SJ\": \"47\",\n\t\"SK\": \"421\",\n\t\"SL\": \"232\",\n\t\"SM\": \"378\",\n\t\"SN\": \"221\",\n\t\"SO\": \"252\",\n\t\"SR\": \"597\",\n\t\"SS\": \"211\",\n\t\"ST\": \"239\",\n\t\"SV\": \"503\",\n\t\"SX\": \"1-721\",\n\t\"SY\": \"963\",\n\t\"SZ\": \"268\",\n\t\"TC\": \"1-649\",\n\t\"TD\": \"235\",\n\t\"TF\": \"262\",\n\t\"TG\": \"228\",\n\t\"TH\": \"66\",\n\t\"TJ\": \"992\",\n\t\"TK\": \"690\",\n\t\"TL\": \"670\",\n\t\"TM\": \"993\",\n\t\"TN\": \"216\",\n\t\"TO\": \"676\",\n\t\"TR\": \"90\",\n\t\"TT\": \"1-868\",\n\t\"TV\": \"688\",\n\t\"TW\": \"886\",\n\t\"TZ\": \"255\",\n\t\"UA\": \"380\",\n\t\"UG\": \"256\",\n\t\"UM\": \"1\",\n\t\"US\": \"1\",\n\t\"UY\": \"598\",\n\t\"UZ\": \"998\",\n\t\"VA\": \"39-06\",\n\t\"VC\": \"1-784\",\n\t\"VE\": \"58\",\n\t\"VG\": \"1-284\",\n\t\"VI\": \"1-340\",\n\t\"VN\": \"84\",\n\t\"VU\": \"678\",\n\t\"WF\": \"681\",\n\t\"WS\": \"685\",\n\t\"YE\": \"967\",\n\t\"YT\": \"262\",\n\t\"ZA\": \"27\",\n\t\"ZM\": \"260\",\n\t\"ZW\": \"263\",\n}\n"
  },
  {
    "path": "pkg/data/dinosaurs.go",
    "content": "package data\n\nvar Dinosaurs = []string{\"Kangnasaurus\", \"Lophostropheus\", \"Spinophorosaurus\", \"Epachthosaurus\", \"Coelurosauria\", \"Lycorhinus\", \"Adasaurus\", \"Draconyx\", \"Ceratops\", \"Lagerpeton\", \"Qiaowanlong\", \"Rhynchosaur\", \"Ningyuansaurus\", \"Palaeolimnornis\", \"Anabisetia\", \"Talarurus\", \"Sphenodontia\", \"Tianyulong\", \"Aepisaurus\", \"Neuquenraptor\", \"Galesaurus\", \"Pachysuchus\", \"Auroraceratops\", \"Hecatasaurus\", \"Barapasaurus\", \"Asiatosaurus\", \"Daanosaurus\", \"Luoyanggia\", \"Eobrontosaurus\", \"Wellnhoferia\", \"Zuolong\", \"Tenchisaurus\", \"Centrosaurus\", \"Falcarius\", \"Ojoraptorsaurus\", \"Lufengocephalus\", \"Vulcanodon\", \"Mollusc\", \"Shunosaurus\", \"Empaterias\", \"Issasaurus\", \"Jiangxisaurus\", \"Laplatasaurus\", \"Aublysodon\", \"Embasaurus\", \"Blikanasaurus\", \"Bonapartenykus\", \"Asiamericana\", \"Arizonasaurus\", \"Cryptoraptor\", \"Morosaurus\", \"Mapusaurus\", \"Buitreraptor\", \"Gravitholus\", \"Vitakrisaurus\", \"Nurosaurus\", \"Cetiosauriscus\", \"Kukufeldia\", \"Propanoplosaurus\", \"Suchoprion\", \"Umarsaurus\", \"Likhoelesaurus\", \"Dasygnathoides\", \"Dubreuillosaurus\", \"Shenzhouraptor\", \"Atrociraptor\", \"Amurosaurus\", \"Latirhinus\", \"Albisaurus\", \"Zupaysaurus\", \"Venenosaurus\", \"Syrmosaurus\", \"Arkharavia\", \"Yueosaurus\", \"Tianchungosaurus\", \"Dyslocosaurus\", \"Sinraptor\", \"Owenodon\", \"Pelycosaur\", \"Duriavenator\", \"Haplocheirus\", \"Epidendrosaurus\", \"Nyasasaurus\", \"Tawasaurus\", \"Lisboasaurus\", \"Ahshislepelta\", \"Magnirostris\", \"Psittacosaurus\", \"Orodromeus\", \"Ostafrikasaurus\", \"Nemegtomaia\", \"Dracorex\", \"Ovoraptor\", \"Amazonsaurus\", \"Leyesaurus\", \"Dollodon\", \"Cryptosaurus\", \"Coahuilaceratops\", \"Variraptor\", \"Panamericansaurus\", \"Nodocephalosaurus\", \"Nasutoceratops\", \"Prosaurolophus\", \"Jingshanosaurus\", \"Teleocrater\", \"Tribelesodon\", \"Mochlodon\", \"Eohadrosaurus\", \"Comanchesaurus\", \"Limnornis\", \"Gigantspinosaurus\", \"Oxalaia\", \"Wuerhosaurus\", \"Mtapaiasaurus\", \"Longisquama\", \"Velocisaurus\", \"Aorun\", \"Sinopliosaurus\", \"Gigantosaurus\", \"Sphenospondylus\", \"Dinotyrannus\", \"Rhabdodon\", \"Kritosaurus\", \"Lamplughsaura\", \"Notohypsilophodon\", \"Tsagantegia\", \"Brontoraptor\", \"Argyrosaurus\", \"Lambeosaurus\", \"Heterosaurus\", \"Tazoudasaurus\", \"Valdoraptor\", \"Microhadrosaurus\", \"Pycnonemosaurus\", \"Manidens\", \"Coelophysis\", \"Hulsanpes\", \"Losillasaurus\", \"Polacanthoides\", \"Lanzhousaurus\", \"Walgettosuchus\", \"Sauroniops\", \"Magulodon\", \"Pneumatoraptor\", \"Altispinax\", \"Alnashetri\", \"Hoplitosaurus\", \"Rahiolisaurus\", \"Luanpingosaurus\", \"Abrosaurus\", \"Palaeosaurus\", \"Iguanoides\", \"Abydosaurus\", \"Riodevasaurus\", \"Stormbergia\", \"Bihariosaurus\", \"Yuanmousaurus\", \"Sphenosuchus\", \"Dashanpusaurus\", \"Crocodilia\", \"Enigmosaurus\", \"Montanoceratops\", \"Frenguellisaurus\", \"Segnosaurus\", \"Kryptops\", \"Labocania\", \"Sinocalliopteryx\", \"Dromiceiomimus\", \"Isisaurus\", \"Archaeornithoides\", \"Deinonychus\", \"Allosaurus\", \"Stephanosaurus\", \"Sinornithoides\", \"Incisivosaurus\", \"Ornitholestes\", \"Ankylosaurus\", \"Plateosaurus\", \"Shidaisaurus\", \"Platyceratops\", \"Agnosphitys\", \"Changdusaurus\", \"Nothosaur\", \"Orthogoniosaurus\", \"Titanoceratops\", \"Dysganus\", \"Lamaceratops\", \"Helioceratops\", \"Nanyangosaurus\", \"Khaan\", \"Cryptodraco\", \"Chasmosaurus\", \"Rileyasuchus\", \"Aeolosaurus\", \"Yizhousaurus\", \"Echinodon\", \"Omnivoropteryx\", \"Lengosaurus\", \"Megadactylus\", \"Mamenchisaurus\", \"Notoceratops\", \"Pachysaurus\", \"Tianzhenosaurus\", \"Zhuchengceratops\", \"Tyreophorus\", \"Nedcolbertia\", \"Shixinggia\", \"Jeholosaurus\", \"Ornithosuchus\", \"Veterupristisaurus\", \"Rayososaurus\", \"Velafrons\", \"Lapparentosaurus\", \"Seismosaurus\", \"Tsuchikurasaurus\", \"Styracosaurus\", \"Dilophosaurus\", \"Gasparinisaura\", \"Xiaotingia\", \"Dromaeosaurus\", \"Scansoriopteryx\", \"Eurolimnornis\", \"Proterosuchid\", \"Nipponosaurus\", \"Brachiosaurus\", \"Vitaridrinda\", \"Mantellodon\", \"Sphaerotholus\", \"Shuosaurus\", \"Koutalisaurus\", \"Cardiodon\", \"Yixianosaurus\", \"Jurassosaurus\", \"Jiutaisaurus\", \"Gryphognathus\", \"Archaeornithomimus\", \"Griphornis\", \"Szechuanosaurus\", \"Pneumatoarthrus\", \"Basutodon\", \"Aletopelta\", \"Tendaguria\", \"Riojasaurus\", \"Creosaurus\", \"Harpymimus\", \"Huaxiagnathus\", \"Carnotaurus\", \"Beipiaosaurus\", \"Teratophoneus\", \"Cedarosaurus\", \"Omosaurus\", \"Wyleyia\", \"Aachenosaurus\", \"Atlantosaurus\", \"Bilbeyhallorum\", \"Balochisaurus\", \"Ouranosaurus\", \"Fukuititan\", \"Sarcolestes\", \"Alocodon\", \"Amphisaurus\", \"Lametasaurus\", \"Raptorex\", \"Sinosaurus\", \"Doratodon\", \"Ankistrodon\", \"Chuanjiesaurus\", \"Parasaurolophus\", \"Albertonykus\", \"Efraasia\", \"Alaskacephale\", \"Torilion\", \"Rapator\", \"Sauroplites\", \"Thecocoelurus\", \"Lirainosaurus\", \"Xixiasaurus\", \"Conchoraptor\", \"Paralititan\", \"Arcusaurus\", \"Becklespinax\", \"Thecodontosaurus\", \"Taveirosaurus\", \"Daemonosaurus\", \"Suuwassea\", \"Albertosaurus\", \"Nouerosaurus\", \"Marshosaurus\", \"Xuanhuasaurus\", \"Algoasaurus\", \"Capitalsaurus\", \"Xenoposeidon\", \"Cryolophosaurus\", \"Gobipteryx\", \"Stereosaurus\", \"Nemegtia\", \"Proyandusaurus\", \"Thyreophora\", \"Xiaosaurus\", \"Tatankaceratops\", \"Hanwulosaurus\", \"Gryphoceratops\", \"Linheraptor\", \"Ornithomimoides\", \"Edmontonia\", \"Aerosteon\", \"Ninghsiasaurus\", \"Prenoceratops\", \"Vagaceratops\", \"Sinucerasaurus\", \"Hongshanosaurus\", \"Hexinlusaurus\", \"Indosuchus\", \"Moshisaurus\", \"Alashansaurus\", \"Berberosaurus\", \"Elaltitan\", \"Marisaurus\", \"Rhoetosaurus\", \"Tatankacephalus\", \"Bienosaurus\", \"Dracopelta\", \"Chiayusaurus\", \"Pseudosuchia\", \"Sarcosaurus\", \"Shuvuuia\", \"Unaysaurus\", \"Amtosaurus\", \"Nqwebasaurus\", \"Claorhynchus\", \"Prolacertiform\", \"Honghesaurus\", \"Ugrosaurus\", \"Aegyptosaurus\", \"Gallimimus\", \"Clasmodosaurus\", \"Hypacrosaurus\", \"Caenagnathus\", \"Velocipes\", \"Lessemsaurus\", \"Agrosaurus\", \"Paronychodon\", \"Maleevosaurus\", \"Leipsanosaurus\", \"Clevelanotyrannus\", \"Dynamosaurus\", \"Megacervixosaurus\", \"Protohadros\", \"Polyonax\", \"Daxiatitan\", \"Spondylosoma\", \"Ichthyovenator\", \"Demandasaurus\", \"Dimodosaurus\", \"Torvosaurus\", \"Gwyneddosaurus\", \"Cystosaurus\", \"Irritator\", \"Zanclodon\", \"Rugops\", \"Ignavusaurus\", \"Chinshakiangosaurus\", \"Zhejiangosaurus\", \"Pachyrhinosaurus\", \"Stenotholus\", \"Iuticosaurus\", \"Tyrannotitan\", \"Xixianykus\", \"Palaeopteryx\", \"Vitakridrinda\", \"Planicoxa\", \"Jianchangosaurus\", \"Sinovenator\", \"Ohmdenosaurus\", \"Protecovasaurus\", \"Eoceratops\", \"Laevisuchus\", \"Cumnoria\", \"Ratchasimasaurus\", \"Elaphrosaurus\", \"Dracovenator\", \"Abelisaurus\", \"Sangonghesaurus\", \"Austrocheirus\", \"Calamosaurus\", \"Vectensia\", \"Elosaurus\", \"Termatosaurus\", \"Pleuropeltus\", \"Chubutisaurus\", \"Macrophalangia\", \"Futalongkosaurus\", \"Acristavus\", \"Wintonotitan\", \"Diclonius\", \"Nanosaurus\", \"Tonganosaurus\", \"Tarascosaurus\", \"Amphicoelicaudia\", \"Achillesaurus\", \"Delapparentia\", \"Argentinosaurus\", \"Sulaimansaurus\", \"Koparion\", \"Brachytrachelopan\", \"Bakesaurus\", \"Rahona\", \"Oryctodromeus\", \"Campylodon\", \"Stygivenator\", \"Wangonisaurus\", \"Genyodectes\", \"Acrocanthosaurus\", \"Danubiosaurus\", \"Deltadromeus\", \"Rileya\", \"Borealosaurus\", \"Rioarribasaurus\", \"Gondwanatitan\", \"Lophorhothon\", \"Talenkauen\", \"Diracodon\", \"Nanshiungosaurus\", \"Bradycneme\", \"Ferganocephale\", \"Cheneosaurus\", \"Wulagasaurus\", \"Tanystrosuchus\", \"Comahuesaurus\", \"Actiosaurus\", \"Jiangjunmiaosaurus\", \"Xinjiangovenator\", \"Gadolosaurus\", \"Clarencea\", \"Avemetatarsalia\", \"Dakotadon\", \"Diapsid\", \"Albinykus\", \"Pectinodon\", \"Protorosaurus\", \"Ginnareemimus\", \"Doryphorosaurus\", \"Dalianraptor\", \"Megapnosaurus\", \"Scelidosaurus\", \"Metriorhynchid\", \"Piatnitzkysaurus\", \"Haplocanthosaurus\", \"Phytosaur\", \"Manospondylus\", \"Gansutitan\", \"Neovenator\", \"Brasileosaurus\", \"Judiceratops\", \"Khetranisaurus\", \"Fish\", \"Proceratosaurus\", \"Zatomus\", \"Ceratosaurus\", \"Unescoceratops\", \"Telmatosaurus\", \"Segisaurus\", \"Pachyspondylus\", \"Caseosaurus\", \"Ultrasauros\", \"Dongbeititan\", \"Galvesaurus\", \"Crocodylomorph\", \"Ephoenosaurus\", \"Fossil\", \"Crosbysaurus\", \"Coelosaurus\", \"Unenlagia\", \"Strenusaurus\", \"Concavenator\", \"Fukuiraptor\", \"Camarasaurus\", \"Iliosuchus\", \"Huayangosaurus\", \"Kileskus\", \"Clepsysaurus\", \"Richardoestesia\", \"Sphenosaurus\", \"Scutellosaurus\", \"Garudimimus\", \"Hexing\", \"Nanningosaurus\", \"Sonorasaurus\", \"Pradhania\", \"Orosaurus\", \"Andesaurus\", \"Genusaurus\", \"Huxleysaurus\", \"Elopteryx\", \"Alectrosaurus\", \"Tecovasaurus\", \"Parksosaurus\", \"Paranthodon\", \"Airakoraptor\", \"Jobaria\", \"Ichabodcraniosaurus\", \"Muyelensaurus\", \"Sacisaurus\", \"Deinodon\", \"Patricosaurus\", \"Maleevus\", \"Tylocephale\", \"Sugiyamasaurus\", \"Nodosaurus\", \"Aliwalia\", \"Kerberosaurus\", \"Kazaklambia\", \"Eolambia\", \"Dongyangosaurus\", \"Citipati\", \"Euskelosaurus\", \"Trigonosaurus\", \"Epidexipteryx\", \"Dolichosuchus\", \"Walkeria\", \"Labrosaurus\", \"Condorraptor\", \"Tichosteus\", \"Uberabatitan\", \"Magnosaurus\", \"Janenschia\", \"Anasazisaurus\", \"Macrogryphosaurus\", \"Erliansaurus\", \"Ornithotarsus\", \"Bayosaurus\", \"Santanaraptor\", \"Zhuchengtyrannus\", \"Lukousaurus\", \"Sauroposeidon\", \"Ampelosaurus\", \"Pampadromaeus\", \"Erectopus\", \"Glyptodontopelta\", \"Drinker\", \"Leaellynasaura\", \"Magyarosaurus\", \"Postosuchus\", \"Szechuanoraptor\", \"Yubasaurus\", \"Brachyrophus\", \"Cionodon\", \"Sellacoxa\", \"Elachistosuchus\", \"Shuvosaurus\", \"Sauraechmodon\", \"Microdontosaurus\", \"Carcharodontosaurus\", \"Brachylophosaurus\", \"Theropoda\", \"Tapinocephalus\", \"Changchunsaurus\", \"Cladeiodon\", \"Pareiasaurus\", \"Heishansaurus\", \"Aristosuchus\", \"Protiguanodon\", \"Brohisaurus\", \"Eupodosaurus\", \"Datousaurus\", \"Giraffatitan\", \"Jaklapallisaurus\", \"Tugulusaurus\", \"Compsognathus\", \"Ilokelesia\", \"Revueltoraptor\", \"Tuojiangosaurus\", \"Huaxiasaurus\", \"Palaeocursornis\", \"Onychosaurus\", \"Ceratonykus\", \"Amargatitanis\", \"Albalophosaurus\", \"Byronosaurus\", \"Cryptovolans\", \"Shenzhousaurus\", \"Rapetosaurus\", \"Altirhinus\", \"Sanjuansaurus\", \"Dysalotosaurus\", \"Archaeopteryx\", \"Liliensternus\", \"Beelemodon\", \"Xuanhuaceratops\", \"Protrachodon\", \"Caenagnathasia\", \"Willinakaqe\", \"Atacamatitan\", \"Lourinhanosaurus\", \"Yaverlandia\", \"Ligomasaurus\", \"Suchomimus\", \"Brasilotitan\", \"Jenghizkhan\", \"Aggiosaurus\", \"Elrhazosaurus\", \"Yingshanosaurus\", \"Australovenator\", \"Ichthyornis\", \"Valdosaurus\", \"Yuanmouraptor\", \"Prolacertiformes\", \"Tarchia\", \"Hesperosaurus\", \"Azendohsaurus\", \"Eucentrosaurus\", \"Scipionyx\", \"Petrobrasaurus\", \"Hudiesaurus\", \"Sinornithosaurus\", \"Shuangmiaosaurus\", \"Tianchisaurus\", \"Araucanoraptor\", \"Poposaurus\", \"Pararhabdodon\", \"Osmakasaurus\", \"Siamotyrannus\", \"Galveosaurus\", \"Yangchuanosaurus\", \"Microcephale\", \"Mirischia\", \"Probactrosaurus\", \"Yunxiansaurus\", \"Enantiornithine\", \"Cedrorestes\", \"Chaoyangsaurus\", \"Loricatosaurus\", \"Stygimoloch\", \"Venaticosuchus\", \"Gorgosaurus\", \"Anchiornis\", \"Ischisaurus\", \"Bactrosaurus\", \"Quilmesaurus\", \"Fukuisaurus\", \"Stegosaurus\", \"Griphosaurus\", \"Graciliceratops\", \"Oligosaurus\", \"Baotianmansaurus\", \"Eocursor\", \"Turtle\", \"Macelognathus\", \"Arctosaurus\", \"Streptospondylus\", \"Texasetes\", \"Dianchungosaurus\", \"Birds\", \"Nomingia\", \"Sinornithomimus\", \"Hierosaurus\", \"Abdallahsaurus\", \"Jaxartosaurus\", \"Sanchusaurus\", \"Tarbosaurus\", \"Sinocoelurus\", \"Timimus\", \"Herrerasaurus\", \"Giganotosaurus\", \"Tsaagan\", \"Anthracothere\", \"Yezosaurus\", \"Chihuahuasaurus\", \"Cathartesaura\", \"Domeykosaurus\", \"Loncosaurus\", \"Archaeoceratops\", \"Udanoceratops\", \"Gojirasaurus\", \"Dongyangopelta\", \"Duriatitan\", \"Chondrosteus\", \"Arkanosaurus\", \"Lusotitan\", \"Diceratus\", \"Nuoersaurus\", \"Wadhurstia\", \"Sauropelta\", \"Ultrasaurus\", \"Indosaurus\", \"Kotasaurus\", \"Urbacodon\", \"Zhongyuansaurus\", \"Tanystropheus\", \"Mifunesaurus\", \"Pegomastax\", \"Gobititan\", \"Lusitanosaurus\", \"Caulodon\", \"Baryonyx\", \"Tataouinea\", \"Longosaurus\", \"Pareiasaur\", \"Leshansaurus\", \"Machairasaurus\", \"Colossosaurus\", \"Arstanosaurus\", \"Wakinosaurus\", \"Lanasaurus\", \"Dryosaurus\", \"Sterrholophus\", \"Dachungosaurus\", \"Chialingosaurus\", \"Jiangjunosaurus\", \"Klamelisaurus\", \"Rauisuchia\", \"Caudipteryx\", \"Jinfengopteryx\", \"Leptoceratops\", \"Sinotyrannus\", \"Poekilopleuron\", \"Gobisaurus\", \"Angaturama\", \"Pterosaur\", \"Aetonyx\", \"Angolatitan\", \"Tanius\", \"Therizinosaurus\", \"Tastavinsaurus\", \"Lancangosaurus\", \"Dinheirosaurus\", \"Brachypodosaurus\", \"Gobiceratops\", \"Fruitadens\", \"Monkonosaurus\", \"Spinostropheus\", \"Cristatusaurus\", \"Bolong\", \"Rebbachisaurus\", \"Monolophosaurus\", \"Alioramus\", \"Hypsirophus\", \"Olorotitan\", \"Euoplocephalus\", \"Juravenator\", \"Euhelopus\", \"Epanterias\", \"Lancanjiangosaurus\", \"Xianshanosaurus\", \"Ekrixinatosaurus\", \"Achillobator\", \"Hesperonychus\", \"Pachysauriscus\", \"Ruyangosaurus\", \"Gongbusaurus\", \"Teratosaurus\", \"Ruehleia\", \"Yaleosaurus\", \"Canardia\", \"Brachyceratops\", \"Pantydraco\", \"Afrovenator\", \"Mendozasaurus\", \"Pedopenna\", \"Blasisaurus\", \"Astrodon\", \"Mandschurosaurus\", \"Drusilasaura\", \"Libycosaurus\", \"Eucamerotus\", \"Tonouchisaurus\", \"Didanodon\", \"Proplanicoxa\", \"Kentrurosaurus\", \"Trinisaura\", \"Fusuisaurus\", \"Kentrosaurus\", \"Eocarcharia\", \"Albertaceratops\", \"Rutellum\", \"Saltasaurus\", \"Majungatholus\", \"Mussaurus\", \"Zigongosaurus\", \"Euacanthus\", \"Craspedodon\", \"Ingenia\", \"Priodontognathus\", \"Rubeosaurus\", \"Gyposaurus\", \"Utahraptor\", \"Pukyongosaurus\", \"Coelurosaur\", \"Silvisaurus\", \"Troodon\", \"Jixiangornis\", \"Pawpawsaurus\", \"Oohkotokia\", \"Hadrosauravus\", \"Shaochilong\", \"Ponerosteus\", \"Ischyrosaurus\", \"Hadrosaurus\", \"Gryposaurus\", \"Spinops\", \"Peloroplites\", \"Daspletosaurus\", \"Dravidosaurus\", \"Hagryphus\", \"Sphenosuchia\", \"Ligabueino\", \"Mymoorapelta\", \"Tatisaurus\", \"Trimucrodon\", \"Cathetosaurus\", \"Teinurosaurus\", \"Antetonitrus\", \"Rajasaurus\", \"Fabrosaurus\", \"Angloposeidon\", \"Levnesovia\", \"Mongolosaurus\", \"Asiaceratops\", \"Avipes\", \"Turiasaurus\", \"Eucnemesaurus\", \"Otogosaurus\", \"Martharaptor\", \"Tsintaosaurus\", \"Hypsilophodon\", \"Gigantoscelus\", \"Palaeosauriscus\", \"Hironosaurus\", \"Paludititan\", \"Anatosaurus\", \"Kaatedocus\", \"Linhevenator\", \"Pellegrinisaurus\", \"Sanpasaurus\", \"Lapampasaurus\", \"Inosaurus\", \"Eomamenchisaurus\", \"Liassaurus\", \"Jinzhousaurus\", \"Equijubus\", \"Dryptosaurus\", \"Nopcsaspondylus\", \"Changtusaurus\", \"Tapuiasaurus\", \"Diabloceratops\", \"Dakosaurus\", \"Chassternbergia\", \"Limaysaurus\", \"Huaxiaosaurus\", \"Minotaurasaurus\", \"Uteodon\", \"Micropachycephalosaurus\", \"Avisaurus\", \"Siamodon\", \"Ornithomerus\", \"Eodromaeus\", \"Turanoceratops\", \"Nambalia\", \"Cruxicheiros\", \"Riojasuchus\", \"Stokesosaurus\", \"Amygdalodon\", \"Linhenykus\", \"Heterodontosaurus\", \"Dromicosaurus\", \"Bahariasaurus\", \"Xiongguanlong\", \"Jeyawati\", \"Polyodontosaurus\", \"Morinosaurus\", \"Campylodoniscus\", \"Aralosaurus\", \"Pentaceratops\", \"Squalodon\", \"Saurornitholestes\", \"Yandusaurus\", \"Bruhathkayosaurus\", \"Kinnareemimus\", \"Tornieria\", \"Scaphonyx\", \"Barosaurus\", \"Titanosaurus\", \"Volkheimeria\", \"Brontomerus\", \"Megalosaurus\", \"Rhopalodon\", \"Huanghetitan\", \"Ngexisaurus\", \"Jiangshanosaurus\", \"Archosaur\", \"Sciurumimus\", \"Histriasaurus\", \"Spinosaurus\", \"Eoraptor\", \"Phaedrolosaurus\", \"Betasuchus\", \"Belodon\", \"Bagaraatan\", \"Protognathus\", \"Marmarospondylus\", \"Dinosaur\", \"Darwinsaurus\", \"Apatodon\", \"Eotyrannus\", \"Struthiomimus\", \"Pelecanimimus\", \"Gideonmantellia\", \"Appalachiosaurus\", \"Edmontosaurus\", \"Acracanthus\", \"Machimosaurus\", \"Razanandrongobe\", \"Uintasaurus\", \"Magnapaulia\", \"Moabosaurus\", \"Ojoceratops\", \"Yaxartosaurus\", \"Macroscelosaurus\", \"Aniksosaurus\", \"Guanlong\", \"Futabasaurus\", \"Proceratops\", \"Xuwulong\", \"Ricardoestesia\", \"Symphyrophus\", \"Pleurocoelus\", \"Damalasaurus\", \"Naashoibitosaurus\", \"Panphagia\", \"Graciliraptor\", \"Ornithoides\", \"Futalognkosaurus\", \"Pachycephalosaurus\", \"Plesiosaur\", \"Astrophocaudia\", \"Gilmoreosaurus\", \"Diamantinasaurus\", \"Eucercosaurus\", \"Gavinosaurus\", \"Suchosaurus\", \"Eugongbusaurus\", \"Camelotia\", \"Shanxia\", \"Antarctopelta\", \"Traukutitan\", \"Saurornithoides\", \"Hippodraco\", \"Nteregosaurus\", \"Sauropodus\", \"Coelurosauravus\", \"Stereocephalus\", \"Adeopapposaurus\", \"Ctenosauriscid\", \"Paraiguanodon\", \"Eosinopteryx\", \"Archaeornis\", \"Bambiraptor\", \"Isanosaurus\", \"Stegosaurides\", \"Avaceratops\", \"Gannansaurus\", \"Triceratops\", \"Paluxysaurus\", \"Denversaurus\", \"Bathygnathus\", \"Katsuyamasaurus\", \"Barsboldia\", \"Mojoceratops\", \"Eucoelophysis\", \"Microraptor\", \"Calamospondylus\", \"Fusinasus\", \"Agathaumas\", \"Protoceratops\", \"Eustreptospondylus\", \"Macrurosaurus\", \"Atlascopcosaurus\", \"Claosaurus\", \"Avicephala\", \"Tochisaurus\", \"Protognathosaurus\", \"Kakuru\", \"Neuquensaurus\", \"Chilantaisaurus\", \"Chindesaurus\", \"Parvicursor\", \"Phuwiangosaurus\", \"Saltriosaurus\", \"Edmarka\", \"Chingkankousaurus\", \"Bicentenaria\", \"Kemkemia\", \"Microceratus\", \"Chaoyangosaurus\", \"Atlasaurus\", \"Eotriceratops\", \"Neimongosaurus\", \"Unicerosaurus\", \"Qinlingosaurus\", \"Laosaurus\", \"Craterosaurus\", \"Dacentrurus\", \"Geminiraptor\", \"Erlikosaurus\", \"Bonitasaura\", \"Arrhinoceratops\", \"Triassolestes\", \"Hisanohamasaurus\", \"Oplosaurus\", \"Supersaurus\", \"Achelousaurus\", \"Rinconsaurus\", \"Serendipaceratops\", \"Eoabelisaurus\", \"Dystrophaeus\", \"Thotobolosaurus\", \"Blancocerosaurus\", \"Cetiosaurus\", \"Roccosaurus\", \"Chondrosteosaurus\", \"Fulengia\", \"Mohammadisaurus\", \"Halticosaurus\", \"Lancangjiangosaurus\", \"Teyuwasu\", \"Breviceratops\", \"Rhodanosaurus\", \"Metriacanthosaurus\", \"Overosaurus\", \"Newtonsaurus\", \"Gracilisuchus\", \"Pseudolagosuchus\", \"Sellosaurus\", \"Ajkaceratops\", \"Lufengosaurus\", \"Yamaceratops\", \"Bagaceratops\", \"Apatosaurus\", \"Khateranisaurus\", \"Batyrosaurus\", \"Cinizasaurus\", \"Tanycolagreus\", \"Bainoceratops\", \"Silesaurid\", \"Byranjaffia\", \"Shamosaurus\", \"Austrosaurus\", \"Amtocephale\", \"Cylindricodon\", \"Huabeisaurus\", \"Regnosaurus\", \"Callovosaurus\", \"Heptasteornis\", \"Gryponyx\", \"Tylosteus\", \"Gargoyleosaurus\", \"Kundurosaurus\", \"Mononykus\", \"Secernosaurus\", \"Puertasaurus\", \"Bellusaurus\", \"Archosauriform\", \"Qiupalong\", \"Alamosaurus\", \"Dystylosaurus\", \"Tethyshadros\", \"Selimanosaurus\", \"Albertadromeus\", \"Karongasaurus\", \"Kaijiangosaurus\", \"Microvenator\", \"Amphicoelias\", \"Eshanosaurus\", \"Salimosaurus\", \"Avimimus\", \"Elvisaurus\", \"Bonatitan\", \"Procheneosaurus\", \"Tetragonosaurus\", \"Mammal\", \"Oshanosaurus\", \"Jurapteryx\", \"Paleosaurus\", \"Dinosauromorph\", \"Plateosauravus\", \"Hungarosaurus\", \"Chromogisaurus\", \"Anoplosaurus\", \"Amargasaurus\", \"Merosaurus\", \"Alwalkeria\", \"Macrodontophion\", \"Shanshanosaurus\", \"Gongxianosaurus\", \"Vectisaurus\", \"Kitadanisaurus\", \"Agustinia\", \"Sulaimanisaurus\", \"Thescelosaurus\", \"Zephyrosaurus\", \"Arenysaurus\", \"Patagosaurus\", \"Laornis\", \"Protoavis\", \"Tenantosaurus\", \"Yinlong\", \"Bravoceratops\", \"Saurophaganax\", \"Coeluroides\", \"Seitaad\", \"Trialestes\", \"Glishades\", \"Cedarpelta\", \"Rinchenia\", \"Lesothosaurus\", \"Dromaeosaur\", \"Nuoerosaurus\", \"Hallopus\", \"Yanornis\", \"Tomodon\", \"Juratyrant\", \"Shanyangosaurus\", \"Deuterosaurus\", \"Coelurus\", \"Zizhongosaurus\", \"Hypselospinus\", \"Austroraptor\", \"Brachytaenius\", \"Orcomimus\", \"Acrotholus\", \"Chirostenotes\", \"Emausaurus\", \"Nigersaurus\", \"Animantarx\", \"Luanchuanraptor\", \"Zuniceratops\", \"Wannanosaurus\", \"Abrictosaurus\", \"Heyuannia\", \"Synapsid\", \"Struthiosaurus\", \"Yunnanosaurus\", \"Noasaurus\", \"Tyrannosaurid\", \"Yibinosaurus\", \"Thespesius\", \"Priconodon\", \"Marasuchus\", \"Anchisaurus\", \"Iguanacolossus\", \"Patagonykus\", \"Haplocanthus\", \"Corythosaurus\", \"Limusaurus\", \"Coloradisaurus\", \"Similicaudipteryx\", \"Leptospondylus\", \"Aviatyrannis\", \"Hortalotarsus\", \"Tienshanosaurus\", \"Pamparaptor\", \"Peishansaurus\", \"Succinodon\", \"Dinosaurus\", \"Rachitrema\", \"Dachongosaurus\", \"Therapsida\", \"Saurolophus\", \"Pekinosaurus\", \"Skorpiovenator\", \"Microsaurops\", \"Ammosaurus\", \"Ichthyosaur\", \"Antarctosaurus\", \"Liaoningosaurus\", \"Nothronychus\", \"Spinosuchus\", \"Iguanosaurus\", \"Anchiceratops\", \"Orkoraptor\", \"Microcoelus\", \"Xuanhanosaurus\", \"Geranosaurus\", \"Goyocephale\", \"Ankylosauria\", \"Dahalokely\", \"Daptosaurus\", \"Loricosaurus\", \"Australodocus\", \"Pterospondylus\", \"Gigantoraptor\", \"Hylaeosaurus\", \"Caudocoelus\", \"Opisthocoelicaudia\", \"Rhadinosaurus\", \"Ligabuesaurus\", \"Aragosaurus\", \"Rocasaurus\", \"Parrosaurus\", \"Sahaliyania\", \"Agilisaurus\", \"Orthomerus\", \"Penelopognathus\", \"Liaoceratops\", \"Dyoplosaurus\", \"Stenonychosaurus\", \"Walkersaurus\", \"Narambuenatitan\", \"Pitekunsaurus\", \"Camarillasaurus\", \"Procolophonid\", \"Epichirostenotes\", \"Beishanlong\", \"Gasosaurus\", \"Coronosaurus\", \"Zapalasaurus\", \"Sauraechinodon\", \"Glacialisaurus\", \"Therapsid\", \"Gravisaurus\", \"Lewisuchus\", \"Jainosaurus\", \"Centemodon\", \"Arkansaurus\", \"Einiosaurus\", \"Palaeoscincus\", \"Cerasinops\", \"Microceratops\", \"Pteropelyx\", \"Sigilmassasaurus\", \"Staurikosaurus\", \"Pyroraptor\", \"Ornithodesmus\", \"Asylosaurus\", \"Anodontosaurus\", \"Siluosaurus\", \"Carnosauria\", \"Qantassaurus\", \"Ornithomimus\", \"Dinodocus\", \"Chuxiongosaurus\", \"Anserimimus\", \"Camptonotus\", \"Lagosuchus\", \"Anatotitan\", \"Dryptosauroides\", \"Silesaurus\", \"Pachysaurops\", \"Saichania\", \"Procerosaurus\", \"Lucianosaurus\", \"Koreasaurus\", \"Lurdusaurus\", \"Piveteausaurus\", \"Jeholornis\", \"Angulomastacator\", \"Hoplosaurus\", \"Saltopus\", \"Shanag\", \"Homalocephale\", \"Torosaurus\", \"Fenestrosaurus\", \"Jubbulpuria\", \"Mtotosaurus\", \"Nemegtosaurus\", \"Maiasaura\", \"Yutyrannus\", \"Ozraptor\", \"Lariosaurus\", \"Bugenasaura\", \"Ornatotholus\", \"Aardonyx\", \"Herbstosaurus\", \"Tianyuraptor\", \"Diplodocus\", \"Kosmoceratops\", \"Muttaburrasaurus\", \"Kagasaurus\", \"Atsinganosaurus\", \"Massospondylus\", \"Utahceratops\", \"Nanotyrannus\", \"Qingxiusaurus\", \"Avalonianus\", \"Erketu\", \"Fulgurotherium\", \"Kayentavenator\", \"Protarchaeopteryx\", \"Chungkingosaurus\", \"Krzyzanowskisaurus\", \"Yimenosaurus\", \"Aurornis\", \"Ganzhousaurus\", \"Pinacosaurus\", \"Archosauromorph\", \"Niobrarasaurus\", \"Melanorosaurus\", \"Baurutitan\", \"Elmisaurus\", \"Euronychodon\", \"Tehuelchesaurus\", \"Sinusonasus\", \"Omeisaurus\", \"Agujaceratops\", \"Aucasaurus\", \"Wulatelong\", \"Stegopelta\", \"Europasaurus\", \"Alxasaurus\", \"Stegosauroides\", \"Tangvayosaurus\", \"Pliosaur\", \"Unquillosaurus\", \"Xixiposaurus\", \"Ornithopsis\", \"Crataeomus\", \"Madsenius\", \"Diplotomodon\", \"Kulceratops\", \"Adamantisaurus\", \"Nyororosaurus\", \"Monoclonius\", \"Kuszholia\", \"Jintasaurus\", \"Camptosaurus\", \"Masiakasaurus\", \"Parhabdodon\", \"Prodeinodon\", \"Saurophagus\", \"Alvarezsaurus\", \"Mantellisaurus\", \"Aristosaurus\", \"Suzhousaurus\", \"Limnosaurus\", \"Dromaeosauroides\", \"Augustia\", \"Spinosaurid\", \"Othnielia\", \"Thecospondylus\", \"Cetacea\", \"Medusaceratops\", \"Zalmoxes\", \"Koreaceratops\", \"Syngonosaurus\", \"Dicraeosaurus\", \"Xenoceratops\", \"Scleromochlus\", \"Deinocheirus\", \"Chuandongocoelurus\", \"Itemirus\", \"Phyllodon\", \"Megaraptor\", \"Philovenator\", \"Ferganasaurus\", \"Pelorosaurus\", \"Nebulasaurus\", \"Barilium\", \"Nedoceratops\", \"Acanthopholis\", \"Nuthetes\", \"Panoplosaurus\", \"Quaesitosaurus\", \"Crocodile\", \"Archaeoraptor\", \"Charonosaurus\", \"Eureodon\", \"Hanssuesia\", \"Guaibasaurus\", \"Camposaurus\", \"Hylosaurus\", \"Zapsalis\", \"Bistahieversor\", \"Erlicosaurus\", \"Procompsognathus\", \"Hypselosaurus\", \"Prenocephale\", \"Malarguesaurus\", \"Tenontosaurus\", \"Kittysaurus\", \"Iguanodon\", \"Palaeoctonus\", \"Trachodon\", \"Wyomingraptor\", \"Huehuecanauhtlus\", \"Theiophytalia\", \"Nectosaurus\", \"Scolosaurus\", \"Pisanosaurus\", \"Kunmingosaurus\", \"Liubangosaurus\", \"Malawisaurus\", \"Pakisaurus\", \"Carnosaur\", \"Leonerasaurus\", \"Oviraptor\", \"Texacephale\", \"Shantungosaurus\", \"Zhuchengosaurus\", \"Gripposaurus\", \"Polacanthus\", \"Xenotarsosaurus\", \"Dinosauriform\", \"Hypsibema\", \"Podokesaurus\", \"Sonidosaurus\", \"Colepiocephale\", \"Kelmayisaurus\", \"Crichtonsaurus\", \"Stegoceras\", \"Borogovia\", \"Lourinhasaurus\", \"Picrodon\", \"Mononychus\", \"Bothriospondylus\", \"Siamosaurus\", \"Technosaurus\", \"Theropod\", \"Neosodon\", \"Velociraptor\", \"Eolosaurus\", \"Archaeovolans\", \"Chebsaurus\", \"Compsosuchus\", \"Othnielosaurus\", \"Banji\", \"Proiguanodon\", \"Rahonavis\", \"Majungasaurus\", \"Nanotyrannosaurus\", \"Bissektipelta\", \"Revueltosaurus\", \"Lexovisaurus\", \"Antrodemus\", \"Hikanodon\", \"Tyrannosaurus\", \"Barrosasaurus\", \"Sinoceratops\", \"Megadontosaurus\", \"Sinosauropteryx\", \"Heilongjiangosaurus\", \"Maxakalisaurus\", \"Jensenosaurus\", \"Dandakosaurus\", \"Therosaurus\", \"Sarahsaurus\", \"Hypselorhachis\", \"Archaeodontosaurus\", \"Gresslyosaurus\", \"Stenopelix\"}\n"
  },
  {
    "path": "pkg/data/dogs.go",
    "content": "package data\n\nvar Dogs = []string{\"Affenpinscher\", \"Afghan Hound\", \"Aidi\", \"Airedale Terrier\", \"Akbash Dog\", \"Akita\", \"Alano Español\", \"Alaskan Klee Kai\", \"Alaskan Malamute\", \"Alpine Dachsbracke\", \"Alpine Spaniel\", \"American Bulldog\", \"American Cocker Spaniel\", \"American Eskimo Dog\", \"American Foxhound\", \"American Hairless Terrier\", \"American Pit Bull Terrier\", \"American Staffordshire Terrier\", \"American Water Spaniel\", \"Anglo-Français de Petite Vénerie\", \"Appenzeller Sennenhund\", \"Ariege Pointer\", \"Ariegeois\", \"Armant\", \"Armenian Gampr dog\", \"Artois Hound\", \"Australian Cattle Dog\", \"Australian Kelpie\", \"Australian Shepherd\", \"Australian Silky Terrier\", \"Australian Stumpy Tail Cattle Dog\", \"Australian Terrier\", \"Azawakh\", \"Bakharwal Dog\", \"Barbet\", \"Basenji\", \"Basque Shepherd Dog\", \"Basset Artésien Normand\", \"Basset Bleu de Gascogne\", \"Basset Fauve de Bretagne\", \"Basset Hound\", \"Bavarian Mountain Hound\", \"Beagle\", \"Beagle-Harrier\", \"Bearded Collie\", \"Beauceron\", \"Bedlington Terrier\", \"Belgian Shepherd Dog (Groenendael)\", \"Belgian Shepherd Dog (Laekenois)\", \"Belgian Shepherd Dog (Malinois)\", \"Bergamasco Shepherd\", \"Berger Blanc Suisse\", \"Berger Picard\", \"Berner Laufhund\", \"Bernese Mountain Dog\", \"Billy\", \"Black and Tan Coonhound\", \"Black and Tan Virginia Foxhound\", \"Black Norwegian Elkhound\", \"Black Russian Terrier\", \"Bloodhound\", \"Blue Lacy\", \"Blue Paul Terrier\", \"Boerboel\", \"Bohemian Shepherd\", \"Bolognese\", \"Border Collie\", \"Border Terrier\", \"Borzoi\", \"Boston Terrier\", \"Bouvier des Ardennes\", \"Bouvier des Flandres\", \"Boxer\", \"Boykin Spaniel\", \"Bracco Italiano\", \"Braque d'Auvergne\", \"Braque du Bourbonnais\", \"Braque du Puy\", \"Braque Francais\", \"Braque Saint-Germain\", \"Brazilian Terrier\", \"Briard\", \"Briquet Griffon Vendéen\", \"Brittany\", \"Broholmer\", \"Bruno Jura Hound\", \"Bucovina Shepherd Dog\", \"Bull and Terrier\", \"Bull Terrier (Miniature)\", \"Bull Terrier\", \"Bulldog\", \"Bullenbeisser\", \"Bullmastiff\", \"Bully Kutta\", \"Burgos Pointer\", \"Cairn Terrier\", \"Canaan Dog\", \"Canadian Eskimo Dog\", \"Cane Corso\", \"Cardigan Welsh Corgi\", \"Carolina Dog\", \"Carpathian Shepherd Dog\", \"Catahoula Cur\", \"Catalan Sheepdog\", \"Caucasian Shepherd Dog\", \"Cavalier King Charles Spaniel\", \"Central Asian Shepherd Dog\", \"Cesky Fousek\", \"Cesky Terrier\", \"Chesapeake Bay Retriever\", \"Chien Français Blanc et Noir\", \"Chien Français Blanc et Orange\", \"Chien Français Tricolore\", \"Chien-gris\", \"Chihuahua\", \"Chilean Fox Terrier\", \"Chinese Chongqing Dog\", \"Chinese Crested Dog\", \"Chinese Imperial Dog\", \"Chinook\", \"Chippiparai\", \"Chow Chow\", \"Cierny Sery\", \"Cimarrón Uruguayo\", \"Cirneco dell'Etna\", \"Clumber Spaniel\", \"Combai\", \"Cordoba Fighting Dog\", \"Coton de Tulear\", \"Cretan Hound\", \"Croatian Sheepdog\", \"Cumberland Sheepdog\", \"Curly Coated Retriever\", \"Cursinu\", \"Cão da Serra de Aires\", \"Cão de Castro Laboreiro\", \"Cão Fila de São Miguel\", \"Dachshund\", \"Dalmatian\", \"Dandie Dinmont Terrier\", \"Danish Swedish Farmdog\", \"Deutsche Bracke\", \"Doberman Pinscher\", \"Dogo Argentino\", \"Dogo Cubano\", \"Dogue de Bordeaux\", \"Drentse Patrijshond\", \"Drever\", \"Dunker\", \"Dutch Shepherd Dog\", \"Dutch Smoushond\", \"East Siberian Laika\", \"East-European Shepherd\", \"Elo\", \"English Cocker Spaniel\", \"English Foxhound\", \"English Mastiff\", \"English Setter\", \"English Shepherd\", \"English Springer Spaniel\", \"English Toy Terrier (Black &amp; Tan)\", \"English Water Spaniel\", \"English White Terrier\", \"Entlebucher Mountain Dog\", \"Estonian Hound\", \"Estrela Mountain Dog\", \"Eurasier\", \"Field Spaniel\", \"Fila Brasileiro\", \"Finnish Hound\", \"Finnish Lapphund\", \"Finnish Spitz\", \"Flat-Coated Retriever\", \"Formosan Mountain Dog\", \"Fox Terrier (Smooth)\", \"French Bulldog\", \"French Spaniel\", \"Galgo Español\", \"Gascon Saintongeois\", \"German Longhaired Pointer\", \"German Pinscher\", \"German Shepherd\", \"German Shorthaired Pointer\", \"German Spaniel\", \"German Spitz\", \"German Wirehaired Pointer\", \"Giant Schnauzer\", \"Glen of Imaal Terrier\", \"Golden Retriever\", \"Gordon Setter\", \"Gran Mastín de Borínquen\", \"Grand Anglo-Français Blanc et Noir\", \"Grand Anglo-Français Blanc et Orange\", \"Grand Anglo-Français Tricolore\", \"Grand Basset Griffon Vendéen\", \"Grand Bleu de Gascogne\", \"Grand Griffon Vendéen\", \"Great Dane\", \"Great Pyrenees\", \"Greater Swiss Mountain Dog\", \"Greek Harehound\", \"Greenland Dog\", \"Greyhound\", \"Griffon Bleu de Gascogne\", \"Griffon Bruxellois\", \"Griffon Fauve de Bretagne\", \"Griffon Nivernais\", \"Hamiltonstövare\", \"Hanover Hound\", \"Hare Indian Dog\", \"Harrier\", \"Havanese\", \"Hawaiian Poi Dog\", \"Himalayan Sheepdog\", \"Hokkaido\", \"Hovawart\", \"Huntaway\", \"Hygenhund\", \"Ibizan Hound\", \"Icelandic Sheepdog\", \"Indian pariah dog\", \"Indian Spitz\", \"Irish Red and White Setter\", \"Irish Setter\", \"Irish Terrier\", \"Irish Water Spaniel\", \"Irish Wolfhound\", \"Istrian Coarse-haired Hound\", \"Istrian Shorthaired Hound\", \"Italian Greyhound\", \"Jack Russell Terrier\", \"Jagdterrier\", \"Jämthund\", \"Kai Ken\", \"Kaikadi\", \"Kanni\", \"Karelian Bear Dog\", \"Karst Shepherd\", \"Keeshond\", \"Kerry Beagle\", \"Kerry Blue Terrier\", \"King Charles Spaniel\", \"King Shepherd\", \"Kintamani\", \"Kishu\", \"Komondor\", \"Kooikerhondje\", \"Koolie\", \"Korean Jindo Dog\", \"Kromfohrländer\", \"Kumaon Mastiff\", \"Kurī\", \"Kuvasz\", \"Kyi-Leo\", \"Labrador Husky\", \"Labrador Retriever\", \"Lagotto Romagnolo\", \"Lakeland Terrier\", \"Lancashire Heeler\", \"Landseer\", \"Lapponian Herder\", \"Large Münsterländer\", \"Leonberger\", \"Lhasa Apso\", \"Lithuanian Hound\", \"Longhaired Whippet\", \"Löwchen\", \"Mahratta Greyhound\", \"Maltese\", \"Manchester Terrier\", \"Maremma Sheepdog\", \"McNab\", \"Mexican Hairless Dog\", \"Miniature American Shepherd\", \"Miniature Australian Shepherd\", \"Miniature Fox Terrier\", \"Miniature Pinscher\", \"Miniature Schnauzer\", \"Miniature Shar Pei\", \"Molossus\", \"Montenegrin Mountain Hound\", \"Moscow Watchdog\", \"Moscow Water Dog\", \"Mountain Cur\", \"Mucuchies\", \"Mudhol Hound\", \"Mudi\", \"Neapolitan Mastiff\", \"New Zealand Heading Dog\", \"Newfoundland\", \"Norfolk Spaniel\", \"Norfolk Terrier\", \"Norrbottenspets\", \"North Country Beagle\", \"Northern Inuit Dog\", \"Norwegian Buhund\", \"Norwegian Elkhound\", \"Norwegian Lundehund\", \"Norwich Terrier\", \"Old Croatian Sighthound\", \"Old Danish Pointer\", \"Old English Sheepdog\", \"Old English Terrier\", \"Old German Shepherd Dog\", \"Olde English Bulldogge\", \"Otterhound\", \"Pachon Navarro\", \"Paisley Terrier\", \"Pandikona\", \"Papillon\", \"Parson Russell Terrier\", \"Patterdale Terrier\", \"Pekingese\", \"Pembroke Welsh Corgi\", \"Perro de Presa Canario\", \"Perro de Presa Mallorquin\", \"Peruvian Hairless Dog\", \"Petit Basset Griffon Vendéen\", \"Petit Bleu de Gascogne\", \"Phalène\", \"Pharaoh Hound\", \"Phu Quoc ridgeback dog\", \"Picardy Spaniel\", \"Plott Hound\", \"Podenco Canario\", \"Pointer (dog breed)\", \"Polish Greyhound\", \"Polish Hound\", \"Polish Hunting Dog\", \"Polish Lowland Sheepdog\", \"Polish Tatra Sheepdog\", \"Pomeranian\", \"Pont-Audemer Spaniel\", \"Poodle\", \"Porcelaine\", \"Portuguese Podengo\", \"Portuguese Pointer\", \"Portuguese Water Dog\", \"Posavac Hound\", \"Pražský Krysařík\", \"Pudelpointer\", \"Pug\", \"Puli\", \"Pumi\", \"Pungsan Dog\", \"Pyrenean Mastiff\", \"Pyrenean Shepherd\", \"Rafeiro do Alentejo\", \"Rajapalayam\", \"Rampur Greyhound\", \"Rastreador Brasileiro\", \"Rat Terrier\", \"Ratonero Bodeguero Andaluz\", \"Redbone Coonhound\", \"Rhodesian Ridgeback\", \"Rottweiler\", \"Rough Collie\", \"Russell Terrier\", \"Russian Spaniel\", \"Russian tracker\", \"Russo-European Laika\", \"Sabueso Español\", \"Saint-Usuge Spaniel\", \"Sakhalin Husky\", \"Saluki\", \"Samoyed\", \"Sapsali\", \"Schapendoes\", \"Schillerstövare\", \"Schipperke\", \"Schweizer Laufhund\", \"Schweizerischer Niederlaufhund\", \"Scotch Collie\", \"Scottish Deerhound\", \"Scottish Terrier\", \"Sealyham Terrier\", \"Segugio Italiano\", \"Seppala Siberian Sleddog\", \"Serbian Hound\", \"Serbian Tricolour Hound\", \"Shar Pei\", \"Shetland Sheepdog\", \"Shiba Inu\", \"Shih Tzu\", \"Shikoku\", \"Shiloh Shepherd Dog\", \"Siberian Husky\", \"Silken Windhound\", \"Sinhala Hound\", \"Skye Terrier\", \"Sloughi\", \"Slovak Cuvac\", \"Slovakian Rough-haired Pointer\", \"Small Greek Domestic Dog\", \"Small Münsterländer\", \"Smooth Collie\", \"South Russian Ovcharka\", \"Southern Hound\", \"Spanish Mastiff\", \"Spanish Water Dog\", \"Spinone Italiano\", \"Sporting Lucas Terrier\", \"St. Bernard\", \"St. John's water dog\", \"Stabyhoun\", \"Staffordshire Bull Terrier\", \"Standard Schnauzer\", \"Stephens Cur\", \"Styrian Coarse-haired Hound\", \"Sussex Spaniel\", \"Swedish Lapphund\", \"Swedish Vallhund\", \"Tahltan Bear Dog\", \"Taigan\", \"Talbot\", \"Tamaskan Dog\", \"Teddy Roosevelt Terrier\", \"Telomian\", \"Tenterfield Terrier\", \"Thai Bangkaew Dog\", \"Thai Ridgeback\", \"Tibetan Mastiff\", \"Tibetan Spaniel\", \"Tibetan Terrier\", \"Tornjak\", \"Tosa\", \"Toy Bulldog\", \"Toy Fox Terrier\", \"Toy Manchester Terrier\", \"Toy Trawler Spaniel\", \"Transylvanian Hound\", \"Treeing Cur\", \"Treeing Walker Coonhound\", \"Trigg Hound\", \"Tweed Water Spaniel\", \"Tyrolean Hound\", \"Vizsla\", \"Volpino Italiano\", \"Weimaraner\", \"Welsh Sheepdog\", \"Welsh Springer Spaniel\", \"Welsh Terrier\", \"West Highland White Terrier\", \"West Siberian Laika\", \"Westphalian Dachsbracke\", \"Wetterhoun\", \"Whippet\", \"White Shepherd\", \"Wire Fox Terrier\", \"Wirehaired Pointing Griffon\", \"Wirehaired Vizsla\", \"Yorkshire Terrier\", \"Šarplaninac\"}\n"
  },
  {
    "path": "pkg/data/emoji.go",
    "content": "package data\n\nvar Emoji = []string{\"🀄\", \"🃏\", \"🅰\", \"🅱\", \"🅾\", \"🅿\", \"🆎\", \"🆑\", \"🆒\", \"🆓\", \"🆔\", \"🆕\", \"🆖\", \"🆗\", \"🆘\", \"🆙\", \"🆚\", \"🇦\", \"🇧\", \"🇨\", \"🇩\", \"🇪\", \"🇫\", \"🇬\", \"🇭\", \"🇮\", \"🇯\", \"🇰\", \"🇱\", \"🇲\", \"🇳\", \"🇴\", \"🇵\", \"🇶\", \"🇷\", \"🇸\", \"🇹\", \"🇺\", \"🇻\", \"🇼\", \"🇽\", \"🇾\", \"🇿\", \"🈁\", \"🈂\", \"🈚\", \"🈯\", \"🈲\", \"🈳\", \"🈴\", \"🈵\", \"🈶\", \"🈷\", \"🈸\", \"🈹\", \"🈺\", \"🉐\", \"🉑\", \"🌀\", \"🌁\", \"🌂\", \"🌃\", \"🌄\", \"🌅\", \"🌆\", \"🌇\", \"🌈\", \"🌉\", \"🌊\", \"🌋\", \"🌌\", \"🌍\", \"🌎\", \"🌏\", \"🌐\", \"🌑\", \"🌒\", \"🌓\", \"🌔\", \"🌕\", \"🌖\", \"🌗\", \"🌘\", \"🌙\", \"🌚\", \"🌛\", \"🌜\", \"🌝\", \"🌞\", \"🌟\", \"🌠\", \"🌰\", \"🌱\", \"🌲\", \"🌳\", \"🌴\", \"🌵\", \"🌷\", \"🌸\", \"🌹\", \"🌺\", \"🌻\", \"🌼\", \"🌽\", \"🌾\", \"🌿\", \"🍀\", \"🍁\", \"🍂\", \"🍃\", \"🍄\", \"🍅\", \"🍆\", \"🍇\", \"🍈\", \"🍉\", \"🍊\", \"🍋\", \"🍌\", \"🍍\", \"🍎\", \"🍏\", \"🍐\", \"🍑\", \"🍒\", \"🍓\", \"🍔\", \"🍕\", \"🍖\", \"🍗\", \"🍘\", \"🍙\", \"🍚\", \"🍛\", \"🍜\", \"🍝\", \"🍞\", \"🍟\", \"🍠\", \"🍡\", \"🍢\", \"🍣\", \"🍤\", \"🍥\", \"🍦\", \"🍧\", \"🍨\", \"🍩\", \"🍪\", \"🍫\", \"🍬\", \"🍭\", \"🍮\", \"🍯\", \"🍰\", \"🍱\", \"🍲\", \"🍳\", \"🍴\", \"🍵\", \"🍶\", \"🍷\", \"🍸\", \"🍹\", \"🍺\", \"🍻\", \"🍼\", \"🎀\", \"🎁\", \"🎂\", \"🎃\", \"🎄\", \"🎅\", \"🎆\", \"🎇\", \"🎈\", \"🎉\", \"🎊\", \"🎋\", \"🎌\", \"🎍\", \"🎎\", \"🎏\", \"🎐\", \"🎑\", \"🎒\", \"🎓\", \"🎠\", \"🎡\", \"🎢\", \"🎣\", \"🎤\", \"🎥\", \"🎦\", \"🎧\", \"🎨\", \"🎩\", \"🎪\", \"🎫\", \"🎬\", \"🎭\", \"🎮\", \"🎯\", \"🎰\", \"🎱\", \"🎲\", \"🎳\", \"🎴\", \"🎵\", \"🎶\", \"🎷\", \"🎸\", \"🎹\", \"🎺\", \"🎻\", \"🎼\", \"🎽\", \"🎾\", \"🎿\", \"🏀\", \"🏁\", \"🏂\", \"🏃\", \"🏄\", \"🏆\", \"🏇\", \"🏈\", \"🏉\", \"🏊\", \"🏠\", \"🏡\", \"🏢\", \"🏣\", \"🏤\", \"🏥\", \"🏦\", \"🏧\", \"🏨\", \"🏩\", \"🏪\", \"🏫\", \"🏬\", \"🏭\", \"🏮\", \"🏯\", \"🏰\", \"🐀\", \"🐁\", \"🐂\", \"🐃\", \"🐄\", \"🐅\", \"🐆\", \"🐇\", \"🐈\", \"🐉\", \"🐊\", \"🐋\", \"🐌\", \"🐍\", \"🐎\", \"🐏\", \"🐐\", \"🐑\", \"🐒\", \"🐓\", \"🐔\", \"🐕\", \"🐖\", \"🐗\", \"🐘\", \"🐙\", \"🐚\", \"🐛\", \"🐜\", \"🐝\", \"🐞\", \"🐟\", \"🐠\", \"🐡\", \"🐢\", \"🐣\", \"🐤\", \"🐥\", \"🐦\", \"🐧\", \"🐨\", \"🐩\", \"🐪\", \"🐫\", \"🐬\", \"🐭\", \"🐮\", \"🐯\", \"🐰\", \"🐱\", \"🐲\", \"🐳\", \"🐴\", \"🐵\", \"🐶\", \"🐷\", \"🐸\", \"🐹\", \"🐺\", \"🐻\", \"🐼\", \"🐽\", \"🐾\", \"👀\", \"👂\", \"👃\", \"👄\", \"👅\", \"👆\", \"👇\", \"👈\", \"👉\", \"👊\", \"👋\", \"👌\", \"👍\", \"👎\", \"👏\", \"👐\", \"👑\", \"👒\", \"👓\", \"👔\", \"👕\", \"👖\", \"👗\", \"👘\", \"👙\", \"👚\", \"👛\", \"👜\", \"👝\", \"👞\", \"👟\", \"👠\", \"👡\", \"👢\", \"👣\", \"👤\", \"👥\", \"👦\", \"👧\", \"👨\", \"👩\", \"👪\", \"👫\", \"👬\", \"👭\", \"👮\", \"👯\", \"👰\", \"👱\", \"👲\", \"👳\", \"👴\", \"👵\", \"👶\", \"👷\", \"👸\", \"👹\", \"👺\", \"👻\", \"👼\", \"👽\", \"👾\", \"👿\", \"💀\", \"💁\", \"💂\", \"💃\", \"💄\", \"💅\", \"💆\", \"💇\", \"💈\", \"💉\", \"💊\", \"💋\", \"💌\", \"💍\", \"💎\", \"💏\", \"💐\", \"💑\", \"💒\", \"💓\", \"💔\", \"💕\", \"💖\", \"💗\", \"💘\", \"💙\", \"💚\", \"💛\", \"💜\", \"💝\", \"💞\", \"💟\", \"💠\", \"💡\", \"💢\", \"💣\", \"💤\", \"💥\", \"💦\", \"💧\", \"💨\", \"💩\", \"💪\", \"💫\", \"💬\", \"💭\", \"💮\", \"💯\", \"💰\", \"💱\", \"💲\", \"💳\", \"💴\", \"💵\", \"💶\", \"💷\", \"💸\", \"💹\", \"💺\", \"💻\", \"💼\", \"💽\", \"💾\", \"💿\", \"📀\", \"📁\", \"📂\", \"📃\", \"📄\", \"📅\", \"📆\", \"📇\", \"📈\", \"📉\", \"📊\", \"📋\", \"📌\", \"📍\", \"📎\", \"📏\", \"📐\", \"📑\", \"📒\", \"📓\", \"📔\", \"📕\", \"📖\", \"📗\", \"📘\", \"📙\", \"📚\", \"📛\", \"📜\", \"📝\", \"📞\", \"📟\", \"📠\", \"📡\", \"📢\", \"📣\", \"📤\", \"📥\", \"📦\", \"📧\", \"📨\", \"📩\", \"📪\", \"📫\", \"📬\", \"📭\", \"📮\", \"📯\", \"📰\", \"📱\", \"📲\", \"📳\", \"📴\", \"📵\", \"📶\", \"📷\", \"📹\", \"📺\", \"📻\", \"📼\", \"🔀\", \"🔁\", \"🔂\", \"🔃\", \"🔄\", \"🔅\", \"🔆\", \"🔇\", \"🔈\", \"🔉\", \"🔊\", \"🔋\", \"🔌\", \"🔍\", \"🔎\", \"🔏\", \"🔐\", \"🔑\", \"🔒\", \"🔓\", \"🔔\", \"🔕\", \"🔖\", \"🔗\", \"🔘\", \"🔙\", \"🔚\", \"🔛\", \"🔜\", \"🔝\", \"🔞\", \"🔟\", \"🔠\", \"🔡\", \"🔢\", \"🔣\", \"🔤\", \"🔥\", \"🔦\", \"🔧\", \"🔨\", \"🔩\", \"🔪\", \"🔫\", \"🔬\", \"🔭\", \"🔮\", \"🔯\", \"🔰\", \"🔱\", \"🔲\", \"🔳\", \"🔴\", \"🔵\", \"🔶\", \"🔷\", \"🔸\", \"🔹\", \"🔺\", \"🔻\", \"🔼\", \"🔽\", \"🕐\", \"🕑\", \"🕒\", \"🕓\", \"🕔\", \"🕕\", \"🕖\", \"🕗\", \"🕘\", \"🕙\", \"🕚\", \"🕛\", \"🕜\", \"🕝\", \"🕞\", \"🕟\", \"🕠\", \"🕡\", \"🕢\", \"🕣\", \"🕤\", \"🕥\", \"🕦\", \"🕧\", \"🗻\", \"🗼\", \"🗽\", \"🗾\", \"🗿\", \"😀\", \"😁\", \"😂\", \"😃\", \"😄\", \"😅\", \"😆\", \"😇\", \"😈\", \"😉\", \"😊\", \"😋\", \"😌\", \"😍\", \"😎\", \"😏\", \"😐\", \"😑\", \"😒\", \"😓\", \"😔\", \"😕\", \"😖\", \"😗\", \"😘\", \"😙\", \"😚\", \"😛\", \"😜\", \"😝\", \"😞\", \"😟\", \"😠\", \"😡\", \"😢\", \"😣\", \"😤\", \"😥\", \"😦\", \"😧\", \"😨\", \"😩\", \"😪\", \"😫\", \"😬\", \"😭\", \"😮\", \"😯\", \"😰\", \"😱\", \"😲\", \"😳\", \"😴\", \"😵\", \"😶\", \"😷\", \"😸\", \"😹\", \"😺\", \"😻\", \"😼\", \"😽\", \"😾\", \"😿\", \"🙀\", \"🙁\", \"🙂\", \"🙅\", \"🙆\", \"🙇\", \"🙈\", \"🙉\", \"🙊\", \"🙋\", \"🙌\", \"🙍\", \"🙎\", \"🙏\", \"🚀\", \"🚁\", \"🚂\", \"🚃\", \"🚄\", \"🚅\", \"🚆\", \"🚇\", \"🚈\", \"🚉\", \"🚊\", \"🚋\", \"🚌\", \"🚍\", \"🚎\", \"🚏\", \"🚐\", \"🚑\", \"🚒\", \"🚓\", \"🚔\", \"🚕\", \"🚖\", \"🚗\", \"🚘\", \"🚙\", \"🚚\", \"🚛\", \"🚜\", \"🚝\", \"🚞\", \"🚟\", \"🚠\", \"🚡\", \"🚢\", \"🚣\", \"🚤\", \"🚥\", \"🚦\", \"🚧\", \"🚨\", \"🚩\", \"🚪\", \"🚫\", \"🚬\", \"🚭\", \"🚮\", \"🚯\", \"🚰\", \"🚱\", \"🚲\", \"🚳\", \"🚴\", \"🚵\", \"🚶\", \"🚷\", \"🚸\", \"🚹\", \"🚺\", \"🚻\", \"🚼\", \"🚽\", \"🚾\", \"🚿\", \"🛀\", \"🛁\", \"🛂\", \"🛃\", \"🛄\", \"🛅\", \"‼\", \"⁉\", \"™\", \"ℹ\", \"↔\", \"↕\", \"↖\", \"↗\", \"↘\", \"↙\", \"↩\", \"↪\", \"#\", \"⌚\", \"⌛\", \"⏩\", \"⏪\", \"⏫\", \"⏬\", \"⏰\", \"⏳\", \"Ⓜ\", \"▪\", \"▫\", \"▶\", \"◀\", \"◻\", \"◼\", \"◽\", \"◾\", \"☀\", \"☁\", \"☎\", \"☑\", \"☔\", \"☕\", \"☝\", \"☺\", \"♈\", \"♉\", \"♊\", \"♋\", \"♌\", \"♍\", \"♎\", \"♏\", \"♐\", \"♑\", \"♒\", \"♓\", \"♠\", \"♣\", \"♥\", \"♦\", \"♨\", \"♻\", \"♿\", \"⚓\", \"⚠\", \"⚡\", \"⚪\", \"⚫\", \"⚽\", \"⚾\", \"⛄\", \"⛅\", \"⛎\", \"⛔\", \"⛪\", \"⛲\", \"⛳\", \"⛵\", \"⛺\", \"⛽\", \"✂\", \"✅\", \"✈\", \"✉\", \"✊\", \"✋\", \"✌\", \"✏\", \"✒\", \"✔\", \"✖\", \"✨\", \"✳\", \"✴\", \"❄\", \"❇\", \"❌\", \"❎\", \"❓\", \"❔\", \"❕\", \"❗\", \"❤\", \"➕\", \"➖\", \"➗\", \"➡\", \"➰\", \"➿\", \"⤴\", \"⤵\", \"⬅\", \"⬆\", \"⬇\", \"⬛\", \"⬜\", \"⭐\", \"⭕\", \"0\", \"〰\", \"〽\", \"1\", \"2\", \"㊗\", \"㊙\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"©\", \"®\", \"\\ue50a\"}\n"
  },
  {
    "path": "pkg/data/first_names.go",
    "content": "package data\n\n// Firstnames is an array of first names\nvar Firstnames = []string{\n\t\"Abram\",\n\t\"Adalberto\",\n\t\"Adaline\",\n\t\"Adriene\",\n\t\"Ahmed\",\n\t\"Alease\",\n\t\"Alec\",\n\t\"Aleshia\",\n\t\"Alfonzo\",\n\t\"Alishia\",\n\t\"Alisia\",\n\t\"Alix\",\n\t\"Aliza\",\n\t\"Allen\",\n\t\"Alline\",\n\t\"Almeta\",\n\t\"Alonso\",\n\t\"Amado\",\n\t\"Amberly\",\n\t\"Ambrose\",\n\t\"Andreas\",\n\t\"Angele\",\n\t\"Angelena\",\n\t\"Angelo\",\n\t\"Anibal\",\n\t\"Annalee\",\n\t\"Annalisa\",\n\t\"Annett\",\n\t\"Annice\",\n\t\"Antione\",\n\t\"Antone\",\n\t\"Antonia\",\n\t\"Apolonia\",\n\t\"Apryl\",\n\t\"Aracelis\",\n\t\"Ardell\",\n\t\"Arden\",\n\t\"Argelia\",\n\t\"Ariane\",\n\t\"Arianne\",\n\t\"Arie\",\n\t\"Arlen\",\n\t\"Arletha\",\n\t\"Arlie\",\n\t\"Armanda\",\n\t\"Arminda\",\n\t\"Arnoldo\",\n\t\"Asa\",\n\t\"Ashlyn\",\n\t\"Assunta\",\n\t\"Augustus\",\n\t\"Aundrea\",\n\t\"Azucena\",\n\t\"Barbar\",\n\t\"Barbera\",\n\t\"Barrett\",\n\t\"Becki\",\n\t\"Bell\",\n\t\"Benedict\",\n\t\"Benton\",\n\t\"Bernardine\",\n\t\"Berneice\",\n\t\"Bernie\",\n\t\"Berry\",\n\t\"Bertram\",\n\t\"Bethann\",\n\t\"Betsey\",\n\t\"Bev\",\n\t\"Blossom\",\n\t\"Blythe\",\n\t\"Bo\",\n\t\"Boyce\",\n\t\"Bradly\",\n\t\"Branda\",\n\t\"Brant\",\n\t\"Breann\",\n\t\"Brendon\",\n\t\"Brenton\",\n\t\"Brett\",\n\t\"Brice\",\n\t\"Brinda\",\n\t\"Britt\",\n\t\"Britta\",\n\t\"Broderick\",\n\t\"Brynn\",\n\t\"Buck\",\n\t\"Bud\",\n\t\"Burl\",\n\t\"Buster\",\n\t\"Carisa\",\n\t\"Carmon\",\n\t\"Carol\",\n\t\"Carola\",\n\t\"Carrol\",\n\t\"Catarina\",\n\t\"Cedrick\",\n\t\"Ceola\",\n\t\"Chang\",\n\t\"Chas\",\n\t\"Chau\",\n\t\"Chauncey\",\n\t\"Cher\",\n\t\"Chery\",\n\t\"Chet\",\n\t\"Chi\",\n\t\"China\",\n\t\"Ching\",\n\t\"Chong\",\n\t\"Chung\",\n\t\"Cicely\",\n\t\"Clarita\",\n\t\"Claud\",\n\t\"Claudie\",\n\t\"Claudio\",\n\t\"Clemente\",\n\t\"Cleora\",\n\t\"Clorinda\",\n\t\"Coletta\",\n\t\"Colton\",\n\t\"Columbus\",\n\t\"Connie\",\n\t\"Coralee\",\n\t\"Cordell\",\n\t\"Cordie\",\n\t\"Cortez\",\n\t\"Criselda\",\n\t\"Cristen\",\n\t\"Cristie\",\n\t\"Cristobal\",\n\t\"Cristopher\",\n\t\"Dacia\",\n\t\"Damion\",\n\t\"Danae\",\n\t\"Daniell\",\n\t\"Danika\",\n\t\"Danille\",\n\t\"Danilo\",\n\t\"Dannette\",\n\t\"Dannie\",\n\t\"Danuta\",\n\t\"Danyell\",\n\t\"Darby\",\n\t\"Darell\",\n\t\"Dario\",\n\t\"Daron\",\n\t\"Darrick\",\n\t\"Darron\",\n\t\"Deangelo\",\n\t\"Dee\",\n\t\"Del\",\n\t\"Delaine\",\n\t\"Delena\",\n\t\"Delicia\",\n\t\"Delmer\",\n\t\"Delpha\",\n\t\"Demarcus\",\n\t\"Demetrice\",\n\t\"Demetrius\",\n\t\"Denese\",\n\t\"Deshawn\",\n\t\"Devora\",\n\t\"Devorah\",\n\t\"Dewitt\",\n\t\"Diedre\",\n\t\"Dillon\",\n\t\"Dimple\",\n\t\"Dionna\",\n\t\"Doloris\",\n\t\"Domenic\",\n\t\"Domonique\",\n\t\"Dong\",\n\t\"Donn\",\n\t\"Donte\",\n\t\"Donya\",\n\t\"Doretta\",\n\t\"Dorie\",\n\t\"Dorsey\",\n\t\"Douglass\",\n\t\"Drema\",\n\t\"Dung\",\n\t\"Dwain\",\n\t\"Dyan\",\n\t\"Ebonie\",\n\t\"Echo\",\n\t\"Edda\",\n\t\"Edgardo\",\n\t\"Edison\",\n\t\"Edmundo\",\n\t\"Edward\",\n\t\"Elanor\",\n\t\"Elden\",\n\t\"Eldridge\",\n\t\"Elenore\",\n\t\"Elisha\",\n\t\"Ellsworth\",\n\t\"Elly\",\n\t\"Elois\",\n\t\"Elroy\",\n\t\"Elvina\",\n\t\"Emerald\",\n\t\"Emerita\",\n\t\"Emmitt\",\n\t\"Enoch\",\n\t\"Epifania\",\n\t\"Erasmo\",\n\t\"Erinn\",\n\t\"Erline\",\n\t\"Ermelinda\",\n\t\"Erminia\",\n\t\"Ethelene\",\n\t\"Eugene\",\n\t\"Eusebio\",\n\t\"Evan\",\n\t\"Evelin\",\n\t\"Exie\",\n\t\"Ezekiel\",\n\t\"Ezequiel\",\n\t\"Fae\",\n\t\"Faustino\",\n\t\"Fausto\",\n\t\"Fe\",\n\t\"Felton\",\n\t\"Fermin\",\n\t\"Filiberto\",\n\t\"Florencio\",\n\t\"Florentino\",\n\t\"Floretta\",\n\t\"Foster\",\n\t\"Francie\",\n\t\"Francina\",\n\t\"Francoise\",\n\t\"Franklyn\",\n\t\"Fredric\",\n\t\"Fumiko\",\n\t\"Garfield\",\n\t\"Garret\",\n\t\"Gaston\",\n\t\"Gayle\",\n\t\"Gaylene\",\n\t\"Gaylord\",\n\t\"Gaynelle\",\n\t\"Gearldine\",\n\t\"Genia\",\n\t\"Gennie\",\n\t\"Geraldo\",\n\t\"Gertude\",\n\t\"Gianna\",\n\t\"Gino\",\n\t\"Giuseppe\",\n\t\"Glennie\",\n\t\"Glynda\",\n\t\"Glynis\",\n\t\"Graig\",\n\t\"Granville\",\n\t\"Grayce\",\n\t\"Gwenn\",\n\t\"Gwyn\",\n\t\"Hai\",\n\t\"Hang\",\n\t\"Hanh\",\n\t\"Hank\",\n\t\"Harland\",\n\t\"Hassan\",\n\t\"Hayden\",\n\t\"Haywood\",\n\t\"Hedy\",\n\t\"Herb\",\n\t\"Herta\",\n\t\"Hilaria\",\n\t\"Hilario\",\n\t\"Hilde\",\n\t\"Hildegarde\",\n\t\"Hildred\",\n\t\"Hilton\",\n\t\"Hipolito\",\n\t\"Hobert\",\n\t\"Hong\",\n\t\"Horacio\",\n\t\"Hosea\",\n\t\"Hoyt\",\n\t\"Huey\",\n\t\"Hyacinth\",\n\t\"Hyman\",\n\t\"Ike\",\n\t\"Ilda\",\n\t\"Iluminada\",\n\t\"Inocencia\",\n\t\"Irish\",\n\t\"Isa\",\n\t\"Isaias\",\n\t\"Isidra\",\n\t\"Isis\",\n\t\"Isreal\",\n\t\"Ivelisse\",\n\t\"Jacinda\",\n\t\"Jacinto\",\n\t\"Jacquelyne\",\n\t\"Jacquie\",\n\t\"Jacquiline\",\n\t\"Jadwiga\",\n\t\"Jae\",\n\t\"Jae\",\n\t\"Jaleesa\",\n\t\"Jamaal\",\n\t\"Jamey\",\n\t\"Jamey\",\n\t\"Jamison\",\n\t\"Janay\",\n\t\"Janee\",\n\t\"Janise\",\n\t\"Jann\",\n\t\"Jannet\",\n\t\"Jarod\",\n\t\"Jarred\",\n\t\"Jaye\",\n\t\"Jc\",\n\t\"Jeanmarie\",\n\t\"Jed\",\n\t\"Jefferey\",\n\t\"Jen\",\n\t\"Jene\",\n\t\"Jenice\",\n\t\"Jeramy\",\n\t\"Jere\",\n\t\"Jeromy\",\n\t\"Jerrell\",\n\t\"Jerrica\",\n\t\"Jerrold\",\n\t\"Jesusa\",\n\t\"Jetta\",\n\t\"Jewel\",\n\t\"Jewell\",\n\t\"Jimmy\",\n\t\"Joannie\",\n\t\"Johana\",\n\t\"Johna\",\n\t\"Johnson\",\n\t\"Jolanda\",\n\t\"Jolyn\",\n\t\"Jona\",\n\t\"Jonah\",\n\t\"Jordon\",\n\t\"Josiah\",\n\t\"Joseph\",\n\t\"Josphine\",\n\t\"Jude\",\n\t\"Judson\",\n\t\"Julian\",\n\t\"Juliane\",\n\t\"Junita\",\n\t\"Justin\",\n\t\"Ka\",\n\t\"Kaila\",\n\t\"Kaley\",\n\t\"Kam\",\n\t\"Kandis\",\n\t\"Karine\",\n\t\"Karl\",\n\t\"Karleen\",\n\t\"Kary\",\n\t\"Karyl\",\n\t\"Kasey\",\n\t\"Kasie\",\n\t\"Kathe\",\n\t\"Kathey\",\n\t\"Katia\",\n\t\"Katrice\",\n\t\"Keena\",\n\t\"Keenan\",\n\t\"Kelle\",\n\t\"Kelley\",\n\t\"Kena\",\n\t\"Keneth\",\n\t\"Kenton\",\n\t\"Keven\",\n\t\"Kiersten\",\n\t\"Kimbery\",\n\t\"Kimiko\",\n\t\"King\",\n\t\"Kip\",\n\t\"Klara\",\n\t\"Korey\",\n\t\"Kory\",\n\t\"Kraig\",\n\t\"Kristel\",\n\t\"Kristofer\",\n\t\"Lachelle\",\n\t\"Lacy\",\n\t\"Lakiesha\",\n\t\"Lala\",\n\t\"Laquanda\",\n\t\"Laraine\",\n\t\"Laronda\",\n\t\"Larry\",\n\t\"Lasandra\",\n\t\"Latashia\",\n\t\"Latesha\",\n\t\"Latina\",\n\t\"Latrisha\",\n\t\"Launa\",\n\t\"Lauren\",\n\t\"Laurice\",\n\t\"Lauryn\",\n\t\"Lavera\",\n\t\"Lavette\",\n\t\"Lavonna\",\n\t\"Lawanna\",\n\t\"Lawerence\",\n\t\"Leandro\",\n\t\"Leif\",\n\t\"Leigh\",\n\t\"Leighann\",\n\t\"Leisha\",\n\t\"Len\",\n\t\"Lenard\",\n\t\"Lenny\",\n\t\"Leonore\",\n\t\"Lesley\",\n\t\"Lexie\",\n\t\"Lezlie\",\n\t\"Liberty\",\n\t\"Librada\",\n\t\"Lindsay\",\n\t\"Lino\",\n\t\"Lisbeth\",\n\t\"Lizzette\",\n\t\"Loida\",\n\t\"Long\",\n\t\"Lonny\",\n\t\"Loriann\",\n\t\"Loris\",\n\t\"Lory\",\n\t\"Lou\",\n\t\"Louie\",\n\t\"Lucius\",\n\t\"Luigi\",\n\t\"Luise\",\n\t\"Luna\",\n\t\"Lupe\",\n\t\"Lyman\",\n\t\"Lyndon\",\n\t\"Lynell\",\n\t\"Lynetta\",\n\t\"Lynsey\",\n\t\"Lynwood\",\n\t\"Mac\",\n\t\"Madlyn\",\n\t\"Magdalen\",\n\t\"Maia\",\n\t\"Maile\",\n\t\"Malcom\",\n\t\"Malik\",\n\t\"Mallie\",\n\t\"Man\",\n\t\"Mana\",\n\t\"Manual\",\n\t\"Marceline\",\n\t\"Marcellus\",\n\t\"Marcelo\",\n\t\"Margareta\",\n\t\"Margert\",\n\t\"Marget\",\n\t\"Marguerita\",\n\t\"Maria\",\n\t\"Mariko\",\n\t\"Marilu\",\n\t\"Marinda\",\n\t\"Marivel\",\n\t\"Markus\",\n\t\"Marlana\",\n\t\"Marlen\",\n\t\"Martin\",\n\t\"Maryalice\",\n\t\"Mathilde\",\n\t\"Mauro\",\n\t\"Maximo\",\n\t\"Maybell\",\n\t\"Mckinley\",\n\t\"Meggan\",\n\t\"Mel\",\n\t\"Melaine\",\n\t\"Melda\",\n\t\"Melissia\",\n\t\"Melvin\",\n\t\"Mendy\",\n\t\"Meri\",\n\t\"Merrie\",\n\t\"Mica\",\n\t\"Michal\",\n\t\"Michale\",\n\t\"Mignon\",\n\t\"Miguelina\",\n\t\"Mika\",\n\t\"Mikel\",\n\t\"Milagro\",\n\t\"Milan\",\n\t\"Milo\",\n\t\"Minda\",\n\t\"Minh\",\n\t\"Miquel\",\n\t\"Mireille\",\n\t\"Mirtha\",\n\t\"Miss\",\n\t\"Mitchell\",\n\t\"Mitzie\",\n\t\"Modesto\",\n\t\"Mohamed\",\n\t\"Mose\",\n\t\"Moshe\",\n\t\"Narcisa\",\n\t\"Natashia\",\n\t\"Nathanael\",\n\t\"Nathanial\",\n\t\"Neville\",\n\t\"Newton\",\n\t\"Nicky\",\n\t\"Noble\",\n\t\"Noma\",\n\t\"Norah\",\n\t\"Noriko\",\n\t\"Obdulia\",\n\t\"Odelia\",\n\t\"Odis\",\n\t\"Olen\",\n\t\"Olimpia\",\n\t\"Olin\",\n\t\"Omega\",\n\t\"Omer\",\n\t\"Oren\",\n\t\"Orval\",\n\t\"Oswaldo\",\n\t\"Otha\",\n\t\"Otha\",\n\t\"Ozella\",\n\t\"Palmer\",\n\t\"Pandora\",\n\t\"Paris\",\n\t\"Patria\",\n\t\"Patricia\",\n\t\"Penni\",\n\t\"Phylicia\",\n\t\"Piedad\",\n\t\"Porfirio\",\n\t\"Porter\",\n\t\"Prince\",\n\t\"Quinn\",\n\t\"Quintin\",\n\t\"Raguel\",\n\t\"Raleigh\",\n\t\"Ranae\",\n\t\"Randee\",\n\t\"Rashad\",\n\t\"Rasheeda\",\n\t\"Rayford\",\n\t\"Raylene\",\n\t\"Raymon\",\n\t\"Raymond\",\n\t\"Reda\",\n\t\"Reiko\",\n\t\"Renaldo\",\n\t\"Renato\",\n\t\"Renetta\",\n\t\"Rey\",\n\t\"Reyes\",\n\t\"Reynalda\",\n\t\"Rhett\",\n\t\"Rhona\",\n\t\"Richie\",\n\t\"Ricki\",\n\t\"Rico\",\n\t\"Robt\",\n\t\"Rochell\",\n\t\"Rolf\",\n\t\"Rolland\",\n\t\"Rosario\",\n\t\"Roseline\",\n\t\"Roselle\",\n\t\"Roxy\",\n\t\"Rozella\",\n\t\"Rudolf\",\n\t\"Rudy\",\n\t\"Rueben\",\n\t\"Rupert\",\n\t\"Rutha\",\n\t\"Sal\",\n\t\"Samira\",\n\t\"Samual\",\n\t\"Sandie\",\n\t\"Sanora\",\n\t\"Santo\",\n\t\"Sebrina\",\n\t\"Shad\",\n\t\"Sharri\",\n\t\"Shaunda\",\n\t\"Shaunna\",\n\t\"Shavonne\",\n\t\"Shawana\",\n\t\"Shawnna\",\n\t\"Shayne\",\n\t\"Sheilah\",\n\t\"Shemeka\",\n\t\"Shenita\",\n\t\"Sherika\",\n\t\"Sherlyn\",\n\t\"Sherwood\",\n\t\"Shery\",\n\t\"Shirleen\",\n\t\"Shirley\",\n\t\"Shon\",\n\t\"Sid\",\n\t\"Silvana\",\n\t\"Siu\",\n\t\"Sol\",\n\t\"Solange\",\n\t\"Stanford\",\n\t\"Stanton\",\n\t\"Sung\",\n\t\"Susy\",\n\t\"Svetlana\",\n\t\"Tad\",\n\t\"Tai\",\n\t\"Taisha\",\n\t\"Talitha\",\n\t\"Tameika\",\n\t\"Tamesha\",\n\t\"Tamisha\",\n\t\"Tanner\",\n\t\"Tashia\",\n\t\"Temeka\",\n\t\"Teodoro\",\n\t\"Tequila\",\n\t\"Tereasa\",\n\t\"Tesha\",\n\t\"Thanh\",\n\t\"Theo\",\n\t\"Theola\",\n\t\"Thora\",\n\t\"Titus\",\n\t\"Tobias\",\n\t\"Tod\",\n\t\"Tomi\",\n\t\"Tomiko\",\n\t\"Toney\",\n\t\"Tory\",\n\t\"Toshiko\",\n\t\"Towanda\",\n\t\"Tran\",\n\t\"Trang\",\n\t\"Trinh\",\n\t\"Trinidad\",\n\t\"Tristan\",\n\t\"Troy\",\n\t\"Trula\",\n\t\"Tuan\",\n\t\"Twanna\",\n\t\"Tyree\",\n\t\"Tyrell\",\n\t\"Tyron\",\n\t\"Usha\",\n\t\"Ute\",\n\t\"Val\",\n\t\"Valentine\",\n\t\"Vella\",\n\t\"Veola\",\n\t\"Verdie\",\n\t\"Verena\",\n\t\"Verlene\",\n\t\"Verlie\",\n\t\"Veta\",\n\t\"Vincenzo\",\n\t\"Virgilio\",\n\t\"Von\",\n\t\"Waldo\",\n\t\"Walker\",\n\t\"Wally\",\n\t\"Walter\",\n\t\"Walton\",\n\t\"Waltraud\",\n\t\"Waneta\",\n\t\"Warner\",\n\t\"Waylon\",\n\t\"Wei\",\n\t\"Wen\",\n\t\"Werner\",\n\t\"Wes\",\n\t\"Whitney\",\n\t\"Wilber\",\n\t\"Willian\",\n\t\"Williemae\",\n\t\"Willy\",\n\t\"Wilton\",\n\t\"Winford\",\n\t\"Wonda\",\n\t\"Xochitl\",\n\t\"Yi\",\n\t\"Yolando\",\n\t\"Yong\",\n\t\"Yuk\",\n\t\"Yukiko\",\n\t\"Yuko\",\n\t\"Yung\",\n\t\"Yuri\",\n\t\"Zachariah\",\n\t\"Zack\",\n\t\"Zackary\",\n}\n"
  },
  {
    "path": "pkg/data/industries.go",
    "content": "package data\n\nvar Industries = []string{\"Accounting\", \"Airlines/Aviation\", \"Alternative Dispute Resolution\", \"Alternative Medicine\", \"Animation\", \"Apparel & Fashion\", \"Architecture & Planning\", \"Arts & Crafts\", \"Automotive\", \"Aviation & Aerospace\", \"Banking\", \"Biotechnology\", \"Broadcast Media\", \"Building Materials\", \"Business Supplies & Equipment\", \"Capital Markets\", \"Chemicals\", \"Civic & Social Organization\", \"Civil Engineering\", \"Commercial Real Estate\", \"Computer & Network Security\", \"Computer Games\", \"Computer Hardware\", \"Computer Networking\", \"Computer Software\", \"Construction\", \"Consumer Electronics\", \"Consumer Goods\", \"Consumer Services\", \"Cosmetics\", \"Dairy\", \"Defense & Space\", \"Design\", \"Education Management\", \"E-learning\", \"Electrical & Electronic Manufacturing\", \"Entertainment\", \"Environmental Services\", \"Events Services\", \"Executive Office\", \"Facilities Services\", \"Farming\", \"Financial Services\", \"Fine Art\", \"Fishery\", \"Food & Beverages\", \"Food Production\", \"Fundraising\", \"Furniture\", \"Gambling & Casinos\", \"Glass, Ceramics & Concrete\", \"Government Administration\", \"Government Relations\", \"Graphic Design\", \"Health, Wellness & Fitness\", \"Higher Education\", \"Hospital & Health Care\", \"Hospitality\", \"Human Resources\", \"Import & Export\", \"Individual & Family Services\", \"Industrial Automation\", \"Information Services\", \"Information Technology & Services\", \"Insurance\", \"International Affairs\", \"International Trade & Development\", \"Internet\", \"Investment Banking/Venture\", \"Investment Management\", \"Judiciary\", \"Law Enforcement\", \"Law Practice\", \"Legal Services\", \"Legislative Office\", \"Leisure & Travel\", \"Libraries\", \"Logistics & Supply Chain\", \"Luxury Goods & Jewelry\", \"Machinery\", \"Management Consulting\", \"Maritime\", \"Marketing & Advertising\", \"Market Research\", \"Mechanical or Industrial Engineering\", \"Media Production\", \"Medical Device\", \"Medical Practice\", \"Mental Health Care\", \"Military\", \"Mining & Metals\", \"Motion Pictures & Film\", \"Museums & Institutions\", \"Music\", \"Nanotechnology\", \"Newspapers\", \"Nonprofit Organization Management\", \"Oil & Energy\", \"Online Publishing\", \"Outsourcing/Offshoring\", \"Package/Freight Delivery\", \"Packaging & Containers\", \"Paper & Forest Products\", \"Performing Arts\", \"Pharmaceuticals\", \"Philanthropy\", \"Photography\", \"Plastics\", \"Political Organization\", \"Primary/Secondary\", \"Printing\", \"Professional Training\", \"Program Development\", \"Public Policy\", \"Public Relations\", \"Public Safety\", \"Publishing\", \"Railroad Manufacture\", \"Ranching\", \"Real Estate\", \"Recreational\", \"Facilities & Services\", \"Religious Institutions\", \"Renewables & Environment\", \"Research\", \"Restaurants\", \"Retail\", \"Security & Investigations\", \"Semiconductors\", \"Shipbuilding\", \"Sporting Goods\", \"Sports\", \"Staffing & Recruiting\", \"Supermarkets\", \"Telecommunications\", \"Textiles\", \"Think Tanks\", \"Tobacco\", \"Translation & Localization\", \"Transportation/Trucking/Railroad\", \"Utilities\", \"Venture Capital\", \"Veterinary\", \"Warehousing\", \"Wholesale\", \"Wine & Spirits\", \"Wireless\", \"Writing & Editing\"}\n"
  },
  {
    "path": "pkg/data/last_names.go",
    "content": "package data\n\n// Lastnames is an array of last names\nvar Lastnames = []string{\n\t\"Adams\",\n\t\"Adkins\",\n\t\"Aguilar\",\n\t\"Alexander\",\n\t\"Allen\",\n\t\"Alvarado\",\n\t\"Alvarez\",\n\t\"Anderson\",\n\t\"Andrews\",\n\t\"Armstrong\",\n\t\"Arnold\",\n\t\"Austin\",\n\t\"Bailey\",\n\t\"Baker\",\n\t\"Baldwin\",\n\t\"Ball\",\n\t\"Ballard\",\n\t\"Banks\",\n\t\"Barber\",\n\t\"Barker\",\n\t\"Barnes\",\n\t\"Barnett\",\n\t\"Barrett\",\n\t\"Bates\",\n\t\"Beck\",\n\t\"Becker\",\n\t\"Bell\",\n\t\"Bennett\",\n\t\"Benson\",\n\t\"Berry\",\n\t\"Bishop\",\n\t\"Black\",\n\t\"Blair\",\n\t\"Blake\",\n\t\"Bowen\",\n\t\"Bowman\",\n\t\"Boyd\",\n\t\"Bradley\",\n\t\"Brady\",\n\t\"Brewer\",\n\t\"Briggs\",\n\t\"Brock\",\n\t\"Brooks\",\n\t\"Brown\",\n\t\"Bryant\",\n\t\"Buchanan\",\n\t\"Burgess\",\n\t\"Burke\",\n\t\"Burns\",\n\t\"Burton\",\n\t\"Bush\",\n\t\"Butler\",\n\t\"Byrd\",\n\t\"Caldwell\",\n\t\"Campbell\",\n\t\"Cannon\",\n\t\"Carlson\",\n\t\"Carpenter\",\n\t\"Carr\",\n\t\"Carroll\",\n\t\"Carter\",\n\t\"Castillo\",\n\t\"Castro\",\n\t\"Chambers\",\n\t\"Chandler\",\n\t\"Chapman\",\n\t\"Chavez\",\n\t\"Christensen\",\n\t\"Clark\",\n\t\"Cobb\",\n\t\"Cohen\",\n\t\"Cole\",\n\t\"Coleman\",\n\t\"Collins\",\n\t\"Colon\",\n\t\"Conner\",\n\t\"Cook\",\n\t\"Cooper\",\n\t\"Copeland\",\n\t\"Cox\",\n\t\"Craig\",\n\t\"Crawford\",\n\t\"Cross\",\n\t\"Cruz\",\n\t\"Cummings\",\n\t\"Cunningham\",\n\t\"Curry\",\n\t\"Curtis\",\n\t\"Daniel\",\n\t\"Daniels\",\n\t\"Davidson\",\n\t\"Davis\",\n\t\"Dawson\",\n\t\"Day\",\n\t\"Dean\",\n\t\"Delgado\",\n\t\"Dennis\",\n\t\"Diaz\",\n\t\"Dixon\",\n\t\"Douglas\",\n\t\"Doyle\",\n\t\"Duncan\",\n\t\"Dunn\",\n\t\"Edwards\",\n\t\"Elliott\",\n\t\"Ellis\",\n\t\"Erickson\",\n\t\"Estrada\",\n\t\"Evans\",\n\t\"Farmer\",\n\t\"Ferguson\",\n\t\"Fernandez\",\n\t\"Fields\",\n\t\"Fisher\",\n\t\"Fitzgerald\",\n\t\"Fleming\",\n\t\"Fletcher\",\n\t\"Flores\",\n\t\"Flowers\",\n\t\"Floyd\",\n\t\"Ford\",\n\t\"Foster\",\n\t\"Fowler\",\n\t\"Fox\",\n\t\"Francis\",\n\t\"Frank\",\n\t\"Franklin\",\n\t\"Frazier\",\n\t\"Freeman\",\n\t\"French\",\n\t\"Fuller\",\n\t\"Garcia\",\n\t\"Gardner\",\n\t\"Garner\",\n\t\"Garrett\",\n\t\"Garza\",\n\t\"George\",\n\t\"Gibbs\",\n\t\"Gibson\",\n\t\"Gilbert\",\n\t\"Gill\",\n\t\"Glover\",\n\t\"Gomez\",\n\t\"Gonzales\",\n\t\"Gonzalez\",\n\t\"Goodman\",\n\t\"Goodwin\",\n\t\"Gordon\",\n\t\"Graham\",\n\t\"Grant\",\n\t\"Graves\",\n\t\"Gray\",\n\t\"Green\",\n\t\"Greene\",\n\t\"Greer\",\n\t\"Gregory\",\n\t\"Griffin\",\n\t\"Griffith\",\n\t\"Gross\",\n\t\"Guerrero\",\n\t\"Gutierrez\",\n\t\"Guzman\",\n\t\"Hale\",\n\t\"Hall\",\n\t\"Hamilton\",\n\t\"Hammond\",\n\t\"Hampton\",\n\t\"Hansen\",\n\t\"Hanson\",\n\t\"Hardy\",\n\t\"Harmon\",\n\t\"Harper\",\n\t\"Harris\",\n\t\"Harrison\",\n\t\"Hart\",\n\t\"Harvey\",\n\t\"Hawkins\",\n\t\"Hayes\",\n\t\"Haynes\",\n\t\"Henderson\",\n\t\"Henry\",\n\t\"Hernandez\",\n\t\"Herrera\",\n\t\"Hicks\",\n\t\"Higgins\",\n\t\"Hill\",\n\t\"Hines\",\n\t\"Hodges\",\n\t\"Hoffman\",\n\t\"Holland\",\n\t\"Holloway\",\n\t\"Holmes\",\n\t\"Holt\",\n\t\"Hopkins\",\n\t\"Horton\",\n\t\"Houston\",\n\t\"Howard\",\n\t\"Howell\",\n\t\"Hubbard\",\n\t\"Hudson\",\n\t\"Hughes\",\n\t\"Hunt\",\n\t\"Hunter\",\n\t\"Ingram\",\n\t\"Jackson\",\n\t\"Jacobs\",\n\t\"James\",\n\t\"Jenkins\",\n\t\"Jennings\",\n\t\"Jensen\",\n\t\"Jimenez\",\n\t\"Johnson\",\n\t\"Johnston\",\n\t\"Jones\",\n\t\"Jordan\",\n\t\"Joseph\",\n\t\"Keller\",\n\t\"Kelley\",\n\t\"Kelly\",\n\t\"Kennedy\",\n\t\"Kim\",\n\t\"King\",\n\t\"Klein\",\n\t\"Knight\",\n\t\"Lambert\",\n\t\"Lane\",\n\t\"Larson\",\n\t\"Lawrence\",\n\t\"Lawson\",\n\t\"Lee\",\n\t\"Leonard\",\n\t\"Lewis\",\n\t\"Lindsey\",\n\t\"Little\",\n\t\"Logan\",\n\t\"Long\",\n\t\"Lopez\",\n\t\"Love\",\n\t\"Lowe\",\n\t\"Luca\",\n\t\"Lucas\",\n\t\"Lynch\",\n\t\"Lyons\",\n\t\"Mack\",\n\t\"Maldonado\",\n\t\"Malone\",\n\t\"Mann\",\n\t\"Manning\",\n\t\"Marshall\",\n\t\"Martin\",\n\t\"Martinez\",\n\t\"Mason\",\n\t\"Matthews\",\n\t\"Maxwell\",\n\t\"May\",\n\t\"Mcbride\",\n\t\"Mccarthy\",\n\t\"Mccormick\",\n\t\"Mccoy\",\n\t\"Mcdaniel\",\n\t\"Mcdonald\",\n\t\"Mcgee\",\n\t\"Mckinney\",\n\t\"Mclaughlin\",\n\t\"Medina\",\n\t\"Mendez\",\n\t\"Mendoza\",\n\t\"Meyer\",\n\t\"Miles\",\n\t\"Miller\",\n\t\"Mills\",\n\t\"Mitchell\",\n\t\"Montgomery\",\n\t\"Moody\",\n\t\"Moore\",\n\t\"Morales\",\n\t\"Moran\",\n\t\"Moreno\",\n\t\"Morgan\",\n\t\"Morris\",\n\t\"Morrison\",\n\t\"Moss\",\n\t\"Mullins\",\n\t\"Munoz\",\n\t\"Murphy\",\n\t\"Murray\",\n\t\"Myers\",\n\t\"Neal\",\n\t\"Nelson\",\n\t\"Newman\",\n\t\"Newton\",\n\t\"Nguyen\",\n\t\"Nichols\",\n\t\"Norman\",\n\t\"Norris\",\n\t\"Nunez\",\n\t\"Obrien\",\n\t\"Oliver\",\n\t\"Olson\",\n\t\"Ortega\",\n\t\"Ortiz\",\n\t\"Osborne\",\n\t\"Owen\",\n\t\"Owens\",\n\t\"Padilla\",\n\t\"Page\",\n\t\"Palmer\",\n\t\"Parker\",\n\t\"Parks\",\n\t\"Parsons\",\n\t\"Patterson\",\n\t\"Patton\",\n\t\"Paul\",\n\t\"Payne\",\n\t\"Pearson\",\n\t\"Pena\",\n\t\"Perez\",\n\t\"Perkins\",\n\t\"Perry\",\n\t\"Peters\",\n\t\"Peterson\",\n\t\"Phillips\",\n\t\"Pierce\",\n\t\"Pittman\",\n\t\"Poole\",\n\t\"Pope\",\n\t\"Porter\",\n\t\"Potter\",\n\t\"Powell\",\n\t\"Powers\",\n\t\"Pratt\",\n\t\"Price\",\n\t\"Quinn\",\n\t\"Ramirez\",\n\t\"Ramos\",\n\t\"Ramsey\",\n\t\"Ray\",\n\t\"Reed\",\n\t\"Reese\",\n\t\"Reeves\",\n\t\"Reid\",\n\t\"Reyes\",\n\t\"Reynolds\",\n\t\"Rhodes\",\n\t\"Rice\",\n\t\"Richards\",\n\t\"Richardson\",\n\t\"Riley\",\n\t\"Rios\",\n\t\"Rivera\",\n\t\"Robbins\",\n\t\"Roberts\",\n\t\"Robertson\",\n\t\"Robinson\",\n\t\"Rodgers\",\n\t\"Rodriguez\",\n\t\"Rodriquez\",\n\t\"Rogers\",\n\t\"Romero\",\n\t\"Rose\",\n\t\"Ross\",\n\t\"Rowe\",\n\t\"Roy\",\n\t\"Ruiz\",\n\t\"Russell\",\n\t\"Ryan\",\n\t\"Salazar\",\n\t\"Sanchez\",\n\t\"Sanders\",\n\t\"Sandoval\",\n\t\"Santiago\",\n\t\"Santos\",\n\t\"Saunders\",\n\t\"Schmidt\",\n\t\"Schneider\",\n\t\"Schultz\",\n\t\"Schwartz\",\n\t\"Scott\",\n\t\"Sharp\",\n\t\"Shaw\",\n\t\"Shelton\",\n\t\"Sherman\",\n\t\"Silva\",\n\t\"Simmons\",\n\t\"Simon\",\n\t\"Simpson\",\n\t\"Sims\",\n\t\"Snyder\",\n\t\"Soto\",\n\t\"Spencer\",\n\t\"Stanley\",\n\t\"Steele\",\n\t\"Stephens\",\n\t\"Stevens\",\n\t\"Stevenson\",\n\t\"Stewart\",\n\t\"Stokes\",\n\t\"Stone\",\n\t\"Strickland\",\n\t\"Sullivan\",\n\t\"Sutton\",\n\t\"Swanson\",\n\t\"Tate\",\n\t\"Taylor\",\n\t\"Terry\",\n\t\"Thomas\",\n\t\"Thompson\",\n\t\"Thornton\",\n\t\"Todd\",\n\t\"Torres\",\n\t\"Townsend\",\n\t\"Tucker\",\n\t\"Turner\",\n\t\"Tyler\",\n\t\"Valdez\",\n\t\"Vargas\",\n\t\"Vasquez\",\n\t\"Vaughn\",\n\t\"Vega\",\n\t\"Wade\",\n\t\"Wagner\",\n\t\"Walker\",\n\t\"Wallace\",\n\t\"Walsh\",\n\t\"Walters\",\n\t\"Walton\",\n\t\"Ward\",\n\t\"Warner\",\n\t\"Warren\",\n\t\"Washington\",\n\t\"Waters\",\n\t\"Watkins\",\n\t\"Watson\",\n\t\"Watts\",\n\t\"Weaver\",\n\t\"Webb\",\n\t\"Weber\",\n\t\"Webster\",\n\t\"Welch\",\n\t\"Wells\",\n\t\"West\",\n\t\"Wheeler\",\n\t\"White\",\n\t\"Williams\",\n\t\"Williamson\",\n\t\"Willis\",\n\t\"Wilson\",\n\t\"Wise\",\n\t\"Wolfe\",\n\t\"Wood\",\n\t\"Woods\",\n\t\"Wright\",\n\t\"Yates\",\n\t\"Young\",\n\t\"Zimmerman\",\n}\n"
  },
  {
    "path": "pkg/data/nationalities.go",
    "content": "package data\n\nvar Nationalities = []string{\"Afghan\", \"Albanian\", \"Algerian\", \"American\", \"Andorran\", \"Angolan\", \"Anguillan\", \"Citizen of Antigua and Barbuda\", \"Argentine\", \"Armenian\", \"Australian\", \"Austrian\", \"Azerbaijani\", \"Bahamian\", \"Bahraini\", \"Bangladeshi\", \"Barbadian\", \"Belarusian\", \"Belgian\", \"Belizean\", \"Beninese\", \"Bermudian\", \"Bhutanese\", \"Bolivian\", \"Citizen of Bosnia and Herzegovina\", \"Botswanan\", \"Brazilian\", \"British\", \"British Virgin Islander\", \"Bruneian\", \"Bulgarian\", \"Burkinan\", \"Burmese\", \"Burundian\", \"Cambodian\", \"Cameroonian\", \"Canadian\", \"Cape Verdean\", \"Cayman Islander\", \"Central African\", \"Chadian\", \"Chilean\", \"Chinese\", \"Colombian\", \"Comoran\", \"Congolese (Congo)\", \"Congolese (DRC)\", \"Cook Islander\", \"Costa Rican\", \"Croatian\", \"Cuban\", \"Cymraes\", \"Cymro\", \"Cypriot\", \"Czech\", \"Danish\", \"Djiboutian\", \"Dominican\", \"Citizen of the Dominican Republic\", \"Dutch\", \"East Timorese\", \"Ecuadorean\", \"Egyptian\", \"Emirati\", \"English\", \"Equatorial Guinean\", \"Eritrean\", \"Estonian\", \"Ethiopian\", \"Faroese\", \"Fijian\", \"Filipino\", \"Finnish\", \"French\", \"Gabonese\", \"Gambian\", \"Georgian\", \"German\", \"Ghanaian\", \"Gibraltarian\", \"Greek\", \"Greenlandic\", \"Grenadian\", \"Guamanian\", \"Guatemalan\", \"Citizen of Guinea-Bissau\", \"Guinean\", \"Guyanese\", \"Haitian\", \"Honduran\", \"Hong Konger\", \"Hungarian\", \"Icelandic\", \"Indian\", \"Indonesian\", \"Iranian\", \"Iraqi\", \"Irish\", \"Israeli\", \"Italian\", \"Ivorian\", \"Jamaican\", \"Japanese\", \"Jordanian\", \"Kazakh\", \"Kenyan\", \"Kittitian\", \"Citizen of Kiribati\", \"Kosovan\", \"Kuwaiti\", \"Kyrgyz\", \"Lao\", \"Latvian\", \"Lebanese\", \"Liberian\", \"Libyan\", \"Liechtenstein citizen\", \"Lithuanian\", \"Luxembourger\", \"Macanese\", \"Macedonian\", \"Malagasy\", \"Malawian\", \"Malaysian\", \"Maldivian\", \"Malian\", \"Maltese\", \"Marshallese\", \"Martiniquais\", \"Mauritanian\", \"Mauritian\", \"Mexican\", \"Micronesian\", \"Moldovan\", \"Monegasque\", \"Mongolian\", \"Montenegrin\", \"Montserratian\", \"Moroccan\", \"Mosotho\", \"Mozambican\", \"Namibian\", \"Nauruan\", \"Nepalese\", \"New Zealander\", \"Nicaraguan\", \"Nigerian\", \"Nigerien\", \"Niuean\", \"North Korean\", \"Northern Irish\", \"Norwegian\", \"Omani\", \"Pakistani\", \"Palauan\", \"Palestinian\", \"Panamanian\", \"Papua New Guinean\", \"Paraguayan\", \"Peruvian\", \"Pitcairn Islander\", \"Polish\", \"Portuguese\", \"Prydeinig\", \"Puerto Rican\", \"Qatari\", \"Romanian\", \"Russian\", \"Rwandan\", \"Salvadorean\", \"Sammarinese\", \"Samoan\", \"Sao Tomean\", \"Saudi Arabian\", \"Scottish\", \"Senegalese\", \"Serbian\", \"Citizen of Seychelles\", \"Sierra Leonean\", \"Singaporean\", \"Slovak\", \"Slovenian\", \"Solomon Islander\", \"Somali\", \"South African\", \"South Korean\", \"South Sudanese\", \"Spanish\", \"Sri Lankan\", \"St Helenian\", \"St Lucian\", \"Stateless\", \"Sudanese\", \"Surinamese\", \"Swazi\", \"Swedish\", \"Swiss\", \"Syrian\", \"Taiwanese\", \"Tajik\", \"Tanzanian\", \"Thai\", \"Togolese\", \"Tongan\", \"Trinidadian\", \"Tristanian\", \"Tunisian\", \"Turkish\", \"Turkmen\", \"Turks and Caicos Islander\", \"Tuvaluan\", \"Ugandan\", \"Ukrainian\", \"Uruguayan\", \"Uzbek\", \"Vatican citizen\", \"Citizen of Vanuatu\", \"Venezuelan\", \"Vietnamese\", \"Vincentian\", \"Wallisian\", \"Welsh\", \"Yemeni\", \"Zambian\", \"Zimbabwean\"}\n"
  },
  {
    "path": "pkg/data/nouns.go",
    "content": "package data\n\nvar Nouns = []string{\"Armour\", \"Barrymore\", \"Cabot\", \"Catholicism\", \"Chihuahua\", \"Christianity\", \"Easter\", \"Frenchman\", \"Lowry\", \"Mayer\", \"Orientalism\", \"Pharaoh\", \"Pueblo\", \"Pullman\", \"Rodeo\", \"Saturday\", \"Sister\", \"Snead\", \"Syrah\", \"Tuesday\", \"Woodward\", \"abbey\", \"absence\", \"absorption\", \"abstinence\", \"absurdity\", \"abundance\", \"acceptance\", \"accessibility\", \"accommodation\", \"accomplice\", \"accountability\", \"accounting\", \"accreditation\", \"accuracy\", \"acquiescence\", \"acreage\", \"actress\", \"actuality\", \"adage\", \"adaptation\", \"adherence\", \"adjustment\", \"adoption\", \"adultery\", \"advancement\", \"advert\", \"advertisement\", \"advertising\", \"advice\", \"aesthetics\", \"affinity\", \"aggression\", \"agriculture\", \"aircraft\", \"airtime\", \"allegation\", \"allegiance\", \"allegory\", \"allergy\", \"allies\", \"alligator\", \"allocation\", \"allotment\", \"altercation\", \"ambulance\", \"ammonia\", \"anatomy\", \"anemia\", \"ankle\", \"announcement\", \"annoyance\", \"annuity\", \"anomaly\", \"anthropology\", \"anxiety\", \"apartheid\", \"apologise\", \"apostle\", \"apparatus\", \"appeasement\", \"appellation\", \"appendix\", \"applause\", \"appointment\", \"appraisal\", \"archery\", \"archipelago\", \"architecture\", \"ardor\", \"arrears\", \"arrow\", \"artisan\", \"artistry\", \"ascent\", \"assembly\", \"assignment\", \"association\", \"asthma\", \"atheism\", \"attacker\", \"attraction\", \"attractiveness\", \"auspices\", \"authority\", \"avarice\", \"aversion\", \"aviation\", \"babbling\", \"backlash\", \"baker\", \"ballet\", \"balls\", \"banjo\", \"baron\", \"barrier\", \"barrister\", \"bases\", \"basin\", \"basis\", \"battery\", \"battling\", \"bedtime\", \"beginner\", \"begun\", \"bending\", \"bicycle\", \"billing\", \"bingo\", \"biography\", \"biology\", \"birthplace\", \"blackberry\", \"blather\", \"blossom\", \"boardroom\", \"boasting\", \"bodyguard\", \"boldness\", \"bomber\", \"bondage\", \"bonding\", \"bones\", \"bonus\", \"bookmark\", \"boomer\", \"booty\", \"bounds\", \"bowling\", \"brainstorming\", \"breadth\", \"breaker\", \"brewer\", \"brightness\", \"broccoli\", \"broth\", \"brotherhood\", \"browsing\", \"brunch\", \"brunt\", \"building\", \"bullion\", \"bureaucracy\", \"burglary\", \"buyout\", \"by-election\", \"cabal\", \"cabbage\", \"calamity\", \"campaign\", \"canonization\", \"captaincy\", \"carcass\", \"carrier\", \"cartridge\", \"cassette\", \"catfish\", \"caught\", \"celebrity\", \"cemetery\", \"certainty\", \"certification\", \"charade\", \"chasm\", \"check-in\", \"cheerleader\", \"cheesecake\", \"chemotherapy\", \"chili\", \"china\", \"chivalry\", \"cholera\", \"cilantro\", \"circus\", \"civilisation\", \"civility\", \"clearance\", \"clearing\", \"clerk\", \"climber\", \"closeness\", \"clothing\", \"clutches\", \"coaster\", \"coconut\", \"coding\", \"collaborator\", \"colleague\", \"college\", \"collision\", \"colors\", \"combustion\", \"comedian\", \"comer\", \"commander\", \"commemoration\", \"commenter\", \"commissioner\", \"commune\", \"competition\", \"completeness\", \"complexity\", \"computing\", \"comrade\", \"concur\", \"condominium\", \"conduit\", \"confidant\", \"configuration\", \"confiscation\", \"conflagration\", \"conflict\", \"consist\", \"consistency\", \"consolidation\", \"conspiracy\", \"constable\", \"consul\", \"consultancy\", \"contentment\", \"contents\", \"contractor\", \"conversation\", \"cornerstone\", \"corpus\", \"correlation\", \"councilman\", \"counselor\", \"countdown\", \"countryman\", \"coverage\", \"covering\", \"coyote\", \"cracker\", \"creator\", \"criminality\", \"crocodile\", \"cropping\", \"cross-examination\", \"crossover\", \"crossroads\", \"culprit\", \"cumin\", \"curator\", \"curfew\", \"cursor\", \"custard\", \"cutter\", \"cyclist\", \"cyclone\", \"cylinder\", \"cynicism\", \"daddy\", \"damsel\", \"darkness\", \"dawning\", \"daybreak\", \"dealing\", \"dedication\", \"deduction\", \"defection\", \"deference\", \"deficiency\", \"definition\", \"deflation\", \"degeneration\", \"delegation\", \"delicacy\", \"delirium\", \"deliverance\", \"demeanor\", \"demon\", \"demonstration\", \"denomination\", \"dentist\", \"departure\", \"depletion\", \"depression\", \"designation\", \"despotism\", \"detention\", \"developer\", \"devolution\", \"dexterity\", \"diagnosis\", \"dialect\", \"differentiation\", \"digger\", \"digress\", \"dioxide\", \"diploma\", \"disability\", \"disarmament\", \"discord\", \"discovery\", \"dishonesty\", \"dismissal\", \"disobedience\", \"dispatcher\", \"disservice\", \"distribution\", \"distributor\", \"diver\", \"diversity\", \"docking\", \"dollar\", \"dominance\", \"domination\", \"dominion\", \"donkey\", \"doorstep\", \"doorway\", \"dossier\", \"downside\", \"drafting\", \"drank\", \"drilling\", \"driver\", \"drumming\", \"drunkenness\", \"duchess\", \"ducking\", \"dugout\", \"dumps\", \"dwelling\", \"dynamics\", \"eagerness\", \"earnestness\", \"earnings\", \"eater\", \"editor\", \"effectiveness\", \"electricity\", \"elements\", \"eloquence\", \"emancipation\", \"embodiment\", \"embroidery\", \"emperor\", \"employment\", \"encampment\", \"enclosure\", \"encouragement\", \"endangerment\", \"enlightenment\", \"enthusiasm\", \"environment\", \"environs\", \"envoy\", \"epilepsy\", \"equation\", \"equator\", \"error\", \"espionage\", \"estimation\", \"evacuation\", \"exaggeration\", \"examination\", \"exclamation\", \"expediency\", \"exploitation\", \"extinction\", \"eyewitness\", \"falls\", \"fascism\", \"fastball\", \"feces\", \"feedback\", \"ferocity\", \"fertilization\", \"fetish\", \"finale\", \"firing\", \"fixing\", \"flashing\", \"flask\", \"flora\", \"fluke\", \"folklore\", \"follower\", \"foothold\", \"footing\", \"forefinger\", \"forefront\", \"forgiveness\", \"formality\", \"formation\", \"formula\", \"foyer\", \"fragmentation\", \"framework\", \"fraud\", \"freestyle\", \"frequency\", \"friendliness\", \"fries\", \"frigate\", \"fulfillment\", \"function\", \"functionality\", \"fundraiser\", \"fusion\", \"futility\", \"gallantry\", \"gallery\", \"genesis\", \"genitals\", \"girlfriend\", \"glamour\", \"glitter\", \"glucose\", \"google\", \"grandeur\", \"grappling\", \"greens\", \"gridlock\", \"grocer\", \"groundwork\", \"grouping\", \"gunman\", \"gusto\", \"habitation\", \"hacker\", \"hallway\", \"hamburger\", \"hammock\", \"handling\", \"hands\", \"handshake\", \"happiness\", \"hardship\", \"headcount\", \"header\", \"headquarters\", \"heads\", \"headset\", \"hearth\", \"hearts\", \"heath\", \"hegemony\", \"height\", \"hello\", \"helper\", \"helping\", \"helplessness\", \"hierarchy\", \"hoarding\", \"hockey\", \"homeland\", \"homer\", \"honesty\", \"horror\", \"horseman\", \"hostility\", \"housing\", \"humility\", \"hurricane\", \"iceberg\", \"ignition\", \"illness\", \"illustration\", \"illustrator\", \"immunity\", \"immunization\", \"imperialism\", \"imprisonment\", \"inaccuracy\", \"inaction\", \"inactivity\", \"inauguration\", \"indecency\", \"indicator\", \"inevitability\", \"infamy\", \"infiltration\", \"influx\", \"iniquity\", \"innocence\", \"innovation\", \"insanity\", \"inspiration\", \"instruction\", \"instructor\", \"insurer\", \"interact\", \"intercession\", \"intercourse\", \"intermission\", \"interpretation\", \"intersection\", \"interval\", \"intolerance\", \"intruder\", \"invasion\", \"investment\", \"involvement\", \"irrigation\", \"iteration\", \"jenny\", \"jogging\", \"jones\", \"joseph\", \"juggernaut\", \"juncture\", \"jurisprudence\", \"juror\", \"kangaroo\", \"kingdom\", \"knocking\", \"laborer\", \"larceny\", \"laurels\", \"layout\", \"leadership\", \"leasing\", \"legislation\", \"leopard\", \"liberation\", \"licence\", \"lifeblood\", \"lifeline\", \"ligament\", \"lighting\", \"likeness\", \"line-up\", \"lineage\", \"liner\", \"lineup\", \"liquidation\", \"listener\", \"literature\", \"litigation\", \"litre\", \"loathing\", \"locality\", \"lodging\", \"logic\", \"longevity\", \"lookout\", \"lordship\", \"lustre\", \"ma'am\", \"machinery\", \"madness\", \"magnificence\", \"mahogany\", \"mailing\", \"mainframe\", \"maintenance\", \"majority\", \"manga\", \"mango\", \"manifesto\", \"mantra\", \"manufacturer\", \"maple\", \"martin\", \"martyrdom\", \"mathematician\", \"matrix\", \"matron\", \"mayhem\", \"mayor\", \"means\", \"meantime\", \"measurement\", \"mechanics\", \"mediator\", \"medics\", \"melodrama\", \"memory\", \"mentality\", \"metaphysics\", \"method\", \"metre\", \"miner\", \"mirth\", \"misconception\", \"misery\", \"mishap\", \"misunderstanding\", \"mobility\", \"molasses\", \"momentum\", \"monarchy\", \"monument\", \"morale\", \"mortality\", \"motto\", \"mouthful\", \"mouthpiece\", \"mover\", \"movie\", \"mowing\", \"murderer\", \"musician\", \"mutation\", \"mythology\", \"narration\", \"narrator\", \"nationality\", \"negligence\", \"neighborhood\", \"neighbour\", \"nervousness\", \"networking\", \"nexus\", \"nightmare\", \"nobility\", \"nobody\", \"noodle\", \"normalcy\", \"notification\", \"nourishment\", \"novella\", \"nucleus\", \"nuisance\", \"nursery\", \"nutrition\", \"nylon\", \"oasis\", \"obscenity\", \"obscurity\", \"observer\", \"offense\", \"onslaught\", \"operation\", \"opportunity\", \"opposition\", \"oracle\", \"orchestra\", \"organisation\", \"organizer\", \"orientation\", \"originality\", \"ounce\", \"outage\", \"outcome\", \"outdoors\", \"outfield\", \"outing\", \"outpost\", \"outset\", \"overseer\", \"owner\", \"oxygen\", \"pairing\", \"panther\", \"paradox\", \"parliament\", \"parsley\", \"parson\", \"passenger\", \"pasta\", \"patchwork\", \"pathos\", \"patriotism\", \"pendulum\", \"penguin\", \"permission\", \"persona\", \"perusal\", \"pessimism\", \"peter\", \"philosopher\", \"phosphorus\", \"phrasing\", \"physique\", \"piles\", \"plateau\", \"playing\", \"plaza\", \"plethora\", \"plurality\", \"pneumonia\", \"pointer\", \"poker\", \"policeman\", \"polling\", \"poster\", \"posterity\", \"posting\", \"postponement\", \"potassium\", \"pottery\", \"poultry\", \"pounding\", \"pragmatism\", \"precedence\", \"precinct\", \"preoccupation\", \"pretense\", \"priesthood\", \"prisoner\", \"privacy\", \"probation\", \"proceeding\", \"proceedings\", \"processing\", \"processor\", \"progression\", \"projection\", \"prominence\", \"propensity\", \"prophecy\", \"prorogation\", \"prospectus\", \"protein\", \"prototype\", \"providence\", \"provider\", \"provocation\", \"proximity\", \"puberty\", \"publicist\", \"publicity\", \"publisher\", \"pundit\", \"putting\", \"quantity\", \"quart\", \"quilting\", \"quorum\", \"racism\", \"radiance\", \"ralph\", \"rancher\", \"ranger\", \"rapidity\", \"rapport\", \"ratification\", \"rationality\", \"reaction\", \"reader\", \"reassurance\", \"rebirth\", \"receptor\", \"recipe\", \"recognition\", \"recourse\", \"recreation\", \"rector\", \"recurrence\", \"redemption\", \"redistribution\", \"redundancy\", \"refinery\", \"reformer\", \"refrigerator\", \"regularity\", \"regulator\", \"reinforcement\", \"reins\", \"reinstatement\", \"relativism\", \"relaxation\", \"rendition\", \"repayment\", \"repentance\", \"repertoire\", \"repository\", \"republic\", \"reputation\", \"resentment\", \"residency\", \"resignation\", \"restaurant\", \"resurgence\", \"retailer\", \"retention\", \"retirement\", \"reviewer\", \"riches\", \"righteousness\", \"roadblock\", \"robber\", \"rocks\", \"rubbing\", \"runoff\", \"saloon\", \"salvation\", \"sarcasm\", \"saucer\", \"savior\", \"scarcity\", \"scenario\", \"scenery\", \"schism\", \"scholarship\", \"schoolboy\", \"schooner\", \"scissors\", \"scolding\", \"scooter\", \"scouring\", \"scrimmage\", \"scrum\", \"seating\", \"sediment\", \"seduction\", \"seeder\", \"seizure\", \"self-confidence\", \"self-control\", \"self-respect\", \"semicolon\", \"semiconductor\", \"semifinal\", \"senator\", \"sending\", \"serenity\", \"seriousness\", \"servitude\", \"sesame\", \"setup\", \"sewing\", \"sharpness\", \"shaving\", \"shoplifting\", \"shopping\", \"siding\", \"simplicity\", \"simulation\", \"sinking\", \"skate\", \"sloth\", \"slugger\", \"snack\", \"snail\", \"snapshot\", \"snark\", \"soccer\", \"solemnity\", \"solicitation\", \"solitude\", \"somewhere\", \"sophistication\", \"sorcery\", \"souvenir\", \"spaghetti\", \"specification\", \"specimen\", \"specs\", \"spectacle\", \"spectre\", \"speculation\", \"sperm\", \"spoiler\", \"squad\", \"squid\", \"staging\", \"stagnation\", \"staircase\", \"stairway\", \"stamina\", \"standpoint\", \"standstill\", \"stanza\", \"statement\", \"stillness\", \"stimulus\", \"stocks\", \"stole\", \"stoppage\", \"storey\", \"storyteller\", \"stylus\", \"subcommittee\", \"subscription\", \"subsidy\", \"suburb\", \"success\", \"sufferer\", \"supposition\", \"suspension\", \"sweater\", \"sweepstakes\", \"swimmer\", \"syndrome\", \"synopsis\", \"syntax\", \"system\", \"tablespoon\", \"taker\", \"tavern\", \"technology\", \"telephony\", \"template\", \"tempo\", \"tendency\", \"tendon\", \"terrier\", \"terror\", \"terry\", \"theater\", \"theology\", \"therapy\", \"thicket\", \"thoroughfare\", \"threshold\", \"thriller\", \"thunderstorm\", \"ticker\", \"tiger\", \"tights\", \"to-day\", \"tossing\", \"touchdown\", \"tourist\", \"tourney\", \"toxicity\", \"tracing\", \"tractor\", \"translation\", \"transmission\", \"transmitter\", \"trauma\", \"traveler\", \"treadmill\", \"trilogy\", \"trout\", \"tuning\", \"twenties\", \"tycoon\", \"tyrant\", \"ultimatum\", \"underdog\", \"underwear\", \"unhappiness\", \"unification\", \"university\", \"uprising\", \"vaccination\", \"validity\", \"vampire\", \"vanguard\", \"variation\", \"vegetation\", \"verification\", \"viability\", \"vicinity\", \"victory\", \"viewpoint\", \"villa\", \"vindication\", \"violation\", \"vista\", \"vocalist\", \"vogue\", \"volcano\", \"voltage\", \"vomiting\", \"vulnerability\", \"waistcoat\", \"waitress\", \"wardrobe\", \"warmth\", \"watchdog\", \"wealth\", \"weariness\", \"whereabouts\", \"whisky\", \"whiteness\", \"widget\", \"width\", \"windfall\", \"wiring\", \"witchcraft\", \"withholding\", \"womanhood\", \"words\", \"workman\", \"youngster\"}\n"
  },
  {
    "path": "pkg/data/occupations.go",
    "content": "package data\n\nvar Occupations = []string{\"accountant\", \"actor\", \"actuary\", \"adhesive bonding machine tender\", \"adjudicator\", \"administrative assistant\", \"administrative services manager\", \"adult education teacher\", \"advertising manager\", \"advertising sales agent\", \"aerobics instructor\", \"aerospace engineer\", \"aerospace engineering technician\", \"agent\", \"agricultural engineer\", \"agricultural equipment operator\", \"agricultural grader\", \"agricultural inspector\", \"agricultural manager\", \"agricultural sciences teacher\", \"agricultural sorter\", \"agricultural technician\", \"agricultural worker\", \"air conditioning installer\", \"air conditioning mechanic\", \"air traffic controller\", \"aircraft cargo handling supervisor\", \"aircraft mechanic\", \"aircraft service technician\", \"airline copilot\", \"airline pilot\", \"ambulance dispatcher\", \"ambulance driver\", \"amusement machine servicer\", \"anesthesiologist\", \"animal breeder\", \"animal control worker\", \"animal scientist\", \"animal trainer\", \"animator\", \"answering service operator\", \"anthropologist\", \"apparel patternmaker\", \"apparel worker\", \"arbitrator\", \"archeologist\", \"architect\", \"architectural drafter\", \"architectural manager\", \"archivist\", \"art director\", \"art teacher\", \"artist\", \"assembler\", \"astronomer\", \"athlete\", \"athletic trainer\", \"ATM machine repairer\", \"atmospheric scientist\", \"attendant\", \"audio and video equipment technician\", \"audio-visual and multimedia collections specialist\", \"audiologist\", \"auditor\", \"author\", \"auto damage insurance appraiser\", \"automotive and watercraft service attendant\", \"automotive glass installer\", \"automotive mechanic\", \"avionics technician\", \"back-end developer\", \"baggage porter\", \"bailiff\", \"baker\", \"barback\", \"barber\", \"bartender\", \"basic education teacher\", \"behavioral disorder counselor\", \"bellhop\", \"bench carpenter\", \"bicycle repairer\", \"bill and account collector\", \"billing and posting clerk\", \"biochemist\", \"biological technician\", \"biomedical engineer\", \"biophysicist\", \"blaster\", \"blending machine operator\", \"blockmason\", \"boiler operator\", \"boilermaker\", \"bookkeeper\", \"boring machine tool tender\", \"brazer\", \"brickmason\", \"bridge and lock tender\", \"broadcast news analyst\", \"broadcast technician\", \"brokerage clerk\", \"budget analyst\", \"building inspector\", \"bus mechanic\", \"butcher\", \"buyer\", \"cabinetmaker\", \"cafeteria attendant\", \"cafeteria cook\", \"camera operator\", \"camera repairer\", \"cardiovascular technician\", \"cargo agent\", \"carpenter\", \"carpet installer\", \"cartographer\", \"cashier\", \"caster\", \"ceiling tile installer\", \"cellular equipment installer\", \"cement mason\", \"channeling machine operator\", \"chauffeur\", \"checker\", \"chef\", \"chemical engineer\", \"chemical plant operator\", \"chemist\", \"chemistry teacher\", \"chief executive\", \"child social worker\", \"childcare worker\", \"chiropractor\", \"choreographer\", \"civil drafter\", \"civil engineer\", \"civil engineering technician\", \"claims adjuster\", \"claims examiner\", \"claims investigator\", \"cleaner\", \"clinical laboratory technician\", \"clinical laboratory technologist\", \"clinical psychologist\", \"coating worker\", \"coatroom attendant\", \"coil finisher\", \"coil taper\", \"coil winder\", \"coin machine servicer\", \"commercial diver\", \"commercial pilot\", \"commodities sales agent\", \"communications equipment operator\", \"communications teacher\", \"community association manager\", \"community service manager\", \"compensation and benefits manager\", \"compliance officer\", \"composer\", \"computer hardware engineer\", \"computer network architect\", \"computer operator\", \"computer programmer\", \"computer science teacher\", \"computer support specialist\", \"computer systems administrator\", \"computer systems analyst\", \"concierge\", \"conciliator\", \"concrete finisher\", \"conservation science teacher\", \"conservation scientist\", \"conservation worker\", \"conservator\", \"construction inspector\", \"construction manager\", \"construction painter\", \"construction worker\", \"continuous mining machine operator\", \"convention planner\", \"conveyor operator\", \"cook\", \"cooling equipment operator\", \"copy marker\", \"correctional officer\", \"correctional treatment specialist\", \"correspondence clerk\", \"correspondent\", \"cosmetologist\", \"cost estimator\", \"costume attendant\", \"counseling psychologist\", \"counselor\", \"courier\", \"court reporter\", \"craft artist\", \"crane operator\", \"credit analyst\", \"credit checker\", \"credit counselor\", \"criminal investigator\", \"criminal justice teacher\", \"crossing guard\", \"curator\", \"custom sewer\", \"customer service representative\", \"cutter\", \"cutting machine operator\", \"dancer\", \"data entry keyer\", \"database administrator\", \"decorating worker\", \"delivery services driver\", \"demonstrator\", \"dental assistant\", \"dental hygienist\", \"dental laboratory technician\", \"dentist\", \"dermatologist\", \"derrick operator\", \"designer\", \"desktop publisher\", \"detective\", \"developer\", \"diagnostic medical sonographer\", \"die maker\", \"diesel engine specialist\", \"dietetic technician\", \"dietitian\", \"dinkey operator\", \"director\", \"dishwasher\", \"dispatcher\", \"DJ\", \"doctor\", \"door-to-door sales worker\", \"drafter\", \"dragline operator\", \"drama teacher\", \"dredge operator\", \"dressing room attendant\", \"dressmaker\", \"drier operator\", \"drilling machine tool operator\", \"dry-cleaning worker\", \"drywall installer\", \"dyeing machine operator\", \"earth driller\", \"economics teacher\", \"economist\", \"editor\", \"education administrator\", \"electric motor repairer\", \"electrical electronics drafter\", \"electrical engineer\", \"electrical equipment assembler\", \"electrical installer\", \"electrical power-line installer\", \"electrician\", \"electro-mechanical technician\", \"elementary school teacher\", \"elevator installer\", \"elevator repairer\", \"embalmer\", \"emergency management director\", \"emergency medical technician\", \"engine assembler\", \"engineer\", \"engineering manager\", \"engineering teacher\", \"english language teacher\", \"engraver\", \"entertainment attendant\", \"environmental engineer\", \"environmental science teacher\", \"environmental scientist\", \"epidemiologist\", \"escort\", \"etcher\", \"event planner\", \"excavating operator\", \"executive administrative assistant\", \"executive secretary\", \"exhibit designer\", \"expediting clerk\", \"explosives worker\", \"extraction worker\", \"fabric mender\", \"fabric patternmaker\", \"fabricator\", \"faller\", \"family practitioner\", \"family social worker\", \"family therapist\", \"farm advisor\", \"farm equipment mechanic\", \"farm labor contractor\", \"farmer\", \"farmworker\", \"fashion designer\", \"fast food cook\", \"fence erector\", \"fiberglass fabricator\", \"fiberglass laminator\", \"file clerk\", \"filling machine operator\", \"film and video editor\", \"financial analyst\", \"financial examiner\", \"financial manager\", \"financial services sales agent\", \"fine artist\", \"fire alarm system installer\", \"fire dispatcher\", \"fire inspector\", \"fire investigator\", \"firefighter\", \"fish and game warden\", \"fish cutter\", \"fish trimmer\", \"fisher\", \"fitness studies teacher\", \"fitness trainer\", \"flight attendant\", \"floor finisher\", \"floor layer\", \"floor sander\", \"floral designer\", \"food batchmaker\", \"food cooking machine operator\", \"food preparation worker\", \"food science technician\", \"food scientist\", \"food server\", \"food service manager\", \"food technologist\", \"foreign language teacher\", \"foreign literature teacher\", \"forensic science technician\", \"forest fire inspector\", \"forest fire prevention specialist\", \"forest worker\", \"forester\", \"forestry teacher\", \"forging machine setter\", \"foundry coremaker\", \"freight agent\", \"freight mover\", \"front-end developer\", \"fundraising manager\", \"funeral attendant\", \"funeral director\", \"funeral service manager\", \"furnace operator\", \"furnishings worker\", \"furniture finisher\", \"gaming booth cashier\", \"gaming cage worker\", \"gaming change person\", \"gaming dealer\", \"gaming investigator\", \"gaming manager\", \"gaming surveillance officer\", \"garment mender\", \"garment presser\", \"gas compressor\", \"gas plant operator\", \"gas pumping station operator\", \"general manager\", \"general practitioner\", \"geographer\", \"geography teacher\", \"geological engineer\", \"geological technician\", \"geoscientist\", \"glazier\", \"government program eligibility interviewer\", \"graduate teaching assistant\", \"graphic designer\", \"groundskeeper\", \"groundskeeping worker\", \"gynecologist\", \"hairdresser\", \"hairstylist\", \"hand grinding worker\", \"hand laborer\", \"hand packager\", \"hand packer\", \"hand polishing worker\", \"hand sewer\", \"hazardous materials removal worker\", \"head cook\", \"health and safety engineer\", \"health educator\", \"health information technician\", \"health services manager\", \"health specialties teacher\", \"healthcare social worker\", \"hearing officer\", \"heat treating equipment setter\", \"heating installer\", \"heating mechanic\", \"heavy truck driver\", \"highway maintenance worker\", \"historian\", \"history teacher\", \"hoist and winch operator\", \"home appliance repairer\", \"home economics teacher\", \"home entertainment installer\", \"home health aide\", \"home management advisor\", \"host\", \"hostess\", \"hostler\", \"hotel desk clerk\", \"housekeeping cleaner\", \"human resources assistant\", \"human resources manager\", \"human service assistant\", \"hunter\", \"hydrologist\", \"illustrator\", \"industrial designer\", \"industrial engineer\", \"industrial engineering technician\", \"industrial machinery mechanic\", \"industrial production manager\", \"industrial truck operator\", \"industrial-organizational psychologist\", \"information clerk\", \"information research scientist\", \"information security analyst\", \"information systems manager\", \"inspector\", \"instructional coordinator\", \"instructor\", \"insulation worker\", \"insurance claims clerk\", \"insurance sales agent\", \"insurance underwriter\", \"intercity bus driver\", \"interior designer\", \"internist\", \"interpreter\", \"interviewer\", \"investigator\", \"jailer\", \"janitor\", \"jeweler\", \"judge\", \"judicial law clerk\", \"kettle operator\", \"kiln operator\", \"kindergarten teacher\", \"laboratory animal caretaker\", \"landscape architect\", \"landscaping worker\", \"lathe setter\", \"laundry worker\", \"law enforcement teacher\", \"law teacher\", \"lawyer\", \"layout worker\", \"leather worker\", \"legal assistant\", \"legal secretary\", \"legislator\", \"librarian\", \"library assistant\", \"library science teacher\", \"library technician\", \"licensed practical nurse\", \"licensed vocational nurse\", \"life scientist\", \"lifeguard\", \"light truck driver\", \"line installer\", \"literacy teacher\", \"literature teacher\", \"loading machine operator\", \"loan clerk\", \"loan interviewer\", \"loan officer\", \"lobby attendant\", \"locker room attendant\", \"locksmith\", \"locomotive engineer\", \"locomotive firer\", \"lodging manager\", \"log grader\", \"logging equipment operator\", \"logistician\", \"machine feeder\", \"machinist\", \"magistrate judge\", \"magistrate\", \"maid\", \"mail clerk\", \"mail machine operator\", \"mail superintendent\", \"maintenance painter\", \"maintenance worker\", \"makeup artist\", \"management analyst\", \"manicurist\", \"manufactured building installer\", \"mapping technician\", \"marble setter\", \"marine engineer\", \"marine oiler\", \"market research analyst\", \"marketing manager\", \"marketing specialist\", \"marriage therapist\", \"massage therapist\", \"material mover\", \"materials engineer\", \"materials scientist\", \"mathematical science teacher\", \"mathematical technician\", \"mathematician\", \"maxillofacial surgeon\", \"measurer\", \"meat cutter\", \"meat packer\", \"meat trimmer\", \"mechanical door repairer\", \"mechanical drafter\", \"mechanical engineer\", \"mechanical engineering technician\", \"mediator\", \"medical appliance technician\", \"medical assistant\", \"medical equipment preparer\", \"medical equipment repairer\", \"medical laboratory technician\", \"medical laboratory technologist\", \"medical records technician\", \"medical scientist\", \"medical secretary\", \"medical services manager\", \"medical transcriptionist\", \"meeting planner\", \"mental health counselor\", \"mental health social worker\", \"merchandise displayer\", \"messenger\", \"metal caster\", \"metal patternmaker\", \"metal pickling operator\", \"metal pourer\", \"metal worker\", \"metal-refining furnace operator\", \"metal-refining furnace tender\", \"meter reader\", \"microbiologist\", \"middle school teacher\", \"milling machine setter\", \"millwright\", \"mine cutting machine operator\", \"mine shuttle car operator\", \"mining engineer\", \"mining safety engineer\", \"mining safety inspector\", \"mining service unit operator\", \"mixing machine setter\", \"mobile heavy equipment mechanic\", \"mobile home installer\", \"model maker\", \"model\", \"molder\", \"mortician\", \"motel desk clerk\", \"motion picture projectionist\", \"motorboat mechanic\", \"motorboat operator\", \"motorboat service technician\", \"motorcycle mechanic\", \"movers\", \"multimedia artist\", \"museum technician\", \"music director\", \"music teacher\", \"musical instrument repairer\", \"musician\", \"natural sciences manager\", \"naval architect\", \"network systems administrator\", \"new accounts clerk\", \"news vendor\", \"nonfarm animal caretaker\", \"nuclear engineer\", \"nuclear medicine technologist\", \"nuclear power reactor operator\", \"nuclear technician\", \"nursing aide\", \"nursing instructor\", \"nursing teacher\", \"nutritionist\", \"obstetrician\", \"occupational health and safety specialist\", \"occupational health and safety technician\", \"occupational therapist\", \"occupational therapy aide\", \"occupational therapy assistant\", \"offbearer\", \"office clerk\", \"office machine operator\", \"operating engineer\", \"operations manager\", \"operations research analyst\", \"ophthalmic laboratory technician\", \"optician\", \"optometrist\", \"oral surgeon\", \"order clerk\", \"order filler\", \"orderly\", \"ordnance handling expert\", \"orthodontist\", \"orthotist\", \"outdoor power equipment mechanic\", \"oven operator\", \"packaging machine operator\", \"painter \", \"painting worker\", \"paper goods machine setter\", \"paperhanger\", \"paralegal\", \"paramedic\", \"parking enforcement worker\", \"parking lot attendant\", \"parts salesperson\", \"paving equipment operator\", \"payroll clerk\", \"pediatrician\", \"pedicurist\", \"personal care aide\", \"personal chef\", \"personal financial advisor\", \"personal trainer\", \"pest control worker\", \"pesticide applicator\", \"pesticide handler\", \"pesticide sprayer\", \"petroleum engineer\", \"petroleum gauger\", \"petroleum pump system operator\", \"petroleum refinery operator\", \"petroleum technician\", \"pharmacist\", \"pharmacy aide\", \"pharmacy technician\", \"philosophy teacher\", \"photogrammetrist\", \"photographer\", \"photographic process worker\", \"photographic processing machine operator\", \"physical therapist aide\", \"physical therapist assistant\", \"physical therapist\", \"physician assistant\", \"physician\", \"physicist\", \"physics teacher\", \"pile-driver operator\", \"pipefitter\", \"pipelayer\", \"planing machine operator\", \"planning clerk\", \"plant operator\", \"plant scientist\", \"plasterer\", \"plastic patternmaker\", \"plastic worker\", \"plumber\", \"podiatrist\", \"police dispatcher\", \"police officer\", \"policy processing clerk\", \"political science teacher\", \"political scientist\", \"postal service clerk\", \"postal service mail carrier\", \"postal service mail processing machine operator\", \"postal service mail processor\", \"postal service mail sorter\", \"postmaster\", \"postsecondary teacher\", \"poultry cutter\", \"poultry trimmer\", \"power dispatcher\", \"power distributor\", \"power plant operator\", \"power tool repairer\", \"precious stone worker\", \"precision instrument repairer\", \"prepress technician\", \"preschool teacher\", \"priest\", \"print binding worker\", \"printing press operator\", \"private detective\", \"probation officer\", \"procurement clerk\", \"producer\", \"product promoter\", \"product manager\", \"production clerk\", \"production occupation\", \"proofreader\", \"property manager\", \"prosthetist\", \"prosthodontist\", \"psychiatric aide\", \"psychiatric technician\", \"psychiatrist\", \"psychologist\", \"psychology teacher\", \"public relations manager\", \"public relations specialist\", \"pump operator\", \"purchasing agent\", \"purchasing manager\", \"radiation therapist\", \"radio announcer\", \"radio equipment installer\", \"radio operator\", \"radiologic technician\", \"radiologic technologist\", \"rail car repairer\", \"rail transportation worker\", \"rail yard engineer\", \"rail-track laying equipment operator\", \"railroad brake operator\", \"railroad conductor\", \"railroad police\", \"rancher\", \"real estate appraiser\", \"real estate broker\", \"real estate manager\", \"real estate sales agent\", \"receiving clerk\", \"receptionist\", \"record clerk\", \"recreation teacher\", \"recreation worker\", \"recreational therapist\", \"recreational vehicle service technician\", \"recyclable material collector\", \"referee\", \"refractory materials repairer\", \"refrigeration installer\", \"refrigeration mechanic\", \"refuse collector\", \"regional planner\", \"registered nurse\", \"rehabilitation counselor\", \"reinforcing iron worker\", \"reinforcing rebar worker\", \"religion teacher\", \"religious activities director\", \"religious worker\", \"rental clerk\", \"repair worker\", \"reporter\", \"residential advisor\", \"resort desk clerk\", \"respiratory therapist\", \"respiratory therapy technician\", \"retail buyer\", \"retail salesperson\", \"revenue agent\", \"rigger\", \"rock splitter\", \"rolling machine tender\", \"roof bolter\", \"roofer\", \"rotary drill operator\", \"roustabout\", \"safe repairer\", \"sailor\", \"sales engineer\", \"sales manager\", \"sales representative\", \"sampler\", \"sawing machine operator\", \"scaler\", \"school bus driver\", \"school psychologist\", \"school social worker\", \"scout leader\", \"sculptor\", \"secondary education teacher\", \"secondary school teacher\", \"secretary\", \"securities sales agent\", \"security guard\", \"security system installer\", \"segmental paver\", \"self-enrichment education teacher\", \"semiconductor processor\", \"septic tank servicer\", \"set designer\", \"sewer pipe cleaner\", \"sewing machine operator\", \"shampooer\", \"shaper\", \"sheet metal worker\", \"sheriff's patrol officer\", \"ship captain\", \"ship engineer\", \"ship loader\", \"shipmate\", \"shipping clerk\", \"shoe machine operator\", \"shoe worker\", \"short order cook\", \"signal operator\", \"signal repairer\", \"singer\", \"ski patrol\", \"skincare specialist\", \"slaughterer\", \"slicing machine tender\", \"slot supervisor\", \"social science research assistant\", \"social sciences teacher\", \"social scientist\", \"social service assistant\", \"social service manager\", \"social work teacher\", \"social worker\", \"sociologist\", \"sociology teacher\", \"software developer\", \"software engineer\", \"soil scientist\", \"solderer\", \"sorter\", \"sound engineering technician\", \"space scientist\", \"special education teacher\", \"speech-language pathologist\", \"sports book runner\", \"sports entertainer\", \"sports performer\", \"stationary engineer\", \"statistical assistant\", \"statistician\", \"steamfitter\", \"stock clerk\", \"stock mover\", \"stonemason\", \"street vendor\", \"streetcar operator\", \"structural iron worker\", \"structural metal fabricator\", \"structural metal fitter\", \"structural steel worker\", \"stucco mason\", \"substance abuse counselor\", \"substance abuse social worker\", \"subway operator\", \"surfacing equipment operator\", \"surgeon\", \"surgical technologist\", \"survey researcher\", \"surveying technician\", \"surveyor\", \"switch operator\", \"switchboard operator\", \"tailor\", \"tamping equipment operator\", \"tank car loader\", \"taper\", \"tax collector\", \"tax examiner\", \"tax preparer\", \"taxi driver\", \"teacher assistant\", \"teacher\", \"team assembler\", \"technical writer\", \"telecommunications equipment installer\", \"telemarketer\", \"telephone operator\", \"television announcer\", \"teller\", \"terrazzo finisher\", \"terrazzo worker\", \"tester\", \"textile bleaching operator\", \"textile cutting machine setter\", \"textile knitting machine setter\", \"textile presser\", \"textile worker\", \"therapist\", \"ticket agent\", \"ticket taker\", \"tile setter\", \"timekeeping clerk\", \"timing device assembler\", \"tire builder\", \"tire changer\", \"tire repairer\", \"title abstractor\", \"title examiner\", \"title searcher\", \"tobacco roasting machine operator\", \"tool filer\", \"tool grinder\", \"tool maker\", \"tool sharpener\", \"tour guide\", \"tower equipment installer\", \"tower operator\", \"track switch repairer\", \"tractor operator\", \"tractor-trailer truck driver\", \"traffic clerk\", \"traffic technician\", \"training and development manager\", \"training and development specialist\", \"transit police\", \"translator\", \"transportation equipment painter\", \"transportation inspector\", \"transportation security screener\", \"transportation worker\", \"trapper\", \"travel agent\", \"travel clerk\", \"travel guide\", \"tree pruner\", \"tree trimmer\", \"trimmer\", \"truck loader\", \"truck mechanic\", \"tuner\", \"turning machine tool operator\", \"tutor\", \"typist\", \"umpire\", \"undertaker\", \"upholsterer\", \"urban planner\", \"usher\", \"UX designer\", \"valve installer\", \"vending machine servicer\", \"veterinarian\", \"veterinary assistant\", \"veterinary technician\", \"vocational counselor\", \"vocational education teacher\", \"waiter\", \"waitress\", \"watch repairer\", \"water treatment plant operator\", \"weaving machine setter\", \"web developer\", \"weigher\", \"welder\", \"wellhead pumper\", \"wholesale buyer\", \"wildlife biologist\", \"window trimmer\", \"wood patternmaker\", \"woodworker\", \"word processor\", \"writer\", \"yardmaster\", \"zoologist\"}\n"
  },
  {
    "path": "pkg/data/sentences.go",
    "content": "package data\n\nvar Sentences = []string{\"The birch canoe slid on the smooth planks.\", \"Glue the sheet to the dark blue background.\", \"It's easy to tell the depth of a well.\", \"These days a chicken leg is a rare dish.\", \"Rice is often served in round bowls.\", \"The juice of lemons makes fine punch.\", \"The box was thrown beside the parked truck.\", \"The hogs were fed chopped corn and garbage.\", \"Four hours of steady work faced us.\", \"Large size in stockings is hard to sell.\", \"The boy was there when the sun rose.\", \"A rod is used to catch pink salmon.\", \"The source of the huge river is the clear spring.\", \"Kick the ball straight and follow through.\", \"Help the woman get back to her feet.\", \"A pot of tea helps to pass the evening.\", \"Smoky fires lack flame and heat.\", \"The soft cushion broke the man's fall.\", \"The salt breeze came across from the sea.\", \"The girl at the booth sold fifty bonds.\", \"The small pup gnawed a hole in the sock.\", \"The fish twisted and turned on the bent hook.\", \"Press the pants and sew a button on the vest.\", \"The swan dive was far short of perfect.\", \"The beauty of the view stunned the young boy.\", \"Two blue fish swam in the tank.\", \"Her purse was full of useless trash.\", \"The colt reared and threw the tall rider.\", \"It snowed, rained, and hailed the same morning.\", \"Read verse out loud for pleasure.\", \"Hoist the load to your left shoulder.\", \"Take the winding path to reach the lake.\", \"Note closely the size of the gas tank.\", \"Wipe the grease off his dirty face.\", \"Mend the coat before you go out.\", \"The wrist was badly strained and hung limp.\", \"The stray cat gave birth to kittens.\", \"The young girl gave no clear response.\", \"The meal was cooked before the bell rang.\", \"What joy there is in living.\", \"A king ruled the state in the early days.\", \"The ship was torn apart on the sharp reef.\", \"Sickness kept him home the third week.\", \"The wide road shimmered in the hot sun.\", \"The lazy cow lay in the cool grass.\", \"Lift the square stone over the fence.\", \"The rope will bind the seven books at once.\", \"Hop over the fence and plunge in.\", \"The friendly gang left the drug store.\", \"Mesh mire keeps chicks inside.\", \"The frosty air passed through the coat.\", \"The crooked maze failed to fool the mouse.\", \"Adding fast leads to wrong sums.\", \"The show was a flop from the very start.\", \"A saw is a tool used for making boards.\", \"The wagon moved on well oiled wheels.\", \"March the soldiers past the next hill.\", \"A cup of sugar makes sweet fudge.\", \"Place a rosebush near the porch steps.\", \"Both lost their lives in the raging storm.\", \"We talked of the slide show in the circus.\", \"Use a pencil to write the first draft.\", \"He ran half way to the hardware store.\", \"The clock struck to mark the third period.\", \"A small creek cut across the field.\", \"Cars and busses stalled in snow drifts.\", \"The set of china hit, the floor with a crash.\", \"This is a grand season for hikes on the road.\", \"The dune rose from the edge of the water.\", \"Those words were the cue for the actor to leave.\", \"A yacht slid around the point into the bay.\", \"The two met while playing on the sand.\", \"The ink stain dried on the finished page.\", \"The walled town was seized without a fight.\", \"The lease ran out in sixteen weeks.\", \"A tame squirrel makes a nice pet.\", \"The horn of the car woke the sleeping cop.\", \"The heart beat strongly and with firm strokes.\", \"The pearl was worn in a thin silver ring.\", \"The fruit peel was cut in thick slices.\", \"The Navy attacked the big task force.\", \"See the cat glaring at the scared mouse.\", \"There are more than two factors here.\", \"The hat brim was wide and too droopy.\", \"The lawyer tried to lose his case.\", \"The grass curled around the fence post.\", \"Cut the pie into large parts.\", \"Men strive but seldom get rich.\", \"Always close the barn door tight.\", \"He lay prone and hardly moved a limb.\", \"The slush lay deep along the street.\", \"A wisp of cloud hung in the blue air.\", \"A pound of sugar costs more than eggs.\", \"The fin was sharp and cut the clear water.\", \"The play seems dull and quite stupid.\", \"Bail the boat, to stop it from sinking.\", \"The term ended in late June that year.\", \"A tusk is used to make costly gifts.\", \"Ten pins were set in order.\", \"The bill as paid every third week.\", \"Oak is strong and also gives shade.\", \"Cats and dogs each hate the other.\", \"The pipe began to rust while new.\", \"Open the crate but don't break the glass.\", \"Add the sum to the product of these three.\", \"Thieves who rob friends deserve jail.\", \"The ripe taste of cheese improves with age.\", \"Act on these orders with great speed.\", \"The hog crawled under the high fence.\", \"Move the vat over the hot fire.\", \"The bark of the pine tree was shiny and dark.\", \"Leaves turn brown and yellow in the fall.\", \"The pennant waved when the wind blew.\", \"Split the log with a quick, sharp blow.\", \"Burn peat after the logs give out.\", \"He ordered peach pie with ice cream.\", \"Weave the carpet on the right hand side.\", \"Hemp is a weed found in parts of the tropics.\", \"A lame back kept his score low.\", \"We find joy in the simplest things.\", \"Type out three lists of orders.\", \"The harder he tried the less he got done.\", \"The boss ran the show with a watchful eye.\", \"The cup cracked and spilled its contents.\", \"Paste can cleanse the most dirty brass.\", \"The slang word for raw whiskey is booze.\", \"It caught its hind paw in a rusty trap.\", \"The wharf could be seen at the farther shore.\", \"Feel the heat of the weak dying flame.\", \"The tiny girl took off her hat.\", \"A cramp is no small danger on a swim.\", \"He said the same phrase thirty times.\", \"Pluck the bright rose without leaves.\", \"Two plus seven is less than ten.\", \"The glow deepened in the eyes of the sweet girl.\", \"Bring your problems to the wise chief.\", \"Write a fond note to the friend you cherish.\", \"Clothes and lodging are free to new men.\", \"We frown when events take a bad turn.\", \"Port is a strong wine with a smoky taste.\", \"The young kid jumped the rusty gate.\", \"Guess the results from the first scores.\", \"A salt pickle tastes fine with ham.\", \"The just claim got the right verdict.\", \"These thistles bend in a high wind.\", \"Pure bred poodles have curls.\", \"The tree top waved in a graceful way.\", \"The spot on the blotter was made by green ink.\", \"Mud was spattered on the front of his white shirt.\", \"The cigar burned a hole in the desk top.\", \"The empty flask stood on the tin tray.\", \"A speedy man can beat this track mark.\", \"He broke a new shoelace that day.\", \"The coffee stand is too high for the couch.\", \"The urge to write short stories is rare.\", \"The pencils have all been used.\", \"The pirates seized the crew of the lost ship.\", \"We tried to replace the coin but failed.\", \"She sewed the torn coat quite neatly.\", \"The sofa cushion is red and of light weight.\", \"The jacket hung on the back of the wide chair.\", \"At that high level the air is pure.\", \"Drop the two when you add the figures.\", \"A filing case is now hard to buy.\", \"An abrupt start does not win the prize.\", \"Wood is best for making toys and blocks.\", \"The office paint was a dull sad tan.\", \"He knew the skill of the great young actress.\", \"A rag will soak up spilled water.\", \"A shower of dirt fell from the hot pipes.\", \"Steam hissed from the broken valve.\", \"The child almost hurt the small dog.\", \"There was a sound of dry leaves outside.\", \"The sky that morning was clear and bright blue.\", \"Torn scraps littered the stone floor.\", \"Sunday is the best part of the week.\", \"The doctor cured him with these pills.\", \"The new girl was fired today at noon.\", \"They felt gay when the ship arrived in port.\", \"Add the store's account to the last cent.\", \"Acid burns holes in wool cloth.\", \"Fairy tales should be fun to write.\", \"Eight miles of woodland burned to waste.\", \"The third act was dull and tired the players.\", \"A young child should not suffer fright.\", \"Add the column and put the sum here.\", \"We admire and love a good cook.\", \"There the flood mark is ten inches.\", \"He carved a head from the round block of marble.\", \"She has st smart way of wearing clothes.\", \"The fruit of a fig tree is apple-shaped.\", \"Corn cobs can be used to kindle a fire.\", \"Where were they when the noise started.\", \"The paper box is full of thumb tacks.\", \"Sell your gift to a buyer at a good gain.\", \"The tongs lay beside the ice pail.\", \"The petals fall with the next puff of wind.\", \"Bring your best compass to the third class.\", \"They could laugh although they were sad.\", \"Farmers came in to thresh the oat crop.\", \"The brown house was on fire to the attic.\", \"The lure is used to catch trout and flounder.\", \"Float the soap on top of the bath water.\", \"A blue crane is a tall wading bird.\", \"A fresh start will work such wonders.\", \"The club rented the rink for the fifth night.\", \"After the dance they went straight home.\", \"The hostess taught the new maid to serve.\", \"He wrote his last novel there at the inn.\", \"Even the worst will beat his low score.\", \"The cement had dried when he moved it.\", \"The loss of the second ship was hard to take.\", \"The fly made its way along the wall.\", \"Do that with a wooden stick.\", \"Lire wires should be kept covered.\", \"The large house had hot water taps.\", \"It is hard to erase blue or red ink.\", \"Write at once or you may forget it.\", \"The doorknob was made of bright clean brass.\", \"The wreck occurred by the bank on Main Street.\", \"A pencil with black lead writes best.\", \"Coax a young calf to drink from a bucket.\", \"Schools for ladies teach charm and grace.\", \"The lamp shone with a steady green flame.\", \"They took the axe and the saw to the forest.\", \"The ancient coin was quite dull and worn.\", \"The shaky barn fell with a loud crash.\", \"Jazz and swing fans like fast music.\", \"Rake the rubbish up and then burn it.\", \"Slash the gold cloth into fine ribbons.\", \"Try to have the court decide the case.\", \"They are pushed back each time they attack.\", \"He broke his ties with groups of former friends.\", \"They floated on the raft to sun their white backs.\", \"The map had an X that meant nothing.\", \"Whitings are small fish caught in nets.\", \"Some ads serve to cheat buyers.\", \"Jerk the rope and the bell rings weakly.\", \"A waxed floor makes us lose balance.\", \"Madam, this is the best brand of corn.\", \"On the islands the sea breeze is soft and mild.\", \"The play began as soon as we sat down.\", \"This will lead the world to more sound and fury\", \"Add salt before you fry the egg.\", \"The rush for funds reached its peak Tuesday.\", \"The birch looked stark white and lonesome.\", \"The box is held by a bright red snapper.\", \"To make pure ice, you freeze water.\", \"The first worm gets snapped early.\", \"Jump the fence and hurry up the bank.\", \"Yell and clap as the curtain slides back.\", \"They are men who walk the middle of the road.\", \"Both brothers wear the same size.\", \"In some form or other we need fun.\", \"The prince ordered his head chopped off.\", \"The houses are built of red clay bricks.\", \"Ducks fly north but lack a compass.\", \"Fruit flavors are used in fizz drinks.\", \"These pills do less good than others.\", \"Canned pears lack full flavor.\", \"The dark pot hung in the front closet.\", \"Carry the pail to the wall and spill it there.\", \"The train brought our hero to the big town.\", \"We are sure that one war is enough.\", \"Gray paint stretched for miles around.\", \"The rude laugh filled the empty room.\", \"High seats are best for football fans.\", \"Tea served from the brown jug is tasty.\", \"A dash of pepper spoils beef stew.\", \"A zestful food is the hot-cross bun.\", \"The horse trotted around the field at a brisk pace.\", \"Find the twin who stole the pearl necklace.\", \"Cut the cord that binds the box tightly.\", \"The red tape bound the smuggled food.\", \"Look in the corner to find the tan shirt.\", \"The cold drizzle will halt the bond drive.\", \"Nine men were hired to dig the ruins.\", \"The junk yard had a mouldy smell.\", \"The flint sputtered and lit a pine torch.\", \"Soak the cloth and drown the sharp odor.\", \"The shelves were bare of both jam or crackers.\", \"A joy to every child is the swan boat.\", \"All sat frozen and watched the screen.\", \"A cloud of dust stung his tender eyes.\", \"To reach the end he needs much courage.\", \"Shape the clay gently into block form.\", \"The ridge on a smooth surface is a bump or flaw.\", \"Hedge apples may stain your hands green.\", \"Quench your thirst, then eat the crackers.\", \"Tight curls get limp on rainy days.\", \"The mute muffled the high tones of the horn.\", \"The gold ring fits only a pierced ear.\", \"The old pan was covered with hard fudge.\", \"Watch the log float in the wide river.\", \"The node on the stalk of wheat grew daily.\", \"The heap of fallen leaves was set on fire.\", \"Write fast, if you want to finish early.\", \"His shirt was clean but one button was gone.\", \"The barrel of beer was a brew of malt and hops.\", \"Tin cans are absent from store shelves.\", \"Slide the box into that empty space.\", \"The plant grew large and green in the window.\", \"The beam dropped down on the workmen's head.\", \"Pink clouds floated with the breeze.\", \"She danced like a swan, tall and graceful.\", \"The tube was blown and the tire flat and useless.\", \"It is late morning on the old wall clock.\", \"Let's all join as we sing the last chorus.\", \"The last switch cannot be turned off.\", \"The fight will end in just six minutes.\", \"The store walls were lined with colored frocks.\", \"The peace league met to discuss their plans.\", \"The rise to fame of a person takes luck.\", \"Paper is scarce, so write with much care.\", \"The quick fox jumped on the sleeping cat.\", \"The nozzle of the fire hose was bright brass.\", \"Screw the round cap on as tight as needed.\", \"Time brings us many changes.\", \"The purple tie was ten years old.\", \"Men think and plan and sometimes act.\", \"Fill the ink jar with sticky glue.\", \"He smoke a big pipe with strong contents.\", \"We need grain to keep our mules healthy.\", \"Pack the records in a neat thin case.\", \"The crunch of feet in the snow was the only sound.\", \"The copper bowl shone in the sun's rays.\", \"Boards will warp unless kept dry.\", \"The plush chair leaned against the wall.\", \"Glass will clink when struck by metal.\", \"Bathe and relax in the cool green grass.\", \"Nine rows of soldiers stood in line.\", \"The beach is dry and shallow at low tide.\", \"The idea is to sew both edges straight.\", \"The kitten chased the dog down the street.\", \"Pages bound in cloth make a book.\", \"Try to trace the fine lines of the painting.\", \"Women form less than half of the group.\", \"The zones merge in the central part of town.\", \"A gem in the rough needs work to polish.\", \"Code is used when secrets are sent.\", \"Most of the new is easy for us to hear.\", \"He used the lathe to make brass objects.\", \"The vane on top of the pole revolved in the wind.\", \"Mince pie is a dish served to children.\", \"The clan gathered on each dull night.\", \"Let it burn, it gives us warmth and comfort.\", \"A castle built from sand fails to endure.\", \"A child's wit saved the day for us.\", \"Tack the strip of carpet to the worn floor.\", \"Next Tuesday we must vote.\", \"Pour the stew from the pot into the plate.\", \"Each penny shone like new.\", \"The man went to the woods to gather sticks.\", \"The dirt piles were lines along the road.\", \"The logs fell and tumbled into the clear stream.\", \"Just hoist it up and take it away,\", \"A ripe plum is fit for a king's palate.\", \"Our plans right now are hazy.\", \"Brass rings are sold by these natives.\", \"It takes a good trap to capture a bear.\", \"Feed the white mouse some flower seeds.\", \"The thaw came early and freed the stream.\", \"He took the lead and kept it the whole distance.\", \"The key you designed will fit the lock.\", \"Plead to the council to free the poor thief.\", \"Better hash is made of rare beef.\", \"This plank was made for walking on.\", \"The lake sparkled in the red hot sun.\", \"He crawled with care along the ledge.\", \"Tend the sheep while the dog wanders.\", \"It takes a lot of help to finish these.\", \"Mark the spot with a sign painted red.\", \"Take two shares as a fair profit.\", \"The fur of cats goes by many names.\", \"North winds bring colds and fevers.\", \"He asks no person to vouch for him.\", \"Go now and come here later.\", \"A sash of gold silk will trim her dress.\", \"Soap can wash most dirt away.\", \"That move means the game is over.\", \"He wrote down a long list of items.\", \"A siege will crack the strong defense.\", \"Grape juice and water mix well.\", \"Roads are paved with sticky tar.\", \"Fake shoes shine but cost little.\", \"The drip of the rain made a pleasant sound.\", \"Smoke poured out of every crack.\", \"Serve the hot rum to the tired heroes.\", \"Much of the story makes good sense.\", \"The sun came up to light the eastern sky.\", \"Heave the line over the port side.\", \"A lathe cuts and trims any wood.\", \"It's a dense crowd in two distinct ways.\", \"His hip struck the knee of the next player.\", \"The stale smell of old beer lingers.\", \"The desk was firm on the shaky floor.\", \"It takes heat to bring out the odor.\", \"Beef is scarcer than some lamb.\", \"Raise the sail and steer the ship northward.\", \"The cone costs five cents on Mondays.\", \"A pod is what peas always grow in.\", \"Jerk the dart from the cork target.\", \"No cement will hold hard wood.\", \"We now have a new base for shipping.\", \"The list of names is carved around the base.\", \"The sheep were led home by a dog.\", \"Three for a dime, the young peddler cried.\", \"The sense of smell is better than that of touch.\", \"No hardship seemed to keep him sad.\", \"Grace makes up for lack of beauty.\", \"Nudge gently but wake her now.\", \"The news struck doubt into restless minds.\", \"Once we stood beside the shore.\", \"A chink in the wall allowed a draft to blow.\", \"Fasten two pins on each side.\", \"A cold dip restores health and zest.\", \"He takes the oath of office each March.\", \"The sand drifts over the sill of the old house.\", \"The point of the steel pen was bent and twisted.\", \"There is a lag between thought and act.\", \"Seed is needed to plant the spring corn.\", \"Draw the chart with heavy black lines.\", \"The boy owed his pal thirty cents.\", \"The chap slipped into the crowd and was lost.\", \"Hats are worn to tea and not to dinner.\", \"The ramp led up to the wide highway.\", \"Beat the dust from the rug onto the lawn.\", \"Say it slow!y but make it ring clear.\", \"The straw nest housed five robins.\", \"Screen the porch with woven straw mats.\", \"This horse will nose his way to the finish.\", \"The dry wax protects the deep scratch.\", \"He picked up the dice for a second roll.\", \"These coins will be needed to pay his debt.\", \"The nag pulled the frail cart along.\", \"Twist the valve and release hot steam.\", \"The vamp of the shoe had a gold buckle.\", \"The smell of burned rags itches my nose.\", \"New pants lack cuffs and pockets.\", \"The marsh will freeze when cold enough.\", \"They slice the sausage thin with a knife.\", \"The bloom of the rose lasts a few days.\", \"A gray mare walked before the colt.\", \"Breakfast buns are fine with a hot drink.\", \"Bottles hold four kinds of rum.\", \"The man wore a feather in his felt hat.\", \"He wheeled the bike past the winding road.\", \"Drop the ashes on the worn old rug.\", \"The desk and both chairs were painted tan.\", \"Throw out the used paper cup and plate.\", \"A clean neck means a neat collar.\", \"The couch cover and hall drapes were blue.\", \"The stems of the tall glasses cracked and broke.\", \"The wall phone rang loud and often.\", \"The clothes dried on a thin wooden rack.\", \"Turn on the lantern which gives us light.\", \"The cleat sank deeply into the soft turf.\", \"The bills were mailed promptly on the tenth of the month.\", \"To have is better than to wait and hope.\", \"The price is fair for a good antique clock.\", \"The music played on while they talked.\", \"Dispense with a vest on a day like this.\", \"The bunch of grapes was pressed into wine.\", \"He sent the figs, but kept the ripe cherries.\", \"The hinge on the door creaked with old age.\", \"The screen before the fire kept in the sparks.\", \"Fly by night, and you waste little time.\", \"Thick glasses helped him read the print.\", \"Birth and death mark the limits of life.\", \"The chair looked strong but had no bottom.\", \"The kite flew wildly in the high wind.\", \"A fur muff is stylish once more.\", \"The tin box held priceless stones.\", \"We need an end of all such matter.\", \"The case was puzzling to the old and wise.\", \"The bright lanterns were gay on the dark lawn.\", \"We don't get much money but we have fun.\", \"The youth drove with zest, but little skill.\", \"Five years he lived with a shaggy dog.\", \"A fence cuts through the corner lot.\", \"The way to save money is not to spend much.\", \"Shut the hatch before the waves push it in.\", \"The odor of spring makes young hearts jump.\", \"Crack the walnut with your sharp side teeth.\", \"He offered proof in the form of a large chart.\", \"Send the stuff in a thick paper bag.\", \"A quart of milk is water for the most part.\", \"They told wild tales to frighten him.\", \"The three story house was built of stone.\", \"In the rear of the ground floor was a large passage.\", \"A man in a blue sweater sat at the desk.\", \"Oats are a food eaten by horse and man.\", \"Their eyelids droop for want of sleep.\", \"The sip of tea revives his tired friend.\", \"There are many ways to do these things.\", \"Tuck the sheet under the edge of the mat.\", \"A force equal to that would move the earth.\", \"We like to see clear weather.\", \"The work of the tailor is seen on each side.\", \"Take a chance and win a china doll.\", \"Shake the dust from your shoes, stranger.\", \"She was kind to sick old people.\", \"The dusty bench stood by the stone wall.\", \"The square wooden crate was packed to be shipped.\", \"We dress to suit the weather of most days.\", \"Smile when you say nasty words.\", \"A bowl of rice is free with chicken stew.\", \"The water in this well is a source of good health.\", \"Take shelter in this tent, but keep still.\", \"That guy is the writer of a few banned books.\", \"The little tales they tell are false.\", \"The door was barred, locked, and bolted as well.\", \"Ripe pears are fit for a queen's table.\", \"A big wet stain was on the round carpet.\", \"The kite dipped and swayed, but stayed aloft.\", \"The pleasant hours fly by much too soon.\", \"The room was crowded with a wild mob.\", \"This strong arm shall shield your honor.\", \"She blushed when he gave her a white orchid.\", \"The beetle droned in the hot June sun.\", \"Press the pedal with your left foot.\", \"Neat plans fail without luck.\", \"The black trunk fell from the landing.\", \"The bank pressed for payment of the debt.\", \"The theft of the pearl pin was kept secret.\", \"Shake hands with this friendly child.\", \"The vast space stretched into the far distance.\", \"A rich farm is rare in this sandy waste.\", \"His wide grin earned many friends.\", \"Flax makes a fine brand of paper.\", \"Hurdle the pit with the aid of a long pole.\", \"A strong bid may scare your partner stiff.\", \"Even a just cause needs power to win.\", \"Peep under the tent and see the clowns.\", \"The leaf drifts along with a slow spin.\", \"Cheap clothes are flashy but don't last.\", \"A thing of small note can cause despair.\", \"Flood the mails with requests for this book.\", \"A thick coat of black paint covered all.\", \"The pencil was cut to be sharp at both ends.\", \"Those last words were a strong statement.\", \"He wrote his name boldly at the top of tile sheet.\", \"Dill pickles are sour but taste fine.\", \"Down that road is the way to the grain farmer.\", \"Either mud or dust are found at all times.\", \"The best method is to fix it in place with clips.\", \"If you mumble your speech will be lost.\", \"At night the alarm roused him from a deep sleep.\", \"Read just what the meter says.\", \"Fill your pack with bright trinkets for the poor.\", \"The small red neon lamp went out.\", \"Clams are small, round, soft, and tasty.\", \"The fan whirled its round blades softly.\", \"The line where the edges join was clean.\", \"Breathe deep and smell the piny air.\", \"It matters not if he reads these words or those.\", \"A brown leather bag hung from its strap.\", \"A toad and a frog are hard to tell apart.\", \"A white silk jacket goes with any shoes.\", \"A break in the dam almost caused a flood.\", \"Paint the sockets in the wall dull green.\", \"The child crawled into the dense grass.\", \"Bribes fail where honest men work.\", \"Trample the spark, else the flames will spread.\", \"The hilt of the sword was carved with fine designs.\", \"A round hole was drilled through the thin board.\", \"Footprints showed the path he took up the beach.\", \"She was waiting at my front lawn.\", \"A vent near the edge brought in fresh air.\", \"Prod the old mule with a crooked stick.\", \"It is a band of steel three inches wide.\", \"The pipe ran almost the length of the ditch.\", \"It was hidden from sight by a mass of leaves and shrubs.\", \"The weight of the package was seen on the high scale.\", \"Wake and rise, and step into the green outdoors.\", \"The green light in the brown box flickered.\", \"The brass tube circled the high wall.\", \"The lobes of her ears were pierced to hold rings.\", \"Hold the hammer near the end to drive the nail.\", \"Next Sunday is the twelfth of the month.\", \"Every word and phrase he speaks is true.\", \"He put his last cartridge into the gun and fired.\", \"They took their kids from the public school.\", \"Drive the screw straight into the wood.\", \"Keep the hatch tight and the watch constant.\", \"Sever the twine with a quick snip of the knife.\", \"Paper will dry out when wet.\", \"Slide the catch back and open the desk.\", \"Help the weak to preserve their strength.\", \"A sullen smile gets few friends.\", \"Stop whistling and watch the boys march.\", \"Jerk the cord, and out tumbles the gold.\", \"Slide the tray across the glass top.\", \"The cloud moved in a stately way and was gone.\", \"Light maple makes for a swell room.\", \"Set the piece here and say nothing.\", \"Dull stories make her laugh.\", \"A stiff cord will do to fasten your shoe.\", \"Get the trust fund to the bank early.\", \"Choose between the high road and the low.\", \"A plea for funds seems to come again.\", \"He lent his coat to the tall gaunt stranger.\", \"There is a strong chance it will happen once more.\", \"The duke left the park in a silver coach.\", \"Greet the new guests and leave quickly.\", \"When the frost has come it is time for turkey.\", \"Sweet words work better than fierce.\", \"A thin stripe runs down the middle.\", \"A six comes up more often than a ten.\", \"Lush fern grow on the lofty rocks.\", \"The ram scared the school children off.\", \"The team with the best timing looks good.\", \"The farmer swapped his horse for a brown ox.\", \"Sit on the perch and tell the others what to do.\", \"A steep trail is painful for our feet.\", \"The early phase of life moves fast.\", \"Green moss grows on the northern side.\", \"Tea in thin china has a sweet taste.\", \"Pitch the straw through the door of the stable.\", \"The latch on the beck gate needed a nail.\", \"The goose was brought straight from the old market.\", \"The sink is the thing in which we pile dishes.\", \"A whiff of it will cure the most stubborn cold.\", \"The facts don't always show who is right.\", \"She flaps her cape as she parades the street.\", \"The loss of the cruiser was a blow to the fleet.\", \"Loop the braid to the left and then over.\", \"Plead with the lawyer to drop the lost cause.\", \"Calves thrive on tender spring grass.\", \"Post no bills on this office wall.\", \"Tear a thin sheet from the yellow pad.\", \"A cruise in warm waters in a sleek yacht is fun.\", \"A streak of color ran down the left edge.\", \"It was done before the boy could see it.\", \"Crouch before you jump or miss the mark.\", \"Pack the kits and don't forget the salt.\", \"The square peg will settle in the round hole.\", \"Fine soap saves tender skin.\", \"Poached eggs and tea must suffice.\", \"Bad nerves are jangled by a door slam.\", \"Ship maps are different from those for planes.\", \"Dimes showered down from all sides.\", \"They sang the same tunes at each party.\", \"The sky in the west is tinged with orange red.\", \"The pods of peas ferment in bare fields.\", \"The horse balked and threw the tall rider.\", \"The hitch between the horse and cart broke.\", \"Pile the coal high in the shed corner.\", \"The gold vase is both rare and costly.\", \"The knife was hung inside its bright sheath.\", \"The rarest spice comes from the far East.\", \"The roof should be tilted at a sharp slant.\", \"A smatter of French is worse than none.\", \"The mule trod the treadmill day and night.\", \"The aim of the contest is to raise a great fund.\", \"To send it now in large amounts is bad.\", \"There is a fine hard tang in salty air.\", \"Cod is the main business of the north shore.\", \"The slab was hewn from heavy blocks of slat'e.\", \"Dunk the stale biscuits into strong drink.\", \"Hang tinsel from both branches.\", \"Cap the jar with a tight brass cover.\", \"The poor boy missed the boat again.\", \"Be sure to set the lamp firmly in the hole.\", \"Pick a card and slip it under the pack.\", \"A round mat will cover the dull spot.\", \"The first part of the plan needs changing.\", \"The good book informs of what we ought to know.\", \"The mail comes in three batches per day.\", \"You cannot brew tea in a cold pot.\", \"Dots of light betrayed the black cat.\", \"Put the chart on the mantel and tack it down.\", \"The night shift men rate extra pay.\", \"The red paper brightened the dim stage.\", \"See the player scoot to third base.\", \"Slide the bill between the two leaves.\", \"Many hands help get the job done.\", \"We don't like to admit our small faults.\", \"No doubt about the way the wind blows.\", \"Dig deep in the earth for pirate's gold.\", \"The steady drip is worse than a drenching rain.\", \"A flat pack takes less luggage space.\", \"Green ice frosted the punch bowl.\", \"A stuffed chair slipped from the moving van.\", \"The stitch will serve but needs to be shortened.\", \"A thin book fits in the side pocket.\", \"The gloss on top made it unfit to read.\", \"The hail pattered on the burnt brown grass.\", \"Seven seals were stamped on great sheets.\", \"Our troops are set to strike heavy blows.\", \"The store was jammed before the sale could start.\", \"It was a bad error on the part of the new judge.\", \"One step more and the board will collapse.\", \"Take the match and strike it against your shoe.\", \"The pot boiled, but the contents failed to jell.\", \"The baby puts his right foot in his mouth.\", \"The bombs left most of the town in ruins.\", \"Stop and stare at the hard working man.\", \"The streets are narrow and full of sharp turns.\", \"The pup jerked the leash as he saw a feline shape.\", \"Open your book to the first page.\", \"Fish evade the net, and swim off.\", \"Dip the pail once and let it settle.\", \"Will you please answer that phone.\", \"The big red apple fell to the ground.\", \"The curtain rose and the show was on.\", \"The young prince became heir to the throne.\", \"He sent the boy on a short errand.\", \"Leave now and you will arrive on time.\", \"The corner store was robbed last night.\", \"A gold ring will please most any girl.\", \"The long journey home took a year.\", \"She saw a cat in the neighbor's house.\", \"A pink shell was found on the sandy beach.\", \"Small children came to see him.\", \"The grass and bushes were wet with dew.\", \"The blind man counted his old coins.\", \"A severe storm tore down the barn.\", \"She called his name many times.\", \"When you hear the bell, come quickly.\"}\n"
  },
  {
    "path": "pkg/data/state_codes.go",
    "content": "package data\n\n// StateCodes is an array of 2-digit US state names\nvar StateCodes = []string{\n\t\"AL\",\n\t\"AK\",\n\t\"AZ\",\n\t\"AR\",\n\t\"CA\",\n\t\"CO\",\n\t\"CT\",\n\t\"DE\",\n\t\"FL\",\n\t\"GA\",\n\t\"HI\",\n\t\"ID\",\n\t\"IL\",\n\t\"IN\",\n\t\"IA\",\n\t\"KS\",\n\t\"KY\",\n\t\"LA\",\n\t\"ME\",\n\t\"MD\",\n\t\"MA\",\n\t\"MI\",\n\t\"MN\",\n\t\"MS\",\n\t\"MO\",\n\t\"MT\",\n\t\"NE\",\n\t\"NV\",\n\t\"NH\",\n\t\"NJ\",\n\t\"NM\",\n\t\"NY\",\n\t\"NC\",\n\t\"ND\",\n\t\"OH\",\n\t\"OK\",\n\t\"OR\",\n\t\"PA\",\n\t\"RI\",\n\t\"SC\",\n\t\"SD\",\n\t\"TN\",\n\t\"TX\",\n\t\"UT\",\n\t\"VT\",\n\t\"VA\",\n\t\"WA\",\n\t\"WV\",\n\t\"WI\",\n\t\"WY\",\n}\n"
  },
  {
    "path": "pkg/data/states.go",
    "content": "package data\n\n// States is an array of US state names\nvar States = []string{\n\t\"Alabama\",\n\t\"Alaska\",\n\t\"Arizona\",\n\t\"Arkansas\",\n\t\"California\",\n\t\"Colorado\",\n\t\"Connecticut\",\n\t\"Delaware\",\n\t\"Florida\",\n\t\"Georgia\",\n\t\"Hawaii\",\n\t\"Idaho\",\n\t\"Illinois\",\n\t\"Indiana\",\n\t\"Iowa\",\n\t\"Kansas\",\n\t\"Kentucky\",\n\t\"Louisiana\",\n\t\"Maine\",\n\t\"Maryland\",\n\t\"Massachusetts\",\n\t\"Michigan\",\n\t\"Minnesota\",\n\t\"Mississippi\",\n\t\"Missouri\",\n\t\"Montana\",\n\t\"Nebraska\",\n\t\"Nevada\",\n\t\"New Hampshire\",\n\t\"New Jersey\",\n\t\"New Mexico\",\n\t\"New York\",\n\t\"North Carolina\",\n\t\"North Dakota\",\n\t\"Ohio\",\n\t\"Oklahoma\",\n\t\"Oregon\",\n\t\"Pennsylvania\",\n\t\"Rhode Island\",\n\t\"South Carolina\",\n\t\"South Dakota\",\n\t\"Tennessee\",\n\t\"Texas\",\n\t\"Utah\",\n\t\"Vermont\",\n\t\"Virginia\",\n\t\"Washington\",\n\t\"West Virginia\",\n\t\"Wisconsin\",\n\t\"Wyoming\",\n}\n"
  },
  {
    "path": "pkg/data/timezones.go",
    "content": "package data\n\n// Timezones is an array of TimeZone names\nvar Timezones = []string{\n\t\"Africa/Algiers\",\n\t\"Africa/Cairo\",\n\t\"Africa/Casablanca\",\n\t\"Africa/Harare\",\n\t\"Africa/Johannesburg\",\n\t\"Africa/Monrovia\",\n\t\"Africa/Nairobi\",\n\t\"America/Argentina/Buenos_Aires\",\n\t\"America/Bogota\",\n\t\"America/Caracas\",\n\t\"America/Chicago\",\n\t\"America/Chihuahua\",\n\t\"America/Denver\",\n\t\"America/Godthab\",\n\t\"America/Guatemala\",\n\t\"America/Guyana\",\n\t\"America/Halifax\",\n\t\"America/Indiana/Indianapolis\",\n\t\"America/Juneau\",\n\t\"America/La_Paz\",\n\t\"America/Lima\",\n\t\"America/Los_Angeles\",\n\t\"America/Mazatlan\",\n\t\"America/Mexico_City\",\n\t\"America/Monterrey\",\n\t\"America/New_York\",\n\t\"America/Phoenix\",\n\t\"America/Regina\",\n\t\"America/Santiago\",\n\t\"America/Sao_Paulo\",\n\t\"America/St_Johns\",\n\t\"America/Tijuana\",\n\t\"Asia/Almaty\",\n\t\"Asia/Baghdad\",\n\t\"Asia/Baku\",\n\t\"Asia/Bangkok\",\n\t\"Asia/Chongqing\",\n\t\"Asia/Colombo\",\n\t\"Asia/Dhaka\",\n\t\"Asia/Hong_Kong\",\n\t\"Asia/Irkutsk\",\n\t\"Asia/Jakarta\",\n\t\"Asia/Jerusalem\",\n\t\"Asia/Kabul\",\n\t\"Asia/Kamchatka\",\n\t\"Asia/Karachi\",\n\t\"Asia/Kathmandu\",\n\t\"Asia/Kolkata\",\n\t\"Asia/Krasnoyarsk\",\n\t\"Asia/Kuala_Lumpur\",\n\t\"Asia/Kuwait\",\n\t\"Asia/Magadan\",\n\t\"Asia/Muscat\",\n\t\"Asia/Novosibirsk\",\n\t\"Asia/Rangoon\",\n\t\"Asia/Riyadh\",\n\t\"Asia/Seoul\",\n\t\"Asia/Shanghai\",\n\t\"Asia/Singapore\",\n\t\"Asia/Taipei\",\n\t\"Asia/Tashkent\",\n\t\"Asia/Tbilisi\",\n\t\"Asia/Tehran\",\n\t\"Asia/Tokyo\",\n\t\"Asia/Ulaanbaatar\",\n\t\"Asia/Urumqi\",\n\t\"Asia/Vladivostok\",\n\t\"Asia/Yakutsk\",\n\t\"Asia/Yekaterinburg\",\n\t\"Asia/Yerevan\",\n\t\"Atlantic/Azores\",\n\t\"Atlantic/Cape_Verde\",\n\t\"Atlantic/South_Georgia\",\n\t\"Australia/Adelaide\",\n\t\"Australia/Brisbane\",\n\t\"Australia/Darwin\",\n\t\"Australia/Hobart\",\n\t\"Australia/Melbourne\",\n\t\"Australia/Melbourne\",\n\t\"Australia/Perth\",\n\t\"Australia/Sydney\",\n\t\"Europe/Amsterdam\",\n\t\"Europe/Athens\",\n\t\"Europe/Belgrade\",\n\t\"Europe/Berlin\",\n\t\"Europe/Bratislava\",\n\t\"Europe/Brussels\",\n\t\"Europe/Bucharest\",\n\t\"Europe/Budapest\",\n\t\"Europe/Copenhagen\",\n\t\"Europe/Dublin\",\n\t\"Europe/Helsinki\",\n\t\"Europe/Istanbul\",\n\t\"Europe/Kiev\",\n\t\"Europe/Lisbon\",\n\t\"Europe/Ljubljana\",\n\t\"Europe/London\",\n\t\"Europe/London\",\n\t\"Europe/Madrid\",\n\t\"Europe/Minsk\",\n\t\"Europe/Moscow\",\n\t\"Europe/Paris\",\n\t\"Europe/Prague\",\n\t\"Europe/Riga\",\n\t\"Europe/Rome\",\n\t\"Europe/Sarajevo\",\n\t\"Europe/Skopje\",\n\t\"Europe/Sofia\",\n\t\"Europe/Stockholm\",\n\t\"Europe/Tallinn\",\n\t\"Europe/Vienna\",\n\t\"Europe/Vilnius\",\n\t\"Europe/Warsaw\",\n\t\"Europe/Zagreb\",\n\t\"Pacific/Apia\",\n\t\"Pacific/Auckland\",\n\t\"Pacific/Fakaofo\",\n\t\"Pacific/Fiji\",\n\t\"Pacific/Guam\",\n\t\"Pacific/Honolulu\",\n\t\"Pacific/Majuro\",\n\t\"Pacific/Midway\",\n\t\"Pacific/Noumea\",\n\t\"Pacific/Pago_Pago\",\n\t\"Pacific/Port_Moresby\",\n\t\"Pacific/Tongatapu\",\n}\n"
  },
  {
    "path": "pkg/data/tlds.go",
    "content": "package data\n\n// source: https://data.iana.org/TLD/tlds-alpha-by-domain.txt\n\n// TLDs is an array of top level domain names\nvar TLDs = []string{\n\t\"aaa\",\n\t\"aarp\",\n\t\"abarth\",\n\t\"abb\",\n\t\"abbott\",\n\t\"abbvie\",\n\t\"abc\",\n\t\"able\",\n\t\"abogado\",\n\t\"abudhabi\",\n\t\"ac\",\n\t\"academy\",\n\t\"accenture\",\n\t\"accountant\",\n\t\"accountants\",\n\t\"aco\",\n\t\"active\",\n\t\"actor\",\n\t\"ad\",\n\t\"adac\",\n\t\"ads\",\n\t\"adult\",\n\t\"ae\",\n\t\"aeg\",\n\t\"aero\",\n\t\"aetna\",\n\t\"af\",\n\t\"afamilycompany\",\n\t\"afl\",\n\t\"africa\",\n\t\"ag\",\n\t\"agakhan\",\n\t\"agency\",\n\t\"ai\",\n\t\"aig\",\n\t\"aigo\",\n\t\"airbus\",\n\t\"airforce\",\n\t\"airtel\",\n\t\"akdn\",\n\t\"al\",\n\t\"alfaromeo\",\n\t\"alibaba\",\n\t\"alipay\",\n\t\"allfinanz\",\n\t\"allstate\",\n\t\"ally\",\n\t\"alsace\",\n\t\"alstom\",\n\t\"am\",\n\t\"americanexpress\",\n\t\"americanfamily\",\n\t\"amex\",\n\t\"amfam\",\n\t\"amica\",\n\t\"amsterdam\",\n\t\"analytics\",\n\t\"android\",\n\t\"anquan\",\n\t\"anz\",\n\t\"ao\",\n\t\"aol\",\n\t\"apartments\",\n\t\"app\",\n\t\"apple\",\n\t\"aq\",\n\t\"aquarelle\",\n\t\"ar\",\n\t\"arab\",\n\t\"aramco\",\n\t\"archi\",\n\t\"army\",\n\t\"arpa\",\n\t\"art\",\n\t\"arte\",\n\t\"as\",\n\t\"asda\",\n\t\"asia\",\n\t\"associates\",\n\t\"at\",\n\t\"athleta\",\n\t\"attorney\",\n\t\"au\",\n\t\"auction\",\n\t\"audi\",\n\t\"audible\",\n\t\"audio\",\n\t\"auspost\",\n\t\"author\",\n\t\"auto\",\n\t\"autos\",\n\t\"avianca\",\n\t\"aw\",\n\t\"aws\",\n\t\"ax\",\n\t\"axa\",\n\t\"az\",\n\t\"azure\",\n\t\"ba\",\n\t\"baby\",\n\t\"baidu\",\n\t\"banamex\",\n\t\"bananarepublic\",\n\t\"band\",\n\t\"bank\",\n\t\"bar\",\n\t\"barcelona\",\n\t\"barclaycard\",\n\t\"barclays\",\n\t\"barefoot\",\n\t\"bargains\",\n\t\"baseball\",\n\t\"basketball\",\n\t\"bauhaus\",\n\t\"bayern\",\n\t\"bb\",\n\t\"bbc\",\n\t\"bbt\",\n\t\"bbva\",\n\t\"bcg\",\n\t\"bcn\",\n\t\"bd\",\n\t\"be\",\n\t\"beats\",\n\t\"beauty\",\n\t\"beer\",\n\t\"bentley\",\n\t\"berlin\",\n\t\"best\",\n\t\"bestbuy\",\n\t\"bet\",\n\t\"bf\",\n\t\"bg\",\n\t\"bh\",\n\t\"bharti\",\n\t\"bi\",\n\t\"bible\",\n\t\"bid\",\n\t\"bike\",\n\t\"bing\",\n\t\"bingo\",\n\t\"bio\",\n\t\"biz\",\n\t\"bj\",\n\t\"black\",\n\t\"blackfriday\",\n\t\"blanco\",\n\t\"blockbuster\",\n\t\"blog\",\n\t\"bloomberg\",\n\t\"blue\",\n\t\"bm\",\n\t\"bms\",\n\t\"bmw\",\n\t\"bn\",\n\t\"bnl\",\n\t\"bnpparibas\",\n\t\"bo\",\n\t\"boats\",\n\t\"boehringer\",\n\t\"bofa\",\n\t\"bom\",\n\t\"bond\",\n\t\"boo\",\n\t\"book\",\n\t\"booking\",\n\t\"boots\",\n\t\"bosch\",\n\t\"bostik\",\n\t\"boston\",\n\t\"bot\",\n\t\"boutique\",\n\t\"box\",\n\t\"br\",\n\t\"bradesco\",\n\t\"bridgestone\",\n\t\"broadway\",\n\t\"broker\",\n\t\"brother\",\n\t\"brussels\",\n\t\"bs\",\n\t\"bt\",\n\t\"budapest\",\n\t\"bugatti\",\n\t\"build\",\n\t\"builders\",\n\t\"business\",\n\t\"buy\",\n\t\"buzz\",\n\t\"bv\",\n\t\"bw\",\n\t\"by\",\n\t\"bz\",\n\t\"bzh\",\n\t\"ca\",\n\t\"cab\",\n\t\"cafe\",\n\t\"cal\",\n\t\"call\",\n\t\"calvinklein\",\n\t\"cam\",\n\t\"camera\",\n\t\"camp\",\n\t\"cancerresearch\",\n\t\"canon\",\n\t\"capetown\",\n\t\"capital\",\n\t\"capitalone\",\n\t\"car\",\n\t\"caravan\",\n\t\"cards\",\n\t\"care\",\n\t\"career\",\n\t\"careers\",\n\t\"cars\",\n\t\"cartier\",\n\t\"casa\",\n\t\"case\",\n\t\"caseih\",\n\t\"cash\",\n\t\"casino\",\n\t\"cat\",\n\t\"catering\",\n\t\"catholic\",\n\t\"cba\",\n\t\"cbn\",\n\t\"cbre\",\n\t\"cbs\",\n\t\"cc\",\n\t\"cd\",\n\t\"ceb\",\n\t\"center\",\n\t\"ceo\",\n\t\"cern\",\n\t\"cf\",\n\t\"cfa\",\n\t\"cfd\",\n\t\"cg\",\n\t\"ch\",\n\t\"chanel\",\n\t\"channel\",\n\t\"chase\",\n\t\"chat\",\n\t\"cheap\",\n\t\"chintai\",\n\t\"chloe\",\n\t\"christmas\",\n\t\"chrome\",\n\t\"chrysler\",\n\t\"church\",\n\t\"ci\",\n\t\"cipriani\",\n\t\"circle\",\n\t\"cisco\",\n\t\"citadel\",\n\t\"citi\",\n\t\"citic\",\n\t\"city\",\n\t\"cityeats\",\n\t\"ck\",\n\t\"cl\",\n\t\"claims\",\n\t\"cleaning\",\n\t\"click\",\n\t\"clinic\",\n\t\"clinique\",\n\t\"clothing\",\n\t\"cloud\",\n\t\"club\",\n\t\"clubmed\",\n\t\"cm\",\n\t\"cn\",\n\t\"co\",\n\t\"coach\",\n\t\"codes\",\n\t\"coffee\",\n\t\"college\",\n\t\"cologne\",\n\t\"com\",\n\t\"comcast\",\n\t\"commbank\",\n\t\"community\",\n\t\"company\",\n\t\"compare\",\n\t\"computer\",\n\t\"comsec\",\n\t\"condos\",\n\t\"construction\",\n\t\"consulting\",\n\t\"contact\",\n\t\"contractors\",\n\t\"cooking\",\n\t\"cookingchannel\",\n\t\"cool\",\n\t\"coop\",\n\t\"corsica\",\n\t\"country\",\n\t\"coupon\",\n\t\"coupons\",\n\t\"courses\",\n\t\"cr\",\n\t\"credit\",\n\t\"creditcard\",\n\t\"creditunion\",\n\t\"cricket\",\n\t\"crown\",\n\t\"crs\",\n\t\"cruise\",\n\t\"cruises\",\n\t\"csc\",\n\t\"cu\",\n\t\"cuisinella\",\n\t\"cv\",\n\t\"cw\",\n\t\"cx\",\n\t\"cy\",\n\t\"cymru\",\n\t\"cyou\",\n\t\"cz\",\n\t\"dabur\",\n\t\"dad\",\n\t\"dance\",\n\t\"data\",\n\t\"date\",\n\t\"dating\",\n\t\"datsun\",\n\t\"day\",\n\t\"dclk\",\n\t\"dds\",\n\t\"de\",\n\t\"deal\",\n\t\"dealer\",\n\t\"deals\",\n\t\"degree\",\n\t\"delivery\",\n\t\"dell\",\n\t\"deloitte\",\n\t\"delta\",\n\t\"democrat\",\n\t\"dental\",\n\t\"dentist\",\n\t\"desi\",\n\t\"design\",\n\t\"dev\",\n\t\"dhl\",\n\t\"diamonds\",\n\t\"diet\",\n\t\"digital\",\n\t\"direct\",\n\t\"directory\",\n\t\"discount\",\n\t\"discover\",\n\t\"dish\",\n\t\"diy\",\n\t\"dj\",\n\t\"dk\",\n\t\"dm\",\n\t\"dnp\",\n\t\"do\",\n\t\"docs\",\n\t\"doctor\",\n\t\"dodge\",\n\t\"dog\",\n\t\"doha\",\n\t\"domains\",\n\t\"dot\",\n\t\"download\",\n\t\"drive\",\n\t\"dtv\",\n\t\"dubai\",\n\t\"duck\",\n\t\"dunlop\",\n\t\"duns\",\n\t\"dupont\",\n\t\"durban\",\n\t\"dvag\",\n\t\"dvr\",\n\t\"dz\",\n\t\"earth\",\n\t\"eat\",\n\t\"ec\",\n\t\"eco\",\n\t\"edeka\",\n\t\"edu\",\n\t\"education\",\n\t\"ee\",\n\t\"eg\",\n\t\"email\",\n\t\"emerck\",\n\t\"energy\",\n\t\"engineer\",\n\t\"engineering\",\n\t\"enterprises\",\n\t\"epost\",\n\t\"epson\",\n\t\"equipment\",\n\t\"er\",\n\t\"ericsson\",\n\t\"erni\",\n\t\"es\",\n\t\"esq\",\n\t\"estate\",\n\t\"esurance\",\n\t\"et\",\n\t\"eu\",\n\t\"eurovision\",\n\t\"eus\",\n\t\"events\",\n\t\"everbank\",\n\t\"exchange\",\n\t\"expert\",\n\t\"exposed\",\n\t\"express\",\n\t\"extraspace\",\n\t\"fage\",\n\t\"fail\",\n\t\"fairwinds\",\n\t\"faith\",\n\t\"family\",\n\t\"fan\",\n\t\"fans\",\n\t\"farm\",\n\t\"farmers\",\n\t\"fashion\",\n\t\"fast\",\n\t\"fedex\",\n\t\"feedback\",\n\t\"ferrari\",\n\t\"ferrero\",\n\t\"fi\",\n\t\"fiat\",\n\t\"fidelity\",\n\t\"fido\",\n\t\"film\",\n\t\"final\",\n\t\"finance\",\n\t\"financial\",\n\t\"fire\",\n\t\"firestone\",\n\t\"firmdale\",\n\t\"fish\",\n\t\"fishing\",\n\t\"fit\",\n\t\"fitness\",\n\t\"fj\",\n\t\"fk\",\n\t\"flickr\",\n\t\"flights\",\n\t\"flir\",\n\t\"florist\",\n\t\"flowers\",\n\t\"fly\",\n\t\"fm\",\n\t\"fo\",\n\t\"foo\",\n\t\"food\",\n\t\"foodnetwork\",\n\t\"football\",\n\t\"ford\",\n\t\"forex\",\n\t\"forsale\",\n\t\"forum\",\n\t\"foundation\",\n\t\"fox\",\n\t\"fr\",\n\t\"free\",\n\t\"fresenius\",\n\t\"frl\",\n\t\"frogans\",\n\t\"frontdoor\",\n\t\"frontier\",\n\t\"ftr\",\n\t\"fujitsu\",\n\t\"fujixerox\",\n\t\"fun\",\n\t\"fund\",\n\t\"furniture\",\n\t\"futbol\",\n\t\"fyi\",\n\t\"ga\",\n\t\"gal\",\n\t\"gallery\",\n\t\"gallo\",\n\t\"gallup\",\n\t\"game\",\n\t\"games\",\n\t\"gap\",\n\t\"garden\",\n\t\"gb\",\n\t\"gbiz\",\n\t\"gd\",\n\t\"gdn\",\n\t\"ge\",\n\t\"gea\",\n\t\"gent\",\n\t\"genting\",\n\t\"george\",\n\t\"gf\",\n\t\"gg\",\n\t\"ggee\",\n\t\"gh\",\n\t\"gi\",\n\t\"gift\",\n\t\"gifts\",\n\t\"gives\",\n\t\"giving\",\n\t\"gl\",\n\t\"glade\",\n\t\"glass\",\n\t\"gle\",\n\t\"global\",\n\t\"globo\",\n\t\"gm\",\n\t\"gmail\",\n\t\"gmbh\",\n\t\"gmo\",\n\t\"gmx\",\n\t\"gn\",\n\t\"godaddy\",\n\t\"gold\",\n\t\"goldpoint\",\n\t\"golf\",\n\t\"goo\",\n\t\"goodhands\",\n\t\"goodyear\",\n\t\"goog\",\n\t\"google\",\n\t\"gop\",\n\t\"got\",\n\t\"gov\",\n\t\"gp\",\n\t\"gq\",\n\t\"gr\",\n\t\"grainger\",\n\t\"graphics\",\n\t\"gratis\",\n\t\"green\",\n\t\"gripe\",\n\t\"group\",\n\t\"gs\",\n\t\"gt\",\n\t\"gu\",\n\t\"guardian\",\n\t\"gucci\",\n\t\"guge\",\n\t\"guide\",\n\t\"guitars\",\n\t\"guru\",\n\t\"gw\",\n\t\"gy\",\n\t\"hair\",\n\t\"hamburg\",\n\t\"hangout\",\n\t\"haus\",\n\t\"hbo\",\n\t\"hdfc\",\n\t\"hdfcbank\",\n\t\"health\",\n\t\"healthcare\",\n\t\"help\",\n\t\"helsinki\",\n\t\"here\",\n\t\"hermes\",\n\t\"hgtv\",\n\t\"hiphop\",\n\t\"hisamitsu\",\n\t\"hitachi\",\n\t\"hiv\",\n\t\"hk\",\n\t\"hkt\",\n\t\"hm\",\n\t\"hn\",\n\t\"hockey\",\n\t\"holdings\",\n\t\"holiday\",\n\t\"homedepot\",\n\t\"homegoods\",\n\t\"homes\",\n\t\"homesense\",\n\t\"honda\",\n\t\"honeywell\",\n\t\"horse\",\n\t\"hospital\",\n\t\"host\",\n\t\"hosting\",\n\t\"hot\",\n\t\"hoteles\",\n\t\"hotels\",\n\t\"hotmail\",\n\t\"house\",\n\t\"how\",\n\t\"hr\",\n\t\"hsbc\",\n\t\"ht\",\n\t\"htc\",\n\t\"hu\",\n\t\"hughes\",\n\t\"hyatt\",\n\t\"hyundai\",\n\t\"ibm\",\n\t\"icbc\",\n\t\"ice\",\n\t\"icu\",\n\t\"id\",\n\t\"ie\",\n\t\"ieee\",\n\t\"ifm\",\n\t\"ikano\",\n\t\"il\",\n\t\"im\",\n\t\"imamat\",\n\t\"imdb\",\n\t\"immo\",\n\t\"immobilien\",\n\t\"in\",\n\t\"industries\",\n\t\"infiniti\",\n\t\"info\",\n\t\"ing\",\n\t\"ink\",\n\t\"institute\",\n\t\"insurance\",\n\t\"insure\",\n\t\"int\",\n\t\"intel\",\n\t\"international\",\n\t\"intuit\",\n\t\"investments\",\n\t\"io\",\n\t\"ipiranga\",\n\t\"iq\",\n\t\"ir\",\n\t\"irish\",\n\t\"is\",\n\t\"iselect\",\n\t\"ismaili\",\n\t\"ist\",\n\t\"istanbul\",\n\t\"it\",\n\t\"itau\",\n\t\"itv\",\n\t\"iveco\",\n\t\"iwc\",\n\t\"jaguar\",\n\t\"java\",\n\t\"jcb\",\n\t\"jcp\",\n\t\"je\",\n\t\"jeep\",\n\t\"jetzt\",\n\t\"jewelry\",\n\t\"jio\",\n\t\"jlc\",\n\t\"jll\",\n\t\"jm\",\n\t\"jmp\",\n\t\"jnj\",\n\t\"jo\",\n\t\"jobs\",\n\t\"joburg\",\n\t\"jot\",\n\t\"joy\",\n\t\"jp\",\n\t\"jpmorgan\",\n\t\"jprs\",\n\t\"juegos\",\n\t\"juniper\",\n\t\"kaufen\",\n\t\"kddi\",\n\t\"ke\",\n\t\"kerryhotels\",\n\t\"kerrylogistics\",\n\t\"kerryproperties\",\n\t\"kfh\",\n\t\"kg\",\n\t\"kh\",\n\t\"ki\",\n\t\"kia\",\n\t\"kim\",\n\t\"kinder\",\n\t\"kindle\",\n\t\"kitchen\",\n\t\"kiwi\",\n\t\"km\",\n\t\"kn\",\n\t\"koeln\",\n\t\"komatsu\",\n\t\"kosher\",\n\t\"kp\",\n\t\"kpmg\",\n\t\"kpn\",\n\t\"kr\",\n\t\"krd\",\n\t\"kred\",\n\t\"kuokgroup\",\n\t\"kw\",\n\t\"ky\",\n\t\"kyoto\",\n\t\"kz\",\n\t\"la\",\n\t\"lacaixa\",\n\t\"ladbrokes\",\n\t\"lamborghini\",\n\t\"lamer\",\n\t\"lancaster\",\n\t\"lancia\",\n\t\"lancome\",\n\t\"land\",\n\t\"landrover\",\n\t\"lanxess\",\n\t\"lasalle\",\n\t\"lat\",\n\t\"latino\",\n\t\"latrobe\",\n\t\"law\",\n\t\"lawyer\",\n\t\"lb\",\n\t\"lc\",\n\t\"lds\",\n\t\"lease\",\n\t\"leclerc\",\n\t\"lefrak\",\n\t\"legal\",\n\t\"lego\",\n\t\"lexus\",\n\t\"lgbt\",\n\t\"li\",\n\t\"liaison\",\n\t\"lidl\",\n\t\"life\",\n\t\"lifeinsurance\",\n\t\"lifestyle\",\n\t\"lighting\",\n\t\"like\",\n\t\"lilly\",\n\t\"limited\",\n\t\"limo\",\n\t\"lincoln\",\n\t\"linde\",\n\t\"link\",\n\t\"lipsy\",\n\t\"live\",\n\t\"living\",\n\t\"lixil\",\n\t\"lk\",\n\t\"loan\",\n\t\"loans\",\n\t\"locker\",\n\t\"locus\",\n\t\"loft\",\n\t\"lol\",\n\t\"london\",\n\t\"lotte\",\n\t\"lotto\",\n\t\"love\",\n\t\"lpl\",\n\t\"lplfinancial\",\n\t\"lr\",\n\t\"ls\",\n\t\"lt\",\n\t\"ltd\",\n\t\"ltda\",\n\t\"lu\",\n\t\"lundbeck\",\n\t\"lupin\",\n\t\"luxe\",\n\t\"luxury\",\n\t\"lv\",\n\t\"ly\",\n\t\"ma\",\n\t\"macys\",\n\t\"madrid\",\n\t\"maif\",\n\t\"maison\",\n\t\"makeup\",\n\t\"man\",\n\t\"management\",\n\t\"mango\",\n\t\"market\",\n\t\"marketing\",\n\t\"markets\",\n\t\"marriott\",\n\t\"marshalls\",\n\t\"maserati\",\n\t\"mattel\",\n\t\"mba\",\n\t\"mc\",\n\t\"mcd\",\n\t\"mcdonalds\",\n\t\"mckinsey\",\n\t\"md\",\n\t\"me\",\n\t\"med\",\n\t\"media\",\n\t\"meet\",\n\t\"melbourne\",\n\t\"meme\",\n\t\"memorial\",\n\t\"men\",\n\t\"menu\",\n\t\"meo\",\n\t\"metlife\",\n\t\"mg\",\n\t\"mh\",\n\t\"miami\",\n\t\"microsoft\",\n\t\"mil\",\n\t\"mini\",\n\t\"mint\",\n\t\"mit\",\n\t\"mitsubishi\",\n\t\"mk\",\n\t\"ml\",\n\t\"mlb\",\n\t\"mls\",\n\t\"mm\",\n\t\"mma\",\n\t\"mn\",\n\t\"mo\",\n\t\"mobi\",\n\t\"mobile\",\n\t\"mobily\",\n\t\"moda\",\n\t\"moe\",\n\t\"moi\",\n\t\"mom\",\n\t\"monash\",\n\t\"money\",\n\t\"monster\",\n\t\"montblanc\",\n\t\"mopar\",\n\t\"mormon\",\n\t\"mortgage\",\n\t\"moscow\",\n\t\"moto\",\n\t\"motorcycles\",\n\t\"mov\",\n\t\"movie\",\n\t\"movistar\",\n\t\"mp\",\n\t\"mq\",\n\t\"mr\",\n\t\"ms\",\n\t\"msd\",\n\t\"mt\",\n\t\"mtn\",\n\t\"mtr\",\n\t\"mu\",\n\t\"museum\",\n\t\"mutual\",\n\t\"mv\",\n\t\"mw\",\n\t\"mx\",\n\t\"my\",\n\t\"mz\",\n\t\"na\",\n\t\"nab\",\n\t\"nadex\",\n\t\"nagoya\",\n\t\"name\",\n\t\"nationwide\",\n\t\"natura\",\n\t\"navy\",\n\t\"nba\",\n\t\"nc\",\n\t\"ne\",\n\t\"nec\",\n\t\"net\",\n\t\"netbank\",\n\t\"netflix\",\n\t\"network\",\n\t\"neustar\",\n\t\"new\",\n\t\"newholland\",\n\t\"news\",\n\t\"next\",\n\t\"nextdirect\",\n\t\"nexus\",\n\t\"nf\",\n\t\"nfl\",\n\t\"ng\",\n\t\"ngo\",\n\t\"nhk\",\n\t\"ni\",\n\t\"nico\",\n\t\"nike\",\n\t\"nikon\",\n\t\"ninja\",\n\t\"nissan\",\n\t\"nissay\",\n\t\"nl\",\n\t\"no\",\n\t\"nokia\",\n\t\"northwesternmutual\",\n\t\"norton\",\n\t\"now\",\n\t\"nowruz\",\n\t\"nowtv\",\n\t\"np\",\n\t\"nr\",\n\t\"nra\",\n\t\"nrw\",\n\t\"ntt\",\n\t\"nu\",\n\t\"nyc\",\n\t\"nz\",\n\t\"obi\",\n\t\"observer\",\n\t\"off\",\n\t\"office\",\n\t\"okinawa\",\n\t\"olayan\",\n\t\"olayangroup\",\n\t\"oldnavy\",\n\t\"ollo\",\n\t\"om\",\n\t\"omega\",\n\t\"one\",\n\t\"ong\",\n\t\"onl\",\n\t\"online\",\n\t\"onyourside\",\n\t\"ooo\",\n\t\"open\",\n\t\"oracle\",\n\t\"orange\",\n\t\"org\",\n\t\"organic\",\n\t\"origins\",\n\t\"osaka\",\n\t\"otsuka\",\n\t\"ott\",\n\t\"ovh\",\n\t\"pa\",\n\t\"page\",\n\t\"pamperedchef\",\n\t\"panasonic\",\n\t\"panerai\",\n\t\"paris\",\n\t\"pars\",\n\t\"partners\",\n\t\"parts\",\n\t\"party\",\n\t\"passagens\",\n\t\"pay\",\n\t\"pccw\",\n\t\"pe\",\n\t\"pet\",\n\t\"pf\",\n\t\"pfizer\",\n\t\"pg\",\n\t\"ph\",\n\t\"pharmacy\",\n\t\"philips\",\n\t\"phone\",\n\t\"photo\",\n\t\"photography\",\n\t\"photos\",\n\t\"physio\",\n\t\"piaget\",\n\t\"pics\",\n\t\"pictet\",\n\t\"pictures\",\n\t\"pid\",\n\t\"pin\",\n\t\"ping\",\n\t\"pink\",\n\t\"pioneer\",\n\t\"pizza\",\n\t\"pk\",\n\t\"pl\",\n\t\"place\",\n\t\"play\",\n\t\"playstation\",\n\t\"plumbing\",\n\t\"plus\",\n\t\"pm\",\n\t\"pn\",\n\t\"pnc\",\n\t\"pohl\",\n\t\"poker\",\n\t\"politie\",\n\t\"porn\",\n\t\"post\",\n\t\"pr\",\n\t\"pramerica\",\n\t\"praxi\",\n\t\"press\",\n\t\"prime\",\n\t\"pro\",\n\t\"prod\",\n\t\"productions\",\n\t\"prof\",\n\t\"progressive\",\n\t\"promo\",\n\t\"properties\",\n\t\"property\",\n\t\"protection\",\n\t\"pru\",\n\t\"prudential\",\n\t\"ps\",\n\t\"pt\",\n\t\"pub\",\n\t\"pw\",\n\t\"pwc\",\n\t\"py\",\n\t\"qa\",\n\t\"qpon\",\n\t\"quebec\",\n\t\"quest\",\n\t\"qvc\",\n\t\"racing\",\n\t\"radio\",\n\t\"raid\",\n\t\"re\",\n\t\"read\",\n\t\"realestate\",\n\t\"realtor\",\n\t\"realty\",\n\t\"recipes\",\n\t\"red\",\n\t\"redstone\",\n\t\"redumbrella\",\n\t\"rehab\",\n\t\"reise\",\n\t\"reisen\",\n\t\"reit\",\n\t\"reliance\",\n\t\"ren\",\n\t\"rent\",\n\t\"rentals\",\n\t\"repair\",\n\t\"report\",\n\t\"republican\",\n\t\"rest\",\n\t\"restaurant\",\n\t\"review\",\n\t\"reviews\",\n\t\"rexroth\",\n\t\"rich\",\n\t\"richardli\",\n\t\"ricoh\",\n\t\"rightathome\",\n\t\"ril\",\n\t\"rio\",\n\t\"rip\",\n\t\"rmit\",\n\t\"ro\",\n\t\"rocher\",\n\t\"rocks\",\n\t\"rodeo\",\n\t\"rogers\",\n\t\"room\",\n\t\"rs\",\n\t\"rsvp\",\n\t\"ru\",\n\t\"rugby\",\n\t\"ruhr\",\n\t\"run\",\n\t\"rw\",\n\t\"rwe\",\n\t\"ryukyu\",\n\t\"sa\",\n\t\"saarland\",\n\t\"safe\",\n\t\"safety\",\n\t\"sakura\",\n\t\"sale\",\n\t\"salon\",\n\t\"samsclub\",\n\t\"samsung\",\n\t\"sandvik\",\n\t\"sandvikcoromant\",\n\t\"sanofi\",\n\t\"sap\",\n\t\"sapo\",\n\t\"sarl\",\n\t\"sas\",\n\t\"save\",\n\t\"saxo\",\n\t\"sb\",\n\t\"sbi\",\n\t\"sbs\",\n\t\"sc\",\n\t\"sca\",\n\t\"scb\",\n\t\"schaeffler\",\n\t\"schmidt\",\n\t\"scholarships\",\n\t\"school\",\n\t\"schule\",\n\t\"schwarz\",\n\t\"science\",\n\t\"scjohnson\",\n\t\"scor\",\n\t\"scot\",\n\t\"sd\",\n\t\"se\",\n\t\"seat\",\n\t\"secure\",\n\t\"security\",\n\t\"seek\",\n\t\"select\",\n\t\"sener\",\n\t\"services\",\n\t\"ses\",\n\t\"seven\",\n\t\"sew\",\n\t\"sex\",\n\t\"sexy\",\n\t\"sfr\",\n\t\"sg\",\n\t\"sh\",\n\t\"shangrila\",\n\t\"sharp\",\n\t\"shaw\",\n\t\"shell\",\n\t\"shia\",\n\t\"shiksha\",\n\t\"shoes\",\n\t\"shop\",\n\t\"shopping\",\n\t\"shouji\",\n\t\"show\",\n\t\"showtime\",\n\t\"shriram\",\n\t\"si\",\n\t\"silk\",\n\t\"sina\",\n\t\"singles\",\n\t\"site\",\n\t\"sj\",\n\t\"sk\",\n\t\"ski\",\n\t\"skin\",\n\t\"sky\",\n\t\"skype\",\n\t\"sl\",\n\t\"sling\",\n\t\"sm\",\n\t\"smart\",\n\t\"smile\",\n\t\"sn\",\n\t\"sncf\",\n\t\"so\",\n\t\"soccer\",\n\t\"social\",\n\t\"softbank\",\n\t\"software\",\n\t\"sohu\",\n\t\"solar\",\n\t\"solutions\",\n\t\"song\",\n\t\"sony\",\n\t\"soy\",\n\t\"space\",\n\t\"spiegel\",\n\t\"spot\",\n\t\"spreadbetting\",\n\t\"sr\",\n\t\"srl\",\n\t\"srt\",\n\t\"st\",\n\t\"stada\",\n\t\"staples\",\n\t\"star\",\n\t\"starhub\",\n\t\"statebank\",\n\t\"statefarm\",\n\t\"statoil\",\n\t\"stc\",\n\t\"stcgroup\",\n\t\"stockholm\",\n\t\"storage\",\n\t\"store\",\n\t\"stream\",\n\t\"studio\",\n\t\"study\",\n\t\"style\",\n\t\"su\",\n\t\"sucks\",\n\t\"supplies\",\n\t\"supply\",\n\t\"support\",\n\t\"surf\",\n\t\"surgery\",\n\t\"suzuki\",\n\t\"sv\",\n\t\"swatch\",\n\t\"swiftcover\",\n\t\"swiss\",\n\t\"sx\",\n\t\"sy\",\n\t\"sydney\",\n\t\"symantec\",\n\t\"systems\",\n\t\"sz\",\n\t\"tab\",\n\t\"taipei\",\n\t\"talk\",\n\t\"taobao\",\n\t\"target\",\n\t\"tatamotors\",\n\t\"tatar\",\n\t\"tattoo\",\n\t\"tax\",\n\t\"taxi\",\n\t\"tc\",\n\t\"tci\",\n\t\"td\",\n\t\"tdk\",\n\t\"team\",\n\t\"tech\",\n\t\"technology\",\n\t\"tel\",\n\t\"telecity\",\n\t\"telefonica\",\n\t\"temasek\",\n\t\"tennis\",\n\t\"teva\",\n\t\"tf\",\n\t\"tg\",\n\t\"th\",\n\t\"thd\",\n\t\"theater\",\n\t\"theatre\",\n\t\"tiaa\",\n\t\"tickets\",\n\t\"tienda\",\n\t\"tiffany\",\n\t\"tips\",\n\t\"tires\",\n\t\"tirol\",\n\t\"tj\",\n\t\"tjmaxx\",\n\t\"tjx\",\n\t\"tk\",\n\t\"tkmaxx\",\n\t\"tl\",\n\t\"tm\",\n\t\"tmall\",\n\t\"tn\",\n\t\"to\",\n\t\"today\",\n\t\"tokyo\",\n\t\"tools\",\n\t\"top\",\n\t\"toray\",\n\t\"toshiba\",\n\t\"total\",\n\t\"tours\",\n\t\"town\",\n\t\"toyota\",\n\t\"toys\",\n\t\"tr\",\n\t\"trade\",\n\t\"trading\",\n\t\"training\",\n\t\"travel\",\n\t\"travelchannel\",\n\t\"travelers\",\n\t\"travelersinsurance\",\n\t\"trust\",\n\t\"trv\",\n\t\"tt\",\n\t\"tube\",\n\t\"tui\",\n\t\"tunes\",\n\t\"tushu\",\n\t\"tv\",\n\t\"tvs\",\n\t\"tw\",\n\t\"tz\",\n\t\"ua\",\n\t\"ubank\",\n\t\"ubs\",\n\t\"uconnect\",\n\t\"ug\",\n\t\"uk\",\n\t\"unicom\",\n\t\"university\",\n\t\"uno\",\n\t\"uol\",\n\t\"ups\",\n\t\"us\",\n\t\"uy\",\n\t\"uz\",\n\t\"va\",\n\t\"vacations\",\n\t\"vana\",\n\t\"vanguard\",\n\t\"vc\",\n\t\"ve\",\n\t\"vegas\",\n\t\"ventures\",\n\t\"verisign\",\n\t\"versicherung\",\n\t\"vet\",\n\t\"vg\",\n\t\"vi\",\n\t\"viajes\",\n\t\"video\",\n\t\"vig\",\n\t\"viking\",\n\t\"villas\",\n\t\"vin\",\n\t\"vip\",\n\t\"virgin\",\n\t\"visa\",\n\t\"vision\",\n\t\"vista\",\n\t\"vistaprint\",\n\t\"viva\",\n\t\"vivo\",\n\t\"vlaanderen\",\n\t\"vn\",\n\t\"vodka\",\n\t\"volkswagen\",\n\t\"volvo\",\n\t\"vote\",\n\t\"voting\",\n\t\"voto\",\n\t\"voyage\",\n\t\"vu\",\n\t\"vuelos\",\n\t\"wales\",\n\t\"walmart\",\n\t\"walter\",\n\t\"wang\",\n\t\"wanggou\",\n\t\"warman\",\n\t\"watch\",\n\t\"watches\",\n\t\"weather\",\n\t\"weatherchannel\",\n\t\"webcam\",\n\t\"weber\",\n\t\"website\",\n\t\"wed\",\n\t\"wedding\",\n\t\"weibo\",\n\t\"weir\",\n\t\"wf\",\n\t\"whoswho\",\n\t\"wien\",\n\t\"wiki\",\n\t\"williamhill\",\n\t\"win\",\n\t\"windows\",\n\t\"wine\",\n\t\"winners\",\n\t\"wme\",\n\t\"wolterskluwer\",\n\t\"woodside\",\n\t\"work\",\n\t\"works\",\n\t\"world\",\n\t\"wow\",\n\t\"ws\",\n\t\"wtc\",\n\t\"wtf\",\n\t\"xbox\",\n\t\"xerox\",\n\t\"xfinity\",\n\t\"xihuan\",\n\t\"xin\",\n\t\"xn--11b4c3d\",\n\t\"xn--1ck2e1b\",\n\t\"xn--1qqw23a\",\n\t\"xn--30rr7y\",\n\t\"xn--3bst00m\",\n\t\"xn--3ds443g\",\n\t\"xn--3e0b707e\",\n\t\"xn--3oq18vl8pn36a\",\n\t\"xn--3pxu8k\",\n\t\"xn--42c2d9a\",\n\t\"xn--45brj9c\",\n\t\"xn--45q11c\",\n\t\"xn--4gbrim\",\n\t\"xn--54b7fta0cc\",\n\t\"xn--55qw42g\",\n\t\"xn--55qx5d\",\n\t\"xn--5su34j936bgsg\",\n\t\"xn--5tzm5g\",\n\t\"xn--6frz82g\",\n\t\"xn--6qq986b3xl\",\n\t\"xn--80adxhks\",\n\t\"xn--80ao21a\",\n\t\"xn--80aqecdr1a\",\n\t\"xn--80asehdb\",\n\t\"xn--80aswg\",\n\t\"xn--8y0a063a\",\n\t\"xn--90a3ac\",\n\t\"xn--90ae\",\n\t\"xn--90ais\",\n\t\"xn--9dbq2a\",\n\t\"xn--9et52u\",\n\t\"xn--9krt00a\",\n\t\"xn--b4w605ferd\",\n\t\"xn--bck1b9a5dre4c\",\n\t\"xn--c1avg\",\n\t\"xn--c2br7g\",\n\t\"xn--cck2b3b\",\n\t\"xn--cg4bki\",\n\t\"xn--clchc0ea0b2g2a9gcd\",\n\t\"xn--czr694b\",\n\t\"xn--czrs0t\",\n\t\"xn--czru2d\",\n\t\"xn--d1acj3b\",\n\t\"xn--d1alf\",\n\t\"xn--e1a4c\",\n\t\"xn--eckvdtc9d\",\n\t\"xn--efvy88h\",\n\t\"xn--estv75g\",\n\t\"xn--fct429k\",\n\t\"xn--fhbei\",\n\t\"xn--fiq228c5hs\",\n\t\"xn--fiq64b\",\n\t\"xn--fiqs8s\",\n\t\"xn--fiqz9s\",\n\t\"xn--fjq720a\",\n\t\"xn--flw351e\",\n\t\"xn--fpcrj9c3d\",\n\t\"xn--fzc2c9e2c\",\n\t\"xn--fzys8d69uvgm\",\n\t\"xn--g2xx48c\",\n\t\"xn--gckr3f0f\",\n\t\"xn--gecrj9c\",\n\t\"xn--gk3at1e\",\n\t\"xn--h2brj9c\",\n\t\"xn--hxt814e\",\n\t\"xn--i1b6b1a6a2e\",\n\t\"xn--imr513n\",\n\t\"xn--io0a7i\",\n\t\"xn--j1aef\",\n\t\"xn--j1amh\",\n\t\"xn--j6w193g\",\n\t\"xn--jlq61u9w7b\",\n\t\"xn--jvr189m\",\n\t\"xn--kcrx77d1x4a\",\n\t\"xn--kprw13d\",\n\t\"xn--kpry57d\",\n\t\"xn--kpu716f\",\n\t\"xn--kput3i\",\n\t\"xn--l1acc\",\n\t\"xn--lgbbat1ad8j\",\n\t\"xn--mgb9awbf\",\n\t\"xn--mgba3a3ejt\",\n\t\"xn--mgba3a4f16a\",\n\t\"xn--mgba7c0bbn0a\",\n\t\"xn--mgbaam7a8h\",\n\t\"xn--mgbab2bd\",\n\t\"xn--mgbai9azgqp6j\",\n\t\"xn--mgbayh7gpa\",\n\t\"xn--mgbb9fbpob\",\n\t\"xn--mgbbh1a71e\",\n\t\"xn--mgbc0a9azcg\",\n\t\"xn--mgbca7dzdo\",\n\t\"xn--mgberp4a5d4ar\",\n\t\"xn--mgbi4ecexp\",\n\t\"xn--mgbpl2fh\",\n\t\"xn--mgbt3dhd\",\n\t\"xn--mgbtx2b\",\n\t\"xn--mgbx4cd0ab\",\n\t\"xn--mix891f\",\n\t\"xn--mk1bu44c\",\n\t\"xn--mxtq1m\",\n\t\"xn--ngbc5azd\",\n\t\"xn--ngbe9e0a\",\n\t\"xn--ngbrx\",\n\t\"xn--node\",\n\t\"xn--nqv7f\",\n\t\"xn--nqv7fs00ema\",\n\t\"xn--nyqy26a\",\n\t\"xn--o3cw4h\",\n\t\"xn--ogbpf8fl\",\n\t\"xn--p1acf\",\n\t\"xn--p1ai\",\n\t\"xn--pbt977c\",\n\t\"xn--pgbs0dh\",\n\t\"xn--pssy2u\",\n\t\"xn--q9jyb4c\",\n\t\"xn--qcka1pmc\",\n\t\"xn--qxam\",\n\t\"xn--rhqv96g\",\n\t\"xn--rovu88b\",\n\t\"xn--s9brj9c\",\n\t\"xn--ses554g\",\n\t\"xn--t60b56a\",\n\t\"xn--tckwe\",\n\t\"xn--tiq49xqyj\",\n\t\"xn--unup4y\",\n\t\"xn--vermgensberater-ctb\",\n\t\"xn--vermgensberatung-pwb\",\n\t\"xn--vhquv\",\n\t\"xn--vuq861b\",\n\t\"xn--w4r85el8fhu5dnra\",\n\t\"xn--w4rs40l\",\n\t\"xn--wgbh1c\",\n\t\"xn--wgbl6a\",\n\t\"xn--xhq521b\",\n\t\"xn--xkc2al3hye2a\",\n\t\"xn--xkc2dl3a5ee0h\",\n\t\"xn--y9a3aq\",\n\t\"xn--yfro4i67o\",\n\t\"xn--ygbi2ammx\",\n\t\"xn--zfr164b\",\n\t\"xperia\",\n\t\"xxx\",\n\t\"xyz\",\n\t\"yachts\",\n\t\"yahoo\",\n\t\"yamaxun\",\n\t\"yandex\",\n\t\"ye\",\n\t\"yodobashi\",\n\t\"yoga\",\n\t\"yokohama\",\n\t\"you\",\n\t\"youtube\",\n\t\"yt\",\n\t\"yun\",\n\t\"za\",\n\t\"zappos\",\n\t\"zara\",\n\t\"zero\",\n\t\"zip\",\n\t\"zippo\",\n\t\"zm\",\n\t\"zone\",\n\t\"zuerich\",\n\t\"zw\",\n}\n"
  },
  {
    "path": "pkg/data/usernames.go",
    "content": "package data\n\n// Usernames is an array of fictional usernames\nvar Usernames = []string{\n\t\"91bilal\",\n\t\"9lessons\",\n\t\"AM_Kn2\",\n\t\"BillSKenney\",\n\t\"BrianPurkiss\",\n\t\"BryanHorsey\",\n\t\"Chakintosh\",\n\t\"ChrisFarina78\",\n\t\"GavicoInd\",\n\t\"HenryHoffman\",\n\t\"IsaryAmairani\",\n\t\"Karimmove\",\n\t\"LucasPerdidao\",\n\t\"ManikRathee\",\n\t\"RussellBishop\",\n\t\"S0ufi4n3\",\n\t\"SULiik\",\n\t\"Silveredge9\",\n\t\"Skyhartman\",\n\t\"Stievius\",\n\t\"VinThomas\",\n\t\"ZacharyZorbas\",\n\t\"_shahedk\",\n\t\"_victa\",\n\t\"aaronalfred\",\n\t\"aaroni\",\n\t\"aaronkwhite\",\n\t\"abdullindenis\",\n\t\"abelcabans\",\n\t\"abotap\",\n\t\"abovefunction\",\n\t\"adamsxu\",\n\t\"adellecharles\",\n\t\"ademilter\",\n\t\"adobi\",\n\t\"agromov\",\n\t\"ahmadajmi\",\n\t\"ahmetalpbalkan\",\n\t\"ahmetsulek\",\n\t\"akmur\",\n\t\"alagoon\",\n\t\"allthingssmitty\",\n\t\"alxndrustinov\",\n\t\"amanruzaini\",\n\t\"anaami\",\n\t\"andrea211087\",\n\t\"andrewarrow\",\n\t\"andrewcohen\",\n\t\"andychipster\",\n\t\"andyisonline\",\n\t\"angelceballos\",\n\t\"ankitind\",\n\t\"anoff\",\n\t\"antonyzotov\",\n\t\"areandacom\",\n\t\"areus\",\n\t\"ariil\",\n\t\"arindam_\",\n\t\"artem_kostenko\",\n\t\"arthurholcombe1\",\n\t\"atariboy\",\n\t\"ateneupopular\",\n\t\"axel\",\n\t\"badlittleduck\",\n\t\"baires\",\n\t\"baliomega\",\n\t\"baluli\",\n\t\"bassamology\",\n\t\"benefritz\",\n\t\"bermonpainter\",\n\t\"beweinreich\",\n\t\"bigmancho\",\n\t\"blakesimkins\",\n\t\"boxmodel\",\n\t\"bradenhamm\",\n\t\"brajeshwar\",\n\t\"brandclay\",\n\t\"brenton_clarke\",\n\t\"bublienko\",\n\t\"buleswapnil\",\n\t\"bungiwan\",\n\t\"buzzusborne\",\n\t\"calebogden\",\n\t\"carlosgavina\",\n\t\"catadeleon\",\n\t\"catarino\",\n\t\"cbracco\",\n\t\"cdharrison\",\n\t\"cemshid\",\n\t\"chacky14\",\n\t\"chadengle\",\n\t\"chaensel\",\n\t\"chandlervdw\",\n\t\"chanpory\",\n\t\"charliecwaite\",\n\t\"chatyrko\",\n\t\"claudioguglieri\",\n\t\"collegeman\",\n\t\"commadelimited\",\n\t\"coreyhaggard\",\n\t\"coreyweb\",\n\t\"croakx\",\n\t\"curiousoffice\",\n\t\"d_nny_m_cher\",\n\t\"dahparra\",\n\t\"damenleeturks\",\n\t\"danvernon\",\n\t\"dc_user\",\n\t\"derekebradley\",\n\t\"derienzo777\",\n\t\"devankoshal\",\n\t\"dhilipsiva\",\n\t\"dhooyenga\",\n\t\"diesellaws\",\n\t\"dingyi\",\n\t\"divya\",\n\t\"dpmachado\",\n\t\"duivvv\",\n\t\"eduardostuart\",\n\t\"ehsandiary\",\n\t\"enda\",\n\t\"envex\",\n\t\"erwanhesry\",\n\t\"exentrich\",\n\t\"falvarad\",\n\t\"felipecsl\",\n\t\"ffbel\",\n\t\"findingjenny\",\n\t\"flame_kaizar\",\n\t\"flashmurphy\",\n\t\"flexrs\",\n\t\"funwatercat\",\n\t\"g3d\",\n\t\"garand\",\n\t\"gcmorley\",\n\t\"gearpixels\",\n\t\"giancarlon\",\n\t\"gonzalorobaina\",\n\t\"gt\",\n\t\"guiiipontes\",\n\t\"guillemboti\",\n\t\"haligaliharun\",\n\t\"happypeter1983\",\n\t\"haydn_woods\",\n\t\"herrhaase\",\n\t\"heyimjuani\",\n\t\"heykenneth\",\n\t\"hgharrygo\",\n\t\"holdenweb\",\n\t\"horaciobella\",\n\t\"hugomano\",\n\t\"iamgarth\",\n\t\"ifarafonow\",\n\t\"igorgarybaldi\",\n\t\"ilya_pestov\",\n\t\"increase\",\n\t\"iqonicd\",\n\t\"isacosta\",\n\t\"ivanfilipovbg\",\n\t\"jakemoore\",\n\t\"jamiebrittain\",\n\t\"jarjan\",\n\t\"jayrobinson\",\n\t\"jedbridges\",\n\t\"jefffis\",\n\t\"jennyshen\",\n\t\"jeremiaha\",\n\t\"jervo\",\n\t\"jesseddy\",\n\t\"jitachi\",\n\t\"jm_denis\",\n\t\"jmillspaysbills\",\n\t\"joaoedumedeiros\",\n\t\"joelcipriano\",\n\t\"joelhelin\",\n\t\"jonathansimmons\",\n\t\"jordyvdboom\",\n\t\"joreira\",\n\t\"josemarques\",\n\t\"joshaustin\",\n\t\"joshhemsley\",\n\t\"joshuasortino\",\n\t\"kaelifa\",\n\t\"karalek\",\n\t\"karsh\",\n\t\"kennyadr\",\n\t\"kerem\",\n\t\"kerihenare\",\n\t\"keryilmaz\",\n\t\"kinday\",\n\t\"kkusaa\",\n\t\"kohette\",\n\t\"kolage\",\n\t\"koridhandy\",\n\t\"kosmar\",\n\t\"krasnoukhov\",\n\t\"krystalfister\",\n\t\"kurafire\",\n\t\"kurtinc\",\n\t\"kushsolitary\",\n\t\"kylefoundry\",\n\t\"langate\",\n\t\"leehambley\",\n\t\"leeiio\",\n\t\"leemunroe\",\n\t\"lewisainslie\",\n\t\"linux29\",\n\t\"llun\",\n\t\"logorado\",\n\t\"lokesh_coder\",\n\t\"ludwiczakpawel\",\n\t\"madysondesigns\",\n\t\"mahdif\",\n\t\"mahmoudmetwally\",\n\t\"malykhinv\",\n\t\"marakasina\",\n\t\"marcobarbosa\",\n\t\"markjenkins\",\n\t\"mattbilotti\",\n\t\"mattdetails\",\n\t\"maximseshuk\",\n\t\"mbilderbach\",\n\t\"mds\",\n\t\"megdraws\",\n\t\"mekal\",\n\t\"meln1ks\",\n\t\"michaelmartinho\",\n\t\"michigangraham\",\n\t\"michzen\",\n\t\"mikemai2awesome\",\n\t\"mizko\",\n\t\"moscoz\",\n\t\"mrjamesnoble\",\n\t\"mrmartineau\",\n\t\"mutlu82\",\n\t\"nacho\",\n\t\"nachtmeister\",\n\t\"namankreative\",\n\t\"nandini_m\",\n\t\"nateschulte\",\n\t\"nbirckel\",\n\t\"nelsonjoyce\",\n\t\"nemanjaivanovic\",\n\t\"nickfratter\",\n\t\"nicolai_larsen\",\n\t\"nicolasfolliot\",\n\t\"noxdzine\",\n\t\"oaktreemedia\",\n\t\"ooomz\",\n\t\"operatino\",\n\t\"opnsrce\",\n\t\"orkuncaylar\",\n\t\"osvaldas\",\n\t\"pcridesagain\",\n\t\"pechkinator\",\n\t\"peejfancher\",\n\t\"peterlandt\",\n\t\"picard102\",\n\t\"pifagor\",\n\t\"plbabin\",\n\t\"pmeissner\",\n\t\"poormini\",\n\t\"prrstn\",\n\t\"psdesignuk\",\n\t\"randomlies\",\n\t\"raquelwilson\",\n\t\"rdbannon\",\n\t\"rdsaunders\",\n\t\"renbyrd\",\n\t\"rickdt\",\n\t\"ripplemdk\",\n\t\"rmlewisuk\",\n\t\"robbschiller\",\n\t\"robergd\",\n\t\"rohixx\",\n\t\"roybarberuk\",\n\t\"rude\",\n\t\"runningskull\",\n\t\"ruzinav\",\n\t\"salleedesign\",\n\t\"samgrover\",\n\t\"samihah\",\n\t\"saschadroste\",\n\t\"saschamt\",\n\t\"scottkclark\",\n\t\"sdidonato\",\n\t\"serefka\",\n\t\"sgaurav_baghel\",\n\t\"shadeed9\",\n\t\"shalt0ni\",\n\t\"shaneIxD\",\n\t\"shanehudson\",\n\t\"sharvin\",\n\t\"silvanmuhlemann\",\n\t\"simobenso\",\n\t\"sindresorhus\",\n\t\"smaczny\",\n\t\"snowshade\",\n\t\"soffes\",\n\t\"solid_color\",\n\t\"souuf\",\n\t\"soyjavi\",\n\t\"sprayaga\",\n\t\"ssiskind\",\n\t\"sta1ex\",\n\t\"stan\",\n\t\"suprb\",\n\t\"suribbles\",\n\t\"swaplord\",\n\t\"sydlawrence\",\n\t\"syropian\",\n\t\"taylorling\",\n\t\"teeragit\",\n\t\"tereshenkov\",\n\t\"terryxlife\",\n\t\"tgerken\",\n\t\"thedamianhdez\",\n\t\"themadray\",\n\t\"therealmarvin\",\n\t\"thiagovernetti\",\n\t\"thierrykoblentz\",\n\t\"thinmatt\",\n\t\"timmillwood\",\n\t\"timothycd\",\n\t\"tjrus\",\n\t\"tomas_janousek\",\n\t\"tomaslau\",\n\t\"traneblow\",\n\t\"travis_arnold\",\n\t\"uberschizo\",\n\t\"ultragex\",\n\t\"unterdreht\",\n\t\"urrutimeoli\",\n\t\"uxalex\",\n\t\"vc27\",\n\t\"victorDubugras\",\n\t\"victorerixon\",\n\t\"vikasvinfotech\",\n\t\"vimarethomas\",\n\t\"vladarbatov\",\n\t\"vocino\",\n\t\"vovkasolovev\",\n\t\"we_social\",\n\t\"weglov\",\n\t\"wintopia\",\n\t\"wr\",\n\t\"wtrsld\",\n\t\"xtopherpaul\",\n\t\"yalozhkin\",\n\t\"yigitpinarbasi\",\n}\n"
  },
  {
    "path": "pkg/fakedata/column.go",
    "content": "package fakedata\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n)\n\n// A Column represents one field of data to generate\ntype Column struct {\n\tName     string\n\tKey      string\n\tGenerate func() string\n}\n\n// Columns is an array of Column\ntype Columns []Column\n\n// NewColumns returns an array of Columns using keys as a specification.\n// It returns an error with a line for each unknown key\nfunc NewColumns(keys []string) (cols Columns, err error) {\n\tcols = make(Columns, len(keys))\n\n\tf := newFactory()\n\n\tfor i, k := range keys {\n\t\tspecs := strings.Split(k, \":\")\n\n\t\tvalues := strings.Split(specs[0], \"=\")\n\t\tvar name, key, options string\n\n\t\tif len(values) == 2 {\n\t\t\tname = values[0]\n\t\t\tkey = values[1]\n\t\t} else {\n\t\t\tname = values[0]\n\t\t\tkey = values[0]\n\t\t}\n\n\t\tif len(specs) > 1 {\n\t\t\toptions = specs[1]\n\t\t}\n\n\t\tvar fn func() string\n\t\tfn, err = f.extractFunc(key, options)\n\t\tif err != nil {\n\t\t\treturn cols, err\n\t\t}\n\n\t\tcols[i].Name = name\n\t\tcols[i].Key = key\n\t\tcols[i].Generate = fn\n\t}\n\n\treturn cols, err\n}\n\n// GenerateRow generates a row of fake data using columns\n// in the specified format\nfunc (columns Columns) GenerateRow(f io.Writer, formatter Formatter) {\n\tvalues := make([]string, len(columns))\n\tfor i, column := range columns {\n\t\tvalues[i] = column.Generate()\n\t}\n\n\t_, _ = fmt.Fprintf(f, \"%s\\n\", formatter.Format(columns, values))\n}\n\n// GenerateHeader generates a header row using column names\n// in the specified format\nfunc (columns Columns) GenerateHeader(f io.Writer, formatter Formatter) {\n\tvalues := make([]string, len(columns))\n\tfor i, column := range columns {\n\t\tvalues[i] = column.Name\n\t}\n\n\t_, _ = fmt.Fprintf(f, \"%s\\n\", formatter.Format(columns, values))\n}\n"
  },
  {
    "path": "pkg/fakedata/column_test.go",
    "content": "package fakedata_test\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/lucapette/fakedata/pkg/fakedata\"\n)\n\ntype columnsTests []struct {\n\tname     string\n\tinput    []string\n\texpected fakedata.Columns\n\twantErr  bool\n}\n\nfunc columnsEql(a, b fakedata.Columns) bool {\n\tif len(a) != len(b) {\n\t\treturn false\n\t}\n\n\tfor i, col := range a {\n\t\tif !reflect.DeepEqual(col.Name, b[i].Name) ||\n\t\t\t!reflect.DeepEqual(col.Key, b[i].Key) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc TestNewColumns(t *testing.T) {\n\ttests := columnsTests{\n\t\t{\n\t\t\tname:     \"one column\",\n\t\t\tinput:    []string{\"email\"},\n\t\t\texpected: fakedata.Columns{{Key: \"email\", Name: \"email\"}},\n\t\t\twantErr:  false,\n\t\t},\n\t\t{\n\t\t\tname:     \"two columns\",\n\t\t\tinput:    []string{\"email\", \"domain\"},\n\t\t\texpected: fakedata.Columns{{Key: \"email\", Name: \"email\"}, {Key: \"domain\", Name: \"domain\"}},\n\t\t\twantErr:  false,\n\t\t},\n\t\t{\n\t\t\tname:    \"two columns, one column fails\",\n\t\t\tinput:   []string{\"email\", \"domain\", \"unsupportedgenerator\"},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"one column, all fails\",\n\t\t\tinput:   []string{\"madeupgenerator\"},\n\t\t\twantErr: true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactual, err := fakedata.NewColumns(tt.input)\n\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"wanted err to be %v but got %v. err: %v\", tt.wantErr, (err != nil), err)\n\t\t\t}\n\n\t\t\tif !tt.wantErr && !columnsEql(actual, tt.expected) {\n\t\t\t\tt.Errorf(\"expected %v to equal %v\", actual, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestNewColumnsWithName(t *testing.T) {\n\ttests := columnsTests{\n\t\t{\n\t\t\tname:     \"one column\",\n\t\t\tinput:    []string{\"login=email\"},\n\t\t\texpected: fakedata.Columns{{Key: \"email\", Name: \"login\"}},\n\t\t\twantErr:  false,\n\t\t},\n\t\t{\n\t\t\tname:     \"one column, unsupported generator\",\n\t\t\tinput:    []string{\"login=notagen\"},\n\t\t\texpected: fakedata.Columns{},\n\t\t\twantErr:  true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactual, err := fakedata.NewColumns(tt.input)\n\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"wanted err to be %v but got %v. err: %v\", tt.wantErr, (err != nil), err)\n\t\t\t}\n\n\t\t\tif !tt.wantErr && !columnsEql(actual, tt.expected) {\n\t\t\t\tt.Errorf(\"expected %v to equal %v\", actual, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nvar csv = fakedata.NewColumnFormatter(\",\")\nvar def = fakedata.NewColumnFormatter(\" \")\nvar tab = fakedata.NewColumnFormatter(\"\\t\")\n\ntype args struct {\n\tinput     []string\n\tformatter fakedata.Formatter\n}\n\nfunc TestGenerateRow(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\targs     args\n\t\texpected string\n\t}{\n\t\t{\n\t\t\t\"email\",\n\t\t\targs{[]string{\"email\"}, def},\n\t\t\t`^.+?@.+?\\..+$`,\n\t\t},\n\t\t{\n\t\t\t\"domain\",\n\t\t\targs{[]string{\"domain\"}, def},\n\t\t\t`^.+?\\..+?$`,\n\t\t},\n\t\t{\n\t\t\t\"username\",\n\t\t\targs{[]string{\"username\"}, def},\n\t\t\t`^[a-zA-Z0-9]{2,}$`,\n\t\t},\n\t\t{\n\t\t\t\"double\",\n\t\t\targs{[]string{\"double\"}, def},\n\t\t\t`^-?[0-9]+?(\\.[0-9]+?)?$`,\n\t\t},\n\t\t{\n\t\t\t\"date\",\n\t\t\targs{[]string{\"date\"}, def},\n\t\t\t`^\\d{4}-\\d{2}-\\d{2}$`,\n\t\t},\n\t\t{\n\t\t\t\"username domain\",\n\t\t\targs{[]string{\"username\", \"domain\"}, def},\n\t\t\t`^[a-zA-Z0-9]{2,} .+?\\..+?$`,\n\t\t},\n\t\t{\n\t\t\t\"username domain csv\",\n\t\t\targs{[]string{\"username\", \"domain\"}, csv},\n\t\t\t`^[a-zA-Z0-9]{2,},.+?\\..+?$`,\n\t\t},\n\t\t{\n\t\t\t\"username domain tab\",\n\t\t\targs{[]string{\"username\", \"domain\"}, tab},\n\t\t\t`^[a-zA-Z0-9]{2,}\\t.+?\\..+?$`,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tcolumns, err := fakedata.NewColumns(tt.args.input)\n\t\t\tif err != nil {\n\t\t\t\tt.Error(err.Error())\n\t\t\t}\n\t\t\tactual := bytes.Buffer{}\n\t\t\tcolumns.GenerateRow(&actual, tt.args.formatter)\n\n\t\t\tmatched, err := regexp.MatchString(tt.expected, strings.TrimRight(actual.String(), \"\\n\"))\n\t\t\tif err != nil {\n\t\t\t\tt.Error(err.Error())\n\t\t\t}\n\n\t\t\tif !matched {\n\t\t\t\tt.Errorf(\"expected %s to match '%s', but did not\", tt.expected, actual.String())\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGenerateRowWithIntRanges(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\targs     args\n\t\tmin, max int\n\t}{\n\t\t{\n\t\t\t\"int:1,10\",\n\t\t\targs{[]string{\"int:1,10\"}, def},\n\t\t\t1,\n\t\t\t100,\n\t\t},\n\t\t{\n\t\t\t\"int:100,200\",\n\t\t\targs{[]string{\"int:100,1200\"}, def},\n\t\t\t100,\n\t\t\t1200,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// this isn't an accurate way of testing random output\n\t\t\t// but it serves a practical purpose\n\t\t\tcolumns, err := fakedata.NewColumns(tt.args.input)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err.Error())\n\t\t\t}\n\t\t\tfor index := 0; index < 10000; index++ {\n\n\t\t\t\trow := bytes.Buffer{}\n\t\t\t\tcolumns.GenerateRow(&row, tt.args.formatter)\n\t\t\t\tactual, err := strconv.Atoi(strings.TrimRight(row.String(), \"\\n\"))\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatal(err.Error())\n\t\t\t\t}\n\n\t\t\t\tif actual < tt.min || actual > tt.max {\n\t\t\t\t\tt.Fatalf(\"expected a number between %d and %d, but got %d\", tt.min, tt.max, actual)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGenerateRowWithDateRanges(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\targs     args\n\t\tmin, max time.Time\n\t}{\n\t\t{\n\t\t\t\"date:2016-01-01,2016-12-31\",\n\t\t\targs{[]string{\"date:2016-01-01,2016-12-31\"}, def},\n\t\t\ttime.Date(2016, time.January, 1, 0, 0, 0, 0, time.UTC),\n\t\t\ttime.Date(2016, time.December, 31, 0, 0, 0, 0, time.UTC),\n\t\t},\n\t\t{\n\t\t\t\"date:2016-01-01,\",\n\t\t\targs{[]string{\"date:2016-01-01,\"}, def},\n\t\t\ttime.Date(2016, time.January, 1, 0, 0, 0, 0, time.UTC),\n\t\t\ttime.Now(),\n\t\t},\n\t\t{\n\t\t\t\"date:2046-01-01,2047-01-01\",\n\t\t\targs{[]string{\"date:2046-01-01,2047-01-01\"}, def},\n\t\t\ttime.Date(2046, time.January, 1, 0, 0, 0, 0, time.UTC),\n\t\t\ttime.Date(2047, time.January, 1, 0, 0, 0, 0, time.UTC),\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// this isn't an accurate way of testing random output\n\t\t\t// but it serves a practical purpose\n\t\t\tcolumns, err := fakedata.NewColumns(tt.args.input)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err.Error())\n\t\t\t}\n\t\t\tfor index := 0; index < 10000; index++ {\n\n\t\t\t\trow := bytes.Buffer{}\n\n\t\t\t\tcolumns.GenerateRow(&row, tt.args.formatter)\n\n\t\t\t\tformattedDate := fmt.Sprintf(\"%sT00:00:00.000Z\", strings.TrimRight(row.String(), \"\\n\"))\n\n\t\t\t\tactual, err := time.ParseInLocation(\"2006-01-02T15:04:05.000Z\", formattedDate, time.UTC)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatal(err.Error())\n\t\t\t\t}\n\n\t\t\t\tif actual.Before(tt.min) || actual.After(tt.max) {\n\t\t\t\t\tt.Fatalf(\"expected a date between %s and %s, but got %s\", tt.min, tt.max, actual)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGenerateRowWithEnum(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\targs     args\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\t\"enum\",\n\t\t\targs{[]string{\"enum\"}, def},\n\t\t\t[]string{\"foo\", \"bar\", \"baz\"},\n\t\t},\n\t\t{\n\t\t\t\"enum:Peter,Olivia,Walter\",\n\t\t\targs{[]string{\"enum:Peter,Olivia,Walter\"}, def},\n\t\t\t[]string{\"Peter\", \"Olivia\", \"Walter\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// this isn't an accurate way of testing random output\n\t\t\t// but it serves a practical purpose\n\t\t\tcolumns, err := fakedata.NewColumns(tt.args.input)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err.Error())\n\t\t\t}\n\t\t\tfor index := 0; index < 10000; index++ {\n\n\t\t\t\trow := bytes.Buffer{}\n\t\t\t\tcolumns.GenerateRow(&row, tt.args.formatter)\n\n\t\t\t\tvar found bool\n\t\t\t\tfor _, ex := range tt.expected {\n\t\t\t\t\tif strings.Compare(ex, strings.TrimRight(row.String(), \"\\n\")) == 0 {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !found {\n\t\t\t\t\tt.Fatalf(\"expected to find %s in %v, but did not\", row.String(), tt.expected)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/fakedata/completion.go",
    "content": "package fakedata\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/spf13/pflag\"\n)\n\nconst bashTemplate = `\n_fakedata()\n{\n    local cur prev opts\n    COMPREPLY=()\n    cur=\"${COMP_WORDS[COMP_CWORD]}\"\n    prev=\"${COMP_WORDS[COMP_CWORD-1]}\"\n    opts=\"%s\"\n\n    if [[ ${cur} == * ]] ; then\n        COMPREPLY=( $(compgen -W \"${opts}\" -- ${cur}) )\n        return 0\n    fi\n}\ncomplete -F _fakedata fakedata`\n\nconst zshTemplate = `\n_fakedata () {\n    local -a commands\n    IFS=$'\\n'\n    commands=(%s)\n    _describe 'arguments' commands\n}\ncompdef _fakedata fakedata`\n\nconst fishTemplate = \"complete -c fakedata -a '%s'\"\n\nfunc getTemplate(shell string) (string, error) {\n\tswitch shell {\n\tcase \"bash\":\n\t\treturn bashTemplate, nil\n\tcase \"zsh\":\n\t\treturn zshTemplate, nil\n\tcase \"fish\":\n\t\treturn fishTemplate, nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"shell %s not supported. See https://github.com/lucapette/fakedata#completion\", shell)\n\t}\n}\n\n// GetCompletionFunc returns a string representing a completion function for the\n// given shell. It returns an error for unsupported shells.\nfunc GetCompletionFunc(shell string) (string, error) {\n\tt, err := getTemplate(shell)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tgens := &bytes.Buffer{}\n\tallCliArgs := &bytes.Buffer{}\n\n\tfor _, gen := range NewGenerators() {\n\t\t_, err = fmt.Fprint(gens, gen.Name+\" \")\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\n\tpflag.VisitAll(func(f *pflag.Flag) {\n\t\t_, _ = fmt.Fprintf(allCliArgs, \"--%s \", f.Name)\n\t})\n\n\tcmdList := gens.String() + \" \" + allCliArgs.String()\n\treturn fmt.Sprintf(t, cmdList), nil\n}\n"
  },
  {
    "path": "pkg/fakedata/completion_test.go",
    "content": "package fakedata_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/lucapette/fakedata/pkg/fakedata\"\n)\n\nfunc TestPrintShellCompletionFunction(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tinput   string\n\t\twantErr bool\n\t}{\n\t\t{\"zsh shell\", \"zsh\", false},\n\t\t{\"bash shell\", \"bash\", false},\n\t\t{\"fish shell\", \"fish\", false},\n\t\t{\"bsh shell (spelling mistake)\", \"bsh\", true},\n\t\t{\"empty\", \"\", true},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tif _, err := fakedata.GetCompletionFunc(tc.input); err != nil && !tc.wantErr {\n\t\t\t\tt.Errorf(\"expected err to be %v but got %v\", tc.wantErr, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pkg/fakedata/formatter.go",
    "content": "package fakedata\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n)\n\n// Formatter is the interface wrapping the Format method we use to format each row\ntype Formatter interface {\n\tFormat(Columns, []string) string\n}\n\n// ColumnFormatter is a Formatter for character separated formats\ntype ColumnFormatter struct {\n\tSeparator string\n}\n\n// SQLFormatter is a Formatter for the SQL insert statement\ntype SQLFormatter struct {\n\tTable string\n}\n\n// NdjsonFormatter is a Formatter for http://ndjson.org/\ntype NdjsonFormatter struct {\n}\n\n// Format as character separated strings\nfunc (f *ColumnFormatter) Format(columns Columns, values []string) string {\n\treturn strings.Join(values, f.Separator)\n}\n\n// Format as SQL statements\nfunc (f *SQLFormatter) Format(columns Columns, values []string) string {\n\tsql := &bytes.Buffer{}\n\tnames := make([]string, len(columns))\n\n\tfor i, field := range columns {\n\t\tnames[i] = field.Name\n\t}\n\n\tformattedValues := make([]string, len(columns))\n\tfor i, value := range values {\n\t\tformattedValues[i] = fmt.Sprintf(\"'%s'\", value)\n\t}\n\n\tfmt.Fprintf(sql,\n\t\t\"INSERT INTO %s (%s) VALUES (%s);\",\n\t\tf.Table,\n\t\tstrings.Join(names, \",\"),\n\t\tstrings.Join(formattedValues, \",\"),\n\t)\n\n\treturn sql.String()\n}\n\n// Format as ndjson\nfunc (f *NdjsonFormatter) Format(columns Columns, values []string) string {\n\tdata := make(map[string]string, len(columns))\n\n\tfor i := 0; i < len(columns); i++ {\n\t\tdata[columns[i].Name] = values[i]\n\t}\n\n\tv, err := json.Marshal(data)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\tos.Exit(1)\n\t}\n\treturn string(v)\n}\n\n// NewColumnFormatter returns a ColumnFormatter using the sep string as a separator\nfunc NewColumnFormatter(sep string) (f *ColumnFormatter) {\n\treturn &ColumnFormatter{Separator: sep}\n}\n\n// NewSQLFormatter returns an SQLFormatter using the table string for table name generation\nfunc NewSQLFormatter(table string) (f *SQLFormatter) {\n\treturn &SQLFormatter{Table: table}\n}\n\n// NewNdjsonFormatter returns a NdjsonFormatter\nfunc NewNdjsonFormatter() (f *NdjsonFormatter) {\n\treturn &NdjsonFormatter{}\n}\n"
  },
  {
    "path": "pkg/fakedata/formatter_test.go",
    "content": "package fakedata_test\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/lucapette/fakedata/pkg/fakedata\"\n)\n\nvar columns = fakedata.Columns{{Name: \"name\", Key: \"name\"}, {Name: \"domain\", Key: \"domain\"}}\nvar values = []string{\"Grace Hopper\", \"example.com\"}\n\nfunc TestColumnFormatter(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tsep  string\n\t\twant string\n\t}{\n\t\t{\"default\", \" \", \"Grace Hopper example.com\"},\n\t\t{\"csv\", \",\", \"Grace Hopper,example.com\"},\n\t\t{\"tab\", \"\\t\", \"Grace Hopper\texample.com\"},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf := &fakedata.ColumnFormatter{Separator: tt.sep}\n\t\t\tif got := f.Format(columns, values); !reflect.DeepEqual(got, tt.want) {\n\t\t\t\tt.Errorf(\"ColumnFormatter.Format() = %v, want %v\", got, tt.want)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestSQLFormatter(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\ttable string\n\t\twant  string\n\t}{\n\t\t{\"table answer\", \"ANSWER\", \"INSERT INTO ANSWER (name,domain) VALUES ('Grace Hopper','example.com');\"},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf := &fakedata.SQLFormatter{Table: tt.table}\n\t\t\tif got := f.Format(columns, values); !reflect.DeepEqual(got, tt.want) {\n\t\t\t\tt.Errorf(\"SQLFormatter.Format() = %v, want %v\", got, tt.want)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestNdjsonFormatter(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\twant string\n\t}{\n\t\t{\"default\", \"{\\\"domain\\\":\\\"example.com\\\",\\\"name\\\":\\\"Grace Hopper\\\"}\"},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf := &fakedata.NdjsonFormatter{}\n\t\t\tif got := f.Format(columns, values); !reflect.DeepEqual(got, tt.want) {\n\t\t\t\tt.Errorf(\"NdjsonFormatter.Format() = %v, want %v\", got, tt.want)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc BenchmarkFormatters(b *testing.B) {\n\tcolumn := &fakedata.ColumnFormatter{}\n\tb.Run(\"ColumnFormatter\", func(b *testing.B) {\n\t\tfor i := 0; i < b.N; i++ {\n\t\t\tcolumn.Format(columns, values)\n\t\t}\n\t})\n\n\tndjson := &fakedata.NdjsonFormatter{}\n\tb.Run(\"NdjsonFormatter\", func(b *testing.B) {\n\t\tfor i := 0; i < b.N; i++ {\n\t\t\tndjson.Format(columns, values)\n\t\t}\n\t})\n\n\tsql := &fakedata.SQLFormatter{}\n\tb.Run(\"SQLFormatter\", func(b *testing.B) {\n\t\tfor i := 0; i < b.N; i++ {\n\t\t\tsql.Format(columns, values)\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "pkg/fakedata/generator.go",
    "content": "package fakedata\n\nimport (\n\t\"fmt\"\n\t\"math/rand\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/gofrs/uuid\"\n\t\"github.com/lucapette/fakedata/pkg/data\"\n)\n\n// A Generator is a func that generates random data along with its description\ntype Generator struct {\n\tFunc       func() string\n\tCustomFunc func(string) (func() string, error)\n\tDesc       string\n\tName       string\n\tHidden     bool\n}\n\n// Generators is an array of Generator\ntype Generators []Generator\n\n// IsCustom returns a bool indicating whether the generator has a CustomFunc or\n// not\nfunc (g Generator) IsCustom() bool {\n\treturn g.CustomFunc != nil\n}\n\n// NewGenerators returns the available generators\nfunc NewGenerators() (gens Generators) {\n\tf := newFactory()\n\n\tfor _, gen := range f.generators {\n\t\tgens = append(gens, gen)\n\t}\n\n\tsort.Slice(gens, func(i, j int) bool { return strings.Compare(gens[i].Name, gens[j].Name) < 0 })\n\treturn gens\n}\n\n// WithConstraints returns only the generators that accept constraints\nfunc (gens Generators) WithConstraints() (newGens Generators) {\n\tfor _, gen := range gens {\n\t\tif gen.IsCustom() {\n\t\t\tnewGens = append(newGens, gen)\n\t\t}\n\t}\n\treturn newGens\n}\n\n// Visible returns only the generators that should appear in the help list\nfunc (gens Generators) Visible() (newGens Generators) {\n\tfor _, gen := range gens {\n\t\tif !gen.Hidden {\n\t\t\tnewGens = append(newGens, gen)\n\t\t}\n\t}\n\treturn newGens\n}\n\n// FindByName returns, if present, the generator with the name string\nfunc (gens Generators) FindByName(name string) (gen *Generator) {\n\tfor _, g := range gens {\n\t\tif g.Name == name {\n\t\t\treturn &g\n\t\t}\n\t}\n\treturn gen\n}\n\nfunc withList(list []string) func() string {\n\treturn func() string {\n\t\treturn list[rand.Intn(len(list))]\n\t}\n}\n\nfunc withMapValues(m map[string]string) func() string {\n\tvalues := make([]string, len(m))\n\ti := 0\n\tfor _, v := range m {\n\t\tvalues[i] = v\n\t\ti++\n\t}\n\n\treturn withList(values)\n}\n\nvar tdl = withList(data.TLDs)\n\nvar host = withList([]string{\"test\", \"example\"})\n\nvar username = withList(data.Usernames)\n\nvar phoneCode = withMapValues(data.CountryCodes)\n\nfunc ipv4() string {\n\treturn fmt.Sprintf(\"%d.%d.%d.%d\", 1+rand.Intn(253), rand.Intn(255), rand.Intn(255), 1+rand.Intn(253))\n}\n\nfunc ipv6() string {\n\treturn fmt.Sprintf(\"2001:cafe:%x:%x:%x:%x:%x:%x\", rand.Intn(255), rand.Intn(255), rand.Intn(255), rand.Intn(255), rand.Intn(255), rand.Intn(255))\n}\n\nfunc mac() string {\n\treturn fmt.Sprintf(\"%X:%X:%X:%X:%X:%X\", rand.Intn(255), rand.Intn(255), rand.Intn(255), rand.Intn(255), rand.Intn(255), rand.Intn(255))\n}\n\nfunc latitude() string {\n\treturn strconv.FormatFloat((rand.Float64()*180)-90, 'f', 6, 64)\n}\n\nfunc longitude() string {\n\treturn strconv.FormatFloat((rand.Float64()*360)-180, 'f', 6, 64)\n}\n\nfunc double() string {\n\treturn strconv.FormatFloat(rand.NormFloat64()*1000, 'f', 4, 64)\n}\n\nfunc domain() string {\n\treturn host() + \".\" + tdl()\n}\n\nfunc date(options string) (f func() string, err error) {\n\tvar minDate, maxDate string\n\n\tendDate := time.Now()\n\tstartDate := endDate.AddDate(-1, 0, 0)\n\n\tdateRange := strings.Split(options, \",\")\n\tminDate = dateRange[0]\n\n\tif len(dateRange) > 1 {\n\t\tmaxDate = dateRange[1]\n\t}\n\n\tif len(minDate) > 0 {\n\t\tif len(maxDate) > 0 {\n\t\t\tformattedMax := fmt.Sprintf(\"%sT00:00:00.000Z\", maxDate)\n\n\t\t\tvar d time.Time\n\t\t\td, err = time.Parse(\"2006-01-02T15:04:05.000Z\", formattedMax)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"problem parsing maxDate date: %v\", err)\n\t\t\t}\n\n\t\t\tendDate = d\n\t\t}\n\n\t\tformattedMin := fmt.Sprintf(\"%sT00:00:00.000Z\", minDate)\n\n\t\tvar d time.Time\n\t\td, err = time.Parse(\"2006-01-02T15:04:05.000Z\", formattedMin)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"problem parsing mix date: %v\", err)\n\t\t}\n\n\t\tstartDate = d\n\t}\n\n\tif startDate.After(endDate) {\n\t\treturn nil, fmt.Errorf(\"%v is after %v\", startDate, endDate)\n\t}\n\n\treturn func() string {\n\t\treturn startDate.Add(time.Duration(rand.Intn(int(endDate.Sub(startDate))))).Format(\"2006-01-02\")\n\t}, err\n}\n\nfunc integer(options string) (func() string, error) {\n\tminInt := 0\n\tmaxInt := 1000\n\tvar low, high string\n\tintRange := strings.Split(options, \",\")\n\tlow = intRange[0]\n\n\tif len(intRange) > 1 {\n\t\thigh = intRange[1]\n\t}\n\n\tif len(low) > 0 {\n\t\tm, err := strconv.Atoi(low)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"could not convert min: %v\", err)\n\t\t}\n\n\t\tminInt = m\n\n\t\tif len(high) > 0 {\n\t\t\tm, err = strconv.Atoi(high)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"could not convert max: %v\", err)\n\t\t\t}\n\n\t\t\tmaxInt = m\n\t\t}\n\t}\n\n\tif minInt > maxInt {\n\t\treturn nil, fmt.Errorf(\"max(%d) is smaller than min(%d)\", maxInt, minInt)\n\t}\n\n\treturn func() string { return strconv.Itoa(minInt + rand.Intn(maxInt+1-minInt)) }, nil\n}\n\nfunc file(path string) (func() string, error) {\n\tif path == \"\" {\n\t\treturn nil, fmt.Errorf(\"no file path given\")\n\t}\n\n\tfilePath := strings.Trim(path, \"'\\\"\")\n\n\tf, err := os.ReadFile(filePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not read file %s: %v\", filePath, err)\n\t}\n\n\tcontent := strings.Split(strings.Trim(string(f), \"\\n\"), \"\\n\")\n\tlist := withList(content)\n\n\treturn func() string { return list() }, nil\n}\n\nfunc enum(options string) (func() string, error) {\n\tlist := []string{\"foo\", \"bar\", \"baz\"}\n\tif options != \"\" {\n\t\tlist = strings.Split(options, \",\")\n\t}\n\treturn withList(list), nil\n}\n\nfunc localPhone(options string) (func() string, error) {\n\tif len(options) == 0 {\n\t\treturn integer(\"10000000,99999999\")\n\t}\n\tnumDigits, err := strconv.Atoi(options)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch numDigits {\n\tcase 8:\n\t\treturn integer(\"10000000,99999999\")\n\tcase 9:\n\t\treturn integer(\"100000000,999999999\")\n\tcase 10:\n\t\treturn integer(\"1000000000,9999999999\")\n\tcase 11:\n\t\treturn integer(\"10000000000,99999999999\")\n\tcase 12:\n\t\treturn integer(\"100000000000,999999999999\")\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"digits must be >=8 and <=12\")\n\t}\n}\n\nfunc timestamp() func() string {\n\tnow := time.Now()\n\treturn func() string {\n\t\treturn fmt.Sprintf(\"%d\", rand.Int63n(now.Unix()))\n\t}\n}\n\nfunc uuidv1() string {\n\tu1, err := uuid.NewV1()\n\tif err != nil {\n\t\tfmt.Printf(\"failed to generate uuidv1: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n\treturn u1.String()\n}\n\nfunc uuidv4() string {\n\tu4, err := uuid.NewV4()\n\tif err != nil {\n\t\tfmt.Printf(\"failed to generate uuidv4: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n\treturn u4.String()\n}\n\nfunc uuidv6() string {\n\tu6, err := uuid.NewV6()\n\tif err != nil {\n\t\tfmt.Printf(\"failed to generate uuidv6: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n\treturn u6.String()\n}\n\nfunc uuidv7() string {\n\tu7, err := uuid.NewV6()\n\tif err != nil {\n\t\tfmt.Printf(\"failed to generate uuidv7: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n\treturn u7.String()\n}\n\nfunc phoneGenerator(phoneCodeFunc func() string) func() string {\n\tvar localPhone, _ = integer(\"10000000,9999999999\")\n\treturn func() string {\n\t\tnumber := \"+\" + phoneCodeFunc() + localPhone()\n\t\tif len(number) > 15 {\n\t\t\tnumber = number[0:14]\n\t\t}\n\t\treturn number\n\t}\n}\n\nfunc phone() string {\n\treturn phoneGenerator(phoneCode)()\n}\n\nfunc countryPhone(countryCode string) func() string {\n\treturn phoneGenerator(func() string { return data.CountryCodes[countryCode] })\n}\n\ntype generatorsMap map[string]Generator\n\nfunc (gM generatorsMap) addGen(g Generator) {\n\tgM[g.Name] = g\n}\n\ntype factory struct {\n\tgenerators generatorsMap\n}\n\nfunc (f factory) extractFunc(key, options string) (fn func() string, err error) {\n\tgen, ok := f.generators[key]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"unknown generator: %s\", key)\n\t}\n\n\tif gen.IsCustom() {\n\t\treturn gen.CustomFunc(options)\n\t}\n\n\treturn gen.Func, nil\n}\n\nfunc newFactory() (f factory) {\n\tgenerators := make(generatorsMap)\n\n\tgenerators.addGen(Generator{\n\t\tName: \"domain.tld\",\n\t\tDesc: \"valid TLD name from https://data.iana.org/TLD/tlds-alpha-by-domain.txt\",\n\t\tFunc: tdl,\n\t})\n\n\tcountryCodes := make([]string, len(data.CountryCodes))\n\ti := 0\n\tfor k := range data.CountryCodes {\n\t\tcountryCodes[i] = k\n\t\ti++\n\t\tgenerators.addGen(Generator{\n\t\t\tName:   \"phone.\" + strings.ToLower(k),\n\t\t\tDesc:   k + \" phone number\",\n\t\t\tFunc:   countryPhone(k),\n\t\t\tHidden: true,\n\t\t})\n\t}\n\n\tgenerators.addGen(Generator{Name: \"country\", Desc: \"Full country name\", Func: withList(data.Countries)})\n\tgenerators.addGen(Generator{Name: \"country.code\", Desc: \"2-digit country code\", Func: withList(countryCodes)})\n\n\tgenerators.addGen(Generator{Name: \"phone\", Desc: \"Phone number according to E.164\", Func: phone})\n\tgenerators.addGen(Generator{Name: \"phone.code\", Desc: \"Calling country code\", Func: phoneCode})\n\n\tgenerators.addGen(Generator{Name: \"state\", Desc: \"Full US state name\", Func: withList(data.States)})\n\n\tgenerators.addGen(Generator{Name: \"state.code\", Desc: \"2-digit US state name\", Func: withList(data.StateCodes)})\n\n\tgenerators.addGen(Generator{Name: \"timezone\", Desc: \"tz in the form Area/City\", Func: withList(data.Timezones)})\n\n\tgenerators.addGen(Generator{Name: \"username\", Desc: `username using the pattern \\w+`, Func: username})\n\n\tgenerators.addGen(Generator{Name: \"nationality\", Desc: \"nationality\", Func: withList(data.Nationalities)})\n\n\tfirstNames := withList(data.Firstnames)\n\tgenerators.addGen(Generator{Name: \"name.first\", Desc: \"capitalized first name\", Func: firstNames})\n\n\tlastNames := withList(data.Lastnames)\n\tgenerators.addGen(Generator{Name: \"name.last\", Desc: \"capitalized last name\", Func: lastNames})\n\n\tgenerators.addGen(Generator{Name: \"color\", Desc: \"one word color\", Func: withList(data.Colors)})\n\n\tgenerators.addGen(Generator{\n\t\tName: \"event.action\",\n\t\tDesc: `clicked|purchased|viewed|watched`,\n\t\tFunc: withList([]string{\"clicked\", \"purchased\", \"viewed\", \"watched\"}),\n\t})\n\n\tgenerators.addGen(Generator{\n\t\tName: \"http.method\",\n\t\tDesc: `DELETE|GET|HEAD|OPTION|PATCH|POST|PUT`,\n\t\tFunc: withList([]string{\"DELETE\", \"GET\", \"HEAD\", \"OPTION\", \"PATCH\", \"POST\", \"PUT\"}),\n\t})\n\n\tgenerators.addGen(Generator{\n\t\tName: \"name\",\n\t\tDesc: `name.first + \" \" + name.last`,\n\t\tFunc: func() string {\n\t\t\treturn firstNames() + \" \" + lastNames()\n\t\t},\n\t})\n\n\tgenerators.addGen(Generator{\n\t\tName: \"email\",\n\t\tDesc: \"email\",\n\t\tFunc: func() string {\n\t\t\treturn username() + \"@\" + domain()\n\t\t},\n\t})\n\n\tgenerators.addGen(Generator{Name: \"domain\", Desc: \"domain\", Func: domain})\n\n\tgenerators.addGen(Generator{Name: \"ipv4\", Desc: \"ipv4\", Func: ipv4})\n\n\tgenerators.addGen(Generator{Name: \"ipv6\", Desc: \"ipv6\", Func: ipv6})\n\n\tgenerators.addGen(Generator{Name: \"mac.address\", Desc: \"mac address\", Func: mac})\n\n\tgenerators.addGen(Generator{Name: \"latitude\", Desc: \"latitude\", Func: latitude})\n\n\tgenerators.addGen(Generator{Name: \"longitude\", Desc: \"longitude\", Func: longitude})\n\n\tgenerators.addGen(Generator{Name: \"double\", Desc: \"double number\", Func: double})\n\n\tgenerators.addGen(Generator{\n\t\tName: \"noun\",\n\t\tDesc: \"noun from https://github.com/dariusk/corpora/blob/master/data/words/nouns.json\",\n\t\tFunc: withList(data.Nouns),\n\t})\n\n\tgenerators.addGen(Generator{\n\t\tName: \"emoji\",\n\t\tDesc: \"emoji from https://github.com/dariusk/corpora/blob/master/data/words/emojis.json\",\n\t\tFunc: withList(data.Emoji),\n\t})\n\n\tgenerators.addGen(Generator{Name: \"adjectives\", Desc: \"adjective\", Func: withList(data.Adjectives)})\n\n\tgenerators.addGen(Generator{Name: \"animal\", Desc: \"animal breed\", Func: withList(data.Animals)})\n\n\tgenerators.addGen(Generator{Name: \"animal.cat\", Desc: \"random cat breed\", Func: withList(data.Cats)})\n\n\tgenerators.addGen(Generator{Name: \"animal.dog\", Desc: \"dog breed\", Func: withList(data.Dogs)})\n\n\tgenerators.addGen(Generator{Name: \"city\", Desc: \"US city name\", Func: withList(data.Cities)})\n\n\tgenerators.addGen(Generator{Name: \"dinosaur\", Desc: \"Dinosaur name\", Func: withList(data.Dinosaurs)})\n\n\tgenerators.addGen(Generator{Name: \"industry\", Desc: \"industry\", Func: withList(data.Industries)})\n\n\tgenerators.addGen(Generator{Name: \"occupation\", Desc: \"occupation\", Func: withList(data.Occupations)})\n\n\tgenerators.addGen(Generator{Name: \"sentence\", Desc: \"sentence\", Func: withList(data.Sentences)})\n\n\t// custom generators\n\tgenerators.addGen(Generator{\n\t\tName:       \"date\",\n\t\tDesc:       `random date in the format YYYY-MM-DD. By default, it generates dates in the last year`,\n\t\tCustomFunc: date,\n\t})\n\n\tgenerators.addGen(Generator{\n\t\tName:       \"int\",\n\t\tDesc:       \"positive integer between 1 and 1000\",\n\t\tCustomFunc: integer,\n\t})\n\n\tgenerators.addGen(Generator{\n\t\tName:       \"enum\",\n\t\tDesc:       `value from an enum. By default, the enum is foo,bar,baz. It accepts a list of comma-separated values`,\n\t\tCustomFunc: enum,\n\t})\n\n\tgenerators.addGen(Generator{\n\t\tName:       \"file\",\n\t\tDesc:       `random value from a file. It accepts a file path. It can be either relative or absolute. The file must contain a value per line`,\n\t\tCustomFunc: file,\n\t})\n\n\tgenerators.addGen(Generator{\n\t\tName:       \"phone.local\",\n\t\tDesc:       \"phone number without calling country code. It accepts an integer N number of digits. Min: 8, Max: 12\",\n\t\tCustomFunc: localPhone,\n\t})\n\n\tgenerators.addGen(Generator{Name: \"uuidv1\", Desc: \"uuidv1\", Func: uuidv1})\n\tgenerators.addGen(Generator{Name: \"uuidv4\", Desc: \"uuidv4\", Func: uuidv4})\n\tgenerators.addGen(Generator{Name: \"uuidv6\", Desc: \"uuidv6\", Func: uuidv6})\n\tgenerators.addGen(Generator{Name: \"uuidv7\", Desc: \"uuidv7\", Func: uuidv7})\n\n\tgenerators.addGen(Generator{\n\t\tName: \"timestamp\",\n\t\tDesc: \"Unix timestamp between epoch and now\",\n\t\tFunc: timestamp(),\n\t})\n\n\treturn factory{generators: generators}\n}\n"
  },
  {
    "path": "pkg/fakedata/generator_test.go",
    "content": "package fakedata_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/lucapette/fakedata/pkg/fakedata\"\n)\n\nvar gens = fakedata.NewGenerators()\n\nfunc BenchmarkGenerators(b *testing.B) {\n\tfor i := 0; i < len(gens); i++ {\n\t\tg := gens[i]\n\n\t\tif !g.IsCustom() && !g.Hidden {\n\t\t\tb.Run(g.Name, func(b *testing.B) {\n\t\t\t\tfor i := 0; i < b.N; i++ {\n\t\t\t\t\tg.Func()\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n}\n\nfunc BenchmarkEnum(b *testing.B) {\n\tenum := gens.FindByName(\"enum\")\n\tif enum == nil {\n\t\tb.Fatal(\"enum generator not found\")\n\t}\n\n\tenumFunc, err := enum.CustomFunc(\"\")\n\tif err != nil {\n\t\tb.Fatalf(\"cannot create enum: %s\", err)\n\t}\n\n\tfor i := 0; i < b.N; i++ {\n\t\tenumFunc()\n\t}\n}\n\nfunc BenchmarkInt(b *testing.B) {\n\tinteger := gens.FindByName(\"int\")\n\tif integer == nil {\n\t\tb.Fatal(\"int generator not found\")\n\t}\n\n\tintegerFunc, err := integer.CustomFunc(\"10000000,9999999999\")\n\tif err != nil {\n\t\tb.Fatalf(\"cannot create int: %s\", err)\n\t}\n\n\tfor i := 0; i < b.N; i++ {\n\t\tintegerFunc()\n\t}\n}\n\nfunc BenchmarkPhoneLocal(b *testing.B) {\n\tphoneLocal := gens.FindByName(\"phone.local\")\n\n\tdigits := []string{\"8\", \"9\", \"10\", \"11\", \"12\"}\n\n\tfor _, digit := range digits {\n\t\tb.Run(\"phone.local:\"+digit, func(b *testing.B) {\n\t\t\tphoneLocalFunc, err := phoneLocal.CustomFunc(digit)\n\t\t\tif err != nil {\n\t\t\t\tb.Fatalf(\"cannot create phone.local: %s\", err)\n\t\t\t}\n\n\t\t\tfor i := 0; i < b.N; i++ {\n\t\t\t\tphoneLocalFunc()\n\t\t\t}\n\t\t})\n\t}\n\n}\n\nfunc BenchmarkFile(b *testing.B) {\n\tfile := gens.FindByName(\"file\")\n\tif file == nil {\n\t\tb.Fatal(\"file generator not found\")\n\t}\n\n\tfileFunc, err := file.CustomFunc(\"../../testutil/fixtures/file.txt\")\n\tif err != nil {\n\t\tb.Fatalf(\"cannot open fixture: %s\", err)\n\t}\n\n\tfor i := 0; i < b.N; i++ {\n\t\tfileFunc()\n\t}\n}\n"
  },
  {
    "path": "pkg/fakedata/template.go",
    "content": "package fakedata\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"os\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"golang.org/x/text/cases\"\n\t\"golang.org/x/text/language\"\n)\n\ntype templateFactory struct {\n\tfactory\n}\n\nfunc newTemplateFactory() *templateFactory {\n\treturn &templateFactory{factory: newFactory()}\n}\n\nfunc (tf templateFactory) getFunctions() template.FuncMap {\n\tfuncMap := template.FuncMap{\n\t\t\"Loop\": func(minmax ...int) []int {\n\t\t\tvar n int\n\n\t\t\tif len(minmax) == 1 {\n\t\t\t\tn = minmax[0]\n\t\t\t} else {\n\t\t\t\tminInt := minmax[0]\n\t\t\t\tmaxInt := minmax[1]\n\t\t\t\tif minInt == maxInt {\n\t\t\t\t\tn = minInt\n\t\t\t\t} else {\n\t\t\t\t\tn = rand.Intn(maxInt-minInt) + minInt\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttimes := make([]int, n)\n\t\t\tfor i := 0; i < n; i++ {\n\t\t\t\ttimes[i] = i\n\t\t\t}\n\n\t\t\treturn times\n\t\t},\n\t\t\"Odd\":  func(i int) bool { return i%2 != 0 },\n\t\t\"Even\": func(i int) bool { return i%2 == 0 },\n\t}\n\n\tc := cases.Title(language.English)\n\n\tfor _, gen := range tf.generators {\n\t\tif !gen.IsCustom() {\n\t\t\tname := strings.ReplaceAll(c.String(strings.ReplaceAll(gen.Name, \".\", \" \")), \" \", \"\")\n\t\t\tfuncMap[name] = gen.Func\n\t\t}\n\t}\n\n\thandler := func(in func(string) (func() string, error), options []string) (string, error) {\n\t\tf, err := in(strings.Join(options, \",\"))\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\treturn f(), nil\n\t}\n\n\tfuncMap[\"Int\"] = func(ranges ...int) (string, error) {\n\t\toptions := make([]string, len(ranges))\n\t\tfor i, r := range ranges {\n\t\t\toptions[i] = fmt.Sprintf(\"%v\", r)\n\t\t}\n\t\treturn handler(integer, options)\n\t}\n\n\tfuncMap[\"Enum\"] = func(options ...string) (string, error) {\n\t\treturn handler(enum, options)\n\t}\n\n\tfuncMap[\"File\"] = func(path string) (string, error) {\n\t\treturn handler(file, []string{path})\n\t}\n\n\tfuncMap[\"Date\"] = func(dates ...string) (string, error) {\n\t\treturn handler(date, dates)\n\t}\n\n\treturn funcMap\n}\n\n// ExecuteTemplate takes a tmpl string and a n int and generates n rows of based\n// on the specified tmpl. Will loop forever if streamMode is true\nfunc ExecuteTemplate(tmpl string, n int, streamMode bool) (err error) {\n\tfOut := bufio.NewWriter(os.Stdout)\n\tdefer func() {\n\t\tif flushErr := fOut.Flush(); flushErr != nil && err == nil {\n\t\t\terr = flushErr\n\t\t}\n\t}()\n\n\tf := newTemplateFactory()\n\tt, err := template.New(\"template\").Funcs(f.getFunctions()).Parse(tmpl)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif streamMode {\n\t\tfor {\n\t\t\terr = t.Execute(fOut, nil)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\tfor i := 1; i <= n; i++ {\n\t\terr = t.Execute(fOut, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "scripts/perf.sh",
    "content": "#!/bin/bash\n\nset -euo pipefail\nIFS=$'\\n\\t'\n\nROWS=${ROWS:-100000000}\n\n# https://stackoverflow.com/questions/59895/how-do-i-get-the-directory-where-a-bash-script-is-located-from-within-the-script\nSCRIPT_DIR=$( cd -- \"$( dirname -- \"${BASH_SOURCE[0]}\" )\" &> /dev/null && pwd )\n\necho \"tick,rows_done\" > ${SCRIPT_DIR}/template.perf\n\necho \"{{Noun}}\" | ${SCRIPT_DIR}/../fakedata -l ${ROWS} | pv -b -l -a -t -n > /dev/null 2>> ${SCRIPT_DIR}/template.perf\n\nsed -i -e 's/ /,/g' ${SCRIPT_DIR}/template.perf\n\necho \"tick,rows_done\" > ${SCRIPT_DIR}/generator.perf\n\n${SCRIPT_DIR}/../fakedata noun -l ${ROWS} | pv -b -l -a -t -n > /dev/null 2>> ${SCRIPT_DIR}/generator.perf\n\nsed -i -e 's/ /,/g' ${SCRIPT_DIR}/generator.perf\n\ncat generator.perf | sqlite-utils insert -d --csv ${SCRIPT_DIR}/perf.db generator -\ncat template.perf | sqlite-utils insert -d --csv ${SCRIPT_DIR}/perf.db template -\n\nrm ${SCRIPT_DIR}/template.perf-e ${SCRIPT_DIR}/generator.perf-e\n\ncat ${SCRIPT_DIR}/queries.csv | sqlite-utils insert --csv perf.db saved_queries  -\n"
  },
  {
    "path": "scripts/queries.csv",
    "content": "\"name\",\"sql\",\"author_id\"\n\"template\",\"SELECT tick, rows_done - lag(rows_done, 1, 0) OVER (ORDER BY tick) rows_done_so_far FROM template ORDER BY tick\",\"42\"\n\"generator\",\"SELECT tick, rows_done - lag(rows_done, 1, 0) OVER (ORDER BY tick) rows_done_so_far FROM generator ORDER BY tick\",\"42\"\n"
  },
  {
    "path": "testutil/diff.go",
    "content": "package testutil\n\nimport \"github.com/kr/pretty\"\n\nfunc Diff(expected, actual interface{}) []string {\n\treturn pretty.Diff(expected, actual)\n}\n"
  },
  {
    "path": "testutil/fixtures/broken.tmpl",
    "content": "{{Int}} {{Int}"
  },
  {
    "path": "testutil/fixtures/file.txt",
    "content": "from-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\n"
  },
  {
    "path": "testutil/fixtures/loop-with-index.tmpl",
    "content": "{{range $i := Loop 5}}{{$i}}{{end}}\n"
  },
  {
    "path": "testutil/fixtures/loop.tmpl",
    "content": "{{range Loop 1 1}}42{{end}}\n"
  },
  {
    "path": "testutil/fixtures/simple.tmpl",
    "content": "{{Int 42 42}}--{{Enum \"foo\"}}"
  },
  {
    "path": "testutil/fixtures/unknown-function.tmpl",
    "content": "{{Int 42 42}}  {{Madeup}}"
  },
  {
    "path": "testutil/golden/broken-template.golden",
    "content": "template: template:1: bad character U+007D '}'\n"
  },
  {
    "path": "testutil/golden/csv-format.golden",
    "content": "42,foo\n42,foo\n42,foo\n42,foo\n42,foo\n42,foo\n42,foo\n42,foo\n42,foo\n42,foo\n"
  },
  {
    "path": "testutil/golden/default-format-with-headers.golden",
    "content": "int enum\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n"
  },
  {
    "path": "testutil/golden/default-format-with-limit.golden",
    "content": "42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n"
  },
  {
    "path": "testutil/golden/default-format.golden",
    "content": "42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n42 foo\n"
  },
  {
    "path": "testutil/golden/file-does-not-exist.golden",
    "content": "could not read file this file does not exist.txt: open this file does not exist.txt: no such file or directory\n\nUsage: fakedata [option ...] generator...\n\n  -C, --completion string             print shell completion function, pass shell name as argument (\"bash\", \"zsh\" or \"fish\")\n  -f, --format string                 generates rows in f format. Available formats: column|ndjson|sql (default \"column\")\n  -g, --generator string              show help for a specific generator\n  -G, --generators                    lists available generators\n  -c, --generators-with-constraints   lists available generators with constraints\n  -H, --header                        adds headers row\n  -h, --help                          shows help\n  -l, --limit int                     limits rows up to n (default 10)\n  -s, --separator string              specifies separator for the column format (default \" \")\n  -S, --stream                        streams rows till the end of time\n  -t, --table string                  table name of the sql format (default \"TABLE\")\n  -T, --template string               Use template as input\n  -v, --version                       shows version information\n"
  },
  {
    "path": "testutil/golden/file-empty.golden",
    "content": "could not read file this file does not exist.txt: open this file does not exist.txt: no such file or directory"
  },
  {
    "path": "testutil/golden/file-exist.golden",
    "content": "from-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\nfrom-an-existing-file\n"
  },
  {
    "path": "testutil/golden/help.golden",
    "content": "Usage: fakedata [option ...] generator...\n\n  -C, --completion string             print shell completion function, pass shell name as argument (\"bash\", \"zsh\" or \"fish\")\n  -f, --format string                 generates rows in f format. Available formats: column|ndjson|sql (default \"column\")\n  -g, --generator string              show help for a specific generator\n  -G, --generators                    lists available generators\n  -c, --generators-with-constraints   lists available generators with constraints\n  -H, --header                        adds headers row\n  -h, --help                          shows help\n  -l, --limit int                     limits rows up to n (default 10)\n  -s, --separator string              specifies separator for the column format (default \" \")\n  -S, --stream                        streams rows till the end of time\n  -t, --table string                  table name of the sql format (default \"TABLE\")\n  -T, --template string               Use template as input\n  -v, --version                       shows version information\n"
  },
  {
    "path": "testutil/golden/loop-with-index.golden",
    "content": "01234\n01234\n01234\n01234\n01234\n01234\n01234\n01234\n01234\n01234\n"
  },
  {
    "path": "testutil/golden/loop.golden",
    "content": "42\n42\n42\n42\n42\n42\n42\n42\n42\n42\n"
  },
  {
    "path": "testutil/golden/path-empty.golden",
    "content": "no file path given\n\nUsage: fakedata [option ...] generator...\n\n  -C, --completion string             print shell completion function, pass shell name as argument (\"bash\", \"zsh\" or \"fish\")\n  -f, --format string                 generates rows in f format. Available formats: column|ndjson|sql (default \"column\")\n  -g, --generator string              show help for a specific generator\n  -G, --generators                    lists available generators\n  -c, --generators-with-constraints   lists available generators with constraints\n  -H, --header                        adds headers row\n  -h, --help                          shows help\n  -l, --limit int                     limits rows up to n (default 10)\n  -s, --separator string              specifies separator for the column format (default \" \")\n  -S, --stream                        streams rows till the end of time\n  -t, --table string                  table name of the sql format (default \"TABLE\")\n  -T, --template string               Use template as input\n  -v, --version                       shows version information\n"
  },
  {
    "path": "testutil/golden/simple-template.golden",
    "content": "42--foo42--foo42--foo42--foo42--foo42--foo42--foo42--foo42--foo42--foo"
  },
  {
    "path": "testutil/golden/sql-format-with-keys.golden",
    "content": "INSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\nINSERT INTO TABLE (age,name) VALUES ('42','foo');\n"
  },
  {
    "path": "testutil/golden/sql-format-with-table-name.golden",
    "content": "INSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\nINSERT INTO USERS (int,enum) VALUES ('42','foo');\n"
  },
  {
    "path": "testutil/golden/sql-format.golden",
    "content": "INSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\nINSERT INTO TABLE (int,enum) VALUES ('42','foo');\n"
  },
  {
    "path": "testutil/golden/tab-format.golden",
    "content": "42\tfoo\n42\tfoo\n42\tfoo\n42\tfoo\n42\tfoo\n42\tfoo\n42\tfoo\n42\tfoo\n42\tfoo\n42\tfoo\n"
  },
  {
    "path": "testutil/golden/unknown-format.golden",
    "content": "unknown format: no-format\n\nUsage: fakedata [option ...] generator...\n\n  -C, --completion string             print shell completion function, pass shell name as argument (\"bash\", \"zsh\" or \"fish\")\n  -f, --format string                 generates rows in f format. Available formats: column|ndjson|sql (default \"column\")\n  -g, --generator string              show help for a specific generator\n  -G, --generators                    lists available generators\n  -c, --generators-with-constraints   lists available generators with constraints\n  -H, --header                        adds headers row\n  -h, --help                          shows help\n  -l, --limit int                     limits rows up to n (default 10)\n  -s, --separator string              specifies separator for the column format (default \" \")\n  -S, --stream                        streams rows till the end of time\n  -t, --table string                  table name of the sql format (default \"TABLE\")\n  -T, --template string               Use template as input\n  -v, --version                       shows version information\n"
  },
  {
    "path": "testutil/golden/unknown-function.golden",
    "content": "template: template:1: function \"Madeup\" not defined\n"
  },
  {
    "path": "testutil/golden/unknown-generators.golden",
    "content": "unknown generator: madeupgenerator\n\nUsage: fakedata [option ...] generator...\n\n  -C, --completion string             print shell completion function, pass shell name as argument (\"bash\", \"zsh\" or \"fish\")\n  -f, --format string                 generates rows in f format. Available formats: column|ndjson|sql (default \"column\")\n  -g, --generator string              show help for a specific generator\n  -G, --generators                    lists available generators\n  -c, --generators-with-constraints   lists available generators with constraints\n  -H, --header                        adds headers row\n  -h, --help                          shows help\n  -l, --limit int                     limits rows up to n (default 10)\n  -s, --separator string              specifies separator for the column format (default \" \")\n  -S, --stream                        streams rows till the end of time\n  -t, --table string                  table name of the sql format (default \"TABLE\")\n  -T, --template string               Use template as input\n  -v, --version                       shows version information\n"
  },
  {
    "path": "testutil/test_file.go",
    "content": "package testutil\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"testing\"\n)\n\ntype TestFile struct {\n\tt    *testing.T\n\tname string\n\tdir  string\n}\n\nfunc NewFixture(t *testing.T, name string) *TestFile {\n\treturn &TestFile{t: t, name: name, dir: \"fixtures\"}\n}\n\nfunc NewGoldenFile(t *testing.T, name string) *TestFile {\n\treturn &TestFile{t: t, name: name, dir: \"golden\"}\n}\n\nfunc (tf *TestFile) Path() string {\n\ttf.t.Helper()\n\t_, filename, _, ok := runtime.Caller(0)\n\tif !ok {\n\t\ttf.t.Fatal(\"problems recovering caller information\")\n\t}\n\n\treturn filepath.Join(filepath.Dir(filename), tf.dir, tf.name)\n}\n\nfunc (tf *TestFile) Write(content string) {\n\ttf.t.Helper()\n\terr := os.WriteFile(tf.Path(), []byte(content), 0644)\n\tif err != nil {\n\t\ttf.t.Fatalf(\"could not write %s: %v\", tf.name, err)\n\t}\n}\n\nfunc (tf *TestFile) AsFile() *os.File {\n\ttf.t.Helper()\n\tfile, err := os.Open(tf.Path())\n\tif err != nil {\n\t\ttf.t.Fatalf(\"could not open %s: %v\", tf.name, err)\n\t}\n\treturn file\n}\n\nfunc (tf *TestFile) Load() string {\n\ttf.t.Helper()\n\n\tcontent, err := os.ReadFile(tf.Path())\n\tif err != nil {\n\t\ttf.t.Fatalf(\"could not read file %s: %v\", tf.name, err)\n\t}\n\n\treturn string(content)\n}\n"
  }
]