Skip to content

Commit

Permalink
(template): Update branch with changed from master
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinGimbel committed Jun 18, 2017
2 parents 04838d6 + 81f64e6 commit 8202080
Show file tree
Hide file tree
Showing 11 changed files with 183 additions and 20 deletions.
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ ci: lint test ## Run all the tests and code checks
build: ## Build a dev version of fakedata
go build

corpora: ## Import the latest data from dariusk/corpora
go run cmd/importcorpora/main.go

# Absolutely awesome: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
Expand Down
96 changes: 96 additions & 0 deletions cmd/importcorpora/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package main

import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"path/filepath"
)

// relative package data dir
const targetDir = "pkg/data"

// Content of a Go file
const fileTemplate = `package data
// %s is an array of %s
var %s = %#v
`

var tasks = []struct {
URL, Key, Var, File string
}{
{
URL: "https://raw.githubusercontent.com/dariusk/corpora/master/data/words/nouns.json",
Key: "nouns",
Var: "Nouns",
File: "nouns.go",
},
{
URL: "https://raw.githubusercontent.com/dariusk/corpora/master/data/animals/common.json",
Key: "animals",
Var: "Animals",
File: "animals.go",
},
{
URL: "https://raw.githubusercontent.com/dariusk/corpora/master/data/animals/cats.json",
Key: "cats",
Var: "Cats",
File: "cats.go",
},
{
URL: "https://raw.githubusercontent.com/dariusk/corpora/master/data/words/emoji/emoji.json",
Key: "emoji",
Var: "Emoji",
File: "emoji.go",
},
}

func main() {
// Check if running in repository directory
_, err := os.Stat(targetDir)
if err != nil && !os.IsNotExist(err) {
log.Fatal(err)
}
if err != nil {
log.Fatalf("the data directory cannot be found at %s. Ensure the importer is running in the correct location: %v", targetDir, err)
}

for _, task := range tasks {
// Get JSON from URL
resp, err := http.Get(task.URL)
if err != nil {
log.Fatal(err)
}
defer func() {
if err := resp.Body.Close(); err != nil {
panic(err)
}
}()

var jsonData map[string]json.RawMessage
if err := json.NewDecoder(resp.Body).Decode(&jsonData); err != nil {
log.Fatal(err)
}

var data []string
if err := json.Unmarshal(jsonData[task.Key], &data); err != nil {
log.Fatal(err)
}

file := filepath.Join(targetDir, task.File)
if err := os.MkdirAll(filepath.Dir(file), 0777); err != nil {
log.Fatal(err)
}

content := fmt.Sprintf(fileTemplate, task.Var, task.Key, task.Var, data)

// Write to Go file
if err := ioutil.WriteFile(file, []byte(content), 0644); err != nil {
log.Fatal(err)
}
}
}
5 changes: 5 additions & 0 deletions integration/cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,11 @@ func TestCliArgs(t *testing.T) {
args: []string{"-f=sql", "-t=USERS", "int,42..42", "enum,foo..foo"},
fixture: "sql-format-with-table-name.golden",
},
{
name: "unknown format",
args: []string{"-f=sqll", "-t=USERS", "int,42..42", "enum,foo..foo"},
fixture: "unknown-format.golden",
},
}

