diff --git a/cli/commands/play.go b/cli/commands/play.go index 5456cfa..f43007f 100644 --- a/cli/commands/play.go +++ b/cli/commands/play.go @@ -16,19 +16,46 @@ import ( "sync" "time" + // adding custom stuff here + "context" + "github.com/BattlesnakeOfficial/rules" "github.com/BattlesnakeOfficial/rules/board" "github.com/BattlesnakeOfficial/rules/client" "github.com/BattlesnakeOfficial/rules/maps" "github.com/google/uuid" - _ "github.com/mattn/go-sqlite3" // the SQLite driver (underscore means we only init it) - "github.com/pkg/browser" + + // _ "github.com/mattn/go-sqlite3" // the SQLite driver for local development + "github.com/spf13/cobra" log "github.com/spf13/jwalterweatherman" + + "github.com/BattlesnakeOfficial/rules/db" ) +// will write to db at end of game var frames []board.GameEvent +func setupDb(dsn string) *db.Database { + // Replace with your Postgres DSN or set DATABASE_URL + + if dsn == "" { + print("Using default DSN for local development. Please set DATABASE_URL in production.\n") + dsn = "removeditdidnotpushtoproductionhaha" // DO NOT PUSH TO PRODUCTION + + } + + // Connect to DB + database, err := db.Connect(dsn) + if err != nil { + log.ERROR.Fatalf("Failed to connect: %v", err) + } + + print("SUCCESS: Connected to database\n") + // os.Exit(0) // Exit after successful connection for testing purposes + return database +} + // Used to store state for each SnakeState while running a local game type SnakeState struct { URL string @@ -80,6 +107,172 @@ type GameState struct { idGenerator func(int) string } +var ( + activeGame *GameState + // Mutex to protect activeGame from concurrent access + activeGameMutex sync.Mutex +) + +func NewHostCommand() *cobra.Command { + + var hostCmd = &cobra.Command{ + Use: "host", + Short: "Host an HTTP server to start Battlesnake games via /play endpoint.", + Long: "Runs an HTTP server that accepts /play requests with query parameters instead of CLI flags. Each request will initialize and run a new game in the background.", + Run: func(cmd *cobra.Command, args []string) { + http.HandleFunc("/play", func(w http.ResponseWriter, r *http.Request) { + activeGameMutex.Lock() + + defer activeGameMutex.Unlock() + + if activeGame != nil { + log.WARN.Print("A game is already running. Please wait for it to finish before starting a new one.") + w.WriteHeader(http.StatusConflict) // 409 Conflict + json.NewEncoder(w).Encode(map[string]string{ + "status": "busy", + "message": "A game is already running. Please wait for it to finish before starting a new one.", + }) + return + } + + // Create a new game state with defaults + gameState := &GameState{ + Width: 11, + Height: 11, + Timeout: 500, + GameType: "standard", + MapName: "standard", + Seed: time.Now().UTC().UnixNano(), + TurnDelay: 0, + TurnDuration: 0, + OutputPath: "", + ViewInBrowser: true, + BoardURL: "https://board.battlesnake.com", + FoodSpawnChance: 15, + MinimumFood: 1, + HazardDamagePerTurn: 14, + ShrinkEveryNTurns: 25, + } + + q := r.URL.Query() + + // Map query params to fields + if v := q.Get("width"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.Width = i + } + } + if v := q.Get("height"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.Height = i + } + } + if v := q["name"]; len(v) > 0 { + gameState.Names = v + } + if v := q["url"]; len(v) > 0 { + gameState.URLs = v + } + if v := q.Get("timeout"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.Timeout = i + } + } + if v := q.Get("sequential"); v == "true" { + gameState.Sequential = true + } + if v := q.Get("gametype"); v != "" { + gameState.GameType = v + } + if v := q.Get("map"); v != "" { + gameState.MapName = v + } + if v := q.Get("viewmap"); v == "true" { + gameState.ViewMap = true + } + if v := q.Get("color"); v == "true" { + gameState.UseColor = true + } + if v := q.Get("seed"); v != "" { + if i, err := strconv.ParseInt(v, 10, 64); err == nil { + gameState.Seed = i + } + } + if v := q.Get("delay"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.TurnDelay = i + } + } + if v := q.Get("duration"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.TurnDuration = i + } + } + if v := q.Get("output"); v != "" { + gameState.OutputPath = v + } + if v := q.Get("browser"); v == "true" { + gameState.ViewInBrowser = true + } + if v := q.Get("board-url"); v != "" { + gameState.BoardURL = v + } + if v := q.Get("foodSpawnChance"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.FoodSpawnChance = i + } + } + if v := q.Get("minimumFood"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.MinimumFood = i + } + } + if v := q.Get("hazardDamagePerTurn"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.HazardDamagePerTurn = i + } + } + if v := q.Get("shrinkEveryNTurns"); v != "" { + if i, err := strconv.Atoi(v); err == nil { + gameState.ShrinkEveryNTurns = i + } + } + + if err := gameState.Initialize(); err != nil { + log.FATAL.Printf("Error initializing game: %v", err) + http.Error(w, fmt.Sprintf("failed to initialize: %v", err), http.StatusBadRequest) + return + } + + // Set active game + activeGame = gameState + + // Run game asynchronously + go func(gs *GameState) { + + if err := gs.Run(); err != nil { + log.FATAL.Printf("Error running game: %v", err) + } + }(gameState) + + w.Header().Set("Content-Type", "application/json") + + w.WriteHeader(http.StatusOK) + resp := map[string]string{ + "id": gameState.gameID, + } + print("gameState.gameID", gameState.gameID) + json.NewEncoder(w).Encode(resp) + }) + + log.INFO.Print("Hosting Battlesnake HTTP server on :6969") + log.INFO.Print(http.ListenAndServe(":6969", nil)) + }, + } + + return hostCmd +} + func NewPlayCommand() *cobra.Command { gameState := &GameState{} @@ -178,6 +371,11 @@ func (gameState *GameState) Initialize() error { // Setup and run a full game. func (gameState *GameState) Run() error { + + var dbconnection string = os.Getenv("DATABASE_URL") + var ctx context.Context = context.Background() + var database *db.Database = setupDb(dbconnection) + defer database.Pool.Close() var gameOver bool var err error @@ -207,7 +405,7 @@ func (gameState *GameState) Run() error { boardGame := board.Game{ ID: gameState.gameID, - Status: "running", + Status: "running", // switch to comlpeted before pushing to prod Width: gameState.Width, Height: gameState.Height, Ruleset: map[string]string{ @@ -219,21 +417,24 @@ func (gameState *GameState) Run() error { } boardServer := board.NewBoardServer(boardGame) - if gameState.outputFile != nil { - // insert initial game start into database - bytes, err := json.Marshal(boardGame) + // commented out for now, we will write to db at end of game, and we modified the functionality + // if gameState.outputFile != nil { + // // insert initial game start into database + // // direct db call since this is the first event - if err != nil { - log.WARN.Printf("Failed to serialize frame event for turn%v", err) - } else { - bytes = append(bytes, '\n') // write each event on its own line - if _, err := gameState.outputFile.Write(bytes); err != nil { - log.WARN.Printf("Failed to write frame event to file: %v", err) - } else { - log.INFO.Printf("Wrote initial get state to output file") - } - } - } + // bytes, err := json.Marshal(boardGame) // remove this later + + // if err != nil { + // log.WARN.Printf("Failed to serialize frame event for turn%v", err) + // } else { + // bytes = append(bytes, '\n') // write each event on its own line + // if _, err := gameState.outputFile.Write(bytes); err != nil { + // log.WARN.Printf("Failed to write frame event to file: %v", err) + // } else { + // log.INFO.Printf("Wrote initial get state to output file") + // } + // } + // } if gameState.ViewInBrowser { serverURL, err := boardServer.Listen() @@ -242,13 +443,13 @@ func (gameState *GameState) Run() error { } defer boardServer.Shutdown() log.INFO.Printf("Board server listening on %s", serverURL) + // no need to open the browser automatically since our primary use case is to run this headlessly + // boardURL := fmt.Sprintf(gameState.BoardURL+"?engine=%s&game=%s&autoplay=true", serverURL, gameState.gameID) - boardURL := fmt.Sprintf(gameState.BoardURL+"?engine=%s&game=%s&autoplay=true", serverURL, gameState.gameID) - - log.INFO.Printf("Opening board URL: %s", boardURL) - if err := browser.OpenURL(boardURL); err != nil { - log.ERROR.Printf("Failed to open browser: %v", err) - } + // log.INFO.Printf("Opening board URL: %s", boardURL) + // if err := browser.OpenURL(boardURL); err != nil { + // log.ERROR.Printf("Failed to open browser: %v", err) + // } // send turn zero to websocket server boardServer.SendEvent(gameState.buildFrameEvent(boardState)) @@ -262,6 +463,7 @@ func (gameState *GameState) Run() error { gameState.printState(boardState) } + // Bhavnoor's notes: This is straight up a lie, the default output is nothing like a valid API request. // Export game first, if enabled, so that we capture the request for turn zero. if exportGame { // The output file was designed in a way so that (nearly) every entry is equivalent to a valid API request. @@ -353,16 +555,11 @@ func (gameState *GameState) Run() error { Data: boardGame, } - // boardServer.SendEvent(board.GameEvent{ - // EventType: board.EVENT_TYPE_GAME_END, - // Data: boardGame, - // }) - boardServer.SendEvent(endEvent) + frames = append(frames, endEvent) // add game end to frames array if gameState.outputFile != nil { - // write frames array to db - // insert game end into database + bytes, err := json.Marshal(endEvent) if err != nil { // log.WARN.Printf("Unable to serialize game end event: %v", err) @@ -374,23 +571,36 @@ func (gameState *GameState) Run() error { } } - // // log.INFO.Printf("wrote frame event for game end") } } - - if exportGame { - // lines, err := gameExporter.FlushToFile(gameState.outputFile) - - lines, err := gameExporter.FlushToFile(io.Discard) - - if err != nil { - return fmt.Errorf("Unable to export game: %w", err) - } - log.INFO.Printf("Fake Wrote %d lines to output file: %s", lines, gameState.OutputPath) + // the magic happens here: + err = database.WriteInfo(ctx, boardGame, frames) + if err != nil { + log.WARN.Printf("Failed to write game end event to database: %v", err) + } else { + log.INFO.Printf("Wrote game end event to database") } + activeGameMutex.Lock() + activeGame = nil + activeGameMutex.Unlock() + + // if exportGame { + // // lines, err := gameExporter.FlushToFile(gameState.outputFile) + + // lines, err := gameExporter.FlushToFile(io.Discard) + + // if err != nil { + // return fmt.Errorf("Unable to export game: %w", err) + // } + // log.INFO.Printf("Fake Wrote %d lines to output file: %s", lines, gameState.OutputPath) + // } + + // return nil + // os.Exit(0) // Exit after successful run for testing purposes return nil + } func (gameState *GameState) initializeBoardFromArgs() (bool, *rules.BoardState, error) { @@ -832,10 +1042,12 @@ func (gameState *GameState) buildFrameEvent(boardState *rules.BoardState) board. Data: gameFrame, } + frames = append(frames, gameEvent) + // === New: Write frame event to output file if set === if gameState.outputFile != nil { // add frame event to array for now, will write to db at end of game - frames = append(frames, gameEvent) + // frames = append(frames, gameEvent) bytes, err := json.Marshal(gameEvent) if err != nil { diff --git a/cli/commands/root.go b/cli/commands/root.go index 72bab2b..c44b61c 100644 --- a/cli/commands/root.go +++ b/cli/commands/root.go @@ -22,7 +22,9 @@ var rootCmd = &cobra.Command{ } func Execute() { + rootCmd.AddCommand(NewPlayCommand()) + rootCmd.AddCommand(NewHostCommand()) mapCommand := NewMapCommand() mapCommand.AddCommand(NewMapListCommand()) diff --git a/db/db.go b/db/db.go new file mode 100644 index 0000000..c36cb58 --- /dev/null +++ b/db/db.go @@ -0,0 +1,97 @@ +package db + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/BattlesnakeOfficial/rules/board" + "github.com/jackc/pgx/v5/pgxpool" +) + +// the db package provides a simple interface to interact with a PostgreSQL database, it is extremely simple and only writing, reading and deleting game info + +// @ author Bhavnoor Singh Saroya + +// Database wraps pgxpool +type Database struct { + Pool *pgxpool.Pool +} + +// Connect initializes the pool and creates the table if needed +func Connect(dsn string) (*Database, error) { + ctx := context.Background() + + pool, err := pgxpool.New(ctx, dsn) + if err != nil { + return nil, fmt.Errorf("db connect: %w", err) + } + + // Ensure table exists + _, err = pool.Exec(ctx, ` + CREATE TABLE IF NOT EXISTS items ( + id UUID PRIMARY KEY, + info JSONB NOT NULL, + frames JSONB[] + ) + `) + if err != nil { + return nil, fmt.Errorf("create table: %w", err) + } + + return &Database{Pool: pool}, nil +} + +func (db *Database) GetInfo(ctx context.Context, id string) (*board.Game, error) { + var gameData []byte + var it board.Game + err := db.Pool.QueryRow(ctx, + "SELECT info FROM items WHERE id=$1", id). + Scan(&gameData) + if err != nil { + return nil, err + } + // 2. Unmarshal the byte slice into the struct. + err = json.Unmarshal(gameData, &it) + if err != nil { + return nil, err + } + return &it, nil +} + +func (db *Database) WriteInfo(ctx context.Context, info board.Game, frames []board.GameEvent) error { + var err error + var uuid string = info.ID + // 1. Marshal the struct into a byte slice. + gameData, err := json.Marshal(info) + if err != nil { + return fmt.Errorf("marshal game info: %w", err) + } + + // convert []board.GameEvent to []json.RawMessage + var framesData []json.RawMessage + for _, f := range frames { + b, err := json.Marshal(f) + if err != nil { + return fmt.Errorf("marshal frame: %w", err) + } + framesData = append(framesData, b) + } + + // use pgtype to wrap into postgres []JSONB + _, errr := db.Pool.Exec(ctx, + "INSERT INTO items (id, info, frames) VALUES ($1, $2, $3)", + uuid, gameData, framesData) + if errr != nil { + print("error writing to db, bad stuff happened: ") + // panic(fmt.Sprintf("Error inserting item: %v", err)) + return fmt.Errorf("insert item: %w", errr) + } + return nil +} + +func (db *Database) Delete(ctx context.Context, id int) error { + _, err := db.Pool.Exec(ctx, + "DELETE FROM items WHERE id=$1", id) + return err +} diff --git a/examplestate.json b/examplestate.json deleted file mode 100644 index 2e89a2d..0000000 --- a/examplestate.json +++ /dev/null @@ -1,91 +0,0 @@ -{"ID":"25c502f3-a05c-49af-8dbf-4c0fd17e8544","Status":"running","Width":11,"Height":11,"Ruleset":{"name":"standard"},"SnakeTimeout":0,"Source":"","RulesetName":"standard","RulesStages":[],"Map":"standard"} -{"Type":"frame","Data":{"Turn":0,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":5,"Y":1},{"X":5,"Y":1},{"X":5,"Y":1}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"1","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":5},{"X":9,"Y":5},{"X":9,"Y":5}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"1","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":1,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":6,"Y":1},{"X":5,"Y":1},{"X":5,"Y":1}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":6},{"X":9,"Y":5},{"X":9,"Y":5}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":2,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":6,"Y":0},{"X":6,"Y":1},{"X":5,"Y":1}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":6},{"X":9,"Y":6},{"X":9,"Y":5}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":3,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":6},{"X":8,"Y":6},{"X":9,"Y":6}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":4,"Y":0},{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":4,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":0}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"45","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":6},{"X":7,"Y":6},{"X":8,"Y":6}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"44","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":5,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":5},{"X":6,"Y":6},{"X":7,"Y":6}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":6,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":4},{"X":6,"Y":5},{"X":6,"Y":6}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":7,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0},{"X":4,"Y":0}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"37","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":4},{"X":6,"Y":4},{"X":6,"Y":5}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"37","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":8,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":3},{"X":7,"Y":4},{"X":6,"Y":4}],"Health":92,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"17","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":9,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":3},{"X":7,"Y":3},{"X":7,"Y":4}],"Health":91,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":10,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":3,"Y":2}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":3},{"X":6,"Y":3},{"X":7,"Y":3}],"Health":90,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":11,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":4},{"X":5,"Y":3},{"X":6,"Y":3}],"Health":89,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":12,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":4},{"X":5,"Y":4},{"X":5,"Y":3}],"Health":88,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":13,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":3},{"X":6,"Y":4},{"X":5,"Y":4}],"Health":87,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":14,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":2},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":3},{"X":6,"Y":3},{"X":6,"Y":4}],"Health":86,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":15,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3},{"X":1,"Y":3}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"18","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":3},{"X":7,"Y":3},{"X":6,"Y":3}],"Health":85,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"18","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":1,"Y":1},{"X":8,"Y":5},{"X":7,"Y":2}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":16,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3},{"X":0,"Y":3}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":2},{"X":8,"Y":3},{"X":7,"Y":3}],"Health":84,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":17,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2},{"X":0,"Y":3}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":2},{"X":8,"Y":2},{"X":8,"Y":3}],"Health":83,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":18,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2},{"X":0,"Y":2}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2}],"Health":82,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":19,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":1,"Y":2}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2}],"Health":81,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":20,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":10,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1}],"Health":80,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":21,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":10,"Y":1},{"X":10,"Y":0},{"X":9,"Y":0}],"Health":79,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":22,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2},{"X":2,"Y":2}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":10,"Y":1},{"X":10,"Y":0}],"Health":78,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":23,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2},{"X":3,"Y":2}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":1},{"X":9,"Y":1},{"X":10,"Y":1}],"Health":77,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":24,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1},{"X":4,"Y":2}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":0},{"X":8,"Y":1},{"X":9,"Y":1}],"Health":76,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":25,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1},{"X":4,"Y":1}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":0},{"X":8,"Y":0},{"X":8,"Y":1}],"Health":75,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":26,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1},{"X":3,"Y":1}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":0},{"X":7,"Y":0},{"X":8,"Y":0}],"Health":74,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":1,"Y":3}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":27,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":1},{"X":6,"Y":0},{"X":7,"Y":0}],"Health":73,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":1,"Y":3}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":28,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2},{"X":2,"Y":2}],"Health":100,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":2},{"X":6,"Y":1},{"X":6,"Y":0}],"Health":72,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":7,"Y":2},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":29,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":2}],"Health":99,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":2},{"X":6,"Y":2},{"X":6,"Y":1},{"X":6,"Y":1}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":30,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":98,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":2},{"X":7,"Y":2},{"X":6,"Y":2},{"X":6,"Y":1}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":31,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4},{"X":2,"Y":4}],"Health":97,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":2},{"X":8,"Y":2},{"X":7,"Y":2},{"X":6,"Y":2}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":32,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":96,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2},{"X":7,"Y":2}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":33,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3},{"X":1,"Y":3}],"Health":95,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"11","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2},{"X":8,"Y":2}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":34,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4},{"X":0,"Y":3}],"Health":94,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"44","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":8,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1},{"X":9,"Y":2}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"26","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":35,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":0,"Y":4}],"Health":93,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":0},{"X":8,"Y":0},{"X":9,"Y":0},{"X":9,"Y":1}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":36,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5}],"Health":92,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":7,"Y":1},{"X":7,"Y":0},{"X":8,"Y":0},{"X":9,"Y":0}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":37,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6}],"Health":91,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":1},{"X":7,"Y":1},{"X":7,"Y":0},{"X":8,"Y":0}],"Health":92,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":38,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7},{"X":0,"Y":7}],"Health":90,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":6,"Y":0},{"X":6,"Y":1},{"X":7,"Y":1},{"X":7,"Y":0}],"Health":91,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":39,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7},{"X":1,"Y":7}],"Health":89,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1},{"X":7,"Y":1}],"Health":90,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"11","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":40,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":7}],"Health":88,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0},{"X":6,"Y":1}],"Health":89,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":41,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6},{"X":2,"Y":6}],"Health":87,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0},{"X":6,"Y":0}],"Health":88,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":42,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5},{"X":1,"Y":6}],"Health":86,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":3,"Y":0},{"X":4,"Y":0},{"X":5,"Y":0}],"Health":87,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"22","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":43,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5},{"X":1,"Y":5}],"Health":85,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":0},{"X":2,"Y":0},{"X":3,"Y":0},{"X":4,"Y":0}],"Health":86,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":44,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6},{"X":0,"Y":5}],"Health":84,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":0},{"X":1,"Y":0},{"X":2,"Y":0},{"X":3,"Y":0}],"Health":85,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":45,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7},{"X":0,"Y":6}],"Health":83,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":1},{"X":0,"Y":0},{"X":1,"Y":0},{"X":2,"Y":0}],"Health":84,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":46,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":0,"Y":7}],"Health":82,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":2},{"X":0,"Y":1},{"X":0,"Y":0},{"X":1,"Y":0}],"Health":83,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":47,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7}],"Health":81,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":3},{"X":0,"Y":2},{"X":0,"Y":1},{"X":0,"Y":0}],"Health":82,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":48,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":80,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":3},{"X":0,"Y":3},{"X":0,"Y":2},{"X":0,"Y":1}],"Health":81,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":49,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10},{"X":1,"Y":9}],"Health":79,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":2},{"X":1,"Y":3},{"X":0,"Y":3},{"X":0,"Y":2}],"Health":80,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":50,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10},{"X":1,"Y":10}],"Health":78,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":0,"Y":3}],"Health":79,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"18","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":51,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10},{"X":2,"Y":10}],"Health":77,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3}],"Health":78,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":52,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9},{"X":3,"Y":10}],"Health":76,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"19","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":2,"Y":1},{"X":2,"Y":2},{"X":1,"Y":2}],"Health":77,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":53,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9},{"X":3,"Y":9}],"Health":75,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":0},{"X":2,"Y":0},{"X":2,"Y":1},{"X":2,"Y":2}],"Health":76,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":54,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8},{"X":2,"Y":9}],"Health":74,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":1},{"X":3,"Y":0},{"X":2,"Y":0},{"X":2,"Y":1}],"Health":75,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":55,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":2,"Y":8}],"Health":73,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0},{"X":2,"Y":0}],"Health":74,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":56,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":72,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1},{"X":3,"Y":0}],"Health":73,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":57,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9},{"X":1,"Y":9}],"Health":71,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"21","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":2},{"X":3,"Y":2},{"X":3,"Y":1}],"Health":72,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"28","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":58,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10},{"X":0,"Y":9}],"Health":70,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":1},{"X":2,"Y":1},{"X":2,"Y":2},{"X":3,"Y":2}],"Health":71,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":59,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10},{"X":0,"Y":10}],"Health":69,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":1},{"X":1,"Y":1},{"X":2,"Y":1},{"X":2,"Y":2}],"Health":70,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":60,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10},{"X":1,"Y":10}],"Health":68,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":0,"Y":0},{"X":0,"Y":1},{"X":1,"Y":1},{"X":2,"Y":1}],"Health":69,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":61,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9},{"X":2,"Y":10}],"Health":67,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":0},{"X":0,"Y":0},{"X":0,"Y":1},{"X":1,"Y":1}],"Health":68,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":62,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8},{"X":2,"Y":9}],"Health":66,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":0},{"X":1,"Y":0},{"X":0,"Y":0},{"X":0,"Y":1}],"Health":67,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":63,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7},{"X":2,"Y":8}],"Health":65,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":1},{"X":2,"Y":0},{"X":1,"Y":0},{"X":0,"Y":0}],"Health":66,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":64,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7},{"X":2,"Y":7}],"Health":64,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":1},{"X":2,"Y":1},{"X":2,"Y":0},{"X":1,"Y":0}],"Health":65,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":65,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8},{"X":1,"Y":7}],"Health":63,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":1},{"X":3,"Y":1},{"X":2,"Y":1},{"X":2,"Y":0}],"Health":64,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":66,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9},{"X":1,"Y":8}],"Health":62,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":2,"Y":1}],"Health":63,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":67,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9},{"X":1,"Y":9}],"Health":61,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1}],"Health":62,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":68,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8},{"X":0,"Y":9}],"Health":60,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"12","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1}],"Health":61,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":69,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7},{"X":0,"Y":8}],"Health":59,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2}],"Health":60,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"11","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":70,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6},{"X":0,"Y":7}],"Health":58,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3}],"Health":59,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":71,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5},{"X":0,"Y":6}],"Health":57,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"22","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3}],"Health":58,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"23","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":3,"Y":5},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":72,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5},{"X":0,"Y":5}],"Health":56,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3},{"X":2,"Y":3}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"16","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":73,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4},{"X":1,"Y":5}],"Health":55,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"39","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"39","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":74,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3},{"X":1,"Y":4}],"Health":54,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4},{"X":2,"Y":4}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"17","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":75,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2},{"X":1,"Y":3}],"Health":53,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5},{"X":3,"Y":4}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":76,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2},{"X":1,"Y":2}],"Health":52,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5},{"X":3,"Y":5}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":77,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1},{"X":0,"Y":2}],"Health":51,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6},{"X":2,"Y":5}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":78,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1},{"X":0,"Y":1}],"Health":50,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7},{"X":2,"Y":6}],"Health":94,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":79,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1},{"X":1,"Y":1}],"Health":49,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":7}],"Health":93,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":4,"Y":10},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":80,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2},{"X":2,"Y":1}],"Health":48,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8},{"X":2,"Y":8}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":81,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2},{"X":2,"Y":2}],"Health":47,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9},{"X":2,"Y":8}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":82,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1},{"X":3,"Y":2}],"Health":46,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"17","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10},{"X":2,"Y":9}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":83,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1},{"X":3,"Y":1}],"Health":45,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10},{"X":2,"Y":10}],"Health":97,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":84,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2},{"X":4,"Y":1}],"Health":44,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"13","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10},{"X":3,"Y":10}],"Health":96,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"12","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":85,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3},{"X":4,"Y":2}],"Health":43,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"14","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":4,"Y":10}],"Health":95,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":3,"Y":7},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":86,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3},{"X":4,"Y":3}],"Health":42,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10},{"X":5,"Y":10}],"Health":100,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"15","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":87,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3},{"X":3,"Y":3}],"Health":41,"Death":null,"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"16","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":2,"Y":7},{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9},{"X":5,"Y":10}],"Health":99,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"13","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} -{"Type":"frame","Data":{"Turn":88,"Snakes":[{"ID":"d0def004-177f-4daa-a869-91adcc99ee11","Name":"alligator","Body":[{"X":1,"Y":7},{"X":1,"Y":6},{"X":2,"Y":6},{"X":2,"Y":5},{"X":2,"Y":4},{"X":2,"Y":3}],"Health":40,"Death":{"Cause":"head-collision","Turn":88,"EliminatedBy":"6afa331f-14c7-43c9-89cb-324a5c8dda4d"},"Color":"#196f3d","HeadType":"alligator","TailType":"dragon","Latency":"15","Shout":"","Squad":"","Author":"Microsoft Maddie","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false},{"ID":"6afa331f-14c7-43c9-89cb-324a5c8dda4d","Name":"train","Body":[{"X":1,"Y":7},{"X":2,"Y":7},{"X":3,"Y":7},{"X":3,"Y":8},{"X":4,"Y":8},{"X":4,"Y":9},{"X":5,"Y":9}],"Health":98,"Death":null,"Color":"#e67e22","HeadType":"train","TailType":"train","Latency":"14","Shout":"","Squad":"","Author":"barder_bogey","StatusCode":200,"Error":"","IsBot":false,"IsEnvironment":false}],"Food":[{"X":10,"Y":6},{"X":5,"Y":5},{"X":8,"Y":5},{"X":10,"Y":4},{"X":10,"Y":0},{"X":9,"Y":4},{"X":4,"Y":0},{"X":7,"Y":8},{"X":10,"Y":9}],"Hazards":[]}} -{"Type":"game_end","Data":{"ID":"25c502f3-a05c-49af-8dbf-4c0fd17e8544","Status":"running","Width":11,"Height":11,"Ruleset":{"name":"standard"},"SnakeTimeout":0,"Source":"","RulesetName":"standard","RulesStages":[],"Map":"standard"}} \ No newline at end of file diff --git a/go.mod b/go.mod index fb07760..6c3a1dd 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/BattlesnakeOfficial/rules -go 1.21 +go 1.23.0 + +toolchain go1.24.6 require ( github.com/google/uuid v1.5.0 @@ -19,6 +21,10 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.7.5 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-sqlite3 v1.14.32 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -32,10 +38,12 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.37.0 // indirect golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect - golang.org/x/net v0.20.0 // indirect - golang.org/x/sys v0.16.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sync v0.13.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 3874865..c597dcf 100644 --- a/go.sum +++ b/go.sum @@ -17,6 +17,14 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.7.5 h1:JHGfMnQY+IEtGM63d+NGMjoRpysB2JBwDr5fsngwmJs= +github.com/jackc/pgx/v5 v5.7.5/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -63,6 +71,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= @@ -71,18 +81,29 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA= golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=