for _, tt := range tests {
Expand Down
4 changes: 4 additions & 0 deletions integration/generators.golden
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
animal random animal name
animal.cat random cat breed
color one word color
country Full country name
country.code 2-digit country code
Expand All @@ -7,6 +9,7 @@ domain.name example|test
domain.tld name|info|com|org|me|us
double double number
email email
emoji random emoji
enum a random value from an enum. Defaults to "foo..bar..baz"
event.action clicked|purchased|viewed|watched
file Read a random line from a file. Pass filepath with 'file,path/to/file.txt'.
Expand All @@ -20,6 +23,7 @@ mac.address mac address
name name.first + " " + name.last
name.first capitalized first name
name.last capitalized last name
noun random noun
product.category Beauty|Games|Movies|Tools|..
product.name invented product name
state Full US state name
Expand Down
9 changes: 9 additions & 0 deletions integration/unknown-format.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
unknown format: sqll

Usage: fakedata [option ...] field...

-f, --format string generators rows in f format. Available formats: csv|tab|sql
-g, --generators lists available generators
-l, --limit int limits rows up to n (default 10)
-t, --table string table name of the sql format (default "TABLE")
-v, --version shows version information
46 changes: 26 additions & 20 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,20 @@ import (

var version = "master"

var generatorsFlag = flag.BoolP("generators", "g", false, "lists available generators")
var limitFlag = flag.IntP("limit", "l", 10, "limits rows up to n")
var formatFlag = flag.StringP("format", "f", "", "generators rows in f format. Available formats: csv|tab|sql")
var versionFlag = flag.BoolP("version", "v", false, "shows version information")
var tableFlag = flag.StringP("table", "t", "TABLE", "table name of the sql format")
var templateFlag = flag.StringP("template", "", "", "Use template as input")

func getFormatter(format string) (f fakedata.Formatter) {
func getFormatter(format, table string) (f fakedata.Formatter, err error) {
switch format {
case "csv":
f = fakedata.NewSeparatorFormatter(",")
case "tab":
f = fakedata.NewSeparatorFormatter("\t")
case "sql":
f = fakedata.NewSQLFormatter(*tableFlag)
default:
f = fakedata.NewSQLFormatter(table)
case "":
f = fakedata.NewSeparatorFormatter(" ")
default:
err = fmt.Errorf("unknown format: %s", format)
}
return f
return f, err
}

func generatorsHelp() string {
Expand Down Expand Up @@ -61,6 +56,20 @@ func isPipe() bool {
}

func main() {
var (
generatorsFlag = flag.BoolP("generators", "g", false, "lists available generators")
limitFlag = flag.IntP("limit", "l", 10, "limits rows up to n")
formatFlag = flag.StringP("format", "f", "", "generators rows in f format. Available formats: csv|tab|sql")
versionFlag = flag.BoolP("version", "v", false, "shows version information")
tableFlag = flag.StringP("table", "t", "TABLE", "table name of the sql format")
templateFlag = flag.StringP("template", "", "", "Use template as input")
)
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: fakedata [option ...] field...\n\n")
flag.PrintDefaults()
}
flag.Parse()

if *versionFlag {
fmt.Println(version)
os.Exit(0)
Expand Down Expand Up @@ -108,17 +117,14 @@ func main() {
os.Exit(0)
}

formatter := getFormatter(*formatFlag)
formatter, err := getFormatter(*formatFlag, *tableFlag)
if err != nil {
fmt.Printf("%v\n\n", err)
flag.Usage()
os.Exit(0)
}

for i := 0; i < *limitFlag; i++ {
fmt.Print(fakedata.GenerateRow(columns, formatter))
}
}

func init() {
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: fakedata [option ...] field...\n\n")
flag.PrintDefaults()
}
flag.Parse()
}
4 changes: 4 additions & 0 deletions pkg/data/animals.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package data

// Animals is an array of animals
var 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"}
4 changes: 4 additions & 0 deletions pkg/data/cats.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package data

// Cats is an array of cats
var 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"}
4 changes: 4 additions & 0 deletions pkg/data/emoji.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package data

// Emoji is an array of emoji
var Emoji = []string{"๐Ÿ€„", "๐Ÿƒ", "๐Ÿ…ฐ", "๐Ÿ…ฑ", "๐Ÿ…พ", "๐Ÿ…ฟ", "๐Ÿ†Ž", "๐Ÿ†‘", "๐Ÿ†’", "๐Ÿ†“", "๐Ÿ†”", "๐Ÿ†•", "๐Ÿ†–", "๐Ÿ†—", "๐Ÿ†˜", "๐Ÿ†™", "๐Ÿ†š", "๐Ÿ‡ฆ", "๐Ÿ‡ง", "๐Ÿ‡จ", "๐Ÿ‡ฉ", "๐Ÿ‡ช", "๐Ÿ‡ซ", "๐Ÿ‡ฌ", "๐Ÿ‡ญ", "๐Ÿ‡ฎ", "๐Ÿ‡ฏ", "๐Ÿ‡ฐ", "๐Ÿ‡ฑ", "๐Ÿ‡ฒ", "๐Ÿ‡ณ", "๐Ÿ‡ด", "๐Ÿ‡ต", "๐Ÿ‡ถ", "๐Ÿ‡ท", "๐Ÿ‡ธ", "๐Ÿ‡น", "๐Ÿ‡บ", "๐Ÿ‡ป", "๐Ÿ‡ผ", "๐Ÿ‡ฝ", "๐Ÿ‡พ", "๐Ÿ‡ฟ", "๐Ÿˆ", "๐Ÿˆ‚", "๐Ÿˆš", "๐Ÿˆฏ", "๐Ÿˆฒ", "๐Ÿˆณ", "๐Ÿˆด", "๐Ÿˆต", "๐Ÿˆถ", "๐Ÿˆท", "๐Ÿˆธ", "๐Ÿˆน", "๐Ÿˆบ", "๐Ÿ‰", "๐Ÿ‰‘", "๐ŸŒ€", "๐ŸŒ", "๐ŸŒ‚", "๐ŸŒƒ", "๐ŸŒ„", "๐ŸŒ…", "๐ŸŒ†", "๐ŸŒ‡", "๐ŸŒˆ", "๐ŸŒ‰", "๐ŸŒŠ", "๐ŸŒ‹", "๐ŸŒŒ", "๐ŸŒ", "๐ŸŒŽ", "๐ŸŒ", "๐ŸŒ", "๐ŸŒ‘", "๐ŸŒ’", "๐ŸŒ“", "๐ŸŒ”", "๐ŸŒ•", "๐ŸŒ–", "๐ŸŒ—", "๐ŸŒ˜", "๐ŸŒ™", "๐ŸŒš", "๐ŸŒ›", "๐ŸŒœ", "๐ŸŒ", "๐ŸŒž", "๐ŸŒŸ", "๐ŸŒ ", "๐ŸŒฐ", "๐ŸŒฑ", "๐ŸŒฒ", "๐ŸŒณ", "๐ŸŒด", "๐ŸŒต", "๐ŸŒท", "๐ŸŒธ", "๐ŸŒน", "๐ŸŒบ", "๐ŸŒป", "๐ŸŒผ", "๐ŸŒฝ", "๐ŸŒพ", "๐ŸŒฟ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ…", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›", "๐Ÿœ", "๐Ÿ", "๐Ÿž", "๐ŸŸ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿฑ", "๐Ÿฒ", "๐Ÿณ", "๐Ÿด", "๐Ÿต", "๐Ÿถ", "๐Ÿท", "๐Ÿธ", "๐Ÿน", "๐Ÿบ", "๐Ÿป", "๐Ÿผ", "๐ŸŽ€", "๐ŸŽ", "๐ŸŽ‚", "๐ŸŽƒ", "๐ŸŽ„", "๐ŸŽ…", "๐ŸŽ†", "๐ŸŽ‡", "๐ŸŽˆ", "๐ŸŽ‰", "๐ŸŽŠ", "๐ŸŽ‹", "๐ŸŽŒ", "๐ŸŽ", "๐ŸŽŽ", "๐ŸŽ", "๐ŸŽ", "๐ŸŽ‘", "๐ŸŽ’", "๐ŸŽ“", "๐ŸŽ ", "๐ŸŽก", "๐ŸŽข", "๐ŸŽฃ", "๐ŸŽค", "๐ŸŽฅ", "๐ŸŽฆ", "๐ŸŽง", "๐ŸŽจ", "๐ŸŽฉ", "๐ŸŽช", "๐ŸŽซ", "๐ŸŽฌ", "๐ŸŽญ", "๐ŸŽฎ", "๐ŸŽฏ", "๐ŸŽฐ", "๐ŸŽฑ", "๐ŸŽฒ", "๐ŸŽณ", "๐ŸŽด", "๐ŸŽต", "๐ŸŽถ", "๐ŸŽท", "๐ŸŽธ", "๐ŸŽน", "๐ŸŽบ", "๐ŸŽป", "๐ŸŽผ", "๐ŸŽฝ", "๐ŸŽพ", "๐ŸŽฟ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ…", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›", "๐Ÿœ", "๐Ÿ", "๐Ÿž", "๐ŸŸ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿฑ", "๐Ÿฒ", "๐Ÿณ", "๐Ÿด", "๐Ÿต", "๐Ÿถ", "๐Ÿท", "๐Ÿธ", "๐Ÿน", "๐Ÿบ", "๐Ÿป", "๐Ÿผ", "๐Ÿฝ", "๐Ÿพ", "๐Ÿ‘€", "๐Ÿ‘‚", "๐Ÿ‘ƒ", "๐Ÿ‘„", "๐Ÿ‘…", "๐Ÿ‘†", "๐Ÿ‘‡", "๐Ÿ‘ˆ", "๐Ÿ‘‰", "๐Ÿ‘Š", "๐Ÿ‘‹", "๐Ÿ‘Œ", "๐Ÿ‘", "๐Ÿ‘Ž", "๐Ÿ‘", "๐Ÿ‘", "๐Ÿ‘‘", "๐Ÿ‘’", "๐Ÿ‘“", "๐Ÿ‘”", "๐Ÿ‘•", "๐Ÿ‘–", "๐Ÿ‘—", "๐Ÿ‘˜", "๐Ÿ‘™", "๐Ÿ‘š", "๐Ÿ‘›", "๐Ÿ‘œ", "๐Ÿ‘", "๐Ÿ‘ž", "๐Ÿ‘Ÿ", "๐Ÿ‘ ", "๐Ÿ‘ก", "๐Ÿ‘ข", "๐Ÿ‘ฃ", "๐Ÿ‘ค", "๐Ÿ‘ฅ", "๐Ÿ‘ฆ", "๐Ÿ‘ง", "๐Ÿ‘จ", "๐Ÿ‘ฉ", "๐Ÿ‘ช", "๐Ÿ‘ซ", "๐Ÿ‘ฌ", "๐Ÿ‘ญ", "๐Ÿ‘ฎ", "๐Ÿ‘ฏ", "๐Ÿ‘ฐ", "๐Ÿ‘ฑ", "๐Ÿ‘ฒ", "๐Ÿ‘ณ", "๐Ÿ‘ด", "๐Ÿ‘ต", "๐Ÿ‘ถ", "๐Ÿ‘ท", "๐Ÿ‘ธ", "๐Ÿ‘น", "๐Ÿ‘บ", "๐Ÿ‘ป", "๐Ÿ‘ผ", "๐Ÿ‘ฝ", "๐Ÿ‘พ", "๐Ÿ‘ฟ", "๐Ÿ’€", "๐Ÿ’", "๐Ÿ’‚", "๐Ÿ’ƒ", "๐Ÿ’„", "๐Ÿ’…", "๐Ÿ’†", "๐Ÿ’‡", "๐Ÿ’ˆ", "๐Ÿ’‰", "๐Ÿ’Š", "๐Ÿ’‹", "๐Ÿ’Œ", "๐Ÿ’", "๐Ÿ’Ž", "๐Ÿ’", "๐Ÿ’", "๐Ÿ’‘", "๐Ÿ’’", "๐Ÿ’“", "๐Ÿ’”", "๐Ÿ’•", "๐Ÿ’–", "๐Ÿ’—", "๐Ÿ’˜", "๐Ÿ’™", "๐Ÿ’š", "๐Ÿ’›", "๐Ÿ’œ", "๐Ÿ’", "๐Ÿ’ž", "๐Ÿ’Ÿ", "๐Ÿ’ ", "๐Ÿ’ก", "๐Ÿ’ข", "๐Ÿ’ฃ", "๐Ÿ’ค", "๐Ÿ’ฅ", "๐Ÿ’ฆ", "๐Ÿ’ง", "๐Ÿ’จ", "๐Ÿ’ฉ", "๐Ÿ’ช", "๐Ÿ’ซ", "๐Ÿ’ฌ", "๐Ÿ’ญ", "๐Ÿ’ฎ", "๐Ÿ’ฏ", "๐Ÿ’ฐ", "๐Ÿ’ฑ", "๐Ÿ’ฒ", "๐Ÿ’ณ", "๐Ÿ’ด", "๐Ÿ’ต", "๐Ÿ’ถ", "๐Ÿ’ท", "๐Ÿ’ธ", "๐Ÿ’น", "๐Ÿ’บ", "๐Ÿ’ป", "๐Ÿ’ผ", "๐Ÿ’ฝ", "๐Ÿ’พ", "๐Ÿ’ฟ", "๐Ÿ“€", "๐Ÿ“", "๐Ÿ“‚", "๐Ÿ“ƒ", "๐Ÿ“„", "๐Ÿ“…", "๐Ÿ“†", "๐Ÿ“‡", "๐Ÿ“ˆ", "๐Ÿ“‰", "๐Ÿ“Š", "๐Ÿ“‹", "๐Ÿ“Œ", "๐Ÿ“", "๐Ÿ“Ž", "๐Ÿ“", "๐Ÿ“", "๐Ÿ“‘", "๐Ÿ“’", "๐Ÿ““", "๐Ÿ“”", "๐Ÿ“•", "๐Ÿ“–", "๐Ÿ“—", "๐Ÿ“˜", "๐Ÿ“™", "๐Ÿ“š", "๐Ÿ“›", "๐Ÿ“œ", "๐Ÿ“", "๐Ÿ“ž", "๐Ÿ“Ÿ", "๐Ÿ“ ", "๐Ÿ“ก", "๐Ÿ“ข", "๐Ÿ“ฃ", "๐Ÿ“ค", "๐Ÿ“ฅ", "๐Ÿ“ฆ", "๐Ÿ“ง", "๐Ÿ“จ", "๐Ÿ“ฉ", "๐Ÿ“ช", "๐Ÿ“ซ", "๐Ÿ“ฌ", "๐Ÿ“ญ", "๐Ÿ“ฎ", "๐Ÿ“ฏ", "๐Ÿ“ฐ", "๐Ÿ“ฑ", "๐Ÿ“ฒ", "๐Ÿ“ณ", "๐Ÿ“ด", "๐Ÿ“ต", "๐Ÿ“ถ", "๐Ÿ“ท", "๐Ÿ“น", "๐Ÿ“บ", "๐Ÿ“ป", "๐Ÿ“ผ", "๐Ÿ”€", "๐Ÿ”", "๐Ÿ”‚", "๐Ÿ”ƒ", "๐Ÿ”„", "๐Ÿ”…", "๐Ÿ”†", "๐Ÿ”‡", "๐Ÿ”ˆ", "๐Ÿ”‰", "๐Ÿ”Š", "๐Ÿ”‹", "๐Ÿ”Œ", "๐Ÿ”", "๐Ÿ”Ž", "๐Ÿ”", "๐Ÿ”", "๐Ÿ”‘", "๐Ÿ”’", "๐Ÿ”“", "๐Ÿ””", "๐Ÿ”•", "๐Ÿ”–", "๐Ÿ”—", "๐Ÿ”˜", "๐Ÿ”™", "๐Ÿ”š", "๐Ÿ”›", "๐Ÿ”œ", "๐Ÿ”", "๐Ÿ”ž", "๐Ÿ”Ÿ", "๐Ÿ” ", "๐Ÿ”ก", "๐Ÿ”ข", "๐Ÿ”ฃ", "๐Ÿ”ค", "๐Ÿ”ฅ", "๐Ÿ”ฆ", "๐Ÿ”ง", "๐Ÿ”จ", "๐Ÿ”ฉ", "๐Ÿ”ช", "๐Ÿ”ซ", "๐Ÿ”ฌ", "๐Ÿ”ญ", "๐Ÿ”ฎ", "๐Ÿ”ฏ", "๐Ÿ”ฐ", "๐Ÿ”ฑ", "๐Ÿ”ฒ", "๐Ÿ”ณ", "๐Ÿ”ด", "๐Ÿ”ต", "๐Ÿ”ถ", "๐Ÿ”ท", "๐Ÿ”ธ", "๐Ÿ”น", "๐Ÿ”บ", "๐Ÿ”ป", "๐Ÿ”ผ", "๐Ÿ”ฝ", "๐Ÿ•", "๐Ÿ•‘", "๐Ÿ•’", "๐Ÿ•“", "๐Ÿ•”", "๐Ÿ••", "๐Ÿ•–", "๐Ÿ•—", "๐Ÿ•˜", "๐Ÿ•™", "๐Ÿ•š", "๐Ÿ•›", "๐Ÿ•œ", "๐Ÿ•", "๐Ÿ•ž", "๐Ÿ•Ÿ", "๐Ÿ• ", "๐Ÿ•ก", "๐Ÿ•ข", "๐Ÿ•ฃ", "๐Ÿ•ค", "๐Ÿ•ฅ", "๐Ÿ•ฆ", "๐Ÿ•ง", "๐Ÿ—ป", "๐Ÿ—ผ", "๐Ÿ—ฝ", "๐Ÿ—พ", "๐Ÿ—ฟ", "๐Ÿ˜€", "๐Ÿ˜", "๐Ÿ˜‚", "๐Ÿ˜ƒ", "๐Ÿ˜„", "๐Ÿ˜…", "๐Ÿ˜†", "๐Ÿ˜‡", "๐Ÿ˜ˆ", "๐Ÿ˜‰", "๐Ÿ˜Š", "๐Ÿ˜‹", "๐Ÿ˜Œ", "๐Ÿ˜", "๐Ÿ˜Ž", "๐Ÿ˜", "๐Ÿ˜", "๐Ÿ˜‘", "๐Ÿ˜’", "๐Ÿ˜“", "๐Ÿ˜”", "๐Ÿ˜•", "๐Ÿ˜–", "๐Ÿ˜—", "๐Ÿ˜˜", "๐Ÿ˜™", "๐Ÿ˜š", "๐Ÿ˜›", "๐Ÿ˜œ", "๐Ÿ˜", "๐Ÿ˜ž", "๐Ÿ˜Ÿ", "๐Ÿ˜ ", "๐Ÿ˜ก", "๐Ÿ˜ข", "๐Ÿ˜ฃ", "๐Ÿ˜ค", "๐Ÿ˜ฅ", "๐Ÿ˜ฆ", "๐Ÿ˜ง", "๐Ÿ˜จ", "๐Ÿ˜ฉ", "๐Ÿ˜ช", "๐Ÿ˜ซ", "๐Ÿ˜ฌ", "๐Ÿ˜ญ", "๐Ÿ˜ฎ", "๐Ÿ˜ฏ", "๐Ÿ˜ฐ", "๐Ÿ˜ฑ", "๐Ÿ˜ฒ", "๐Ÿ˜ณ", "๐Ÿ˜ด", "๐Ÿ˜ต", "๐Ÿ˜ถ", "๐Ÿ˜ท", "๐Ÿ˜ธ", "๐Ÿ˜น", "๐Ÿ˜บ", "๐Ÿ˜ป", "๐Ÿ˜ผ", "๐Ÿ˜ฝ", "๐Ÿ˜พ", "๐Ÿ˜ฟ", "๐Ÿ™€", "๐Ÿ™", "๐Ÿ™‚", "๐Ÿ™…", "๐Ÿ™†", "๐Ÿ™‡", "๐Ÿ™ˆ", "๐Ÿ™‰", "๐Ÿ™Š", "๐Ÿ™‹", "๐Ÿ™Œ", "๐Ÿ™", "๐Ÿ™Ž", "๐Ÿ™", "๐Ÿš€", "๐Ÿš", "๐Ÿš‚", "๐Ÿšƒ", "๐Ÿš„", "๐Ÿš…", "๐Ÿš†", "๐Ÿš‡", "๐Ÿšˆ", "๐Ÿš‰", "๐ŸšŠ", "๐Ÿš‹", "๐ŸšŒ", "๐Ÿš", "๐ŸšŽ", "๐Ÿš", "๐Ÿš", "๐Ÿš‘", "๐Ÿš’", "๐Ÿš“", "๐Ÿš”", "๐Ÿš•", "๐Ÿš–", "๐Ÿš—", "๐Ÿš˜", "๐Ÿš™", "๐Ÿšš", "๐Ÿš›", "๐Ÿšœ", "๐Ÿš", "๐Ÿšž", "๐ŸšŸ", "๐Ÿš ", "๐Ÿšก", "๐Ÿšข", "๐Ÿšฃ", "๐Ÿšค", "๐Ÿšฅ", "๐Ÿšฆ", "๐Ÿšง", "๐Ÿšจ", "๐Ÿšฉ", "๐Ÿšช", "๐Ÿšซ", "๐Ÿšฌ", "๐Ÿšญ", "๐Ÿšฎ", "๐Ÿšฏ", "๐Ÿšฐ", "๐Ÿšฑ", "๐Ÿšฒ", "๐Ÿšณ", "๐Ÿšด", "๐Ÿšต", "๐Ÿšถ", "๐Ÿšท", "๐Ÿšธ", "๐Ÿšน", "๐Ÿšบ", "๐Ÿšป", "๐Ÿšผ", "๐Ÿšฝ", "๐Ÿšพ", "๐Ÿšฟ", "๐Ÿ›€", "๐Ÿ›", "๐Ÿ›‚", "๐Ÿ›ƒ", "๐Ÿ›„", "๐Ÿ›…", "โ€ผ", "โ‰", "โ„ข", "โ„น", "โ†”", "โ†•", "โ†–", "โ†—", "โ†˜", "โ†™", "โ†ฉ", "โ†ช", "#", "โŒš", "โŒ›", "โฉ", "โช", "โซ", "โฌ", "โฐ", "โณ", "โ“‚", "โ–ช", "โ–ซ", "โ–ถ", "โ—€", "โ—ป", "โ—ผ", "โ—ฝ", "โ—พ", "โ˜€", "โ˜", "โ˜Ž", "โ˜‘", "โ˜”", "โ˜•", "โ˜", "โ˜บ", "โ™ˆ", "โ™‰", "โ™Š", "โ™‹", "โ™Œ", "โ™", "โ™Ž", "โ™", "โ™", "โ™‘", "โ™’", "โ™“", "โ™ ", "โ™ฃ", "โ™ฅ", "โ™ฆ", "โ™จ", "โ™ป", "โ™ฟ", "โš“", "โš ", "โšก", "โšช", "โšซ", "โšฝ", "โšพ", "โ›„", "โ›…", "โ›Ž", "โ›”", "โ›ช", "โ›ฒ", "โ›ณ", "โ›ต", "โ›บ", "โ›ฝ", "โœ‚", "โœ…", "โœˆ", "โœ‰", "โœŠ", "โœ‹", "โœŒ", "โœ", "โœ’", "โœ”", "โœ–", "โœจ", "โœณ", "โœด", "โ„", "โ‡", "โŒ", "โŽ", "โ“", "โ”", "โ•", "โ—", "โค", "โž•", "โž–", "โž—", "โžก", "โžฐ", "โžฟ", "โคด", "โคต", "โฌ…", "โฌ†", "โฌ‡", "โฌ›", "โฌœ", "โญ", "โญ•", "0", "ใ€ฐ", "ใ€ฝ", "1", "2", "ใŠ—", "ใŠ™", "3", "4", "5", "6", "7", "8", "9", "ยฉ", "ยฎ", "\ue50a"}
Loading

0 comments on commit 8202080

Please sign in to comment.