[
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n## Build generated\nbuild/\nDerivedData/\n\n## Various settings\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata/\n\n## Other\n*.moved-aside\n*.xccheckout\n*.xcscmblueprint\n\n## Obj-C/Swift specific\n*.hmap\n*.ipa\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n#\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\n# Packages/\n.build/\n\n.DS_Store"
  },
  {
    "path": "Gameboards.playground/Pages/Checkers.xcplaygroundpage/Contents.swift",
    "content": "import UIKit\n\nvar checkers = Gameboard(.Checkers)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.66, green:0.62, blue:0.48, alpha:1)\ncolors.foreground = UIColor(red:0.62, green:0.58, blue:0.44, alpha:1)\n\ncolors.player1 = UIColor(red:0.8, green:0.13, blue:0, alpha:1)\ncolors.player2 = UIColor(red:0.13, green:0.13, blue:0.13, alpha:1)\n\ncolors.selected = UIColor.whiteColor()\ncolors.highlight = UIColor.whiteColor()\n\ncheckers.boardColors = colors\n\n// collection of moves\n\nlet moves: [(Square,Square)] = [\n\n    ((2,1),(3,2)), // move\n    ((5,2),(4,3)), // move\n    ((2,3),(3,4)), // move\n    ((4,3),(2,1)), // jump\n    ((2,5),(4,3)), // cannot jump yourself\n    ((2,5),(3,4)), // cannot land on your own piece\n    ((1,0),(2,1)), // cannot land on another piece\n\n]\n\n// loop moves\n\nfor move in moves {\n    \n    do {\n        \n        try checkers.move(pieceAt: move.0, toSquare: move.1)\n    \n    } catch {\n        \n        print(error)\n    \n    }\n    \n}\n\ncheckers.showAvailable((1,2))\n\ncheckers.visualize()\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "Gameboards.playground/Pages/Chess.xcplaygroundpage/Contents.swift",
    "content": "import UIKit\n\nvar chess = Gameboard(.Chess)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.52, green:0.68, blue:0.43, alpha:1)\ncolors.foreground = UIColor(red:0.48, green:0.64, blue:0.39, alpha:1)\n\ncolors.player1 = UIColor.whiteColor()\ncolors.player2 = UIColor.blackColor()\n\ncolors.selected = UIColor(red:0.06, green:0.46, blue:0.71, alpha:1)\ncolors.highlight = UIColor(red:0.06, green:0.46, blue:0.71, alpha:1)\n\nchess.boardColors = colors\n\n// collection of moves\n\nlet moves: [(ChessSquare,ChessSquare)] = [\n    \n    (B7,B5), // pawn leaps\n    (C2,C4), // pawn leaps\n    (B5,C4), // pawn takes pawn\n    (B1,C3), // knight charges\n    (C8,A6), // bishop advances\n    (E2,E4), // pawn leaps\n    (G7,G6), // pawn creeps\n    (F1,C4), // bishop take pawn\n    (A6,D3), // blocked move throws error\n    \n    \n]\n\n// loop moves\n\nfor move in moves {\n    \n    do {\n        \n        try chess.move(pieceAt: move.0, toSquare: move.1)\n        \n    } catch {\n        \n        print(error)\n    \n    }\n    \n}\n\nchess.showAvailable(A6)\n\nchess.visualize()\n\n"
  },
  {
    "path": "Gameboards.playground/Pages/Go.xcplaygroundpage/Contents.swift",
    "content": "import UIKit\n\nvar go = Gameboard(.Go)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.36, green:0.29, blue:0.16, alpha:1)\ncolors.foreground = UIColor(red:0.11, green:0.08, blue:0.03, alpha:1)\n\ncolors.player1 = UIColor.whiteColor()\ncolors.player2 = UIColor.blackColor()\n\ngo.boardColors = colors\n\n// collection of guesses\n\nlet moves: [Square] = [\n    \n    // moves\n    (1,1),\n    (6,7),\n    (1,7),\n    (6,0),\n    (4,4),\n    (4,5),\n    (1,2),\n    \n]\n\n// loop moves\n\nfor move in moves {\n    \n    do {\n        \n        try go.move(toSquare: move)\n        \n    } catch {\n        \n        print(error)\n        \n    }\n    \n}\n\ngo.visualize()\n"
  },
  {
    "path": "Gameboards.playground/Pages/Mancala.xcplaygroundpage/Contents.swift",
    "content": "import UIKit"
  },
  {
    "path": "Gameboards.playground/Pages/Minesweeper.xcplaygroundpage/Contents.swift",
    "content": "import UIKit\n\nenum MoveType { case Guess, Mark }\n\nvar minesweeper = Gameboard(.Minesweeper, testing: true)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.5, green:0.5, blue:0.5, alpha:1)\ncolors.foreground = UIColor(red:0.6, green:0.6, blue:0.6, alpha:1)\n\ncolors.player1 = UIColor.yellowColor()\ncolors.player2 = UIColor.blackColor()\n\ncolors.highlight = UIColor.blueColor()\ncolors.selected = UIColor.redColor()\n\nminesweeper.boardColors = colors\n\n// collection of guesses\n\nlet guesses: [(Square,MoveType)] = [\n    \n    ((4,3),.Guess), // guess\n    ((9,0),.Mark),  // mark\n    ((7,4),.Mark),  // mark\n    ((4,1),.Mark),  // mark\n    ((4,0),.Guess), // guess\n    ((0,9),.Guess), // guess\n    ((2,7),.Mark), // guess\n    ((6,9),.Guess), // guess\n    ((1,0),.Guess), // game over\n    \n]\n\n// loop guesses\n\nfor guess in guesses {\n    \n    do {\n        \n        switch guess.1 {\n            \n        case .Guess: try minesweeper.guess(toSquare: guess.0)\n        case .Mark: try minesweeper.mark(toSquare: guess.0)\n            \n        }\n        \n    } catch {\n        \n        print(error)\n        \n    }\n    \n}\n\nminesweeper.visualize(CGRect(x: 0, y: 0, width: 199, height: 199))\n"
  },
  {
    "path": "Gameboards.playground/Pages/Sudoku.xcplaygroundpage/Contents.swift",
    "content": "import UIKit\n\nvar sudoku = Gameboard(.Sudoku, testing: true)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.19, green:0.78, blue:0.71, alpha:1)\ncolors.foreground = UIColor(red:0.09, green:0.4, blue:0.44, alpha:1)\n\nsudoku.boardColors = colors\n\n// collection of guesses\n\nlet guesses: [(Square,Guess)] = [\n    \n    // guesses\n    ((0,2),\"5\"),\n    ((8,8),\"4\"),\n    ((6,5),\"4\"),\n    ((2,7),\"4\"),\n    ((3,0),\"4\"),\n    ((5,3),\"1\"),\n    ((6,2),\"1\"),\n    ((7,8),\"1\"),\n    ((2,5),\"2\"),\n    \n]\n\n// loop guesses\n\nfor guess in guesses {\n    \n    do {\n        \n        try sudoku.guess(toSquare: guess.0, withGuess: guess.1)\n        \n    } catch {\n        \n        print(error)\n        \n    }\n    \n}\n\nsudoku.visualize(CGRect(x: 0, y: 0, width: 198, height: 198))\n"
  },
  {
    "path": "Gameboards.playground/Pages/TicTacToe.xcplaygroundpage/Contents.swift",
    "content": "import UIKit\n\nvar tictactoe = Gameboard(.TicTacToe)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.player1 = UIColor(red:0.43, green:0.98, blue:0.7, alpha:1)\ncolors.player2 = UIColor(red:1, green:0.15, blue:0.18, alpha:1)\n\ntictactoe.boardColors = colors\n\n// collection of moves\n\nlet moves: [Square] = [\n \n    (1,1),\n    (0,0),\n    (0,2),\n    (2,0),\n    (1,0),\n    (1,2),\n    (0,1),\n    (1,1), // cant play filled spot\n    (2,1),\n    (2,2), // stalemate\n    \n]\n\n// loop moves\n\nfor move in moves {\n    \n    do {\n        \n        try tictactoe.move(toSquare: move)\n        \n    } catch {\n        \n        print(error)\n        \n    }\n    \n}\n\ntictactoe.visualize()\n\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Alquerque.swift",
    "content": "import UIKit\n\npublic struct Alquerque {\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Backgammon.swift",
    "content": "import UIKit\n\npublic struct Backgammon {\n    \n    public static var board: Grid {\n        \n        return Grid([\n        \n            \"●   ○ ○    ●\".array(),\n            \"●   ○ ○    ●\".array(),\n            \"●   ○ ○     \".array(),\n            \"●     ○     \".array(),\n            \"●     ○     \".array(),\n            \"○     ●     \".array(),\n            \"○     ●     \".array(),\n            \"○   ● ●     \".array(),\n            \"○   ● ●    ○\".array(),\n            \"○   ● ●    ○\".array()\n            \n        ])\n                \n    }\n    \n    public static let playerPieces = [\"●\",\"○\"]\n    \n}\n\nextension Grid {\n    \n    public func backgammon(_ rect: CGRect) -> UIView {\n        \n        let view = BackgammonView(frame: rect)\n        \n        let w = (rect.width - 50.0) / 12\n        let h = (rect.height - 110.0) / 10\n\n        view.backgroundColor = colors.background\n        view.backgroundColor2 = colors.foreground\n\n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n\n        for (r,row) in content.enumerated() {\n\n            for (c,item) in row.enumerated() {\n\n                let y = r > 4 ? 95 : 15\n                let x = c > 5 ? 35 : 15\n\n                var piece = \"\\(item)\"\n\n                let label = UILabel(frame: CGRect(x: c * w + x, y: r * h + y, width: w, height: h))\n                label.textColor = player(piece) == 0 ? colors.player1 : colors.player2\n\n                if player(piece) == 1 {\n\n                    if let index = playerPieces[1].array().index(of: piece) { piece = playerPieces[0].array()[index] }\n\n                }\n\n                label.text = piece\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2, weight: .regular)\n\n                view.addSubview(label)\n\n            }\n\n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Bombsweeper.swift",
    "content": "import UIKit\n\nextension Difficulty {\n\n    var bombFlags: Int {\n\n        switch self {\n        case .easy: return 20\n        case .medium: return 20\n        case .hard: return 20\n        }\n\n    }\n\n    var bombs: Int {\n\n        switch self {\n        case .easy: return 10\n        case .medium: return 15\n        case .hard: return 20\n        }\n\n    }\n\n    var bombsize: Int {\n\n        switch self {\n        case .easy: return 10\n        case .medium: return 15\n        case .hard: return 20\n        }\n\n    }\n\n}\n\npublic struct Bombsweeper {\n    \n    public static var board: Grid {\n\n        // randomize play area\n        \n        let grid = Grid(10 ✕ (10 ✕ EmptyPiece))\n        \n        for (r,_) in grid.content.enumerated() { grid[r,4] = \"•\" }\n        for (r,row) in grid.content.enumerated() { grid[r] = row.randomize().randomize().randomize() }\n\n        return addBombCount(grid)\n\n    }\n    \n    public static var staticboard: Grid {\n        \n        let grid = Grid([\n\n            \"   •      \".array(),\n            \"•     •   \".array(),\n            \" •  •  •  \".array(),\n            \"         •\".array(),\n            \" •        \".array(),\n            \"      •   \".array(),\n            \"          \".array(),\n            \"    •     \".array(),\n            \"        • \".array(),\n            \"•     ••  \".array()\n\n        ])\n\n        return addBombCount(grid)\n        \n    }\n    \n    public static var field: Grid { return Grid(10 ✕ (10 ✕ \"•\")) }\n    \n    public static let playerPieces = [\"⚑\",\"✘\",\"⚐\"]\n    \n    public static func validateGuess(_ s1: Square, _ grid: Grid, _ solution: Grid) throws {\n\n        let a1 = solution[s1.0,s1.1]\n\n        guard a1 != \"⚑\" else { throw MoveError.invalidmove }\n        \n        grid[s1.0,s1.1] = a1\n        \n        guard a1 != \"•\" else { grid[s1.0,s1.1] = \"✘\"; throw GameStatus.gameover }\n        guard a1 == EmptyPiece else { return }\n                \n        try checkAdjacent(s1, grid, solution)\n        \n    }\n    \n    public static func validateMark(_ s1: Square, _ grid: Grid, _ solution: Grid) throws {\n\n        let g1 = grid[s1.0,s1.1]\n\n        guard [\"⚑\",\"•\"].contains(g1) else { throw MoveError.invalidmove }\n        \n        grid[s1.0,s1.1] = g1 == \"•\" ? \"⚑\" : \"•\"\n        \n    }\n    \n    public static func checkAdjacent(_ s1: Square, _ grid: Grid, _ solution: Grid) throws {\n        \n        let adjacent = [ (-1,-1),(-1,0),(-1,1),(0,1),(1,1),(1,0),(1,-1),(0,-1) ]\n        \n        for a in adjacent {\n            \n            let s = (s1.0 + a.0, s1.1 + a.1)\n\n            guard grid.onBoard(s) else { continue }\n\n            let a1 = solution[s.0,s.1]\n\n            guard a1 != grid[s.0,s.1] else { continue }\n            \n            grid[s.0,s.1] = a1\n            \n            guard a1 == EmptyPiece else { continue }\n            \n            try checkAdjacent(s, grid, solution)\n            \n        }\n        \n    }\n    \n    public static func addBombCount(_ grid: Grid) -> Grid {\n        \n        for r in grid.rowRange {\n            \n            for c in grid.colRange {\n                \n                guard grid[r,c] != \"•\" else { continue }\n            \n                let bombs = bombCount((r,c), grid)\n                \n                grid[r,c] = bombs == 0 ? EmptyPiece : \"\\(bombs)\"\n                \n            }\n            \n        }\n        \n        return grid\n        \n    }\n    \n    public static func bombCount(_ s1: Square, _ grid: Grid) -> Int {\n        \n        var count = 0\n        \n        let adjacent = [ (-1,-1),(-1,0),(-1,1),(0,1),(1,1),(1,0),(1,-1),(0,-1) ]\n        \n        for a in adjacent {\n            \n            let s = (s1.0 + a.0, s1.1 + a.1)\n            guard grid.onBoard(s) else { continue }\n            if grid[s.0,s.1] == \"•\" { count += 1 }\n        \n        }\n        \n        return count\n        \n    }\n    \n}\n\nextension Grid {\n    \n    public func bomb(_ rect: CGRect) -> UIView {\n        \n        let view = UIView(frame: rect)\n        \n        view.backgroundColor = colors.background\n        \n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        let w = (rect.width - content.count + 1) / content.count\n        let h = (rect.height - content.count + 1) / content.count\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                let piece = \"\\(item)\"\n\n                let holder = UIView(frame: CGRect(x: c * w + c, y: r * h + r, width: w, height: h))\n                holder.backgroundColor = player(piece) == 1 ? colors.selected : colors.background\n                \n                let label = UILabel(frame: CGRect(x: 0, y: 0, width: w, height: h))\n                label.text = player(piece) == 2 ? playerPieces[0] : piece\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2 - 10, weight: .regular)\n                label.textColor = [0,2].contains(player(piece)) ? colors.player1 : colors.player2\n                label.backgroundColor = .clear\n                \n                if piece == \"•\" {\n                    \n                    label.textColor = colors.foreground\n                    label.backgroundColor = colors.foreground\n                    \n                }\n                \n                if let num = Int(\"\\(item)\"), num > 0 { label.textColor = colors.highlight }\n                \n                holder.addSubview(label)\n                view.addSubview(holder)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Checkers.swift",
    "content": "import UIKit\n\npublic struct Checkers {\n    \n    public enum PieceType: String {\n        \n        case none = \" \"\n        case checker1 = \"●\"\n        case checker2 = \"○\"\n        \n        case king1 = \"◉\"\n        case king2 = \"◎\"\n        \n    }\n    \n    public static var board: Grid {\n        \n        return Grid([\n            \n            8 ✕ (EmptyPiece %% \"●\"),\n            8 ✕ (\"●\" %% EmptyPiece),\n            8 ✕ (EmptyPiece %% \"●\"),\n            8 ✕ EmptyPiece,\n            8 ✕ EmptyPiece,\n            8 ✕ (\"○\" %% EmptyPiece),\n            8 ✕ (EmptyPiece %% \"○\"),\n            8 ✕ (\"○\" %% EmptyPiece)\n            \n        ])\n        \n    }\n    \n    public static let playerPieces = [\"●◉\",\"○◎\"]\n    \n    public static func validateJump(_ s1: Square, _ s2: Square, _ p1: Piece, _ p2: Piece, _ grid: Grid, _ hint: Bool = false) -> Bool {\n        \n        let m1 = s2.0 - s1.0\n        let m2 = s2.1 - s1.1\n        \n        let e1 = s1.0 + m1 / 2\n        let e2 = s1.1 + m2 / 2\n\n        guard let jumpedPieceType: PieceType = PieceType(rawValue: grid[e1,e2]), jumpedPieceType != .none else { return false }\n        \n        switch PieceType(rawValue: p1) ?? .none {\n            \n        case .checker1:\n            \n            guard m1 == 2 && abs(m2) == 2 else { return false }\n            guard jumpedPieceType != .checker1, jumpedPieceType != .king1 else { return false }\n            \n        case .checker2:\n            \n            guard m1 == -2 && abs(m2) == 2 else { return false }\n            guard jumpedPieceType != .checker2, jumpedPieceType != .king2 else { return false }\n            \n        case .king1:\n\n            guard abs(m1) == 2 && abs(m2) == 2 else { return false }\n            guard jumpedPieceType != .checker1, jumpedPieceType != .king1 else { return false }\n\n        case .king2:\n            \n            guard abs(m1) == 2 && abs(m2) == 2 else { return false }\n            guard jumpedPieceType != .checker2, jumpedPieceType != .king2 else { return false }\n            \n        case .none: return false\n            \n        }\n        \n        guard !hint else { return true }\n        \n        grid[e1,e2] = EmptyPiece // remove other player piece\n        \n        return true\n        \n    }\n    \n    public static func validateMove(_ s1: Square, _ s2: Square, _ p1: Piece, _ p2: Piece, _ grid: Grid, _ hint: Bool = false) throws -> Piece? {\n        \n        let m1 = s2.0 - s1.0\n        let m2 = s2.1 - s1.1\n\n        var kingPiece: PieceType?\n        \n        guard p2 == EmptyPiece else { throw MoveError.invalidmove }\n        \n        switch PieceType(rawValue: p1) ?? .none {\n         \n        case .checker1:\n            \n            guard (m1 == 1 && abs(m2) == 1) || validateJump(s1, s2, p1, p2, grid, hint) else { throw MoveError.invalidmove }\n\n            if s2.c == grid.content.count - 1 { kingPiece = .king1 }\n            \n        case .checker2:\n            \n            guard (m1 == -1 && abs(m2) == 1) || validateJump(s1, s2, p1, p2, grid, hint) else { throw MoveError.invalidmove }\n\n\n            if s2.c == 0 { kingPiece = .king2 }\n            \n        case .king1, .king2:\n            \n            guard (abs(m1) == 1 && abs(m2) == 1) || validateJump(s1, s2, p1, p2, grid, hint) else { throw MoveError.invalidmove }\n\n        case .none: throw MoveError.incorrectpiece\n\n        }\n        \n        guard !hint else { return nil }\n        \n        let piece = grid[s2.0,s2.1]\n        \n        grid[s2.0,s2.1] = kingPiece?.rawValue ?? p1 // place my piece in target square\n        grid[s1.0,s1.1] = EmptyPiece // remove my piece from original square\n        \n        return piece\n        \n    }\n    \n}\n\nextension Grid {\n    \n    public func checker(_ rect: CGRect, highlights: [Square], selected: Square?) -> UIView {\n        \n        let view = UIView(frame: rect)\n        \n        let w = rect.width / content.count\n        let h = rect.height / content.count\n        \n        view.backgroundColor = colors.background\n        \n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                var piece = \"\\(item)\"\n                \n                let holder = UIView(frame: CGRect(x: c * w, y: r * h, width: w, height: h))\n                holder.backgroundColor = (c + r) % 2 == 0 ? colors.background : colors.foreground\n\n                let label = HintLabel(frame: CGRect(x: 0, y: 0, width: w, height: h))\n                label.backgroundColor = .clear\n                label.textColor = player(piece) == 0 ? colors.player1 : colors.player2\n                label.highlightColor = colors.highlight\n\n                if player(piece) == 1 {\n                    \n                    if let index = playerPieces[1].array().index(of: piece) { piece = playerPieces[0].array()[index] }\n                    \n                }\n                \n                if let selected = selected, selected.0 == r && selected.1 == c { label.textColor = colors.selected }\n                for highlight in highlights { label.highlight = label.highlight ? true : highlight.0 == r && highlight.1 == c }\n                \n                label.text = piece\n                label.textAlignment = .center\n                label.font = UIFont(name: \"Apple Symbols\", size: (w + h) / 2 - 10)\n\n                holder.addSubview(label)\n                view.addSubview(holder)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Chess.swift",
    "content": "import UIKit\n\npublic struct Chess {\n    \n    public enum PieceType: String {\n        \n        case none = \" \"\n        \n        case rook1 = \"♜\"\n        case knight1 = \"♞\"\n        case bishop1 = \"♝\"\n        case queen1 = \"♛\"\n        case king1 = \"♚\"\n        case pawn1 = \"♟\"\n        \n        case rook2 = \"♖\"\n        case knight2 = \"♘\"\n        case bishop2 = \"♗\"\n        case queen2 = \"♕\"\n        case king2 = \"♔\"\n        case pawn2 = \"♙\"\n        \n    }\n    \n    public static var board: Grid {\n        \n        return Grid([\n            \n            \"♜♞♝♛♚♝♞♜\".array(),\n            8 ✕ \"♟\",\n            8 ✕ EmptyPiece,\n            8 ✕ EmptyPiece,\n            8 ✕ EmptyPiece,\n            8 ✕ EmptyPiece,\n            8 ✕ \"♙\",\n            \"♖♘♗♕♔♗♘♖\".array()\n            \n        ])\n        \n    }\n    \n    public static let playerPieces = [\"♜♞♝♛♚♝♞♜♟\",\"♖♘♗♕♔♗♘♖♙\"]\n    \n    public static func validateEmptyPath(_ s1: Square, _ s2: Square, _ grid: Grid) throws {\n        \n        let mRow = s2.0 - s1.0\n        let mCol = s2.1 - s1.1\n        \n        let d1 = mRow == 0 ? 0 : mRow > 0 ? 1 : -1\n        let d2 = mCol == 0 ? 0 : mCol > 0 ? 1 : -1\n        \n        var p1 = s1.0 + d1, p2 = s1.1 + d2\n        \n        while p1 != s2.0 || p2 != s2.1 {\n            \n            guard grid[p1,p2] == EmptyPiece else { throw MoveError.blockedmove }\n            \n            p1 += d1\n            p2 += d2\n            \n        }\n        \n    }\n    \n    public static func validateMove(_ s1: Square, _ s2: Square, _ p1: Piece, _ p2: Piece, _ grid: Grid, _ hint: Bool = false) throws -> Piece? {\n        \n        let mRow = s2.0 - s1.0\n        let mCol = s2.1 - s1.1\n        \n//        let dR = mRow == 0 ? 0 : mRow > 0 ? 1 : -1\n//        let dC = mCol == 0 ? 0 : mCol > 0 ? 1 : -1\n        \n        switch PieceType(rawValue: p1) ?? .none {\n            \n        case .bishop1, .bishop2:\n            \n            guard abs(mRow) == abs(mCol) else { throw MoveError.invalidmove }\n            try validateEmptyPath(s1, s2, grid)\n            \n        case .king1, .king2:\n            \n            guard abs(mRow) < 2 && abs(mCol) < 2 else { throw MoveError.invalidmove }\n            \n        case .knight1, .knight2:\n            \n            guard (abs(mRow) == 2 && abs(mCol) == 1) || (abs(mRow) == 1 && abs(mCol) == 2) else { throw MoveError.invalidmove }\n            \n        case .pawn1:\n            \n            guard (abs(mCol) == 0 && p2 == EmptyPiece) || (abs(mCol) == 1 && mRow == 1 && p2 != EmptyPiece) else { throw MoveError.invalidmove }\n            guard (mRow < 2 && mRow > 0) || (s1.0 == 1 && mRow == 2) else { throw MoveError.invalidmove }\n            try validateEmptyPath(s1, s2, grid)\n            \n        case .pawn2:\n            \n            guard (abs(mCol) == 0 && p2 == EmptyPiece) || (abs(mCol) == 1 && mRow == -1 && p2 != EmptyPiece) else { throw MoveError.invalidmove }\n            guard (mRow > -2 && mRow < 0) || (s1.0 == 6 && mRow == -2) else { throw MoveError.invalidmove }\n            try validateEmptyPath(s1, s2, grid)\n            \n        case .queen1, .queen2:\n            \n            guard mRow == 0 || mCol == 0 || abs(mRow) == abs(mCol) else { throw MoveError.invalidmove }\n            try validateEmptyPath(s1, s2, grid)\n            \n        case .rook1, .rook2:\n            \n            guard mRow == 0 || mCol == 0 else { throw MoveError.invalidmove }\n            try validateEmptyPath(s1, s2, grid)\n            \n        case .none: throw MoveError.incorrectpiece\n            \n        }\n        \n        guard !hint else { return nil }\n        \n        let piece = grid[s2.0,s2.1]\n\n        grid[s2.0,s2.1] = p1 // place my piece in target square\n        grid[s1.0,s1.1] = EmptyPiece // remove my piece from original square\n        \n        return piece\n        \n    }\n    \n}\n\n\n// Coordinates\n\npublic let A8 = (\"a\",8), A7 = (\"a\",7), A6 = (\"a\",6), A5 = (\"a\",5), A4 = (\"a\",4), A3 = (\"a\",3), A2 = (\"a\",2), A1 = (\"a\",1)\npublic let B8 = (\"b\",8), B7 = (\"b\",7), B6 = (\"b\",6), B5 = (\"b\",5), B4 = (\"b\",4), B3 = (\"b\",3), B2 = (\"b\",2), B1 = (\"b\",1)\npublic let C8 = (\"c\",8), C7 = (\"c\",7), C6 = (\"c\",6), C5 = (\"c\",5), C4 = (\"c\",4), C3 = (\"c\",3), C2 = (\"c\",2), C1 = (\"c\",1)\npublic let D8 = (\"d\",8), D7 = (\"d\",7), D6 = (\"d\",6), D5 = (\"d\",5), D4 = (\"d\",4), D3 = (\"d\",3), D2 = (\"d\",2), D1 = (\"d\",1)\npublic let E8 = (\"e\",8), E7 = (\"e\",7), E6 = (\"e\",6), E5 = (\"e\",5), E4 = (\"e\",4), E3 = (\"e\",3), E2 = (\"e\",2), E1 = (\"e\",1)\npublic let F8 = (\"f\",8), F7 = (\"f\",7), F6 = (\"f\",6), F5 = (\"f\",5), F4 = (\"f\",4), F3 = (\"f\",3), F2 = (\"f\",2), F1 = (\"f\",1)\npublic let G8 = (\"g\",8), G7 = (\"g\",7), G6 = (\"g\",6), G5 = (\"g\",5), G4 = (\"g\",4), G3 = (\"g\",3), G2 = (\"g\",2), G1 = (\"g\",1)\npublic let H8 = (\"h\",8), H7 = (\"h\",7), H6 = (\"h\",6), H5 = (\"h\",5), H4 = (\"h\",4), H3 = (\"h\",3), H2 = (\"h\",2), H1 = (\"h\",1)\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Dots.swift",
    "content": "import UIKit\n\npublic struct Dots {\n\n    public static var board: Grid { return Grid(17 ✕ (17 ✕ (\"●\" %% \"0\") %% 17 ✕ (\"0\" %% EmptyPiece))) }\n    \n//    public static var board: Grid { return Grid(8 ✕ (8 ✕ \"00000\")) }\n\n    public static let playerPieces = [\"1\",\"2\"]\n\n    public static func validateMove(_ s1: Square, _ p1: Piece, _ grid: Grid, _ player: Int) throws {\n\n        guard p1 == \"0\" else { throw MoveError.invalidmove }\n\n        grid[s1.0,s1.1] = playerPieces[player]\n\n        checkSpaces(s1, grid, player: player)\n\n    }\n\n    public static func checkSpaces(_ s1: Square, _ grid: Grid, player: Int) {\n\n        let adjacent2 = [ (-1,0),(0,1),(1,0),(0,-1) ]\n\n        for a in adjacent2 {\n\n            let s = (s1.0 + a.0, s1.1 + a.1)\n            guard grid.onBoard(s) else { continue }\n            guard grid[s.0,s.1] == EmptyPiece, checkClosed(s, grid) else { continue }\n\n            grid[s.0,s.1] = playerPieces[player]\n\n        }\n\n    }\n\n    public static func checkClosed(_ s1: Square, _ grid: Grid) -> Bool {\n\n        var count = 0\n\n        let adjacent2 = [ (-1,0),(0,1),(1,0),(0,-1) ]\n\n        for a in adjacent2 {\n\n            let s = (s1.0 + a.0, s1.1 + a.1)\n            guard grid.onBoard(s) else { continue }\n            if grid[s.0,s.1] != \"0\" { count += 1 }\n\n        }\n\n        return count == 4\n\n    }\n\n}\n\nextension Grid {\n    \n    public func dots(_ rect: CGRect) -> UIView {\n        \n        let view = DotsView(frame: rect)\n        \n        view.p = padding\n        view.backgroundColor = colors.background\n        view.lineColor = colors.foreground\n        \n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        let w = rect.width / 17\n        let h = rect.height / 17\n\n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                let player = \"\\(item)\"\n\n                guard [\"1\",\"2\"].contains(player) else { continue }\n\n                if (r + c) % 2 == 0 {\n\n                    /// Space\n\n                    let dotView = DotsSquareView(frame: CGRect(x: c * w - padding / 2, y: r * h - padding / 2, width: w, height: h).insetBy(dx: -5, dy: -5))\n\n                    dotView.backgroundColor = .clear\n                    dotView.playerColor = player == \"1\" ? colors.player1 : colors.player2\n\n                    view.addSubview(dotView)\n\n                } else {\n\n                    /// Line\n\n//                    let (dx,dy) = sp[s]\n//\n//                    let width = dx == 0 ? w + 14 : 14\n//                    let height = dy == 0 ? h + 14 : 14\n//                    let x = c * w + padding + w / 2 + (dx * w / 2)\n//                    let y = r * h + padding + w / 2 + (dy * h / 2)\n//\n//                    let lineView = DotsLineView(frame: CGRect(x: 0, y: 0, width: width, height: height))\n//\n//                    lineView.backgroundColor = .clear\n//                    lineView.center = CGPoint(x: x, y: y)\n//                    lineView.playerColor = side == \"1\" ? colors.player1 : colors.player2\n//                    lineView.lineColor = colors.foreground\n//\n//                    view.addSubview(lineView)\n\n                }\n\n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Doubles.swift",
    "content": "import UIKit\n\npublic struct Doubles {\n    \n    public static var board: Grid { return Grid(4 ✕ (4 ✕ EmptyPiece)) }\n    \n    public static let playerPieces: [String] = []\n    \n    public static var staticboard: Grid {\n        \n        return Grid([\n        \n            \"  2 \".array(),\n            \"    \".array(),\n            \"   8\".array(),\n            [EmptyPiece,EmptyPiece,\"16\",\"128\"],\n            \n        ])\n        \n    }\n    \n    public static func validateMove(_ s1: Square, _ s2: Square, _ p1: Piece, _ p2: Piece, _ grid: Grid) throws -> Piece? {\n        \n        guard p1 != EmptyPiece && (p1 == p2 || p2 == EmptyPiece) else { throw MoveError.invalidmove }\n        \n        let double = \"\\((Int(p1) ?? 0) + (Int(p2) ?? 0))\"\n        \n        grid[s2.0][s2.1] = p2 == EmptyPiece ? p1 : double\n        grid[s1.0][s1.1] = EmptyPiece // remove initial piece\n        \n        return p1 == p2 && p1 != EmptyPiece ? double : nil\n        \n    }\n    \n    public static func random(_ grid: Grid) -> Bool {\n        \n        let c = Int(arc4random_uniform(4))\n        let r = Int(arc4random_uniform(4))\n        \n        guard EmptyPiece == grid[c][r] else { return random(grid) }\n        \n        grid[c][r] = \"2\"\n        \n        return true\n        \n    }\n    \n}\n\nextension String {\n    \n    var doublesColor: UIColor {\n        \n        switch self {\n            \n        case \"2\": return #colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)\n        case \"4\": return #colorLiteral(red: 0.5843137503, green: 0.8235294223, blue: 0.4196078479, alpha: 1)\n        case \"8\": return #colorLiteral(red: 0.4666666687, green: 0.7647058964, blue: 0.2666666806, alpha: 1)\n        case \"16\": return #colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)\n        case \"32\": return #colorLiteral(red: 0.9686274529, green: 0.78039217, blue: 0.3450980484, alpha: 1)\n        case \"64\": return #colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)\n        case \"128\": return #colorLiteral(red: 0.9568627477, green: 0.6588235497, blue: 0.5450980663, alpha: 1)\n        case \"256\": return #colorLiteral(red: 0.9411764741, green: 0.4980392158, blue: 0.3529411852, alpha: 1)\n        case \"512\": return #colorLiteral(red: 0.9372549057, green: 0.3490196168, blue: 0.1921568662, alpha: 1)\n        case \"1024\": return #colorLiteral(red: 0.9098039269, green: 0.4784313738, blue: 0.6431372762, alpha: 1)\n        case \"2048\": return #colorLiteral(red: 0.8549019694, green: 0.250980407, blue: 0.4784313738, alpha: 1)\n        case \"4096\": return #colorLiteral(red: 0.8078431487, green: 0.02745098062, blue: 0.3333333433, alpha: 1)\n        default: return .clear\n            \n        }\n        \n    }\n    \n}\n\nextension Grid {\n    \n    public func doubles(_ rect: CGRect) -> UIView {\n        \n        let view = UIView(frame: rect)\n        \n        view.backgroundColor = colors.background\n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        let w = (rect.width - padding * 2) / 4\n        let h = (rect.height - padding * 2) / 4\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                let piece = \"\\(item)\"\n\n                let holder = UIView(frame: CGRect(x: c * w + padding, y: r * h + padding, width: w, height: h).insetBy(dx: 2, dy: 2))\n                holder.backgroundColor = piece == EmptyPiece ? colors.foreground : piece.doublesColor\n                holder.layer.cornerRadius = 10\n                holder.layer.masksToBounds = true\n                \n                let label = UILabel(frame: CGRect(x: 0, y: 0, width: w - 4, height: h - 4))\n                label.backgroundColor = .clear\n                label.text = piece\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 4 - 5, weight: .heavy)\n                label.textColor = colors.player1\n                label.adjustsFontSizeToFitWidth = true\n                \n                holder.addSubview(label)\n                view.addSubview(holder)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Four.swift",
    "content": "import UIKit\n\npublic struct Four {\n    \n    public static var board: Grid { return Grid(6 ✕ (7 ✕ EmptyPiece)) }\n    \n    public static let playerPieces = [\"◉\",\"◎\"]\n\n    public static var staticboard: Grid {\n        \n        return Grid([\n            \n            7 ✕ EmptyPiece,\n            7 ✕ EmptyPiece,\n            \"     ◎ \".array(),\n            \"     ◉ \".array(),\n            \"    ◎◉ \".array(),\n            \"   ◎◉◉ \".array()\n            \n        ])\n        \n    }\n    \n    public static func validateDrop(_ s1: Square, _ p1: Piece, _ grid: Grid) throws {\n\n        guard grid[s1.0 + 1][s1.1] == EmptyPiece else { throw MoveError.invalidmove }\n        grid[s1.0 + 1][s1.1] = p1\n        \n        guard grid.onBoard(s1) else { return }\n        grid[s1.0][s1.1] = EmptyPiece\n        \n    }\n    \n}\n\nextension Grid {\n    \n    public func four(_ rect: CGRect) -> UIView {\n        \n        let view = FourView(frame: rect)\n        \n        let w = (rect.width - padding * 2) / 7\n        let h = (rect.height - padding * 2) / 7\n        \n        view.backgroundColor = colors.foreground\n        view.holeColor = colors.background\n        view.spotColor = colors.selected\n        \n        view.p = padding\n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                var piece = \"\\(item)\"\n\n                let label = UILabel(frame: CGRect(x: c * w + padding, y: r * h + padding + h, width: w, height: h))\n                label.textColor = player(piece) == 0 ? colors.player1 : colors.player2\n                \n                if player(piece) == 1 {\n                    \n                    if let index = playerPieces[1].array().index(of: piece) { piece = playerPieces[0].array()[index] }\n                    \n                }\n                \n                label.text = piece\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2 - 10, weight: .regular)\n                \n                view.addSubview(label)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Go.swift",
    "content": "import UIKit\n\nenum GoError: Error {\n    \n    case openchain\n    \n}\n\npublic struct Go {\n    \n    public static var board: Grid { return Grid(9 ✕ (9 ✕ EmptyPiece)) }\n    \n    public static let playerPieces = [\"●\",\"○\"]\n    \n    public static func checkCapture(_ s1: Square, _ p1: Piece, _ grid: Grid) {\n        \n        let points = [ (-1,0),(0,1),(1,0),(0,-1) ]\n        \n        func checkChain(_ s1: Square, _ chain: [Square]) throws -> [Square] {\n            \n            var chain = chain\n            \n            var squares = [s1]\n            \n            for p in points {\n                \n                let s = (s1.0 + p.0, s1.1 + p.1)\n\n                guard !(chain.contains { $0.0 == s.0 && $0.1 == s.1 }) else { continue }\n                guard grid.onBoard(s) else { continue }\n\n                let a1 = grid[s.0,s.1]\n\n                guard a1 != p1 else { continue }\n                guard a1 != EmptyPiece else { throw GoError.openchain }\n                \n                chain.append(s)\n                \n                do { squares += try checkChain(s, chain) } catch { throw error }\n                \n            }\n            \n            return squares\n            \n        }\n        \n        for p in points {\n            \n            let s = (s1.0 + p.0, s1.1 + p.1)\n\n            guard grid.onBoard(s) else { continue }\n\n            let a1 = grid[s.0,s.1]\n\n            guard a1 != EmptyPiece && a1 != p1 else { continue }\n            \n            if let squares = try? checkChain(s, [s]) {\n                \n                for s in squares { grid[s.0,s.1] = EmptyPiece }\n                \n            }\n            \n        }\n        \n    }\n    \n    public static func validateMove(_ s1: Square, _ p1: Piece, _ grid: Grid, _ player: Int) throws {\n        \n        guard p1 == EmptyPiece else { throw MoveError.invalidmove }\n        \n        grid[s1.0,s1.1] = playerPieces[player]\n        \n        checkCapture(s1, playerPieces[player], grid)\n        \n    }\n    \n}\n\nextension Grid {\n    \n    public func go(_ rect: CGRect) -> UIView {\n        \n        let view = GoView(frame: rect)\n        \n        view.p = padding\n        view.backgroundColor = colors.background\n        view.lineColor = colors.foreground\n        \n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        let w = (rect.width - padding * 2) / 8\n        let h = (rect.height - padding * 2) / 8\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                var piece = \"\\(item)\"\n\n                let label = UILabel(frame: CGRect(x: c * w + padding - w / 2, y: r * h + padding - h / 2, width: w, height: h))\n                label.textColor = player(piece) == 0 ? colors.player1 : colors.player2\n                \n                if player(piece) == 1 {\n                    \n                    if let index = playerPieces[1].array().index(of: piece) { piece = playerPieces[0].array()[index] }\n                    \n                }\n                \n                label.text = piece\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2, weight: .thin)\n                \n                view.addSubview(label)\n                \n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/InProgress/Battleship.swift",
    "content": "import UIKit\n\npublic struct Battleship {\n    \n    public enum PieceType: String {\n        \n        case carrier\n        case battleship\n        case cruiser\n        case destoyer\n        \n        var horizontal: String {\n            \n            switch self {\n                \n            case .carrier: return \"◀︎◼︎◼︎◼︎▶︎\"\n            case .battleship: return \"◀︎◼︎◼︎▶︎\"\n            case .cruiser: return \"◀︎◼︎▶︎\"\n            case .destoyer: return \"◀︎▶︎\"\n                \n            }\n            \n        }\n        \n        var vertical: String {\n            \n            switch self {\n                \n            case .carrier: return \"▲◼︎◼︎◼︎▼\"\n            case .battleship: return \"▲◼︎◼︎▼\"\n            case .cruiser: return \"▲◼︎▼\"\n            case .destoyer: return \"▲▼\"\n                \n            }\n            \n        }\n        \n    }\n    \n    public static var board: Grid { return Grid(6 ✕ (7 ✕ EmptyPiece)) }\n    \n    public static let playerPieces = [\"\",\"\"]\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/InProgress/Dominos.swift",
    "content": "import UIKit\n\npublic struct Dominos {\n        \n    public static var board: Grid { return Grid(6 ✕ (7 ✕ EmptyPiece)) }\n    \n    public static let playerPieces = [\"🀰🀱🀲🀳🀴🀵🀶🀷🀸🀹🀺🀻🀼🀽🀾🀿🁀🁁🁂🁃🁄🁅🁆🁇🁈🁉🁊🁋🁌🁍🁎🁏🁐🁑🁒🁓🁔🁕🁖🁗🁘🁙🁚🁛🁜🁝🁞🁟🁠🁡🁢🁣🁤🁥🁦🁧🁨🁩🁪🁫🁬🁭🁮🁯🁰🁱🁲🁳🁴🁵🁶🁷🁸🁹🁺🁻🁼🁽🁾🁿🂀🂁🂂🂃🂄🂅🂆🂇🂈🂉🂊🂋🂌🂍🂎🂏🂐🂑🂒🂓\"]\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/InProgress/Majong.swift",
    "content": "import UIKit\n\npublic struct Majong {\n    \n    public static var board: Grid { return Grid(6 ✕ (7 ✕ EmptyPiece)) }\n    \n    public static let playerPieces = [\"🀄︎🀀🀁🀂🀃🀅🀆🀇🀈🀉🀊🀋🀌🀍🀎🀏🀐🀑🀒🀓🀔🀕🀖🀗🀘🀙🀚🀛🀜🀝🀞🀟🀠🀡🀢🀣🀤🀥🀦🀧🀨🀩🀪🀫\"]\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/InProgress/Pilare.swift",
    "content": "import UIKit\n\npublic struct Pilare {\n    \n    public static var board: Grid {\n        \n        return Grid([\n        \n            6 ✕ \"∙●\",\n            [\"∙●\",\"∙\",\"∙\",\"∙\",\"∙\",\"∙●\"],\n            [\"∙●\",\"∙\",\"∙\",\"∙\",\"∙\",\"∙●\"],\n            [\"∙○\",\"∙\",\"∙\",\"∙\",\"∙\",\"∙○\"],\n            [\"∙○\",\"∙\",\"∙\",\"∙\",\"∙\",\"∙○\"],\n            6 ✕ \"∙○\"\n        \n        ])\n        \n        \n    }\n    \n    public static let playerPieces = [\"●\",\"○\"]\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/InProgress/Tetris.swift",
    "content": "//\n//  Tetris.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass Tetris: UIView {\n\n    /*\n    // Only override draw() if you perform custom drawing.\n    // An empty implementation adversely affects performance during animation.\n    override func draw(_ rect: CGRect) {\n        // Drawing code\n    }\n    */\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/InProgress/Trouble.swift",
    "content": "//\n//  Trouble.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass Trouble: UIView {\n\n    /*\n    // Only override draw() if you perform custom drawing.\n    // An empty implementation adversely affects performance during animation.\n    override func draw(_ rect: CGRect) {\n        // Drawing code\n    }\n    */\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Ludo.swift",
    "content": "import UIKit\n\npublic struct Ludo {\n    \n    public static var board: Grid {\n        \n        return Grid([\n            \n            5 ✕ \"●\",\n            5 ✕ \"●\",\n            \"●● ○○\".array(),\n            5 ✕ \"○\",\n            5 ✕ \"○\",\n            \n        ])\n        \n    }\n    \n    public static let playerPieces = [\"●\",\"○\"]\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Mancala.swift",
    "content": "import UIKit\n\npublic struct Mancala {\n    \n    public static var board: Grid {\n        \n        return Grid([\n            \n            \"333333\".array(),\n            \"333333\".array(),\n            \"000000\".array(),\n            \"000000\".array(),\n            \"333333\".array(),\n            \"333333\".array()\n            \n        ])\n        \n    }\n    \n    public static let playerPieces = [\"123456789\",\"123456789\"]\n    \n    public static var staticboard: Grid {\n        \n        return Grid([\n            \n            \"341433\".array(),\n            \"345033\".array(),\n            \"000000\".array(),\n            \"000001\".array(),\n            \"333444\".array(),\n            \"330404\".array()\n            \n        ])\n        \n    }\n\n}\n\nextension Grid {\n    \n    public func mancala(_ rect: CGRect) -> UIView {\n        \n        let view = MancalaView(frame: rect)\n        \n        let w = (rect.width - padding * 2) / 6\n        let h = (rect.height - padding * 2) / 6\n        \n        view.holeColor = colors.foreground\n        view.backgroundColor = colors.background\n        \n        view.p = padding\n        view.layer.cornerRadius = 20\n        view.layer.masksToBounds = true\n        \n        for (r,row) in content.enumerated() {\n            \n            guard r > 3 || r < 2 else { continue }\n            \n            for (c,item) in row.enumerated() {\n                \n                let label = MancalaSpotView(frame: CGRect(x: c * w + padding, y: r * h + padding, width: w, height: h))\n                label.stones = Int(\"\\(item)\") ?? 0\n                label.textColor = colors.foreground\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 4 - 10, weight: .heavy)\n                \n                view.addSubview(label)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Memory.swift",
    "content": "import UIKit\n\nenum MemoryError: Error {\n    \n    case badmatch\n    case nocard\n    case samecard\n    \n}\n\nextension Difficulty {\n    \n    var memoryDeck: String {\n        \n        switch self {\n        case .easy: return \"🂡🂭🂮🂱🂽🂾🃁🃍🃎🃑🃝🃞🃟\"\n        case .medium: return \"🂡🂫🂬🂭🂮🂱🂻🂼🂽🂾🃁🃋🃌🃍🃎🃑🃛🃜🃝🃞🃟\"\n        case .hard: return \"🂡🂢🂣🂤🂥🂦🂧🂨🂩🂪🂫🂬🂭🂮🂱🂲🂳🂴🂵🂶🂷🂸🂹🂺🂻🂼🂽🂾🃁🃂🃃🃄🃅🃆🃇🃈🃉🃊🃋🃌🃍🃎🃑🃒🃓🃔🃕🃖🃗🃘🃙🃚🃛🃜🃝🃞🃟\"\n        }\n        \n    }\n    \n    var memoryDeckPairs: [String] {\n        \n        return Array(memoryDeck.randomize().prefix(memoryCount.unique))\n        \n    }\n    \n    var memoryDeckRandomized: [String] {\n        \n        return (memoryDeckPairs * memoryCount.pairs).randomize().randomize()\n        \n    }\n    \n    var memoryCount: (unique: Int, pairs: Int) {\n        \n        switch self {\n        case .easy: return (4,4)\n        case .medium: return (18,2)\n        case .hard: return (32,2)\n        }\n        \n    }\n    \n    var memoryBoard: Grid {\n        \n        switch self {\n        case .easy: return Grid(4 ✕ (4 ✕ \"🂠\"))\n        case .medium: return Grid(6 ✕ (6 ✕ \"🂠\"))\n        case .hard: return Grid(8 ✕ (8 ✕ \"🂠\"))\n        }\n        \n    }\n    \n}\n\nextension String {\n    \n    var memoryColor: UIColor {\n        \n        switch self {\n            \n        case \"🂡\",\"🂢\",\"🂣\",\"🂤\",\"🂥\",\"🂦\",\"🂧\",\"🂨\",\"🂩\",\"🂪\",\"🂫\",\"🂬\",\"🂭\",\"🂮\",\"🃑\",\"🃒\",\"🃓\",\"🃔\",\"🃕\",\"🃖\",\"🃗\",\"🃘\",\"🃙\",\"🃚\",\"🃛\",\"🃜\",\"🃝\",\"🃞\": return .darkText\n        case \"🂱\",\"🂲\",\"🂳\",\"🂴\",\"🂵\",\"🂶\",\"🂷\",\"🂸\",\"🂹\",\"🂺\",\"🂻\",\"🂼\",\"🂽\",\"🂾\",\"🃁\",\"🃂\",\"🃃\",\"🃄\",\"🃅\",\"🃆\",\"🃇\",\"🃈\",\"🃉\",\"🃊\",\"🃋\",\"🃌\",\"🃍\",\"🃎\": return .systemRed\n        case \"🃟\": return .orange\n        default: return .clear\n            \n        }\n        \n    }\n    \n}\n\npublic struct Memory {\n    \n    public static let playerPieces = [\"🂠\"]\n\n    static func solution(_ difficulty: Difficulty) -> Grid {\n        \n        let grid = difficulty.memoryBoard\n        let deck = difficulty.memoryDeckRandomized\n        \n        for r in grid.rowRange {\n            \n            for c in grid.colRange {\n                \n                grid[c,r] = deck[c+r*4]\n                \n            }\n            \n        }\n        \n        return grid\n        \n    }\n    \n    static func puzzle(_ difficulty: Difficulty) -> Grid {\n        \n        return difficulty.memoryBoard\n        \n    }\n    \n    public static func validateSelection(_ s1: Square, _ c1: Card, _ grid: Grid) throws {\n        \n        guard grid[s1.0,s1.1] != EmptyPiece else { throw MoveError.invalidmove }\n        \n        grid[s1.0,s1.1] = c1\n        \n    }\n\n    public static func validateMatch(_ s1: Square, _ s2: Square, _ c1: Card, _ c2: Card, _ grid: Grid, _ reset: Bool = false) throws -> Card? {\n        \n        if reset {\n        \n            let card = c1 == c2 ? EmptyPiece : \"🂠\"\n            \n            grid[s1.0][s1.1] = card\n            grid[s2.0][s2.1] = card\n            \n        } else {\n            \n            guard grid[s1.0,s1.1] != EmptyPiece else { throw MemoryError.nocard }\n            \n            grid[s1.0,s1.1] = c1\n            \n        }\n        \n        guard s1 != s2 else { throw MemoryError.samecard }\n        guard c1 == c2 else { throw MemoryError.badmatch }\n        \n        return c1\n        \n    }\n    \n}\n\nextension Grid {\n    \n    public func memory(_ rect: CGRect) -> UIView {\n        \n        let view = UIView(frame: rect)\n        \n        view.backgroundColor = colors.background\n        \n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        let w = (rect.width - content.count + 1) / content.count\n        let h = (rect.height - content.count + 1) / content.count\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                let piece = \"\\(item)\"\n                \n                let label = UILabel(frame: CGRect(x: c * w + c, y: r * h + r, width: w, height: h))\n                label.text = piece\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2 - 10, weight: .regular)\n                label.textColor = player(piece) == 0 ? colors.player1 : piece.memoryColor\n                \n                view.addSubview(label)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Pegs.swift",
    "content": "//\n//  Pegs.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass Pegs: NSObject {\n    \n    public static var board: Grid {\n        \n        return Grid([\n        \n            \"!!●●●!!\".array(),\n            \"!!●●●!!\".array(),\n            \"●●●●●●●\".array(),\n            \"●●● ●●●\".array(),\n            \"●●●●●●●\".array(),\n            \"!!●●●!!\".array(),\n            \"!!●●●!!\".array()\n            \n        ])\n        \n    }\n    \n    public static let playerPieces = [\"●\"]\n    \n    public static func validateMove(_ s1: Square, _ s2: Square, _ p1: Piece, _ p2: Piece, _ grid: Grid, _ hint: Bool = false) throws -> Piece? {\n        \n        let m1 = s2.0 - s1.0\n        let m2 = s2.1 - s1.1\n        \n        guard p1 == \"●\" && p2 == EmptyPiece else { throw MoveError.invalidmove }\n        \n        guard (abs(m1) == 2 && abs(m2) == 0) || (abs(m1) == 0 && abs(m2) == 2) else { throw MoveError.invalidmove }\n        \n        let e1 = s1.0 + m1 / 2\n        let e2 = s1.1 + m2 / 2\n        \n        let piece = grid[e1,e2]\n        \n        guard piece == \"●\" else { throw MoveError.invalidmove }\n        \n        guard !hint else { return nil }\n        \n        grid[s2.0,s2.1] = p1\n        grid[s1.0,s1.1] = EmptyPiece // remove initial piece\n        grid[e1,e2] = EmptyPiece // remove jumped piece\n        \n        return piece\n        \n    }\n\n}\n\nextension Grid {\n    \n    public func pegs(_ rect: CGRect, highlights: [Square], selected: Square?) -> UIView {\n        \n        let view = PegsView(frame: rect)\n\n        view.backgroundColor = colors.background\n        view.p = padding\n        view.color = colors.foreground\n        view.lineColor = colors.player2\n        \n        let w = (rect.width - padding * 2) / content.count\n        let h = (rect.height - padding * 2) / content.count\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n                \n                guard \"\\(item)\" != \"!\" else { continue }\n                \n                let label = HintLabel(frame: CGRect(x: c * w + padding, y: r * h + padding, width: w, height: h))\n                label.text = \"\\(item)\"\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2 - 15, weight: .regular)\n                label.textColor = colors.player1\n                label.highlightColor = colors.highlight\n                \n                if let selected = selected, selected.0 == r && selected.1 == c { label.textColor = colors.selected }\n\n                for highlight in highlights { label.highlight = label.highlight ? true : highlight.0 == r && highlight.1 == c }\n\n                view.addSubview(label)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Sudoku.swift",
    "content": "import UIKit\n\nextension Difficulty {\n    \n    var sudokuRange: CountableClosedRange<Int> {\n        \n        switch self {\n        case .easy: return 2...6\n        case .medium: return 3...5\n        case .hard: return 4...4\n        }\n        \n    }\n    \n}\n\npublic struct Sudoku {\n    \n    public static var board: Grid {\n                \n        let grid = Grid([\n            \n            \"123456789\".array(),\n            \"456789123\".array(),\n            \"789123456\".array(),\n            \"234567891\".array(),\n            \"567891234\".array(),\n            \"891234567\".array(),\n            \"345678912\".array(),\n            \"678912345\".array(),\n            \"912345678\".array()\n            \n        ])\n        \n        return randomize(grid)\n        \n    }\n    \n    public static var staticboard: Grid {\n        \n        let grid = Grid([\n            \n            \"123456789\".array(),\n            \"456789123\".array(),\n            \"789123456\".array(),\n            \"234567891\".array(),\n            \"567891234\".array(),\n            \"891234567\".array(),\n            \"345678912\".array(),\n            \"678912345\".array(),\n            \"912345678\".array()\n            \n            ])\n        \n        return Grid([ grid[6], grid[8], grid[7], grid[1], grid[0], grid[2], grid[5], grid[3], grid[4] ])\n        \n    }\n    \n    public static let playerPieces = [\"123456789\"]\n    \n    public static func validateGuess(_ s1: Square, _ g1: Guess, _ grid: Grid, _ solution: Grid) throws {\n        \n        guard g1 != EmptyPiece else { throw MoveError.invalidmove }        \n        guard g1 == solution[s1.0,s1.1] else { throw MoveError.incorrectguess }\n        \n        grid[s1.0,s1.1] = g1\n        \n    }\n    \n    static func randomize(_ grid: Grid) -> Grid {\n        \n        var grid = grid\n        \n        for _ in 0...2 {\n            \n            let g1: [[String]] = [grid[0],grid[1],grid[2]].randomize()\n            let g2: [[String]] = [grid[3],grid[4],grid[5]].randomize()\n            let g3: [[String]] = [grid[6],grid[7],grid[8]].randomize()\n            \n            grid = Grid([ g1[0], g1[1], g1[2], g2[0], g2[1], g2[2], g3[0], g3[1], g3[2] ])\n            \n            grid = flipGrid(grid)\n            \n        }\n        \n        return grid\n        \n    }\n    \n    static func flipGrid(_ grid: Grid) -> Grid {\n        \n        let newGrid = Grid(9 ✕ (9 ✕ EmptyPiece))\n        \n        for r in newGrid.rowRange {\n            \n            for c in newGrid.colRange {\n                \n                newGrid[c,r] = grid[r,c]\n                \n            }\n            \n        }\n        \n        return newGrid\n        \n    }\n    \n    static func puzzle(_ grid: Grid, difficulty: Difficulty) -> Grid {\n        \n        let grid = Grid(grid.content)\n        \n        for r in 0...8 {\n            \n            var cols = [0,1,2,3,4,5,6,7,8].randomize()\n            \n            cols.removeSubrange(difficulty.sudokuRange)\n            \n            for c in cols {\n                \n                grid[r,c] = EmptyPiece\n                \n            }\n            \n        }\n        \n        return grid\n        \n    }\n    \n    static func staticpuzzle(_ grid: Grid) -> Grid {\n        \n        let grid = Grid(grid.content)\n        \n        let hide = [\n        \n            [0,2,3,4,6,7],\n            [0,1,3,6,7,8],\n            [1,2,3,5,6,7],\n            [0,1,2,4,5,8],\n            [0,1,4,6,7,8],\n            [2,3,4,5,7,8],\n            [0,1,2,5,6,7],\n            [0,3,4,5,6,8],\n            [1,3,4,6,7,8]\n        \n        ]\n        \n        for (r,row) in hide.enumerated() {\n            \n            for c in row {\n                \n                grid[r,c] = EmptyPiece\n                \n            }\n            \n        }\n        \n        return grid\n        \n    }\n    \n}\n\nextension Grid {\n    \n    public func sudoku(_ rect: CGRect, highlights: [Square]) -> UIView {\n        \n        let view = SudokuView(frame: rect)\n        \n        view.backgroundColor = colors.background\n        view.lineColor = colors.foreground\n        \n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        let w = rect.width / content.count\n        let h = rect.height / content.count\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                let holder = UIView(frame: CGRect(x: c * w, y: r * h, width: w, height: h))\n                let label = UILabel(frame: CGRect(x: 0, y: 0, width: w, height: h))\n                label.text = \"\\(item)\"\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2 - 15, weight: .regular)\n                label.textColor = colors.foreground\n                \n                for highlight in highlights {\n                    \n                    guard highlight.0 == r && highlight.1 == c else { continue }\n                    label.textColor = colors.highlight\n                    holder.backgroundColor = colors.foreground\n                    \n                }\n                \n                holder.addSubview(label)\n                view.addSubview(holder)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/TicTacToe.swift",
    "content": "import UIKit\n\npublic struct TicTacToe {\n    \n    public static var board: Grid { return Grid(3 ✕ (3 ✕ EmptyPiece)) }\n    \n    public static let playerPieces = [\"○\",\"✕\"]\n    \n    public static func validateMove(_ s1: Square, _ p1: Piece, _ grid: Grid, _ player: Int) throws {\n        \n        guard p1 == EmptyPiece else { throw MoveError.invalidmove }\n        \n        grid[s1.0,s1.1] = playerPieces[player] // place my piece in target square\n        \n    }\n    \n}\n\nextension Grid {\n    \n    public func ttt(_ rect: CGRect) -> UIView {\n        \n        let view = TicTacToeView(frame: rect)\n        \n        view.p = padding\n        view.backgroundColor = colors.background\n        view.lineColor = colors.foreground\n        \n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        let w = (rect.width - padding * 2) / content.count\n        let h = (rect.height - padding * 2) / content.count\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                let piece = \"\\(item)\"\n\n                let label = UILabel(frame: CGRect(x: c * w + padding, y: r * h + padding, width: w, height: h))\n                label.text = piece\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2 - 10, weight: .thin)\n                label.textColor = player(piece) == 0 ? colors.player1 : colors.player2\n                \n                view.addSubview(label)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Boards/Words.swift",
    "content": "import UIKit\n\npublic struct Words {\n    \n    public enum PieceType: String {\n        \n        static var all: [PieceType] { return [.start,.doubleword,.doubleletter,.tripleword,.tripleletter] }\n        static var names: [String] { return all.map { $0.rawValue } }\n        \n        case empty = \" \"\n        case start = \"★\"\n        case doubleword = \"DW\"\n        case tripleword = \"TW\"\n        case doubleletter = \"DL\"\n        case tripleletter = \"TL\"\n        \n        var backgroundColor: UIColor {\n            \n            switch self {\n            case .empty: return .clear\n            case .start: return #colorLiteral(red: 0.4582899487, green: 0.1780638536, blue: 0.4886863426, alpha: 1)\n            case .doubleletter: return #colorLiteral(red: 0.0121835285, green: 0.524357516, blue: 0.8901960784, alpha: 1)\n            case .tripleletter: return #colorLiteral(red: 0.1972305775, green: 0.7161869407, blue: 0.3783127069, alpha: 1)\n            case .doubleword: return #colorLiteral(red: 0.8, green: 0, blue: 0.2666666667, alpha: 1)\n            case .tripleword: return #colorLiteral(red: 0.968627451, green: 0.5960784314, blue: 0.2666666667, alpha: 1)\n            }\n            \n        }\n        \n        var textColor: UIColor { return .white }\n        \n    }\n    \n    public enum Letter: String {\n        \n        static var all: [Letter] { return [.a,.b,.c,.d,.e,.f,.g,.h,.i,.j,.k,.l,.m,.n,.o,.p,.q,.r,.s,.t,.u,.v,.w,.x,.y,.z,.blank,.none] }\n        \n        static var bag: [Letter] {\n\n            return all.reduce([]) { $0 + Array(repeating: $1, count: $1.count) }.randomize().randomize()\n\n        }\n\n        case a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z\n        case blank = \"_\"\n        case none = \" \"\n        \n        var count: Int {\n            \n            switch self {\n            case .none: return 0\n            case .j, .k, .q, .x, .z: return 1\n            case .blank, .b, .c, .f, .m, .p, .v, .w, .y: return 2\n            case .g: return 3\n            case .h, .l, .u: return 4\n            case .d, .n, .s: return 5\n            case .r: return 6\n            case .t: return 7\n            case .i, .o: return 8\n            case .a: return 9\n            case .e: return 13\n            }\n            \n        }\n        \n        var point: Int {\n            \n            switch self {\n            case .blank, .none: return 0\n            case .a, .e, .i, .o, .r, .s, .t: return 1\n            case .d, .l, .n, .u: return 2\n            case .g, .h, .y: return 3\n            case .b, .c, .f, .m, .p, .w: return 4\n            case .k, .v: return 5\n            case .x: return 8\n            case .j, .q, .z: return 10\n            }\n            \n        }\n        \n    }\n    \n    public static var board: Grid {\n        \n        let grid = Grid([\n        \n            [\" \",\" \",\" \",\"TW\",\" \",\" \",\"TL\",\" \",\"TL\",\" \",\" \",\"TW\",\" \",\" \",\" \"],\n            [\" \",\" \",\"DL\",\" \",\" \",\"DW\",\" \",\" \",\" \",\"DW\",\" \",\" \",\"DL\",\" \",\" \"],\n            [\" \",\"DL\",\" \",\" \",\"DL\",\" \",\" \",\" \",\" \",\" \",\"DL\",\" \",\" \",\"DL\",\" \"],\n            [\"TW\",\" \",\" \",\"TL\",\" \",\" \",\" \",\"DW\",\" \",\" \",\" \",\"TL\",\" \",\" \",\"TW\"],\n            [\" \",\" \",\"DL\",\" \",\" \",\" \",\"DL\",\" \",\"DL\",\" \",\" \",\" \",\"DL\",\" \",\" \"],\n            [\" \",\"DW\",\" \",\" \",\" \",\"TL\",\" \",\" \",\" \",\"TL\",\" \",\" \",\" \",\"DW\",\" \"],\n            [\"TL\",\" \",\" \",\" \",\"DL\",\" \",\" \",\" \",\" \",\" \",\"DL\",\" \",\" \",\" \",\"TL\"],\n            [\" \",\" \",\" \",\"DW\",\" \",\" \",\" \",\"★\",\" \",\" \",\" \",\"DW\",\" \",\" \",\" \"],\n            [\"TL\",\" \",\" \",\" \",\"DL\",\" \",\" \",\" \",\" \",\" \",\"DL\",\" \",\" \",\" \",\"TL\"],\n            [\" \",\"DW\",\" \",\" \",\" \",\"TL\",\" \",\" \",\" \",\"TL\",\" \",\" \",\" \",\"DW\",\" \"],\n            [\" \",\" \",\"DL\",\" \",\" \",\" \",\"DL\",\" \",\"DL\",\" \",\" \",\" \",\"DL\",\" \",\" \"],\n            [\"TW\",\" \",\" \",\"TL\",\" \",\" \",\" \",\"DW\",\" \",\" \",\" \",\"TL\",\" \",\" \",\"TW\"],\n            [\" \",\"DL\",\" \",\" \",\"DL\",\" \",\" \",\" \",\" \",\" \",\"DL\",\" \",\" \",\"DL\",\" \"],\n            [\" \",\" \",\"DL\",\" \",\" \",\"DW\",\" \",\" \",\" \",\"DW\",\" \",\" \",\"DL\",\" \",\" \"],\n            [\" \",\" \",\" \",\"TW\",\" \",\" \",\"TL\",\" \",\"TL\",\" \",\" \",\"TW\",\" \",\" \",\" \"]\n        \n        ])\n        \n        \n        return grid\n        \n    }\n    \n    public static let playerPieces = [\"ABCDEFGHIJKLMNOPQRSTUVWXYZ_\"]\n    \n    public static func validate(_ tile: Letter, _ s1: Square, _ grid: Grid) throws {\n        \n        guard PieceType(rawValue: grid[s1.0,s1.1]) != nil else { throw MoveError.invalidmove }\n        \n        grid[s1.0,s1.1] = tile.rawValue.uppercased()\n        \n    }\n\n}\n\nextension Grid {\n    \n    public func words(_ rect: CGRect) -> UIView {\n        \n        let view = WordsView(frame: rect)\n        \n        view.p = padding\n        view.backgroundColor = colors.background\n        view.lineColor = colors.foreground\n        \n        view.layer.cornerRadius = 6\n        view.layer.masksToBounds = true\n        \n        let w = (rect.width - padding * 2) / content.count\n        let h = (rect.height - padding * 2) / content.count\n        \n        for (r,row) in content.enumerated() {\n            \n            for (c,item) in row.enumerated() {\n\n                let piece = Words.PieceType(rawValue: \"\\(item)\")\n\n                let holder = UIView(frame: CGRect(x: c * w + padding, y: r * h + padding, width: w, height: h).insetBy(dx: 1, dy: 1))\n                holder.backgroundColor = piece?.backgroundColor ?? colors.player2\n                holder.layer.cornerRadius = 4\n                holder.layer.masksToBounds = true\n\n                let label = UILabel(frame: CGRect(x: 0, y: 0, width: w - 2, height: h - 2))\n                label.text = \"\\(item)\"\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / (\"\\(item)\".count > 1 ? 3 : 2) - 5, weight: .black)\n                label.textColor = piece?.textColor ?? colors.player1\n                label.backgroundColor = .clear\n                \n                holder.addSubview(label)\n                view.addSubview(holder)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Extensions.swift",
    "content": "import UIKit\n\npublic typealias Square = (c: Int, r: Int)\npublic typealias ChessSquare = (c: String, r: Int)\n\npublic typealias Piece = String\npublic typealias Guess = String\npublic typealias Card = String\n\n\nextension String {\n    \n    public func array() -> [String] {\n        \n        return map { \"\\($0)\" }\n        \n    }\n    \n    public func randomize() -> [String] {\n        \n        return array().sorted { _,_ in arc4random() % 2 == 0 }\n        \n    }\n    \n}\n\nextension Int {\n    \n    public func within(_ r: CountableRange<Int>) -> Bool {\n        \n        return self >= r.lowerBound && self < r.upperBound\n        \n    }\n\n    public func set(_ advanced: Int, _ count: Int) -> [Int] {\n\n        var set: [Int] = []\n\n        for i in 0..<count { set += [advanced * i + self] }\n\n        return set\n\n    }\n\n}\n\nextension Array {\n    \n    public func randomize() -> [Element] {\n    \n        return sorted { _,_ in arc4random() % 2 == 0 }\n    \n    }\n    \n    static func *(lhs: [Element], rhs: Int) -> [Element] {\n        \n        var multipliedArray = lhs\n        for _ in 1..<rhs { multipliedArray += lhs }\n        return multipliedArray\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Grid.swift",
    "content": "import UIKit\n\nlet EmptyPiece: String = \" \"\n\npublic class Grid {\n    \n    public var content: [[String]]\n    \n    public var rowRange: CountableRange<Int> { return 0..<content.count }\n    public var colRange: CountableRange<Int> { return content.count > 0 ? 0..<content[0].count : 0..<0 }\n    \n    public var padding: CGFloat = 0\n    public var colors = BoardColors()\n    public var playerPieces: [Piece] = []\n    \n    public init(_ content: [[String]]) {\n        \n        self.content = content\n        \n    }\n    \n    public subscript(c: Int, r: Int) -> String {\n        \n        get { return content[c][r] }\n        set { content[c][r] = newValue }\n        \n    }\n    \n    public subscript(c: Int) -> [String] {\n        \n        get { return content[c] }\n        set { content[c] = newValue }\n        \n    }\n\n    public subscript(c: Int) -> String {\n\n        get { return content[c / colRange.endIndex][c % colRange.endIndex] }\n        set { content[c / colRange.endIndex][c % colRange.endIndex] = newValue }\n\n    }\n    \n    public func matrix(_ rect: CGRect) -> UIView {\n        \n        let view = MatrixView(frame: rect)\n        \n        view.p = padding\n        view.backgroundColor = colors.background\n        view.lineColor = colors.foreground\n        \n        view.layer.cornerRadius = 10\n        view.layer.masksToBounds = true\n        \n        let w = (rect.width - padding * 2) / content.count\n        let h = (rect.height - padding * 2) / content.count\n        \n        for (c,col) in content.enumerated() {\n            \n            for (r,item) in col.enumerated() {\n                \n                let label = UILabel(frame: CGRect(x: c * w + padding, y: r * h + padding, width: w, height: h))\n                \n                label.text = \"\\(item)\"\n                label.textAlignment = .center\n                label.font = .systemFont(ofSize: (w + h) / 2 - 10, weight: .thin)\n                \n                view.addSubview(label)\n                \n            }\n            \n        }\n        \n        return view\n        \n    }\n    \n    public func onBoard(_ s1: Square, _ s2: Square) -> Bool {\n        \n        return s1.0.within(rowRange) && s1.1.within(colRange) && s2.0.within(rowRange) && s2.1.within(colRange)\n        \n    }\n    \n    public func onBoard(_ s1: Square) -> Bool {\n        \n        return s1.0.within(rowRange) && s1.1.within(colRange)\n        \n    }\n    \n    func player(_ piece: Piece) -> Int {\n        \n        for (p,player) in playerPieces.enumerated() {\n            \n            if player.contains(piece) { return p }\n            \n        }\n        \n        return -1\n        \n    }\n\n    public func piecesOnBoard() -> [Piece] {\n\n        return content.reduce([]) { $0 + $1 }.filter { $0 != EmptyPiece }\n\n    }\n    \n}\n\nclass HintLabel: UILabel {\n    \n    var highlight: Bool = false { didSet { setNeedsDisplay() } }\n    var highlightColor: UIColor = .systemRed\n    \n    override func drawText(in rect: CGRect) {\n        \n        guard highlight else { return super.drawText(in: rect) }\n        \n        let c = UIGraphicsGetCurrentContext()\n        \n        highlightColor.set()\n        \n        c?.setLineJoin(.round)\n        c?.setLineWidth(1)\n        c?.stroke(rect.insetBy(dx: 3, dy: 3))\n        \n        super.drawText(in: rect)\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Operators.swift",
    "content": "import UIKit\n\npublic func * (lhs: CGFloat, rhs: Int) -> CGFloat {\n    \n    return lhs * CGFloat(rhs)\n    \n}\n\npublic func * (lhs: Int, rhs: CGFloat) -> CGFloat {\n    \n    return CGFloat(lhs) * rhs\n    \n}\n\npublic func / (lhs: CGFloat, rhs: Int) -> CGFloat {\n    \n    return lhs / CGFloat(rhs)\n    \n}\n\npublic func / (lhs: Int, rhs: CGFloat) -> CGFloat {\n    \n    return CGFloat(lhs) / rhs\n    \n}\n\npublic func + (lhs: CGFloat, rhs: Int) -> CGFloat {\n    \n    return lhs + CGFloat(rhs)\n    \n}\n\npublic func + (lhs: Int, rhs: CGFloat) -> CGFloat {\n    \n    return CGFloat(lhs) + rhs\n    \n}\n\npublic func - (lhs: CGFloat, rhs: Int) -> CGFloat {\n    \n    return lhs - CGFloat(rhs)\n    \n}\n\npublic func - (lhs: Int, rhs: CGFloat) -> CGFloat {\n    \n    return CGFloat(lhs) - rhs\n    \n}\n\n// MATRIX\n\ninfix operator ✕: AdditionPrecedence\n\npublic func ✕ (lhs: Int, rhs: (Int) -> String) -> [String] {\n    \n    var a: [String] = []\n    \n    for i in 0..<lhs { let r = rhs(i); a.append(r) }\n    \n    return a\n    \n}\n\npublic func ✕ (lhs: Int, rhs: (Int) -> [String]) -> [[String]] {\n\n    var a: [[String]] = []\n\n    for i in 0..<lhs { let r = rhs(i); a.append(r) }\n\n    return a\n\n}\n\npublic func ✕ (lhs: Int, rhs: String) -> [String] {\n    \n    return [String](repeating: rhs, count: lhs)\n    \n}\n\npublic func ✕ (lhs: Int, rhs: [String]) -> [[String]] {\n    \n    return [[String]](repeating: rhs, count: lhs)\n    \n}\n\ninfix operator %% : AssignmentPrecedence\n\npublic func %% (lhs: String, rhs: String) -> (Int) -> String {\n    \n    return { $0 % 2 == 0 ? lhs : rhs }\n    \n}\n\npublic func %% (lhs: [String], rhs: [String]) -> (Int) -> [String] {\n\n    return { $0 % 2 == 0 ? lhs : rhs }\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/BackgammonView.swift",
    "content": "//\n//  BackgammonView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/20/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass BackgammonView: UIView {\n    \n    public var p: CGFloat = 15\n    public var backgroundColor2: UIColor = .black\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let lineColor1 = backgroundColor2.withAlphaComponent(0.3)\n        let lineColor2 = backgroundColor2.withAlphaComponent(0.7)\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        \n        let vG: CGFloat = 20\n        let hG: CGFloat = 50\n        \n        backgroundColor2.set()\n        \n        context?.addPath(UIBezierPath(roundedRect: rect.insetBy(dx: 15, dy: 15), cornerRadius: 0).cgPath)\n        context?.fillPath()\n        \n        backgroundColor?.set()\n\n        context?.addRect(CGRect(x: rect.midX - vG / 2, y: 0, width: vG, height: rect.height))\n        context?.fillPath()\n        \n        context?.setBlendMode(.multiply)\n        \n        let w = (rect.width - p * 2 - vG) / 12\n        let h = (rect.height - p * 2 - hG) / 10\n        \n        for c in 0..<12 {\n            \n            let x = c > 5 ? 35 : 15\n            \n            (c % 2 == 0 ? lineColor1 : lineColor2).set()\n            \n            context?.move(to: CGPoint(x: w * c + x, y: 15))\n            context?.addLine(to: CGPoint(x: w * c + x + w, y: 15))\n            context?.addLine(to: CGPoint(x: w * c + x + w / 2, y: h * 5 + 15))\n            context?.closePath()\n            \n            context?.fillPath()\n            \n            (c % 2 == 1 ? lineColor1 : lineColor2).set()\n            \n            context?.move(to: CGPoint(x: w * c + x, y: rect.height - 15))\n            context?.addLine(to: CGPoint(x: w * c + x + w, y: rect.height - 15))\n            context?.addLine(to: CGPoint(x: w * c + x + w / 2, y: h * 5 + 65))\n            context?.closePath()\n            \n            context?.fillPath()\n            \n        }\n        \n    }\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/DotsView.swift",
    "content": "//\n//  DotsView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/22/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass DotsView: UIView {\n    \n    public var p: CGFloat = 10\n    public var lineColor: UIColor = .black\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        context?.setLineWidth(6)\n        \n        lineColor.set()\n        \n        let w = (rect.width - p * 2) / 8\n        let h = (rect.height - p * 2) / 8\n        \n        for r in 0...8 {\n            \n            for c in 0...8 {\n                \n                context?.move(to: CGPoint(x: w * c + p, y: h * r + p))\n                context?.addLine(to: CGPoint(x: w * c + p, y: h * r + p))\n                \n                context?.strokePath()\n                \n            }\n            \n        }\n        \n    }\n\n}\n\nclass DotsLineView: UIView {\n    \n    public var playerColor: UIColor = .white\n    public var lineColor: UIColor = .black\n    \n    override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        context?.setLineWidth(1)\n        \n        lineColor.set()\n        \n        let h: Bool = rect.width > rect.height\n        let p: CGFloat = 2\n        let d: CGFloat = h ? rect.height - p * 2 : rect.width - p * 2\n        \n        context?.strokeEllipse(in: CGRect(x: p, y: p, width: d, height: d))\n        context?.strokeEllipse(in: CGRect(x: rect.width - (d + p), y: rect.height - (d + p), width: d, height: d))\n                \n        let x = h ? d + 7 : d / 2 + p\n        let y = h ? d / 2 + p : d + 7\n        \n        context?.setLineWidth(2)\n        context?.setLineDash(phase: 0, lengths: [0,4])\n        \n        context?.move(to: CGPoint(x: x, y: y))\n        context?.addLine(to: CGPoint(x: rect.width - x, y: rect.height - y))\n\n        context?.strokePath()\n        \n    }\n    \n}\n\nclass DotsSquareView: UIView {\n    \n    public var playerColor: UIColor = .white\n    \n    override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        playerColor.set()\n        \n        context?.fillEllipse(in: rect.insetBy(dx: 5, dy: 5))\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/FourView.swift",
    "content": "//\n//  FourView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/21/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass FourView: UIView {\n    \n    public var p: CGFloat = 15\n    public var holeColor: UIColor = .white\n    public var spotColor: UIColor = UIColor(white: 0.90, alpha: 1)\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        context?.setLineWidth(2)\n        \n        holeColor.set()\n        \n        let w = (rect.width - p * 2) / 7\n        let h = (rect.height - p * 2) / 7\n        \n        context?.fill(CGRect(x: 0, y: 0, width: rect.width, height: h + 10))\n        \n        backgroundColor?.set()\n        \n        context?.addPath(UIBezierPath(roundedRect: CGRect(x: 0, y: h, width: rect.width, height: 20), cornerRadius: 10).cgPath)\n        context?.fillPath()\n                \n        for c in 0..<7 {\n            \n            holeColor.set()\n            \n            context?.addPath(UIBezierPath(roundedRect: CGRect(x: w * c + p + 5, y: 10, width: w - 10, height: h), cornerRadius: 10).cgPath)\n            context?.fillPath()\n            \n            for r in 0..<6 {\n                \n                context?.fillEllipse(in: CGRect(x: w * c + p, y: h * r + p + h, width: w, height: h).insetBy(dx: 5, dy: 5))\n                \n            }\n            \n            spotColor.set()\n            \n            context?.strokeEllipse(in: CGRect(x: w * c + p, y: 0, width: w, height: h).insetBy(dx: 10, dy: 10))\n            context?.fillEllipse(in: CGRect(x: w * c + p, y: 0, width: w, height: h).insetBy(dx: 15, dy: 15))\n            \n        }\n        \n    }\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/GoView.swift",
    "content": "import UIKit\n\npublic class GoView: UIView {\n    \n    public var p: CGFloat = 20\n    public var lineColor: UIColor = .black\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        \n        lineColor.set()\n        \n        let w = (rect.width - p * 2) / 8\n        let h = (rect.height - p * 2) / 8\n        \n        for r in 0...8 {\n            \n            for c in 0...8 {\n                \n                context?.move(to: CGPoint(x: w * c + p, y: p))\n                context?.addLine(to: CGPoint(x: w * c + p, y: rect.height - p))\n\n                context?.move(to: CGPoint(x: p, y: h * r + p))\n                context?.addLine(to: CGPoint(x: rect.width - p, y: h * r + p))\n                \n            }\n            \n        }\n        \n        context?.strokePath()\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/MancalaView.swift",
    "content": "//\n//  MancalaView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/22/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass MancalaView: UIView {\n    \n    public var p: CGFloat = 15\n    public var holeColor: UIColor = .white\n    public var spotColor: UIColor = UIColor(white: 0.90, alpha: 1)\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        context?.setLineWidth(4)\n        \n        let w = (rect.width - p * 2) / 6\n        let h = (rect.height - p * 2) / 6\n        \n        holeColor.set()\n        \n        for c in 0..<6 {\n            \n            if c % 2 == 1 {\n                \n                context?.move(to: CGPoint(x: w * c + p, y: h / 2 + p))\n                context?.addLine(to: CGPoint(x: w * c + p, y: h / 2 + p))\n                context?.strokePath()\n                \n            }\n            \n            context?.fillEllipse(in: CGRect(x: w * c + p, y: p, width: w, height: h).insetBy(dx: 5, dy: 5))\n            \n            if c % 2 == 0, c > 0 {\n                \n                context?.move(to: CGPoint(x: w * c + p, y: h + h / 2 + p))\n                context?.addLine(to: CGPoint(x: w * c + p, y: h + h / 2 + p))\n                context?.strokePath()\n                \n            }\n            \n            context?.fillEllipse(in: CGRect(x: w * c + p, y: h + p, width: w, height: h).insetBy(dx: 5, dy: 5))\n            \n            context?.move(to: CGPoint(x: w * c + w / 2 + p, y: h + p))\n            context?.addLine(to: CGPoint(x: w * c + w / 2 + p, y: h + p))\n            context?.strokePath()\n            \n            if c == 0 || c == 5 {\n                \n                context?.move(to: CGPoint(x: w * c + w / 2 + p, y: h * 2 + p))\n                context?.addLine(to: CGPoint(x: w * c + w / 2 + p, y: h * 2 + p))\n                context?.strokePath()\n                \n                context?.move(to: CGPoint(x: w * c + w / 2 + p, y: rect.height - (h * 2 + p)))\n                context?.addLine(to: CGPoint(x: w * c + w / 2 + p, y: rect.height - (h * 2 + p)))\n                context?.strokePath()\n                \n            }\n            \n            context?.move(to: CGPoint(x: w * c + w / 2 + p, y: rect.height - (h + p)))\n            context?.addLine(to: CGPoint(x: w * c + w / 2 + p, y: rect.height - (h + p)))\n            context?.strokePath()\n            \n            context?.fillEllipse(in: CGRect(x: w * c + p, y: rect.height - (h * 2 + p), width: w, height: h).insetBy(dx: 5, dy: 5))\n            \n            if c % 2 == 0, c > 0 {\n                \n                context?.move(to: CGPoint(x: w * c + p, y: rect.height - (h + h / 2 + p)))\n                context?.addLine(to: CGPoint(x: w * c + p, y: rect.height - (h + h / 2 + p)))\n                context?.strokePath()\n                \n            }\n            \n            context?.fillEllipse(in: CGRect(x: w * c + p, y: rect.height - (h + p), width: w, height: h).insetBy(dx: 5, dy: 5))\n            \n            if c % 2 == 1 {\n                \n                context?.move(to: CGPoint(x: w * c + p, y: rect.height - (h / 2 + p)))\n                context?.addLine(to: CGPoint(x: w * c + p, y: rect.height - (h / 2 + p)))\n                context?.strokePath()\n                \n            }\n            \n        }\n        \n        context?.addPath(UIBezierPath(roundedRect: CGRect(x: p, y: h * 2 + p, width: w * 2, height: h * 2).insetBy(dx: 5, dy: 5), cornerRadius: w / 4).cgPath)\n        \n        context?.addPath(UIBezierPath(roundedRect: CGRect(x: rect.width - (w * 2 + p), y: h * 2 + p, width: w * 2, height: h * 2).insetBy(dx: 5, dy: 5), cornerRadius: w / 4).cgPath)\n        \n        context?.fillPath()\n        \n    }\n\n}\n\nclass MancalaSpotView: UILabel {\n    \n    var stoneColor: UIColor = .black\n    var stones: Int = 0 {\n        \n        didSet {\n            \n            setNeedsDisplay()\n//            text = stones == 0 ? EmptyPiece : \"\\(stones)\"\n            \n        }\n        \n    }\n    \n    override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        let d: CGFloat = rect.width / 4\n        let r: CGFloat = stones > 4 ? d / 2 : (CGFloat(stones) / 4) * (d / 2)\n        let s: CGFloat = 360 / CGFloat(stones)\n        var a: CGFloat = 0\n        \n        stoneColor.withAlphaComponent(0.4).set()\n        \n        context?.setLineCap(.round)\n        context?.setLineWidth(d)\n        context?.setBlendMode(.multiply)\n        \n        for _ in 0..<stones {\n            \n            a += CGFloat(arc4random_uniform(30) + UInt32(s))\n\n            let radian = a * .pi / 180\n            let x = r * cos(radian)\n            let y = r * sin(radian)\n            let p = CGPoint(x: x + rect.midX, y: y + rect.midY)\n            \n            context?.move(to: p)\n            context?.addLine(to: p)\n            context?.strokePath()\n            \n        }\n        \n        super.draw(rect)\n        \n    }\n    \n}\n\nclass MancalaHomeView: UIView {\n    \n    \n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/MatrixView.swift",
    "content": "import UIKit\n\npublic class MatrixView: UIView {\n    \n    public var p: CGFloat = 10\n    \n    var lineColor: UIColor = .black\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let c = UIGraphicsGetCurrentContext()\n        \n        c?.setLineCap(.round)\n        c?.setLineJoin(.round)\n        c?.setLineWidth(2)\n        \n        lineColor.set()\n        \n        c?.move(to: CGPoint(x: p * 2, y: p))\n        c?.addLine(to: CGPoint(x: p, y: p))\n        c?.addLine(to: CGPoint(x: p, y: rect.height - p))\n        c?.addLine(to: CGPoint(x: p * 2, y: rect.height - p))\n        \n        c?.move(to: CGPoint(x: rect.width - p * 2, y: p))\n        c?.addLine(to: CGPoint(x: rect.width - p, y: p))\n        c?.addLine(to: CGPoint(x: rect.width - p, y: rect.height - p))\n        c?.addLine(to: CGPoint(x: rect.width - p * 2, y: rect.height - p))\n        \n        c?.strokePath()\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/PegsView.swift",
    "content": "//\n//  PegsView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass PegsView: UIView {\n    \n    var p: CGFloat = 20\n    var color: UIColor = .lightGray\n    var lineColor: UIColor = .black\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        context?.setLineWidth(p)\n\n        backgroundColor?.set()\n\n        context?.fill(rect)\n        \n        let w = (rect.width - p * 2) / 7\n        let h = (rect.height - p * 2) / 7\n        \n        color.set()\n        \n        context?.move(to: CGPoint(x: rect.width / 2, y: p / 2))\n        context?.addLine(to: CGPoint(x: rect.width - p / 2, y: rect.height / 2))\n        context?.addLine(to: CGPoint(x: rect.width / 2, y: rect.height - p / 2))\n        context?.addLine(to: CGPoint(x: p / 2, y: rect.height / 2))\n        \n        context?.fillPath()\n        \n        context?.move(to: CGPoint(x: rect.width / 2, y: p / 2))\n        context?.addLine(to: CGPoint(x: rect.width - p / 2, y: rect.height / 2))\n        context?.addLine(to: CGPoint(x: rect.width / 2, y: rect.height - p / 2))\n        context?.addLine(to: CGPoint(x: p / 2, y: rect.height / 2))\n        context?.closePath()\n        \n        context?.strokePath()\n\n        lineColor.set()\n        \n        context?.setLineWidth(6)\n        \n        let skip: [(Int,Int)] = [(0,0),(0,1),(1,0),(1,1),(5,0),(5,1),(6,0),(6,1),(0,5),(1,5),(0,6),(1,6),(5,5),(5,6),(6,5),(6,6)]\n        \n        for r in 0..<7 {\n            \n            for c in 0..<7 {\n                \n                guard !(skip.contains { $0.0 == c && $0.1 == r }) else { continue }\n                \n                context?.move(to: CGPoint(x: w * c + w / 2 + p, y: h * r + h / 2 + p))\n                context?.addLine(to: CGPoint(x: w * c + w / 2 + p, y: h * r + h / 2 + p))\n                context?.strokePath()\n                \n            }\n            \n        }\n        \n    }\n\n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/SudokuView.swift",
    "content": "import UIKit\n\npublic class SudokuView: UIView {\n    \n    var lineColor: UIColor = .black\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        \n        lineColor.set()\n        \n        let w9 = rect.width / 9\n        let h9 = rect.height / 9\n        \n        for row in 1...8 {\n            \n            for col in 1...8 {\n                \n                context?.setLineWidth(col % 3 == 0 ? 3 : 1)\n\n                context?.move(to: CGPoint(x: w9 * col, y: 0))\n                context?.addLine(to: CGPoint(x: w9 * col, y: rect.height))\n                context?.strokePath()\n                \n                context?.setLineWidth(row % 3 == 0 ? 3 : 1)\n\n                context?.move(to: CGPoint(x: 0, y: h9 * row))\n                context?.addLine(to: CGPoint(x: rect.width, y: h9 * row))\n                context?.strokePath()\n                \n            }\n            \n        }\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/TicTacToeView.swift",
    "content": "import UIKit\n\npublic class TicTacToeView: UIView {\n    \n    public var p: CGFloat = 10\n    public var lineColor: UIColor = .black\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        context?.setLineWidth(2)\n\n        lineColor.set()\n        \n        let w = (rect.width - p * 2) / 3\n        let h = (rect.height - p * 2) / 3\n        \n        context?.move(to: CGPoint(x: w + p, y: p))\n        context?.addLine(to: CGPoint(x: w + p, y: rect.height - p))\n\n        context?.move(to: CGPoint(x: w * 2 + p, y: p))\n        context?.addLine(to: CGPoint(x: w * 2 + p, y: rect.height - p))\n\n        context?.move(to: CGPoint(x: p, y: h + p))\n        context?.addLine(to: CGPoint(x: rect.width - p, y: h + p))\n\n        context?.move(to: CGPoint(x: p, y: h * 2 + p))\n        context?.addLine(to: CGPoint(x: rect.width - p, y: h * 2 + p))\n\n        context?.strokePath()\n        \n    }\n    \n}\n\n"
  },
  {
    "path": "Gameboards.playground/Sources/Core/Views/WordsView.swift",
    "content": "//\n//  WordsView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/23/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass WordsView: UIView {\n    \n    public var p: CGFloat = 2\n    var lineColor: UIColor = .black\n    \n    public override func draw(_ rect: CGRect) {\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.setLineCap(.round)\n        context?.setLineJoin(.round)\n        context?.setLineWidth(1)\n        \n        lineColor.set()\n        \n        let w = (rect.width - p * 2) / 15\n        let h = (rect.height - p * 2) / 15\n\n        for r in 0..<15 {\n            \n            for c in 0..<15 {\n                \n                context?.addPath(UIBezierPath(roundedRect: CGRect(x: w * c + p, y: h * r + p, width: w, height: h).insetBy(dx: 1, dy: 1), cornerRadius: 4).cgPath)\n                context?.fillPath()\n                \n            }\n            \n        }\n        \n    }\n\n}\n\nclass TileView: UIView {\n    \n    var color: UIColor = .lightGray { didSet { setNeedsDisplay() } }\n    var selectedColor: UIColor = .lightGray\n    \n    var letterLabel: UILabel!\n    var valueLabel: UILabel!\n    \n    var tile: Words.Letter = .none {\n        \n        didSet {\n            \n            letterLabel?.removeFromSuperview()\n            valueLabel?.removeFromSuperview()\n            \n            guard tile != .none else { return }\n            \n            letterLabel = UILabel()\n            letterLabel.text = tile == .blank ? EmptyPiece : tile.rawValue.uppercased()\n            letterLabel.textAlignment = .center\n            letterLabel.font = .systemFont(ofSize: 18, weight: .heavy)\n            addSubview(letterLabel)\n            \n            valueLabel = UILabel()\n            valueLabel.text = tile.point == 0 ? EmptyPiece : \"\\(tile.point)\"\n            valueLabel.textAlignment = .right\n            valueLabel.font = .systemFont(ofSize: 10, weight: .heavy)\n            addSubview(valueLabel)\n            \n        }\n        \n    }\n    \n    var selected: (Words.Letter) -> Void = { _ in }\n    \n    override func draw(_ rect: CGRect) {\n        super.draw(rect)\n        \n        letterLabel?.frame = rect\n        valueLabel?.frame = CGRect(x: 0, y: 4, width: frame.width - 4, height: 10)\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        context?.clear(rect)\n        \n        guard tile != .none else { return }\n        \n        color.set()\n        \n        context?.addPath(UIBezierPath(roundedRect: rect.insetBy(dx: 1, dy: 1), cornerRadius: 6).cgPath)\n        context?.fillPath()\n        \n    }\n    \n    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {\n        \n        guard tile != .none else { return }\n        \n        selected(tile)\n        color = selectedColor\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/Sources/Gameboard.swift",
    "content": "import UIKit\n\nenum Difficulty {\n    \n    case easy, medium, hard\n    \n    var name: String {\n        \n        switch self {\n        case .easy: return \"Easy\"\n        case .medium: return \"Medium\"\n        case .hard: return \"Hard\"\n        }\n        \n    }\n    \n    init(_ i: Int) {\n        \n        switch i {\n        case 1: self = .medium\n        case 2: self = .hard\n        default: self = .easy\n        }\n        \n    }\n    \n}\n\npublic struct Gameboard {\n    \n    public enum BoardType: String {\n        \n        case backgammon, bombsweeper, checkers, chess, dots, doubles, four, go, mancala, memory, pegs, sudoku, tictactoe, words\n        \n        static var playable: [BoardType] = [ .backgammon, .bombsweeper, .checkers, .chess, .dots, .doubles, .four, .go, .memory, .pegs, .sudoku, .tictactoe, .words ]\n        \n        public var name: String {\n            \n            switch self {\n            case .backgammon: return \"Backgammon\"\n            case .bombsweeper: return \"Bombsweeper\"\n            case .checkers: return \"Checkers\"\n            case .chess: return \"Chess\"\n            case .dots: return \"Dots\"\n            case .doubles: return \"Doubles\"\n            case .four: return \"Four\"\n            case .go: return \"Go\"\n            case .mancala: return \"Mancala\"\n            case .memory: return \"Memory\"\n            case .pegs: return \"Pegs\"\n            case .sudoku: return \"Sudoku\"\n            case .tictactoe: return \"Tic Tac Toe\"\n            case .words: return \"Words\"\n            }\n            \n        }\n        \n        public var emblem: String {\n            \n            switch self {\n            case .backgammon: return \"⚄\"\n            case .bombsweeper: return \"⚑\"\n            case .checkers: return \"●\"\n            case .chess: return \"♞\"\n            case .dots: return \"⦿\"\n            case .doubles: return \"⚭\"\n            case .four: return \"◉\"\n            case .go: return \"●\"\n            case .mancala: return \"✾\"\n            case .memory: return \"🂠\"\n            case .pegs: return \"✜\"\n            case .sudoku: return \"9\"\n            case .tictactoe: return \"⌗\"\n            case .words: return \"☐\"\n            }\n            \n        }\n        \n        var controller: UINavigationController? {\n            \n            guard let vc = UIStoryboard(name: name.replacingOccurrences(of: \" \", with: \"\"), bundle: nil).instantiateInitialViewController() as? BoardViewController else { return nil }\n            return UINavigationController(rootViewController: vc)\n            \n        }\n        \n    }\n    \n    public var padding: CGFloat = 0 { didSet { grid.padding = padding } }\n    public var colors = BoardColors() { didSet { grid.colors = colors } }\n    \n    var _type: BoardType\n    \n    var playerCount: Int = 2\n    var playerTurn: Int = 0 { didSet { playerChange?(playerTurn + 1) } }\n    var playerPieces: [Piece] = [] {\n\n        didSet {\n\n            grid.playerPieces = playerPieces\n            playerCount = playerPieces.count\n            \n        }\n\n    }\n    \n    var grid: Grid = Grid(1 ✕ (1 ✕ EmptyPiece))\n    var solution: Grid = Grid(1 ✕ (1 ✕ EmptyPiece))\n    \n    var gridSize: Int { return grid.content.count }\n    var totalSpaces: Int { return grid.content.count == 0 ? 0 : grid.content.count * grid.content[0].count }\n    var difficulty: Difficulty = .easy { didSet { reset() } }\n    \n    var _size: Int?\n    \n    public var playerChange: ((Int) -> Void)?\n    public var showAlert: ((String, String) -> Void)?\n    \n    public init(_ type: BoardType) {\n        \n        _type = type\n        reset()\n        \n    }\n    \n    public init(_ type: BoardType, testing: Bool) {\n        \n        _type = type\n        reset(testing)\n        \n    }\n    \n    public init(_ type: BoardType, size: Int) {\n        \n        _type = type\n        _size = size\n        reset()\n        \n    }\n    \n    mutating func changePlayer() {\n        \n        playerTurn = playerTurn < playerCount - 1 ? playerTurn + 1 : 0\n        \n    }\n    \n    public mutating func showAvailable(_ s1: Square) {\n        \n        highlights = []\n        \n        switch _type {\n            \n        case .chess, .checkers, .pegs:\n            \n            selected = nil\n            \n            for r in grid.rowRange {\n                \n                for c in grid.colRange {\n                    \n                    guard let _ = try? validateMove(s1, (r,c), true) else { continue }\n                    selected = s1\n                    highlights.append((r,c))\n                    \n                }\n                \n            }\n            \n        default: break\n            \n        }\n        \n    }\n    \n    public mutating func showAvailable(_ s1: ChessSquare) {\n        \n        let cols: [String] = \"abcdefgh\".map { \"\\($0)\" }\n        guard let c1 = cols.firstIndex(of: s1.0) else { return }\n        let r1 = 8 - s1.1\n        \n        showAvailable((r1,c1))\n        \n    }\n    \n    public mutating func drop(pieceAt s1: Square) throws { try validateDrop(s1) }\n    \n    public mutating func place(tile t1: Words.Letter, at s1: Square) throws { try validate(t1, s1)  }\n    \n    public mutating func guess(toSquare s1: Square) throws { try validateGuess(s1) }\n    \n    public mutating func guess(toSquare s1: Square, withGuess g1: Guess) throws { try validateGuess(s1, g1) }\n    \n    public mutating func mark(toSquare s1: Square) throws { try validateMark(s1) }\n    \n    public mutating func move(toSquare s1: Square) throws {\n        \n        try validateMove(s1)\n        changePlayer()\n    \n    }\n    \n    public mutating func move(pieceAt s1: Square, toSquare s2: Square) throws -> Piece? {\n        \n        let piece = try validateMove(s1,s2)\n        changePlayer()\n        return piece\n    \n    }\n    \n    public mutating func move(pieceAt s1: ChessSquare, toSquare s2: ChessSquare) throws -> Piece? {\n        \n        let cols = \"abcdefgh\".array()\n        guard let c1 = cols.firstIndex(of: s1.0), let c2 = cols.firstIndex(of: s2.0) else { return nil }\n        let r1 = 8 - s1.1, r2 = 8 - s2.1\n        \n        let piece = try validateMove((r1,c1), (r2,c2))\n        \n        changePlayer()\n                \n        return piece\n        \n    }\n    \n    public mutating func select(cardAt s1: Square) throws { return try validateSelection(s1) }\n    \n    public mutating func match(cardAt s1: Square, withCard s2: Square, reset: Bool = false) throws -> Card? { return try validateMatch(s1, s2, reset) }\n    \n    public mutating func reset(_ testing: Bool = false) {\n        \n        highlights = []\n        selected = nil\n        \n        switch _type {\n            \n        case .backgammon:\n            \n            grid = Backgammon.board\n            playerPieces = Backgammon.playerPieces\n            \n        case .bombsweeper:\n            \n            solution = Bombsweeper.board\n            grid = Bombsweeper.field\n            playerPieces = Bombsweeper.playerPieces\n            \n            guard testing else { break }\n            \n            solution = Bombsweeper.staticboard\n            playerPieces = Bombsweeper.playerPieces\n            \n        case .checkers:\n            \n            grid = Checkers.board\n            playerPieces = Checkers.playerPieces\n            \n        case .chess:\n            \n            grid = Chess.board\n            playerPieces = Chess.playerPieces\n            \n        case .dots:\n            \n            grid = Dots.board\n            playerPieces = Dots.playerPieces\n            \n        case .doubles:\n            \n            grid = Doubles.board\n            playerPieces = Doubles.playerPieces\n            \n            let _ = Doubles.random(grid)\n            let _ = Doubles.random(grid)\n            \n            guard testing else { break }\n            \n            grid = Doubles.staticboard\n            playerPieces = Doubles.playerPieces\n            \n        case .four:\n            \n            grid = Four.board\n            playerPieces = Four.playerPieces\n            \n            guard testing else { break }\n            \n            grid = Four.staticboard\n            playerPieces = Four.playerPieces\n            \n        case .go:\n            \n            grid = Go.board\n            playerPieces = Go.playerPieces\n            playerTurn = 0\n            \n        case .mancala:\n            \n            grid = Mancala.board\n            playerPieces = Mancala.playerPieces\n            \n            guard testing else { break }\n            \n            grid = Mancala.staticboard\n            playerPieces = Mancala.playerPieces\n            \n        case .memory:\n            \n            solution = Memory.solution(difficulty)\n            grid = Memory.puzzle(difficulty)\n            playerPieces = Memory.playerPieces\n            \n        case .pegs:\n            \n            grid = Pegs.board\n            playerPieces = Pegs.playerPieces\n            \n        case .sudoku:\n            \n            solution = Sudoku.board\n            grid = Sudoku.puzzle(solution, difficulty: difficulty)\n            playerPieces = Sudoku.playerPieces\n            \n            guard testing else { break }\n            \n            solution = Sudoku.staticboard\n            grid = Sudoku.staticpuzzle(solution)\n            playerPieces = Sudoku.playerPieces\n            \n        case .tictactoe:\n            \n            grid = TicTacToe.board\n            playerPieces = TicTacToe.playerPieces\n            \n        case .words:\n            \n            grid = Words.board\n            playerPieces = Words.playerPieces\n            \n        }\n        \n    }\n    \n    public var highlights: [Square] = []\n    public var selected: Square?\n    \n    public func visualize(_ rect: CGRect = CGRect(x: 0, y: 0, width: 200, height: 200)) -> UIView {\n        \n        switch _type {\n            \n        case .backgammon: return grid.backgammon(rect)\n        case .bombsweeper: return grid.bomb(rect)\n        case .checkers, .chess: return grid.checker(rect, highlights: highlights, selected: selected)\n        case .four: return grid.four(rect)\n        case .dots: return grid.dots(rect)\n        case .doubles: return grid.doubles(rect)\n        case .go: return grid.go(rect)\n        case .mancala: return grid.mancala(rect)\n        case .memory: return grid.memory(rect)\n        case .pegs: return grid.pegs(rect, highlights: highlights, selected: selected)\n        case .sudoku: return grid.sudoku(rect, highlights: highlights)\n        case .tictactoe: return grid.ttt(rect)\n        case .words: return grid.words(rect)\n            \n        }\n        \n    }\n    \n}\n\npublic struct BoardColors {\n    \n    public var background: UIColor = .white\n    public var foreground: UIColor = .black\n    \n    public var player1: UIColor = .systemRed\n    public var player2: UIColor = .systemBlue\n    \n    public var highlight: UIColor = .systemGreen\n    public var selected: UIColor = .systemGreen\n    \n    public init() { }\n    \n}\n\n"
  },
  {
    "path": "Gameboards.playground/Sources/Validation.swift",
    "content": "import UIKit\n\npublic enum MoveError: Error {\n    \n    /// Good try. Need a hint?\n    case incorrectguess\n    /// Seriously??? There is no reason to go off the board.\n    case outofbounds\n    /// Piece cannot move to that square\n    case invalidmove\n    /// Cannot take out your own piece\n    case friendlyfire\n    /// Another piece is in the way\n    case blockedmove\n    /// Piece is not of the current player\n    case notyourturn\n    /// Ummm... I think you may be lost\n    case noplayer\n    /// What type of game are you playing???\n    case incorrectpiece\n    /// Validation is unfinished... not letting you cheat.\n    case validationfailed\n    \n}\n\npublic enum GameStatus: Error {\n    \n    /// Ouch. Why don't you try again?\n    case gameover\n    /// You win! Don't let it go to your head.\n    case winner\n    /// This is awkward.\n    case stalemate\n    \n}\n\npublic enum FunctionalityError: Error {\n    \n    /// Can't do this... maybe a future feature if you bug me enough.\n    case unavailable\n    \n}\n\nextension Gameboard {\n    \n    func validateNotFriendlyFire(_ p1: Piece, _ p2: Piece) throws -> Bool {\n        \n        var _player1: Int?\n        var _player2: Int?\n        \n        for (p,pieces) in playerPieces.enumerated() {\n            \n            if pieces.contains(p1) { _player1 = p }\n            if pieces.contains(p2) { _player2 = p }\n            \n        }\n        \n        guard let player1 = _player1 else { throw MoveError.noplayer }\n        \n        if let player2 = _player2 {\n            \n            guard player1 != player2 else { throw MoveError.friendlyfire }\n            \n        }\n        \n        return true\n        \n    }\n    \n    func validatePlayer(_ piece: Piece) -> Bool {\n        \n        guard playerPieces.count > 0 else { return true }\n        return playerPieces[playerTurn].contains(piece)\n        \n    }\n    \n    // moves, guesses, etc\n    \n    mutating func validate(_ t1: Words.Letter, _ s1: Square) throws {\n        \n        guard grid.onBoard(s1) else { throw MoveError.outofbounds }\n        \n        switch _type {\n            \n        case .words: try Words.validate(t1, s1, grid)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n    }\n    \n    mutating func validateGuess(_ s1: Square) throws {\n        \n        guard grid.onBoard(s1) else { throw MoveError.outofbounds }\n        \n        switch _type {\n            \n        case .bombsweeper: try Bombsweeper.validateGuess(s1, grid, solution)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n    }\n    \n    mutating func validateGuess(_ s1: Square, _ g1: Guess) throws {\n        \n        guard grid.onBoard(s1) else { throw MoveError.outofbounds }\n        \n        switch _type {\n            \n        case .sudoku: try Sudoku.validateGuess(s1, g1, grid, solution)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n        highlights.append(s1)\n        \n    }\n    \n    mutating func validateSelection(_ s1: Square) throws {\n        \n        guard grid.onBoard(s1) else { throw MoveError.outofbounds }\n        \n        let c1 = solution[s1.0,s1.1]\n        \n        switch _type {\n            \n        case .memory: return try Memory.validateSelection(s1, c1, grid)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n    }\n    \n    mutating func validateMatch(_ s1: Square, _ s2: Square, _ reset: Bool = false) throws -> Card? {\n        \n        guard grid.onBoard(s1, s2) else { throw MoveError.outofbounds }\n        \n        let c1 = solution[s1.0,s1.1]\n        let c2 = solution[s2.0,s2.1]\n        \n        switch _type {\n            \n        case .memory: return try Memory.validateMatch(s1, s2, c1, c2, grid, reset)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n    }\n    \n    mutating func validateDrop(_ s1: Square) throws {\n        \n        \n        guard grid.onBoard((s1.0 + 1,s1.1)) else { throw MoveError.outofbounds }\n        \n        var p1 = playerPieces[playerTurn]\n        \n        if grid.onBoard(s1) { p1 = grid[s1.0][s1.1] }\n        \n        if s1.0 == 0 { changePlayer() }\n        \n        switch _type {\n            \n        case .four: try Four.validateDrop(s1, p1, grid)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n    }\n    \n    mutating func validateMark(_ s1: Square) throws {\n        \n        guard grid.onBoard(s1) else { throw MoveError.outofbounds }\n        \n        switch _type {\n            \n        case .bombsweeper: try Bombsweeper.validateMark(s1, grid, solution)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n    }\n    \n    mutating func validateMove(_ s1: Square) throws {\n        \n        guard grid.onBoard(s1) else { throw MoveError.outofbounds }\n        \n        let p1 = grid[s1.0,s1.1]\n        \n        switch _type {\n            \n        case .go: try Go.validateMove(s1, p1, grid, playerTurn)\n        case .tictactoe: try TicTacToe.validateMove(s1, p1, grid, playerTurn)\n        case .dots: try Dots.validateMove(s1, p1, grid, playerTurn)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n    }\n    \n    mutating func validateMove(_ s1: Square, _ s2: Square, _ hint: Bool = false) throws -> Piece? {\n        \n        guard grid.onBoard(s1, s2) else { throw MoveError.outofbounds }\n        \n        let p1 = grid[s1.0,s1.1]\n        let p2 = grid[s2.0,s2.1]\n        \n        guard validatePlayer(p1) else { throw MoveError.notyourturn }\n        \n        if playerCount > 1 { _ = try validateNotFriendlyFire(p1, p2) }\n        \n        switch _type {\n            \n        case .checkers: return try Checkers.validateMove(s1, s2, p1, p2, grid, hint)\n        case .chess: return try Chess.validateMove(s1, s2, p1, p2, grid, hint)\n        case .doubles: return try Doubles.validateMove(s1, s2, p1, p2, grid)\n        case .pegs: return try Pegs.validateMove(s1, s2, p1, p2, grid, hint)\n        default: throw MoveError.incorrectpiece\n            \n        }\n        \n    }\n    \n}\n"
  },
  {
    "path": "Gameboards.playground/contents.xcplayground",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='6.0' target-platform='ios'>\n    <pages>\n        <page name='Checkers'/>\n        <page name='Chess'/>\n        <page name='Go'/>\n        <page name='Mancala'/>\n        <page name='Minesweeper'/>\n        <page name='Sudoku'/>\n        <page name='TicTacToe'/>\n    </pages>\n</playground>"
  },
  {
    "path": "Games/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  Games\n//\n//  Created by Jo Albright on 2/3/16.\n//  Copyright © 2016 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n    var window: UIWindow?\n\n}\n\n"
  },
  {
    "path": "Games/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n\t{\n      \"size\" : \"20x20\",\n      \"idiom\": \"iphone\",\n\t  \"filename\" : \"icon-20@2x.png\",\n      \"scale\": \"2x\"\n    },\n\t{\n      \"size\" : \"20x20\",\n      \"idiom\": \"iphone\",\n\t  \"filename\" : \"icon-20@3x.png\",\n      \"scale\": \"3x\"\n    },\n\t{\n      \"size\" : \"20x20\",\n      \"idiom\": \"ipad\",\n\t  \"filename\" : \"icon-20.png\",\n      \"scale\": \"1x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\": \"ipad\",\n\t  \"filename\" : \"icon-20@2x.png\",\n      \"scale\": \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-29@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-40@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-60@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"icon-60@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-29.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-40.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-76.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-76@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"83.5x83.5\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"icon-83.5@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"1024x1024\",\n      \"idiom\" : \"ios-marketing\",\n      \"filename\" : \"icon-1024.png\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "Games/Assets.xcassets/Colors/Accent.colorset/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  },\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"red\" : \"0xCC\",\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0xCC\",\n          \"green\" : \"0xCC\"\n        }\n      }\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"appearances\" : [\n        {\n          \"appearance\" : \"luminosity\",\n          \"value\" : \"dark\"\n        }\n      ],\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"red\" : \"0x55\",\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0x55\",\n          \"green\" : \"0x55\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "Games/Assets.xcassets/Colors/Background.colorset/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  },\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"red\" : \"0xEE\",\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0xEE\",\n          \"green\" : \"0xEE\"\n        }\n      }\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"appearances\" : [\n        {\n          \"appearance\" : \"luminosity\",\n          \"value\" : \"dark\"\n        }\n      ],\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"red\" : \"0x33\",\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0x33\",\n          \"green\" : \"0x33\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "Games/Assets.xcassets/Colors/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Games/Assets.xcassets/Colors/Offest.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0xAA\",\n          \"green\" : \"0xAA\",\n          \"red\" : \"0xAA\"\n        }\n      },\n      \"idiom\" : \"universal\"\n    },\n    {\n      \"appearances\" : [\n        {\n          \"appearance\" : \"luminosity\",\n          \"value\" : \"dark\"\n        }\n      ],\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0x77\",\n          \"green\" : \"0x77\",\n          \"red\" : \"0x77\"\n        }\n      },\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Games/Assets.xcassets/Colors/Text.colorset/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  },\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"red\" : \"0x55\",\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0x55\",\n          \"green\" : \"0x55\"\n        }\n      }\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"appearances\" : [\n        {\n          \"appearance\" : \"luminosity\",\n          \"value\" : \"dark\"\n        }\n      ],\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"red\" : \"0xCC\",\n          \"alpha\" : \"1.000\",\n          \"blue\" : \"0xCC\",\n          \"green\" : \"0xCC\"\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "Games/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Games/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"8150\" systemVersion=\"15A204g\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"8122\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Llm-lL-Icb\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"xb3-aO-Qok\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <animations/>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "Games/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"15400\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"juB-no-UMs\">\n    <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"15404\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Games-->\n        <scene sceneID=\"YGs-fQ-K8c\">\n            <objects>\n                <viewController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"46n-er-ZX8\" customClass=\"MainViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"xsY-Ns-WVS\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"v6Y-kV-MId\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"NPR-U0-s2j\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <tableView autoresizesSubviews=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"plain\" rowHeight=\"60\" estimatedRowHeight=\"-1\" sectionHeaderHeight=\"28\" sectionFooterHeight=\"28\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uDv-h5-uCf\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"44\" width=\"375\" height=\"623\"/>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <color key=\"separatorColor\" name=\"Accent\"/>\n                                <inset key=\"separatorInset\" minX=\"50\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                <prototypes>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" preservesSuperviewLayoutMargins=\"YES\" selectionStyle=\"none\" indentationWidth=\"10\" reuseIdentifier=\"GameCell\" id=\"YsV-KJ-ifM\" customClass=\"GameCell\" customModule=\"Games\" customModuleProvider=\"target\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"28\" width=\"375\" height=\"60\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" preservesSuperviewLayoutMargins=\"YES\" insetsLayoutMarginsFromSafeArea=\"NO\" tableViewCell=\"YsV-KJ-ifM\" id=\"oFF-8F-Wd1\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"60\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Chess\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cpK-ws-RF2\">\n                                                    <rect key=\"frame\" x=\"50\" y=\"19.5\" width=\"305\" height=\"21.5\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"18\"/>\n                                                    <color key=\"textColor\" name=\"Text\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"252\" verticalHuggingPriority=\"251\" text=\"♞\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"dHJ-gO-ycq\">\n                                                    <rect key=\"frame\" x=\"0.0\" y=\"14.5\" width=\"50\" height=\"29\"/>\n                                                    <constraints>\n                                                        <constraint firstAttribute=\"width\" constant=\"50\" id=\"fqK-EB-O8W\"/>\n                                                    </constraints>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"24\"/>\n                                                    <color key=\"textColor\" name=\"Text\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                            <constraints>\n                                                <constraint firstAttribute=\"trailing\" secondItem=\"cpK-ws-RF2\" secondAttribute=\"trailing\" constant=\"20\" id=\"BbH-Rf-PJD\"/>\n                                                <constraint firstItem=\"cpK-ws-RF2\" firstAttribute=\"leading\" secondItem=\"dHJ-gO-ycq\" secondAttribute=\"trailing\" id=\"PI0-1s-ONd\"/>\n                                                <constraint firstItem=\"cpK-ws-RF2\" firstAttribute=\"centerY\" secondItem=\"oFF-8F-Wd1\" secondAttribute=\"centerY\" id=\"Uot-Ac-KrT\"/>\n                                                <constraint firstItem=\"dHJ-gO-ycq\" firstAttribute=\"leading\" secondItem=\"oFF-8F-Wd1\" secondAttribute=\"leading\" id=\"px8-JB-Pb0\"/>\n                                                <constraint firstItem=\"dHJ-gO-ycq\" firstAttribute=\"centerY\" secondItem=\"oFF-8F-Wd1\" secondAttribute=\"centerY\" constant=\"-1\" id=\"wFQ-Cw-23H\"/>\n                                            </constraints>\n                                        </tableViewCellContentView>\n                                        <color key=\"backgroundColor\" name=\"Background\"/>\n                                        <connections>\n                                            <outlet property=\"emblem\" destination=\"dHJ-gO-ycq\" id=\"WZl-wf-e9W\"/>\n                                            <outlet property=\"name\" destination=\"cpK-ws-RF2\" id=\"scf-qm-l6z\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                </prototypes>\n                                <connections>\n                                    <outlet property=\"dataSource\" destination=\"46n-er-ZX8\" id=\"dSw-xN-Cm0\"/>\n                                    <outlet property=\"delegate\" destination=\"46n-er-ZX8\" id=\"bCi-7k-DJ1\"/>\n                                </connections>\n                            </tableView>\n                        </subviews>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"uDv-h5-uCf\" firstAttribute=\"leading\" secondItem=\"NPR-U0-s2j\" secondAttribute=\"leading\" id=\"33z-hv-0Ed\"/>\n                            <constraint firstAttribute=\"bottom\" secondItem=\"uDv-h5-uCf\" secondAttribute=\"bottom\" id=\"Agx-bO-Dxe\"/>\n                            <constraint firstItem=\"uDv-h5-uCf\" firstAttribute=\"top\" secondItem=\"xsY-Ns-WVS\" secondAttribute=\"bottom\" id=\"ZMH-40-2EG\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"uDv-h5-uCf\" secondAttribute=\"trailing\" id=\"zei-um-rHR\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Games\" id=\"vvu-dp-mjV\"/>\n                    <connections>\n                        <outlet property=\"tableView\" destination=\"uDv-h5-uCf\" id=\"7xT-jy-dbU\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYr-Ge-4kb\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-1938.4000000000001\" y=\"-216.34182908545728\"/>\n        </scene>\n        <!--Split View Controller-->\n        <scene sceneID=\"nAC-Z0-sX5\">\n            <objects>\n                <splitViewController id=\"juB-no-UMs\" sceneMemberID=\"viewController\">\n                    <connections>\n                        <segue destination=\"Shv-Tj-LcY\" kind=\"relationship\" relationship=\"masterViewController\" id=\"wCZ-YH-izo\"/>\n                    </connections>\n                </splitViewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"aQN-4X-cDc\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-3487\" y=\"-216\"/>\n        </scene>\n        <!--Navigation Controller-->\n        <scene sceneID=\"iwJ-jH-Atn\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"Shv-Tj-LcY\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" id=\"yx3-5Q-5Mk\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <color key=\"tintColor\" name=\"Text\"/>\n                        <color key=\"barTintColor\" name=\"Background\"/>\n                        <textAttributes key=\"titleTextAttributes\">\n                            <color key=\"textColor\" name=\"Text\"/>\n                        </textAttributes>\n                        <textAttributes key=\"largeTitleTextAttributes\">\n                            <color key=\"textColor\" name=\"Text\"/>\n                        </textAttributes>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"46n-er-ZX8\" kind=\"relationship\" relationship=\"rootViewController\" id=\"CuE-R3-QbA\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"cPC-MF-oNW\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-2713\" y=\"-215\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.20000000000000001\" green=\"0.20000000000000001\" blue=\"0.20000000000000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/BoardViewController.swift",
    "content": "//\n//  ViewController.swift\n//  Games\n//\n//  Created by Jo Albright on 2/3/16.\n//  Copyright © 2016 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nenum Direction: UInt {\n    \n    case right = 1\n    case left = 2\n    case down = 8\n    case up = 4\n    \n    var name: String {\n        \n        switch self {\n        case .down: return \"Down\"\n        case .up: return \"Up\"\n        case .left: return \"Left\"\n        case .right: return \"Right\"\n        }\n        \n    }\n    \n}\n\nclass BoardViewController: UIViewController {\n    \n    @IBOutlet weak var boardView: BoardView!\n    @IBOutlet weak var playerLabel: UILabel!\n    \n    override func viewDidAppear(_ animated: Bool) {\n        super.viewDidAppear(animated)\n        \n        boardView?.board?.playerChange = { [weak self] player in self?.playerLabel?.text = \"Player \\(player)\" }\n        boardView?.board?.showAlert = { [weak self] title, message in\n\n            let alertVC = UIAlertController(title: title, message: message, preferredStyle: .alert)\n            let resetAction = UIAlertAction(title: \"Reset\", style: .default) { [weak self] _ in\n\n                self?.boardView?.board?.reset()\n                self?.boardView?.updateBoard()\n\n            }\n\n            alertVC.addAction(resetAction)\n\n            // present VC\n            self?.present(alertVC, animated: true)\n\n        }\n\n    }\n    \n    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {\n        \n        guard let touch = touches.first else { return }\n        guard let square = boardView?.coordinate(touch) else { return }\n        \n        boardView?.selectSquare(square)\n        \n    }\n    \n    @IBAction func swipe(_ sender: UISwipeGestureRecognizer) {\n    \n        guard let direction = Direction(rawValue: sender.direction.rawValue) else { return }\n\n        boardView?.swipe(direction)\n    \n    }\n    \n//    @IBAction func chooseDifficulty(sender: UISegmentedControl) {\n//\n//        boardView?.board?.difficulty = Difficulty(sender.selectedSegmentIndex)\n//        boardView?.updateBoard()\n//\n//    }\n    \n    @IBAction func resetBoard(sender: Any) {\n        \n        boardView?.board?.reset()\n        boardView?.updateBoard()\n        \n    }\n    \n}\n\n@IBDesignable class GradientView: UIView {\n    \n    @IBInspectable var startColor: UIColor = .white\n    @IBInspectable var endColor: UIColor = .black\n    \n    override func draw(_ rect: CGRect) {\n        \n        let startPoint = CGPoint(x: 0, y: 0)\n        let endPoint = CGPoint(x: 1, y: 1)\n        \n        let context = UIGraphicsGetCurrentContext()\n        \n        \n        let colors: CFArray = [startColor.cgColor,endColor.cgColor] as CFArray\n        \n        guard let gradient = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), colors: colors, locations: [0, 1]) else { return }\n        \n        let s = CGPoint(x: frame.width * startPoint.x, y: frame.height * startPoint.y)\n        let e = CGPoint(x: frame.width * endPoint.x, y: frame.height * endPoint.y)\n        \n        context?.drawLinearGradient(gradient, start: s, end: e, options: .drawsAfterEndLocation)\n        \n    }\n    \n}\n\n@IBDesignable class BoardView : UIView {\n    \n    var board: Gameboard!\n    var boardView: UIView?\n    \n    @IBInspectable var padding: CGFloat = 0\n    \n    @IBInspectable var bgColor: UIColor = .white\n    @IBInspectable var fgColor: UIColor = .black\n    \n    @IBInspectable var player1Color: UIColor = .systemRed\n    @IBInspectable var player2Color: UIColor = .systemBlue\n    \n    @IBInspectable var selectedColor: UIColor = .white\n    @IBInspectable var highlightColor: UIColor = .white\n    \n    override func prepareForInterfaceBuilder() { updateBoard() }\n    override func didMoveToWindow() { updateBoard() }\n    override func layoutSubviews() { updateBoard() }\n    \n    func updateBoard() {\n        \n        board?.padding = padding\n        board?.colors.background = bgColor\n        board?.colors.foreground = fgColor\n        board?.colors.player1 = player1Color\n        board?.colors.player2 = player2Color\n        board?.colors.selected = selectedColor\n        board?.colors.highlight = highlightColor\n        \n        boardView?.removeFromSuperview()\n        boardView = board?.visualize(bounds)\n        guard let boardView = boardView else { return }\n        addSubview(boardView)\n        \n    }\n    \n    func coordinate(_ touch: UITouch) -> Square? {\n        \n        guard let board = board else { return nil }\n        \n        let w = (frame.width - board.padding * 2) / board.gridSize\n        let h = (frame.height - board.padding * 2) / board.gridSize\n        \n        let loc = touch.location(in: self)\n        \n        let c = Int((loc.x - board.padding) / w)\n        let r = Int((loc.y - board.padding) / h)\n        \n        return (r,c)\n        \n    }\n    \n    func selectSquare(_ square: Square) { }\n    func swipe(_ direction: Direction) { }\n    func checkDone() { }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/BackgammonBoardView.swift",
    "content": "//\n//  BackgammonBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class BackgammonBoardView : BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.backgammon)\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.backgammon)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n//        do {\n//\n//            try board.move(toSquare: square)\n//\n//        } catch {\n//\n//            print(error)\n//\n//        }\n        \n        updateBoard()\n        \n    }\n    \n    override func coordinate(_ touch: UITouch) -> Square {\n        \n        let p = 30\n        let w = (frame.width - p * 2) / (board.gridSize - 1)\n        let h = (frame.height - p * 2) / (board.gridSize - 1)\n        \n        let loc = touch.location(in: self)\n        \n        let c = Int((loc.x - (w / 2)) / w)\n        let r = Int((loc.y - (w / 2)) / h)\n        \n        return (r,c)\n        \n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/BombsweeperBoardView.swift",
    "content": "//\n//  BombsweeperBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n\n\n@IBDesignable class BombsweeperBoardView : BoardView {\n    \n    var bombsweeperGuess: Bool = true\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.bombsweeper, testing: true)\n        _ = try? board.guess(toSquare: (4,4))\n        _ = try? board.mark(toSquare: (7,4))\n        _ = try? board.guess(toSquare: (9,0))\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.bombsweeper)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        do {\n            \n            if bombsweeperGuess {\n                \n                try board.guess(toSquare: square)\n                \n            } else {\n                \n                try board.mark(toSquare: square)\n                \n            }\n            \n        } catch {\n            \n            print(error)\n            \n        }\n        \n        updateBoard()\n        checkDone()\n        \n    }\n\n    override func checkDone() {\n\n        guard let board = board else { return }\n\n        let noMoves = !(board.grid.content.reduce([]) { $0 + $1 }.contains(\"•\"))\n        let boom = (board.grid.content.reduce([]) { $0 + $1 }.contains(\"✘\"))\n\n        if boom {\n\n            board.showAlert?(\"Game Over\", \"You stepped on a mine.\")\n\n        } else if noMoves {\n\n            board.showAlert?(\"Game Over\", \"You flagged all mines.\")\n\n        }\n\n    }\n    \n}\n\nextension BoardViewController {\n    \n    @IBAction func chooseBombsweeperMark(sender: UISegmentedControl) {\n        \n        (boardView as? BombsweeperBoardView)?.bombsweeperGuess = sender.selectedSegmentIndex == 0\n        \n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/CheckersBoardView.swift",
    "content": "//\n//  CheckersBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class CheckersBoardView : BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.checkers)\n        board.showAvailable((2,3))\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.checkers)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        if let selected = board.selected {\n            \n            do {\n                \n                _ = try board.move(pieceAt: selected, toSquare: square)\n                \n                board.selected = nil\n                board.highlights = []\n                \n            } catch {\n                \n                print(error)\n                \n                board.showAvailable(square)\n                \n            }\n            \n        } else {\n            \n            board.showAvailable(square)\n            \n        }\n\n        updateBoard()\n        checkDone()\n        \n    }\n\n    override func checkDone() {\n\n        if checkLost(player: 0) {\n\n            board?.showAlert?(\"Game Over\", \"Player 2 Wins\")\n\n        } else if checkLost(player: 1) {\n\n            board?.showAlert?(\"Game Over\", \"Player 1 Wins\")\n\n        }\n\n    }\n\n    private func checkLost(player: Int) -> Bool {\n\n        return board.grid.piecesOnBoard().filter({ board.playerPieces[player].contains($0) }).isEmpty\n\n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/ChessBoardView.swift",
    "content": "//\n//  ChessBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class ChessBoardView : BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.chess)\n        board.showAvailable(C7)\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.chess)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        if let selected = board.selected {\n            \n            do {\n                \n                _ = try board.move(pieceAt: selected, toSquare: square)\n                \n                board.selected = nil\n                board.highlights = []\n                \n            } catch {\n                \n                print(error)\n                \n                board.showAvailable(square)\n                \n            }\n            \n        } else {\n            \n            board.showAvailable(square)\n            \n        }\n        \n        updateBoard()\n        \n    }\n\n    override func checkDone() {\n\n        \n\n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/DotsBoardView.swift",
    "content": "//\n//  DotsBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class DotsBoardView : BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.dots, testing: true)\n        _ = try? board.move(toSquare: (3,6))\n        _ = try? board.move(toSquare: (2,5))\n        _ = try? board.move(toSquare: (2,7))\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.dots, testing: true)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        do {\n\n            try board.move(toSquare: square)\n\n        } catch {\n\n            print(error)\n\n        }\n        \n        updateBoard()\n        \n    }\n\n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/DoublesBoardView.swift",
    "content": "//\n//  DoublesBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/27/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass DoublesBoardView: BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.doubles, testing: true)\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.doubles)\n        super.awakeFromNib()\n        \n    }\n    \n    var initialgrid: [[String]] = []\n\n    override func swipe(_ direction: Direction) {\n        \n        initialgrid = board.grid.content\n        swipe(direction, 0)\n        \n    }\n    \n    func swipe(_ direction: Direction, _ loop: Int, _ changed: Bool = false) {\n        \n        var moved: Bool = changed\n        \n        switch direction {\n            \n        case .left:\n            \n            for r in board.grid.colRange {\n                \n                for c in board.grid.rowRange {\n                    \n                    do {\n                        \n                         \n                        _ = try board.move(pieceAt: (c,r), toSquare: (c,r-1))\n                        \n                        moved = true\n                        \n                    } catch {\n                        \n                        print(error)\n                        \n                    }\n                    \n                }\n                \n            }\n            \n        case .right:\n            \n            for r in board.grid.colRange {\n                \n                let row = board.grid.rowRange.upperBound - 1 - r\n                \n                print(r,row)\n                \n                for c in board.grid.colRange {\n                    \n                    do {\n                       \n                        _ = try board.move(pieceAt: (c,row), toSquare: (c,row+1))\n                        \n                        moved = true\n                        \n                    } catch {\n                        \n                        print(error)\n                        \n                    }\n                    \n                }\n                \n            }\n            \n        case .up:\n            \n            for c in board.grid.colRange {\n                \n                for r in board.grid.rowRange {\n                    \n                    do {\n                        \n                        _ = try board.move(pieceAt: (c,r), toSquare: (c-1,r))\n                        \n                        moved = true\n                        \n                    } catch {\n                        \n                        print(error)\n                        \n                    }\n                    \n                }\n                \n            }\n            \n        case .down:\n            \n            for c in board.grid.colRange {\n                \n                let col = board.grid.colRange.upperBound - 1 - c\n                \n                print(c,col)\n                \n                for r in board.grid.rowRange {\n                    \n                    do {\n                    \n                        _ = try board.move(pieceAt: (col,r), toSquare: (col+1,r))\n                        \n                        moved = true\n                        \n                    } catch {\n                    \n                        print(error)\n                    \n                    }\n                    \n                }\n                \n            }\n            \n        }\n        \n        updateBoard()\n        \n        guard loop == 3 else {\n            \n            DispatchQueue.main.asyncAfter(deadline: .now() + 0.02) {\n                \n                self.swipe(direction, loop + 1, moved)\n                \n            }\n            \n            return\n            \n        }\n        \n        guard moved else { return }\n\n        let _ = Doubles.random(board.grid)\n        \n        updateBoard()\n        \n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/FourBoardView.swift",
    "content": "//\n//  FourBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class FourBoardView : BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.four, testing: true)\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.four)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        do {\n            \n            try board.drop(pieceAt: square)\n            \n            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {\n            \n                self.selectSquare((square.0 + 1,square.1))\n            \n            }\n\n        } catch MoveError.invalidmove {\n\n            checkDone()\n\n        } catch MoveError.outofbounds {\n\n            checkDone()\n\n        } catch {\n            \n            print(error)\n            \n        }\n        \n        updateBoard()\n        \n    }\n    \n    override func coordinate(_ touch: UITouch) -> Square {\n        \n        let w = (frame.width - board.padding * 2) / 7\n        let loc = touch.location(in: self)\n        let c = Int((loc.x - board.padding) / w)\n        \n        return (-1,c)\n        \n    }\n\n    lazy var combinations: [[Int]] = {\n\n        var combinations: [[Int]] = []\n\n        // Side to Side (+1)\n\n        for i in [1,2,3,4,8,9,10,11,15,16,17,18,22,23,24,25,29,30,31,32,36,37,38,39] {\n\n            combinations += [i.set(1, 4)]\n\n        }\n\n        // Up & Down (+7)\n\n        for i in [1,8,15,2,9,16,3,10,17,4,11,18,5,12,19,6,13,20,7,14,21] {\n\n            combinations += [i.set(7, 4)]\n\n        }\n\n        // Diagnol from Left (+8)\n\n        for i in [1,8,15,2,9,16,3,10,17,4,11,18] {\n\n            combinations += [i.set(8, 4)]\n\n        }\n\n        // Diagnol from Right (+6)\n\n        for i in [4,11,18,5,12,19,6,13,20,7,14,21] {\n\n            combinations += [i.set(6, 4)]\n\n        }\n\n        return combinations\n\n    }()\n\n    override func checkDone() {\n\n        for set in combinations {\n\n            let (winner,gameover) = checkWin(indexes: set)\n\n            guard gameover else { continue }\n\n            if let w = winner {\n\n                board?.showAlert?(\"Game Over\", \"Player \\(w) Wins\")\n\n            } else {\n\n                board?.showAlert?(\"Game Over\", \"Stalemate\")\n\n            }\n\n            return\n\n        }\n\n    }\n\n    private func checkWin(indexes: [Int]) -> (Int?,Bool) {\n\n        let p1: String = board.grid[indexes[0] - 1]\n        let p2: String = board.grid[indexes[1] - 1]\n        let p3: String = board.grid[indexes[2] - 1]\n        let p4: String = board.grid[indexes[3] - 1]\n\n        if p1 == p2, p2 == p3, p3 == p4, p1 != EmptyPiece {\n\n            guard let index = board?.playerPieces.firstIndex(of: p1) else { return (nil,false) }\n\n            return (index + 1,true)\n\n        }\n\n        return (nil,false)\n\n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/GoBoardView.swift",
    "content": "//\n//  GoBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class GoBoardView : BoardView {\n\n    var passes: Int = 0\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.go)\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.go)\n        super.awakeFromNib()\n\n    }\n\n    @IBAction func pass() {\n\n        passes += 1\n        board.changePlayer()\n        checkDone()\n\n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        do {\n            \n            try board.move(toSquare: square)\n            \n        } catch {\n            \n            print(error)\n            \n        }\n        \n        updateBoard()\n        checkDone()\n        \n    }\n    \n    override func coordinate(_ touch: UITouch) -> Square {\n        \n        let p = 30\n        let w = (frame.width - p * 2) / (board.gridSize - 1)\n        let h = (frame.height - p * 2) / (board.gridSize - 1)\n        \n        let loc = touch.location(in: self)\n        \n        let c = Int((loc.x - (w / 2)) / w)\n        let r = Int((loc.y - (w / 2)) / h)\n        \n        return (r,c)\n        \n    }\n\n    override func checkDone() {\n\n        guard board.grid.piecesOnBoard().count == board.totalSpaces || passes == 2 else { return }\n\n        let pieces1 = board.grid.piecesOnBoard().filter { board.playerPieces[0].contains($0) }\n        let pieces2 = board.grid.piecesOnBoard().filter { board.playerPieces[1].contains($0) }\n\n        if pieces1.count == pieces2.count {\n\n            board?.showAlert?(\"Game Over\", \"Stalemate\")\n\n        } else {\n\n            board?.showAlert?(\"Game Over\", \"Player \\(pieces1.count > pieces2.count ? 1 : 2) Wins\")\n            \n        }\n\n        passes = 0\n\n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/MancalaBoardView.swift",
    "content": "//\n//  MancalaBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class MancalaBoardView : BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.mancala, testing: true)\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.mancala, testing: true)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n//        do {\n//\n//            try board.move(toSquare: square)\n//\n//        } catch {\n//\n//            print(error)\n//\n//        }\n        \n        updateBoard()\n        \n    }\n    \n//    override func coordinate(_ touch: UITouch) -> Square {\n//\n//        let p = 30\n//        let w = (frame.width - p * 2) / (board.gridSize - 1)\n//        let h = (frame.height - p * 2) / (board.gridSize - 1)\n//\n//        let loc = touch.location(in: self)\n//\n//        let c = Int((loc.x - (w / 2)) / w)\n//        let r = Int((loc.y - (w / 2)) / h)\n//\n//        return (r,c)\n//\n//    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/MemoryBoardView.swift",
    "content": "//\n//  MemoryBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n\n\n@IBDesignable class MemoryBoardView : BoardView {\n\n    var guesses: Int = 0\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.memory)\n        _ = try? board?.select(cardAt: (0,2))\n        _ = try? board?.match(cardAt: (2,1), withCard: (0,2))\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.memory)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        let clean: () -> Void = {\n            \n            self.board.highlights = [self.board.selected, square].compactMap { $0 }\n            self.board.selected = nil\n            \n            DispatchQueue.main.asyncAfter(deadline: .now() + 0.6) { [weak self] in\n                \n                guard let highlights = self?.board.highlights, highlights.count > 1 else { return }\n\n                \n                _ = try? self?.board.match(cardAt: highlights[1], withCard: highlights[0], reset: true)\n                self?.board.highlights = []\n\n                self?.updateBoard()\n                self?.checkDone()\n                \n            }\n            \n        }\n        \n        if board.highlights.count > 1 {\n\n            return\n            \n        } else if let selected = board.selected {\n\n            guesses += 1\n\n            do {\n                \n                _ = try board.match(cardAt: square, withCard: selected)\n                clean()\n                \n            } catch MemoryError.badmatch {\n\n                clean()\n                \n            } catch { }\n            \n        } else {\n            \n            guard let _ = try? board.select(cardAt: square) else { return }\n            board.selected = square\n            \n        }\n        \n        updateBoard()\n        \n    }\n\n    override func checkDone() {\n\n        let cardCount = board.grid.content.reduce(0) {\n\n            $0 + $1.reduce(0) { $0 + ($1 != EmptyPiece ? 1 : 0) }\n\n        }\n\n        if cardCount == 0 {\n\n            board?.showAlert?(\"Game Over\", \"It took \\(guesses) Guesses\")\n            guesses = 0\n\n        }\n\n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/PegsBoardView.swift",
    "content": "//\n//  PegSolitaireBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass PegsBoardView: BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.pegs)\n        _ = try? board.validateMove((3,1), (3,3))\n        _ = try? board.validateMove((3,4), (3,2))\n        _ = try? board.validateMove((1,3), (3,3))\n        _ = try? board.validateMove((3,3), (3,1))\n        _ = try? board.validateMove((3,0), (3,2))\n        _ = try? board.validateMove((3,6), (3,4))\n        _ = try? board.validateMove((5,3), (3,3))\n        board.showAvailable((3,3))\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.pegs)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        if let selected = board.selected {\n            \n            do {\n                \n                _ = try board.move(pieceAt: selected, toSquare: square)\n                \n                board.selected = nil\n                board.highlights = []\n                \n            } catch {\n                \n                print(error)\n                \n                board.showAvailable(square)\n                \n            }\n            \n        } else {\n            \n            board.showAvailable(square)\n            \n        }\n        \n        updateBoard()\n        \n    }\n\n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/SudokuBoardView.swift",
    "content": "//\n//  SudokuBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class SudokuBoardView : BoardView {\n    \n    var sudokuNumber: String = \"1\"\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.sudoku, testing: true)\n        _ = try? board.guess(toSquare: (2,7), withGuess: \"4\")\n        _ = try? board.guess(toSquare: (8,8), withGuess: \"4\")\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.sudoku)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        do {\n            \n            try board.guess(toSquare: square, withGuess: sudokuNumber)\n            \n        } catch {\n            \n            print(error)\n            \n        }\n        \n        updateBoard()\n        \n    }\n    \n}\n\nextension BoardViewController {\n    \n    @IBAction func chooseSudokuNymber(sender: UISegmentedControl) {\n        \n        (boardView as? SudokuBoardView)?.sudokuNumber = \"\\(sender.selectedSegmentIndex + 1)\"\n        \n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/TicTacToeBoardView.swift",
    "content": "//\n//  TicTacToeBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/25/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class TicTacToeBoardView : BoardView {\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.tictactoe)\n        _ = try? board.move(toSquare: (1,1))\n        _ = try? board.move(toSquare: (0,1))\n        _ = try? board.move(toSquare: (1,0))\n        _ = try? board.move(toSquare: (1,2))\n        _ = try? board.move(toSquare: (2,0))\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.tictactoe)\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        do {\n            \n            try board.move(toSquare: square)\n            \n        } catch {\n            \n            print(error)\n            \n        }\n        \n        updateBoard()\n        checkDone()\n        \n    }\n\n    lazy var combinations: [[Int]] = {\n\n        var combinations: [[Int]] = []\n\n        // Side to Side (+1)\n\n        for i in [1,4,7] {\n\n            combinations += [i.set(1, 3)]\n\n        }\n\n        // Up & Down (+3)\n\n        for i in [1,2,3] {\n\n            combinations += [i.set(3, 3)]\n\n        }\n\n        // Diagonals\n\n        combinations += [\n\n            1.set(4, 3),\n            3.set(2, 3)\n\n        ]\n\n        return combinations\n\n    }()\n\n    override func checkDone() {\n\n        for combination in combinations {\n\n            let (winner,gameover) = checkWin(indexes: combination)\n\n            guard gameover else { continue }\n\n            if let w = winner {\n\n                board?.showAlert?(\"Game Over\", \"Player \\(w) Wins\")\n\n            } else {\n\n                board?.showAlert?(\"Game Over\", \"Stalemate\")\n\n            }\n\n            return\n\n        }\n\n    }\n\n    private func checkWin(indexes: [Int]) -> (Int?,Bool) {\n\n        let p1: String = board.grid[indexes[0] - 1]\n        let p2: String = board.grid[indexes[1] - 1]\n        let p3: String = board.grid[indexes[2] - 1]\n\n        if p1 == p2, p2 == p3, p1 != EmptyPiece {\n\n            guard let index = board?.playerPieces.firstIndex(of: p1) else { return (nil,false) }\n\n            return (index + 1,true)\n\n        }\n\n        return (nil,false)\n\n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/BoardViews/WordsBoardView.swift",
    "content": "//\n//  WordsBoardView.swift\n//  Games\n//\n//  Created by Jo Albright on 4/23/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\n@IBDesignable class WordsBoardView : BoardView {\n    \n    var selectedTile: Words.Letter?\n    \n    var bag: [Words.Letter] = []\n    var rack: [Words.Letter] = [] { didSet { rackUpdated(rack) } }\n    \n    var rackUpdated: ([Words.Letter]) -> Void = { _ in }\n    \n    override func prepareForInterfaceBuilder() {\n        \n        board = Gameboard(.words)\n        bag = Words.Letter.bag\n        super.prepareForInterfaceBuilder()\n        \n    }\n    \n    override func awakeFromNib() {\n        \n        board = Gameboard(.words)\n        bag = Words.Letter.bag\n        super.awakeFromNib()\n        \n    }\n    \n    override func selectSquare(_ square: Square) {\n        \n        guard let tile = selectedTile else { return }\n        \n        do {\n\n            try board.place(tile: tile, at: square)\n            \n            if let index = rack.index(of: tile) {\n                \n                rack.remove(at: index)\n                rack.append(.none)\n                selectedTile = nil\n                \n            }\n\n        } catch {\n\n            print(error)\n\n        }\n        \n        updateBoard()\n        \n    }\n    \n    func reset() {\n        \n        bag = Words.Letter.bag\n        rack = []\n        fillRack()\n        \n    }\n    \n    @IBAction func fillRack() {\n        \n        rack = rack.filter { $0 != .none }\n        \n        let tiles = 7 - rack.count\n        \n        print(rack.count,tiles,bag.count)\n        \n        rack += bag.prefix(tiles)\n        bag.removeFirst(tiles)\n        \n        print(rack.count,bag.count)\n        \n    }\n    \n}\n\nclass WordsBoardViewController: BoardViewController {\n    \n    @IBOutlet var rackHolder: UIStackView!\n    \n    var selected: Words.Letter?\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        (boardView as? WordsBoardView)?.rackUpdated = { rack in\n            \n            for view in self.rackHolder.arrangedSubviews { self.rackHolder.removeArrangedSubview(view) }\n            \n            for tile in rack {\n                \n                let tileView = TileView()\n                tileView.tile = tile\n                tileView.color = self.boardView.player2Color\n                tileView.selectedColor = self.boardView.selectedColor\n                tileView.backgroundColor = .clear\n                tileView.letterLabel?.textColor = self.boardView.player1Color\n                tileView.valueLabel?.textColor = self.boardView.highlightColor\n                tileView.selected = { tile in\n                    \n                    (self.boardView as? WordsBoardView)?.selectedTile = tile\n                    for view in self.rackHolder.arrangedSubviews {\n                        guard let tileView = view as? TileView else { continue }\n                        tileView.color = self.boardView.player2Color\n                    }\n                    \n                }\n                \n                self.rackHolder.addArrangedSubview(tileView)\n                \n            }\n            \n        }\n        \n        (boardView as? WordsBoardView)?.fillRack()\n        \n    }\n    \n    @IBAction override func resetBoard(sender: Any) {\n        super.resetBoard(sender: sender)\n        \n        (boardView as? WordsBoardView)?.reset()\n        \n    }\n    \n}\n"
  },
  {
    "path": "Games/BoardController/Boards/Backgammon.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"15400\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"NKc-XK-NCZ\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"15404\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Backgammon-->\n        <scene sceneID=\"JBs-iu-twK\">\n            <objects>\n                <viewController storyboardIdentifier=\"BackgammonBoard\" id=\"NKc-XK-NCZ\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"e0z-ug-iQe\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ccH-iz-vSZ\" customClass=\"BackgammonBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"286.5\" width=\"350\" height=\"323\"/>\n                                <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"ccH-iz-vSZ\" secondAttribute=\"height\" multiplier=\"13:12\" id=\"T6f-YS-Nei\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" red=\"0.40340342420000003\" green=\"0.33316692120000002\" blue=\"0.19125256039999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" red=\"0.71556712960000002\" green=\"0.6420300176\" blue=\"0.52321705340000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" red=\"0.1978587963\" green=\"0.1978587963\" blue=\"0.1978587963\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"1\" green=\"0.99996998520000002\" blue=\"0.99996998520000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Game Logic : Coming Soon\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vqY-NG-dKN\">\n                                <rect key=\"frame\" x=\"77\" y=\"609.5\" width=\"260\" height=\"252.5\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"20\"/>\n                                <color key=\"textColor\" name=\"Accent\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"vqY-NG-dKN\" firstAttribute=\"top\" secondItem=\"ccH-iz-vSZ\" secondAttribute=\"bottom\" id=\"Mhv-jI-ccv\"/>\n                            <constraint firstItem=\"vqY-NG-dKN\" firstAttribute=\"centerX\" secondItem=\"e0z-ug-iQe\" secondAttribute=\"centerX\" id=\"Oa5-QG-Vjm\"/>\n                            <constraint firstItem=\"ccH-iz-vSZ\" firstAttribute=\"centerX\" secondItem=\"e0z-ug-iQe\" secondAttribute=\"centerX\" id=\"Sb8-D2-jM1\"/>\n                            <constraint firstItem=\"oVX-bc-ojb\" firstAttribute=\"bottom\" secondItem=\"vqY-NG-dKN\" secondAttribute=\"bottom\" id=\"YXc-AQ-XKX\"/>\n                            <constraint firstItem=\"ccH-iz-vSZ\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"oVX-bc-ojb\" secondAttribute=\"top\" constant=\"100\" id=\"eo7-Iz-vAt\"/>\n                            <constraint firstItem=\"ccH-iz-vSZ\" firstAttribute=\"centerY\" secondItem=\"e0z-ug-iQe\" secondAttribute=\"centerY\" id=\"vZr-Gm-1jW\"/>\n                            <constraint firstItem=\"ccH-iz-vSZ\" firstAttribute=\"leading\" secondItem=\"oVX-bc-ojb\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"vyq-9G-1ha\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"oVX-bc-ojb\"/>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Backgammon\" id=\"QBH-qI-nBP\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"QBm-2U-W7J\"/>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"STl-Tr-tef\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"862\" y=\"1209\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.20000000000000001\" green=\"0.20000000000000001\" blue=\"0.20000000000000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Bombsweeper.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"N0G-Yg-5c6\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Bombsweeper-->\n        <scene sceneID=\"Zo0-SB-Yvu\">\n            <objects>\n                <viewController storyboardIdentifier=\"BombsweeperBoard\" id=\"N0G-Yg-5c6\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Wne-sw-N8L\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"6mm-r9-T1J\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"FjI-6p-UOS\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"o9a-d5-akx\" customClass=\"BombsweeperBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" name=\"Accent\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" red=\"0.99609655139999997\" green=\"0.74099564770000004\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"selectedColor\">\n                                        <color key=\"value\" red=\"0.74601978059999996\" green=\"0.18476429580000001\" blue=\"0.1849055439\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"highlightColor\">\n                                        <color key=\"value\" name=\"Text\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"M55-xK-WZt\">\n                                <rect key=\"frame\" x=\"127\" y=\"623\" width=\"160\" height=\"239\"/>\n                                <subviews>\n                                    <segmentedControl opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"top\" segmentControlStyle=\"plain\" selectedSegmentIndex=\"0\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"oRc-AV-ax9\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"104\" width=\"160\" height=\"32\"/>\n                                        <constraints>\n                                            <constraint firstAttribute=\"width\" constant=\"160\" id=\"rHt-S6-WWJ\"/>\n                                        </constraints>\n                                        <segments>\n                                            <segment title=\"●\"/>\n                                            <segment title=\"⚑\"/>\n                                        </segments>\n                                        <color key=\"tintColor\" name=\"Text\"/>\n                                        <connections>\n                                            <action selector=\"chooseBombsweeperMarkWithSender:\" destination=\"N0G-Yg-5c6\" eventType=\"valueChanged\" id=\"dv6-cC-fY3\"/>\n                                        </connections>\n                                    </segmentedControl>\n                                </subviews>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"trailing\" secondItem=\"oRc-AV-ax9\" secondAttribute=\"trailing\" id=\"UO2-Gk-uUI\"/>\n                                    <constraint firstItem=\"oRc-AV-ax9\" firstAttribute=\"centerY\" secondItem=\"M55-xK-WZt\" secondAttribute=\"centerY\" id=\"Uwf-qb-d0Y\"/>\n                                    <constraint firstItem=\"oRc-AV-ax9\" firstAttribute=\"leading\" secondItem=\"M55-xK-WZt\" secondAttribute=\"leading\" id=\"gWO-ma-mrJ\"/>\n                                </constraints>\n                            </view>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"tGk-Xa-V4S\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"o9a-d5-akx\" firstAttribute=\"centerY\" secondItem=\"FjI-6p-UOS\" secondAttribute=\"centerY\" id=\"HcM-dz-lrI\"/>\n                            <constraint firstItem=\"o9a-d5-akx\" firstAttribute=\"leading\" secondItem=\"FjI-6p-UOS\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"MUO-BL-aeI\"/>\n                            <constraint firstItem=\"tGk-Xa-V4S\" firstAttribute=\"bottom\" secondItem=\"M55-xK-WZt\" secondAttribute=\"bottom\" id=\"Znl-qi-Bgf\"/>\n                            <constraint firstItem=\"o9a-d5-akx\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"tGk-Xa-V4S\" secondAttribute=\"top\" constant=\"100\" id=\"cKr-NJ-Ttz\"/>\n                            <constraint firstItem=\"o9a-d5-akx\" firstAttribute=\"centerX\" secondItem=\"FjI-6p-UOS\" secondAttribute=\"centerX\" id=\"f8F-Lk-zKX\"/>\n                            <constraint firstItem=\"o9a-d5-akx\" firstAttribute=\"width\" secondItem=\"o9a-d5-akx\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"ntQ-jp-Jir\"/>\n                            <constraint firstItem=\"M55-xK-WZt\" firstAttribute=\"centerX\" secondItem=\"FjI-6p-UOS\" secondAttribute=\"centerX\" id=\"rU2-NQ-cJV\"/>\n                            <constraint firstItem=\"M55-xK-WZt\" firstAttribute=\"top\" secondItem=\"o9a-d5-akx\" secondAttribute=\"bottom\" id=\"tPa-Xr-5RY\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"Bombs\" id=\"Irc-8M-SE8\"/>\n                    <navigationItem key=\"navigationItem\" title=\"Bombsweeper\" id=\"QR5-AV-HMJ\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"l3k-yv-0U7\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"N0G-Yg-5c6\" id=\"i77-nT-4Br\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"o9a-d5-akx\" id=\"6Rr-h8-gtQ\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"ous-0Z-CVB\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"264\" y=\"165\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Checkers.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"cgA-mw-r8l\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Checkers-->\n        <scene sceneID=\"QZG-Xh-Da1\">\n            <objects>\n                <viewController storyboardIdentifier=\"CheckersBoard\" id=\"cgA-mw-r8l\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"p1z-su-fxg\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"XE8-pT-q9B\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Yij-Jk-BQ3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"TOT-Kh-qbK\" customClass=\"CheckersBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"TOT-Kh-qbK\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"jaY-Eb-ONb\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Accent\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" name=\"Offest\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" red=\"0.86368811130000001\" green=\"0.052148308599999998\" blue=\"0.021709781139999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"0.57748842590000005\" green=\"0.13851487530000001\" blue=\"0.14583110120000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"selectedColor\">\n                                        <color key=\"value\" red=\"0.034735164870000002\" green=\"0.63069970180000001\" blue=\"0.82797604800000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"highlightColor\">\n                                        <color key=\"value\" red=\"0.034735164870000002\" green=\"0.63069970180000001\" blue=\"0.82797604800000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Player 1\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"feG-A9-xD8\">\n                                <rect key=\"frame\" x=\"168.5\" y=\"623\" width=\"77\" height=\"239\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"20\"/>\n                                <color key=\"textColor\" name=\"Text\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"j4b-lN-HhH\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"feG-A9-xD8\" firstAttribute=\"centerX\" secondItem=\"Yij-Jk-BQ3\" secondAttribute=\"centerX\" id=\"3G1-oa-rNS\"/>\n                            <constraint firstItem=\"TOT-Kh-qbK\" firstAttribute=\"centerY\" secondItem=\"Yij-Jk-BQ3\" secondAttribute=\"centerY\" id=\"HFZ-cD-dJb\"/>\n                            <constraint firstItem=\"feG-A9-xD8\" firstAttribute=\"top\" secondItem=\"TOT-Kh-qbK\" secondAttribute=\"bottom\" id=\"QkP-gR-PfG\"/>\n                            <constraint firstItem=\"j4b-lN-HhH\" firstAttribute=\"bottom\" secondItem=\"feG-A9-xD8\" secondAttribute=\"bottom\" id=\"VzE-pb-w3W\"/>\n                            <constraint firstItem=\"TOT-Kh-qbK\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"j4b-lN-HhH\" secondAttribute=\"top\" constant=\"100\" id=\"Wnm-EX-HCL\"/>\n                            <constraint firstItem=\"TOT-Kh-qbK\" firstAttribute=\"leading\" secondItem=\"Yij-Jk-BQ3\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"bah-ff-MWA\"/>\n                            <constraint firstItem=\"TOT-Kh-qbK\" firstAttribute=\"centerX\" secondItem=\"Yij-Jk-BQ3\" secondAttribute=\"centerX\" id=\"jF6-I3-fEh\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"Chess\" id=\"PQc-cK-CMu\"/>\n                    <navigationItem key=\"navigationItem\" title=\"Checkers\" id=\"Szf-EI-EPb\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"lfC-bH-ong\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"cgA-mw-r8l\" id=\"u4w-HM-SDz\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"TOT-Kh-qbK\" id=\"9CM-lA-aVo\"/>\n                        <outlet property=\"playerLabel\" destination=\"feG-A9-xD8\" id=\"o04-ru-KH4\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"t3Q-U4-9mj\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"672\" y=\"-229\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Offest\">\n            <color red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Chess.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"sor-ud-rWl\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Chess-->\n        <scene sceneID=\"12w-pz-usa\">\n            <objects>\n                <viewController storyboardIdentifier=\"ChessBoard\" id=\"sor-ud-rWl\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"emD-eU-xyj\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"7Ht-uZ-af8\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"uqf-IK-afK\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fNc-VK-RLG\" customClass=\"ChessBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"hAx-cA-ETU\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" red=\"0.61397569439999999\" green=\"0.51956820410000004\" blue=\"0.36703523859999998\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"0.1978587963\" green=\"0.1978587963\" blue=\"0.1978587963\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" red=\"0.52994791669999997\" green=\"0.45101102510000002\" blue=\"0.32347370669999997\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"selectedColor\">\n                                        <color key=\"value\" red=\"0.96359953700000001\" green=\"0.0\" blue=\"0.23977484830000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"highlightColor\">\n                                        <color key=\"value\" red=\"0.96359953700000001\" green=\"0.0\" blue=\"0.23977484830000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Player 1\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"29G-Ib-F4a\">\n                                <rect key=\"frame\" x=\"169\" y=\"623\" width=\"76.5\" height=\"239\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"20\"/>\n                                <color key=\"textColor\" name=\"Text\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <stackView opaque=\"NO\" contentMode=\"scaleToFill\" distribution=\"fillEqually\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"YoN-k0-dAd\">\n                                <rect key=\"frame\" x=\"32\" y=\"238\" width=\"350\" height=\"35\"/>\n                                <subviews>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"A\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"f8d-1R-TyZ\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"44\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"B\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"T8W-8o-YS8\">\n                                        <rect key=\"frame\" x=\"44\" y=\"0.0\" width=\"43.5\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"C\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"xIw-bn-3J4\">\n                                        <rect key=\"frame\" x=\"87.5\" y=\"0.0\" width=\"44\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"D\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fcj-Yp-yX7\">\n                                        <rect key=\"frame\" x=\"131.5\" y=\"0.0\" width=\"43.5\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"E\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"CPd-2s-Eby\">\n                                        <rect key=\"frame\" x=\"175\" y=\"0.0\" width=\"44\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"F\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"10\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"upV-gF-VcA\">\n                                        <rect key=\"frame\" x=\"219\" y=\"0.0\" width=\"43.5\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"G\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"10\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"tfz-uT-Uqb\">\n                                        <rect key=\"frame\" x=\"262.5\" y=\"0.0\" width=\"44\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"H\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"10\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"XQb-Sa-beE\">\n                                        <rect key=\"frame\" x=\"306.5\" y=\"0.0\" width=\"43.5\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                </subviews>\n                            </stackView>\n                            <stackView opaque=\"NO\" contentMode=\"scaleToFill\" axis=\"vertical\" distribution=\"fillEqually\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"PNf-Zj-C2a\">\n                                <rect key=\"frame\" x=\"-3\" y=\"273\" width=\"35\" height=\"350\"/>\n                                <subviews>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"8\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"iOR-hn-41j\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"35\" height=\"44\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"7\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ePT-6R-Wns\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"44\" width=\"35\" height=\"43.5\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"6\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"VMp-Dd-JeZ\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"87.5\" width=\"35\" height=\"44\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"5\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2g1-hx-i1i\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"131.5\" width=\"35\" height=\"43.5\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"4\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"pf7-4K-Qpa\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"175\" width=\"35\" height=\"44\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"3\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"REL-Sr-hfs\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"219\" width=\"35\" height=\"43.5\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"2\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"pgX-cc-IJm\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"262.5\" width=\"35\" height=\"44\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"1\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ATW-su-agn\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"306.5\" width=\"35\" height=\"43.5\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                </subviews>\n                            </stackView>\n                            <stackView opaque=\"NO\" contentMode=\"scaleToFill\" axis=\"vertical\" distribution=\"fillEqually\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"eVg-aQ-jkQ\">\n                                <rect key=\"frame\" x=\"382\" y=\"273\" width=\"35\" height=\"350\"/>\n                                <subviews>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"8\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zi4-oq-Lqo\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"35\" height=\"44\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"7\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Fiy-5t-oc4\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"44\" width=\"35\" height=\"43.5\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"6\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"AJi-rA-0kM\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"87.5\" width=\"35\" height=\"44\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"5\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"4C7-ZN-3UW\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"131.5\" width=\"35\" height=\"43.5\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"4\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"wcK-Z6-DCk\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"175\" width=\"35\" height=\"44\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"3\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rbd-1P-T8H\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"219\" width=\"35\" height=\"43.5\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"2\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ZQW-aa-QS5\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"262.5\" width=\"35\" height=\"44\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"1\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"eYc-L1-iQq\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"306.5\" width=\"35\" height=\"43.5\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                </subviews>\n                            </stackView>\n                            <stackView opaque=\"NO\" contentMode=\"scaleToFill\" distribution=\"fillEqually\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vBk-IJ-bTm\">\n                                <rect key=\"frame\" x=\"32\" y=\"623\" width=\"350\" height=\"35\"/>\n                                <subviews>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"A\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"jBu-Qj-osM\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"44\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"B\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"TN2-rI-2kk\">\n                                        <rect key=\"frame\" x=\"44\" y=\"0.0\" width=\"43.5\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"C\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"oWX-2s-Ghl\">\n                                        <rect key=\"frame\" x=\"87.5\" y=\"0.0\" width=\"44\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"D\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"VNy-Pz-h8c\">\n                                        <rect key=\"frame\" x=\"131.5\" y=\"0.0\" width=\"43.5\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"E\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ffK-K1-scc\">\n                                        <rect key=\"frame\" x=\"175\" y=\"0.0\" width=\"44\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"F\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"10\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Wko-BH-fZU\">\n                                        <rect key=\"frame\" x=\"219\" y=\"0.0\" width=\"43.5\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"G\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"10\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JVD-th-7ls\">\n                                        <rect key=\"frame\" x=\"262.5\" y=\"0.0\" width=\"44\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"H\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"10\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Zai-DV-5iu\">\n                                        <rect key=\"frame\" x=\"306.5\" y=\"0.0\" width=\"43.5\" height=\"35\"/>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"16\"/>\n                                        <color key=\"textColor\" name=\"Accent\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                </subviews>\n                            </stackView>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"zQx-oq-k13\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"vBk-IJ-bTm\" firstAttribute=\"top\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"bottom\" id=\"1aH-mf-bGP\"/>\n                            <constraint firstItem=\"PNf-Zj-C2a\" firstAttribute=\"centerY\" secondItem=\"uqf-IK-afK\" secondAttribute=\"centerY\" id=\"3xL-d8-m1h\"/>\n                            <constraint firstItem=\"PNf-Zj-C2a\" firstAttribute=\"top\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"top\" id=\"6ot-S9-3IV\"/>\n                            <constraint firstItem=\"fNc-VK-RLG\" firstAttribute=\"centerX\" secondItem=\"uqf-IK-afK\" secondAttribute=\"centerX\" id=\"A2Z-4d-cVG\"/>\n                            <constraint firstItem=\"PNf-Zj-C2a\" firstAttribute=\"width\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"height\" multiplier=\"1:10\" id=\"CP5-0U-klj\"/>\n                            <constraint firstItem=\"fNc-VK-RLG\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"zQx-oq-k13\" secondAttribute=\"top\" constant=\"100\" id=\"Clo-HA-HT8\"/>\n                            <constraint firstItem=\"zQx-oq-k13\" firstAttribute=\"bottom\" secondItem=\"29G-Ib-F4a\" secondAttribute=\"bottom\" id=\"E4U-nc-CED\"/>\n                            <constraint firstItem=\"fNc-VK-RLG\" firstAttribute=\"top\" secondItem=\"YoN-k0-dAd\" secondAttribute=\"bottom\" id=\"EGY-AL-UxU\"/>\n                            <constraint firstItem=\"fNc-VK-RLG\" firstAttribute=\"leading\" secondItem=\"PNf-Zj-C2a\" secondAttribute=\"trailing\" id=\"JCS-Ww-5kL\"/>\n                            <constraint firstItem=\"eVg-aQ-jkQ\" firstAttribute=\"top\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"top\" id=\"LbI-rM-3Gd\"/>\n                            <constraint firstItem=\"29G-Ib-F4a\" firstAttribute=\"centerX\" secondItem=\"uqf-IK-afK\" secondAttribute=\"centerX\" id=\"OHV-61-LQA\"/>\n                            <constraint firstItem=\"eVg-aQ-jkQ\" firstAttribute=\"bottom\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"bottom\" id=\"UOj-NN-6TS\"/>\n                            <constraint firstItem=\"YoN-k0-dAd\" firstAttribute=\"leading\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"leading\" id=\"ZZo-1f-uPA\"/>\n                            <constraint firstItem=\"vBk-IJ-bTm\" firstAttribute=\"height\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"height\" multiplier=\"1:10\" id=\"aea-XY-EOV\"/>\n                            <constraint firstItem=\"YoN-k0-dAd\" firstAttribute=\"height\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"height\" multiplier=\"1:10\" id=\"b5E-rn-9pl\"/>\n                            <constraint firstItem=\"vBk-IJ-bTm\" firstAttribute=\"leading\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"leading\" id=\"cvR-gL-6aA\"/>\n                            <constraint firstItem=\"29G-Ib-F4a\" firstAttribute=\"top\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"bottom\" id=\"eRo-fo-mdQ\"/>\n                            <constraint firstItem=\"fNc-VK-RLG\" firstAttribute=\"centerY\" secondItem=\"uqf-IK-afK\" secondAttribute=\"centerY\" id=\"kLd-TY-clv\"/>\n                            <constraint firstItem=\"YoN-k0-dAd\" firstAttribute=\"centerX\" secondItem=\"uqf-IK-afK\" secondAttribute=\"centerX\" id=\"oeV-jK-Yrs\"/>\n                            <constraint firstItem=\"fNc-VK-RLG\" firstAttribute=\"leading\" secondItem=\"uqf-IK-afK\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"qih-6e-Uhp\"/>\n                            <constraint firstItem=\"eVg-aQ-jkQ\" firstAttribute=\"width\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"height\" multiplier=\"1:10\" id=\"v9H-kv-H0p\"/>\n                            <constraint firstItem=\"eVg-aQ-jkQ\" firstAttribute=\"leading\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"trailing\" id=\"ykN-nP-cWK\"/>\n                            <constraint firstItem=\"vBk-IJ-bTm\" firstAttribute=\"trailing\" secondItem=\"fNc-VK-RLG\" secondAttribute=\"trailing\" id=\"zvZ-O8-SIF\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"Chess\" id=\"cbR-mQ-9BE\"/>\n                    <navigationItem key=\"navigationItem\" title=\"Chess\" id=\"u5c-ij-Ec7\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"ed0-XI-re0\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"sor-ud-rWl\" id=\"4yt-EQ-87a\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"fNc-VK-RLG\" id=\"oJ6-qi-blx\"/>\n                        <outlet property=\"playerLabel\" destination=\"29G-Ib-F4a\" id=\"nVz-ee-wwk\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"raU-tj-Kuv\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"434.78260869565219\" y=\"-179.46428571428569\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Dots.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"15400\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"73h-08-Ddz\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"15404\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Dots-->\n        <scene sceneID=\"qFd-mO-Ood\">\n            <objects>\n                <viewController storyboardIdentifier=\"DotsBoard\" id=\"73h-08-Ddz\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"89a-iI-zde\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Tsk-X6-sFo\" customClass=\"DotsBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"Tsk-X6-sFo\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"1an-LR-GyH\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" name=\"Text\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" red=\"0.94695395609999999\" green=\"0.84503667790000003\" blue=\"0.024519923060000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"0.93731299869999996\" green=\"0.095529291789999998\" blue=\"0.28322202860000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"padding\">\n                                        <real key=\"value\" value=\"5\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"Tsk-X6-sFo\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"rde-uj-INA\" secondAttribute=\"top\" constant=\"100\" id=\"5oj-kG-mDN\"/>\n                            <constraint firstItem=\"Tsk-X6-sFo\" firstAttribute=\"centerX\" secondItem=\"89a-iI-zde\" secondAttribute=\"centerX\" id=\"VKK-c5-HHU\"/>\n                            <constraint firstItem=\"Tsk-X6-sFo\" firstAttribute=\"centerY\" secondItem=\"89a-iI-zde\" secondAttribute=\"centerY\" id=\"jPL-LP-VW1\"/>\n                            <constraint firstItem=\"Tsk-X6-sFo\" firstAttribute=\"leading\" secondItem=\"rde-uj-INA\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"ma8-n1-g31\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"rde-uj-INA\"/>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Dots\" id=\"wCC-Zx-tqT\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"ydy-WV-dJs\"/>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"Tsk-X6-sFo\" id=\"Vhs-3W-GM9\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"EVK-H5-fQo\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2342\" y=\"499\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Background\">\n            <color red=\"0.20000000000000001\" green=\"0.20000000000000001\" blue=\"0.20000000000000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Doubles.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"8fi-JS-szg\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Doubles-->\n        <scene sceneID=\"KCI-nk-Ege\">\n            <objects>\n                <viewController storyboardIdentifier=\"DoublesBoard\" id=\"8fi-JS-szg\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"3UK-45-SgQ\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"goq-Uz-3Bk\" customClass=\"DoublesBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"goq-Uz-3Bk\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"ycU-7e-cyl\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" name=\"Accent\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" white=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"padding\">\n                                        <real key=\"value\" value=\"4\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"selectedColor\">\n                                        <color key=\"value\" white=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"MaO-Gi-W4f\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <gestureRecognizers/>\n                        <constraints>\n                            <constraint firstItem=\"goq-Uz-3Bk\" firstAttribute=\"centerY\" secondItem=\"3UK-45-SgQ\" secondAttribute=\"centerY\" id=\"1kT-vQ-8a0\"/>\n                            <constraint firstItem=\"goq-Uz-3Bk\" firstAttribute=\"leading\" secondItem=\"MaO-Gi-W4f\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"L4S-UJ-Klq\"/>\n                            <constraint firstItem=\"goq-Uz-3Bk\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"MaO-Gi-W4f\" secondAttribute=\"top\" constant=\"100\" id=\"dzx-CT-fMS\"/>\n                            <constraint firstItem=\"goq-Uz-3Bk\" firstAttribute=\"centerX\" secondItem=\"3UK-45-SgQ\" secondAttribute=\"centerX\" id=\"te6-Ca-WnI\"/>\n                        </constraints>\n                        <connections>\n                            <outletCollection property=\"gestureRecognizers\" destination=\"YGk-Ko-wQl\" appends=\"YES\" id=\"mf1-rd-hmn\"/>\n                            <outletCollection property=\"gestureRecognizers\" destination=\"kT0-56-i1H\" appends=\"YES\" id=\"Nd1-Kf-zg6\"/>\n                            <outletCollection property=\"gestureRecognizers\" destination=\"JCE-Xf-Z5I\" appends=\"YES\" id=\"XMO-mq-Nkm\"/>\n                            <outletCollection property=\"gestureRecognizers\" destination=\"BO9-4F-Qff\" appends=\"YES\" id=\"VHt-ls-ju9\"/>\n                        </connections>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Doubles\" id=\"Djd-Ra-YLL\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"E4t-tO-PLt\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"8fi-JS-szg\" id=\"nCZ-Le-v2k\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"goq-Uz-3Bk\" id=\"tey-d4-wf2\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"6hH-8H-kCF\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n                <swipeGestureRecognizer direction=\"up\" id=\"YGk-Ko-wQl\">\n                    <connections>\n                        <action selector=\"swipe:\" destination=\"8fi-JS-szg\" id=\"wXT-54-zYb\"/>\n                    </connections>\n                </swipeGestureRecognizer>\n                <swipeGestureRecognizer direction=\"down\" id=\"kT0-56-i1H\">\n                    <connections>\n                        <action selector=\"swipe:\" destination=\"8fi-JS-szg\" id=\"Wzv-LL-jqw\"/>\n                    </connections>\n                </swipeGestureRecognizer>\n                <swipeGestureRecognizer direction=\"left\" id=\"JCE-Xf-Z5I\">\n                    <connections>\n                        <action selector=\"swipe:\" destination=\"8fi-JS-szg\" id=\"VKX-q5-qoV\"/>\n                    </connections>\n                </swipeGestureRecognizer>\n                <swipeGestureRecognizer direction=\"right\" id=\"BO9-4F-Qff\">\n                    <connections>\n                        <action selector=\"swipe:\" destination=\"8fi-JS-szg\" id=\"G8H-7I-p3s\"/>\n                    </connections>\n                </swipeGestureRecognizer>\n            </objects>\n            <point key=\"canvasLocation\" x=\"3092\" y=\"499\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Four.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"15400\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"bcE-Pw-9ZF\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"15404\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Four-->\n        <scene sceneID=\"dS2-62-l9v\">\n            <objects>\n                <viewController storyboardIdentifier=\"FourBoard\" id=\"bcE-Pw-9ZF\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ts2-yf-Ppd\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Player 1\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"R8W-4p-yRu\">\n                                <rect key=\"frame\" x=\"168.5\" y=\"623\" width=\"77\" height=\"239\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"20\"/>\n                                <color key=\"textColor\" name=\"Text\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"75g-lc-Eid\" customClass=\"FourBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"75g-lc-Eid\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"ouC-Fu-OCY\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" red=\"0.034735164870000002\" green=\"0.63069970180000001\" blue=\"0.82797604800000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" red=\"0.89247423540000004\" green=\"0.0\" blue=\"0.22153401480000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"0.94695395609999999\" green=\"0.84503667790000003\" blue=\"0.024519923060000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"padding\">\n                                        <real key=\"value\" value=\"10\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"selectedColor\">\n                                        <color key=\"value\" name=\"Accent\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"75g-lc-Eid\" firstAttribute=\"leading\" secondItem=\"zrc-kr-1Ls\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"0gS-Gi-TC7\"/>\n                            <constraint firstItem=\"R8W-4p-yRu\" firstAttribute=\"centerX\" secondItem=\"Ts2-yf-Ppd\" secondAttribute=\"centerX\" id=\"0od-Bh-kv2\"/>\n                            <constraint firstItem=\"75g-lc-Eid\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"zrc-kr-1Ls\" secondAttribute=\"top\" constant=\"100\" id=\"3K7-P5-dHY\"/>\n                            <constraint firstItem=\"zrc-kr-1Ls\" firstAttribute=\"bottom\" secondItem=\"R8W-4p-yRu\" secondAttribute=\"bottom\" id=\"PFG-Qu-1OV\"/>\n                            <constraint firstItem=\"R8W-4p-yRu\" firstAttribute=\"top\" secondItem=\"75g-lc-Eid\" secondAttribute=\"bottom\" id=\"Wcj-f9-0Cs\"/>\n                            <constraint firstItem=\"75g-lc-Eid\" firstAttribute=\"centerY\" secondItem=\"Ts2-yf-Ppd\" secondAttribute=\"centerY\" id=\"maV-Ga-9YL\"/>\n                            <constraint firstItem=\"75g-lc-Eid\" firstAttribute=\"centerX\" secondItem=\"Ts2-yf-Ppd\" secondAttribute=\"centerX\" id=\"zGV-Rv-ELS\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"zrc-kr-1Ls\"/>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Four\" id=\"l1Q-dK-9Iy\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"d02-JM-yAA\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"bcE-Pw-9ZF\" id=\"gyW-jC-TO7\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"75g-lc-Eid\" id=\"ULW-P3-yRe\"/>\n                        <outlet property=\"playerLabel\" destination=\"R8W-4p-yRu\" id=\"QJc-Co-HXA\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"oqA-Ke-PMe\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1598\" y=\"1209\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.20000000000000001\" green=\"0.20000000000000001\" blue=\"0.20000000000000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Go.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"3PA-gK-8ew\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Go-->\n        <scene sceneID=\"elo-E8-7ZV\">\n            <objects>\n                <viewController storyboardIdentifier=\"GoBoard\" id=\"3PA-gK-8ew\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"l2O-q6-w3U\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"rLQ-nH-D6e\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"sjA-qr-eX3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"RTW-WR-TTh\" customClass=\"GoBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"RTW-WR-TTh\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"eVi-Us-Fti\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" red=\"0.62960069439999999\" green=\"0.54955096489999999\" blue=\"0.38405642359999997\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" red=\"0.15056303139999999\" green=\"0.15055377780000001\" blue=\"0.15055915710000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"padding\">\n                                        <real key=\"value\" value=\"20\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Jn7-zf-u4A\">\n                                <rect key=\"frame\" x=\"147\" y=\"623\" width=\"120\" height=\"239\"/>\n                                <subviews>\n                                    <stackView opaque=\"NO\" contentMode=\"scaleToFill\" axis=\"vertical\" alignment=\"center\" spacing=\"16\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vTu-xE-jus\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"79.5\" width=\"120\" height=\"80\"/>\n                                        <subviews>\n                                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"system\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"v9l-CR-0Vv\" customClass=\"SimpleButton\" customModule=\"Games\" customModuleProvider=\"target\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"120\" height=\"40\"/>\n                                                <color key=\"backgroundColor\" name=\"Accent\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"40\" id=\"DDd-ig-qQh\"/>\n                                                    <constraint firstAttribute=\"width\" constant=\"120\" id=\"VEk-vj-5TQ\"/>\n                                                </constraints>\n                                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"14\"/>\n                                                <color key=\"tintColor\" name=\"Text\"/>\n                                                <inset key=\"imageEdgeInsets\" minX=\"0.0\" minY=\"0.0\" maxX=\"2.2250738585072014e-308\" maxY=\"0.0\"/>\n                                                <state key=\"normal\" title=\"PASS TURN\"/>\n                                                <userDefinedRuntimeAttributes>\n                                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"cornerRadius\">\n                                                        <real key=\"value\" value=\"20\"/>\n                                                    </userDefinedRuntimeAttribute>\n                                                </userDefinedRuntimeAttributes>\n                                                <connections>\n                                                    <action selector=\"pass\" destination=\"RTW-WR-TTh\" eventType=\"touchUpInside\" id=\"ESc-gj-pIA\"/>\n                                                </connections>\n                                            </button>\n                                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Player 1\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"jOe-tr-PDk\">\n                                                <rect key=\"frame\" x=\"22\" y=\"56\" width=\"76.5\" height=\"24\"/>\n                                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"20\"/>\n                                                <color key=\"textColor\" name=\"Text\"/>\n                                                <nil key=\"highlightedColor\"/>\n                                            </label>\n                                        </subviews>\n                                    </stackView>\n                                </subviews>\n                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                <constraints>\n                                    <constraint firstItem=\"vTu-xE-jus\" firstAttribute=\"centerY\" secondItem=\"Jn7-zf-u4A\" secondAttribute=\"centerY\" id=\"4Ha-ze-8a9\"/>\n                                    <constraint firstItem=\"vTu-xE-jus\" firstAttribute=\"leading\" secondItem=\"Jn7-zf-u4A\" secondAttribute=\"leading\" id=\"HYX-LG-KGK\"/>\n                                    <constraint firstAttribute=\"trailing\" secondItem=\"vTu-xE-jus\" secondAttribute=\"trailing\" id=\"Szq-4M-d5p\"/>\n                                </constraints>\n                            </view>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"z64-pZ-zZm\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"Jn7-zf-u4A\" firstAttribute=\"top\" secondItem=\"RTW-WR-TTh\" secondAttribute=\"bottom\" id=\"0ow-xM-MAd\"/>\n                            <constraint firstItem=\"RTW-WR-TTh\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"z64-pZ-zZm\" secondAttribute=\"top\" constant=\"100\" id=\"1OP-EM-oEW\"/>\n                            <constraint firstItem=\"RTW-WR-TTh\" firstAttribute=\"centerY\" secondItem=\"sjA-qr-eX3\" secondAttribute=\"centerY\" id=\"Eoe-6b-FJD\"/>\n                            <constraint firstItem=\"Jn7-zf-u4A\" firstAttribute=\"centerX\" secondItem=\"sjA-qr-eX3\" secondAttribute=\"centerX\" id=\"M5c-qI-sbt\"/>\n                            <constraint firstItem=\"z64-pZ-zZm\" firstAttribute=\"bottom\" secondItem=\"Jn7-zf-u4A\" secondAttribute=\"bottom\" id=\"lkd-80-Xkz\"/>\n                            <constraint firstItem=\"RTW-WR-TTh\" firstAttribute=\"centerX\" secondItem=\"sjA-qr-eX3\" secondAttribute=\"centerX\" id=\"p19-uJ-Qra\"/>\n                            <constraint firstItem=\"RTW-WR-TTh\" firstAttribute=\"leading\" secondItem=\"sjA-qr-eX3\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"ucL-vj-eK5\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"Chess\" id=\"DPE-bD-JQh\"/>\n                    <navigationItem key=\"navigationItem\" title=\"Go\" id=\"NNU-um-tuZ\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"9Jn-Id-LgC\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"3PA-gK-8ew\" id=\"XkI-yX-Sbv\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"RTW-WR-TTh\" id=\"SI1-mr-sa7\"/>\n                        <outlet property=\"playerLabel\" destination=\"jOe-tr-PDk\" id=\"vzz-zW-HCK\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"XEf-vH-uQr\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1598\" y=\"-214\"/>\n        </scene>\n    </scenes>\n    <designables>\n        <designable name=\"v9l-CR-0Vv\">\n            <size key=\"intrinsicContentSize\" width=\"83\" height=\"29\"/>\n        </designable>\n    </designables>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Mancala.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"15400\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"zbv-Pf-w7L\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"15404\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Mancala-->\n        <scene sceneID=\"eEU-ug-lM7\">\n            <objects>\n                <viewController storyboardIdentifier=\"MancalaBoard\" id=\"zbv-Pf-w7L\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"NtZ-u6-pZ9\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ood-ZB-1CJ\" customClass=\"MancalaBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"ood-ZB-1CJ\" secondAttribute=\"height\" id=\"RK8-RT-WRw\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" red=\"0.56804770609999999\" green=\"0.51371467709999996\" blue=\"0.40776472609999997\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" red=\"0.79130651600000002\" green=\"0.71561907020000004\" blue=\"0.56802779280000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"padding\">\n                                        <real key=\"value\" value=\"10\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Game Logic : Coming Soon\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"tYf-sW-J4Q\">\n                                <rect key=\"frame\" x=\"77\" y=\"623\" width=\"260\" height=\"239\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"20\"/>\n                                <color key=\"textColor\" name=\"Accent\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"ood-ZB-1CJ\" firstAttribute=\"centerY\" secondItem=\"NtZ-u6-pZ9\" secondAttribute=\"centerY\" id=\"5ZB-D6-MBm\"/>\n                            <constraint firstItem=\"ood-ZB-1CJ\" firstAttribute=\"centerX\" secondItem=\"NtZ-u6-pZ9\" secondAttribute=\"centerX\" id=\"fpL-75-Y4d\"/>\n                            <constraint firstItem=\"YNE-rl-PvD\" firstAttribute=\"bottom\" secondItem=\"tYf-sW-J4Q\" secondAttribute=\"bottom\" id=\"hQv-jz-jd8\"/>\n                            <constraint firstItem=\"tYf-sW-J4Q\" firstAttribute=\"top\" secondItem=\"ood-ZB-1CJ\" secondAttribute=\"bottom\" id=\"meh-gi-M2V\"/>\n                            <constraint firstItem=\"ood-ZB-1CJ\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"YNE-rl-PvD\" secondAttribute=\"top\" constant=\"100\" id=\"o3M-d0-Kvc\"/>\n                            <constraint firstItem=\"tYf-sW-J4Q\" firstAttribute=\"centerX\" secondItem=\"NtZ-u6-pZ9\" secondAttribute=\"centerX\" id=\"qsd-lG-4je\"/>\n                            <constraint firstItem=\"ood-ZB-1CJ\" firstAttribute=\"leading\" secondItem=\"YNE-rl-PvD\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"wTr-c4-1F0\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"YNE-rl-PvD\"/>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Mancala\" id=\"mbK-rl-UqZ\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"BnC-ry-PgV\"/>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"sP8-D2-5Nj\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2342\" y=\"1209\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.20000000000000001\" green=\"0.20000000000000001\" blue=\"0.20000000000000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Memory.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"Jm4-aj-E7J\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"System colors in document resources\" minToolsVersion=\"11.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Memory-->\n        <scene sceneID=\"k4U-Zv-wpb\">\n            <objects>\n                <viewController storyboardIdentifier=\"MemoryBoard\" id=\"Jm4-aj-E7J\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"4e6-Vu-bat\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"b0t-xB-3Q4\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"m1p-01-MmL\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"gVK-vF-sek\" customClass=\"MemoryBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"gVK-vF-sek\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"Dh0-EG-4x8\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" systemColor=\"systemBlueColor\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" name=\"Text\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"f7x-Sn-jz3\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"gVK-vF-sek\" firstAttribute=\"centerX\" secondItem=\"m1p-01-MmL\" secondAttribute=\"centerX\" id=\"DNI-f4-1gQ\"/>\n                            <constraint firstItem=\"gVK-vF-sek\" firstAttribute=\"centerY\" secondItem=\"m1p-01-MmL\" secondAttribute=\"centerY\" id=\"Jrn-9F-MFu\"/>\n                            <constraint firstItem=\"gVK-vF-sek\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"f7x-Sn-jz3\" secondAttribute=\"top\" constant=\"100\" id=\"Tye-ql-j8r\"/>\n                            <constraint firstItem=\"gVK-vF-sek\" firstAttribute=\"leading\" secondItem=\"m1p-01-MmL\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"fOD-XF-mVo\"/>\n                        </constraints>\n                    </view>\n                    <toolbarItems/>\n                    <navigationItem key=\"navigationItem\" title=\"Memory\" id=\"j8d-Uh-Olr\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"aYb-aW-Kck\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"Jm4-aj-E7J\" id=\"bYv-BK-l8G\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"gVK-vF-sek\" id=\"j98-Ar-6gQ\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"yQz-wn-de5\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"137\" y=\"499\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <systemColor name=\"systemBlueColor\">\n            <color red=\"0.0\" green=\"0.47843137254901963\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Pegs.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"15400\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"MqC-OW-gaC\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"15404\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Pegs-->\n        <scene sceneID=\"yaN-31-FbU\">\n            <objects>\n                <viewController storyboardIdentifier=\"PegsBoard\" id=\"MqC-OW-gaC\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"dZD-uZ-NTX\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"mCn-jf-gTl\" customClass=\"PegsBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"mCn-jf-gTl\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"kMB-BB-Fuu\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" name=\"Accent\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" name=\"Text\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"padding\">\n                                        <real key=\"value\" value=\"40\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"selectedColor\">\n                                        <color key=\"value\" systemColor=\"systemPinkColor\" red=\"1\" green=\"0.1764705882\" blue=\"0.33333333329999998\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" name=\"Text\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"highlightColor\">\n                                        <color key=\"value\" systemColor=\"systemPinkColor\" red=\"1\" green=\"0.1764705882\" blue=\"0.33333333329999998\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"mCn-jf-gTl\" firstAttribute=\"centerX\" secondItem=\"dZD-uZ-NTX\" secondAttribute=\"centerX\" id=\"49v-5e-GIy\"/>\n                            <constraint firstItem=\"mCn-jf-gTl\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"vrd-2Z-JtH\" secondAttribute=\"top\" constant=\"100\" id=\"c2Z-S5-KHV\"/>\n                            <constraint firstItem=\"mCn-jf-gTl\" firstAttribute=\"leading\" secondItem=\"vrd-2Z-JtH\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"k6b-m9-WOm\"/>\n                            <constraint firstItem=\"mCn-jf-gTl\" firstAttribute=\"centerY\" secondItem=\"dZD-uZ-NTX\" secondAttribute=\"centerY\" id=\"qfg-vI-8g0\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"vrd-2Z-JtH\"/>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Pegs\" id=\"0U3-Ix-0cQ\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"5qo-w5-bCK\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"MqC-OW-gaC\" id=\"FbN-wf-YZj\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"mCn-jf-gTl\" id=\"W62-Jm-5gt\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"crL-v9-jth\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"3092\" y=\"-215\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.20000000000000001\" green=\"0.20000000000000001\" blue=\"0.20000000000000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Sudoku.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"60s-hz-M6U\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"System colors in document resources\" minToolsVersion=\"11.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Sudoku-->\n        <scene sceneID=\"VLT-Wa-ZyG\">\n            <objects>\n                <viewController storyboardIdentifier=\"SudokuBoard\" id=\"60s-hz-M6U\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"j3Y-qH-iJ2\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"Xbu-bd-ocO\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"zkz-fa-ZXR\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QjE-ob-kEu\" customClass=\"SudokuBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"QjE-ob-kEu\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"Cal-oD-gad\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Text\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"highlightColor\">\n                                        <color key=\"value\" systemColor=\"systemPurpleColor\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ugP-Zm-s9I\">\n                                <rect key=\"frame\" x=\"32\" y=\"623\" width=\"350\" height=\"239\"/>\n                                <subviews>\n                                    <segmentedControl opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"top\" segmentControlStyle=\"plain\" selectedSegmentIndex=\"0\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hCF-Vv-Tie\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"104\" width=\"350\" height=\"32\"/>\n                                        <segments>\n                                            <segment title=\"1\"/>\n                                            <segment title=\"2\"/>\n                                            <segment title=\"3\"/>\n                                            <segment title=\"4\"/>\n                                            <segment title=\"5\"/>\n                                            <segment title=\"6\"/>\n                                            <segment title=\"7\"/>\n                                            <segment title=\"8\"/>\n                                            <segment title=\"9\"/>\n                                        </segments>\n                                        <color key=\"tintColor\" name=\"Text\"/>\n                                        <connections>\n                                            <action selector=\"chooseSudokuNymberWithSender:\" destination=\"60s-hz-M6U\" eventType=\"valueChanged\" id=\"zKQ-PQ-q0C\"/>\n                                        </connections>\n                                    </segmentedControl>\n                                </subviews>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstItem=\"hCF-Vv-Tie\" firstAttribute=\"leading\" secondItem=\"ugP-Zm-s9I\" secondAttribute=\"leading\" id=\"H0z-yd-ueY\"/>\n                                    <constraint firstAttribute=\"trailing\" secondItem=\"hCF-Vv-Tie\" secondAttribute=\"trailing\" id=\"MzC-sH-I7l\"/>\n                                    <constraint firstItem=\"hCF-Vv-Tie\" firstAttribute=\"centerY\" secondItem=\"ugP-Zm-s9I\" secondAttribute=\"centerY\" id=\"Zym-YF-pIG\"/>\n                                    <constraint firstItem=\"hCF-Vv-Tie\" firstAttribute=\"centerX\" secondItem=\"ugP-Zm-s9I\" secondAttribute=\"centerX\" id=\"g4A-6F-8bi\"/>\n                                </constraints>\n                            </view>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6hJ-Q7-CkE\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"ugP-Zm-s9I\" firstAttribute=\"trailing\" secondItem=\"QjE-ob-kEu\" secondAttribute=\"trailing\" id=\"6Kz-S5-7U1\"/>\n                            <constraint firstItem=\"QjE-ob-kEu\" firstAttribute=\"leading\" secondItem=\"zkz-fa-ZXR\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"Dr9-cE-xDH\"/>\n                            <constraint firstItem=\"ugP-Zm-s9I\" firstAttribute=\"leading\" secondItem=\"QjE-ob-kEu\" secondAttribute=\"leading\" id=\"DuM-C4-3oY\"/>\n                            <constraint firstItem=\"6hJ-Q7-CkE\" firstAttribute=\"bottom\" secondItem=\"ugP-Zm-s9I\" secondAttribute=\"bottom\" id=\"eAE-pK-MOF\"/>\n                            <constraint firstItem=\"QjE-ob-kEu\" firstAttribute=\"centerY\" secondItem=\"zkz-fa-ZXR\" secondAttribute=\"centerY\" id=\"gcr-fR-DbD\"/>\n                            <constraint firstItem=\"ugP-Zm-s9I\" firstAttribute=\"top\" secondItem=\"QjE-ob-kEu\" secondAttribute=\"bottom\" id=\"joM-yD-eQd\"/>\n                            <constraint firstItem=\"QjE-ob-kEu\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"6hJ-Q7-CkE\" secondAttribute=\"top\" constant=\"100\" id=\"m1u-2M-xPk\"/>\n                            <constraint firstItem=\"QjE-ob-kEu\" firstAttribute=\"centerX\" secondItem=\"zkz-fa-ZXR\" secondAttribute=\"centerX\" id=\"td5-5N-3Fn\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"Sudoku\" id=\"Zb9-5T-cj6\"/>\n                    <navigationItem key=\"navigationItem\" title=\"Sudoku\" id=\"zbo-R8-AJG\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"i8F-8f-LvE\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"60s-hz-M6U\" id=\"D7d-va-Vzn\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"QjE-ob-kEu\" id=\"eJL-oc-cyn\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"Pkr-Al-xEY\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1598\" y=\"499\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <systemColor name=\"systemPurpleColor\">\n            <color red=\"0.68627450980392157\" green=\"0.32156862745098042\" blue=\"0.87058823529411766\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/TicTacToe.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"Qfk-HP-Trs\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Tic Tac Toe-->\n        <scene sceneID=\"e02-cv-qYh\">\n            <objects>\n                <viewController storyboardIdentifier=\"Tic Tac ToeBoard\" id=\"Qfk-HP-Trs\" customClass=\"BoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"QuX-oX-8Co\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"v1S-Tc-n2L\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"cgy-Wv-eBk\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Player 1\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Uyg-Fw-EFW\">\n                                <rect key=\"frame\" x=\"168.5\" y=\"623\" width=\"77\" height=\"239\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"20\"/>\n                                <color key=\"textColor\" name=\"Text\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"6MD-zm-yMA\" customClass=\"TicTacToeBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"6MD-zm-yMA\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"3dg-DQ-tjM\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" red=\"0.0\" green=\"1\" blue=\"0.8018556993\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"0.95299201359999997\" green=\"0.068853679230000006\" blue=\"0.20838344049999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" name=\"Text\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"padding\">\n                                        <real key=\"value\" value=\"20\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"xjE-Kh-mtj\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"Uyg-Fw-EFW\" firstAttribute=\"top\" secondItem=\"6MD-zm-yMA\" secondAttribute=\"bottom\" id=\"2jm-Ky-OHU\"/>\n                            <constraint firstItem=\"Uyg-Fw-EFW\" firstAttribute=\"centerX\" secondItem=\"cgy-Wv-eBk\" secondAttribute=\"centerX\" id=\"K0H-3v-DLL\"/>\n                            <constraint firstItem=\"6MD-zm-yMA\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"xjE-Kh-mtj\" secondAttribute=\"top\" constant=\"100\" id=\"Kdh-kp-iZK\"/>\n                            <constraint firstItem=\"6MD-zm-yMA\" firstAttribute=\"centerX\" secondItem=\"cgy-Wv-eBk\" secondAttribute=\"centerX\" id=\"chh-4H-UgC\"/>\n                            <constraint firstItem=\"6MD-zm-yMA\" firstAttribute=\"centerY\" secondItem=\"cgy-Wv-eBk\" secondAttribute=\"centerY\" id=\"eUp-A3-0ww\"/>\n                            <constraint firstItem=\"6MD-zm-yMA\" firstAttribute=\"leading\" secondItem=\"cgy-Wv-eBk\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"i5g-IV-xe8\"/>\n                            <constraint firstItem=\"xjE-Kh-mtj\" firstAttribute=\"bottom\" secondItem=\"Uyg-Fw-EFW\" secondAttribute=\"bottom\" id=\"t7k-0y-vci\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"TicTacTie\" id=\"K1H-2h-EwI\"/>\n                    <navigationItem key=\"navigationItem\" title=\"Tic Tac Toe\" id=\"VYs-xD-Z0s\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"mz6-Hd-fES\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"Qfk-HP-Trs\" id=\"ZSl-AD-ku1\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"6MD-zm-yMA\" id=\"BrL-xU-hgH\"/>\n                        <outlet property=\"playerLabel\" destination=\"Uyg-Fw-EFW\" id=\"Fse-4j-b9t\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"SrA-3c-o3r\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"137\" y=\"1210\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/BoardController/Boards/Words.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"19162\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"KCu-nr-Ye3\">\n    <device id=\"retina6_1\" orientation=\"portrait\" appearance=\"dark\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"19144\"/>\n        <capability name=\"Named colors\" minToolsVersion=\"9.0\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"System colors in document resources\" minToolsVersion=\"11.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Words-->\n        <scene sceneID=\"n0v-Uf-pna\">\n            <objects>\n                <viewController storyboardIdentifier=\"WordsBoard\" id=\"KCu-nr-Ye3\" customClass=\"WordsBoardViewController\" customModule=\"Games\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"D8i-qi-0F5\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"414\" height=\"896\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"WGD-TC-4rO\" customClass=\"WordsBoardView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                <rect key=\"frame\" x=\"32\" y=\"273\" width=\"350\" height=\"350\"/>\n                                <color key=\"backgroundColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"WGD-TC-4rO\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"jVu-3J-7Ym\"/>\n                                </constraints>\n                                <userDefinedRuntimeAttributes>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"bgColor\">\n                                        <color key=\"value\" name=\"Accent\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"fgColor\">\n                                        <color key=\"value\" name=\"Background\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player1Color\">\n                                        <color key=\"value\" white=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"player2Color\">\n                                        <color key=\"value\" red=\"0.92222222220000005\" green=\"0.87791424549999997\" blue=\"0.7799662423\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"selectedColor\">\n                                        <color key=\"value\" systemColor=\"systemBrownColor\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"color\" keyPath=\"highlightColor\">\n                                        <color key=\"value\" white=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    </userDefinedRuntimeAttribute>\n                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"padding\">\n                                        <real key=\"value\" value=\"2\"/>\n                                    </userDefinedRuntimeAttribute>\n                                </userDefinedRuntimeAttributes>\n                            </view>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"bKH-DY-Ycx\">\n                                <rect key=\"frame\" x=\"32\" y=\"623\" width=\"350\" height=\"239\"/>\n                                <subviews>\n                                    <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fVv-tA-H7R\" customClass=\"SimpleView\" customModule=\"Games\" customModuleProvider=\"target\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"63\" width=\"350\" height=\"53\"/>\n                                        <subviews>\n                                            <stackView opaque=\"NO\" contentMode=\"scaleToFill\" distribution=\"fillEqually\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"gWc-5Y-5Yp\">\n                                                <rect key=\"frame\" x=\"2\" y=\"2\" width=\"346\" height=\"49\"/>\n                                                <color key=\"backgroundColor\" name=\"Accent\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"width\" secondItem=\"gWc-5Y-5Yp\" secondAttribute=\"height\" multiplier=\"7:1\" id=\"0t1-om-cE9\"/>\n                                                </constraints>\n                                                <userDefinedRuntimeAttributes>\n                                                    <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                                        <integer key=\"value\" value=\"8\"/>\n                                                    </userDefinedRuntimeAttribute>\n                                                    <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                                                </userDefinedRuntimeAttributes>\n                                            </stackView>\n                                        </subviews>\n                                        <color key=\"backgroundColor\" name=\"Accent\"/>\n                                        <constraints>\n                                            <constraint firstAttribute=\"trailing\" secondItem=\"gWc-5Y-5Yp\" secondAttribute=\"trailing\" constant=\"2\" id=\"7LB-J5-l5u\"/>\n                                            <constraint firstAttribute=\"bottom\" secondItem=\"gWc-5Y-5Yp\" secondAttribute=\"bottom\" constant=\"2\" id=\"KNl-hk-NyM\"/>\n                                            <constraint firstItem=\"gWc-5Y-5Yp\" firstAttribute=\"leading\" secondItem=\"fVv-tA-H7R\" secondAttribute=\"leading\" constant=\"2\" id=\"UUi-xC-8s6\"/>\n                                            <constraint firstItem=\"gWc-5Y-5Yp\" firstAttribute=\"top\" secondItem=\"fVv-tA-H7R\" secondAttribute=\"top\" constant=\"2\" id=\"dIB-tG-sTC\"/>\n                                        </constraints>\n                                        <userDefinedRuntimeAttributes>\n                                            <userDefinedRuntimeAttribute type=\"number\" keyPath=\"cornerRadius\">\n                                                <real key=\"value\" value=\"6\"/>\n                                            </userDefinedRuntimeAttribute>\n                                        </userDefinedRuntimeAttributes>\n                                    </view>\n                                    <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"system\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"68V-d1-gKx\" customClass=\"SimpleButton\" customModule=\"Games\" customModuleProvider=\"target\">\n                                        <rect key=\"frame\" x=\"115\" y=\"136\" width=\"120\" height=\"40\"/>\n                                        <color key=\"backgroundColor\" name=\"Accent\"/>\n                                        <constraints>\n                                            <constraint firstAttribute=\"height\" constant=\"40\" id=\"JfY-Eb-30H\"/>\n                                            <constraint firstAttribute=\"width\" constant=\"120\" id=\"n5Z-B5-8rg\"/>\n                                        </constraints>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" weight=\"heavy\" pointSize=\"14\"/>\n                                        <color key=\"tintColor\" name=\"Text\"/>\n                                        <state key=\"normal\" title=\"GET TILES\"/>\n                                        <userDefinedRuntimeAttributes>\n                                            <userDefinedRuntimeAttribute type=\"number\" keyPath=\"cornerRadius\">\n                                                <real key=\"value\" value=\"20\"/>\n                                            </userDefinedRuntimeAttribute>\n                                        </userDefinedRuntimeAttributes>\n                                        <connections>\n                                            <action selector=\"fillRack\" destination=\"WGD-TC-4rO\" eventType=\"touchUpInside\" id=\"d4E-l8-8NN\"/>\n                                        </connections>\n                                    </button>\n                                </subviews>\n                                <color key=\"backgroundColor\" name=\"Background\"/>\n                                <constraints>\n                                    <constraint firstItem=\"68V-d1-gKx\" firstAttribute=\"top\" secondItem=\"fVv-tA-H7R\" secondAttribute=\"bottom\" constant=\"20\" id=\"0jA-aR-SYE\"/>\n                                    <constraint firstItem=\"fVv-tA-H7R\" firstAttribute=\"centerY\" secondItem=\"bKH-DY-Ycx\" secondAttribute=\"centerY\" constant=\"-30\" id=\"U83-Fl-XOg\"/>\n                                    <constraint firstAttribute=\"trailing\" secondItem=\"fVv-tA-H7R\" secondAttribute=\"trailing\" id=\"aaH-UF-KKu\"/>\n                                    <constraint firstItem=\"fVv-tA-H7R\" firstAttribute=\"leading\" secondItem=\"bKH-DY-Ycx\" secondAttribute=\"leading\" id=\"rib-1a-qCT\"/>\n                                    <constraint firstItem=\"68V-d1-gKx\" firstAttribute=\"centerX\" secondItem=\"bKH-DY-Ycx\" secondAttribute=\"centerX\" id=\"yZV-S6-68Q\"/>\n                                </constraints>\n                            </view>\n                        </subviews>\n                        <viewLayoutGuide key=\"safeArea\" id=\"wwL-SP-eR2\"/>\n                        <color key=\"backgroundColor\" name=\"Background\"/>\n                        <constraints>\n                            <constraint firstItem=\"bKH-DY-Ycx\" firstAttribute=\"leading\" secondItem=\"WGD-TC-4rO\" secondAttribute=\"leading\" id=\"3x0-a9-tDF\"/>\n                            <constraint firstItem=\"bKH-DY-Ycx\" firstAttribute=\"trailing\" secondItem=\"WGD-TC-4rO\" secondAttribute=\"trailing\" id=\"5be-jz-gwm\"/>\n                            <constraint firstItem=\"wwL-SP-eR2\" firstAttribute=\"bottom\" secondItem=\"bKH-DY-Ycx\" secondAttribute=\"bottom\" id=\"GRW-sL-S2c\"/>\n                            <constraint firstItem=\"WGD-TC-4rO\" firstAttribute=\"top\" relation=\"greaterThanOrEqual\" secondItem=\"wwL-SP-eR2\" secondAttribute=\"top\" constant=\"100\" id=\"Seh-Z7-XSc\"/>\n                            <constraint firstItem=\"bKH-DY-Ycx\" firstAttribute=\"top\" secondItem=\"WGD-TC-4rO\" secondAttribute=\"bottom\" id=\"e9q-L0-uG9\"/>\n                            <constraint firstItem=\"WGD-TC-4rO\" firstAttribute=\"centerX\" secondItem=\"D8i-qi-0F5\" secondAttribute=\"centerX\" id=\"eNv-vx-LDv\"/>\n                            <constraint firstItem=\"WGD-TC-4rO\" firstAttribute=\"leading\" secondItem=\"wwL-SP-eR2\" secondAttribute=\"leading\" priority=\"750\" constant=\"32\" id=\"fX1-n9-SRR\"/>\n                            <constraint firstItem=\"WGD-TC-4rO\" firstAttribute=\"centerY\" secondItem=\"D8i-qi-0F5\" secondAttribute=\"centerY\" id=\"ksA-A5-cHN\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Words\" id=\"RI4-kJ-FK3\">\n                        <barButtonItem key=\"rightBarButtonItem\" systemItem=\"refresh\" id=\"Rs4-3P-aba\">\n                            <connections>\n                                <action selector=\"resetBoardWithSender:\" destination=\"KCu-nr-Ye3\" id=\"zr6-jt-5El\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"boardView\" destination=\"WGD-TC-4rO\" id=\"Dh6-Ku-oNs\"/>\n                        <outlet property=\"rackHolder\" destination=\"gWc-5Y-5Yp\" id=\"7U1-gh-YmY\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"jm8-QK-kFq\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"2341.5999999999999\" y=\"-215.44227886056973\"/>\n        </scene>\n    </scenes>\n    <designables>\n        <designable name=\"68V-d1-gKx\">\n            <size key=\"intrinsicContentSize\" width=\"73\" height=\"29\"/>\n        </designable>\n    </designables>\n    <resources>\n        <namedColor name=\"Accent\">\n            <color red=\"0.80000000000000004\" green=\"0.80000000000000004\" blue=\"0.80000000000000004\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Background\">\n            <color red=\"0.93333333333333335\" green=\"0.93333333333333335\" blue=\"0.93333333333333335\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <namedColor name=\"Text\">\n            <color red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </namedColor>\n        <systemColor name=\"systemBrownColor\">\n            <color red=\"0.63529411764705879\" green=\"0.51764705882352946\" blue=\"0.36862745098039218\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n        </systemColor>\n    </resources>\n</document>\n"
  },
  {
    "path": "Games/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>Gameboard</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(MARKETING_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UIAppFonts</key>\n\t<array>\n\t\t<string>Apple Symbols.ttf</string>\n\t</array>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UIRequiresFullScreen</key>\n\t<true/>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "Games/MainViewController.swift",
    "content": "//\n//  MainViewController.swift\n//  Games\n//\n//  Created by Jo Albright on 4/20/18.\n//  Copyright © 2018 Jo Albright. All rights reserved.\n//\n\nimport UIKit\n\nclass MainViewController: UIViewController {\n\n    @IBOutlet weak var tableView: UITableView!\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        guard UIDevice.current.userInterfaceIdiom == .pad, let vc = Gameboard.BoardType.playable.first?.controller else { return }\n        \n        splitViewController?.showDetailViewController(vc, sender: nil)\n        tableView?.selectRow(at: IndexPath(row: 0, section: 0), animated: false, scrollPosition: .none)\n        \n    }\n\n}\n\nextension MainViewController: UITableViewDelegate, UITableViewDataSource {\n    \n    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {\n        \n        return Gameboard.BoardType.playable.count\n        \n    }\n    \n    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n        \n        guard let cell = tableView.dequeueReusableCell(withIdentifier: \"GameCell\", for: indexPath) as? GameCell else { fatalError() }\n        \n        let view = UIView()\n        view.backgroundColor = UIColor(white: 0.95, alpha: 1)\n        cell.selectedBackgroundView = view\n        cell.game = Gameboard.BoardType.playable[indexPath.item]\n        \n        return cell\n        \n    }\n    \n    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {\n        \n        let game = Gameboard.BoardType.playable[indexPath.item]\n        \n        guard let vc = game.controller else { return }\n        \n        splitViewController?.showDetailViewController(vc, sender: nil)\n        \n        guard UIDevice.current.userInterfaceIdiom != .pad else { return }\n        \n        tableView.deselectRow(at: indexPath, animated: true)\n        \n    }\n    \n}\n\nclass GameCell: UITableViewCell {\n    \n    var game: Gameboard.BoardType! {\n        \n        didSet {\n            \n            emblem.text = game.emblem\n            name.text = game.name\n            \n        }\n        \n    }\n    \n    @IBOutlet weak var emblem: UILabel!\n    @IBOutlet weak var name: UILabel!\n    \n}\n\n@IBDesignable class SimpleButton: UIButton {\n    \n    @IBInspectable var cornerRadius: CGFloat = 0\n    \n    override func draw(_ rect: CGRect) {\n        \n        layer.cornerRadius = cornerRadius\n        layer.masksToBounds = true\n        \n    }\n    \n}\n\n@IBDesignable class SimpleView: UIView {\n    \n    @IBInspectable var cornerRadius: CGFloat = 0\n    \n    override func draw(_ rect: CGRect) {\n        \n        layer.cornerRadius = cornerRadius\n        layer.masksToBounds = true\n        \n    }\n    \n}\n"
  },
  {
    "path": "Games.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t0E6C166E233B98B1003DE849 /* Bombsweeper.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C166D233B98B1003DE849 /* Bombsweeper.storyboard */; };\n\t\t0E6C1670233B98F3003DE849 /* Chess.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C166F233B98F3003DE849 /* Chess.storyboard */; };\n\t\t0E6C1672233B98FC003DE849 /* Checkers.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1671233B98FC003DE849 /* Checkers.storyboard */; };\n\t\t0E6C1674233B9AA0003DE849 /* Sudoku.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1673233B9AA0003DE849 /* Sudoku.storyboard */; };\n\t\t0E6C1676233B9AAD003DE849 /* Words.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1675233B9AAD003DE849 /* Words.storyboard */; };\n\t\t0E6C1678233B9AB7003DE849 /* TicTacToe.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1677233B9AB7003DE849 /* TicTacToe.storyboard */; };\n\t\t0E6C167A233B9ACB003DE849 /* Four.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1679233B9ACB003DE849 /* Four.storyboard */; };\n\t\t0E6C167C233B9E82003DE849 /* Mancala.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C167B233B9E82003DE849 /* Mancala.storyboard */; };\n\t\t0E6C167E233B9E8F003DE849 /* Dots.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C167D233B9E8F003DE849 /* Dots.storyboard */; };\n\t\t0E6C1680233B9EA0003DE849 /* Pegs.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C167F233B9EA0003DE849 /* Pegs.storyboard */; };\n\t\t0E6C1682233BA8B0003DE849 /* Go.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1681233BA8B0003DE849 /* Go.storyboard */; };\n\t\t0E6C1684233BA8C1003DE849 /* Memory.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1683233BA8C1003DE849 /* Memory.storyboard */; };\n\t\t0E6C1686233BA8D0003DE849 /* Doubles.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1685233BA8D0003DE849 /* Doubles.storyboard */; };\n\t\t0E6C1688233BA8E7003DE849 /* Backgammon.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6C1687233BA8E7003DE849 /* Backgammon.storyboard */; };\n\t\t0E96540923390BA40075BF13 /* Four.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540023390BA30075BF13 /* Four.swift */; };\n\t\t0E96540A23390BA40075BF13 /* Chess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540123390BA30075BF13 /* Chess.swift */; };\n\t\t0E96540B23390BA40075BF13 /* Dots.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540223390BA40075BF13 /* Dots.swift */; };\n\t\t0E96540C23390BA40075BF13 /* Backgammon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540323390BA40075BF13 /* Backgammon.swift */; };\n\t\t0E96540D23390BA40075BF13 /* Alquerque.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540423390BA40075BF13 /* Alquerque.swift */; };\n\t\t0E96540E23390BA40075BF13 /* Doubles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540523390BA40075BF13 /* Doubles.swift */; };\n\t\t0E96540F23390BA40075BF13 /* Bombsweeper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540623390BA40075BF13 /* Bombsweeper.swift */; };\n\t\t0E96541023390BA40075BF13 /* Go.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540723390BA40075BF13 /* Go.swift */; };\n\t\t0E96541123390BA40075BF13 /* Checkers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96540823390BA40075BF13 /* Checkers.swift */; };\n\t\t0E96541923390BFD0075BF13 /* Memory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96541223390BFC0075BF13 /* Memory.swift */; };\n\t\t0E96541A23390BFD0075BF13 /* Sudoku.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96541323390BFC0075BF13 /* Sudoku.swift */; };\n\t\t0E96541B23390BFD0075BF13 /* Mancala.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96541423390BFC0075BF13 /* Mancala.swift */; };\n\t\t0E96541C23390BFD0075BF13 /* Pegs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96541523390BFC0075BF13 /* Pegs.swift */; };\n\t\t0E96541D23390BFD0075BF13 /* TicTacToe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96541623390BFC0075BF13 /* TicTacToe.swift */; };\n\t\t0E96541E23390BFD0075BF13 /* Ludo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96541723390BFC0075BF13 /* Ludo.swift */; };\n\t\t0E96541F23390BFD0075BF13 /* Words.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96541823390BFC0075BF13 /* Words.swift */; };\n\t\t0E96542623390C0E0075BF13 /* Pilare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542023390C0E0075BF13 /* Pilare.swift */; };\n\t\t0E96542723390C0E0075BF13 /* Tetris.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542123390C0E0075BF13 /* Tetris.swift */; };\n\t\t0E96542823390C0E0075BF13 /* Trouble.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542223390C0E0075BF13 /* Trouble.swift */; };\n\t\t0E96542923390C0E0075BF13 /* Dominos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542323390C0E0075BF13 /* Dominos.swift */; };\n\t\t0E96542A23390C0E0075BF13 /* Majong.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542423390C0E0075BF13 /* Majong.swift */; };\n\t\t0E96542B23390C0E0075BF13 /* Battleship.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542523390C0E0075BF13 /* Battleship.swift */; };\n\t\t0E96543623390C2A0075BF13 /* DotsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542C23390C2A0075BF13 /* DotsView.swift */; };\n\t\t0E96543723390C2A0075BF13 /* WordsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542D23390C2A0075BF13 /* WordsView.swift */; };\n\t\t0E96543823390C2A0075BF13 /* FourView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542E23390C2A0075BF13 /* FourView.swift */; };\n\t\t0E96543923390C2A0075BF13 /* BackgammonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96542F23390C2A0075BF13 /* BackgammonView.swift */; };\n\t\t0E96543A23390C2A0075BF13 /* MancalaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96543023390C2A0075BF13 /* MancalaView.swift */; };\n\t\t0E96543B23390C2A0075BF13 /* GoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96543123390C2A0075BF13 /* GoView.swift */; };\n\t\t0E96543C23390C2A0075BF13 /* MatrixView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96543223390C2A0075BF13 /* MatrixView.swift */; };\n\t\t0E96543D23390C2A0075BF13 /* PegsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96543323390C2A0075BF13 /* PegsView.swift */; };\n\t\t0E96543E23390C2A0075BF13 /* SudokuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96543423390C2A0075BF13 /* SudokuView.swift */; };\n\t\t0E96543F23390C2A0075BF13 /* TicTacToeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96543523390C2A0075BF13 /* TicTacToeView.swift */; };\n\t\t0E96544323390C360075BF13 /* Grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96544023390C360075BF13 /* Grid.swift */; };\n\t\t0E96544423390C360075BF13 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96544123390C360075BF13 /* Extensions.swift */; };\n\t\t0E96544523390C360075BF13 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96544223390C360075BF13 /* Operators.swift */; };\n\t\t0E96544823390C470075BF13 /* Gameboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96544623390C470075BF13 /* Gameboard.swift */; };\n\t\t0E96544923390C470075BF13 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E96544723390C470075BF13 /* Validation.swift */; };\n\t\tA90F20AC2089229C00C3F6A4 /* Apple Symbols.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A90F20AB2089229C00C3F6A4 /* Apple Symbols.ttf */; };\n\t\tA90F20B1208A6D7200C3F6A4 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90F20B0208A6D7200C3F6A4 /* MainViewController.swift */; };\n\t\tA9DBACA7208EDE2600C03C12 /* WordsBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACA6208EDE2600C03C12 /* WordsBoardView.swift */; };\n\t\tA9DBACD72090BCFB00C03C12 /* BombsweeperBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACD62090BCFB00C03C12 /* BombsweeperBoardView.swift */; };\n\t\tA9DBACD92090BD4B00C03C12 /* MemoryBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACD82090BD4B00C03C12 /* MemoryBoardView.swift */; };\n\t\tA9DBACDB2090BD6E00C03C12 /* ChessBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACDA2090BD6E00C03C12 /* ChessBoardView.swift */; };\n\t\tA9DBACDD2090BD8A00C03C12 /* CheckersBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACDC2090BD8A00C03C12 /* CheckersBoardView.swift */; };\n\t\tA9DBACDF2090BDB500C03C12 /* BackgammonBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACDE2090BDB500C03C12 /* BackgammonBoardView.swift */; };\n\t\tA9DBACE12090BDD700C03C12 /* FourBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACE02090BDD700C03C12 /* FourBoardView.swift */; };\n\t\tA9DBACE32090BDFA00C03C12 /* TicTacToeBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACE22090BDFA00C03C12 /* TicTacToeBoardView.swift */; };\n\t\tA9DBACE52090BE1500C03C12 /* SudokuBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACE42090BE1500C03C12 /* SudokuBoardView.swift */; };\n\t\tA9DBACE72090BE3800C03C12 /* DotsBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACE62090BE3800C03C12 /* DotsBoardView.swift */; };\n\t\tA9DBACE92090BE5B00C03C12 /* GoBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACE82090BE5B00C03C12 /* GoBoardView.swift */; };\n\t\tA9DBACEB2090BE7700C03C12 /* MancalaBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACEA2090BE7700C03C12 /* MancalaBoardView.swift */; };\n\t\tA9DBACED2090BE9A00C03C12 /* PegsBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACEC2090BE9A00C03C12 /* PegsBoardView.swift */; };\n\t\tA9DBACF320936DA200C03C12 /* DoublesBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DBACF220936DA200C03C12 /* DoublesBoardView.swift */; };\n\t\tA9DD740E1C62A34600219C78 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DD740D1C62A34600219C78 /* AppDelegate.swift */; };\n\t\tA9DD74101C62A34600219C78 /* BoardViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DD740F1C62A34600219C78 /* BoardViewController.swift */; };\n\t\tA9DD74131C62A34600219C78 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9DD74111C62A34600219C78 /* Main.storyboard */; };\n\t\tA9DD74151C62A34600219C78 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A9DD74141C62A34600219C78 /* Assets.xcassets */; };\n\t\tA9DD74181C62A34600219C78 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9DD74161C62A34600219C78 /* LaunchScreen.storyboard */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t0E6C166D233B98B1003DE849 /* Bombsweeper.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Bombsweeper.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C166F233B98F3003DE849 /* Chess.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Chess.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1671233B98FC003DE849 /* Checkers.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Checkers.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1673233B9AA0003DE849 /* Sudoku.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Sudoku.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1675233B9AAD003DE849 /* Words.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Words.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1677233B9AB7003DE849 /* TicTacToe.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = TicTacToe.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1679233B9ACB003DE849 /* Four.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Four.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C167B233B9E82003DE849 /* Mancala.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Mancala.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C167D233B9E8F003DE849 /* Dots.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Dots.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C167F233B9EA0003DE849 /* Pegs.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Pegs.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1681233BA8B0003DE849 /* Go.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Go.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1683233BA8C1003DE849 /* Memory.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Memory.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1685233BA8D0003DE849 /* Doubles.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Doubles.storyboard; sourceTree = \"<group>\"; };\n\t\t0E6C1687233BA8E7003DE849 /* Backgammon.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Backgammon.storyboard; sourceTree = \"<group>\"; };\n\t\t0E96540023390BA30075BF13 /* Four.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Four.swift; path = Gameboards.playground/Sources/Boards/Four.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96540123390BA30075BF13 /* Chess.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Chess.swift; path = Gameboards.playground/Sources/Boards/Chess.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96540223390BA40075BF13 /* Dots.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Dots.swift; path = Gameboards.playground/Sources/Boards/Dots.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96540323390BA40075BF13 /* Backgammon.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Backgammon.swift; path = Gameboards.playground/Sources/Boards/Backgammon.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96540423390BA40075BF13 /* Alquerque.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Alquerque.swift; path = Gameboards.playground/Sources/Boards/Alquerque.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96540523390BA40075BF13 /* Doubles.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Doubles.swift; path = Gameboards.playground/Sources/Boards/Doubles.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96540623390BA40075BF13 /* Bombsweeper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Bombsweeper.swift; path = Gameboards.playground/Sources/Boards/Bombsweeper.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96540723390BA40075BF13 /* Go.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Go.swift; path = Gameboards.playground/Sources/Boards/Go.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96540823390BA40075BF13 /* Checkers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Checkers.swift; path = Gameboards.playground/Sources/Boards/Checkers.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96541223390BFC0075BF13 /* Memory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Memory.swift; path = Gameboards.playground/Sources/Boards/Memory.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96541323390BFC0075BF13 /* Sudoku.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Sudoku.swift; path = Gameboards.playground/Sources/Boards/Sudoku.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96541423390BFC0075BF13 /* Mancala.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Mancala.swift; path = Gameboards.playground/Sources/Boards/Mancala.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96541523390BFC0075BF13 /* Pegs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Pegs.swift; path = Gameboards.playground/Sources/Boards/Pegs.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96541623390BFC0075BF13 /* TicTacToe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TicTacToe.swift; path = Gameboards.playground/Sources/Boards/TicTacToe.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96541723390BFC0075BF13 /* Ludo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Ludo.swift; path = Gameboards.playground/Sources/Boards/Ludo.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96541823390BFC0075BF13 /* Words.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Words.swift; path = Gameboards.playground/Sources/Boards/Words.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542023390C0E0075BF13 /* Pilare.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Pilare.swift; path = Gameboards.playground/Sources/Boards/InProgress/Pilare.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542123390C0E0075BF13 /* Tetris.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Tetris.swift; path = Gameboards.playground/Sources/Boards/InProgress/Tetris.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542223390C0E0075BF13 /* Trouble.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Trouble.swift; path = Gameboards.playground/Sources/Boards/InProgress/Trouble.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542323390C0E0075BF13 /* Dominos.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Dominos.swift; path = Gameboards.playground/Sources/Boards/InProgress/Dominos.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542423390C0E0075BF13 /* Majong.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Majong.swift; path = Gameboards.playground/Sources/Boards/InProgress/Majong.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542523390C0E0075BF13 /* Battleship.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Battleship.swift; path = Gameboards.playground/Sources/Boards/InProgress/Battleship.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542C23390C2A0075BF13 /* DotsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DotsView.swift; path = Gameboards.playground/Sources/Core/Views/DotsView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542D23390C2A0075BF13 /* WordsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WordsView.swift; path = Gameboards.playground/Sources/Core/Views/WordsView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542E23390C2A0075BF13 /* FourView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FourView.swift; path = Gameboards.playground/Sources/Core/Views/FourView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96542F23390C2A0075BF13 /* BackgammonView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BackgammonView.swift; path = Gameboards.playground/Sources/Core/Views/BackgammonView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96543023390C2A0075BF13 /* MancalaView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MancalaView.swift; path = Gameboards.playground/Sources/Core/Views/MancalaView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96543123390C2A0075BF13 /* GoView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GoView.swift; path = Gameboards.playground/Sources/Core/Views/GoView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96543223390C2A0075BF13 /* MatrixView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MatrixView.swift; path = Gameboards.playground/Sources/Core/Views/MatrixView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96543323390C2A0075BF13 /* PegsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PegsView.swift; path = Gameboards.playground/Sources/Core/Views/PegsView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96543423390C2A0075BF13 /* SudokuView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SudokuView.swift; path = Gameboards.playground/Sources/Core/Views/SudokuView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96543523390C2A0075BF13 /* TicTacToeView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TicTacToeView.swift; path = Gameboards.playground/Sources/Core/Views/TicTacToeView.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96544023390C360075BF13 /* Grid.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Grid.swift; path = Gameboards.playground/Sources/Core/Grid.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96544123390C360075BF13 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = Gameboards.playground/Sources/Core/Extensions.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96544223390C360075BF13 /* Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Gameboards.playground/Sources/Core/Operators.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96544623390C470075BF13 /* Gameboard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Gameboard.swift; path = Gameboards.playground/Sources/Gameboard.swift; sourceTree = SOURCE_ROOT; };\n\t\t0E96544723390C470075BF13 /* Validation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Gameboards.playground/Sources/Validation.swift; sourceTree = SOURCE_ROOT; };\n\t\tA90F20AB2089229C00C3F6A4 /* Apple Symbols.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = \"Apple Symbols.ttf\"; sourceTree = \"<group>\"; };\n\t\tA90F20B0208A6D7200C3F6A4 /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACA6208EDE2600C03C12 /* WordsBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordsBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACD62090BCFB00C03C12 /* BombsweeperBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BombsweeperBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACD82090BD4B00C03C12 /* MemoryBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoryBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACDA2090BD6E00C03C12 /* ChessBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChessBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACDC2090BD8A00C03C12 /* CheckersBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckersBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACDE2090BDB500C03C12 /* BackgammonBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgammonBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACE02090BDD700C03C12 /* FourBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FourBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACE22090BDFA00C03C12 /* TicTacToeBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TicTacToeBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACE42090BE1500C03C12 /* SudokuBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SudokuBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACE62090BE3800C03C12 /* DotsBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DotsBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACE82090BE5B00C03C12 /* GoBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GoBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACEA2090BE7700C03C12 /* MancalaBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MancalaBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACEC2090BE9A00C03C12 /* PegsBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PegsBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DBACF220936DA200C03C12 /* DoublesBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoublesBoardView.swift; sourceTree = \"<group>\"; };\n\t\tA9DD740A1C62A34600219C78 /* Games.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Games.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tA9DD740D1C62A34600219C78 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tA9DD740F1C62A34600219C78 /* BoardViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoardViewController.swift; sourceTree = \"<group>\"; };\n\t\tA9DD74121C62A34600219C78 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\tA9DD74141C62A34600219C78 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\tA9DD74171C62A34600219C78 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\tA9DD74191C62A34600219C78 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tA9DD74071C62A34600219C78 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t0E6C166C233B989C003DE849 /* Boards */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0E6C1687233BA8E7003DE849 /* Backgammon.storyboard */,\n\t\t\t\t0E6C166D233B98B1003DE849 /* Bombsweeper.storyboard */,\n\t\t\t\t0E6C166F233B98F3003DE849 /* Chess.storyboard */,\n\t\t\t\t0E6C1671233B98FC003DE849 /* Checkers.storyboard */,\n\t\t\t\t0E6C167D233B9E8F003DE849 /* Dots.storyboard */,\n\t\t\t\t0E6C1685233BA8D0003DE849 /* Doubles.storyboard */,\n\t\t\t\t0E6C1679233B9ACB003DE849 /* Four.storyboard */,\n\t\t\t\t0E6C1681233BA8B0003DE849 /* Go.storyboard */,\n\t\t\t\t0E6C167B233B9E82003DE849 /* Mancala.storyboard */,\n\t\t\t\t0E6C1683233BA8C1003DE849 /* Memory.storyboard */,\n\t\t\t\t0E6C167F233B9EA0003DE849 /* Pegs.storyboard */,\n\t\t\t\t0E6C1673233B9AA0003DE849 /* Sudoku.storyboard */,\n\t\t\t\t0E6C1677233B9AB7003DE849 /* TicTacToe.storyboard */,\n\t\t\t\t0E6C1675233B9AAD003DE849 /* Words.storyboard */,\n\t\t\t);\n\t\t\tpath = Boards;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DBACA5208EADE500C03C12 /* InProgress */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0E96540423390BA40075BF13 /* Alquerque.swift */,\n\t\t\t\t0E96542523390C0E0075BF13 /* Battleship.swift */,\n\t\t\t\t0E96542323390C0E0075BF13 /* Dominos.swift */,\n\t\t\t\t0E96541723390BFC0075BF13 /* Ludo.swift */,\n\t\t\t\t0E96542423390C0E0075BF13 /* Majong.swift */,\n\t\t\t\t0E96542023390C0E0075BF13 /* Pilare.swift */,\n\t\t\t\t0E96542123390C0E0075BF13 /* Tetris.swift */,\n\t\t\t\t0E96542223390C0E0075BF13 /* Trouble.swift */,\n\t\t\t);\n\t\t\tname = InProgress;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DBACA8208EDE2B00C03C12 /* BoardViews */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA9DBACDE2090BDB500C03C12 /* BackgammonBoardView.swift */,\n\t\t\t\tA9DBACD62090BCFB00C03C12 /* BombsweeperBoardView.swift */,\n\t\t\t\tA9DBACDC2090BD8A00C03C12 /* CheckersBoardView.swift */,\n\t\t\t\tA9DBACDA2090BD6E00C03C12 /* ChessBoardView.swift */,\n\t\t\t\tA9DBACE62090BE3800C03C12 /* DotsBoardView.swift */,\n\t\t\t\tA9DBACF220936DA200C03C12 /* DoublesBoardView.swift */,\n\t\t\t\tA9DBACE02090BDD700C03C12 /* FourBoardView.swift */,\n\t\t\t\tA9DBACE82090BE5B00C03C12 /* GoBoardView.swift */,\n\t\t\t\tA9DBACEA2090BE7700C03C12 /* MancalaBoardView.swift */,\n\t\t\t\tA9DBACD82090BD4B00C03C12 /* MemoryBoardView.swift */,\n\t\t\t\tA9DBACEC2090BE9A00C03C12 /* PegsBoardView.swift */,\n\t\t\t\tA9DBACE42090BE1500C03C12 /* SudokuBoardView.swift */,\n\t\t\t\tA9DBACE22090BDFA00C03C12 /* TicTacToeBoardView.swift */,\n\t\t\t\tA9DBACA6208EDE2600C03C12 /* WordsBoardView.swift */,\n\t\t\t);\n\t\t\tpath = BoardViews;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DBACA9208EDE3D00C03C12 /* BoardController */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0E6C166C233B989C003DE849 /* Boards */,\n\t\t\t\tA9DD740F1C62A34600219C78 /* BoardViewController.swift */,\n\t\t\t\tA9DBACA8208EDE2B00C03C12 /* BoardViews */,\n\t\t\t);\n\t\t\tpath = BoardController;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DC4FA81C62B89700E7920E /* System */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA90F20AB2089229C00C3F6A4 /* Apple Symbols.ttf */,\n\t\t\t\tA9DD740D1C62A34600219C78 /* AppDelegate.swift */,\n\t\t\t\tA9DD74141C62A34600219C78 /* Assets.xcassets */,\n\t\t\t\tA9DD74161C62A34600219C78 /* LaunchScreen.storyboard */,\n\t\t\t\tA9DD74191C62A34600219C78 /* Info.plist */,\n\t\t\t);\n\t\t\tname = System;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DD74011C62A34600219C78 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA9DD740C1C62A34600219C78 /* Games */,\n\t\t\t\tA9DD740B1C62A34600219C78 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DD740B1C62A34600219C78 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA9DD740A1C62A34600219C78 /* Games.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DD740C1C62A34600219C78 /* Games */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA9DD741F1C62A35300219C78 /* Gameboards */,\n\t\t\t\tA9DD74111C62A34600219C78 /* Main.storyboard */,\n\t\t\t\tA90F20B0208A6D7200C3F6A4 /* MainViewController.swift */,\n\t\t\t\tA9DBACA9208EDE3D00C03C12 /* BoardController */,\n\t\t\t\tA9DC4FA81C62B89700E7920E /* System */,\n\t\t\t);\n\t\t\tpath = Games;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DD741F1C62A35300219C78 /* Gameboards */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA9DD74201C62A35300219C78 /* Boards */,\n\t\t\t\tA9DD74281C62A35300219C78 /* Core */,\n\t\t\t\t0E96544623390C470075BF13 /* Gameboard.swift */,\n\t\t\t\t0E96544723390C470075BF13 /* Validation.swift */,\n\t\t\t);\n\t\t\tname = Gameboards;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DD74201C62A35300219C78 /* Boards */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0E96540323390BA40075BF13 /* Backgammon.swift */,\n\t\t\t\t0E96540623390BA40075BF13 /* Bombsweeper.swift */,\n\t\t\t\t0E96540823390BA40075BF13 /* Checkers.swift */,\n\t\t\t\t0E96540123390BA30075BF13 /* Chess.swift */,\n\t\t\t\t0E96540223390BA40075BF13 /* Dots.swift */,\n\t\t\t\t0E96540523390BA40075BF13 /* Doubles.swift */,\n\t\t\t\t0E96540023390BA30075BF13 /* Four.swift */,\n\t\t\t\t0E96540723390BA40075BF13 /* Go.swift */,\n\t\t\t\t0E96541423390BFC0075BF13 /* Mancala.swift */,\n\t\t\t\t0E96541223390BFC0075BF13 /* Memory.swift */,\n\t\t\t\t0E96541523390BFC0075BF13 /* Pegs.swift */,\n\t\t\t\t0E96541323390BFC0075BF13 /* Sudoku.swift */,\n\t\t\t\t0E96541623390BFC0075BF13 /* TicTacToe.swift */,\n\t\t\t\t0E96541823390BFC0075BF13 /* Words.swift */,\n\t\t\t\tA9DBACA5208EADE500C03C12 /* InProgress */,\n\t\t\t);\n\t\t\tname = Boards;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DD74281C62A35300219C78 /* Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0E96544123390C360075BF13 /* Extensions.swift */,\n\t\t\t\t0E96544023390C360075BF13 /* Grid.swift */,\n\t\t\t\t0E96544223390C360075BF13 /* Operators.swift */,\n\t\t\t\tA9DD742C1C62A35300219C78 /* Views */,\n\t\t\t);\n\t\t\tname = Core;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DD742C1C62A35300219C78 /* Views */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0E96542F23390C2A0075BF13 /* BackgammonView.swift */,\n\t\t\t\t0E96542C23390C2A0075BF13 /* DotsView.swift */,\n\t\t\t\t0E96542E23390C2A0075BF13 /* FourView.swift */,\n\t\t\t\t0E96543123390C2A0075BF13 /* GoView.swift */,\n\t\t\t\t0E96543023390C2A0075BF13 /* MancalaView.swift */,\n\t\t\t\t0E96543223390C2A0075BF13 /* MatrixView.swift */,\n\t\t\t\t0E96543323390C2A0075BF13 /* PegsView.swift */,\n\t\t\t\t0E96543423390C2A0075BF13 /* SudokuView.swift */,\n\t\t\t\t0E96543523390C2A0075BF13 /* TicTacToeView.swift */,\n\t\t\t\t0E96542D23390C2A0075BF13 /* WordsView.swift */,\n\t\t\t);\n\t\t\tname = Views;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tA9DD74091C62A34600219C78 /* Games */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = A9DD741C1C62A34600219C78 /* Build configuration list for PBXNativeTarget \"Games\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tA9DD74061C62A34600219C78 /* Sources */,\n\t\t\t\tA9DD74071C62A34600219C78 /* Frameworks */,\n\t\t\t\tA9DD74081C62A34600219C78 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Games;\n\t\t\tproductName = Games;\n\t\t\tproductReference = A9DD740A1C62A34600219C78 /* Games.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tA9DD74021C62A34600219C78 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0720;\n\t\t\t\tLastUpgradeCheck = 0720;\n\t\t\t\tORGANIZATIONNAME = \"Jo Albright\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tA9DD74091C62A34600219C78 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tDevelopmentTeam = 965FHW76SM;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = A9DD74051C62A34600219C78 /* Build configuration list for PBXProject \"Games\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = A9DD74011C62A34600219C78;\n\t\t\tproductRefGroup = A9DD740B1C62A34600219C78 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tA9DD74091C62A34600219C78 /* Games */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tA9DD74081C62A34600219C78 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0E6C167E233B9E8F003DE849 /* Dots.storyboard in Resources */,\n\t\t\t\t0E6C1688233BA8E7003DE849 /* Backgammon.storyboard in Resources */,\n\t\t\t\t0E6C166E233B98B1003DE849 /* Bombsweeper.storyboard in Resources */,\n\t\t\t\t0E6C1678233B9AB7003DE849 /* TicTacToe.storyboard in Resources */,\n\t\t\t\t0E6C1672233B98FC003DE849 /* Checkers.storyboard in Resources */,\n\t\t\t\tA90F20AC2089229C00C3F6A4 /* Apple Symbols.ttf in Resources */,\n\t\t\t\t0E6C167C233B9E82003DE849 /* Mancala.storyboard in Resources */,\n\t\t\t\tA9DD74181C62A34600219C78 /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t0E6C1674233B9AA0003DE849 /* Sudoku.storyboard in Resources */,\n\t\t\t\t0E6C1670233B98F3003DE849 /* Chess.storyboard in Resources */,\n\t\t\t\t0E6C1682233BA8B0003DE849 /* Go.storyboard in Resources */,\n\t\t\t\tA9DD74151C62A34600219C78 /* Assets.xcassets in Resources */,\n\t\t\t\t0E6C1676233B9AAD003DE849 /* Words.storyboard in Resources */,\n\t\t\t\t0E6C1686233BA8D0003DE849 /* Doubles.storyboard in Resources */,\n\t\t\t\t0E6C167A233B9ACB003DE849 /* Four.storyboard in Resources */,\n\t\t\t\tA9DD74131C62A34600219C78 /* Main.storyboard in Resources */,\n\t\t\t\t0E6C1684233BA8C1003DE849 /* Memory.storyboard in Resources */,\n\t\t\t\t0E6C1680233B9EA0003DE849 /* Pegs.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tA9DD74061C62A34600219C78 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0E96543A23390C2A0075BF13 /* MancalaView.swift in Sources */,\n\t\t\t\t0E96541923390BFD0075BF13 /* Memory.swift in Sources */,\n\t\t\t\tA9DBACED2090BE9A00C03C12 /* PegsBoardView.swift in Sources */,\n\t\t\t\tA9DD74101C62A34600219C78 /* BoardViewController.swift in Sources */,\n\t\t\t\t0E96544923390C470075BF13 /* Validation.swift in Sources */,\n\t\t\t\tA9DBACEB2090BE7700C03C12 /* MancalaBoardView.swift in Sources */,\n\t\t\t\t0E96543823390C2A0075BF13 /* FourView.swift in Sources */,\n\t\t\t\t0E96541E23390BFD0075BF13 /* Ludo.swift in Sources */,\n\t\t\t\t0E96544323390C360075BF13 /* Grid.swift in Sources */,\n\t\t\t\t0E96541B23390BFD0075BF13 /* Mancala.swift in Sources */,\n\t\t\t\tA9DBACA7208EDE2600C03C12 /* WordsBoardView.swift in Sources */,\n\t\t\t\tA9DBACD92090BD4B00C03C12 /* MemoryBoardView.swift in Sources */,\n\t\t\t\t0E96541F23390BFD0075BF13 /* Words.swift in Sources */,\n\t\t\t\tA9DBACDD2090BD8A00C03C12 /* CheckersBoardView.swift in Sources */,\n\t\t\t\t0E96543E23390C2A0075BF13 /* SudokuView.swift in Sources */,\n\t\t\t\t0E96541123390BA40075BF13 /* Checkers.swift in Sources */,\n\t\t\t\tA9DBACF320936DA200C03C12 /* DoublesBoardView.swift in Sources */,\n\t\t\t\t0E96542723390C0E0075BF13 /* Tetris.swift in Sources */,\n\t\t\t\t0E96544523390C360075BF13 /* Operators.swift in Sources */,\n\t\t\t\t0E96541D23390BFD0075BF13 /* TicTacToe.swift in Sources */,\n\t\t\t\t0E96540F23390BA40075BF13 /* Bombsweeper.swift in Sources */,\n\t\t\t\t0E96542A23390C0E0075BF13 /* Majong.swift in Sources */,\n\t\t\t\t0E96541C23390BFD0075BF13 /* Pegs.swift in Sources */,\n\t\t\t\t0E96540D23390BA40075BF13 /* Alquerque.swift in Sources */,\n\t\t\t\tA9DBACE52090BE1500C03C12 /* SudokuBoardView.swift in Sources */,\n\t\t\t\t0E96540B23390BA40075BF13 /* Dots.swift in Sources */,\n\t\t\t\tA9DBACE32090BDFA00C03C12 /* TicTacToeBoardView.swift in Sources */,\n\t\t\t\tA90F20B1208A6D7200C3F6A4 /* MainViewController.swift in Sources */,\n\t\t\t\t0E96544823390C470075BF13 /* Gameboard.swift in Sources */,\n\t\t\t\tA9DBACE12090BDD700C03C12 /* FourBoardView.swift in Sources */,\n\t\t\t\tA9DBACE72090BE3800C03C12 /* DotsBoardView.swift in Sources */,\n\t\t\t\t0E96540923390BA40075BF13 /* Four.swift in Sources */,\n\t\t\t\t0E96543723390C2A0075BF13 /* WordsView.swift in Sources */,\n\t\t\t\t0E96540A23390BA40075BF13 /* Chess.swift in Sources */,\n\t\t\t\t0E96541023390BA40075BF13 /* Go.swift in Sources */,\n\t\t\t\t0E96540E23390BA40075BF13 /* Doubles.swift in Sources */,\n\t\t\t\t0E96542623390C0E0075BF13 /* Pilare.swift in Sources */,\n\t\t\t\t0E96543623390C2A0075BF13 /* DotsView.swift in Sources */,\n\t\t\t\tA9DBACD72090BCFB00C03C12 /* BombsweeperBoardView.swift in Sources */,\n\t\t\t\t0E96543B23390C2A0075BF13 /* GoView.swift in Sources */,\n\t\t\t\tA9DD740E1C62A34600219C78 /* AppDelegate.swift in Sources */,\n\t\t\t\t0E96542823390C0E0075BF13 /* Trouble.swift in Sources */,\n\t\t\t\tA9DBACDB2090BD6E00C03C12 /* ChessBoardView.swift in Sources */,\n\t\t\t\t0E96542923390C0E0075BF13 /* Dominos.swift in Sources */,\n\t\t\t\tA9DBACE92090BE5B00C03C12 /* GoBoardView.swift in Sources */,\n\t\t\t\t0E96543D23390C2A0075BF13 /* PegsView.swift in Sources */,\n\t\t\t\t0E96542B23390C0E0075BF13 /* Battleship.swift in Sources */,\n\t\t\t\t0E96543923390C2A0075BF13 /* BackgammonView.swift in Sources */,\n\t\t\t\t0E96541A23390BFD0075BF13 /* Sudoku.swift in Sources */,\n\t\t\t\t0E96543C23390C2A0075BF13 /* MatrixView.swift in Sources */,\n\t\t\t\tA9DBACDF2090BDB500C03C12 /* BackgammonBoardView.swift in Sources */,\n\t\t\t\t0E96543F23390C2A0075BF13 /* TicTacToeView.swift in Sources */,\n\t\t\t\t0E96544423390C360075BF13 /* Extensions.swift in Sources */,\n\t\t\t\t0E96540C23390BA40075BF13 /* Backgammon.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\tA9DD74111C62A34600219C78 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tA9DD74121C62A34600219C78 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA9DD74161C62A34600219C78 /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tA9DD74171C62A34600219C78 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tA9DD741A1C62A34600219C78 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 14.1;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tA9DD741B1C62A34600219C78 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 14.1;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tA9DD741D1C62A34600219C78 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tDEVELOPMENT_TEAM = 965FHW76SM;\n\t\t\t\tINFOPLIST_FILE = Games/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tMARKETING_VERSION = 1.1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = co.jo2.boards;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 4.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tA9DD741E1C62A34600219C78 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tDEVELOPMENT_TEAM = 965FHW76SM;\n\t\t\t\tINFOPLIST_FILE = Games/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tMARKETING_VERSION = 1.1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = co.jo2.boards;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 4.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tA9DD74051C62A34600219C78 /* Build configuration list for PBXProject \"Games\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tA9DD741A1C62A34600219C78 /* Debug */,\n\t\t\t\tA9DD741B1C62A34600219C78 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tA9DD741C1C62A34600219C78 /* Build configuration list for PBXNativeTarget \"Games\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tA9DD741D1C62A34600219C78 /* Debug */,\n\t\t\t\tA9DD741E1C62A34600219C78 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = A9DD74021C62A34600219C78 /* Project object */;\n}\n"
  },
  {
    "path": "Games.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:Games.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Games.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "# Gameboard\n\nGameboards built in a playground\n\n### Games\n\n*Links send you to the readme for each game.*\n\n- [x] [Checkers](RM_Checkers.md)\n- [x] [Chess](RM_Chess.md)\n- [x] [Go](RM_Go.md)\n- [ ] Mancala\n- [x] [MineSweeper](RM_Minesweeper.md)\n- [x] [Sudoku](RM_Sudoku.md)\n- [x] [TicTacToe](RM_TicTacToe.md)\n\n### Features\n\n- [x] Switch Player Per Turn\n- [x] Coordinate System\n- [x] Ability to Reset\n- [x] Available Moves : *hint system*\n- [x] Custom Colors\n- [ ] Piece Collection\n- [ ] Time Control : *timer for moves*\n- [ ] Simple Move AI : *need a friend?*\n\n### Overall Validation\n\n- [x] Stop friendly fire : *checks if target piece is yours*\n- [x] Only play on your turn : *checks against pieces for player*\n- [x] No piece available : *checks for no piece*\n- [x] Off the board : *checks if target square is on board*\n\n### Images\n\n[![Checkers](./images/checkers_sm.png?raw=true)](RM_Checkers.md)\n[![Chess](./images/chess_sm.png?raw=true)](RM_Chess.md)\n[![Go](./images/go_sm.png?raw=true)](RM_Go.md)\n[![Minesweeper](./images/minesweeper_sm.png?raw=true)](RM_Minesweeper.md)\n[![Sudoku](./images/sudoku_sm.png?raw=true)](RM_Sudoku.md)\n[![TicTacToe](./images/tictactoe_sm.png?raw=true)](RM_TicTacToe.md)"
  },
  {
    "path": "RM_Checkers.md",
    "content": "# Checkers\n\n![Checkers](./images/checkers.png?raw=true)\n\n```swift\nvar checkers = GameBoard(.Checkers)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.66, green:0.62, blue:0.48, alpha:1)\ncolors.foreground = UIColor(red:0.62, green:0.58, blue:0.44, alpha:1)\n\ncolors.player1 = UIColor(red:0.8, green:0.13, blue:0, alpha:1)\ncolors.player2 = UIColor(red:0.13, green:0.13, blue:0.13, alpha:1)\n\ncolors.selected = UIColor.whiteColor()\ncolors.highlight = UIColor.whiteColor()\n\ncheckers.boardColors = colors\n\n// collection of moves\n\nlet moves: [(Square,Square)] = [\n\n    ((2,1),(3,2)), // move\n    ((5,2),(4,3)), // move\n    ((2,3),(3,4)), // move\n    ((4,3),(2,1)), // jump\n    ((2,5),(4,3)), // cannot jump yourself\n    ((2,5),(3,4)), // cannot land on your own piece\n    ((1,0),(2,1)), // cannot land on another piece\n\n]\n\n// loop moves\n\nfor move in moves {\n    \n    do {\n        \n        try checkers.move(pieceAt: move.0, toSquare: move.1)\n    \n    } catch {\n        \n        error\n    \n    }\n    \n}\n\n// show available moves for a square\n\ncheckers.showAvailable((1,2))\n\ncheckers.visualize()\n```\n\n#### General\n\n- [wikipedia](https://simple.wikipedia.org/wiki/Checkers)\n- [x] Coordinates\n\t- columns 0 - 7\n\t- rows 0 - 7\n\n#### Validation\n\n- [ ] Win / Lose\n\n- [x] Standard Moves\n\t- [x] Diagonal -> 1\n\t- [x] Diagonal Jump\n\n- [ ] Special Moves\n\t- [ ] Multiple Jumps\n\t- [ ] Promotion"
  },
  {
    "path": "RM_Chess.md",
    "content": "# Chess\n\n![Chess](./images/chess.png?raw=true)\n\n```swift\nvar chess = GameBoard(.Chess)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.52, green:0.68, blue:0.43, alpha:1)\ncolors.foreground = UIColor(red:0.48, green:0.64, blue:0.39, alpha:1)\n\ncolors.player1 = UIColor.whiteColor()\ncolors.player2 = UIColor.blackColor()\n\ncolors.selected = UIColor(red:0.06, green:0.46, blue:0.71, alpha:1)\ncolors.highlight = UIColor(red:0.06, green:0.46, blue:0.71, alpha:1)\n\nchess.boardColors = colors\n\n// collection of moves\n\nlet moves: [(ChessSquare,ChessSquare)] = [\n    \n    (B7,B5), // pawn leaps\n    (C2,C4), // pawn leaps\n    (B5,C4), // pawn takes pawn\n    (B1,C3), // knight charges\n    (C8,A6), // bishop advances\n    (E2,E4), // pawn leaps\n    (G7,G6), // pawn creeps\n    (F1,C4), // bishop take pawn\n    (A6,D3), // blocked move throws error\n    \n]\n\n// loop moves\n\nfor move in moves {\n    \n    do {\n        \n        try chess.move(pieceAt: move.0, toSquare: move.1)\n        \n    } catch {\n        \n        error\n    \n    }\n    \n}\n\n// show available moves for a square\n\nchess.showAvailable(A6)\n\nchess.visualize()\n```\n\n#### General\n\n- [wikipedia](https://en.wikipedia.org/wiki/Chess)\n- [x] Coordinates\n\t- columns A - H\n\t- rows 8 - 1\n\t\n#### Validation\n\n- [ ] Win / Lose\n\n- [x] Standard Moves\n\t- [x] Pawn\n\t- [x] Rook \n\t- [x] Knight \n\t- [x] Bishop \n\t- [x] Queen \n\t- [x] King\n\n- [ ] Special Moves\n\t- [ ] Castling\n\t- [ ] En passant : *pawn take down in passing*\n\t- [ ] Pawn Promotion\n\t- [ ] Check & Checkmate"
  },
  {
    "path": "RM_Go.md",
    "content": "# Go\n\n![Go](./images/go.png?raw=true)\n\n```swift\nvar go = Gameboard(.Go)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.36, green:0.29, blue:0.16, alpha:1)\ncolors.foreground = UIColor(red:0.11, green:0.08, blue:0.03, alpha:1)\n\ncolors.player1 = UIColor.whiteColor()\ncolors.player2 = UIColor.blackColor()\n\ngo.boardColors = colors\n\n// collection of moves\n\nlet moves: [Square] = [\n    \n    // moves\n    (1,1),\n    (6,7),\n    (1,7),\n    (6,0),\n    (4,4),\n    (4,5),\n    (1,2),\n    \n]\n\n// loop moves\n\nfor move in moves {\n    \n    do {\n        \n        try go.move(toSquare: move)\n        \n    } catch {\n        \n        print(error)\n        \n    }\n    \n}\n\ngo.visualize()\n```\n\n#### General\n\n- [wikipedia](https://en.wikipedia.org/wiki/Go_(game))\n- [x] Coordinates\n\t- columns 0 - 9\n\t- rows 0 - 9\n- [ ] Adjustable Board Size : *9, 13, 17, 19*\n\n#### Validation\n\n- [ ] Win / Lose\n\n- [x] Standard Moves\n\t- [x] Capture\n\n- [ ] Special Moves\n\t- [ ] KO\n\t- [ ] Suicide"
  },
  {
    "path": "RM_Minesweeper.md",
    "content": "# Minesweeper\n\n![Minesweeper](./images/minesweeper.png?raw=true)\n\n```swift\nenum MoveType { case Guess, Mark }\n\nvar minesweeper = Gameboard(.Minesweeper)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.5, green:0.5, blue:0.5, alpha:1)\ncolors.foreground = UIColor(red:0.6, green:0.6, blue:0.6, alpha:1)\n\ncolors.player1 = UIColor.yellowColor()\ncolors.player2 = UIColor.blackColor()\n\ncolors.highlight = UIColor.blueColor()\ncolors.selected = UIColor.redColor()\n\nminesweeper.boardColors = colors\n\n// collection of guesses\n\nlet guesses: [(Square,MoveType)] = [\n    \n    ((4,3),.Guess), // guess\n    ((9,0),.Mark),  // mark\n    ((7,4),.Mark),  // mark\n    ((4,1),.Mark),  // mark\n    ((4,0),.Guess), // guess\n    ((0,9),.Guess), // guess\n    ((2,7),.Mark),  // mark\n    ((6,9),.Guess), // guess\n    ((1,0),.Guess), // game over\n    \n]\n\n// loop guesses\n\nfor guess in guesses {\n    \n    do {\n        \n        switch guess.1 {\n            \n        case .Guess: try minesweeper.guess(toSquare: guess.0)\n        case .Mark: try minesweeper.mark(toSquare: guess.0)\n            \n        }\n        \n    } catch {\n        \n        print(error)\n        \n    }\n    \n}\n\nminesweeper.visualize()\n```\n\n#### General\n\n- [wikipedia](https://en.wikipedia.org/wiki/Microsoft_Minesweeper)\n- [x] Coordinates\n\t- columns 0 - 9\n\t- rows 0 - 9\n\n#### Validation\n\n- [ ] Win / Lose\n\n- [x] Standard Moves\n\t- [x] Mark : *flag*\n\t- [x] Guess\n\t- [x] Boom : *mine*"
  },
  {
    "path": "RM_Sudoku.md",
    "content": "# Sudoku\n\n![Sudoku](./images/sudoku.png?raw=true)\n\n```swift\nvar sudoku = Gameboard(.Sudoku)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.background = UIColor(red:0.19, green:0.78, blue:0.71, alpha:1)\ncolors.foreground = UIColor(red:0.09, green:0.4, blue:0.44, alpha:1)\n\nsudoku.boardColors = colors\n\n// collection of guesses\n\nlet guesses: [(Square,Guess)] = [\n    \n    // guesses\n    ((0,2),\"5\"),\n    ((8,8),\"4\"),\n    ((6,5),\"4\"),\n    ((2,7),\"4\"),\n    ((3,0),\"4\"),\n    ((5,3),\"1\"),\n    ((6,2),\"1\"),\n    ((7,8),\"1\"),\n    ((2,5),\"2\"),\n    \n]\n\n// loop guesses\n\nfor guess in guesses {\n    \n    do {\n        \n        try sudoku.guess(toSquare: guess.0, withGuess: guess.1)\n        \n    } catch {\n        \n        print(error)\n        \n    }\n    \n}\n\nsudoku.visualize(CGRect(x: 0, y: 0, width: 198, height: 198))\n```\n\n#### General\n\n- [wikipedia](https://en.wikipedia.org/wiki/Sudoku)\n- [x] Coordinates\n\t- columns 0 - 8\n\t- rows 0 - 8\n- [x] Solution Generator : *randomizes solution*\n- [x] Puzzle Generator : *hides numbers*\n- [ ] Alphabetical Option\n\n#### Validation\n\n- [ ] Win / Lose\n\n- [x] Standard Moves"
  },
  {
    "path": "RM_TicTacToe.md",
    "content": "# TicTacToe\n\n![TicTacToe](./images/tictactoe.png?raw=true)\n\n```swift\nvar tictactoe = GameBoard(.TicTacToe)\n\n// setup colors\n\nvar colors = BoardColors()\n\ncolors.player1 = UIColor(red:0.43, green:0.98, blue:0.7, alpha:1)\ncolors.player2 = UIColor(red:1, green:0.15, blue:0.18, alpha:1)\n\ntictactoe.boardColors = colors\n\n// collection of moves\n\nlet moves: [Square] = [\n \n    (1,1),\n    (0,0),\n    (0,2),\n    (2,0),\n    (1,0),\n    (1,2),\n    (0,1),\n    (1,1), // cant play filled spot\n    (2,1),\n    (2,2), // stalemate\n    \n]\n\n// loop moves\n\nfor move in moves {\n    \n    do {\n        \n        try tictactoe.move(toSquare: move)\n        \n    } catch {\n        \n        error\n        \n    }\n    \n}\n\ntictactoe.visualize()\n```\n\n#### General\n\n- [wikipedia](https://en.wikipedia.org/wiki/Tic-tac-toe)\n- [x] Coordinates\n\t- columns 0 - 2\n\t- rows 0 - 2\n\n#### Validation\n\n- [ ] Win / Lose\n\n- [x] Standard Moves"
  },
  {
    "path": "icon.ai",
    "content": "%PDF-1.5\r%\r\n1 0 obj\r<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R]/Order 6 0 R/RBGroups[]>>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>>\rendobj\r2 0 obj\r<</Length 40619/Subtype/XML/Type/Metadata>>stream\r\n<?xpacket begin=\"﻿\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"Adobe XMP Core 5.6-c143 79.161210, 2017/08/11-10:28:36        \">\n   <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n      <rdf:Description rdf:about=\"\"\n            xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n            xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\"\n            xmlns:xmpGImg=\"http://ns.adobe.com/xap/1.0/g/img/\"\n            xmlns:xmpMM=\"http://ns.adobe.com/xap/1.0/mm/\"\n            xmlns:stRef=\"http://ns.adobe.com/xap/1.0/sType/ResourceRef#\"\n            xmlns:stEvt=\"http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\"\n            xmlns:illustrator=\"http://ns.adobe.com/illustrator/1.0/\"\n            xmlns:xmpTPg=\"http://ns.adobe.com/xap/1.0/t/pg/\"\n            xmlns:stDim=\"http://ns.adobe.com/xap/1.0/sType/Dimensions#\"\n            xmlns:xmpG=\"http://ns.adobe.com/xap/1.0/g/\"\n            xmlns:pdf=\"http://ns.adobe.com/pdf/1.3/\"\n            xmlns:pdfx=\"http://ns.adobe.com/pdfx/1.3/\">\n         <dc:format>application/pdf</dc:format>\n         <dc:title>\n            <rdf:Alt>\n               <rdf:li xml:lang=\"x-default\">icon</rdf:li>\n            </rdf:Alt>\n         </dc:title>\n         <xmp:CreatorTool>Adobe Illustrator CC 22.0 (Macintosh)</xmp:CreatorTool>\n         <xmp:CreateDate>2018-05-02T08:47:44-04:00</xmp:CreateDate>\n         <xmp:ModifyDate>2018-05-02T08:47:44-04:00</xmp:ModifyDate>\n         <xmp:MetadataDate>2018-05-02T08:47:44-04:00</xmp:MetadataDate>\n         <xmp:Thumbnails>\n            <rdf:Alt>\n               <rdf:li rdf:parseType=\"Resource\">\n                  <xmpGImg:width>256</xmpGImg:width>\n                  <xmpGImg:height>256</xmpGImg:height>\n                  <xmpGImg:format>JPEG</xmpGImg:format>\n                  <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8Aj35hfmFrXm/Wri4uLh10&#xA;1XIsbEEiOOMH4SV6FyN2Y/qxVG/lZ+YmseVvMVpGLh30a5lSK9s3YmMI7AGRVJorp1qPkcVfXH1q&#xA;1/38n/BD+uKu+tWv+/k/4If1xV31q1/38n/BD+uKu+tWv+/k/wCCH9cVd9atf9/J/wAEP64q761a&#xA;/wC/k/4If1xV31q1/wB/J/wQ/rirvrVr/v5P+CH9cVd9atf9/J/wQ/rirvrVr/v5P+CH9cVd9atf&#xA;9/J/wQ/rirvrVr/v5P8Agh/XFXfWrX/fyf8ABD+uKvkH8yvzE1jzbrty8lw66RFIyWFkrERCNWor&#xA;so2Z2pUsf1Yq78tfzE1jylrts8dw7aRLIqX9kzExGNmozqp2V1rUMP1Yq+vvrVr/AL+T/gh/XFXf&#xA;WrX/AH8n/BD+uKu+tWv+/k/4If1xV31q1/38n/BD+uKu+tWv+/k/4If1xV31q1/38n/BD+uKu+tW&#xA;v+/k/wCCH9cVd9atf9/J/wAEP64q761a/wC/k/4If1xV31q1/wB/J/wQ/rirvrVr/v5P+CH9cVd9&#xA;atf9/J/wQ/rirvrVr/v5P+CH9cVfI/5p/mHrHmnzFeRm5ddGtpXisbNGIj4IxUSMo2Z3pWp+Q2xV&#xA;Bfl7+YWteUNat7i3uHbTWcC+sSSY5IyfiIXoHA3Vh+rFUb+Yf5WeYvK2sXIjs5bnRmdns76JGdPT&#xA;JqqyFQeDqNjX5jbFUb+Vn5WeYPMHmCyu7uylttCtpVmubmZSiyKh5COMNQvzIoSNgMVfVf1W1/3y&#xA;n/Aj+mKu+q2v++U/4Ef0xV31W1/3yn/Aj+mKu+q2v++U/wCBH9MVd9Vtf98p/wACP6Yq76ra/wC+&#xA;U/4Ef0xV31W1/wB8p/wI/pirvqtr/vlP+BH9MVd9Vtf98p/wI/pirvqtr/vlP+BH9MVd9Vtf98p/&#xA;wI/pirvqtr/vlP8AgR/TFXfVbX/fKf8AAj+mKvk38y/yr8weWtcu5beyludDlkaS0u4ULqqMeQST&#xA;jXgydN+vUYq78tPyr8weZdctJbiylttDikWS7u5kKKyKeRSPlTmz9NunU4q+svqtr/vlP+BH9MVd&#xA;9Vtf98p/wI/pirvqtr/vlP8AgR/TFXfVbX/fKf8AAj+mKu+q2v8AvlP+BH9MVd9Vtf8AfKf8CP6Y&#xA;q76ra/75T/gR/TFXfVbX/fKf8CP6Yq76ra/75T/gR/TFXfVbX/fKf8CP6Yq76ra/75T/AIEf0xV3&#xA;1W1/3yn/AAI/pirvqtr/AL5T/gR/TFXyp+af5WeYPL/mC9u7SyludCuZWmtrmFS6xq55GOQLUpwJ&#xA;oCdiMVQX5d/lZ5i806xbiS0lttGR1e8vZUZEMYILLGSPjdhsKfM4q+uLr/eWb/Ub9RxV1r/vLD/q&#xA;L+oYqq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpXX+8s3+o36jirrX/eWH/UX9QxVVxV2KuxV2Ku&#xA;xV2KuxV2KuxV2KuxV2KuxVSuv95Zv9Rv1HFXWv8AvLD/AKi/qGKuuv8AeWb/AFG/UcVda/7yw/6i&#xA;/qGKquKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqV1/vLN/qN+o4q61/3lh/1F/UMVVcVdirsVdirs&#xA;VdirsVdirsVdirsVdirsVUrr/eWb/Ub9RxV1r/vLD/qL+oYq66/3lm/1G/UcVda/7yw/6i/qGKqu&#xA;KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqV1/vLN/qN+o4q61/3lh/1F/UMVVcVdirsVdirsVdirsV&#xA;dirsVdirsVdirsVUrr/eWb/Ub9RxV1r/ALyw/wCov6hirrr/AHlm/wBRv1HFXWv+8sP+ov6hiqri&#xA;rsVdirsVdirsVdirsVdirsVdirsVdiqldf7yzf6jfqOKutf95Yf9Rf1DFVXFXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FVK6/3lm/1G/UcVda/7yw/6i/qGKuuv95Zv9Rv1HFXWv+8sP+ov6hiqrirsVdir&#xA;sVdirsVdirsVdirsVdirsVdiqldf7yzf6jfqOKutf95Yf9Rf1DFVXFXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FVK6/3lm/1G/UcVda/wC8sP8AqL+oYq66/wB5Zv8AUb9RxV1r/vLD/qL+oYqq4q7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYqpXX+8s3+o36jirrX/eWH/UX9QxVVxV2KuxV2KuxV2KuxV2KuxV2K&#xA;uxV2KuxVSuv95Zv9Rv1HFXWv+8sP+ov6hirrr/eWb/Ub9RxV1r/vLD/qL+oYqq4q7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYqpXX+8s3+o36jirrX/eWH/UX9QxVVxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku&#xA;xVSuv95Zv9Rv1HFXWv8AvLD/AKi/qGKuuv8AeWb/AFG/UcVda/7yw/6i/qGKquKuxV2KuxV2KuxV&#xA;2KuxV2KuxV2KuxV2KqV1/vLN/qN+o4q61/3lh/1F/UMVVcVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VUrr/eWb/Ub9RxV1r/vLD/qL+oYq66/3lm/1G/UcVda/7yw/6i/qGKquKuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KqV1/vLN/qN+o4q61/3lh/1F/UMVVcVdirsVdirsVdirsVdirsVdirsVdirsVUrr/e&#xA;Wb/Ub9RxV1r/ALyw/wCov6hirrr/AHlm/wBRv1HFXWv+8sP+ov6hiqrirsVdirsVdirsVdirsVdi&#xA;rsVdirsVdiqldf7yzf6jfqOKutf95Yf9Rf1DFVXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVK6/3l&#xA;m/1G/UcVda/7yw/6i/qGKuuv95Zv9Rv1HFXWv+8sP+ov6hiqrirsVdirsVdirsVdirsVdirsVdir&#xA;sVdiqldf7yzf6jfqOKutf95Yf9Rf1DFVXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVK6/3lm/1G/U&#xA;cVda/wC8sP8AqL+oYq66/wB5Zv8AUb9RxV1r/vLD/qL+oYqq4q7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYqpXX+8s3+o36jirrX/eWH/UX9QxVVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSuv95Zv9Rv1H&#xA;FXWv+8sP+ov6hirrr/eWb/Ub9RxV1r/vLD/qL+oYqq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpX&#xA;X+8s3+o36jirrX/eWH/UX9QxVVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSuv95Zv9Rv1HFXWv8A&#xA;vLD/AKi/qGKvkD8w/wAytd83axcSPcyRaQrstlYIxWNYq0Uuo+07D7RP6sVRv5V/mXrnlrzBZW8t&#xA;3JLodzKkN3aSMWRVc8fUQN9hkrXbr0OKvrL61a/7+T/gh/XFXfWrX/fyf8EP64q761a/7+T/AIIf&#xA;1xV31q1/38n/AAQ/rirvrVr/AL+T/gh/XFXfWrX/AH8n/BD+uKu+tWv+/k/4If1xV31q1/38n/BD&#xA;+uKu+tWv+/k/4If1xV31q1/38n/BD+uKu+tWv+/k/wCCH9cVd9atf9/J/wAEP64q761a/wC/k/4I&#xA;f1xV8g/mL+ZWuebdZuZGupI9HV2SxsUYpGIgSFZ1B+J2G7E/LpiqK/K78zNc8s6/ZwyXck2iTyrF&#xA;d2UjlkVHPH1Iw1eLJXlt16HFX1p9atf9/J/wQ/rirvrVr/v5P+CH9cVd9atf9/J/wQ/rirvrVr/v&#xA;5P8Agh/XFXfWrX/fyf8ABD+uKu+tWv8Av5P+CH9cVd9atf8Afyf8EP64q761a/7+T/gh/XFXfWrX&#xA;/fyf8EP64q761a/7+T/gh/XFXfWrX/fyf8EP64q761a/7+T/AIIf1xV31q1/38n/AAQ/rir5N/NT&#xA;8y9c8y+YL23iu5ItDtpXhtLSNiqMqHj6jhfts9K79OgxVB/l3+ZWu+UtYt5EuZJdIZ1W9sHZmjMR&#xA;NGZFNeLqN1I/VirvzE/LXXfKWsXEb20kukM7NZX6KzRmImqq7CvF1GzA/qxVGflX+WmueZfMFlcS&#xA;2kkWh20qTXd3IpVGVDy9NC322elNunU4q+svqtr/AL5T/gR/TFXfVbX/AHyn/Aj+mKu+q2v++U/4&#xA;Ef0xV31W1/3yn/Aj+mKu+q2v++U/4Ef0xV31W1/3yn/Aj+mKu+q2v++U/wCBH9MVd9Vtf98p/wAC&#xA;P6Yq76ra/wC+U/4Ef0xV31W1/wB8p/wI/pirvqtr/vlP+BH9MVd9Vtf98p/wI/pirvqtr/vlP+BH&#xA;9MVfIP5i/lprvlLWblDayy6Ozs9lforPGYiSVV3A+F1GzA/PpiqK/K78s9c8za/ZzSWkkOiQSrLd&#xA;3siFUZEPL04y1OTPTjt06nFX1p9Vtf8AfKf8CP6Yq76ra/75T/gR/TFXfVbX/fKf8CP6Yq76ra/7&#xA;5T/gR/TFXfVbX/fKf8CP6Yq76ra/75T/AIEf0xV31W1/3yn/AAI/pirvqtr/AL5T/gR/TFXfVbX/&#xA;AHyn/Aj+mKu+q2v++U/4Ef0xV31W1/3yn/Aj+mKu+q2v++U/4Ef0xV31W1/3yn/Aj+mKvk381Py0&#xA;1zy15gvbiK0kl0O5lea0u41LIqueXpuV+wyVpv16jFUH+Xf5a675t1i3jS2ki0hXVr2/dWWMRA1Z&#xA;UY05Ow2UD9WKvr66/wB5Zv8AUb9RxV1r/vLD/qL+oYqq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;pXX+8s3+o36jirrX/eWH/UX9QxVVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSuv95Zv9Rv1HFXWv&#xA;+8sP+ov6hirrr/eWb/Ub9RxV1r/vLD/qL+oYqq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpXX+8s&#xA;3+o36jirrX/eWH/UX9QxVVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSuv95Zv9Rv1HFXWv8AvLD/&#xA;AKi/qGKuuv8AeWb/AFG/UcVda/7yw/6i/qGKquKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqV1/vLN&#xA;/qN+o4q61/3lh/1F/UMVVcVdirsVdirsVdirsVdirsVdirsVdirsVUrr/eWb/Ub9RxV1r/vLD/qL&#xA;+oYq66/3lm/1G/UcVda/7yw/6i/qGKquKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqV1/vLN/qN+o4&#xA;q61/3lh/1F/UMVVcVdirsVdirsVdirsVdirsVdirsVdirsVUrr/eWb/Ub9RxV1r/ALyw/wCov6hi&#xA;rrr/AHlm/wBRv1HFXWv+8sP+ov6hiqrirsVdirsVdirsVdirsVdirsVdirsVdiqldf7yzf6jfqOK&#xA;utf95Yf9Rf1DFVXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVK6/3lm/1G/UcVda/7yw/6i/qGKuuv&#xA;95Zv9Rv1HFXWv+8sP+ov6hiqrirsVdirsVdirsVdirsVdirsVdirsVdiqldf7yzf6jfqOKutf95Y&#xA;f9Rf1DFVXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVK6/3lm/1G/UcVda/wC8sP8AqL+oYq66/wB5&#xA;Zv8AUb9RxV1r/vLD/qL+oYqq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpXX+8s3+o36jirrX/eWH&#xA;/UX9QxVVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSuv95Zv9Rv1HFXWv+8sP+ov6hirrr/eWb/Ub&#xA;9RxV1r/vLD/qL+oYqq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpXX+8s3+o36jirrX/eWH/UX9Qx&#xA;VVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSuv95Zv9Rv1HFXWv8AvLD/AKi/qGKuuv8AeWb/AFG/&#xA;UcVda/7yw/6i/qGKquKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqV1/vLN/qN+o4q61/3lh/1F/UMV&#xA;VcVdirsVdirsVdirsVdirsVdirsVdirsVUrr/eWb/Ub9RxV1r/vLD/qL+oYq66/3lm/1G/UcVda/&#xA;7yw/6i/qGKquKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqV1/vLN/qN+o4q61/3lh/1F/UMVVcVdir&#xA;sVdirsVdirsVdirsVdirsVdirsVUrr/eWb/Ub9RxV1r/ALyw/wCov6hirrr/AHlm/wBRv1HFXWv+&#xA;8sP+ov6hiqrirsVdirsVdirsVdirsVdirsVdirsVdiqldf7yzf6jfqOKutf95Yf9Rf1DFVXFXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FVK6/3lm/1G/UcVda/7yw/6i/qGKuuv95Zv9Rv1HFXWv+8sP+ov&#xA;6hiqrirsVdirsVdirsVdirsVdirsVdirsVdiqldf7yzf6jfqOKutf95Yf9Rf1DFVXFXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FVK6/3lm/1G/UcVda/wC8sP8AqL+oYq66/wB5Zv8AUb9RxV1r/vLD/qL+&#xA;oYqq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpXX+8s3+o36jirrX/eWH/UX9QxVVxV2KuxV2KuxV&#xA;2KuxV2KuxV2KuxV2KuxVSuv95Zv9Rv1HFXWv+8sP+ov6hir5H/MP80/MXmnWLkx3kttoyuyWdjE7&#xA;Inpg0VpApHN2G5r8htiqN/Kz80/MHl/zBZWl3ey3OhXMqw3NtMxdY1c8RJGWqU4E1IGxGKvqv61a&#xA;/wC/k/4If1xV31q1/wB/J/wQ/rirvrVr/v5P+CH9cVd9atf9/J/wQ/rirvrVr/v5P+CH9cVd9atf&#xA;9/J/wQ/rirvrVr/v5P8Agh/XFXfWrX/fyf8ABD+uKu+tWv8Av5P+CH9cVd9atf8Afyf8EP64q761&#xA;a/7+T/gh/XFXfWrX/fyf8EP64q761a/7+T/gh/XFXyb+Zf5qeYPMuuXcVvey22hxSNHaWkLlFZFP&#xA;EPJxpzZ+u/ToMVd+Wn5qeYPLWuWkVxey3OhyyLHd2kzl1VGPEvHyrwZOu3XocVfWX1q1/wB/J/wQ&#xA;/rirvrVr/v5P+CH9cVd9atf9/J/wQ/rirvrVr/v5P+CH9cVd9atf9/J/wQ/rirvrVr/v5P8Agh/X&#xA;FXfWrX/fyf8ABD+uKu+tWv8Av5P+CH9cVd9atf8Afyf8EP64q761a/7+T/gh/XFXfWrX/fyf8EP6&#xA;4q761a/7+T/gh/XFXfWrX/fyf8EP64q+VPzT/NPzB5g8wXtpaXsttoVtK0NtbQsUWRUPEySFaF+Z&#xA;FQDsBiqC/Lz80/MXlbWLYyXktzozOqXljK7Onpk0ZowxPB1G4p8jtiqC/ML8vda8oa1cW9xbu2ms&#xA;5NjfAExyRk/CC3QOBsyn9WKo38rPy71jzT5itJBbumjW0qS3t46kRlEYExqxFGd+lB8zir64+q2v&#xA;++U/4Ef0xV31W1/3yn/Aj+mKu+q2v++U/wCBH9MVd9Vtf98p/wACP6Yq76ra/wC+U/4Ef0xV31W1&#xA;/wB8p/wI/pirvqtr/vlP+BH9MVd9Vtf98p/wI/pirvqtr/vlP+BH9MVd9Vtf98p/wI/pirvqtr/v&#xA;lP8AgR/TFXfVbX/fKf8AAj+mKu+q2v8AvlP+BH9MVfIP5lfl3rHlLXblJLd20iWRnsL1VJiMbNVU&#xA;ZhsrrWhU/qxV35a/l3rHm3XbZI7d10iKRXv71lIiEatVkVjsztSgUfqxV9ffVbX/AHyn/Aj+mKu+&#xA;q2v++U/4Ef0xV31W1/3yn/Aj+mKu+q2v++U/4Ef0xV31W1/3yn/Aj+mKu+q2v++U/wCBH9MVd9Vt&#xA;f98p/wACP6Yq76ra/wC+U/4Ef0xV31W1/wB8p/wI/pirvqtr/vlP+BH9MVd9Vtf98p/wI/pirvqt&#xA;r/vlP+BH9MVd9Vtf98p/wI/pir5H/NP8u9Y8reYruQ27vo1zK8tleIpMYR2JEbMBRXTpQ/MYqgvy&#xA;9/L3WvN+tW9vb27rpquDfXxBEccYPxAN0LkbKo/Vir//2Q==</xmpGImg:image>\n               </rdf:li>\n            </rdf:Alt>\n         </xmp:Thumbnails>\n         <xmpMM:OriginalDocumentID>uuid:C1BCCE1871B8DB11993190FCD52B4E9F</xmpMM:OriginalDocumentID>\n         <xmpMM:DocumentID>xmp.did:1a1fa89a-cf96-4c07-bde1-c245ef28d4f5</xmpMM:DocumentID>\n         <xmpMM:InstanceID>uuid:61b4c6e7-933f-aa45-a8a5-f20311e424eb</xmpMM:InstanceID>\n         <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>\n         <xmpMM:DerivedFrom rdf:parseType=\"Resource\">\n            <stRef:instanceID>uuid:3475da6f-f821-6b47-9d03-3157c8745d3c</stRef:instanceID>\n            <stRef:documentID>xmp.did:3eb636b9-3c86-4540-8758-407a64fdb135</stRef:documentID>\n            <stRef:originalDocumentID>uuid:C1BCCE1871B8DB11993190FCD52B4E9F</stRef:originalDocumentID>\n            <stRef:renditionClass>proof:pdf</stRef:renditionClass>\n         </xmpMM:DerivedFrom>\n         <xmpMM:History>\n            <rdf:Seq>\n               <rdf:li rdf:parseType=\"Resource\">\n                  <stEvt:action>saved</stEvt:action>\n                  <stEvt:instanceID>xmp.iid:1a1fa89a-cf96-4c07-bde1-c245ef28d4f5</stEvt:instanceID>\n                  <stEvt:when>2018-05-02T08:47:41-04:00</stEvt:when>\n                  <stEvt:softwareAgent>Adobe Illustrator CC 22.0 (Macintosh)</stEvt:softwareAgent>\n                  <stEvt:changed>/</stEvt:changed>\n               </rdf:li>\n            </rdf:Seq>\n         </xmpMM:History>\n         <illustrator:Type>Document</illustrator:Type>\n         <illustrator:StartupProfile>Mobile</illustrator:StartupProfile>\n         <xmpTPg:NPages>1</xmpTPg:NPages>\n         <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>\n         <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>\n         <xmpTPg:MaxPageSize rdf:parseType=\"Resource\">\n            <stDim:w>1024.000000</stDim:w>\n            <stDim:h>1024.000000</stDim:h>\n            <stDim:unit>Pixels</stDim:unit>\n         </xmpTPg:MaxPageSize>\n         <xmpTPg:PlateNames>\n            <rdf:Seq>\n               <rdf:li>Cyan</rdf:li>\n               <rdf:li>Magenta</rdf:li>\n               <rdf:li>Yellow</rdf:li>\n               <rdf:li>Black</rdf:li>\n            </rdf:Seq>\n         </xmpTPg:PlateNames>\n         <xmpTPg:SwatchGroups>\n            <rdf:Seq>\n               <rdf:li rdf:parseType=\"Resource\">\n                  <xmpG:groupName>Default Swatch Group</xmpG:groupName>\n                  <xmpG:groupType>0</xmpG:groupType>\n                  <xmpG:Colorants>\n                     <rdf:Seq>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>White</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>255</xmpG:red>\n                           <xmpG:green>255</xmpG:green>\n                           <xmpG:blue>255</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>Black</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>0</xmpG:green>\n                           <xmpG:blue>0</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>RGB Red</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>255</xmpG:red>\n                           <xmpG:green>0</xmpG:green>\n                           <xmpG:blue>0</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>RGB Yellow</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>255</xmpG:red>\n                           <xmpG:green>255</xmpG:green>\n                           <xmpG:blue>0</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>RGB Green</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>255</xmpG:green>\n                           <xmpG:blue>0</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>RGB Cyan</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>255</xmpG:green>\n                           <xmpG:blue>255</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>RGB Blue</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>0</xmpG:green>\n                           <xmpG:blue>255</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>RGB Magenta</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>255</xmpG:red>\n                           <xmpG:green>0</xmpG:green>\n                           <xmpG:blue>255</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>193</xmpG:red>\n                           <xmpG:green>39</xmpG:green>\n                           <xmpG:blue>45</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>237</xmpG:red>\n                           <xmpG:green>28</xmpG:green>\n                           <xmpG:blue>36</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>241</xmpG:red>\n                           <xmpG:green>90</xmpG:green>\n                           <xmpG:blue>36</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>247</xmpG:red>\n                           <xmpG:green>147</xmpG:green>\n                           <xmpG:blue>30</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>251</xmpG:red>\n                           <xmpG:green>176</xmpG:green>\n                           <xmpG:blue>59</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>252</xmpG:red>\n                           <xmpG:green>238</xmpG:green>\n                           <xmpG:blue>33</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>217</xmpG:red>\n                           <xmpG:green>224</xmpG:green>\n                           <xmpG:blue>33</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>140</xmpG:red>\n                           <xmpG:green>198</xmpG:green>\n                           <xmpG:blue>63</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>57</xmpG:red>\n                           <xmpG:green>181</xmpG:green>\n                           <xmpG:blue>74</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>146</xmpG:green>\n                           <xmpG:blue>69</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>104</xmpG:green>\n                           <xmpG:blue>55</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>34</xmpG:red>\n                           <xmpG:green>181</xmpG:green>\n                           <xmpG:blue>115</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>169</xmpG:green>\n                           <xmpG:blue>157</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>41</xmpG:red>\n                           <xmpG:green>171</xmpG:green>\n                           <xmpG:blue>226</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>113</xmpG:green>\n                           <xmpG:blue>188</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>46</xmpG:red>\n                           <xmpG:green>49</xmpG:green>\n                           <xmpG:blue>146</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>27</xmpG:red>\n                           <xmpG:green>20</xmpG:green>\n                           <xmpG:blue>100</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>102</xmpG:red>\n                           <xmpG:green>45</xmpG:green>\n                           <xmpG:blue>145</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>147</xmpG:red>\n                           <xmpG:green>39</xmpG:green>\n                           <xmpG:blue>143</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>158</xmpG:red>\n                           <xmpG:green>0</xmpG:green>\n                           <xmpG:blue>93</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>212</xmpG:red>\n                           <xmpG:green>20</xmpG:green>\n                           <xmpG:blue>90</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>237</xmpG:red>\n                           <xmpG:green>30</xmpG:green>\n                           <xmpG:blue>121</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>199</xmpG:red>\n                           <xmpG:green>178</xmpG:green>\n                           <xmpG:blue>153</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>153</xmpG:red>\n                           <xmpG:green>134</xmpG:green>\n                           <xmpG:blue>117</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>115</xmpG:red>\n                           <xmpG:green>99</xmpG:green>\n                           <xmpG:blue>87</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>83</xmpG:red>\n                           <xmpG:green>71</xmpG:green>\n                           <xmpG:blue>65</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>198</xmpG:red>\n                           <xmpG:green>156</xmpG:green>\n                           <xmpG:blue>109</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>166</xmpG:red>\n                           <xmpG:green>124</xmpG:green>\n                           <xmpG:blue>82</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>140</xmpG:red>\n                           <xmpG:green>98</xmpG:green>\n                           <xmpG:blue>57</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>117</xmpG:red>\n                           <xmpG:green>76</xmpG:green>\n                           <xmpG:blue>36</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>96</xmpG:red>\n                           <xmpG:green>56</xmpG:green>\n                           <xmpG:blue>19</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>66</xmpG:red>\n                           <xmpG:green>33</xmpG:green>\n                           <xmpG:blue>11</xmpG:blue>\n                        </rdf:li>\n                     </rdf:Seq>\n                  </xmpG:Colorants>\n               </rdf:li>\n               <rdf:li rdf:parseType=\"Resource\">\n                  <xmpG:groupName>Grays</xmpG:groupName>\n                  <xmpG:groupType>1</xmpG:groupType>\n                  <xmpG:Colorants>\n                     <rdf:Seq>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>0</xmpG:red>\n                           <xmpG:green>0</xmpG:green>\n                           <xmpG:blue>0</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>26</xmpG:red>\n                           <xmpG:green>26</xmpG:green>\n                           <xmpG:blue>26</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>51</xmpG:red>\n                           <xmpG:green>51</xmpG:green>\n                           <xmpG:blue>51</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>77</xmpG:red>\n                           <xmpG:green>77</xmpG:green>\n                           <xmpG:blue>77</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>102</xmpG:red>\n                           <xmpG:green>102</xmpG:green>\n                           <xmpG:blue>102</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>128</xmpG:red>\n                           <xmpG:green>128</xmpG:green>\n                           <xmpG:blue>128</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>153</xmpG:red>\n                           <xmpG:green>153</xmpG:green>\n                           <xmpG:blue>153</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>179</xmpG:red>\n                           <xmpG:green>179</xmpG:green>\n                           <xmpG:blue>179</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>204</xmpG:red>\n                           <xmpG:green>204</xmpG:green>\n                           <xmpG:blue>204</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>230</xmpG:red>\n                           <xmpG:green>230</xmpG:green>\n                           <xmpG:blue>230</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>242</xmpG:red>\n                           <xmpG:green>242</xmpG:green>\n                           <xmpG:blue>242</xmpG:blue>\n                        </rdf:li>\n                     </rdf:Seq>\n                  </xmpG:Colorants>\n               </rdf:li>\n               <rdf:li rdf:parseType=\"Resource\">\n                  <xmpG:groupName>Mobile Color Group</xmpG:groupName>\n                  <xmpG:groupType>1</xmpG:groupType>\n                  <xmpG:Colorants>\n                     <rdf:Seq>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=136 G=168 B=13</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>136</xmpG:red>\n                           <xmpG:green>168</xmpG:green>\n                           <xmpG:blue>13</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=127 G=71 B=221</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>127</xmpG:red>\n                           <xmpG:green>71</xmpG:green>\n                           <xmpG:blue>221</xmpG:blue>\n                        </rdf:li>\n                        <rdf:li rdf:parseType=\"Resource\">\n                           <xmpG:swatchName>R=251 G=174 B=23</xmpG:swatchName>\n                           <xmpG:mode>RGB</xmpG:mode>\n                           <xmpG:type>PROCESS</xmpG:type>\n                           <xmpG:red>251</xmpG:red>\n                           <xmpG:green>174</xmpG:green>\n                           <xmpG:blue>23</xmpG:blue>\n                        </rdf:li>\n                     </rdf:Seq>\n                  </xmpG:Colorants>\n               </rdf:li>\n            </rdf:Seq>\n         </xmpTPg:SwatchGroups>\n         <pdf:Producer>Adobe PDF library 15.00</pdf:Producer>\n         <pdfx:CreatorVersion>21.0.0</pdfx:CreatorVersion>\n      </rdf:Description>\n   </rdf:RDF>\n</x:xmpmeta>\n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                                                                                                    \n                           \n<?xpacket end=\"w\"?>\rendstream\rendobj\r3 0 obj\r<</Count 1/Kids[7 0 R]/Type/Pages>>\rendobj\r7 0 obj\r<</ArtBox[221.0 220.0 805.0 804.0]/BleedBox[0.0 0.0 1024.0 1024.0]/Contents 8 0 R/CropBox[0.0 0.0 1024.0 1024.0]/LastModified(D:20180502084744-04'00')/MediaBox[0.0 0.0 1024.0 1024.0]/Parent 3 0 R/PieceInfo<</Illustrator 9 0 R>>/Resources<</ColorSpace<</CS0 10 0 R>>/ExtGState<</GS0 11 0 R>>/Properties<</MC0 5 0 R>>>>/Thumb 12 0 R/TrimBox[0.0 0.0 1024.0 1024.0]/Type/Page>>\rendobj\r8 0 obj\r<</Filter/FlateDecode/Length 332>>stream\r\nHUKN0\u0010\u0014s8_lo1UAU\u0016\u001c \u00026\u0012\u0012I\u0014HU{I\u001c\u0005\u0000\u000e-Bh\u0001І'V?gYAe~}\u0000G\u0011[\b\u000e,FIܠ\u000fޟK)FήQ\u001aMzvyR'Q\rj1Az)+$\u0014Bte%s\u0002*˽6{}X%-7\u0016erCYϖ\u001c8'N\u0018s\u0014\u000e\nb\u000b\u00035\u000f.\rrCkAg -z\u0016\u00185/ۙeml&MسұbY,\nMo\u0002\u001d_OfNԅЛ\u00157W`~\u0013żx_a?Og\u0002\f\u0000fgt\rendstream\rendobj\r12 0 obj\r<</BitsPerComponent 8/ColorSpace 13 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 106/Length 274/Width 106>>stream\r\n8;Z]\"d1(a_$pt9B51ui4G+C/@7i`\"<Ko@,5bD-^;NF[>o`Y`3E0a3[o(U9:e,VZ7H\n^`NN7bp'L%G'6q*2(>tZK'*j3/Eh0?nFu=I`]o\")?nK(2e'^h]oOQD5ZDZnX0meeL\n'XO_$8MPRLSlTHA1sp$FX>FZmU7PP&>VA<b)jUEpW\\j/DgZI`Xg%5)??r%RrrW1\")\n.=+n9St[UOlm[6YbatQ,Q'5#X%9+D%@_&b1++)>FGGT;Vp@WI9):lk>!+UsB`gBQm\n)ZUeC!kJ~>\rendstream\rendobj\r13 0 obj\r[/Indexed/DeviceRGB 255 14 0 R]\rendobj\r14 0 obj\r<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream\r\n8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@\"pJ+EP(%0\nb]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\\Ulg9dhD*\"iC[;*=3`oP1[!S^)?1)IZ4dup`\nE1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\\.?d>Mn\n6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1\nVNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<\nPO7r\\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(\nl[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\\~>\rendstream\rendobj\r5 0 obj\r<</Intent 15 0 R/Name(Layer 1)/Type/OCG/Usage 16 0 R>>\rendobj\r15 0 obj\r[/View/Design]\rendobj\r16 0 obj\r<</CreatorInfo<</Creator(Adobe Illustrator 22.0)/Subtype/Artwork>>>>\rendobj\r11 0 obj\r<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>\rendobj\r10 0 obj\r[/ICCBased 17 0 R]\rendobj\r17 0 obj\r<</Filter/FlateDecode/Length 2574/N 3>>stream\r\nHyTSw\u0016oɞc\r[\u00065la\u001d\u0004Q\bI\b\u0001\u0012BH\u0005AD\u0005\u0014ED2mtFOE.c\u000e}\u000308\u0016׎\u00178GNg\u001f9w߽\u0000'0\u000b\u0000֠J\u0016\u0015\u0014b\t\u0000\u0003\n \u0002\u0011\u00002y.-;!\u0007KZ\t^\u0007i\"L0-\r\u0000@\u00198\u0007(r;q7L\u0019y&Q\u0013\u0004q4j|9\nV)gB0iW\u00198#8wթ8_٥ʨQ\u0014Qj\u0001@&A)/\u000fg>'K\u0002\u0000t;\\\u000e\u001b\r\u0006ӥ$պFZUn\u001e(4T%)뫔\u00060C&\u0015Zi\u001b\u00018bxEB\u001f;Pӓ̹A\u000bom?W=\nx\u0016-\u0000\u0004[\u00000\u001d}y)7\u0018ta>jT7\u000e@tܛ`q2ʀ&6ZLĄ?\u001d_\u001dyxg)˔z\u0016çLU*\u0006u\u0016SkS\u0013eO4?׸c\u0001\u0007.\u0000\u000b\u0000\u0000R\r߁-\u000725\tS>ӣVd`rn~Y\u0002\u0002\u0002&\u0001+`\u000f;\u0010\u0002\u0010\u0002A4\u0007 \u001d\u0002\u0014A9\u0000=\u0007-\u001dt\u001e\u001el\u0002`;\u0018\u0003~p\u0010\tGp\u001e|\t[`\u0012L`\u0006<\u0005 \b\"A\f\u000bYA\u000e+\u0005Cb(\u0012R,\u0000*T\u00162B-\n\u0007ꇆ\u001dnQ\u0004t\u000e\u0004}\u0005MA\u000f0\u0002a\u001el\u0007\u0018S\u001cx\tk&\u0013^\u0007\u000f>0|\u0002>\u000f_',\u0002\u0010\u001aG\u001c\u0011!\"F$H:R!z\u0015F\u0006Qd?r\f9\\A&G\u000brQ\f\u0015h\u0012\u001a\u0015E]a4z\u0005Bg\u0004\u0006E\b#H\t\b*B=0HIpp0MxJ$\u0012D\u00011D, V\u0010ĭ\u0003KĻY\u0012dE\"EI2EBGt4MzN\u001d\u0004r!YK \u000f?%_&#(0J:EAiQ((\u0017)ӔWT6U@P+!~\u0019m\u0013\u001aD\u000beԴ!hӦh/\u001c']B/\u001b\u001fҏӿ?a0\u0018nhF!X8܌kc&5S\u001d6lIa2cKMA!E#\u0016ƒdV\b(\u0006kel\r}}Cq9\nN'\u0003)].uJr\n\u0018\fwG\txR^\u0005[\u0004oƜc\u001ehg`>b$\u001f*~\u001f :Eb~\u0016,m,-ݖ\u0007,Y¬*6X[ݱF=3뭷Y~dó\tt\u001ci\u000bzf6~`{v.Ng#{}}\u000f\u001c\u000e\u000ej\u0001\u001cc1X\u00156f\u001cm\u001d\u001c;\u001c'\u001c_9\tr:\u000e8q:˜\u0007O:ϸ8uJq\u0015nv=MmR \u00154\t\nn3ܣkGݯz\u0010=\u001e\u001e[==<=G</z^^j^\tޡZQ\u001bB0FX'+t<u-{__ߘ-\u0011G,\u0010\u001d\u0013}/\u001f\u001a\bH\bh\u000b8\u0012mW2p[AiAN\u0006#8$X\u001f?AKHI{!7<qWy(!46-\u0017aaa\u000f\u0017W\t@@`l\b\bYĎH,$((Yh7ъb<b*b<~\u0014L\u0012&Y&9\u001e%uMssNpJP%MI\fJlN<DHJIڐtCj'KwKgC%Nd\f|ꙪO=\u0006%mLuvx:HoL!ȨC&13#s$/Y=Osbsrn\u001asO1v=ˏϟ\\h٢\u0005\u0005#¼\u0017oZ<]\u0014TUt}`IÒsKV-Y,+>TB(/S,]6*-W:#7\u001f*\u0015\u0003\u0007\be^YDY}UjAyT`#D=\"b{ų\u000f+ʯ:!kJ4G\u001cmt}uC%K7Y\u0013VfFY\u000b.=b?S\u0017ƕƩȺy\u001a\rچ\u000bk\u001a5%4\u0019m7lqlioZ\u0016lG+Zz͹mzy]?uuw|\"űNwW&e֥ﺱ*|j5\u0001kyݭǯg^y\u0017kEklD_p߶7Dmo꿻1m\u0001l{Mś\r\u0006\u000enLl<9O\u0000\u0001[$h՛B\u001cdҞ@\u001diءG&\u0006vVǥ8\u001anRĩ7\u001c\u0002u\\ЭD-\u0016\u0000u`ֲK³8%\u0013\u0001yhYѹJº;.!\u0015\nzpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\\dlvۀ\u0005܊\u0010ݖ\u001cޢ)߯6DScs\r\u001f2F[p\u0011(@Xr\u00194Pm\u00198Ww\u0007)Km\u0002\f\u0000\rendstream\rendobj\r9 0 obj\r<</LastModified(D:20180502084744-04'00')/Private 18 0 R>>\rendobj\r18 0 obj\r<</AIMetaData 19 0 R/AIPrivateData1 20 0 R/AIPrivateData2 21 0 R/AIPrivateData3 22 0 R/ContainerVersion 11/CreatorVersion 22/NumBlock 3/RoundtripStreamType 1/RoundtripVersion 17>>\rendobj\r19 0 obj\r<</Length 1239>>stream\r\n%!PS-Adobe-3.0 \r%%Creator: Adobe Illustrator(R) 17.0\r%%AI8_CreatorVersion: 22.0.1\r%%For: (Jo Albright) ()\r%%Title: (Untitled-3)\r%%CreationDate: 5/2/18 8:47 AM\r%%Canvassize: 16383\r%%BoundingBox: 221 -804 805 -220\r%%HiResBoundingBox: 221 -804 805 -220\r%%DocumentProcessColors: Cyan Magenta Yellow Black\r%AI5_FileFormat 13.0\r%AI12_BuildNumber: 249\r%AI3_ColorUsage: Color\r%AI7_ImageSettings: 0\r%%RGBProcessColor: 0 0 0 ([Registration])\r%AI3_Cropmarks: 0 -1024 1024 0\r%AI3_TemplateBox: 512.5 -512.5 512.5 -512.5\r%AI3_TileBox: 224 -868 800 -134\r%AI3_DocumentPreview: None\r%AI5_ArtSize: 14400 14400\r%AI5_RulerUnits: 6\r%AI9_ColorModel: 1\r%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0\r%AI5_TargetResolution: 800\r%AI5_NumLayers: 1\r%AI17_Begin_Content_if_version_gt:17 1\r%AI9_OpenToView: -378.601966752517 1.64106766565146 0.8542 1668 998 18 0 0 6 42 0 0 0 1 1 0 1 1 0 0\r%AI17_Alternate_Content\r%AI9_OpenToView: -378.601966752517 1.64106766565146 0.8542 1668 998 18 0 0 6 42 0 0 0 1 1 0 1 1 0 0\r%AI17_End_Versioned_Content\r%AI5_OpenViewLayers: 7\r%%PageOrigin:424 -616\r%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142\r%AI9_Flatten: 1\r%AI12_CMSettings: 00.MS\r%%EndComments\r\rendstream\rendobj\r20 0 obj\r<</Length 6211>>stream\r\n%%BoundingBox: 221 -804 805 -220\r%%HiResBoundingBox: 221 -804 805 -220\r%AI7_Thumbnail: 128 128 8\r%%BeginData: 6076 Hex Bytes\r%0000330000660000990000CC0033000033330033660033990033CC0033FF\r%0066000066330066660066990066CC0066FF009900009933009966009999\r%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66\r%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333\r%3333663333993333CC3333FF3366003366333366663366993366CC3366FF\r%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99\r%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033\r%6600666600996600CC6600FF6633006633336633666633996633CC6633FF\r%6666006666336666666666996666CC6666FF669900669933669966669999\r%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33\r%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF\r%9933009933339933669933999933CC9933FF996600996633996666996699\r%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33\r%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF\r%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399\r%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933\r%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF\r%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC\r%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699\r%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33\r%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100\r%000011111111220000002200000022222222440000004400000044444444\r%550000005500000055555555770000007700000077777777880000008800\r%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB\r%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF\r%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF\r%524C45FFA852275252FD37FFA852275252FD37FFA87D275252A8FFA8FD06\r%27FD35FFA852FD0527A8FD34FFA852FD0527A8522752275227277DFD34FF\r%7D27522752272752FD34FF7D275227522752522727275227272752A8FFA8\r%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8\r%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF2727275227272752A8FFA8\r%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8\r%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF52272752FD042752275227\r%52275252FD05FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF\r%FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF522752275227\r%5252FD05FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8\r%FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF5227522752275227\r%522727522727277DFD34FF7D2727522727277DFD34FF7D27275227272752\r%FF522727522752FD36FF522727522752A8FD35FF522727522752A8FFFF52\r%52527DFD38FF7D52527DA8FD37FF7D52277DA8FD04FFA8FD3BFFA8FD44FF\r%A8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD\r%3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD06FF\r%A8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD\r%3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FF\r%A8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD\r%3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD06FF\r%A8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD\r%3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD87FF\r%A8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD\r%3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD87FF\r%A8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD\r%3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FF\r%A8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD\r%3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD06FF\r%A8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD\r%3BFFA8FD04FFA87D52527DFD37FFA87D52527DFD38FF7D525252FFFFA827\r%2752272727FD35FFA8272752272727FD35FFA852FD0527A8522752275227\r%277DFD34FF7D2752275227277DFD34FF7D27522752272752275227272752\r%2752A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF\r%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8FD0527522752\r%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF\r%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF52FD042752272752\r%27522752275252FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFF\r%A8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA852\r%27522752275252FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFF\r%A8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA852\r%2752275227522752FD042752277DFD34FF52FD042752277DFD34FF7DFD04\r%27522752FF272727522752FD36FF272727522752FD36FF522727522752A8\r%FFA85252277DA8FD36FFA85252277DA8FD37FF52522752A8FD04FFA8FD3B\r%FFA8FD44FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8\r%FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3B\r%FFA8FD87FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD06FFA8\r%FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3B\r%FFA8FD08FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD87FFA8\r%FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3B\r%FFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD87FFA8\r%FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3B\r%FFA8FD08FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8\r%FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3B\r%FFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD06FFA8\r%FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3B\r%FFA8FD87FFA8FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8\r%FD3BFFA8FD3BFFA8FD06FFA8FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3B\r%FFA8FD87FFA8FD3BFFA8FD3BFFA8FD87FFA8FD3BFFA8FD3BFFA8FD06FFA8\r%FD3BFFA8FD3BFFA8FD08FFA8FD3BFFA8FD3BFFA8FD05FF7D527D7DFD38FF\r%7D52527DFD38FFA852527DFFFFA852FD042752FD35FFA852FD042752FD35\r%FFA852FD0527FF7D2752275227277DFD34FF7D2752275227277DFD34FF7D\r%275227522727522727275227272752A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8\r%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8\r%FFA8FFA8FFA8FF2727275227272752A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8\r%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8\r%FFA8FFA8FFA8FF52272752FD04275227522752275252FD05FFA8FFFFFFA8\r%FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF\r%FFA8FFFFFFA8FFFFFFA8FFA85227522752275252FD05FFA8FFFFFFA8FFFF\r%FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8\r%FFFFFFA8FFFFFFA8FFFF5227522752275227522727522727277DFD34FF52\r%2727522727277DFD34FF7D27275227272752A8272727522752A8FD35FF27\r%2727522752A8FD35FF522727522727A8FFA852272752A8FD36FFA8522727\r%52A8FD37FF52272752A8FF\r%%EndData\r\rendstream\rendobj\r21 0 obj\r<</Length 65536>>stream\r\n%AI12_CompressedDatax\u001cGv\u0004\u000eȬ{m\u0014ޱ5tif$\u001b\u001bA$\b\u0004h ZGfdU\u0016\u0000lv\u0006\u0015\u0004s9?E\u001a\u000fß/޿}˃?=}~\u001fv5j/ݷ޾!j\u0007p\u001f߽?g?:wo~O\u0017{^'럧?\u000e\u0017o~o_:9ywozw7o_n;\u001d~尌xo^~Qwoo/_~o}xs\u0017ә\u0017x=ܼ~\fzë/_x2q)}qݫ_w_K{*+\u001f/|ɿVe7\u001f/~>t!򛿸?>{\u0014˾{/\u000b=b\u001aS91N˯y)]_XM\t5#%Ο__\u001e훗1\u00116\u0014}Ǚ|廿{\u001ep5f~\u001f't;\u0006w{^+wMbv\u0007_,6/n4Qot7_/~\u001frj1loyoW/r[qZT\u0019t5i<׹Ne>WK-IY !>ܞz:=G~7Zq~{߿ꋾ%_~6sMtkQhz\u0002\u0005\u001c4\u0017^}u\"і\u000eK{]i!5kZ??m2\u0016\u001f$fNt^-vvgUoXG@\u000eR.\u001d3wĴ\u0004ሮ\u001b9,_w:\u0017~ͯg\u0012/D_\u001d\u001f~\u0011>\u0017_\u00028ūo~޽<I}ӿn^߿|ecǯ/޼xw\u000bM\f|?\"o4\u001d<\u0007\u0006N}F͓\u000b\u0017wrN]#W|??n]߾Ƿ_}O~k۷_~KȻͻ߾}tٳS\u0015\u001fSiy;\u0001$q\u0012\u0013;ׯ~7KpxLz/|6Ұ쓗p+mg\u0007__hxz+m~\u001c\u001bo7/ٷ=^Z/~\u00015͛xWҷ\u001f^|%p___|ǒp߇eMi\u001dǲ$}2kk2Q朆II/\u0013K[̨~\\%2Mm|25Mu^<ß}qs\u000bzxr[\u0014Ƿ=<m\u000fOn{ZJsڬ'\u001f\tn?\u001e}kw;c\\f\"7_߼{w/>\u001e}g\u001cZײ4״\\ic2ٛepm)e^gh>[t:Tˊ]\u000e޽Ji>5\u0018zyrc\\uܭ7\reyU\u0013GD/rdjZ=[\u001dzͭܦAǝ\u001b=\u0019eγE8A}q[otNuMGEGiMЃ\u000ee|:R\u0019˘\u001f򽎻|C/׼hYcV9ϔ!ǽtFu\u001b%5\u001d<bMrtg1rL\u000fӽ;\u001d7\u001b2\u000eY^:ʤ0~\u0007\u001d㝎[\u0019u>\u0016\u001d\u000f-n?ra,zxgoyO?^[\u001d77s}h!oz337Y\u0007>q\"E\u0002Ŕ9\u0016ɘh\u0007\u001dw\"[\u001d:D\r&\u001cH'~q'\u0012qc2^ii^*&\u0012UAW(ںowsoU\u0016w^ \t]b!a\u0010\b\u001a՟\u001bH\"7*N\u000f.#?χ/(%\u0002Y\u0016(Em7ӽ$:W}\u001eEU3vDCi(b\fr_ǚE\u0016mzWz\t\u001f4GY\u001bu,މ\u0014'YpyBe-\\\u0013\u0007[\u001f\u0006pւ/\"\u0007F\u00124\u0011ϵH^\u00147i\u0015MRӢw.k;]뻛A'W\u001f}\u0013\u0011?\u000f4I\u001bU0\u000f\u0011Ŭ\u000f7xiYF-\f\u0017p \"Bz)\u000b:\u0016Aww@;)B\u001cP?Zpc3_|`\u000bO&ob\t]5/O֝vσl\u001cn&o|V\u0016x6g\u0007{^߹nyAےohu>>h4i%`\u0001\u0002<\u0016/1wL\b?\u0013'̃E\\hxc-\u000ftZ\"\u0016h|BuK}I};{hSj%Ysn\u001d.q/+\u0006\bۄՋ^X~屭\u0017$3g\"u\u001d`\u001e:y'Ѝ=t\u0005\u0018/\u0012\u0015!ܖ6\u0016xjsc\twgNtw\rۓn0GnOy\u001b/g\u000ej\u0002\u001chS\u000eӑ\u000e\u001a;=zY\"k]9kBH&xF\u0011ҽ(Vu{.zY^DȚ\u00041r\u0005H\u0007-M,7u'dƵ%F\u000b5QO~q5\f\u0004^@D\u000f'õa`l\t[-\t\u0000\u00010[\u0000\u0004\u001f<\u000fGcqUpV82\u001ee\td;鍵k\u001bź\u0014`U+\u001a\u0019+\u0019,BXQԮML]FXsZQH\u000f<<\u0003\u000fO@\u001f遇'z\u001eIGM?½ѵQ{\u0006ρ$b> um\u0018!;EV̔u0U'a{\u0006G\u0005OhD$w>&߽y_\u001d~?8d8]Xa>u,Ii\u0018$ũɣ:Jj<\u0015mU[@\u0011 ц\u00125iWA\fΊTXB\u0018H)1\u0015*K\u0014\u0013DI\u0000i\u0016\u001b7\u0016\u0019f2\u001c\u0015PK6dlH`\u0013\u0005f\u0003wG9p?tQ0u$A\u0010\b!\u0012B(h8\t&ˊM^~<l\u0007Z.\u001f#_<3G=?\u001f٣=\fϞZ}=\u0006r\f6ӏ\u00170hM!٦EGFYYjp\u001boxI)Mn%\u001f\u000f\u0014\u001cz\u0010aum5V~XŽn{o\u0012\u001c,2^:YgݘIS9jzOwʩSb覝\u0011utOsOOLinzWq{<kc6;\u001emi\u0010GQ\u001e\u001da^8txh|,cIc؀{|\u0005?g\\\u001cd?\u00166=iܘH\u0014R\u000e\u0017\u0001DF$ӣZ-Y`:O6M\u001dU<u{x \u001b\u000fskKn?\"E¹҆eI7;Ks򸜸\u001dZڎ;\u001aS\u001es3\u000e3<a2l\u0011ùp<4`B\u001f;4\\U\u001f>ga\u001fq\u0005\u000b>\u001f\u0011>\r+׵{\u0002\u0018\u000f\u001e<\rda[Cd\u0016[#ZnZQv\u001c|\rhS\u0006sY}qn\r\b\u000f߃\b:>~\u0007 \u0006Ok6V{쳃m6XbB\t\u001d\u001c?t-\u001a|d\u0010ۦrWݮ\u0019R6\u0006[P';io\b-sҺ\u0019݅q\u0017]<CMrO9O\u001bf/'\u001dç\u000f \u000f\u000f\u000fw\u000f7x>N+j\u0003TmNw+wN߻\u001b{gz'yqXȳݻ8wqŭ\u001bNp9\u0017pvW\u001f{q\u001bS;7{?n\u000e-ܹ\rn8uí\u001bݛ\u001eJ^\u001b\u0001\u0012!ީG]/{\u001dlǙ[58.H\u001cCv\\8X.8m7mnl\nr<\r@է|v<Npr\u001f3\u0007aO;n?\u0018>m3\u000bC7g\u000e| O9g\u000e?\u000bl~L>)6RF\bϵq\u0006#<O\u0018\u000bnX2Bli\u0003U\u00163#!i<\b'HSzogHN\u0019 (\u000e=3x=NդC.Wt\u0002Q|`Zjim\u0017x=2<\u0007\u000eˠicw-\u0000pQz\u0003XÿJ(̆\u000ez\u0004lx]|M?ζEkem2\u0005.~7\u0000JP`n\"\u00194g}icC,`$\u0005@˧|r\u0019t@F\u0004lF)\u0005\u001a\u000f#aN4&i\u0006\u001fF,S\u001a0˨-V$(-\u000f\u0014\u0000OaR\u0019T?_?1\nLg*\u0017>33b\u0007#E,cG\u001e|b\tz~&\u0004\u0002e8}7$7|bϝX|\u001eBl\u001d\u0001á\u000b\u0003:0hp:\u001eM:Yc\u0003G}0\u0018b\u00148zDN\u0007n:\u000fGt`k\u0007KopxLoQ{ç\u001e?x\b\u001cp?\n}G9\u001e\bz\u000f|<9֡ïǙ\u0007qw?T1<(}\u0011G\u001fv|.\u0018\u0005K/\u0002\u0010ѿH@U9`&\u001emnņC\u000fG9Ѝy\u000bEJ@0R\u0000\u001bA\u0011\u0019\u0010b&\u0014caM\u001d\u0015\u0015\u0012\u0018/\\\u0010WHGd\u0002\u0001\u0000 l\u0003\u0004SegD<#{6\u001d\u0010\f\u00111i&K\u0001#\u0001w [\u0000o8flY![^cH\u001c8!&BL8=\\Sp/\u001c٣~\u0007O;څcy|\fO?~\u0018>e9\u0003_IZ\u0015>\n:+xJe4-gK]2|Jr'wiǴ\u001e\u0014&TK70\u0012O3px\r|\u000b<\u0013x\u0005|\u0002\u001cv\u001es%_c7\\||9\u001e9p9ww\fkZϏ\u0007Gt\f?c|\fϝ\u001ea/7J.\u000fsQ\"_GwN}#-Hzg*hvrzSOin#mxpdBgn[ۖSDB|ijsJ|Ι\u001fg=/FLE&~}<hwY|So:p,Y\"eG&u?\u0014ܮs86hS\nN\u0010S\t-iulew1?:P#={L\u001f9Οz\u0018>mX??~\f2\u001ca/x,4\u0017w!XEr6\u0005r\u000f\f}k\t\u0007ak_\u000e\u0002\u00143$D/*\u0011\u0011͞\u001dtWk͹uk6\u0000#*Djwl߹'w1\u0007f.hv\u001flGl1\u001f-S\tcc8a\u000f=\u0007\u0019sαg\\C/W?.]4{\"MqS-;n8%}qc\u000f\u001ewG?|O=>\u001a$@#1<eo\u000b|i\u000fRWӵ-/w$\u001dlŊp`<d3u\rK<:z!\u000fX_`\u000f\u0004?b\u000e.wbQ>\u000b\"+y8'lv\u00191.\u001fƊ\u0018p\u0016$\u00033my0sY]Ǩz\u0007\u0013\u001b6ȟYl^Lv50jF'tX]y~g7\u001a\n;\nV\u001aeS(Ch\"XҢKԾB\t^lg$U0L&u~\u001bWm)\u0015{1W\u000bQQ~j\u001dMeMyb:\u0017}v#/m\u0012zcyr'Ǚb?\\\u001fW\u001e^x\"8z\u0014+sw7zUM;u:Nz5ც\u001dr핺KLG].4ۡ+qG,kjmZQ\u0007{\\+_/[z3UY:^\u001c`ѾîQXݨ\u00176<tOs\u001eJFw*F\u0004J*E~=EQh>\u0007B@8LhqsNUr\u001a+\\6*#\t`ZJ\u0004RWp9o\u0005\u0013YQRd\\Rmܐ\u0012Zi\u0005&㖎(\u000f&\u000f-\u0005e⧻\u000fC<~nmǎ?EGbN,`8e\u0003#\u000f؜x%a\rn;d=6Kdd\u000elK&ɤ\rj\u0007ޞ\\[\u0016\u0004#6j˙\u0014e\u001ft*-QiyN}\t(w9\u0015,hY᤻|\\\u0012][e|<Gx,S\u0014Ϗ\u000fF/\u001f8>\u0002e\u0007\u001c`Z(h:/\u001d\u001e}\u001cnùo^5ԭaG58G~hr{+UVʄ^Re\u0014Ֆ\u001dW-]h\u0002֬\\C4\")Q+b%[I/(Ȇ\u000f_\u000fֹкpy\u0012i\"wg?[Ê9mS4\u0017CZ \u0002\u000bgu\nk7F%\n\u0010\u001c^ɦ8Gݱ\u0016VfՎ6\u001e\\gtLE\u0014.؋:^֩c 7nv)N5\u001b\\^bp\\bw[F\u001fS\u0018*}|\u001aYƧ\u001aӱ`c>ϏX Gǰ+\u001c3+\u000f;)wu0.;\u0001N.c\u000f(\u00183~ټ\u0002O\u000bn<s\f>{\\۫f!oCG\bmC\u0006RsģX\u00111\u001d1xŋl.\r\u0013A\u0001\u001db08~bZ|<v\f'=\u001eguHNݱ<\n\u0005\"U\\\u0016Y~\u001aInvmKG\t\f\u0017\u0004\u0017u~|\\'\u0014.\u0018>a\u00070QOˎ\u001fp=^<Mۆ|v/T%]\u0001ĭ*ټ\u0003\u0005\u001fkR:BmW>T\u000bq\u0010ʸY)pyd>wM<.|;<|\u0015d;47G\u001ci蕙Yu\u00138l=n\u0003=\u001d\u00078\u000f;h\u001eٶE l^yF~\u001cC/\u001c\u0005/#\\96yF\u0018:}\u001e\u0014,\u001a1\"Y\u001cr8ISD\u000f<`l3vg04\u001f2F0w,)O1\u000bgⅻ`؇Y?{A/Jw^QSq\tճpnGS8q\f>{|\u0007\u0015s~U̞Sڿ\u0018.|8ca_x}yi'wm\u00162\u0013nON\u001d;?\u000fl;BG}ZŻ=\u0001[H퐟g\u001dӗ2NgʴJ}5K~˽J\u0003uybFuu\u001cůة\\\\zG2ڣGx>/'k$I',\u0002eZ<2RidII&dA.9>W|M7\u0013\u001fQ\u0018\u0005]\tz\u0011bClu\u001b9,Y'sc>|-;flYݼȞy٣^wȥ\u0017}|Eo̚%\u0016\u0017C>m>%D\u0005m\r;qvhn\u001f]>t-\u001e5Zhk\u0015y`\b5'\u0019Abd\rd.\u001d$Bu\u001e\u0013Ō?C\u0012\rҨM<yu1:W7Yh\u0013y|R*,cmif\u000eujnd:\u0005:=G{\u001faEPv+q\u000elXswx\\/_Bh\fy\ri]\u001f\u001e\u0005l#~7Tko\u000b/*\r\u0004\u0002\t}a}E\r^:,\u0013@dN\u0018;7[P%R(RP`cβEoͅ&'֚\u001d6U(z+\u000eKK\u000fc>\u0001zVW\rz\u0007{?\u000f]\u001d퓎Rv]},-H<\u001cNDQ>5;\u0002mi>[\u000e\"|e֔ϲsnc\u0007\b\u001do\u001ahw\t\u0017aw\u0017a箰#\u0006\u0013l|`G\u0007X9\u0001Y-_/\u001f\u00018e\u0013愽9G<<\u0007\u0019ȣ3\u0007t\f_zCc>\u0018\u001e\u0013_|e\u000eܮyoN=*\rc|miѨݎc\u001a\u000f]\fr5'z\u00199G3=cins\t }|ʝfzkIDn7W^⣟x)8H%$r?6#[ucl-h\fg\u0015Je\u0018?}p&L.J3Nw\t+mӴ%\u00031r[\tNϛL;e7Nwt?\u0019'CkFgQ$F\u0012*\u001eCML|x}=w\u0011j3\u0015>\u0006OxW\u001aĖe\u0004/)THJU_)8ƺ&ZE'\u000f҆K.|{e|;j\u0011gFD>+*ƀ\\X~n˹aޡ\n\u0012K;5\u001e\u001aSتo]x;}%^ƟN\u000f\u0017^[}x\u0019g!\u001a\u000eސ^;f\u0018hYK=?uھl5+_\u001e_[ӮSCV]1BfCUF\u0014dqT/;i쉣\u001c7T\u0012<wf=\tM{q{T\u0006ǯݱW\u000b\u0003P>X*9sB\u0014Oݾ\rlO\u000bڍ[\u001a\u001b΀'9\u001d,S\u001fSC$7\u001bDS;2)\u0010[E%\fnz\rv:v|zvqi\u0005wbNkԾ,${\u000fΪ\u00122˙u:\u0016oxmSC{~ٟ\u0016v!\u00107y\u001fNf~\u001f7֯a`\u00171\b\u000bO4)v}Ӿř>\u001d67\u001f:W1g[׾5L\t#.\u0019)w_\u0013\u0001WS=z%,nU9\u001d[E6ʶ\b[^\u001diDkQ>*!q\u0016</o\u00045[\u001c\u00143՜\u0018]\u0007fEnvd\"Gf.\u0018):RiֵXO6\u0018\u001d|\f~֑=\u0018ݍ\u001f>gl1\u001b\f?F{}wᇷ7.vLӃ.=3-ٷbR$(1xD\u001040|\b\u0007\u0019@\u0005ÏI\u0006P\u0012\u0002K\b?\n)ۯ~_\u001aW\foZVlS󸢃իmQ˺^_Wp,-~/Wz\u000ep+q}Z\u0017}|.\u001b-~CJ\t`O\u0002{a72\u0013F\nemi*3J:W'k\r&Oӣ'͒\u001auť6-U<s\u0005Pw}\u0015Es)O\u00134ƫe>94}\\.G\u0016 ayvs9w\u0016$2Wl1#c\u0013[\u00022țెz\u0003\u0005;~1Hrs|]>m-78y>Nz\u0013h@\t\r\\yҥWs\u0018Ouz\u0007^-Z\u000e&sycǳR\u001fM{*^<=Nvz]\u001c܏\u0005Ejx\u0002<艛;s\u001f\u0016Z7<ԩO39-&k+e\u0006s5\u00151uIojQX2y%B^WWx]\u0015B.\u0004XO\u0000{q>w\u0007vMO[xvXݸ9h\u0003<e2^NV[wM\u0017JR\b.\u0007L?\u00102\u001dv1-jzlYw;i:Y\u001d!09K7Gi=&\u0011\\켤3<9=9M1izK3hgO^\ny+'.M0=Xpo]\\w|\f;6\u001c\u0012{hI\u0017C)<SR>Qɰ\u0013ܻQ\u001f)/\u001f~Q\u0007VgKee;/\u000bԵ>̉zLݹT')\\F'xp\u0006M<\u0011ɷ\u001eYn|z\u0013BEb.&\u001f\u001fmQRxk\u000b0l]͟ˌc3'OzO\u0019\\\"%\u001fzaG-{_ͥٺ)Ln$=\u001ciċ=/9Y=\u0018\u0018G\u0007\u0015#zPg'(x\ri6ww{\u0016\u000fnqQU\u0016R,9\u001c]إ?T?T/T?gRL\nIaG\nq\\\u001ccb6\u0001䵇'=<y^'v+\u001bhOrޛ{3cC\u001e\b΄qR8:x>C\u0013\u001f.\u0001C)\u000fy?{<r!ߣ\u0018&Z\\g%f\u0017\\\u001e7E9%ƴ\u0012\u0013[\u001a&\u0010\b|\u001e;ΟN\u0012}\u0018W_\u0017_8ٯ=========}\u0010QI3)|&Ϟ?gR\u001f|oݫ7_/~'39/߽A^۷\u001dT(x.JY\u000eZ2R\u000bfg\u000fWk\u0014U֊r[_ed\u00055/c\\/ԇy:U|7wz0ouZ>@4ɋ;~ڨw|?~ݫ/߿zŻ;Mׇ]\u0017_z\u00177/\u0017\u0017/~??'}ҟrwoS]$~|?:k-ڴm\u0004\u0004|U\feR!d,;]\u000bl\u0005K^SHj`EbrJb.\u001aUؘFҳ*P\u000fb:W2e\u001d[ֈ^i_t5iu\u001a.};74v7\u0018JUj1ANzwA\u001cMϥ]ZȺ\u0016uE{~Ф]aH\u0007qqfqYVwb4\u0019kqo\u0015=DgMi]]K\u0019W;r]R^#Et\u0011MK-J1b\u0007w\u0012#JնޘtZĤA,[Z\"3{^IB.te\t\u001e8!\"8^[rX+=\u001aӨ2Y4[.b:!b*eT\u0015.\u0011B\u000bү\n,\u0013\u001bG_*WsJb EK*[\\̬^Jee\f'2}\u0017FӺsN/i2\u0019ښk΍GtB/\\\n-W\u001eZџMf!\u0019yS\bhmDZE\t+\u0014<~('ͼ6(AUFI\u0018hT^n\u0002]vZ[\u000b25\ttƼ\u001c&\u0011b'c\b,4FY\u0013dF:>I|h\\DuI\u00127֖ĈEbg\u001a5\u000fV4HsL\r\u001eơAt\r8-G̾̄\u0011*)V\bD1\u0015E/c\u0006m;'I9]\u0017igR =u`\u001a\u00193Ghy\u0018!'q\u001bu\u0011%-y\u0015(\u0018[;&2c\u0000\u0015 \u0018\u0000[\u0003l\u00180\u0003Fh9|Sf6z7\u0001\n/(֐Qڵz^Ie\bQ6]6M>>o𬸬N\u0012'G\bepubx\u0012\u0014Uf5hq2PQkS\u0014*ֻy\u0001;@\u0018!N\u0006εLL\u0004EDv6\u0006S\u0005ra\u0014k\u0017v<Akx2^U&H\fJk\u0012|HPH\u001f\u0015։KK\u001d\u001eQDY\u0013vqbV'g>ZŻ5V5()Q6:!VY'4-sb\u0015q\u0011Ѽ.\u001a#\u0016o#\u0004'6J\u0010^★\u0002_L\u0016_5E\u001eL\u0011\u0006/\\{\rMuU\u0004@\n]-_D{Aǝ3<`L^ڂ:\u0015l$K)Jͱ:\"'QҕL\u0002ɕ2<&uԣ0J\u0019@\u0011U\u001b^#D\u0010FH91ە?S\u0014\u000fH;zel\u0014\f\bۘD\u0015&*ƙҌ&\tI1\u001fUD'E%9MiڃLc٢{k\u0016Wګ\u001eeʡ﬷\rs7f\u0018}C,\u001e'zٮ\rU,lV\u000eJ&М+GʊvEҧ\u0011R\r5\u001e\u0016C\u001eo\\\u0019Ck\u0010\u0001ʤn(Zq.Lan.Ԥ\r&M;{4CHKӍ\bi}\u0014\u001a%\"`\u001bd={\u0014MX|\u001dfKd\rD[\u001fdMSw9Z-24B/\u0019!\u00117}\u001au#UZ\tI0\bCO+\u0002\rh\u00054u57tY\fW`0\u0000}Juf)\u0013\u001eSѦͬiDV\u0003IƈyZ\u0018\u0007\\urbXD\\vZ0/$d\u001fGb80U]M$nki\u0006:eP7GTU\bS\b\u0010:G'aۍE\u001b\u0016j7]\u0019ѤZ3Ҥ\u000eu8\u0016A(wti\u001bd\u0011z\r\n7֓+B\u0016+\u0003/X\u00105qyY\t7\u001bi1G81FԎRo04\u0003\bcш\u000bA\"'f|3)>V8\b]9VIjtK\u0016yV\u0007F\u0010\u0016ҭ3U\u0011nPa@Q\u00183JHK\u0015ieNY(\\f\u0011E\u001eAO*2\bi~\u0015G,HD\u001atDILv\u0011ǘ%\fKxmV4\u0005󊒓ҋ8/>BL\u000e>#g\u00064\nsy\u0018 \u0014q\u0017T\u00119fD\u00145\u0011Q!Ψp\u001ccftJ$JwШm\u001ftt^\u00143&,T*\u001dL'KTWWbf7r\u0014LB@(d'FI,\u001bIn1bA% c#9Ki(r\u001a\u0010\u0018FR\nGORю*-\u0017E6\u0013cDCgb\u001e%إWez\nX(*\u000bj\u000fG]\u0017@Ăxء;bA\u0017P4Źly\\\u0011[Y^\u0017\u0013\u0014e&XFz$\b\t\u0018\u00163!\u000eirW\u0019*tgЂ\u0010)g\u0015*\u000b\u0011NPՈ,BqQ?d!\u001d`\u0012#\u0012t\u0017V̗\u001c_FN8ik;UN\u0011wԓdT\u00060&>MF\u0010R}p`p7j&p\u0016fd\u0014_2\u0002{D\n\b4\u0015b#4F;m?)Gq\bN\u000b\\k\u001e%(M%\\\u000eUV\b,g!\nw\u000b\u0018,]\u0016aŞLc;ԕp);ڔZ\"S44M\u001eWzEfOTJ\u001b3\u0012>hTH\b(\t{i\u000e\r\u0015ۆQ\u0006޳zD&L.5\u001dF\u001bGT\tMصe욘<VJOu\u0019\u001d^5Z/\u0011\u0019\"3s\tv\u0007\u0005.6JQl`m\u0019AgDn2\u0011=iE\u0019cahx:\n'EGasKI\u0013̞K'Kμ\\\u0005q:_{l\u000bfM\u0013\u001c֧\t~+KW*.8̍\nw(ix\"x(m>v\u0011kՙKL.\u0016/ɤzl\u000bx\u0010{N}\nQ,\u0000\u000b?\u0013ţ,g4*>_\u0018\u0011ն\u001912}]aJ\\}0_jqڧ$\u001fbqӊKh1p\u0006Xxu\u0003SQ\u0000:uD6@ɴH\u0019oAo\u001c!Dox\u0014OĆ\b'FmTR+\u0003R8آ\u0015_\u0019K\u0000\u0011wz~״k\u001fU_F\n_I\u000bqb\u00104\u0016 BYY%\bTB\f\t*^۝f[}x70J:7żpbȾA@\u0013,a\u000f-E\u001b\u0017t}\"hh+a`\\&\u00189S-:)$3M\u000b8\"\u0001ۉm\u000bi\u0005'K-Rr2i\u0004HUɹ+K#S,̰5\u0004U\t\u0007T?ʽkH\bH\\`*g\u0014\u001d\"\t\u0012N}{GLx^3\u000b|'s(7Reu\u0015T^ڕe\tq-F_4\u001a!\u0011k&GC҈k\r1^сFEeƕFӵ\u0014\u001b͐L≺\u0013N^X&AXu\u0010NU\u0016*h[\u000b$\u0007\u0018B>Rޟ01)<\u001cuMX\u00040DuRB!Æ&j\u0019W.\n*^mJ4$\u0018DQa.\u0015c*~sX\u000brغ/ng\u001fh\u000215b.yr[cs f~*q\rË\u000702)+K+*\u0010~j`jCgR\u0013TgVq|2\\\u0018GqU\u0002`Xp{`;{elf\rXX\u0019\u0002-ZIdS0%f˥i\u001c*\u000b2x\nW[3K+Bkhx\n>A|\u0003\u0012Ɍ\u0002Gh4B4lBGU\u00170*<):!:\u000f&!5\u00060t`\u0010\u0016z\u0007i30\u0004`Nt~Gz3\u0011G\u0010\u0011-t\bF4~`\u001e4٠T\u0015~ҧ|\u001d6l'6\u000buEj\u0016~\u0001F\t\u0003̈́\\\bHǜ)f^TF'\u001er\u001cL9Nv4\u0003(;'yͤ\u0016Ԙ1\u0012G\u000e\u0007\u000fms\t'n}l&c\u0018|<\u001aur\\g\u0010)fßWo~w_~o޾G\u0001;O8>\nS2I \u0005̖#`>4(\b*i\u0005D\u00105Y&@`.,\u001a\u0007\".vIi\u0007Zv+8E\rZ=,s%WS<omh9zӰ'0\u0016\u001bjL.+;%qo|\bzRsL̞㙷\u0016Cj`W\u0014j\b%W\tXxl\u0017ȭS^\u0001\u000f\u00001pwl\u0006n|\u001cM.᳒|g\u0015\nG\\~4y\u0012pHIFLt>,D{\u0018sE?\u0019\r\f@\u0014pz\\i`-ĀVO`\u0019\u0017خG\tYJ\r\u001a$N\u000baFb\u00178\u0003\tg::'QV֘ #&i/8V\u0015(q1Y\u001bN\u0016,L\u0018(1KDVm0![\u000eǸ\u001e\u0001P]C\u0002M\bWCm\t>=N`SNR_\u0017zlNfT$\u0016)bOІ\u0006$:h-l*8JEus\f\u0015\rI&\n»\\pX\u001bd\"1\u000b_\u0017cQ\"\u0004+\u0013\u0014\u000e\u001btG56\u0013%.Hw\u0010~݉\u00131];yՆQܴ\b>\u001dA\f\fWTu\u001d\u0000\u0000\u0019%L&\u0003J\u0014Xv!eg\r/\u0011Z\u001d\u0005P\u0017x\u0017\u001dE\u0013G/,Z\u001e(,9lln!'\u0002YP\u0010/M'~\u0005\u0018%H%\u0006\u001e$8\u0018E3(D+\u0000,a'27'\u0001D)\n\f=F\u001c~\u00192\u0019\u00050!l !\u0017\u0002X|87St\u0011u\u0004&L/,\u0002H\u001bp\u0014\fWOCvfC\nE?\u001ei4\u001e\fƯF\u0017@\rv])\u0017\u000e\u0016|\u0000r݇m*|'ؚ\u000f$F\u0011\u000b-+O1\u001d`\u001f&'x\u0014&ؐyݛÓ)bd\u0010abTɣ2Fiz\u0017_'yl5b\u0019ɉ\u0011'9Qq\tJT1/\u0001&jI+\u000b@¢f\u001cG&\u001ehlI\u0003:od\rPqd\"VJ]eqtVp\u0004\u0004ľ0W,b!(֡\u0013A0'%\thTZ6\u001f\u0016DT@E&\b`L[ ~1T%U=n߸KZL)p\u0019?i\bA&Lr\u0011]Rk7pp\u0006בni(\u001e%Op\r(:61G-B\"Av\n3;.XQ\u0011\u0013BNf\u0006$#zA\"N5Ceber$QA\u0001g\u0001J\u0007\fP,\u0000#l_%\\\u001b%U\u001e8a\u0013r\u001di,v\u0018RB\f%\u0018ze#EC\u0012R\t0\u0018\u0017K\"ny2yx\u0011S\f\u00137Iv+b\u0016\u001b/$#4l#\u0012\u0006ZH\u0018B =\u0012ZP\nj\u00005 BWy\u0014\u0002ܤ\u001d/\u0011\u001c(L\n\u001fӍ\u0010)>7\u0004ȈeF,nDX0OEO(\r*\u0014H1$Q4ks\u0011\u000f]\u0011˕fOD!d\u001eU(q4<`,\u000b<\u0011d\b\u0003\u0018b\u0014I.e?Lvm\u001f4Ĺ]ݱ#t\u000fך\u001f.op%݀+njdI>#\u00013cYj\u0013ch\u00176ЌD;m4}b\n\\+Js,-8<{\u000fy/xg\u0012;#05f\u001e\ri(l\u0011\u0014 ǹ-\u001d\u001db T\u0014m\u001d\u0002\u0017=Q']\u0014)!?\u001af}-]\u0011,d\u0019cb\u001b^1\u0018M\u0006ipW`\u0004j\u00183\u001dXT7O0*̤kElc\u0019\u0014$\u0010\u0003x6g\u0007>OHsqN9v:\u0013U\u0019\u0015\u00107Zme\u0015\u0012yAz\u0001cbFh\u0010jzD>\u0003@Y6Po\\!\u001c-H帼(67t6\u0006\u001eͩ=\"\bm4Qr݉A6PJ\u000fg\u0007o')ˎNm\u0013J\u0003T_b\u0001oAl\u0004<_\u000eAյ{D4qk<D(9+|qH\\F\u0011#\fc!hΊ\u0013*Z-\u001a\u00046'[E\rq\u001e\u001c*FM!L>24h봂-I\u0012)`)\rJ\f'${uъ\u0007'\u0012\"ͥ,8J7mJ\\\u001f49\\\u000eP\\$sd qD\tx\u00007\u0013_痉j\n\u0016xt\"p(YjNb[S\u0002! VS8\u00182\u001f8\u0003\u0000@\b U}\f\\MIbӀ1` 6,\u0006L3B4Ǩ\t4_qLD\u0018oH%'3\u001eX\fK\u0001z*Pp-`(f-\u0013sB\"#\u0015b^MpMzk\"w\u001a\\moV#u%SM ipw0-h\u000b.] $oJ\u0016\u0015w\u0019\u0012$A)~\u000bѵMˬ-p!'RB$cIע[5A^i[F\u000e~K\u000b#2\r='pȋho\rh0\u001d\t\u0006N\u001b \u001aPqB@Y\u0017z0Pl=mD8cgkǈ>\u001c_/=jY\u0007H ]\u001155GA\u00055WYI\u001c\u001a/\u0005u{\u0011&\t1j`Crn{vx:bt@\u0017g鋃7/\u0004c\u0014RA;\u0017ZR\nJu\u0007X#&ɲ\u0014x!R-\u0010m\b2Z#`[\\\fSZ/\u0018fO\f)<\t+>xvq2`pX8T+.ts]Kp'FW/S\u0005آ媫-ɘ\u0014\u001e\u0019\rۮ9\\QU2P\u0001£xalL\u001dQg\u00104\u001bBᑕ Ӯ\b\u000f\u0004g\r\b>\u0006H BA/O_y=QG2\u00062\u0019Fi3r֬\bga-<qI܇\u001dXѽAZ0\u001b\u0015CŞI\"!$7Pc\u001a\u00180\u0001-p\"pP$,\u000eS\u000f*sr\u0001\u0003\u0004iAh4\u0006`\u001b죃-ELNՂI{^\u0017 q)@@qqlt~4&C!p|\u0010z\u0016;}cc\\\u0014s8\u000b\bU%r1\u001a\u0018.^V\u0013Nl?tAv\u000b\u0013[Lp'ِ>I\u001e٫0xbml𠱋xBE\u0014+1vGX\u001f\u000f\u001doNkSWb\u0002$-\t)9/:L\u0002\u000b\u0006c3\u0004+bO'wȏxYCd)>\\GܭN\u0004@9:\u000eP%Mw}\u0006T\u0003pە^\u0000v@\u0006il&fe̸vu[<AfBa\u0006?\u0000\\3\u0019\\\u000bp.}[d.]Y<\rnlzk\u0001h\"\u0019͋\\\u0004\u0002,q\u00060]\ta\u0014+`k#\u001b\nݼ\u0000U\u0015M脔i\u0019[iq\u001c\u001aM\u001aLv8\u0004\u000e9`\u001e\u0014A&@'\"b?m74@\u001e5j\u000be\u0004MDH06\u0018\n\u001a\u0010\u000fR\u0000\"ZL`&\u0019[\u0007ە\rL'vlb\u0014el\u0016\u001fވ\u001e\u0010ّ\u00030K\u001f\u0003kHLujjd4+reA6B#Y]Xؗԝ-\u0000x\u0012'2u&p\r΅U\t_\u001880B/|\"\u0013-2QxX2$!\u0012O\u0012̉똍B\u0003\u001adA\r>D7IZ\u0017fdh>׆\u0012$c_2iZ\u0014X\"#%\u001e,x9 (:P\u000b7\u0006~ꌛض+qU\u001eabgA<\u0003\u0000R?/\u00109׋L\tG\u001d\u0010\u0005~ۘXL,\u001a\f\u0001u\tˎ\u000eJ_0\u0002E7>GY\u001c#pqIbQ:jWء6-^\u0012N;$sg5N#\u000en8@$I\u0004\u0006A-}\u001b*2\u0019-!\u001bZ˅C<$@Q[ hC\u0004\u0011P+GC]\u001f\u0002&\u001cd\u000e}/W\"\u000f\"T\u0017\"\u0013BB\u0002m%\fZ\u000b42\u0019\u00052\u0015\u0014!!*\u001a}2B&<#x\u001f)\u0018l-p\u00002k-T\u000f1z\u0004Q\ndX\u0005p~5T\u0011W@.@p٩\u0011}QhӀ^즧#\u001ew\u001a\u000b`7\\xb1bM[t~Lx>Bi0\u0017`19j^C\u0000I\u0005͎\u0010|=BlݫBۋH#\u0015k3$#pVRl\u0006Ot8DY0\u001c0]\u0016<2VK\u001cn\\\u0015Y?JF(l'՚T,I/N$\n$\u001b¦e|\f7̀ei41gB\"\u001fC)XZa\u0001)R'Ize\u0003j¼5\u0001@O\u0011\ta\u0019abW\u001aΏ1Rii-b$_\tiͨn\u0004̯%1/Hr\u00113)\u000e\u001a4\n\u0005JI beJ\u00073\u000b\u0000\u000b\u0017\f5@FFIfģ_~S\u001d\u0012c}t3%$\u0010z\u0019U\u001f\nyL\u0005\u001cCDp6\u001df<>\u001c'xC\u0000\u0013$\u0014:PrXXY\u000f.\b`b\u0013x$*\u0006o,/_\u000e\u0012;2@\u0006\fò\u000b\u001a N\u0012m1B\u0010\"\u0015Y\u0018<g\u0004fJ5}ݍ;\u0011ɣM\taad\u0017h]\u001d|.\u0018Ne<쇑X,ɬ\u0000`t\u0001ƄYQ\u0003\u0005\u000f@6k7ʓK\u001e\u001dI\f\u000bM!mm\u0003, dٌT3JH;<\u0004P\u0001Fzp'\u0013\u001f\u0018w\"V:ܣ\u001cB\u0019&7\u0011VQ0ΘqVpA\u0013I(b0;e(g\u0001b,h}\"f7>RwnbVdP=>@\u0003\u0001\u0019$<,8\t#Qyz%J?6>|\rb\u0013@0\u001d}\"\tf7!ɨ\u0011æMVg4O9tB2\u0018>ۣOIF4\u0004v\";:uT\bP\u001e|'<,1\"e\u0012\u0006\u0002˔DJ&[DȘ\u00064uu.\".ɉp\u0013Pohed3\u0013le\brgVzw18\u000buf\u0006\u000eg\u000b;]ZwhFg'W\u001b1h).IfnɅ%|nUlmmR.$wN\r>h_c\u0011P\u0017'v\u001a\u0013@8\u0012U\u001b4(d'\u000e.Yؖ\t5Sb+ \u0002K\u0015/\"\u0012L9`\u0011֠f=hhyyH\u00014g0Ȩ#w\\Rb\u0000W\u0000yO\u0011\u0018:r9:ug8I\u0002nVȆ*\u0011y\u0003r}#TY>\u0006y,q#+\u000b\u001a 2T\tL\u0004\u0017!F\u0014iب]XAs\u0004޵ij\u0002nY{\u001cig,%\u0001-=\u0001 C^k힑\u0006G˫^P_9y\"zv\u001e':i[\"%72=)~T:#Ө\"\u0003d\u0001.v\"\u0012Zq\u0002Y<#/X\u0018\u0010Fm!]s<\"\u00135\nsL\u0001Cm!,x\u000eQJC\"Q8\u000fL*\u0011o6ݐf|9)ym\r\u0014[l\u000e\u001aJ\u0015';f4LL}Gm\u0014=K\u0012 d±@oYoW@#kHnpX1~\n*?\u001cA8:\u0013ϛqXl\u0011#+D$^\u001d}=\u0003_|m@\u0003p\u0017\u000bG\u001c|.f_v3\n$|\u001b\u0010\u0014$\f\u0010gFUY\u0015ɮ>j\u0001lG\fSj2t.*u盩(4Z\u0003GL\u0018\ne(xɜɩ;\u0011쌗0\u001c̣\u0018=la0\u0007sWRnRH\"G[\u0013y.\u0007zT:g\u000b[o\u00198\f+{\u0016q4\u001b\u0012]rj: ɽ\u001a\u0010sG(tV+#\u0004:Zd4o87q-;B;͍,!3\u0013ɞ-N\u0001Mc# d\u001b1uv\t!c8Z\u00062\u0018+'f|-KY#j\u0000.kV\u0001+1fWi!r%3V.\u0019s\fX!ie\f\u001b{R-p\u0002\u0011S\t[\\y6NGX\u0000CM\u0007djc\u0000x\u000bjGzh\u0005\u000b\u001e^\bG (ND\"\t/C>T\u0016F!p\u0019\u00121\u0002y\u0002zD\u0003%\u0000b\b#1v䠦M\u0012OA\b\u0016,\u0007/\bP'X&\u0006\r\u0007/\tΥle #%\u00129I%C)|GeZəlTÕź\u0014\u000fB?v6\"6}\u0003Y`0m\u001b'%\u000fd[\u0004di]j~ߡ\u0006\u0004XCu\u0006P7b\u001f6\u0015\u001b\u0001\u0016r]S(od jhĂ?\u00112m@@H\u0000MPʞ<-vCSo\u0019ڽE\u001aLMJ9r´\u000fX\u0014&C%:\"\u0014fVP\f\u001ae\u0004f\u0007V┢\rx0]7f\u0013AuJ\u0019\u001cq\u0005E0~aFA\u001d#BL$f\"\u0003ǆܒiDF6Tv09\u001c\u0014Ӓ\u0007\u0005\u0000\u0007\u0014R\"x@?LKI\bI<7c*\u0011KT(\u0017\u0000-Z\"\u0010 ˣ\u0007&\u0014\u0015֜`T`æ-gl (\u0013J\u0011\u0011\u0018\u0006T\u000b\r5߰bR6n\u001e5\u0000[\u0007GOd\u00003\u0011M\u000eڃ\u0015\u0001\u0003!ȰSi\u00136\u000e(l\u0014F\r\u0012\u000eB&lr2\u0016x\u0003c(׃gR#eq<y;\u00180UMA\rĕh\u0015\u0012l\u0017\u00150\f0{»oQԘ9r-( e\u001d\u000b\u001dEQ=[n֒q[g)S\fS\u0002p)#֨!A:fصO\u001e(th0C1rY_)YhT\u0007?$ݐ\u000f&\"`/\u0011\u00125\nbdѧ\u0015Ub׈RÎ\t4P3d?X%\t$\u000b\u0014+>\n}KR\bV6d\u0010%\u000f=04\u00037\u001aG\\\u000e\u0002Y\u0019@&I\u0013p\u001a]\u0014mI\u000bZbE\u001bh\u0002.$arv\b!/@\u0000]Q\n\u0019ȓ++Q\"\u0011w>Mԑ칠\u0019O\u001duS}3Mh\u0017kDy\u0012:3\u0003/ O\u0018\u00130\u0000>BZ\f>M\u0017#\u001eQ]#\bԏƐ\u0011<6*\u001b/k\u0019g\u00140teKr\u0007#\u0017,\u00149(Z_`-Tȋ`QJ:\u00125粀Ǳ\u001dX \u001b8oB1vI\u0011\u0001#\u00193\bQ\u0014_.~\f\u0019I|kIa넋xࠦll\r\f?H25E>j\u001c\b,\u000bYd+D:(KwrB=\u000b,c\"\u0014#)Fؼup\u001c\u001bbLƝ<\u0002yiP\txDGd̓\u0010\u0003rG\u0012ѩԛӛ\u0016/u^khۿӑHuqkeޢĂ_\u0011\u0006#m>\u0012#,D<\u00033<\\p\u0010bfK+\u0013<\bD\u0004LY^.0EMAf𺑶lWK%\u000f\u0007z,66F\b?-:S\u0012\rKd\u001b\u0014\u0014z<?7ALC#\u0012\u000f:y\u001bpt\u0005b\"\u000fy\u001bf2s@ިĮKir:<㵗r\u0014\u0013p\u0012\u0006\u0017\u001b\u001d\u0002e\u0004\u0006\\\"dZIH#Y\u0007{c<\u0000r@t\b\u0002q!\u00048R\u0019c\u0010x(D9i%5\u001di\u0000LJ(wWetFd^F7L\u0004qdʓ\u0015ʁV\u000f\u00103IP\t=?3sa\u0018@]d\u001c\u001dB#Ďpi=mrR\u0015\tF\u00010ZO\u0006Q\n\u0002㜐MIMJ%>\u0017`oJ2p0\u0002(bN.Hk\u0002뾌1W\u0015]d#63$0EDoS/x5;1\u0011z\u001c\tu\u0018E\u0013\u001dG&y/a$ns\u0007\u0019\u0013\u0005)N\u0001a3V-cR\u0015g[\n^*v\u001c6ۺ\u0005U4\f\u001a)`eW\u000b\u0002=\u000b\u000e8m\u0012\u0014ə-v\u000e\u0014\u00126,y<^Dl,\u000b]@oZBsu4%1\u000blt;\n\u0015\u0001!DY\u0007W4;/4bbc \fH:ލ\u00108\u0010!\u0002%H0ꢪ\\\u001dP8¿YoH\u000b\u0019{\f}\u0014\u0006{\u001a\b-\b\u0014+\u0015}1o)H%6\u0002\u001fM\u0003\u0000 \u001f#u\u0007\u0019:$VT\u0016e\u0015\u0003/9Hђ\u000b\u0014EK\rLƤ[zN++J0~\u000f\u0011\u0011znQU?e;\u001bP\u0016ʨ1\t4\u0019+\\(\u000fwjxx\u0001Sx~0\u001eY(޻>\u0002GTdR<\u0014gxC\u0007\u001a*\u0013Ph]t:\u000b8bYNZYc\u0004V\b֡\bh!@]RN)Z\u0003$<Bhb\u0004\u0017-\u0007Wb\u0016\u0000ON\u0014,N ?00O\r@`;9$\f\u001fr\\4Mip,!\u0012iA*\f6)6D\u0010b!LvƊOe\u0002d\u0001\rH\u0000Ҽ8NP%]lǵJX.:)tTbB\n\tk\f֠\u0015\u001c\u0014T\u001b{\u001d#f\u0006(ɣAs\u0006\u001d\u001d]\\a=ER\u001960IeV:\u0017\u00142w\u0015\n9>%\u0003LqGųѹTjgI\u0005w\u001f@iMRd/ns1n%Hͤ\b^|0[T_ÔSQ\u0011\u001a2 5g?\u0012\u0001&,1H|ABfc$RvQeR\u0005&\u0007'k(iԋ\u0015D2\u0006\u0012,űN(1*g\u0010c\u0004F\u0014\u0013F}\u0011\u0019$L/\nO#)$\n@lKt#s\u0006h!\u001e$\u0013\u001aQ\"vE+ʓ.6\u0018\u0000D \f\u0007\u0010d$Y}4!\u0013\u0005\u0010@o(\u0011|cN\u0002!\u0000)\u0010Ixsd΁m!\bih\u0014力\u00109N\u0014zIZ\u001dF:'\"yƎɟ3^d%\u0013 %HO\u0016\u0019OPeqfQ)\"y\u0014\u001eM;E2WG\u0010B\u001aՓS\u0001}%ۘ\u00166'\u000bzfQ!\u001bo.\rUĖY@\u0012O:,4Û|\u0012k\u0000\u0002\u0002\u001b\u0017\u0000p\u0011#f\"\u0007N5q\u0001]&2+Q!QDk)\u0014쏾hyS-bm\f\u001fzZKg4?z<j/Rz b@x%\u0001\u001ar#K\r`lJif\u001aJ,TFϽE&unȫnAtRSVg\":`AZ\"n 9\u001d\u000b\u000bm\u0015\f\u000eix[\u0017;Δ\u0007f\u0013(z.\u000b\u0018XW++r;\u0014'3}CGI\u0004\tf\bp<\u0013p]g\u001e\f\u0010ē\u001d:F_fLȾkH\u0016\n2iQ \u000b\u0018&y\u0017,\u0011A$ͽ8%\u0015lK\u000f\u000fq=B(QOLv\u0002bǦ~g\u0005+lu\u001c\u0015\u0012;Z\u001a5~\u0017'\u0012\u0016-\n?!kd$\u0017\u0010v+d\u000f\u001aE66\u0005\u0006\u00022ylɣ\u0000%r#IџS\u000eFqcS\u0007u\u0019؃.lmN\tV4;֨a\n\u0013e\"d]7\u001fT\nQ:إI@\u0018p`\u0004YO~\u0011.+\u0002dQ`;w\b\u000e\u0001\u0004\u001a<\u001buՁQ6}%bd\u0003`2Pk'8`cNcI\u0012z^YN\u0006H\u00045\rmhТ\u0002\t5\u0018\u001cmM\u0015%\tP\u0015\r&\b0\u0005N,\u00191x|up\u001f\u0017rOIQ\u0012twW\u0005\u0010a$u}D9C\u001d\u001eCI]k\u0007%\u0000%<3\u001c\b`:x&C\u000f@\u001cX!\u0016:6\\\u0012\u0019 \u0016?1Nn(%\b\r\u0001Ma-q#Fs\u0011\r@\u0006\u0014 AC\tI\f\n\u0018H&\u0014\tx,.E\u0002dkJ\u0006\bXר\u001d\u0006`+qfB@-0R@\u0018\u0001x\u0002\u0004\u0011(.\u001d߉\u0002:>'>\u000fwe0\u0012\u0002$l,5J\u0015j-v_+ո<\u0002I Z=սB\u0004p;6,\fB\u00063K\"1\u00028fP0E-OwWq2EvB\u001bA\u00002/ֻ}F\u0013܎;]ld;\u0007*e յb&\f}K\"U2\u001d]\u001f&}[\u0011x\u001aAX*]Q)\u001393m\u0013l\u0011$T\u0011\u001e5/Q!*4ڂ\u00035{a6ls\u0002u\u0005#;yL\r\b\u001a06TdAI'w\u000eBP'\u0016l\u001e6cH\u0017\u0017ഌp%\u0012iS!f++H\fCy\u00025\u001b\u0018L\bTm&\u0003ƎF˰W`\u00139[#\u0018W6\u000eƔH\fY\u0004\u001eԎ\u0014w5\u001c!&qslV]p}%C\t3,i1\u001fW=\u000fnSZ4+$\u0004!Qі\"\u001a1\u0000jP\u00031n/. r=\u0013S,1\u0017\u001bϽ<5oQ\u000e\"/ԓE^lg\u0011\fs\u000e\u0019(@2K$ׇf\u0002?Q<\u001b/[)\u0014B\u001b\u0002\u0000>\u001dG\u00112\u0006\f\u0005\u0006{\u001c\u001cH\u00009\u0000P\n5`5(\u0002b\u001a.D\u0003t3\u0007@6X\b\u0018\u00032piK/BgU\u0004#1C-L\r\u00067GM3mLv,-16s2ESM~\u0007lA&^|]#2\u000e֞B(9Rאhh-\u0011<`\u0003?\"YU߯,5F CXAG\u001c(zNj\u0010\b\fܺ\u0004&M<\u0011ŭp]8Q\u0016\u0005;[w2wM\u0000^\u0000)d`\\\u000eyD\u0002,,\u0013\u0011(!֞Z0E\u001a\u0003;\u0017D)>\u000b_nTDSRb]Jz`\u0016`51[.8r\\HV\u00046\u0003/}Nh˫\f\u001c\u000f\u0011ZĠ8bv\u000e H\u0001HK:\u0018R\u000ehrI(r\u001d\u000f9<%L#35KP\rje[}IF1\u001d\u00173Hp%mb𓬭'\\S\fa\t\u001dֹ\u0007/\u0018嚺{QJǨ\u0000\u001d0\u000eE\u0018\u0001:4f\fG\u0003))8X|\u001ev[!C'\\N\u000bQ^\u0004\u0014;Fu\u0002\u0018?x\\\\g\nTW\"6(稗\u001aqq{w@d͑Ҩf(G~2U\u0012qRM\b\u0012.2/\u0006,dlPFu9F-^ҏ\u0014\\8y\n<#]z\u001cեߠ\u0000R\u0010Y ޶l\u0015V\"5Z-°$\u000eJ`hIߘG;_Hc{\u0018'(02\u0018TҜre\u0011(\u0001*!\u0006E\u0003'Y>G\f3IĊ88la W\u000b \u001ch3HtɥEMr\u001e\u0015\u001aQoT\u0013qM~kJ#o\u0016R\"*07\u0011\rx\r,0DYm0_0\u0011\bmYԘ#\u000e\\ {X\u001esuB\nw*Uс/CA#F;;nӚʳLe@X| H\u0001_\fB\u0018)5\u00157ZR\f`\u0001獫+fZ\u001e7V,2\u0010\u000e\"Su4Dtm\u0004.FX\"8\u0014qd\u0011)\u0003\u000e\u00034\u001bO\u001ff\u00168b\u001a\u0015MT\\a1\u0000iVNj\bF\rZ\u001f\u000e\f\u0000_*d&\n\u0012\u0005GD-mX%\u001aif@!<QlL\b@et^\u00049\u0003e!02\u000b@~4e\u0003&i\u0013.\u0018\u001eфb(\"`\u0011\u0013\u0012T5<T#Y9Yx5L#f~\u0004_ϱ^,\u0018ĵ\u0013\u0011\u0006`F9\u00061\u0014u\\\u0001`rN\u0013a!'StC2\u00197\n\u001c!;\fY3pcH\u0019?h\u000674\u001d۳>EZTu\u000f\u0003'\u0014:%㸘`.d{s|lQ~L:x>=/u.?շ_7/_\u0017B\\z\u0017o/&Ż}sv\u001f\r\u001fkۦ\rb .\\\fr/4э\u0004R'%gM,8*pDQO(\u001c\u0019\u001aS\n(˵O\u001c*(!,ׁ4i\f8U\u000f\\45\u0004<\nCC\u0013J(ZS#\u001cLoKJ[s7Q魸.MQ}5]ao\u0016\u0001!4yi;\u0014.<BPIhKdT\u0017xжxuS4\u001ex>ETψ\u0001vt\n\u0006\u001e\u0015t\u001cou\u0007יM]5*\u001fdSk{%n(ָWK\u000fP˜\u0003Tcsѹ>]q\u0013\u001e21`L>P!H\u0019\u000f^g'I\u0013^ϑ\u0012e\u0010gus\u0019_@5\u0004HՆL5xU]\u000eUS$\u001dP'\u000fV&񠻔2Eĩ;˩7~͸oaL|$#ҳWuҔ=bm\fIrH3\u000ep_3}K9fq0*T\u001c\u0000RΧ\u001cG\u0019GK!'f*\rTM_\rdTv\u0001<+&CԽ&͆\u0011\u001b<\u0006b1\u0000,+\u0004n'\u0010]Kw$E~0\u0000Afm^f\u0010\rg\u000fzkŅ0\b0juͫ\u0012M\u001ed\\!jF(%\u0019H.\u0015\u0010\u001d%G\u0017B\u0000P-.Qa([֜zb#\u0013S[suX\r%S41(Jv{l\u0016OVI8\"LdHW\u00182j8\u001c`j(q1L!jTk$\u0018\u0006$:J\u001b,HjjeǰTwJ-\u0011hY\"LӮL[x26nJv#q`\u001adQW\u000btKPY\u0004.\u0002v1vQ\tҹ\u0007Y\u0000v9 Ӌ\u001e\u0002z9O,Q]a ?\u0000Ov؅b\u000edH{C'\u00156$xڶ.\u0011<DHyě\u0012\u0014<\u001eR嵡 Xy\t׿ØaٲeKGRKG&\\r\u0004\u0016ӻ0l&³sh*eH ez+(ٺ'I\u0001`*ؚ\u001e\u000b/\u00185\u0004S2;\bG)P\"v\u0004[\u0005\u0013N]\"LNuNjH\t{\u0014lL64\"^NSQ}\u001bXyIN5Z7[d#ܔ$ȹ\u0010x'#|'\u001a H\u0014dr\u001dp.hngY`\u001b?\u001d/n+\b'Oԧ\u0004SGX\u0017\u000ff\u000b\u001eO\nfP.RpW\u001e}.ycwh7j%S*&\u0000+þ8U\fa0¶e~\fː\u000bE\u000fjI=\u0006U5Wo\\ik])G-Z\u0005܅U-O\u000f-a*01&\u0003*h;F>8#':\u001a]=\u0001VN\u0000Hq8[,09A\u0016UUbD#$Fgx8\r\u0012\u0013EHf\u001bqsɐ\u0014D\\-_V<+ŋ\u0007κD{j~-\\\u0012-\u0004HoIct^@f\u0004NP-\u0011\u00171\"z74%Z\u0012$hKE(<,>\n=Du\u001drX(]..;B`=+Z\u0019\u001a|w`\t\tZ#N,Xg\u00106SY}I:\u0005\u0014\u0005Sɨ\u000b'\u00025ᐍܘ\u0000Nq\u0000!vvy\r7$)\u0002\u001b\t\b`\u0015p\u0006zn % >L)r\b9.MfB4^q=U܉\u000e\u001cDU8-!!c\u0015}\u0010iJӧ(4-e2Zw\u001e\bc\u001aR1|\u0017׈dD_JZP\u0012\u0012\\d J\u0004\u0002\f>\u001a.VD*nP.S\r,;r9A^\u0017D\u0000\t\u0002\rd\u00061\u0011soeOT*h*Ё\u001el.k4;G<\u001eAΆ!\u0010X!V˽\"eE`\u0001%\u001a>A\u0018\b$W{W\u0001D|\u0013Q5jQJ\u0015L\u0014}%f\u0014}ۧݵh2'<B\u0015\u0018\u0010кj\u0003a\rH9ua2Z7Z\r\f\u0000`\u0018]\u0006@\"N#\u0013\u001aI1ܸ\u001a'8I\\$`,\u001f߆-n&^\u0016.0~\u0011b{Xf)-\u001f8ܖ>]Qؾė$\u0011dr|\u0004d\u0002ʠSE-\u001e\u000bMq\u001e\u0014`\u001e-P\t%te\u0014aGfv#b7\u0016\nn?\u0015\u0015q1,\b[\u0005L&1\u001e-&j\u0000kA'z\u001b4\u000b\rP\u0002{vhm\u0003p,\u0006Ҡ\u0016;z\u001bh5mY[9;\u0017׵fch`/5(_9\u0016\u001d\u0007S?\u001a\u0002YT*g\roBNQ\u001e˺iຉ\u0015Mz1e}@,'5\u0000(]\u0010\u0003Y툹]z6.m\\\u0010(\u001bptF\u0013\u0007}3KŴ\u0010sWyj\n'\br2*mk\u000b^\u0002\u0004\u0003=<HZ\u0017i 'h\u0007f+p\u001bFG\u001f0cpF\u0003\b9޻:\n\u0012\u00079]\u000e\u0014?t\r\u000f?ti2D$T\"KC\u0010\tf'@%dj۸\u000eIӏ~0i3\u0005c\u000b𠋣1M?Pl-צ<JFi\u0003@Oi\u0018\u0010[̤\u0019\tMm\"\u0004mŪ@ɽ(uS4p\u001fq\fF,n FgUllqA\u0003ܳ\"Ug'\u0006Yړ/9[^'\u0003z\u0015RV\u0003.:\fބUfoc0t\u0003u3FiN\u000b`89A\u0018ѮY?~-?hXquTmv\u0015\u0000S\u0012bdY\u001e\u00000]8\u0011\u0016{\u000f`$W\u0007]G\u0006뾁7.{\u001cC33z\u0017<9(\\=:\u0011\u0003]\u0013AEyC\t/\u0003ؽ\u001b)N\u0003S\u0000zBō$xF\u0003عXqخu\u0007U%Ww8\u0000.v7\u0007\bO=8Zzi̇6wJ\u0004=\u0013s!SJ\u0005M]vx\u0017;>G1n3K1\u0019 \u0011Cv,pp\u0007`\u0016#3~Wպ\tqX\u0001\u001c\u0016\u0005\u001dﬆ(\u000e.\u0015:\u001a\fK6\u001eAcN\u0005\u0000\u001dS\u001dd/\f<ma\u001dv0zi\u000f'(cs\u0012\rQE&ɶ#ٕT\bL`;CڊgL7\u0019\u0019\r:wq\u0001hq]\u0013 sY\u001f\u0014h\u001a٣C\f`B\u001c\u0002Z8LxD\u001etP\u00046\nh[l\u000b\u0000\u0007\u001dŁ=۲hg\u0003穉\u0005?AS(x\u000bm\u00020\u0018\u000f0\u0002\u00006\u0005:,w/珧\u0002\u0003.ju\u000f_Ϝ:\u001dk(>\u000f\u0007gI+_os79Lz`\u0017:P\u0015IS3\u000b\u0014\u000e;\u0002\u0005ȚP+x?\t\u001ePQS͟\u0014[kq*\u0003\u0002Pp~D~\u000454\u001e%\u0003\"\u0011J/7F ګ7PL4\\q\u001c:Eݚ\u0017@\f\u001a,=Xyz\u0003,VԴW\u0005C\bQoׇTu]\t\u0003)~\u0014Iul΅9H\u0006\u0004U\u001e2B\u000en\u0015L\u000b{q\u0019\"!4GM/c\t\u000e\u0001' TQS㌐\u000f4m\u0017U+'\u0019\u0011\\v\u0000ۇU2V\u001aeyupAy[LS拹\u001d\u001b\u0019]\u000bdSuB\u0003\u0016PbF\u000bW\u0007\t5\u001cE؝_jX\"}+96;Qdш\"*R\u0013\u001dSկR-\u0012|7\u001b]xC\t\u0004,\u0010h~i\fV\noI^>\u001c4\"_P4\u0016+\u000fQ;+vZ?g<P>W\u001cXO\u0010>>.T\u001a\u0012R\u0003hSn\u0003\u0011Z*pּUKLo6g\u00156\u001f\u001f\u0017xB+\u0004/\u0005*\u000bo-݇aI:\\Ե\u0015-2Xv_\u000b#MxuYFc\u0003(K&\u0014\u000fWȂ\u0000\u0005I\\\u001fX3j6FDRM\fR+<-M\"Zϱ|gĹpD+ZT\\ewV\u0014vt\u0017\u0018AX\fwa\u0000A\u0019-T;p]\u001dkX*[a\u0007cA;\u0004py\u001e>g{aW\u0013}Ot\\r\u0002\u0003\"4L\u0014D\u0005p\u0001țPM\b\u001eªsEa\u0010\u0005\u0015\u001cV\u0018\b2>A@zVu\"%*\u0003\ni@{p\u0004\n\u001a\nC\u0005J*PD@\t ꍜR.\u000f]\u0002.hq5\u001d\u0015p]sp`Tf\u0012j\u0002\u001b%\u001dvBđ\u001c]\"sАt\u0002C\u001b/m/2ʱ\u0005w\u0015431'>$k\u0014u\u001e4Cqh\u0005SCvYt\u0014\u000fx\u0015W\u001a8f0\u0006\nj@\ne_^NOHȓ[kPh@C~v1\u001b.\u001c\u0006lX,Ck\"QTivz\tf^gH?|'$e/Qh L|(Q:p.D[!~NRܛf.ZNƴˆs\u0015u\bDs䜯v\u0010\u001e~>\u001e\u0000ݰHt$2J0vo\u0015ES\u0004\u000f+BCd҄2g0[gЀ\u0019\u001cŷ27V*\u0002L\u0014]\u0014\u0017:\u000f-nTόЕEs\u0011\u0014^\u0010f\u0019uco޼T\\Ѯ\b9V\n\u0001fѪz\u0015c/] \u0017Vȅa\u000e\u0012QKq\u000e\u0012}{Hン궲alAp߼\u0013)8?[\u001b`FLI\b4\u0014\u0001۩g\u0002`\b\u0017Tcz\u0019\u0001\u0011HSW\u001cM>aH\u000f16u\u0007\u0010|ӘX+E\u0015w=@<57[@2 \u0007@҈\"4\u0004\u001cF<y~/\r\nE;\u0000\u0019)\u0005\u0016}\u0007yS JW-s\u000b\u000b\u001a\u0017\f$ă\u001b\u0017\t#4ш\u000e\u0004!u|&\u0010\fUO̅cָcމ:}7-\u0006(m\u000f|N?0\u0003ד$\u0011q+p\r_xNy,|P\n}\u000f\u0005D\u0014Ί\u001c\u0017\u0007V%Խ]\u0000-`Ėfhm\foJx߹\u001b=-q{XYqƆ\u0015\u0005q6\u000e\u0004^wZ\"h`K$\u001b3\u00178{\u0003\u001c\r\u0005peԐ\u001c\u0014em\u0018r˗v\u0017\u0002lY\nhRoRz(\ff5PDρIw%_p>Ꜫry\u0002h\u00042\\\u0014Ugs\\\u0007b\u0004n\u0006s\u0007J\u0015\tKPEWT\u0018\"ȹ\u0010熅E]U/ FcU\u0013lh(#\u0011\u001cHľ֯t<ʈ\u001e,1A\u0011\u0007m\u0010ZA^i)JMF̣\"+Ia\u001b\u0014͕z^39J\rֳ;TR\rfa:\u0002!\u0011z\u00129}J\u00067>Pk\u000e\u000fmDmzA@\u000ep\u0017Kɛ\u0007\u0002.\u0013cG[Q\u000f<}\u0011X}=\u0000YC*\u001b*u\\|\u0000xMLg\u0012Qp\u000b4R)>T\u0016C5jJ1R\u000b\bI\u0003}\"\u0013\\]4l\u0019@~\u0005o7YxFF\u0015t2\u0015A(\u0005\u0017)`b.W1\u001fqp=G$\u0000<ȝ$\u0003Mx(ʰ69D\u0015.^@vg*\u00166&@GWBl?\u0017Ι\u0003\u001a\u0015xV>;\u0010\"= y\r@w\u0014\u0017&8\u001eʥ;_<\u001dѵ*\u0005:|\f\u0011gb=CO_o\u0015.P\u0014v\u0005C{S=ʊ\u000fs\u001a2\u001c}z\u0002OCkw:B\u0005\u001f\u0007\bfc\u000ea*(H\reE\n\u0002ȫ\u001d~A?F?q$?ݙߑ\u0016\u000fL,rR\u000ehuhy#!-DƌD\u001dm-i)+p\u0013s\u0001桵dL\u0011\u001b_v~\u001e~r\u0010v\u0017R\u0015e\u001e|5/\u0016Xzp=:G\u000fHb*y\u0000̦\u001cF+\u0013\b@\u000e#@0%*0\u000bIH9\u0017M~UUm%kA\u0002ջ@\u00191=%\u0015\bMtTp\u000fґa䃄sYgꈁ8,Q.}'ޓ:\u0004O{\u001f\be\tz!^X&\u0006GD]\\)ZKŢE\\ENV1\u000b7J\u0004-Gv\u0015g^\"<FH\u001abV0dZ=\u0015\u0000א\u0007Y/~Ub\u000fwS\u0010D3\u0004*\u0010\b`fˋ$罩c\u0002jǔ\u0011qXlK0\u0004ȁ T1\u0007Z\u0005\u000e[4%qUg~\u0002p{/\nt<ʐo\u0015=R\u0011\u0011YD$kkڂT}\u0010#\u0004?xy-4bqE!\u0002G'Wy:|҂\t\u00006\\O\u00104\bS[S\u0018YŹ\u0011)\u0019p\u001c\\fS\u001b0>#o.\u000eᾹQcMv\t|@=\u0017)\u000b\u0002\u0018Dԯ\bq48;_wBB\u001a\u0010+\n\u0003\\הޗ\u0001\u0002Fzث8\t3D\u0003cրZN\u0019<Я\u0002*Sn\u0012\u000fxGU<FT*aXH`7we\n\\)\u0013\u0015R\u0002/\u001af\u0004+$8 \u0005(#&rgʽ\"0>Aq$\u0017E@d2\u0002\u0004l\u0005`s\b]hz\u0013oؔ\u0004l\u0001\tr\u0012?_^U\bZX#\u0016s\u0004}\u0010\u0014\u0015(4G\u0014b8\u0002#6L]缃2R\u0006@JD͟3\nmo\u0003_o\u001a&\u0018r\u0007B\u0013\fS \u0005!i\u000b\u0003\u0006\u001b\u001d\u00116\u000e4F\nKYz:9PM\\\u0002\u0015dN=B%o\u00128r8_\u001abŤ$9\bx\td\u001d0B3b\u0000\u0010:\\Ȳ8gyD\u001fL\u0007G3\u0019\u001a+l~g\u0002<\u0002J\rB\u0010,.\u0001jٯp<XbhkP,\rY`\b;^%,\"m(M\u001dYAbx^>x\u0004\n\bUڿ\u001fu\u0012<$ܝj[g~M\u0000Ѿ|ӗƟ{3\rx\u001f{\u001dq\u001fjG\u0013wM7\u001cq^\bAQ\u001c\u0007\\w\u0004~I\u0012l\u0015#_l\u0011GÈ\u00175lm\u0018\u001c!>$d9J8z\u0019S*h˧x\u000b\u0016ţv]\u0016m£ mZe;j\u000eq'\u001d\u0000k<K\u0011\u0012/e\u0011c\u0005\r.\r~\u00110\u0019ͭ\u001fN\u0012N0\u00040\u000e\u0011t[0 \u001a\fI4M\u001euOFmy\re&k\u0016K1\u0006h@\u0002J\u001e[!\u000f\u0006\u001b\u0015\u0012kpf-Ǣk\u0019(H5W#$\u0015\u0018@N7V\u000f8\u0001NI?Kޥ\u0003\u0003\u0014Çz\u0014Å_:i\u0002\u000b~ \u00075+y73ƅr\u001cx->ťkOk\u001fN\nw\u0004'a r\u001ec^\u0006IڛM0MBM`#Z\u001dԫ\u001f~􃀀X>7n\r`,\u0007\t}?\u00167<d~%gрՠ*\u0015\u001aLsxsZW\u0012 7яٷD:=c(5sA\u0019L\u0003o*1M\u0017YGԺew\u0005\u0003:7oZToKV_\u000b\u001d__֗%q4%q>\u001f\u001b\"<\u000b\u0000bb>{Y*O\b+axuN2\u0004x`sq\u001f;ӡ_\u0003\u00074\u000f\u0001Sz\u0015\bH\u000f*\u0010u%/(\u001f\u0000]\nkvPЗ\u0002X>\u001evbAE˨e{0kWی:U#D\u0017\r\u0005\u001bۉ![_\n?\u0001\u0017\u0019U͛\u0014\u000282)xasy[߈\u001a\u0003L\u001b[(\u0015a6PQjFa\u001cTT\u001eI^9 =Όm@Pppzj\u001aLcӹ\u001ciPi=B \u0004s\u0010G\u000b4\u001a&\u000e&U'@[\u0003z`'\u0016+[ˣe{H$\u0012\u0015Zo\u0007q\r{%>-_K\u001f#3_U,W\u0010嶫\u001c=H\u0005EM/\u0011f;П%BP\u000fgg\t銞\u000fea칺$M\u0014S\bo\u00001՛\u0019:=\u0016-\u0016:^\u00030VU~`驍5T(g\u000fR\u0019\u0012\u0005N\u0016\u0001򟍠0\u0017o/\u001d9ymy 2\u0005\u0015#!eW\u001fiNo\u0004\u0015\u000f#ha)wCΌ\u0019Oנ\f<\b#ROIqܣ?qm\n-;\u0016{%-\u0000F!HJMߎ9!vpK'}\u0012M\tEwaSlL)WD\u000b\u0015FsN6S=p+;e]p4\u001eO\u001el2>tk\u000fE\u000f\u0010?t9k\bjM>z\u0012a_\rEuy;5\u0018̪!\u0010cƣ,\"<3u\u001b\r҉N'۸j$'\u0001,|,RlX\u001cF#]Ԅp!\u001b\u001dDp\u00040G\b6U\u0013%V&hܕ2\n:`[\u001b[%'\u0015\r~\\\u0010\"j!\u0003UhTE\u000f\u00173b|s!\u0003xi\u00176DQ$V=(L#w6Uj@tҟ⻲\"֮)\u0014X7\u0002aDak\u0015ei\u001f\u0000|ͱO\u0012dm\u0012U=U/QS(7X=\u001fIK̹bR|\u0016J\u0013\f\u0004/8\u000256`Z4^!\t;iUNПh<\u001d\u001aSG4\u0010~f-E5Zl\t.e{@O\u0013(>\u0010xTWޢF\tPn'H`B\\<\u001bΓ^?B֟\u0004!c%J'\u0012q\u0015Fztj!\u0005DdX\n-2\u00023bzG\f֯N\u000b\bPhě.S(\u000f\"K݃,{ԇr`iz\u0001JB7IƬ\u0002E`_2Q}W\u001d\u0004H(k>e\u001c\u0019\u0014\u0012ǿ xˎ\u0017m\u001dѯv\t(o\bEwv\u0012\u000fA!H>gKAMF\u0018\rh,\u0018n\u0018t\t\u0004>9'rbf\b؄n\u001e߈\u0011\fYs_]F\u001b\u0014ݠ]%do䂆Y\u0004\u0010\t\u0010\u001eR3aPcÛ'\u0002!Y\u0018\bxnv6&׺/O>\u001f?T\u0006(\u000b2\bcr}\u0013aX+bFNJ\u001ak4\u0007#\\-Th#\u0015%Lqκf\u0011\u00027T?ˌK,)F\u0005\u001d\bQ5v\nh\u0003h$\u0003i6\u000e{\u0014¼\u0018x]hQظ4\"6}<\u0011\u001b-@8D\u001c\t'|\tf\u0002jRm[^m&}WV\u0004Ǵ\u000f\u0016XAOzJ\u0013,\u0006*\u0013E_nV\u0018Ւ`Q\nL77đ\"Hv<\u0015yx\u00136\u0012h`h_</3\u0004\u001f\u001b'\"ʒ\u0003)kM\u0006|+j-[#Mi\\2}E7ͣ\u001f:Bl\t9\u0004AH;oY-\u001cĝPf.l-L1y\u0003\u0015uTB/\u0001|zgLQGM:#X~(n\u001cD\b\u001c\u0003F\u0005(\u001fTwf99dEk\u0005\n\u001d\u001e\u001aϋ\u001f\u001e8\u0004tēJ/߽{tCI8&}1/Jt\u0014Jٮڣ^t#D`є\u0017\u0019v>JVh/ts\u001bJ%_-۴5\u00148\u0012jqLƃCݣ(5\u0015\n,_9Ro|\u0018\u0013n,m0\u0001\u0014t\u001bEF/n.B\u0003ʍ}zm!\u001d\u0011\u000eP\u0012ٵ*Ti\n[v}lwg\u0001-*\u0014-ԍ\u0000\"N\u000e0s\f\u0015wfrg\u0011NDX\"Sg@IC\n4/rJ|#Μ\u0011$\u0015^\u0011'=jmvbC\u0015EP㒤ѐv[\u001ajSe*`1\u001av\u0005\u001d /)c\u0018E,4ʭĊ\u0002q\\[\f7\u0007\u0002\u001c\b*\u0004\u0014/?[;q'DR\u001bL\ro*\u001cG\"QyG\\\u0003_\u0012S\u0003_SO*TmN\u0000\u0002\u001ay\u0006dY\n\u001d-l;U/]4or\r\u0010p߂P3k[ \r{>Q=zg\u0006r\u00195\u0005\"ͧmTq\u0010\u0014s\u00011cg\u001c< du|3\bGsf\u0005zYAr\u0014o\u0011챆JkX4-ӌ{]h\u0018N2N=\u0013uc\u0001?$QI6\t!+\u001c0\u000f\u0019\u001dgqy,\u0011S쬊(g=pb>D<XHm\u001b\rRyp-ҦcEC@Sl?\u001bd\u0002*V4EƉ!W\u0011NEWF;&/U\u0006ӼR/(;\u0005\u0018[}Ǥ\u0012\u001a\u0017\u000f\u000fC\u0012\u0001SvS\\{\u0014\u0011)N^M+\u0018A[w\r\r\u0016\\\u001f\u000fERqU>{jluEq!|xT\u0018(OoBwzrX!\t^g7=\u0004E=\"ZK߰8B\u001b,\u0012$\u0014'ۧ:RT\r\t\u0015JPr)\t&Y(\u0011\u0001;W[\u001f>PNW\u000eW9@톅\f\bj\u0012Y$>!<Q&\b]0\u0013\"Rd#\u0003v\u0004qd\u001cjTG9.\u0002\"\bÛppcTgC\u001ai B*sa\"z\u0002Os,\n݈d'\u0004y%u+1Tp\r hDhߚ<\u0004e\u0010*B <\\>u\u000eT6\"BɑFÂo{\r+!8҅N\u0000\u0019+\n\u0001\u0003j-_\u00064\u0012c\u0003rsȉ\fx]B`\u0015v]\u0001v\u0014=%uKset4\bhnP\u001aN\u0018)%:Vk@O#(qU0\u0019 seZ,tr2D;EA\f\u0015\u0013KG-\u0006*w\\j3lp}Q5q\u001aSF\u0012e\"t\nNA67^j\b\u0001C#\u000eWr<H;m~\tA\r4 \\i\f9Ӽ3o{5f˦\u0003?R\f`μ-8+bKFK(c\u000f\u0002#\u00071!c\fe\b)r3BAM\"\u001ejVDRn.K?W\u0010۳Dr\u00075b~\u0018Y=\"ۀA{M\u00179P\u0004AE\u0010ex2N\u001c[p ^\u0002uys)DC\b\u0007/2C\u0000Y\\Ɂ\u0004=Bp/\u0015eqO!\u001f3\u0015\u0000\t\u0002\r/R(;!\\󳂶\u0001G=\bF,$S\u0010M*\u000eif+E~\u000f;fE0d\u0002m\u0013\rE%\u001c\f~;E\t5p_-H\u0001Pz\u0005j펠b+f\u000b\u000ev\f\bi\u0012*\rjD\u000b\u0011&?\u0001\u0000e4x@/\u000b(D\bE:tR\u000fo\u0016|\u0010ڶ\u000b\u0019\nH\u00197\u0005\\O^J<CуZ(T9\r\u001f\u0016\u001beۇqƌhʠf\u0018ވzuTG5%%\u0016\u0011/u E\bLs}O\u0019p%\b\u0001\u0006 nL[{S5+\u001f@۩dLǧ\u001ehMYƘ\u0012軣lR\u0012;l笚GU[ \u0001C*T.ſ~R2N$/@8lXe85\u001e7XHn{-\"m\u0003\u0016L\u0006zUlw]k*k݊ϾŔ\u0018mbT-=8!ga?rca\tո\u0012Ȯf(DB]~0\u0015]nm\u0006G{\u0014$(\u001a%\u0010Ӄ3\u0014tt^¾\u001e\u0004AZN|){_\u001c\u0002\nh%3G\u0004\u0013ZW\u0018DK\u0014Bj\u0000}\u000f쪴\u001eztw9b8\u0014+Yt\u001fB\u0013J=\u0003L`ȳr$N\u001bDLD0[zpg\u0011!gLE\\xLkg˼|&\u0000Zef\u000b\\I7\u0012n\u0007I\\\\ݼpw7܄Ģ\f9SYKO(Z\u0002Kd\rq\u0007D7\u0004\u0011~\u0003į\u0001rl嚕azIn8jQ1\r*k\u0013O:\u0012|x Lfo\u001bn \u0012nٓx3iI@3\bM(Qr\u00005UW!KuI|\t%\u0000\u001b\u0005\u0001eX\n\u0003\u0014D>FeME;&dM>&jJߞ\fTA4j\\]JJ5\u001e`%lqq2~\u0014(qPw\b!X0E\u000eȱJ#DƑ{@t/a\\3ニ#?@\u0013\u0004,c߁\u0013\u0005~~AUz\u0019Dvzf;-\u001dq0W{*!i t\u0015֥AIZiUtʃ\u0014N钜Rd+9diuNHys\u0005\u0001mw\u001aFG\u000e.\u000f+\u0014RhK%\u0006\u0014)\u0012ep?-V=\u0003}Ӭ\rUF\u0018V3\u001a\u0014!v5څڌ\u0018\u0013hGrt,\u001a\u0018\u00006П\u0001^>Vv1_\u0002#5MC0;S\u0011\u001a\u0000_\u0007\u0018^\u001b=\"y\u0004fb\u0019 \n\u0000fN>\u001e,>P!(cH\u001aI6fz #1@\u001711`SQg\u001fqm\u0018%\u0018*OU\u0002鹄=\bgWow>\u0014hcQ\u0013h\bm\u000f5\u0006dhNRSjj,\u0002{\u0000\u0016-6M\u0003C\u001e$*YJY#i\u0014\u001aX׳פ7J\\\u0001\u0018_DP$o~\u0001X\b\bgʱ\u001e1\u001f1:\u0000Y\u001d.~{Q\u0001<u'!v%8d|\r͙O\u0014:S\u0006+dI=\u0012PsB\u0017)\bźC]-Mcbg==\u0014%\u00140\u0003@~i\u0000\u0014\u001cjD}&D\u001d)6=\n)b\u001fO\t)Zq\u0007cld]\u000f\u0005)Wу[R\u0005\u0005֯WF1Du}\u001a\ng\u000f圠`\u0015w\\)\u0010OZ\fMq\u001fM\u00139@\u0004dh'@\u0016Մ,υ~CbGݟd}U\u0016\u0013J\r9XiA֬ kd\u0001\u0017G9\u0005 yV@\u0001\u0011\u0000{xCÀtğh\u0015w7,/\f6+H@|i.t2gU9\bvZkάٸlbg]\u001b8ӆ\u0007.蕧ZɞIzQP\u0013\t̪k\\lH͡i\u0010&6%X9\fU\fjf|.YZ\u0014oRkj\u0016c\u001e\"0SD\u0019\u0016{#r\u000fsT1%rQ\u0007\u000ekMW ^g_\u001b\u001bu:\u0013\u0015kAPSA\u0000\u001bݦ8!y&Iis1{/|a\u000bm\u0003F?5,\u001b\u001b\u0002=҇\u00147oi ܺÒFQ\u0006;`:H7ɀQ>72w:\u000bQR8\u0005\u0019uff/\u00017-\u001e`ͯ#~\u0014,F?{x\"(P\u0005<n\u001b\b>s\u0013y^7\u001da![z\u0013h$(\u001e\"(8ջ\u001dQ\u0013j#:17p-̎P{\\J];n\u0000z\u0005ͱXyFT&\u0010E\u0015V!hA7L%կ\u0005|M\u0001'S{8\u0004Ax\u0015v´\u0015r\u0001nYt2@\u001cr}DHSڠ\u001cP%1g#A3/XF6Ȋ2R\u00177D\u0011`@]^V\u001a\r\u000e\u001fL#\u0007m(PACN\t\u0003]<(d𠰉g@ϴ\u001d\u0007\u0003\u0000JngaC\u000ecMRy,B\u0016\\\u001fڥHwP\"m0T\u0000fu1Mph6x:!\u001a6t8?m!ɋx͆RJqJ.r\u001f9T\u0004\u0017q>T\ty\bb rB|T\tMa'%i\u0016CrR?|Z\u0002\u0014\u0005;``L&h\u0015O o$3\u000f\u0014ڝ)4\u001eBMǩ ̴-\u0001M=Ciȫb\u0001#B&ȗYH\u0012֊R@o+zV\u000b;\u00057m`\u000f_ɿr\u001a=|_OXeRI\u0005?Z-{Vx\u0012(@\u0004pt\u0014_ʬ8\u000e\u001ctym\u0015(ҋ\fNs<b\u0000U\u0017TLq.\"B#e\u0014,=՗)rf\u001frPBӂzSV$j~X{x\u0002rz7>^6\u0005hȞ-\u0012s\u00181\u0002o\u0013\u0001\u0019!Q46X\\\"$8i\u0013jF\u000e$\u0019j#XS:'ۃ\u0019u\u0003\u00020\u001fzt]\u001dsObͰ\u0014ס\u0017m}Q\u0005zsuat\r\u0012X4\u0012\u0006\u000fJJ\u001d_\u0011|R\u0014vAµ\"\u0005\u001c8/\u0018} xς\u0002I\u0003Rc%A$u\u0000ѺƮaVa/\\9\\\u0014y[3\u0013DyMN`%\u0005ՂSK\u0013(Q(x\f\fd1\u0018w_~\u0018f|N\u001a+Q|J\u0002`{\u0003\u0017;T'p\u0012\u0003\u0015g*c\u0014\u0014\u0016$\u000f\u00041(\u0018Z|\u001d\u0005엕)DC\u001e'\\+\u0000\rpL)-WKA)R2V<ҍ杋@P<;o7:\u001ae$+4\fc\u0011Pn\u0012\u0011SR}ZoZ״@\u0011f(k;\r=3$\u0003>\u0007\u0011#!\u0004\fJe$4\u0000 ~ݠ\u001c$&\t\u0010se@J!n\u0006A\u000fYB\u0004\f8\b*| ݵir\u001dl\n^xUخ^iH5Yb)ݒhOA\r~v_)\u000eeFz\u001a\u0011h$!5\u0012\n\u001dq*#1\u0017(J\u0018bo)'Duڸ2\u0007&<FGC}M\u0002HKRkɳ']\t\u0018F\u0011b\u0012FU*PƦsMW\rOFxBu9=N\u0014شj\u001e\u0004:٣J\u0019a2\u001c@D(7~!4$s_:D\u0019޽ݽ<\u0014\u0017\"Ng$<\\\u000fJg\u0017b6x\u0012\u0018\u001a\u0017\b\u000fAںKC\u0007UWBd\u0007\n~\f\t5+{\u00036\u000eqx\u001dm\b^)'Sj'#ӂ$cUhg[n\u0003\u001ecLA\nۯT8W,5]\u0018j{ѯ^1>W5\u0013|>+d\u0013\u0000XCcU\n[}t\bkO8@!ټI4`O\"(Z!:\u0012*T\u0006Kw2\n殱cK\u000e\u001c\u001d0V\fm_\u001d|7\u0001MV=Ex\u0000v\u0013Ѫk.{\u000ft)M\u0010+_Q[v+>=\u000250\u0012r)xƷ,>[:U?T\te\u0013*e\u001fD\u0013yby\"Yצ\u00180'\u0007ȃQ|\u0017jLrw\u0018\u0010?z9<Qu\u001bM\u001dM\u001bԠ'J\u0010\u0005lGB|\u0017eRs\t\u0010_e)W$2ϔNU\u0004g\u0016\u0002E.\\\u0005=cW\u0000\\\fK\u0005\f53螠g\u0007\u0006朥X\u0010R\fuݍ\"ξq;Ol5\u0015\u000e;c_\u0013P]s?M9j,j\u001b>\u0017>NWgGlEt\thK \u000770*ޱیLV\u0000#T{:V Vapĳg\u0010\u001c;\"\u0015L\u0001\u001b \u0007A\u0013\u00079P*\fMJ|0A:[tJ\u0017591P\u0014P\u0014)\u00124x\u001e^\u0014ʠ\u0006f\u0010xs\u0016\u0002b\u0011\u001fu9xt\fPQjF]A\t\u001bZ\u0017b\u00074\u0012\u0019: 6\u0019Aj\neknKɅ\r#f\u0002\u000fN\\RY0WJ=M>-\u0012rr\u0006D\u0000B'Q\no7H['\u0004\u0007E\u0004t.DDL\u0015r6s\u0001\\5m\u0001agDWi$%8Ʌ+c\u0004޹\u001c6\u001f0l\u0012g\u0014W\u0011QݔA+\u000f\n\u001aS=?z%XX_cBgzr',\u0017\n\nj&+V!b\">\u001fl6\u000eSO_nr++\u0002g9mNcAw*\u0014f\u0002C\t`2\u001c!\n\u001cq!Sl\u0001\u0006oz\u0017s\u0010#wv\u00044\u0003ֵB\u0012Ю]m樍]1~R#(8H;RxR\u0016#I\"\u0016py\u00112@}Qoq.0\u001aP~|xd\u0002\u001fgQDBG]\u0003\rk͛o\nY64Kr\\H+\u0006`,e=n0)\u0016\b\u0006\u0010ʵӨԎ\u0003\u001f.BPUCFy\"֠=2#\u001avK\u0014\u0014=M{\"\u001dV[o2\u0014+n#\u001c7t%\u0005\u000b\u000e)Pָ\u0012\u0005JukAF\u001dbC\f%E+ɚ\b\u0001[\u001bg*+\u0010\u001e\u0005K(\u0017]J\u0001O\u0012\"-T\u0013?\u0014=sVY\r^%=9Lp`>\u0013p\u001bf\\{\u000fJ8\u001dQ\u000b]L5W]k\u0007ΐOc6;NЊ}\u0007)\n=iQ\t[&\u000f^}8+\"\u0017y)$~\u0012;l%UL\u0005w<T\u0007[2⮿|O\nuD$5n\u001d\u000bp\u0000T\u000f\u000fEQNU\f$\u001a`G$1%#0F\u0000\u0006.`1\u0014O\u000flE\u001eM,j\tOs$\u0010֛.DC\u00135Aip\u000e2\u0002v\u0006IG<M^\u0013\u0019#\b\u0010TbW-q\u001e\u0015f1V\nՔ4\u0013AtH\u0010rٞW:Ǜw=\bx6u>8 rDal鮾\u001ac0-TTS,{\u0012V<\u0010\u0003\u000f\u0018hJH\rz!)|.$N)$pHjq\u000eS\u0013@J\u001f)E˷'Pj:\u001d%\u000bVB'\u001fқ\u0004R+\n\u0018\u0011#D`))\u001a+eҝK*\u0014CNSJ\u001a(EsA\u0000.qA9\t8\naZUԁ{^p\u0011ݷ8]\tj\n~\t\nGO\u0007; h\\\u001bp_$aun糆0f!{IDXu%\r10\u0002C]\b\u001eUGԵFw'B\u0010\u0007l@fܷ_\u0001q%TYxz\u001c\u0013@z\u0002\u0002@fz%\u0011Mp\u001dֈM\u0010\u0000R0$\u0018bSvlȯ\u001e*\r\u001b\u0002D{68\"ec<~o \"\taԉ@u\u001bt$\u0018Fw(\u0011I\u000e\u0013sd\nl=\u000f\\v\"\u0006p\\5\u0013\u0002BS\u0014A|\u000f`d\u0013\u001a\u001eg@utءE֪\u001cx(3 O\u000f,?B\tM&4\u001a\u0011x\u0002\fkԖK鑱y\u00035O\u001e<\u0012;/\u0013,w\u0013T:\u0019:aB[\n`\u0014Gs\u0016M`_}i\u000b%K@\u0017m\f@>HT\\l\u0001@<Pep\u001b,\u001a`3\u0002V\u0014by7vZBP\u0012\u0004\u0019&^\u000f15FR\u000ej^\u000feUF#\u001e\u001e2))\\su_\u0015\u001aNXB \\--gLz\u0012tT-F4&C\u001f{\u00068\u000eB=?IqRi=j&a\f.JSot˷\u0010]*QZ/\u001dGQ\u001b>0\u0011RoC_w5\\\u0016Qαs2\u00065}s\u0000%\u0010/l\u0007\u0010D[8R]/4:aet&8\u001c=&oԿ$:\u0015EJTu'\tu@;!$)\u0005XyR\u00079\u001eNak>6\u0017\u0014F\bo\u0015\u0018\u0000 15\u001c,\u0018ܐQENIu\u000f\u0017|\"\u0007\n/\u00134h,γl$\u001bAsx\u00198W\u0012vt`(3C^\u0011:)zu\u0013h\u0002Υj$i(YGwgh\u001f#9\u0005E!B~\u001e\u0011\u001fX\u0003Ćk85D\u001as\u0010V=\n>\u001cny+ѯ\bz@Wm\u0018.]ǿl.~!Yt\u001f;ϳ\b)\u0010\u0002񛶖\tW):o0\u001frk`\u0005\t:ɡU\u0014\u001d˛MU(#;uh#j%O1Ax)FM\u0010\b\u0002pXνGA!nZ\u001bwy\u0019(V~\u0011P<\u0002\u0014[\u000b+J6\u001bg\u0001>\u000fՖmxC28!F@]\u0019%\u0002fQ?Wpx8+JM6Jl\u001e'\u0006B\u000b\u000bS+\"1B\u001c_{\u0001ޏ\bE߼#SpO\u0007Z\u00149z-p^`\u0013ѧ&\u0013|?}\u001bcPAý vZaP\u000bA\r#8h\u0011FC\u001cԁG!j*]߫mЯ%9@ŵ;*Wb\u0001-\u0003:\t\u0019xGPpd\u00046)g\u000f-\u0001ީ~eF\ri\bJ,Gm\u0002] 6R`:kle9\u0002Vs),PqSyO#\u0017\u0003\u0002ط-\u000eKv\f$S>YcF|f\rȏO[x\u001f׌Zؘ\u0014Y*q\r]\\\u0004L/]\u00001.Q$U8!k;NASNm#A\u001f]\u0019PI#ݕi9,Q\u0016x L$\u0002l`_\b\u001a\u0017H\u001f~#vخPS\u0018\u000f\u001cE'\u001eF29W%W)\u000b7ʺ̞;A-}\r[U VmЌo93ZoeZIִ)>\u0006B`\u0002E%Tyt\u001fJ̣$]Р{\"\u0015(\u0012[SW˾'W\u0006G\u001cث\t\u0012?qI\u0005\u0010Pjk\u0001t6\u000bi\u0000*\bŖ\u0004yǘ9K\u001a\u001aRl\u0018\u0000Y\u000fhE\u0003Vs\u0017\u0014=\u0019!\u0007:POB]OB\u001b\u0013\u001b\u0006/U\u000eoV͵\u0001h\u0012ai9\"?xAq)c\n\u001aT\rkCS&`72@XZ<'A8#Z\u0004\u0012vPjR_\u0019(!gAPN5JygXD\u0018\u0006.Z.1WkybW3-LK(5%vӯ{2J)'*8ԳeXPj8֖!\u0014\u0011F!\u0000\u001e\b,g4-0Bs94'\u0010ÚۛoS\u0004t\u0016˵arS?\u0000ԫ-QZh\u0013\u0005\u0017hpva0W}V\u0007.u\\\u0016|\u0012,wD\"!\u0000}~\u000ehF\u001fS/M5\u0019!\u0005w=\bMy>G/$.*RN\u0000\u0011\u001f\u0013#=T*\u000bw\u001b=$`\u0007[O(\u001an\u001by9\u0001ՈQ)T$\u0014󀼅yb\b\u0019.\u0014~a|o1?@ׇ\u0005\u001c*Z\u001b>2\n̂\u0019n/\u001c\u0004q\u000eVG`Ն2\b\u00023e:wz/\u0014\u0007\u0006=G\tnD[lv\u0016\u0015\u0007^JX.~v:ǵ\u001fXD{aI\u0005J8o\u001cEЙ\u0006j~5\u0012$vR\u000f'\u000eY\u001c\u001c\u0001\u000b\u001bM\u0005Ym3\u0002v\u0001P\u0001-\u001bU\u0007\u0011%}O\b\u0016\r\u000e hJ4#`{f|fﺢI\u0001\u0007Np\u00115c\u001cb#x/]d.0\u001fI\"2SfO;\u000b]c\u0003a6#Y\u00027[2ugYgG|^&R>M\u0017RR̀-1`(sn\f\u000b0\u000fnБq9\u000f\u0019\u001c(tY*JD\u0014t|#lJs(+,^V7PIl}b\\>J\u000e\u0006\u001f9^ND;=29Ao1n.)O\n_\u0017-W\u0001VzgN4\u000bv\u001f\u0013'R\u0002D5y!D#\u0015YH|=$\u000e2ni+\u0019\u0012!k$\u000fZ\u0005Q`-qj\"*|}\u001f\u0011SVGϝ\u001b[!I.죙\u0000\nZ|օ\u001f\u0011ǎ~E\u0000E/\u0005&\u0016IhA\u001b\u00062i\u0011:\"v-Q鸜(\\EhOv:v$\u0010\n@~\u00000\u0019/%nmi\u0003 殁sG8|\u001ee.OgmS\u0007[xO'N#\u0016\t&F\t\u0019?-\u0010;bk}\u0005\u000bf\f,\u0013@0Iq(5I*x\u0018\u0002)aĢc\t\u0006\u0002=\"\u000ff'@m 0Ku4Xt,\fŸȮ98ט\u0001\u001cBFϗ\u0007ny6&\u0006\u0014w\u0017n.\u001fPtZx\u00011qApA\u00155\u001foO+\u000b2s(,\u001eEt\u001ezuM<`Stю?rC;N#\u0005\u0016beKs+\u0017ƪ\u0011\u001b$\u00036\\ZTæN\b\u0019\u0018.^Xypgr\u0007F\u001cM`hkU.\u001eP\n;#\u0011ю\u0010\u000b>큝w\u0004\u00183\u0002y{q\u001fMwD\u001dLãR{WzW\u0000E<{*M\u0010Qm\u000f>\u001e\u0016\"\u0004'\f\u0005脏%LiN\u000bDZ\u001b\u0014[\u0013<6~QVH)kG5\f{)v<0<G-&Gl\u0015QA\u0011\btGGLL6ȓ\"\u0015\u000bMsK';\u0001\fU\u0019l\fZ\u001d\u0012\rC$e\u001aSIђR#E\u00009t\toU*\u001e/eE\u0000\u0018\u0018q\u0010eb\u000e<\f,&}\u0011d\r/Յ5EA_+\u001f.a7\u0006\u0002~\"ԧK@e#Oʞ\u001327[դU~O\u001dԓ\u000flK:wv[q\u001f4\u001a\u001eL^FS<<\br[y(Oleekݒ\u0015E\u0013l\u0011>=\b&HBOۣI\u00173w}OjREɛB&l\u0013@\r6!PC'\u0017\u001bj\u001b3w܌)8\t\r\u001fd\u0002¥Gd<n(7D \u001e.\u0004Te\"ǎIYW֭)\u0001`qvB\u0004\u001c\u0005O\u001bc\u001fM\u001e\u0001%e\u0000Do\u0010HX>x\u0004Lܽ2\nx\nu\u000bETk!Joi֌@\u0011\u001cH:f \u000fTãz%\u0000\u0004\f\u001bO?\u0013cVwӱ\u0011zռ_evzz47V\u0017+ǷdI$R\u0011+\"JV@`d.gǨ9݊PP\u001cm\u0013\u000b켾ר\u0002F*\u0015Xjdlws\u0017z\u0018<O\u001d=\u001c\u0002X.mS/zZ8P@βW%\u0001\u0007ʬf _\u0004k\u001d2BN\u0004ZIY@\"ּ\nF\u0005\bvGi=JnؑX:YgkJg\u001b9\u0002<)\u0003\u001e͗M\\\u001eBߨ\u001d_\u0011b֍\u0013؟\u001e\u0012jv;r\u0012\u00171S}\u0015\u0017\u0018\u001e7\u001f\r\u00171#Ǧz&_6i\u0015{k\u0014-Ki-G\u0011&[%`\"2\u0011o$+Q!v\fj9qJC\r}Q!o\u0000(7~^G\u0003j]8LW\u000f-[8`qb5\u0017ҫk#(BU5E$~(}ޔ\u0005Q&,v2ZZ\u0012M\u001a _Y!B@K\r\t\u0002\t?f\u000by\"`}\u0005\"\u0017|y<\u001fpmB\bܰ5dKhL\u0006\u0007!\tr\u00195\u0003G\ff}\u0004UT^\u00070\u001d^\u00008\u0019z\n\u001bGd\"S\u0010\u001f\u0007`]\\\f\b\u0006\u0018\\ZyBɝ\u0005\u000fl1)\u001epD&!'3auZ\u0019U\u0001\\\n8\u0000V\u001bk<\t\u0015C\u0006\u0006|~4\u0015o\u0013\u0006ښ?M\u0010\u0000u\u0004Ad\u0012✻-}\u0000\u0012\u0016\u000fC\n\u0000?\u000f\u0016r5fGؼDE{k$ ϧR>>\u000fdRARa\u001aH+\u000bg#pc/W4(\u0011#.\u0000T1\u0014/ؿ[\u00166dh\u0018+uJ,\u0018F\u0007\u0015f\u0013!D\u000f\u0003,]\u0007\f\f\u0005bߙ\u0018P\u0007Aj쯾v?X\u0003TPZ\u0004qT\u001323d!x?T\u000e\u0007\u0007ejFE\u0013\u0010\u001a*[}YGJa\u0002u2\u0014&u$\u0017Xՙ\u0001mbEĥCrG4kipIS\u0016%\u0019hSccBN!SjL\u0004\u0007\fS},\u0011XpXkA\u0004+T`.}:\u001bQ?Sۧ\b!a\u001d\u001cl4B\"\u001d>\tZe1IڥoaWS\u0019I\u0017\u001a;\u0005\u0007\u0010\u000b\u000f@(\u001a\u0004W]㗜5ŢFN%o+!\u0004S'%%M+`Sb8&\u0014\u001c\u0000<y\u001e\u0002\u0007\u001bTNL\u0005B1K3/8a\f\u001d%J$)CC\r!zbܓpu\u000b\u0004\u0011ԓ\u0013/`| \u000fN7[ {\u0010~@\u0007\u0019gl޷~6~<g\u0012#IC\u000e\f:ȝ8sb\u0014D\f:sdo3R\"\tAWъA rU\u0013\u0000j\u0016!x\u0012bա@Q\u001bHRYq~\rXz#Cx\t\t#N>q`NmPJ*v\u00045:y\r[\u001e\u0002\u0000#A\u0000\u0013\u001e6E&#L8Vl5?\u0018\u001et\u0003n\u0004Fg2*#d~)pܑd<=Ⱥw\u001c\u000frF\"(\u001b\u0019 \u0002=xNY3LC:܀7\u0010eiHI{ME\u0010cKo\u000e\u0013Rfݐn\u0002ܣemh\u0013BP\u001e^]I\bg\u001c\u0000(In\r\u000f#b.I\u0012ػu\u0019\u0004#S=\u000f\u001b\u0014\u00167?׍з9\u0018z\u0004Z)a@S\u0016\u0006x?~Th^\u0017\u0014\u0019ץ}Fk}pܻ&5g}q.nKw\"_~wj%^s:jo|<1H@L\u0018d\u0000H\u001a3n\u001e?4݁:#PRᜡ\u0010C<}h\u0000;7w~'\u0014\u0000&㙼k&\u0013MC9Os|͐&A\u0014mcD\u0007`F׀8^(o\u0010HNG\u000b(@Qn;\u0014\u0002ʆ\u001d\u0004P6a\u001aqg\u0011\u0015EΊ\u0002ߨmC̹ŝxz{Uq[<Qh6\u00186\u000b:R8piN=&'(B(^(\u000em\u0013ϧQr\f<_\u00192b;;8x\u0011RMJ\u0012Of؃\u0010\u001d}uܻAsr3gr\r^\u0011^x$\u0006e 5.VBw7}\u0005\u001e,gR#E\u0001L,zvHĖ̀q\u0011i\u00061\u000e6/(\u0007 s\"EjP1:~\u000fgPY\u001f\u0011 \u0010sPF&ބVz\u0016l\u0000f$`\u00068\u00062P?\u0004uBkg?Y(nOv\u001e>7q8y$(4LϹ/\n*>}4,'\u000fuy\u0006B\"4Q+\u0019\u0015q\fTū_yfW0\\W9Es\u0013>6t\u0015|P+wBu~04@\u0017cHJ\u0000\u001aݶ(!Ò$͡:ӽbnkBZZ\u001b-\u0013\u0011~cbi\"fca\ns7GI86@7yʦu .#׹\u001a\u0016Fad0>#Q\u0003E\u0000\u0016JTp\u00185ra9i\f\t\u0004\u0011ތ\u0017\u0001M1Ac$#\u001bT<\t\u0011\u0003e#4\u0010@3¹B,\u0006\u001d\u001a1K\bb5$`\u000fNO1@\u0006H\u0001\u0011ü/\u0019ϼ\u00124nΤEth_0)*\nx+7r2\r.$\u001c h~\u001b\u001c\u0004;(^_|$\u000fYF}#T/q,;\u001fobfF(쉝C1˲Ɣ!Oc+g^ԛzå~PݙH,1bG1r0{Ll>=\u000e\f~9f^IXY@b@ֶf\u001cka\u0014fa\u0016`ڊT}oW ;I6\u0015VghA?\u001b\u0018-|\"\b/޴ݘ\u000e\tޣ{c\u0001\tИoAL\r}J\u0007\u001fZ\u0010#H\u0006tl!ټ\u0003e\u0019}\u000e\"jf_S|zKuwD0HM\u0000\u0010'Vˮ8\u0005*Z<y\u0014\f̝Ɏ\u001f\u001e+\u00005\u001b\u001an4_s*\u0018\u0013֒4\u0005\u0010ԫ3h\u0010bCeb5\u0000\u001b\u001axb~gڮRD^:\u0007z(`D\u001a7Kba`lĎ0\"e^Ӭ$IL?^}SxY䱣p7܎&pFq鼯*Q\u000e+\u0017\bg\u0004\u0005\u0013[)W\n󏯁\u0000oTsZ\u000f\u00120l2>p\u0017et,t\ba\u00136\fFN\b1l5\u0011kEL_\u0013\u00116\u0014\tA+s`D\u0001`통\u0000\u0014>\u0000Y\u0007pWG46\"V@\u000eۖ#G0QqE\u000e\n\f\u001dݳϒ3Ο\u0016и\n\u001b\u0005Es\r)+ʓ[\u0013\u001d\u0003TQ\u0018^?{x\u0007GR\u0010h\u001e\u0002:l4#\u0011?!Q[\rz \u001d\\\u001c\u0001h\u0006\u000f\u00048L\u001d>ij2Yru2E)_!ԈA #\u001aa\u0016m\n\u001dW0 \u0019i9.,\u0002npH_mܶ\u0003%(J\u0016>\u001e=\n\u00035`\u0010\u0010GAqʹ[\u0006\u0013d\u0005ziI>\u001d4o0Nj~\u000fȯЗOd4h\u0010\u000eP\u001e~9l\n\\|Qz\u001f\"h2 ]&Cl\u0016c\u0007eå_\t9U~3WU1B\u0004dm\u000b5:BE)\u000b1_6_]\u0000\u000eN(eJ\b \u0003\u00027\tN5(R,\u00156]?Csߋgl,lH\r@QߩN\"H!ty>\u0012D3f$2!\u001bL\u0001OA\u0010\u0015RN\u0017\ng\u0011\u0018!Lm_\u0006\"+p\u0017혽<\u0001FOOA1d$Y\u0007~ni`O\u001aY\\\f\\,6\u0007`M5m\u000b~6\u0005-Q\u0005E\u001c1\u0018\u001c  \f(TSEX\u0002/ c\u0013\u0017G4mTܺ!\u001b=1\u0012QDD\rT\r\u0000\\5\u001ca0\u0007:=@R\u0004YE\u0005EsL\u001b\u0014f\u0017\u0010\u0011\u000fmO{\u0018@\u0002֘ki*I\u0013\u0003\u0000\u0011#_\u0005ѽYS2)罵uo\u0019&Sѱ#6Sί]S\bWU|\u0007\u00189HP\"ED\b\n\u0007T\u0014+e\u0017e\u0016@kjl\u000f\u001f2\u000b\u0011\u0005H\u001b\u0014!^\u0000m\u000f&<O{;P\u001b;>\u001cm\u0013n\u00167o\u0016\u001fG\u0014d镚(\u001dw/v\br럛˷\t߲P\u001eP-}PIH*㴅+k(GmqA\u0012\u0002׺+*>\u001fT}%QCn\u0004ʍKGpӸ\f\u0001[.a*R,cggr\r@\u0007\u0003\u0002b{CjRE\u0007l)nEBx9;:<ց\u001a\u001aZsa\fÛds\u0010dJ2WGz*\\{%I_\u0013\u001cp\u0013\u0014\u000b!]\u001aR\u0014Y<p^>Tϭ?˙\u001e>=;Ļ\u0011|]U*$Sr!+{\u0005{\u001a\u000b\u0012j;F6Z/\t!S\u0016\u0007Z\u0011\u001e*\u0014C<ǟ\u000fG\u0003RcxNUZ\u001aa\u0013}\u0015&\u0002v0-K/:\r,ULZ[\u0001\u001bA<uJK*Q\rٞ\t8А[YFFz8e\u0011@/PNO|8RQ]'*z*8`\u0002\u000b]~[s^`\u001a2|Mm\t̯vN!?a\t\u0015H\u001d>\u00194Ι_\u0013v(]l\bXR\u001dŅ癣g[-?E\u0014\tK\u0002|)Q@c4)Yd\u001aBn\u001a\u0013ʡ\u0014\u0019I`äѩue3IgR#TjBธZ&\u0010gAاJ]޳<B̒Q,\u0019h{fՈN\\RA\u0011]\u0013M)nH\u0014w\\N1\n\u0001G{=d|qg{\u0000U}`\u0000hиxxЦ+|\u0017*J7a\u000foR ,m\bH:C9A\u0002}Rb1\rN9a)!\u000b;`\u000bXV\fVj\u0006\u001a\u0004OФ\u001b\t\r\n](ƽ!P%\t\u000b3-\u001f\u0011\u001b\u0016EB\u0002%\u0001'qVڙ\u0011~i@NȺߢO13s5֧h\u0002F=ܢj\u000b}mR/+r\u0006Q\n\u001a\u0000kî2uXrj\u0011\u0001\u001dv\u001f4v\u0014*</? -9x(͊N\u0004NVcE輰GJ'zbS\u0001FԠ@Tq'ME\u0002YRHs\f5bt\n0B^dmvG\u001cp\u0012h\">\u0015g˟4zU\u000f\u000f-URU4VN.\u000b\u0002RP-\u001f*C\u0019|\u001eF\u0003Z^2\t褐|2 #fcM\u0017睉#%7 v\u0006T;Kf\u0016%ImRM\b\t@{.c\u0004s\u0006|9В+\bZ~\rm#o7\bvEr \u0001tpm*Gxe$p%\u0018՟\u0011_RՋ\r \u0007Y:.}\u0011\u0014ږ\t;`ٕqa5+\u000bS\u001bE\u0010z\u000bƺ6η\n\u0010z\u001a_\u0001\u001fpwI\u0002#\u001a\"##s/z\f4èԔ0Su9<_ʧe[t\fi\u0015\u0003a;:G]\t\u001c\u0012V9JSh95OM\u0000Qύ\u001ei\u0017(hL\u0006pLm!ĕl\u000b4WH\u001fLK@Z\u0019Nr@OhF9\rUilP+b>T\u00034L\r.Z\u0014~C,h&_tX>K\u0014p.6&A=\u0005-xE{z:j\u001b'\f>pɆ,\b{?n?Np[JLUI$k3&ѶA|\u0017w\u001a /%\u0015\u000eY*U|ѲUkQ\u0011FT|`S\u0000]Rx\u001968\u0015\u0013' [\u0000G=\u0019\reN4*/U)5!\n~7<\u0001\u0019r4\u0015}>=U._R4ҡJp/+D A\u0006úVPS-E:\u0002\u0003tU\fQj(C\u0015p,=\u0002LT!pѴ\u001escA\t6\u0002n\u0014~u1±CHX/4e\u000fy\u0010\u0005I\u000b\u0015\u000b@B60(Tm\u0019\u0012\u0014\u0001X\u0003PUpnP\u000f\u0019\"aDSXY\t\"\u0012P\u0002AfP-Ў@S\u0007S¼\u0014\f%`AD۠\u0014\u001cg\u0002E\u0012\u000e3Wz\u0015Z\u0013\u0000<bM\u0017q\u0001>twR\u0002ϼ-rn:\r\\׽\bG\u0011@\u000b\u0018\u00027*`_\b\u0014QF:)\u0000`0zU\u0015\br\f\r]\u0019\u0012\u0004am\u0019kS\u001aߐtE̩=\u0014\u000b|E\u0018C+ͩ\u0007&ȔE@\u001a?<\u001f\u000fͲQX73\u001b:9T/)g}<6: \r잳{Ʋ$裧\u000b\rh\u000eM`t.HԹLH\u0012\u0005A5\u000f8\u0019oѐ=\u0015^S=B+z\u00037\u0012A5\u0011\u0012X\u0002\u0013\u0005s^\t\u0011I2pbP2Ä\u001fi3uWMD3\u001dl\u000fŵ{`]J&h|\u0000$\"@\u0010\b\\KվD*\u0016p:ݒqY\u0000C\ffФpd?i\u000e ?i8\u0006#\u0011iԚ\u0016qg\u001b]\u00177\u0011sՋvy)gN\u001a2\u0010I\u0017SizW{\taG;{\u001dqqM8;Z\u00039'\":lár-w$s\u0013v抎\b\f\\+'\u00004T#3\r\u00159#5\u0004-\n?@Q\u0002ti\u0010\u00174(tqѬ`\\\u001d\nrI^ -\u0006(N_/UO\u000f\u001e\u0012MND' \u0003RU\u0001S\u0003l8\u001d;\u0007C}e\u0007l\u0001s\u000e\u0019K!#jN\u00198:\u0005 i%[(X*°\u001fn/\u0015`Ms\u00146P^LY+)m 6ԢP@ B\u0010\u0007:x3WP\u001f\u000fw:VH\u0005۠Dt^\u001dn\u0013W(9\rJb]mbc-\u0018&\u001a\b\u0011\u001d6>W\u0004xѩ+P\\x\":lRNJ<\u0001,\u001b\u0006>Z,R\u0003\u0001$M}^BK`\u0010%\u0019\u000e\u0014\u001eq\u0006o\nINr򀖁{\u0007\f:{_!I'ے(IQIE3+Qp!\u0011b=\u0014|d-G6\u0018QQ\u0016^1^Uk;K?/W`\u0003j\u0007Ӕ\u0016s[)\u001a\nN<kz@NܚR$\u0000\u0011\u0013|&0\n\"4*Zwܹ[\u0013$V:7aLLOZ2`uY\u0001g.\bNSA9 4U\u0001\u0016\u0018jaƄP޵^<O\u0004\u0014\u0016(́\u0006o*&H3\\%B4q\u0006ؙ\u0019U4\u0003Xa\bUOA\u001er\u0006sO)Ԛܚ\tW\u001epOp8<RՔ'N0\th\u001aʀ:BYŵ\u0005I\u000b.\b)@\u001a\u001bޛ=,\tP(IwF)zs텵?\u001cTkHp|x+0\u001e \"jA\r?m\u0000[SBAȖ~m\u000b\u0012\u0003\b֞s;\u001a!9xR¶M\u0007w\u0017T\u0000+ՓZHj\u0000\u0012\u0017Ϊb\u001c\u001cHwگAt\bZT\u001c\u001c\u0011O\u0003\b.\u000fb.\u0005wD)<.D:iоY$G/kr쑴^c,9GIk[/\u0013\u0011\u0007\n`C{\u001by_D*\u001cdg`\u001eIlUyKfYZEO{-hygCj=PN@k/J̼<\u0001nr[X\u0012/\u000f@W\rHb(>o݄5IRl&\u0006EFh^\n-#\u001c)f5\bI\u001b\"\u001ě0fўí̗V-\u0017\u0000$9 ~;Y}\u0016\nnT1U_+\u0001\\/\t??\u0004G\u001a2e\u0015c.jq\u00061\u0017=h~ɿr\u001eˬ98 )S5\u0006@u1a\\\u0003:\u00111}%\u0002DL+80Lb\u001aZb\b\t:7@~%[^*G\u0013uXt\u00033EԒz7W\u001b:\u0014\u0013靽os\u0006dq>g\u0002\u001bx\u001aj\u0019+F\u001c]\u0001\b-ɵ_\u0006\u0018~tL-_\u0005Wl\b\u0011RI}d\u00100S\u0011\u0016#\u0018ԙ\u0006\",TpW)n2XPy\u0017HA\\ \u001e_Y0\\jP\"\u0002\u0016*~X3\u0002渘\u0014<\u001f<a`ܵz\f:q\u001en\u0012P\u001e\u0013b\u0015T9\u0005\u0019\u0001\u0006$.}\u0015iۓ\u0011RIըJ65h\u0019g\n%?l|<QdGN\u0012!\tC듊d0>ìN\u000355\u0000!Z?/3\u0013CmĆĦ5[52\u0018w,\rR:\u00000QJٸE]GewC$w9\u0018\u0006R,ϫ\u001a5?vD~\u00076z)[̅5ecSz58]-Poö_\u00051D?\u0010l{\u0003yBR2I\u0015s\u0002iZ\u0005BwNS\u0015&\u0016RK\u0000\u0013fѸ\\M+8\u0007y\u000f(\u0004\u0015ψ!\u0018\u0005\u000fs\u0001[^|\u0001T9[o\u0001\u000e(\u0019\u0019GTFPSbW:*fJ|Z1ʄx@\u0003p\u000e\u0018͘bGQ;GiÔ\u0011Jw\u001am.\u0014Ah_2\b\u0016&F-3vT4!e6>\u0015\u0013\u0013\u001eSt\u001f!T\u0015i\u0002J77cPO-\u001bA\u0011͹ݧ]*1em,]Mh =\u0013\u0013{\u0018'aHku\u000ex\u00004kH/\u0014`2\u001bj\r\u0003\u000fΟ,kiǰ6\u0017}QG@W\u0003:\u001fY>7\u0016aGl\u00111Bq\bu-\u0002$vq0۠\rh|忞G\u00139s\f$\u0011\u0005\u000b\b%m`ЊM\tw\"ƽΊ\u001d\u001bů\u0002V\u0005Ug1Bā\t\u0016\u001f\u0010W'[\u001f\u0013䠐tCtnW/ꁤv\u0015,3Ξݴft\u001a#/Z\"\u0003\f\u000fŽ\u000f\u0014P3\n=F(\u0019}bg\u0014\u001dh(H\u00180Q#'`\u001b\u0003\\g8UWhJ\u001a8ze\u0006\u00171tn\u0007\u000b{'\u0017Wz\u0019x>6\u00012(d\u000f>]_`\\z>#+\u0002u*ׅbY\u0006Sъ\u0012\u0016\u001b]\u0003)\u0017#\u0006\u0004OިU@ᕔ\u0018\u001bCcwчJ()= \u0005;r5G)\u0017;P\u001e\u00060\u0019_02Z^1G\u0010L8dd\bZ*h\u001cǼo\u0004\u000b-0qOa`y|\u0002;xl'\u0002a##p'`p\u0010Uk#\u001ep\u0017\\Lw^ L\u0004O \u0000˙%ȸ~Cԟ\u001d\u0018}\\\nh\u0013\u001a\u0001\u001azv\u0001ܭ8}wQ\u00073%Qgu\u0004☘\u0007Τ\u0014_=\u0005\u001e-ȳ5#++'6~t4*~o\u00066\u001e,\u0002\u0016D `\u0011P\u0014`\u0011۠Z\t뙊|ľJ\u001dd념9%\u001a\u0000O;\u000e\u0013ک\nW\u0019cg\"-\u0003,3-\f]Н(uS{- \u0010P?\u001c4Q7u֧Ҹ=/:/\u0013s;V#)\u00048kU\u0011CZɂZ~V\u0016\u0002b\u0004zFWt\u000e9\u0004\u0007\u000f\u001afA\u0004Ƞh\u0017[\u0019\u0014`YH\u000e^:q\u0011\u001c%\u0016ڌ\u0000\nЗ#JcD-WAlП1V9s\u0005tqR0E\u0003*xw3v\u001b;k\u0002\u000fF3i\u0007\u001d[mt1k\u001faΜ@d+H{Bp1Pڴqf\u0006:g{]\u001a0{#%M\rpRBy]\u0002)}\u000fQV<p.D4LIÚ\u000fj03S8.d\u0019d(Hz\u0014\u0019Bn@+\u00166\u000ep\u0000'\u0014ZK\u0017(\u0013ng=w\u001c8\u0014T\u001fkWI|e4x\u001cE;\u0001q\u0010-g(/\u001d)Sf?Vt\u001e<KQX\u0014Z\bqU}H>7IʎI1g\u0014_,(GQ70]nEe&7q=v\u0003\u001bb9\u001e`\u0014o`_\u001ff[XȚ\u00192\u0007\u0005]+`_h^UxSR;ST\u0011h\u00029wk\u001a.\u0015E/K\u0012\u00002\u0000VZt50H\u0007/6\u000bT)Q>~(ȯ`|B<G`\u0007!N\u001de&+\u000b2\ng\u0003pEJIK\u000eT\re=2B5\u00153G54\u001dp٠\u0007B\u00059{v\u0003\u001cb\u0005O̡c\u0013G/>\\o&\u0011\u001aZ\u001e)\r`\u0002Th\u00046F4ZtйE\u0005\u0011\u0004`\u001cV\u0014++Vt\u0019RZ(^rh\u0005S\f\u00040\u00007]K\u0013\u00076RL/alʪޘ:#\u0002ِ$=C S5je*T \u0001J+\u000f@YW>o7uU-bvMD!!S\u0002|0D\nhʝ,4\u0015*\u001a?'~\u0018|OM\u000eb<c4(\u001eJ\u001c]D >y:i\u0017(bx4\u0017\u0006\u0011c'*0j\tHDe\u0012Վ9\u0005\u0005SP\u0001MT_GŢWE\u000f\u0002x#.\u00041\u000fz\u0004Ě#\u0000t#>8\u001aj+S%-ߕ^P,{KT>\u0010\u0003\fOw\u0007\u0012u\u001enŧG\u001clI@;*PxwԄm\u000e_\u0002t'*J6\u001f;}\u00132=Vo\f!)xfקhY?IvS++>J\u0002g;!^G$8`JB]0ǌ\u0001\u0018u\u001f.\u0016\b[gZ#fKTX-\t\u001duC#1\u0018\t+HԘ6\u0015\u0004\u0012\\Ѯz\u0016\u0016\u0015D\u00184Hyd[\u0001S\u0004\u0017ŨJ\"Kafp$΢|\r>{d2%4S[\"\u0018\u001agl-#=\u0018~\u0006u-:s*ʥ\u0004%\nD謗b\f\n1skn?/\u0006D\u00127\u000e%]UCn5\u0006ȉHoY\u0013m \u001cs@$z[kv\u001b'ߪ֌ݮ8Uxia\u0001艋\u000e\u0005e\u0016\u0006%򨖼1S\u0019AI`I:\u0011\u0001OZ+\u0017V.K\u000bmQ߿L]Uӌ\u0000\u0000\u0005Bu\fuA\u0011}c%U{V橹0˨\u0011Socy\\T\u000b#^8\n^\u0018eo%\f\u000f=yzv!ˆ\u0014B0\u0005+51\u0005l\u0003-7B|\"\"\u0014ňoe\u0011|9ȭ\u0014\u0017\b`d\u001a!|Qg\u001cP\fdk\u0006\rJb7w{`ђ\"mbdĴD2YM\u0014ڎ9]\u000b$\"|Ha\u0012 \\QT*I{LW;t\"g~7=ǄA6J |K\n,v\u0002;:#DގOW\u001eY*U4FqFW:K\u000fXd`Y3K%Zf\u0012\u0011\u0012;EW6q\u0001pntA\u001b#̲rIk\u0013\u0013NDT\u0006&_!|4L\u00101c>|v?--8\u00136yלaLTL%ɿ\r͍T\u00053\"\u0006)B4\u00011\u0003 cBj)@wt uL^5CO?Wp\u0015\u000ePb.N\u0005\ne\u0002Ŀ%\"ά8=I7Nϊ$%#\u0014\u0002-Ӥ\u000fxrf\u0002l\u0017\u0016:\u0006M<p&+L\u0005Z޺s\u0002锁u\u0005\u0006s4[*pɌ\u0005\u001dBv\u0016h]Q\u0006\u0005EO\u0005\u0003\\yA[_MD'\u000e$G\u0013NJ'г\b\u0012\fH^)x\u0014\u00064n\u0001\t0@\u0013\u0016Idt_FX!@\u0019_\u00171/٥J}wz\r!YsƐIu\u000e3mPӾ\u001au\u0019C#5\\6bF =8g~%Ly\u001bj巐[z̾eh3[ڹ*Y^\u000e\u001f\t\u001f֘\u0016+ϔ\u00065O\u001e\u000f\u001e\"\u001b)\u0007#-7΀Wk\u0011Qݙ`\u001d3\u0003C\u001es\u001cU,\br\u0017j9n)!6,\u001bxu\u001b\\ú\u001dh0m:\u001e]\u0019f\u0017\u000e\u001fͽٟyxr;dZ\nWéP -BH|^\tDۚ3,\u0019R\u0007e\nT_\u0007F6\u0018w\u0017OZw*xw;w=\u0010jgKL-AЄ:_0O\b՚\\\u0002^'\u0016Io%\b͂\u0006s\u0011wn\u0007䤱}AP#rWH\u0014pq\u0012Kz\u001aA^-ƃV\u001e\u0017|$1\u0001\u0016\u001ajs\u001c21!_U8\u0001\rHT+6r\u0001X]\u0016B\nx\u0019\b\u000f7Nl\n\u0003=\u001a\u000e\u0004\u0005\u001e\tL1\\\u001d\u0011&]9*V\u000eRڱbgdu\u0015$#\u0014tԹ\u000f\u000b\u0001:\u000e\"NLv܊Rk\u0013i \u000f/ T~iR\\{et\n{L6r\u001ak!o\u001cYѰIN\u001aym{F\u001f\u0013|V˞\u0005!?\u0004O\\I\u0017\u001b\f\u0006\nzt_F\u0016#\u0004\u000f\u0002g!Ml\u001aNvoѩ\u000f,\u001d{4#\u0001_jr\u000b\u0013\u000e(lj\u000b^\u0000\u0000IǛY#R\u0004F\u0015nwQiE\u0015\u0011?qN*{e=lVd\u000eh8Q$\fߝbHAoQZ\bgFPM\u0017c\u0002lq\\\u00106j\u0018%?~b*$\u001e&\u0019u=*+\n\u0004R(\u0014e)<\u0014\u0003?0#\u0006OG(P\u0018\u0000\u0017\u0010\u0011's4E{P;[l˛\"h#~ӹ{%e\\\u0019}2%OƸⱀ\u0014&r\u000b0cW$a\u00006,з1=:}ܗ\u0013\u0019UG^w4&ƈ`xs5\u0011\u0003\u0014OB\u0001Z\\mȞ\u0011ЉQF֐f\u0017x/{\u0001,j=wm\fJ`=\nHObv\u001b\u001fU_-\u0015</\u001dΨݓRW\u0014I\u0013mC\u0015+7t=R8yA\u0004\u0010\u0006\"ցD\rcRf<>\u001ep\u001e(`{n?J_y!~J(4\u001b\tiԌ\u0011\u0010Oe#Z;\u0014YQAa1\u0002L<\f\u0001YYA\ny&\u0015EvFĺ\u001d\u001aZc\u0007AƼ\u0010u)ٴ\u001fq\n\u0015d$V0\u0006\u001f\u0006Y5f8hbTڭ=\b\b\u001a\u001dO޵9n\u0005\u000f\u0011>\u0013C\u001aD\u0002ӟeΌl11n)RCQn~Nԅ\u0017\u0011*6ΥBe\u0001H /Z\n<2i\u0011{ä\u0002Q)[`O\u001d^֪\u0011ά4>*b7\u0000\u0016g\u0001A{F>A\u0010(A{}!=\u0018&5\"ƕzSB ҸR/F\u0004|\u000eFQNb\u001bt-'pmȫ\"/Z*\u001fؽb\u000b\u0005\u000fK*tĽE\u0017\u0007v[WkHQʊV\"$z^mds!m!^ 1H%e*\u0016\u001b\u001f\f\tLUhsJPA\blDx*;/Z\u0004\u000e\u0018S}ڍ7\u001e$\u000ba\u0004#H\u0016\u0002Ǉ\u0018NR\blPbP(B+2A;'\u0011YB@TC1\u0007 n-hD5+Q\\1wruR\t\u0010a`ͮ\u0015[טET[\u0000E\u001a\u0006?\u001d\bs\u0015\u0005#¸U\u0005T\u0005w!\u0007\u000fAxxS)\tuH\t\f\u0001]<q8KGT0Q\u001f^\u00148\u0003\u001a\u0018\u0005U\u001fjQ\u001c\\`l!H+Q\"뾷у\nc9ʎ\\\u000f[D%1*\u0014VW@gCL\u0010A\u001d\u0012m{9#\u001a&=p\u001b-ڊE)ՊNҊ:nF\u0010\u001bsQXhɎZ=+N\u0010\u0019e\u001e\u0003\\gbI\u0006F\u0016}Q.ZǥNm&*\u0012 w\u0001\u0018U^A\u0011֤VZݝv\u0013K@&\u001d+B\u001f\u00050bV(3铄\t()TzVPu\bs\u001cr(pC(^RܙەJ\u001fsA*(DdۋG\"e֎zg\b4ԉ+eƩ|\u0006\u0010BJQ:ޝ:?T\u0011\u000fUp\u00036h+|\u0010\u0003Hf}XE\u001dHN\u0017\r\u00001\r\u0010nh\u001dVX\u001cw\u001a(f(JKZoi\u001cqοdc4H\u0000\b栝4}<<\u0002=C\u001by,w\nJy,D\u0005B-6d\\<^\u0013=|qj59*'\t%#u[B9;\u0001\"΄\u001cH޸\u0012(\u0018\u001f\u0002TuAR6q\u000f}f\u0011G`_N\u00067\u001aAZ~**?5\\jFe2qPWt\u0002\u000bDZ\"av\bo\u001f\tʖ?\u0000p=7\u000em\u000ecNDl܋\u001as\u000eذ(\u0003jz\u0015\u0000m\u0014E-8\u00173oqE),W;Y\u0004l\u0003&@*b\u000eJU\u000fu\u001e\u001bA\u00043{l\u001c\f\u0011.\u0006\\ߪc\b6\f\u0011s0\u0006_Jl\u001dp(5H`^\u0002\u0016T:c5\u00165f\"U'\u0018gs\u0006.\fqV\u0003\u001cȀin\u001eP2(UB\u000b\u0014Uυ\u0006ы\u0016\u0006q6`jC*,s0?\u0005\u0007@WC3C86\u0017[{FL\bgQ\u00122\u0018@^7Ur@\u0010RJ$7KNt\u0004x\u0011\u001bW\u0015\u00043\u001b|Tj,\tF(\u001f\u001eA<V+zQ\u00174E\u0014AbM^S%\u0000,G,`i!P,($Mx\u0005WM]P~b5%1\u0010^R\u0011\u001e{AN-DФ\u0015D\u000bL( 4&R\\(\u001e0wAZ W8^)k@|D\u001aA!Fк\\\u0018@y\u0004͔\u001dx\u0010!xF_:O\u0001\u001d9\u0012aefT/\u0004Rq\u001e?\t{h.#\u0000;E{NOt{-\u0012=Ϸz0O\"yq\u0013\u0005&l\u001b \u0012 vC\n^\u0016myV--)1-DDc\u0012NG)\bioBIۚ1u\u00160<\u000f\u001ait\u001ev`\u001c\u001ax-;\u0014\u0003BWW\u0015c+-\u00147DŮعTРtH\u000bu@%B+kI\u0014\u001bf%}n\u001fB\\\u001a([{\u000eHj/\u0001'QRKD :RjB\u001apcb7*\u000e,n\u0004K\u0001+F\u000f1\u001a\u0001o4)\"RIsz,ߍ(2<1\u0010\u001bFVhf\fm!)F;?*eh`I\u0014чzDTƼm񞲞h\u0007\u0005d\u001b#u%Fb\"\u000ft\t4\u001b\u0001\u0000j\u0002xw|ϋ]\u0015\u0006\u0015^/$dT\f%{lЛ C\u00118>s5`\rJ\u001dğUEjԜ$+@\u000f`2*\u001c/\u000fcOr]VUYvz6Е:\u0017${B4>5Bv\u00070\u0017gHp\u0011s\u001cX\"CĸmEϗHX9?\u0000G6@-\u001d Մ\u0000M8\u001dxFThZ(\u00002jJx#\ta4&^lԸb\u0002&PT7*HڒdqD1[\u0002BQ\u0010nT\u001brY\u0019}\u0014\u0012=tͭ/YGᣦT5%@X}Z\u0015\u0010C\"\u001e\\k&g'Ó\u0010P\u001e\u001f\u0013宾@eX\u001d׃Z\u0011Dՠ\u0010(\u0012\u0001\u001a\ffS\u0012$ܦP@\u0000`9\f\u001bk&Z\u000bRd=nfh\u0001*\u0006\u0011Q\u0013\u00077\u001aO\u0002V\u0017\u001bt\u0007\u000b\u0002DU\u0004h۱'\nFBh8{,HJ\fXPܐ1\u001d\u001dwJRv7N\u00016\u0006abF2(\u0001\u0011\br$@\u0017\u000f\u0015:D[U81\u001bQq\u0019rP\u001f8G\u0013)T\u0006.\\\u001e7h\u0007|P\\,\u000bY\u0012$\u000eШWb\u001apHv\u0000\r+hGXj\u0017\nƴLqJӊOh\u0018s\u001fO#\u0018s\u00066Xb\u0015A\u001bt\u001e@\u0011\u0007I,\u000f\u001a\u0014HFU7#Gu۝*=BJHAL\u0003#\u0001x^!\u0019*\"\u00019}@rt*9\u0013\u0011#DǦT\u0007*\u0002.h׿\b|O|˜^\"\u001a-{\u0014L K^u%\u000b\u001eH\u001c>\n.Խ\u001bC(\u0017\u001aP\tF{\u001f\tVR=-y/Fj\u0013@!\u0000\u001b\"P<Y0zAp\u000b{1B3\u0007GIQMLa)GJ\u0005$\u000b\u000bp^;\u001f={:<\tdyV0\u0002/{B#jir{\\bTX/yYWlƳ\u000f@L^y?4hQ)\u0012ޏ\"\u0002U\u0010\u000en*.}yUuέ\rI\ng\u0016Ѽ\u0002[T\n&ԧ\u0005%O}^Ew\u0003\u0000\u0013\u001e\u000bU+\u0010\u0010t\u0000mopcZe)(K\"8*V0sicIa\f\b>q\u0005<^%\u0000<\u0003<Z\u0014' \u0002\u0013KlTOxu'<ϲ6\u0011\u0017\u0004VbF#\u00064)\u0014*\u0012:#+IB5;\u0003JɼAȶQ\u001dd\"!P\bV/OX\bع\u0007:G*(\u001e_@\n\r+I\u0001#P\tH*x-N rRz$$Ձh\u0016aGe+/A\r\u0000jM<\u0017w\u0015\u0019=##\t$+\u0011W\u0001|\r\u0003!ND؊0ҳjQq%HEM\u0001H\f.Щ\u0005=C\u0018yLQi*\t\r\u000f\nʣ\u0005\u000f\u0013%XaЕH[.8\u0016\nۡ\u0012Kl6\n~40fj1ȀN.JeZ0z[vIU\u0001b`.0\u0014\u0014B\u0006G\b+%޲0`P)$=J']Sӽ p4(\u0005g<\u0018݉\rt\u0014\u0005/E\u0006O}/١Z.\u0014xUckوj!c)9L86T(Q(,K\u0015;#GD2*@\bꉵ<\nsgsT~b6EX<$܄\t\u001dHEA:\u0012\u0017\u000fy*5\u0002\b{B\u0017\u0005\n$x\"aj\u0005\u00197j\rǦ\u0013wQ\u0007ʪo10P\u0018:i-\u0007}^lu~\u0011b\u0005`\u0004\b~\u00005D0\u0001l#ksf6<VP\u0010Q \u001d\u00125\u001dIa\u001aI|\u0018ZI\u0005\u0019Q4\u000fa\u0003\\Kye)jK\u0001\"Q{ڍ\bE\u00163?rmB,r@7E=b#z\u0012Z C&<n#8T^4TXb&|Jt,-\u001b\u0000 5uԦ`;Z`Ʌ\u0014In N?ktz\u00146\u0001\u0013(;#U*\nl\u001d*K\u0018:'ԉpHq73\f6j\u0019deۅ\u001bҚ\u0017;\u0010Yg5F>V\b\u0000T\u001fsR\r\u0010Ғb\u0000]\u0012\u001azLB>Ҍ\u0016T'G)\u0000w$*HF\u00044M\u0003\u0010VvC/lv\\\u001f@y3\u0016VrT͢t\u0003<):3\u0011*:8^<Q$\\\u0002\"\u0001\u0017ӧ\u001fK;A\u0019 \u0006?h\u0013!n\fX&\u001e\u0004\u0011\u0000q'L0\u0000\u0015\u0003U\u001b\u00029<5aH˳U\u000eҔ\u001cm\u0016ǿYUe\na\\;&q[Qe\u0001vBjU\u0015d\u0000c\u0001\u0010o2nģA<sq-]Qegk$G\u0012t\u00047V\u0015d!g,\fȽyIzH\u0018!w]\u001e\u0014t\u0006\n)]\u0015!\u001e\u0013tF\bF;B\u00056M\u001c6:Nێ\f\u001fi\u0004l#I%fD\rB\u0016o}P\u0007\u0015i\u001cYv\u0003\u0011]\u0017A\nn?y1\"\u0011!i_+K\u000eȋ\u001ax@\u0017J;\bq\u0011$PHHZ\rߺ\u0010%Myx+\u0004Kq\u0000XVZ\u0018!<^Nj5\u0014\r{!^;`p!:m4\u001d\u0005*%O\u0002\u0014\u0005\u0017\u0013ʪI\u000bxȰB*mdNu\u001ex\b\u000e\u0014\u0001͝D)uk\u001fd\u0013~#\"V\u0012\u0015\u0018I\"9C2\u001b\u000e2VÃ\u0002/YDZ.R(\nDQr_;S|g̒\u0004%v35I\u0010\b\t-b\u0000}8:\n^C[\"J$|AUq\u0002f\u0006A4Btf[Ht\u0012װVeAbb\u0011\u000e3\u0005De\tMXqh\u0012N0H\\qf->V9u\u0018wt?\u0013RU\u000bW^W({33$)3\tQ\u0014\u0004dT\u0012;\\\u001c{7%ɿl!%\u001f%\u0013\f_\u000b#^\u000f}w\u00149gEBj\u0017e8\f-\u0011VldG\u0004-\u0017\u0011S\u00160#X\u0016Z!VnL^\u001f\u0012PB(\u0007?\u0004-\u0018\u001c  \ti\u0001{I(\u0016\u0004\\U<>,H9t\"&cGM\u0012ARκItT~yx30\u0018St@p4xp\u0014k\u000b8$\u001cpZ6PP\u001bH\"\u0004!갵^\\\u001a2St<\\#\n\n\u0010\u001a4\u0001YD\u001b\u0007ycsM\u0019\u000bbrHu\"\u0006\u000e֥NhQ\u001a Q\fV[%-E,P-PSpg3\u0012H=\b9=QY'\u0011\u0001GH K\u0015Y\u001bO٠\r\u0005ĵ8x,88 QKR\u0017>?([ 3#\u0016\u000f0g\u0010\u00158T>\"WБ`N9J=FzS!\u0005\u001c8iI\u00153VAR/:HuA\u0014~Zj2E\nW\u0014Jh\u0012Q\bMWV+NWزC$\u0011U}\nv$(m)UH{|\u0018Y㠖@;:\\Ň\"ѢV\u0017\u0012M4ư4J&\u0018PkUjCfpe\u0007U<\t\u0001\u001a)\u0011ݐ&\u001f\u0015X\u001f,3vrj2\u0018\u001b2f}O0s\u001c\u0007q3^\u0013ȵ\u0011\u001c\fF_3\u0018\u0004\r\bteA/d'\f|\u0018%\ruۼ^\u001daYU\u00109Fٌ\u0001L\u001fGB0`\u001e\u0019:<2xiDA\u000b\u0010[Z\u0000f\u0018H*HH0<jeu9Z\u0013\u001b8JY[\u001en'oT|hb.O}4IlBX7\"ҫk\u0002\t\"gBf,&3_AB&-\u0014JΒ&\u0002>nB\u000f\\\f%\u0018Ke_!\u0017(\fV*\u00125\u0005\u0011\u00044d_fS&W@@h\u001e\u001cף\u0013,\u001f%9Q%VG\u001bZ{16(⤣\":)x\u0016A\\\u0002\u001b\tȝCJ\u0000MV|k\t#t2%{\u000b\u0011O68\u001aqJ`x`o<x0~[ˮͬu'!R0F4mߒl-x\u0002ADp;gs֓ݐs\u0015m&\t\u0001P>\b\u0000yӏBm\u0007\n=\u001dEr\"\u0019N?\u00179t\u0018\u001b#\u001580k=!}1h^ \u0006<PٝN(Y\u0014`e\u0014j5\u0017bbQaD\u0019lnR=\\\n%\u0014\n\u001a4cA$K% d#\u0013=\u0019R04RRh\u001a\u001dAn:s\u0002U\"^W\u0012QDwE\t<^y\u001bM\u000b\u001aH)\u0001Eb\u0018`HyB\u001c\u0017<T$\u0014:>Nq\u00122t0h{ҫ/Ē\u0014+\u0011E\u0007ukQ\u000b\fc#:vD7p)geAR{\u0011MWEJ0\u0002\n(0zh;ɨ\u0004\u000f*`\u001cT\b\u0001\u0011\fg*\u00170Ə:PP\fqӍGE\tz\u001d\u001bR\u0012\\\u0001C\b(^\u0004\u0004JpT:`:Uږ-\u0010}\tEh\u0018y@^~\u0000+M 'd[J\u0012]JC\u001eh!c- 5L\u0010lȐV%%D-[ZdW\u0014\u0004ޥ\u0002E5T]u!x\u0003&u+H51R6XtuײFٴ\u0000c/Hbo+\u0006szoPe&ۑ*ŏO\u0001Dy \u001bcr\"Tk%,\u0016+\u0005gR\u0001\u000b2L\u0011Fy=V4[\u001eۨB\u0018,h{oefU\u0018\u001c\"a\u0017\u001c.d&Z\"]\u0011RiE\u00125wשNH\r~+}YH\\q%쑊#b\u0012&\u000fZĸP!\u000f7\u001eS9b\rw^\u000e!i@}W\u0017\u0011\r(\u00027-\u0019=H߃R!;G&Q_\n\u000e%NB$\u0005\u0016f\"/$\\\u001c\u0011\u0019 54\r`\u0017\tp\u0007\u0005|\f\blĝ5\u0014[V$XH5u.B \"U\u0002m[U\u00150fG&\n=dz\u0015\n\u000e\u0015bb\b\n\u0012h4`!\u000eQ$[\u001d=2$hQp\u00067\u0015f# ݍU\u0018E7;/Ax,\\\u00055(mQ3p\u0012v hl'il>\u0012nr'6xZudS̕X;J\u0003,;E6JQ\u0004MX*\u0012A9xS4\nD[G\u0005>\u0001k(3&M.\u00110\"x cM$!T\u001aQ#\u000f4_R#Hsb6HBH|\"HҪ\u000bΑiqPȟ\u0016¯\u000fv#bpW~$\u0012(efbQ&@➎g\u0005\u0001b\u0010#\u0004mD\u001eCh[\u000fa*ڟL6'Yߠ7Vj\u0001,\u0005#\u0013Qt\u0001\u0017Gf-\u00111\\ݭ\u00127*0\u0004lq5G5HLNCITj\b\u0016(ET\nP\u0018E3ΆH\tjÝW3%|\u001f9٣-B\u001e\fY/\u000bK4\u0012#M\u0007EZ`4R\u0015ǀΞF\u0019#V\u0013(=྅\u0015, p\u001aE\\4,]%1$aGg6k\u001d\u0000:T鼍6f\ryQj\u0011W2\u001d\u001aפFz}}ty\u000fLVrQ7ת*F*XJ\\qor\u0006\u0012\u0014l`8:ǖ0-SLREI҇#d^p \u0012\u001f\u0003Ut1`>k\u001b)\tӈ+/U6جTm\b+~P\u0007$?]{\u0016R5\u0001\u0003e\u001e\u001c-@8:xּ+!W\f/:BG\u0001񋊧\u000f2\u0010w\u0015$|օ,6a`n)|\u0010 \u0019Z*J\u0018CoA>fC*\u0019*)*.w\u001dJ\u001e\u001b\u0006G\u0000J\u001b\u001d2'\u0011jGzmW5;U\u000fb\u001d\u001e\u0013u'^\n\u001cҺAu|WTS<\u0012Y\u0007^\u0016E:V1W\u001b\u0004\f靅d\u0003k\u0019)/Te|IZ~|kk4K@\u0006Ȗ -u/\u0010\u0018%X`D#\r\u0018$j\u001f=TcRbV\u0003p_b\f\"A9,kQj,cxOZB\u0016\\ItCC\u0011E\"\u00022zEQ.\rRGP]\u001bJZ};(j4MA)Ί \u0010\u0013Cs\u0000\u0005j}PV}-;I9\u001e/mƥb0U=\u0000\u001b^tRTpnŉ\u0019\u0014 ՠ\u00190\nƱrFf \u001eo\u0016տ\u0014SD`+\u0018&E'3\u0005gQh5jbR2c\u001d\u0019UdXODbҷ\u000b\nY\"vr~ݡ˯B+\u0013tRΐُ\u0014iTEE\u0002\u0006^Bx\u0015&\"z\u001fzJh[v7\u0003s]r\u0017GT8\u0007)\u000fa\"*0\u0017<¤WZ̠YbBP\u0016\u00132c\u0012\u001d#uJ\rT`RBÛ!\r\rlx\u001fd*\u0019(+3V(#Hbѵ\u000fsSA cP-:hP\t\u0019v\u0018GR-k)H%r\u000fB\u0002$,=8K< A-<\u0002\u0002\rѠ\f*AE1NǇח\u001cpA\fTK(\\p|D{\u0000Ss8t\u0013WD\t)3\"QH\"]4䇘\u00109\u000e5\u0012]?j\u0017b!7j,JJs\u00004]OAo)\u001e\u0002,V+/\u0002w\u0016,:o\u001b-2ZPa\n#\u0012h\f\r#\rgͨk*(\u0002OLk\u0019\fZ,F=\bu\\%qk&rU6r\u0013!\u0000\u001b,/E\fQOJNSV.0\u0003MQbԓdakٍ򨐈P\u0011\u0001cP\u0011.l<\n.\u0018ڒ{O\u0007T\u0010͢=>87C4N\u0011*\u000e!;JHR㕂\u0013S~<\u0018p\u0001\u001e]\u001a/F\u0005ΫBSɅу@V\u0006a\u00079P\u0016)V$\u001cns=0:G`o\u0010\u0006K\u0015\u000fU\n\r\u001cel8-$kd\u0001׼؁\u0011jq_TS\u001b)ɩ\u0004d`z\u0015S\u0004(\u00103mZ^\u0007X¢Gu[O\u0010uJjt\u0002<\u001c$hAIFv+R\u0001_p\u0015~\u000f\u000b޷ِ3\u0014z\rP\u0014\u0001\u0007I\u0014V}+Ojh3\u0014\u0002p,.\u0006\u0000\"MK\\Wk\u0010Nt\\\u0011ԏm/<7Ic$[ǅH\u000f<9\u001dD7\u0007\u0010CwtB\bM=o$\u001c\u0015\u001a\u0014Q\f8\u0012`R\u0011]ݱQ-\r;q\u0000\u0004n0wn#ڵaqCSB\u0010c5={\u0016䋃\u0010x\u0007~\u0018]V\u0014EZ\u0011G\u0014JO\u0005\n&܊\u0010T\u0007∙|aCtSҦ\t*^x\u0017 D*\b\fx\u0018\u0018nب\u000e`{0 )_j:Q(+H\u001eS+`Q\u0016T\u0019ybA<1<EnI(\rendstream\rendobj\r22 0 obj\r<</Length 54694>>stream\r\n\u000e&k\"\"d\t\u0010)w6!S\u001e\u0005W6q< ȺǇ\u0013Aű}Q\u00128\"4M-\u000fuq\u001c8Z\f|@E\u000bި\u0000E\u001a\u0012(ndRv%R&T\u0017<s\u0010G΅Q9ϒDp!;i#l@t\u001a`mDp\rF'\f\u0015u&\u0016\u000e\u0017\u0007?,BE\u0014AzP9\u0007ghųHS3m#әJ*]\u0003ǿ@Ϳ}4Ih\u001fvUCF<$\u00055\u0010/\u001e\u001c!h Y%K\u001c\u000f,@\u0014\u00064\b\u0015\u000fR\r\u0007_\u0003( !\u0014W\b%09\n\b\u000bQr-m$izp,\u001e\u0010\u0014\u001f׀@V2(#PG\u0013>\"WX+v+v\u0012\u000b$;+<.]\u001bX\"k\u001a|G^\u0006\u0015\u000eT\u0001>C\u001cC\"D$\b\r9c-93C[h+\u0011\u0014~p\u0002s@*\u0000=\u0000d49T\u001ah&\n`\u0004@\u0004\u0007\u0017\bC\u001d)\u0011\n4dp\u0014|\u0011\u0007(KX^Q\u0015 R\u000bxVJ!B)\u0015X\nv5Z븡9Py\rTKP\u000bAՂT\u0002SL\u000fvQ-ocwA<Dp~ú\u0005Oe\u001aAÃɪަʥ\u0007P\u001cڛ_`\u001b`܈SI2\u000e\u0012Ck\u000eف\u0002(\u001a\"\u00004a_ą\u0019^kX\u0003#!()\u001bM\u001a\u0011\u000eh\u001d,\u0011ꉇ7/\u0015N\\73\u001b\u0005>z\ro\u0015r\\޾ԩWB]Țn\"+Gi]жWj_(E[<\\e%ei1%^ING\n\u0015۵8]^\u001e\u001c\u0017\u00041+\u001bA\u0014@2 \"\u001f\u0010\u0013\u0011'{D^Ig\fMm6\u001bdkݕ+N<9j=?XU\f[\u0010b`I\u0006if.\u0014e.\\H\u001b \u001fJ3>\u0015\u0006\nK\u001cFnL\\\u0018x21#K{#\u0004\u001eնh\u0000uc ;gN\u0012f\u00136}2\"P\u0000+\u0017\u0005]on\u0013vBM#\u000euTNyL\u0000RD%h\u0006ݼ*[$k_F9bZ\u001f$ցV\u0005o\u0004\b\u0011=\u0000^a9k>Q0\nED,\u0016\bmP\u0006EDQ}\u000bE@6\u0003JG[\nUs\u00176 \u001d$Dq^Ցv<OB&=\b\u001blxS͵8%<;}/7~Ud$ 4\u0015_\u0015gqQ \u0006ΚJ\u0001DJJL!kҊvBr T\u0017\u0011P!\u0015GE6nP\u0010R\u0010dJ\u0006\u0012?狔Ej\u001dC^]\u0017!\u001eDN\u0007Y4Ao8\u001alX\u000fPѐ\b%ʅx鶺Rɑ\u00123!AP\u001e5\u001c-\u0003\u0000\u0011\u0013\u0003\u001bL'$N\u0006}`;q\u0000z;`Fr)P\u00011\u0004AP68I\u00062=BQ`\u0001R._+=\u0005\u0010\t\u0012iRAރ!TƐ1\u001e%8\u0001\u001aZ*hjIc\t\u0018\u0016\u0002fn4\u0000 (f/\u000bL\u0003f;9s۰\u0016M3 qwi\u0000 \u000bO\u0014ց߉aP`'G5筢b\u000b'c/; \tI\u000e^^EU\u0002Hx\u0015L\u0002d\u0002p&wH1\u0018\u0018-xͪeB\u0003@azCZI\u000b[u\"TP\u0015aNHJzZG%s~$ZI{\u001b-\"kh\u0005H_eGQ\u0007:\u0004e\u00198Ȃ\"P\u001a,]%W@\u000fmK>E\b)1E\u001e\u0006\u0001I۹\\\u000f9a\t.s,\b\u00162\u000f\u0003%\u0003[w!s֢\u0016\u0003\ndg);y\u001b\u0000KI\u001ag -%\u001dԞpr\u0014 qŬ\u0002\u001f\u0018\u000es:ZoSX:\u0000\u001d\t)\u0011\u0006h\u0012ߒ\u0006E=1}\u0014SK#\u001e\u0011ӤHƙl\\\u0014\f\r\u001b9k34Hx@\u0005h\u0002w%\u0001;\u001bxӸO\u0016FQ`@\u0014V\u0015'Ep\n\u0000Aw$l\u0019@]u\f-oA_:C:U\u0010\u001d\u000b\u0007'\u001eSp6FPvbp\u0010pb\u0000@\u0005\u0000i}\f\b$\u001e4lB֭*U\u0002Wc-Q00\u0004MIaou\fKz\"\u001f{ѯKꛇ\u001a\u0002/O\u0006[\b\r,\u0014Z)had`W09G\u0004>=\u0017\nF\u0003RMM\f<\"jP\u00122vHPg:$\tŔp Ȩ\u0016\u0004\u001e\u0011i]=P\u0010f3jȵ@.D\u001d;}\u0000J:\u001e]azL+xH\u0010{\n\"\u001f\b\u0000\u001aVvu\fz\u0000(a,\bG\u0015n:\"y$\u001b+\f|2U\u0014T#'\u0001\u0018RA\u0001`JJI\u0013o\u0001\u001c\u001b\u0011E[FwX\u0005JhMm\u001ai3ʏ\u00123TW\t}tTC\u0013s蝽\u001fP}Nɠ\u0016[ |\r\u001aP#\fJ\u001aU\n\u001fVݸ\u0003<PO!]1k$4@ڊ\u0005BK|٩s7)\u001e\"t\u0010%o//6F*\f\u0007\u0014u<\n\u000e\u0000\u0002Z\u0015aedGu*\u000f\t\";Ȯ\u0014u%0t\u0002+1Ce%`\u00157KV\u0019,m\u000bΞ+)b䔜78\b\u000ef\u0007y\u0005jo|M\u001cA>\n\r\u0000$,)=O\u0013QOQ`\u0017XYNRmv9\\*9Bl[U i\f0y87zAO`\u0012ֈP\b?\u0014\u0011;m\u0014\u0007Ú\u0016A\u001b9Md?<\u0011ٯ\u0002\u001fd0DI\u00155Qb\u001dDրp\u001e~G\u0002K\u001a\u001dHU`9dy5m#jctp^3E~Z\u0015\u0010].\u001d\u000b\\b-B\u001cԾ\u0019\u0003QHM._\f>w2\u0000 \u0000V\r\f F,\u0010`\u001bjG'\u0005ʰ\u0016:O\u001b1zz`c޸RA5/\u001fM4W+E\u0006+\u0005\u0007lڃǬ\r]\u0005)\u0016Q-0\u0016I$x\u0007p.H\u000ez%Cr՟\u0002 \u0014C!ƷMats\u0005зq\u0019$N\tqF(^-l`Œf\bTl)I\u0005ik\u000e\fD\n)n/\u0013\u0006\u00171ԍ9\n\u0000\u0018n\fp4FA\u000688 b[\n,\u0012(r(k\u0004Y\u0017q\u0004\n\u000fT;Q\u0004c^V\u0003\"eD% >\u00011/ʦXZ\f\u0006Z%\u0014.P,hR\u0002L13\b\u0017lQ\u0012ccp\nmcٺ\u0007_\u000b3b6+!SɎ̯C\"4\u0000pU\u0015#.r|jUJE!\u0007\u0002$j:`/\b{\u001d\b2w+).\u001e\r\b\u0003q\tcf1\u0014ْ)J*0P\u000e'5-\u0014\u00008T\u000f$b/a\"\u0005I*\u000b\u000fe\u0018\u001aYآ\u001dM,Mt\r\u0018\fe\u000799-\rdY\u0015\u0014:\u0019\flo5Z,G\u0004ˢd_TX\u0003H6/\n_:\u001d\u0007\u0017.aop\u0016\u0001qJᦈoϕ\u001co%%\nIa@{*\u0007k\u0002\\߈H#^ JeO\u0004쇠\u001dHM\u001elVNb>\u0000\u001cf\u0016&9\u000f)\u0013jgHd\u0004\u001e*KNV\u0019-J*N\u00132̀3[\u0010`ThZ[(NN+\u0013\u0010\u00110SqBU\u0000F\u00102][m\u0000VXPr^\u0005!Y$\u001103zǨfG\tqsI&#ӵc\\'\\\\\u0004-@m&3a4i+t\u0001aU\riA=ܕ\u0000hxn\u001aC\u001eT[7\u0002mz)1\u001d!YjMT57b\u001e=ņ@ɚ֢O\u0005|=\b6Ie<0¿\u0012!hR'9\u0004\u001aox`s[\u0005`'f1\u0006V%҄յ]\u0013\bF\u000b\u0015J\u0012OܟhW=?[~^\u0004\u001cas忡T7B*j/ZD\u001f\u0001]}\bFh~~#@_Ѓ*\u0007ED\u0012GJbkKǞ^+A\u001dwQi\u0018VLuHːO\u001d_b\t7[%aZe\u0010\u0018+l\u0004\tD8Y!\u0016 ^1c'/PIz:A^\u001ax$P)򑭿D>j-%Pl{.:~J!\u001dE!\u0002aʔf\u001fwG鄪%\u0007g&8q;\u001c\b-j\b\"V5\fR\u000bRE!B\tH\u001a\u0006~\u0018\u0004vGRw@=5 <Cġ׷c7\u000fb\u001a>4h\u0005+ŮP\"Q슨\u0003\u001aݐsR\u0015f:x#h \"%\u0004\n\u001a\u001f\u0013l}\fP\rc\u001a^x6q\u0013\u0003VW\u0019A-\u0019$%ۃ\u001a#E[X\u0006j00T\u000fUx-ʬX4\"M/t\tz\u0006[\b\u0007\u0015Bd\u000fH<ëoW}2\u0015ϯx\nsg1ƑƴK\fP.\r')\u0016E\u0007*~\u001c\u0014\n<.|\u001dr|ޑQ\u001cv\u0016g;p=]\"N\u0013\u0013\u001aJ^2Ɂ9\u0010oXZ{\u0019I*X\\4\u0000C\u001f9P\b\u0019wOqB\roPc\u0014\u001d!\"\u0019<%C$\u000bh\u0001{\u0014-Yr۶A\rT.!\u0014\u000e3V{\fc8\u0003ߔj\t\n,d|\"VY|\"sY}\nDљЂSw\u0006w:bP\u000e\u0016:a\u0014\u000fA\u0002\u0017ʽY\u0014|*fG\u001d~8\u0010IrTmb\u0017\u0016cċ\u0004\u00016AҮ6n\u0004\u001c\u001b\u0011z',r\u0012+\u0019\u0002u؋\u001c(\u001d\u0007X\u0011P[S)xI\u0016\u0004|\u0010Vv\"NRx<\u001cQ|l\u0006J\u001eZ.aR\u0017\u001d_Q$\u0007++e:hFKbUT\"\u0001ԝ\bx\b\t$.2j.x\u0006QR\"H`k\u0007W.\u0002p!\u0006T\u0013aDr:Q(*g5\u001a{wI\u0007\u0013/\bl\u0010\u0010\u001axE\u000fUIޙ\u0007\u0011W-\u0002<\n/6\u001ehp;X׼(]\fV\\3Hq&0Q2W\u0001?\u0004\u0012d\tPҁĢD%tɯ#\u0004,?\u0002z~\u0010cP\f\u0019e>Y)y1TZ)f7?\u000e\u001buvT\u0002B@Bl_Mv\u0004\u0001hZSJ<\u0006@`\u0016^AJZKDB8^\u0006<!\u001a_BX\u001f*\u0005OP\n$j\u0016\"D\\j9W\u0011D6y%\n>{=@\u0002pLm%Z45׺\f\n\u0005)؇9LQ3Pb\u0011΋}Pm0\u000f#<LZ\bnL-ZS\u0019[\u001c\u0004mn[o@'ZF:[_͜\u0017\u0002\u0004M\nw{!\r\u0015\u0002G\tX\u0007\tGWk*\u0000]T++lgĦN.6o^X+\u0018\u001bj(\\\fj墥ȴT,RW\feɖ\u000eŚ0TH/n\u0000X\\%hm\u0010ϪՅ@\u0003\u000e*@\u0005wu4TWhn\u001b-\u0002\beg'x(f\u00064\u0000\\&F&5\u000eq\u0004g\u0007|LRm\"jE̮=)\t\b^\u0015(7>Pz\u00113Vydvo\u0004ש.5A\u0014\u0019\u000bįZRDG\u0010\u001cЗ\u001d\\b\u0006~|հ\u0013\u0015\u0001\u0012~A.\u001f\u001aB\u0016$Yo.hEPҖ\n\r\u0007E\u0006g \u000bOZ\u001b{a\",zip?߬x2\fSWdR!\n\u0002aER^Aqў%Al\u001dG9:Jx0P\tHb\u0012A^WFD\u0013!FPRAsQYd\u001b4Dk\u001c)F\u001bLe\t\u001b^\u001aVi:\\CHp\u0002AN\u0002P\bx[\u0015J\u001cFۭդơx\u000bO5n\b E\tw\n8cD0f+r\u001cC\u0012NS\fc2wO\u00032hY\u0011\u0012\\\foZelo,2\u0003\"$,b'1míVv $\u0010N47Er9Hd\u0004uE,/e\f/(ܱK)t\\\u0001>XȗR]\u0011\u0014TkP-PAI\u001aL)=\u0006Ҳ:y\u0018ЖR\u0017b3,r\u001d+\u0017H \u0006<)\u0015$iP\u0013,^\tD\r\u001fAj<=a\u0018!+ˡ\u0003\u0004\\M\u0005\u0000[\u000f^\u0006\u0004*\u0011<9E\u0011}T\ra#\u0006\u001c]5\u0013\u000f\u000fZbR6`۳1=\u0001\u001cf\n\u001c$\tknt8#ΠqB!J\u00151e\u0001\u0017L!$\u0003my\u0015N(%CZt\u0005UF\u0015+}cvkU\u001f\u0006R4Q\u000e\u000ep*:^\\Ȏ^a\u001e\u0017筍\u0014t\t\u0007\u0015s%גGjyh\u0011k\u001dqIN'K\u0002\u001e1\u0015M@.ͩ(l\\\b\u0016R\bh\u000f\u001copc\u0001<]\u000f5-ƪ\u0000*\u0005 0nT\u001bzD;\u001e`\r\u0002uP.Ii\u0010v\u0003mLK\u0019-\u00000x\t\u0010\u0002\u0002\u0014C\u001a\u0006u)\"\u0003%яS\u000bMi?5\nM^\u0006\u0016\u001fJ$\u0010Hm:\u0007aG?\na\u000e{p\"O\u0014\u000fkVeP\u0001mРHCk\u0019lI\u0014\u0015Nf\u0017\u001c\n6si g\u0002\"\\HD\u0012jJeq\u0011Z<Ѡ\u000bn࣯lDle\u0003\"XZ\u0011'4Qb\u0011\u0013>c:S騰.\u000b!E\nU%1+\u0013ODl~'4Ub\u000bT\u001b5S\u0007H'B\f\u0006\u001e\u00186ɒ\u0004wMr{\u001aو\tTl\u0012aQż\u0005푇\u001195(\u000fQn\u0005(9DN[*\u0000c\u0011ĒdE#\u0014GEpv!?eA/!$J`AI\u001aD\u0017\bWP]`lsAΕ=R(\u0004\n\u0011W!:B\u0001\"v9{ŶE筄@h\u0010\u0004F%8\u00160\u0003aHDa߹2\u000e='+EF2jS\t\u00139oB\u001ah[\r\u0011GN5 0U%i'5F\u0014o&-\u000fr?\u001b3$Fȇ@2\\Vd͔\u001cLH_CV(Jc.\u000b\u0005u_CQ\u0013\u0019[$dT\b\u0019V\u00165Σ\u0007)\u001b\u00015\\z9p]kb \u0017E$9v˕\u0019\u000752\u001c2B8dRLzUd&rU\ru\u0014Vs\u001eR\u001cs>Pҡd\u001a+a=WAj\u0004\u0001\u0004L\u0011Mw6\nt\u0001][\u001f+\u0019\"yP\u001d3ܻ$z\u001b)\u0016e\u0004ԧlV+^\u0003s'!#\u0015\u000f\u001c[A\u0006\u00172Æ̘sj!@\u0005P:O\\2݅JG12,\u0005d:{f{\u001d(r\u001f\u0019\\KnLM)Y^*FLfJ\tM\u000bT\u0017\u001cl7N\u001da{!\u000b\n\u000b \u0015kC\u0011l#3\u0005\n:r5\u001c\u001c`I|ܱxrP.\u000e\u0014lVrN+ſ\u0016lf(\u001cpgW?QK\u0010\u0011t^\u0007\u0019:,e@\u0014j5h!:*k\u0004\u0007X\u001a{n}E\u0015UoR\u001d\b`\u001epd+|\u0016W׌:e\u0012\u0004Rs>X\u0007q#\u0014\u0015k[E1-Iqc\u000e/\u001b4\u001b\u0015!\u001cU\u0019LR\"\u000b&#@<]\u0012+7l'1DKZ\\ɋxM@.\u0019%\u000f\u0018\u0002^9$\u0017\u0016U\u0015\"+ц꿵!&b.\u0001Q\u001av7YlԠbX\t]\t;\u0015Q%v.;\u0012\u0005eS4\u000e%\u00143d\u0010\u0019q\u001decj\u0012\u0003N\b\u0002~|I:iFQ'\u0011ΎH\u00155\u001e:\u0017#t،J\u0003oR\u000b1N6(IάM\u0005'C\t\u000e{C\u0007#ުf'NN^c?<@m\u001dw\u0017\u0013so<\u000f&\u0000\f%\u0000ů|rtvOrzv?9olz\u001b./mƿ9}ˣ9=y<[//j_8,ߏ?N__}?Lw]zuʣ/?;5\u001c}k}uq֋Λ_\\\u001e__\u001b\t}_{o_\u001f9?^eCF\u001f~y=/^\u001d\u000f\u001f?\u001f\u0016Co/ů\u000ba:>\b_{l~\u000fvEZaOxo\u0000\u0013{]~\u0019\u0015ڷW\u001cɒ&w\u001fZ?ϫ\u0017\n\u0017\u0010Fsl&G0x I\\BEH>H\u0012]Ri\\MnΪEsX++]׷Sƞ7:\u0015@w}=\\ۯg\u0013i7\u000f}1\u0000k\u001f\u000f<\u000faǍ\rQ3i0))|t0)(ٔ\u001a\u0014\u0007~U{86gݽAѯ;\u000e8V\u00122a9z>\u00005ǁ\tRo<6l䄰e5~yX>Sv2J3y 9$2\u0017r>DQnx#Cޚsӻ_kD6\u000fn`N7\u001e \u0017\u000fC,_Hl\u001eܸÛѭvNb\u001a\u0016\u0004\u000f0>Z?ؗ:G?aAۓ\u000b\u001deiX7W;w||{!1UTqlZ<n|1\u001e\t_`:x\u0006\u001b-KlY*z\u0000dL\u0012\u001b\t\u0010:tZKwѸ#8W+b2EMwk8S7cQoofJ<xO㮮5\u0015a\r6\u001bq.F\u0006\u0018(b#lqo\u001b8/b\u0012wpgCaѨ.\u00013/1*\u0016kFs]ot:Nu\\kFO\u001fVO\u001aq]u\u001d%b`ɋ\u0010`㾮7ƁZG\u001e/6!\u0005gwx_w\u001a[;1_陝ůs\u001f/^|\u0017_,~gՁ\u001fNP}ytg/O\u0014'\u000f\u001c?WK͟_W=?=ca?>x\u001f\u0013XcvQڭ0;ܣk\u001cab_\u001d\u001eO{~\tq=9zyˋ{vխ7\u000enѻg?&L뵸\u001d}pǻL^}ԧ?<t<l|{w'=̵_=z\u000fx㫣L?y_|}uzu|v{&<\u001by\u001e2|\ntǭ&p?w3\u0001׷\u0004>(;=ڗw'GW\u0017;\u000f'<zŻzw\u0017O;>dM_\u0005ܽ\u001e.cv\u0001w\u0005L?g\u0017Yg8}̜ɞ~G\u0003>\u0003>\u0003>\u0007L\u0007ܢG\u0003\u001e\u0005nӓ\u00039zyϓ?z};K[|϶oNyZ3&[?z}{k\u001f}x}E\u0003{{=}X緙+]yOw'\u001fΎ.8ut>\u0013go\u0013z\f'\u0001{ucǳ{8\u0019;団㓯Ə'\u000f̞GYwe5i&/C9YSax\\ oѕ-\u0003\u0003Od|uqz~j\u0000U|]Wuc?\u000bs)\u000f[n9\u000e'SveM[\u001ej}q\u0018;rOLe#)ܻ\u001diwLc\u0014[֋GW߿=ާq2\u001e\u000e\u0010μN{\u0003n\u001fI\u0017\u001fN.;IIT{Ư\f<z\u0018\u001b+=\u0000\u001emѧ]\u000f0Nn~^'_^\\<9)爯\n/^~n_\u001dMϋ\u0017p;ۮvH73qQ</.\u000b2n{=5חj51\u001c\u0002ݢo'N`+|w7\u001dL62`2(wf;e;v/;\u001eδϬ\r\u001c󓳯ONqHoœ\u0014ɛ?|N\u0003Z[\u0004+xZC\tQ7\u001evΎOޞ_Ibō?ƟS_nwy0BN59\u000f^ⷓv{mݸ\u0007Kߗaeoױz>\u0012L:0Ga\u001dؕf+$ћӳmRgOZ{\f&Tӣ+V&/\u0016-/G\u001e^\u00135'#$?\u000f)XO\u001e?\u0016=yTNm\u001f/'r&ׯONŋZ`w7\u0017oj^\u0013t쇣\u001f'O 3(.2@\u0013\u0014\u001cM.\u0017:>:;\u001f<grt~v\u00153ը7A?fv;~v=ڗȾfx\u0013;>K/l+EN'%3\u00128s3{/{\f3O~~\u0000gX&v\u001e8|g\u0007ޣ}َ\u001fp&\\3[\f\u001d_(\u001fp\u0001gh_\u0006l:v|?k\u0003LѾ\u0003\u000f\"\u001f\u0016r5^\u001e\u0015n\u0001H_zϻ|l(#F:l\u0017xf A,yr*g*)<6i}~ۼ^o\u0003\u0013鼺ͫۼiuyuWyu{nzl\u0007UpD[LsD;?Oy\u0012y7<\u0019\u0016Ƶ_<Iv_'g_\u001dvl\u001d<=}^\u0001uԻl'x{q\u001f\u001d̹Í<\u0015Er&xp'L\u001f3\u00132<Wn`wگ3k\u0011\"do/\u0016IܖlvŔzʋ%?6\u0004x\u000b})\u0017ئO?ӂHtz}+~f>;v\u001f_}w\u001c?}gze/>ߺ09{Sk\u001fܑ{\u0012W\u001dIOakO= ;ݑ?b$zwΣӫߞ\\M\u0006i\u0007]gvOG\fI|ҫ\u001b\u0018\\8G:\u00138\u0017^\u000e9<O~Dm07@拭L9缻\u0011ݎ99<\u001b⇩c\u0018:'?4όVv7\u001fޟ|yqn\u001e߲|cvoG$~\\s۵3%Cps\bn!m,9\u000eqYyyq}\u0017f]|aw\u0017_˓_\\\\\u001eߗg\u0003t$CGy=z\u000bGc7O'ga\u0000/,Syů0K\u0018;\u001bwS^U\u000bi\u000f'ɱY.[\u00073n\t,m{3K\u0013z\u0013Dx 8ǥ$.5·(oٕv\u000e93\u0007s`εec\u000e\u001d\tЍ\u0007sjdG19\u001c\tC\u001b.i\"S_WkCSϲy\u0012s|?/UM\"fzȎsLȎsl\u000bySs<ʣ[W_\u001dޗF'Bg]Bg]B?ɯѧFqe\u0007\u0015֯ufx{x6V?/ꧯ?z}[w\u0019\u0012\u0017L\u000bv@br'Ѫ\u000f\u001dg{Xȿv|v+f뭖}[\u0005|OYؕ\u0015g'9q!5:N8}\u00058~0s;GߟlZ6>\u001d<O\rƧ\u0017t)\fƟegM{\f\u001f\u001cOg\u001fs\tL\u001c\u0003\u000fyV91?vi]\u001fsc\u001f?3'h\u000b|st?\u001f\u0015p.xq:\u001d?ثJ=L]\u000f'kzddw-=;\u0010zL9=ۢ\u001by\u001e\u001eO\u000b\u001ed3ҭ6S/mtE\u001fS\u0015lE[c+&{syvOНrUW\u0017'#%#H=I4ik6\u0012Iˇo?\u0016ƙ\u0007f\u000f1$\u0014\tis\u00181gBۢGBޣƠMǌ@۝X\u001e¸h[ؿyqP9O\u001bg=W\b\u0003>M\u000b>f/p\u0002\u001fR\u000b\u0005/p\u001c\u000b(nn\u0006n\u0006ۗ\rg\u0006g\u0006nѣ}q\u0003\u000fsq\u0004\n+\u001f\u0017\u0017<Q>G?YCLfVݨ\"ي=`OTac&\u0018XGfhh<>Ɠi\u000f\u00173\\}{vt/\u0016~Տm\u001fϦkL6Ծ̩1\u0010oJ\u0014\u001e9v$e\u0014[͞قx\u00183|K\u001e\u001b\u0016UgU%`[{7G[XD\u001bݮU//_\u001d'\u001b^ݣwq27G'۽\u001f^O˖Rqm\u0010|yaB;y.\u001e\u000f[\"\u001fvNV_<z>%g1~sm6I\u0016\u001b_\u0017^Uflɶ(pO\u00009߶׻Oꇏ˟\u0019?\u001b{b\b~ gćr;[O{f=g3KZO3zo2\u0005\u001f[쓗`qT}g{Z\u000f>~܃7XHCޑv;2}Sl5ۆUw~<<\u0016\u0012>K`WGz-\tܼQ[\u0016I~ͼ>63g\u0007ݟP,*Ög_B|ؿa\f؟+ӳ5i*t\u0014\u0016MZ\u001e96߃A{#;dB}~o?}?j\r.a{Ņ\u0019Ϛ\u0016QK\u0001hB7d#~9E\u000e\rȣ\u001eOz'Z\u000fc'\"pk[u\u0017\t\u0014\f<cN=F3|!\u0017`\u0001&Q۔o\u000bY{sr]{:v;އPY\\LNk0o\boQyv,c~\u001enO?eq{@\u0015C\u0010\u000ej\u00173?`\u000e<ES}}\u0010=GN6_x>;ہW+\f\u0003x{\u0014\t_Co_/89\u001f/οS\u000f<|\u0017|s$\u001f~{q/~X:yso/ů\u0003p?Xa}\u001fC?,Bf3ӆüx ö\u001b>CY\u001cm\u000f_l\u001ed\u001b׸o_ۻ_y\u0017]\u001e>5k\u0011ͼ8h\u000e&4Ѽ6Nc\u000f05M\u001a\u0018\u0017m<L}jC\u001bb\u0018\u0012\u0007+aӥ\u0016ak\u0017o^x3؇<4's7m!mKϑ%\u0012۞6Mu1U\u0017\u001d)7CߴC\fۑknlj\u000e\u0014koG/Uڣl'sC\u001eb<\u0017\u000fZ\u001e\u001f\u001f`\u0003w~{uXuQ\u0003a\u0007?^7\u001aw/_Zm@?_/}W\r~-~o\u0003&,~mzotx\r\u001ew\u001b5Ro~Pϲ~͗'9gXjӌ\u001d8x\"v%<o0ЦPmM퍮m\u001bn5ǟxJFl}0컼6\u001b\u001b\u0007a ^\u000e:Pud\u001cj6=':G-S^\u0016V.͕\fA\u0003ö%}?k?\u0014c\u0013u=msL%5]oc\u000b1E;ڴ-i\u000fm\"FM_ܳv\u001bsY@50d\u000fo6Omɩy,bۮ㱟z1k\u0015r\b~E);\f1햾/#C̖`cNt!%[.\u0001\u001c޵}\u0014L\u0012k~4پDa\u0005oh}{\u001atY[MV[Ë\u0003[\rE>,9{a6l:=2Dhj\u0001ewR7W\u000f}Q[wa\u0001cga?e::\u0019\u001fA}9\u0005ȭ̓fPx\u001a\u001c\u0016^@\u001bRm\u001e6.Vs\u001c|\bv\u000eЙ\u001b\u001d>sq3$\u0014-5鰳iKM\u001de1\u00035I\re{=)mdǘ;m+\r\u000fh\r\u001d\u0003]зC.M[!g\u0019[w<\f7\u001bFK\u001d[!J\tv ٓ:1\u001b¦$wź^o\u001bLfz$X[&v\u001aGˇYJv-J\u001d\u000esĒۍ\u0017ߘ\u0003vgb28pzw'r2\fio|{ׄĔfA6m\u0011G\u000eS\u001c\u001f̕l\u0017á]'֩i\u000f&-\u001689\u001f_t}aMuۄ*6\n\u001e`ک\u0010\\k\b^nCӖ[➇n1v/?;'mѤ\r0ؘd6CI\u000esVV۾\u0005b`lӥ&HY[1\u0001.j\u001dۘ$6_&۰c2VKAmڜZgy\fml7W-^g>\fvf\u0011L\u0019l6Z\u0003\u0003wl\u000302((mе;֯4n\u001a|l~{c\u0012MFfۉd6S\r\tocD_P\u0006P%a~+~M>?e\u001fb\u0012j\u0004>j\u000ej\u0017>y`e\u0016\r̅=_ۀ\u001b?mbp6?o9Ez2_~\u00073bX\u001bng<\bf5e0f\u0019%{\u001fj\t[}^z}DXn|\u001e֛c24F\u001fsun(1C<\f`KD\u0006IG-:i̮\bɌ&3=H\n\u0019rt}t@h[_-]u&\u0013\"\u001e\u000fboy]ww㿵x\u000fvn1\u0010\u0018\u001dMo_?^ʫ\u0017\u0007WwHXřlNξ:|sr|1~tlӮ2\\$Gͱ\\ُFzwqy\u001a~8\u0016$6$_̋ۍ\u000b\r_:=_Iͻw.\u001aV\u00070.\u0010\u0007o\tg9=GH\u001cɞ\u0016Ƅ\b\rׂtZ${xHR\u0002کL\fhG\u000bh۴zY~\u001efo[}\ta-þP\rY\u0005Sc>ZXy<z[\u0007JÒ]@Ǜk2]9-\u001e2\u0018={=6>\u000fvw<P@{\\\u0001Ζ\u000eho̘\u001a׾k\u0012)qm߶kǛqm=v\fqt\\;\u0017^CǵsM\u0004b\u001ebb\bp,4\u0005;8csUL~\u001f6\feo\u000eQ4\f%_\u001bq\u0003ԋ)m\u001659F\t%u*!1&\u0002ZWiG3\u000e\u0003\u001cv-\u0012\u0000sP{\u000ejo\u0019Ԟ:0\u0016\u0019`wX=\u0019\u0014+\u000bE\u000f%Wf:in\tP\u0015M\r\u0012\u0014*?\u000fz(6&0ތZVl\u0018K\u0012͸#)'S'uP~c\u0006\u0002ٿmV%d$0Z\u001e`ӌ\u001fA\u0014\u001b9{?L\u0016 &\u001dDRӵEɶ>vo܈a\u0015in_bd&\nO|)2H)W>D\r9`>\u0007Y<ݓ\"\u001c'MێmfwjcvN\u001bdM\u001fFZ\u0019vYhcvJ{\u0002\u00026سIdkYlvW\u001euX\u0010\u0004v$붵\u001e8/\u0002\f895\u00116?BFrp.acu\u0016nR#]1\u0015\u001eI#\u0006a\u001deR\u0016wdCWc>玽=?͇ݑ-y#=$kۖvmY\u0002B6F\u0012|\u0005\u0019ZTl\\\u001a\u001f\u001b$\u001f,<guǞrS\u0007\u000f\"Iΰ!OZF=\u0007|\u001d=\u001b\u0006E`\u0019It6f\u001an\u0015fi8{.uZEKǏmf-+q+m\t\\Gݸشl-,=M˜d}OY#8lm}\u0007V>bGO[\u0010CT\u0002w=֓](|V̄\tc<J\u0013Mb*c]Sݹg'~\u0014ki}\u0007n\u001e\u00197Żmyt\u000b)\u00169s=\u0015#vDnڨceU8S+Z:3+sfeά̙I\u0015Eqǰ.>FI<b6E\u001e*fSG˦\u000e6K9$Yw7{mۜ\u0003{˜C6\u0003\nN2\u001c:Nrg?ܲ<\u0000NL\u0016vU21:!;ɔn\u0018tU)=QB0ɔ{MNϐ@YM@kܒ@D)\t\u0013(\u0004?\u0004\n\u0013(\tp_\u0002e\u000f@vQ-3\r\"\u0010\u001f°UYbo21Ր\"0\u001b\u001ce\nYm.\u0012TCNBϻ\"bgML(j^Z\n\u0011z!{F\u0012Ŗ@\u001bvL\f-s$JM\f\"C\u0010vΡ9[\u000eeL\u0014ʆ3NYf\u0007\u001ew&D)j\u000f64m{ڡTCHM\u001f\bҮ *\u0002F!FFS^1\u0001=W{\u001bK5gKKn\u0000\u000b<v\bhu^\u0019,/CᠻPX\u0010cE\u0005=`R*j%\u0014TE\u0011<ȫr\u0016\"eTC\u0007ᐨbRO\u0019\u001e&F\u0007J\u001cD$K\u0007e\u001dl?\\Rc\u001d}\u0010`a$$\u00184V\u0011\u0015ۻrwEC6\u0006YHoCc.%k9m\u000bf6\u0016O۳\u000e@Ծku ;V:\f!\u0011\u0012*=)h@Rd$\"۞\u0005╲%4\u0015QVک\u001b9fh\u0013q#'ۘ'\u000f\u001d[\u0002y\u000f\u0001&i#\u001d\u0016hdi\\L</˩Y\n]6\u0014O\u0007ҧܮ\u0006Ӏ\r.ss\u0005u0\u00076n\f\u000bX6[4,\u0012?!7?\u000e)}˃ZF]H$cH-\u0017\u0019f[4D.m$\u001ey\u001e;ms\u0004\u0002ޣ/\u0010\"acƮt6E|_7\u0001a!\u0002[\u000b\u0004\u001aB\u0019@뛀8'\u0016t͡M\u0002\u001b\u001d\u000b\u00011\u001dRi\u001e;ܤ/N\b\u0006R{J\u0001郬:g\u001cfTU'٪\u0013r]cE֡\u00123ts\u0014\u0013Z{ϑ2gzRC|LVw-՟ג\\\u001cߙ\u0013}֤-fHzޚ\u001d{f\u000f\u0012V\u0017bZ&_˄_\u001b91?tÃk<XY׍Txɡbc2\u0018\u0016\u001f66ٲ\u000fq*TwN~\\\u0013Rlko[^uZmb㼛\u0019\u001a\t|k][>o{p(hsX.\u001e\u001b\u001cZ&v>,Hڍ߮%쮧%p-s7D}BҎ:L\fEܜh\u001eBFbx蔞όޔ2+\u001bdZ˳U\u0005e**\u001eyݕU\u0011Q7,Sy37F\u0019,bk럭^̴yBm\u0011\u001eT=\u001fˇ\"._!6O\r\u0015GMUJW\u001b3k37qnN7Vy!Jbnd\u0002K\tlf)997KTi\u0015\tM7\ni=\u0012W\n-\u001cd7ʩd`7ʩ\u0004<\u0006.nY\u001c\u0001\u00193}2p-cSݶu\u0017R\u0012c^v\"G{̘SFVN\u001dYwWƬ\u000f6\u0010)\u0019JS/V˩\u001a{1wK0[2:\u0015IˇX)\u0012:f\u0002I>\u0014[!\u0013L`d-1.7k\f?t-m&4lmQ]e\u000fZIO33pR6\u0019q_fl~\u001e6;hIMT;\bC\u001a%#jb+76J2Mwk96j9b~en\u0010 \u0001Dk\u000e~0vv=ayvOt\u0005\u001aRr\u0015^\ri>V^>d\u001cޚd+\u001clr,}\u001fOM\u000ejZH\u000eNX\u001biSzսFk08n$\fLDb$\tK\b\t\u0012Kc\u0002;pOʡ4a\f˷GnЩTemo؃\u0019bI6Y+0l\u0010㧉G'l}3\u000f&`}%g\u000b:\u001b\u0018O%$'|\u0013\u0014X|M\u001dy&?M\\[Mܝ\u001a*v_Kyx`$/\roh\u000e\u0012g(/8VdB_\\])sq\\Sf\u0001Yb\u0016\u0005,f\u0001Yb\u0016\u0005,f\u0001NeS٣:-`q3\u0016[d9I\u0017u\u0001\nM[$N\u0001db֘+q\r~Z\u001e\u0012K[a_[]fO {h\u0014d\u000bt#o\u0007e(Ys\u0007\u001aV9d'\u001a~)\u0014gm1\f#V>8ŗ~\u001cY+}\"\u0018G4D\u0011Xx_jRF?n7\u0006\u000e%JY̫m\u0002;0q\b*Oz#\b\u0004\u0010\u001bX-\bǧ^)dI2U:$A \"\u001d\u000748xt\u0019\u000ft\u0017\u0005.׷`\u001e\u0013K\\qcE\u0013\u0000\u0015\u0015lDY\u0015M>i<bH\u0007V\u001c\u001d~by <\u0001k\u0003L2\u0011H҂\n#fvxIˌ\u0007}\u001fozO.*\u0003ǖW#J\u001faKJ Q\u0006a{n=\u001c0k1@c+\u0019F\u000f\u000e=@3\u0011߬2\u0010!s\u0007\u0015VgL\r<AqZ4\u001bқ\u0017ݔCQֺ$0~-ہu7/'\u001eW\u0011t;\u000eIw9~^ud<,W\n\nr\u000flx\u001b#ZMpo',\t`T\u000e\"5w@Ce\u0016xW\u0018nq\u001e,4-M.l뛹5\u00077fV\u000bWVy}^9\u001b\u000fLl{;k.5H\u0018*]%K{\u001eW\u000f%\n}Ѽ?Y1!g'.3D<n̻~!;\u000f3`K3[\u001c\u000fpI6\u00163\u0004v}k\u0019\u000f^Z|zV\"M1\u001e$\u0004xg^X}\u0012!qPb-d6\"K\u0001\u0003_\t+\u001d\u0015\u0013mf}\u0011\\rx$|r$3[8:.?䳾=\f^c\"?\u000eU2\u0004v:\u001e2 ܤ?:\u001ekj#;,I}W/)$\u0018\u001fځPV_,\u000f\u001dl۲iHu\fk-Wx2nX;x`ux;9{Oh\u001e\u0007Zɼ\u001cIp\u0019[\u0018\u0011\u0013F\u0001v\b}47s5Y\u000fZX\u0010{HX꡴8<ѬUPjd9/4\u001b\u0005J-\u000ei[ުOΉ6x+4/K\u001b\u001c?0\u001eYӮ\u0013)@{PjY.KzOz%|ցe3wzǧ)JMOUe{\u0001~Jkuo(\b<\u0004Oz|\u0016V;\u001e޲d\u001fVFzER껝%\u0017\nlZ\u0013\u001aI\u0001<&\u0005\f-^#\u0005L%4*\fK]s\u0019W\u00150Ԏ]I81X5߳\u000fٳ\u001dem2hEw8\u0015\u001f0}\u0013i=|T3sy4ϙi3ͅ\u0002e\u0001iY\u001edC\u0019`T\u001aalQї\u0019Y{!u\u000eDlgc\u0019InLȚ#ӧءU&R\u000f\u000bXPfβ1\u0001UO=MPAj8\u001eOVJ!&a\u000f+\u0018:k)\u00064\u001a\u001b_^\u0003ժeޛY\u0000=1ce\u000b@MEnϷÌ|L8c+\rl#+\u0013n,̖:d\u0015J\u00129PhVe\rorY?xW_͢.wФZB\u0013v0s\r\\C3<yt154s\r\\C3̑99G6l54s\r\\C\u001f54ws7իا5T[\u001b,C\u00122\u0001G4J\u0004>/\u0005\b\t[Z/c؈٭:Y \u0002\u001d\u001aQL.\u000ewd\u001a\u0003M!UN)r\u0007l\u0006\u0019 -\u0015>)reR\u0014dөm!\tخH7 PFM3\tB\u0001N|'\u0001v%a\u001cQ]\u001e)\u001aB\u0010m\f\u0010\u001b1\u0012\fU\\\u0003!%C0\u0003.ܥ ۤO$妝k&FJh\u0003$X|\\\u0014\u0016{YoV}G-P߈\u0007|6RI\u000fц\u0006BA\u0015\u000eHA\nCZ\u001d8+7*몇\u0006U\u001f]\u001c58klTFWU0{Gn3L$G A\u001d 64\u0000-CnUi\u000f2\u0002\u001d0Yֿ,\tn\u0002:DĤa?1GA\u0010~s\u0014\u0006Rj\u000bu܀\u0016+$>GJ*mi=qBـ\u0001\"\f>yP7o0;eCKlJѬ]zE^\n_bj\u0017nzuf\u001eשT\u0016էx\u0010ǡdK\u0005R`\u000bG1\u0007ūDL\u001ac~報\u0016\t_tbI\u001d~58\u0001jH\u0003C}]\u001d\u000bj\u001esB\t^Z@ޫԢԮzdaҰ,=b \u0002g/ȳJG\u0002$ȳ,n)v,\u000b?$dpg\u00033\u001cT`ro\u001dL}\u0011\u0007V\u001c\u0012O>}K([)[\u001fZ43\u00046Du\u0015OtW\u001bcŕo9V5Ze5ı϶o4V.\u001at\u0011^+'J5\u001alɽC7\u001a\"qXYSo`kTۗZFCA\r_(=_^:xMUaK+}\u0012^KE,AzNFC*,}F\u000f0IY\u001b\u000fǫAWN\\8mmU`,\u000b:\u0017H;vP\u001dи\u0003[8auVI=y)\u0016TB{eMsl1ʪ벳G(k%o\u001bc\nϛtsx\u0019Dں砃}7~VeHH fD\u0004*t\u001c4^uﴧ+ӞPt\\\u0000pq-W5<%H=\u001erQ$=\u0003\u001d?bn~\u001bOk2X7\u001e\u0013p(z\u0003W@q\u0007\tN6urK\n\u000fnRպqܱlfe\\/[Z,\u0015BWc\u0006˭zO|5J\u0001jP\u0019%f\be0\u0015V+RkUKm̢<6t\u001bdBhVieTа\f|DtĘx7k1-f-Yibf-Yibf-Yibf-Yib\u0016\u001d\"L$֕kWq;_\u0019\f-2\u0000(N2\u001b\u001c&(sWѤw|d;r8[ٚ7?}\u001eȌ n&\u0013y9^b\u0010\u0012}U_\ffh0+&V\u00188a#,\u0018\u0016\n*VqBhF6-\u0019.X(d<ܖhH\u001c\u0015\r-(\u0001UQ2Sshr\u001c\u0018riXr+4A6iYhdιy^\"ѳ\u000fٳJwv`X\u0015\u001a{bz.\u000fTh4u\\v>JƌY\u000fjN7y(VFf*\u0019G1\u0017hTo7\u001bwC9&\u0002\u000b\u0003R?ް\u0003B7lf!@\u001fTA%^ӷyz\u0004s(!5v\u0018\u001bb\u001c3b5Ià\f\"]@~\u0015z\u0001d\u000bh_5I\u00104lw6$Ml@{\b\u001b\t!<B\u0002\u0000)´q4+w9cg0\u0011YUP@8OOo23\"#ç[6\u001b-*\u000e\tCVfF6\u001b\u001d*JF\u0007]؃\u0019ktd`#sD5\u0017\u0003\n]To.YVB=\u0013\u001d״U핤oN\u0012_\u001fzȧ׿\"dU(q\f놐^ﴇ'Iۧpͮ~@N\u000e7y2׮\u0004SpN@\u0014&}q,ŊzWҖOfԯ\u001a!f\u0013l\nГq({~-N,K\u0007Rg\f\u0016\u00161AR\u0001\f9B-\u000bB^NmTU'\u0010nar'\n'i\u0003.\u000bj,~5\fBD\u0006\u0014@mAd[%C\bw\u0006\u0010\u000eoy\u0003\u000bMȭQ#\u000bO\u0016\rT[\rP}$VVTƑԟD\u0006Zj\rcXT O2^\tQ\u001aCÒ\u000fHX+ZNW,\u001f8\u0019BM𵖿ymA1hoLi8hW\t(/\u001e\"\u001e贛yUTɖ\f\u0006\u001a\u000b\u0001\u001bgX6(8}C3m\"q\fڟB|3 *s@[֚i\u0010%&\u0012#\u0012*\u000e=%W\b\u0012n8Qxд*?D_&\u0013n헠JCZ=J;\feI6p\u0016\tC\nB\t'_Nɂb\"!\u000eű\u001eD\u001cRʩ>z,@?pt\u001aqD\rk[g_=:j\u0013X,!m\u000fˢd$Q'\u001eQ/>́1\u0005IRL\f\u000fj\u001d\t,F\u0005!H\u0012\"\u0019\nQߤ<ꊘ,:M#\u0014\u001ayI\u001bD<\u0019ZImUa4zK$5\".ij]:$\u001d'\u001a\u0018_k\tboIX@p\u0019+\u001e|!mYa\u001a}\u0000\u0010UP/z\rZo{5*R\u001d\u000f\u0016Cr|\u001dW555u\\q_\u0015~\u001dWk¯\n+:G ~\u001dW55u\\8P(\u000e\u000f=!\u0003z\u0003\u0004G@.ƫr\fZb򓣯hPP@˅>`-]яWuX\u0006\t-&\u0013\u0014\u001aq\u0004V~s\u0014\u001e\rƂWE\u0005&\u0013\u0013\u00029IoCN\u0006\u0004Ea\u0011|\u0014sp\u001d9\rU`'V!tH\u001f\u0006B왜!fQ\\\u001bG\u001b\u001fXr4%h'w\u00149EԻe<\u0012\u001cKDAqS\u0018t8<\u000e|\u0011tõ\u0015D\r~\f|R46e{eAx;gSL\u0006FԏRc3b>O\u0011\u0016\\\rMK\u0018-=:\u0012I9oG\u0012\u0000\u0002{\u0019ƽ;\u0002rD48\u000e(J#\u0018?rj\u0011\u001e~\n$w<\r\u0000\u0017+\u001a;qɁxb!\u001bN;\u0010m/u֗\b,Z'#yex`\u000e|/}\u0019$ x\u0004\u000e\u001ei%`5G\u001c/0\u0002eZdr\u0016\\*<7ot/JuxX >ox=8̮\u00010O\u000f6Sxx,0ę&\u0004xf\u0017\u0003Z\u0000\u000f:a-x\u001b^K\u00106FX\u0006c(r\u000fdc+\u0014\u0004\u000f\u001f\u0005V\u0007*o,-f~shI=\rO\u001a+,T\u000f\u001aǐӴ?\u0012\u000b !-\u0004<x\u0003>r&\u0006\u0012\u001e]B͚2<)ize~\b,Z\u0005;Cg#@U@\u000esź*CuV\u001dM@y$Or'\u00035)\u00191H\u001ca@\u0005<,r\\\u0000\u0011*\u00140Kic/\fXhh\u0014\rt\u0005\b(0񺢡Pdᐪh@m\u000b*\u0012\u000e\u0006dG#\u00057\u0010ՕӠ#K%Ȼ\u000e#\u0015V5oU̍TTTT<hRc\u0013\u001bX@!]$ﱚO\u000fݕ(m\" ܻ\t\t=t\u0019iwg(\bFz\u0018\u00199\u000e̺AD\u0001\u0003K}|\"\u0000lh9(\te\ncdDA\r\u0007an_?OL'~*\u001e {\u0005/؈\u0012\u0012m&q$\u0015?3q7$[3*3ȏ?z&|&l&\u001f\u0011\u0004Z(vcO\u0014y0'ӆ3\u000eزR\u0002#\u0007kgQxc;񫭈\u0012H!\u000f9pu\u001e#\"xķlEV9t~\u00158Ha&YG\fg\u0012A\u0005Rum&eӺ\u0012թDycCf~$~$OI<Ps\u0013>Ȫs8=| D\u001asnL#e\u001fR4\"{4\"nZ_e4\u0003\u0011Yr\u001c5NPn0j>H.3b\u0004\u0018\u00100#ʈ`NE\u0015\"~\u0007n擈߀L.?\u0016E3$yNa$\u0010\u0013\n\u0018uS\u001a!\tJ\u0019.736,\u0017z\u0005\u0017Yh\u0002.\u0011+_\\\u001eQ\u000e/CӄV\u0015\"+sĹaQ rEa<)Z>k1(^@!\u0000\bC\u0011܊e\u0007L|;\u001e,R>=kv\n=Y\u000f\b$\u0019Z6\u0014\u0002\u000f\b\u001bF\u0015ːŨe<͟tUgi8\u001eW1?sӧi\u001d\u00185>hꁔ\"7&\t\u00069A@\u0004GEt\\3Dύ#\u0001fF2QC-q\u0002o\f\"\"f g\u0006ӫ\u00173nG;\u0016\u0005\"35\u0002\u0010\u0010\u001dr\u0019NUR\"\b\u001aϓz\u0002<E dc2_Cj5eEbl01\u001aҟ L\"Bi<CXI|\u0005Qq\u001b\u0001L &\u0018\u000fG\u0013\"_\u0005-4ޡGXkP,bֵzGZ\nӖ2fQ?&A\u000ftkj%+@АLAK\tvYPG\ndj\u0017-\u0013\u0004TH\u000fOWƋfw3ibk\u001azz\u0007:\u0017І0\u001fZ9҄V8\u0018{0,\u0004U\u0010\u0007ێ\u000e\u0018ɉH_ߕ]\r,cKEpy\u0002\u0017\u0005J\u0000\u0015Ps\u0002 4'[U??X\u001aRy\u001a~P\u00162\u001fLc?k|\n*i^\u00034k\fEW$klD8銉=Z\t\u001e<ַ\\+aC\u0016yTk\u0017\u000bQ\u000eY\u001fVg\u0011\u0010\u0019W<Ǐ~\u0001cW>PfG\u0011y\u0000C#`\u001eB10(PB˄{\u0003\u0010Ot뽑E-FK+\u0007\u001ef=pv\u000byS-|+\u000e\\UW\u0007<nϔG}Bv0X\u0010s:\u0006\u00130\u0014!upϽ֨%\u0007ht7'1\u0004Π0\n\u0003F?\u0004b</)1XĖKզYOMJڈA'J?y:{\u0002dV39ҶZ\u001e`z/\u0016w7\f꿫XBhg9=ѨO&\u001d\u001f(70˾\bV>pmƪ;ӑxZt\u000f\u0017\u001fd\u001fDϥ};SR(BEx\u001aAM`hd&\u000fYmBBH.QOGoJs8\u000fATgU(\u001e>,җE,\u0019ֵM_Fob`/3eЗ\u0019Kз2Cc\u001d\u000bԗ\u00112B_F\bE[qCQd\u001d2=_0=J\u0003lٗ-7 K\u0014\u001fMS\u0007mar\u0006X*zșn\tKq@-LfG\u001b)W\\Ĺ[O{d!eϡL^\u0002V<\u0018\u0017Y>bȸX\bdoc_Qg\u0014\u0000\f,^\u0019'yY|\\k䪡5.Y\u0003Db\u0004Y`\u0018(mFf%8chyY)✲\u0002Q4.`\u0011h\u0014\u0017^\u0018gdEb\r>k\nd8N\u0005J\u001b\u0017\u0018G-t;5-PApwE;Bk\\\f^K\u00033,#\b,I\u001fbD\u0003q4/QHV?\u00013\u001c'\u0012Cx\b9j7x3!ovs\u0017nv2㖿H]k\u0002.Q1ZKw@9]\f\u0007Ge\bXG\t>n\u001d<=J+6n\u0007՗UV[%MlinI\u00063\u0004?m'PzϿN'\u001f\n)J5~j\u001a\u0014DⒿKU_$ߚ!#\\fѩ7L_#\u001f?@|g:ꯓf@iYɳ\u0007?\u0006|L\u0014O \u00049V%eI\u001a\u0019%\u001ar,u\u0013)u*Q0\u000f4?M%㉥ܭƿ~i/m\u0012O\bBX\u001foZ\u0017M\b\b\u0014uܒmR\u0007\u0011Wb*әPٴI\u0012\fYOEM\u001dh\f\u0016ӵGw<cTR,Z|9 8lK>ufRw\u0017e:7\u00121\u0018~z8\u0013u67~mKcQWiů4_1(Q\u001cEr\u001c'\u000fb6\u0004^=у\n2\u001b٩ 8\u0019Ctci\u001e}Ӈ\fN\t\u000f:\u0003pix\u001cIHu6؂\nr˃\u00130\u0002xiߌ̠̠ͤgf\u0006&kVoY/.1pv\u001crC34&lt!<P+0}S?\\){R_3ߝַ\u0007\u000br\u000f\b\u0007D,\u001cW.@Nܣ%\u000e/\u0012DaxYWfH(\u0007QZ\u0005x\u001e\\\b\u001dw\fq\"O|,ƔLf\u0016oyA9%g\u0013\u00021\u0004{'\u0018QM؊x;t\u001b<PZ;IK?CKrtW`ML\u0001\u0005( gMF\u0014\u0005Zz\u0002i\u0012v\u0012\u0010O9Ix \b+a츲Sdi\u0016:\u0000C%\u001ek*2m\u0010aL\u0000`칋z|O\u0005@\u000f\u0002Px\u0016? \u0010\u000b\u0016e\u001a5tcPtOre:\u001fC\u001f\u001e@\fK\"+<Z\u0012h\nl\u0012Pahғ0.\u001bq\u0010׿[,5=#Ee\u001e\u0002\u0000z}\u0015?b06Dp2XFjvem\u0002W\u0000~=Go֖\u0015\u0015A\r}#7\u0017Fս\u0005^~P\u000f\\!=,6~p܏t=w\u001cm?*6Iu{sE\u0017p\u0013p2\u001a(\u0017,[-%aB\t\u0004A6ϋ `\u0004(\u00002ތEO`ր\bD2Cт@1UmU!3UV%\n:\u0010S\u0000\u001d2GUpzu$\u0012'a\u0010K\u000b2E,\u0001Zx\u0015HD\u0014e),:\u0010\u0018zp4-+9H\u0010'=\u0015zG\u0019Z\u0003Ye\u0017d \u001bD\u0014EK@|\u0019Qy0z\u0012Wb\u00023\u0004\tX\u0013\rQ!\u0000F\u0012\u0018lxHsFˬ%s\u0006Ug\u001c!5<Ők\u0001\u0018Q@\u0006\u0013ET4\u0019J\u0004\u001a\u0001fS$\u0018\u0016G\u0019\r\u00107bg\u0012oĸ4\"Аb ͜1\u0012 \nK6],\u0005|\u0000@@8`ue\r\u000b\u000e(\\ˡ [Mۤ1\u0002\"̙L\u0019\u0019\\`)\u0001BP\u0012e\u0006pVQb\u001e\u0019d\u0005HA8D`-\u0003\u0016\u0001#\u0002i\u0001G4%1X\u000eo=tG΃\u0018+e,,yu\u0006B\u0005r\n+1\u0012Ui`y<\u0007`yY=NKX\u0017xC\u0013nP\t$0j4ky\u001eRjDF׹C\u0007ȳdY]F$I9J\\\u001c\u000e3(\u000b\u0012\u001aMTQ!M\f\u0004`vC\t1\u0011*\f,(\u0015J`e\u0001\u0017G\u0006\ns2XTHq4P^\u0016%Fՠfif\u0010:\u001a4G!e.U\u0000(>)+`5+\u0014%<\u0000'΍D\u001b^i\u0014>d{f\u0017T,xo\u0012\rH%\u0005\u000edJWXU82$\u0011=A\u001eɠ\u0010y\u0012[i\u0019uZ7s\u000eMйMFj$\u0007\u0005Lς\u0015\u0001L\u001aO*\u001bND.Q\f҅a-\u0018I\r\u0010M>XˣQ\u0011\tu!\u0001x\u001c/*2\u0014#\bDR_[M0E\tcP\\rhA)쇡D\u0016T\u001f^ˊcs\u0004ir\f\u0010;E\u0013\u000bЇ#2\u0002\u0001\u0017uS,x|/XQ\tt(@\rCHF\u0011?C=\u001bCl2\u0001AryM@e(rZ\u0007\u0006=\u000frK,O\u0003\u0005֔̇o4}$@ %\u001aK[Hǳ\"\b2n0\"LB `pd\u0000\u000eZP\u0018\u001eM/Q㴴\"\u000fțs\b2u^\u00008BqN;񊂨q(4aU<A\u0004\u001c\u0002 DOA6\u0014z94h\u0019\\/6;`DdVp$\u001cDV\u001f&F`/ZU\u0001\u0007\u0012\u0012c\u0013L\\\f:X{P\u0003:σ#\u0006̂4\u0013\u001f\u0006\u000e^eYOw\u001a\u0013\u0000@\u000bI'\u0006b\t>`v-{ϯ3}E\u0013\u0002\u0010\u001aR`fb\u0003\fZ\u0019\bv^ waId\u0007t0\u000f!2p\u0013m&U W3\u001c\u0012yi\u0004/\u0000\u0011qx\u0001\u001e4ʊ`܀uSlab\u0014ctW\u001e,ǎ\u001e\u0012\f(x\u0016gĻ\\QkN\u001eKu\u001a\nn$\n<\u0017\u0005N5\u0007$gP4\u0018\u001fFP՜%I,]^\u001d(HˠxpT\u000f\rАF3\u001cAo/\\\u000b\u0000^\u0001\u0019\u00050\u001e&hj9\u0013@P\r\n(qxU{`}\u0001A\u0019\u0005,!8p@4\u0011%@t\u0006\u0018\u0017\bCG\r\u0017le\u000b\b=_\u0014\u0005i\b\u0001\u0000Jap}\u0000W\u0003#\u0011 \"-X\bx֕\f\"\rD$[aZ\t]KH+b+\u0004~-\u00029Wܒpq=\u001e%C\u0003\u000e/\n<*\u0011D\u001a/D\u0006\u00032\u000e%y'K(@`Su\u0005\u0011\u0003q0_\u0002\u001aJ\u0002q#@1d\u0014h\u0018^Y\u000fM\u0010#l\u001faE&j\u001e\u0006 EYq\u0002/\u0005\u0001A\u0003W\u0002Wb$2\u000b\u001a\u0004\u0000XX\u0010>p\n\bc\u0001Y0uo٭ c4Ļ]\u0018`|\u0005\u0016wRD x<#\u0005O8 \u000e\u0012ڱ$r*\u001dx\u0013BvSͣ<$YFy \f\f\u0004d&\u0005\nM\u001a\u0013Ch\u0018r@\\x{~T98*WL\u00057FzО\fH\"\u000eR\u0017\b\u0006#ήm)J*\u0006蹡\u0000\u001cC0[ڌ0[wT\bWčRյH\u00165edR-Z/j#]o)ؒPF*U;eZifq1\f\u0000VaZ\u001fuO[(|\u0006eYՑsgg\u000bsOsƁ\u001ezAЄQO\u0003L#ǀ?!сC/x\u001c`\u0015@?BLE\\5\u0006=fΑ;\u0018إ'/\u001c5X]\u0019\u0003@d0a@\\KV0[P\u0002X'&\u0015\u0005S\"O\u0003\u001a.\"T\f\u001bx\u00047\f\u0007)1A{<8[\u0011^}UW\u0001)\f}GE\t&jdI֒ߨ8D`F\\ZL\\0Cc$`\u0014\u0011\u0005\u001a\tLTBz\u0014\u0010A(Eb\u0019\n\u0011([k/\u001c]m\u0006B\"\u0014H\u0000\u001e\u0004\u0019\\ih\u0006!\u0012ҚhU\u0013b-$i;- 88X\u001ab+s\u0000\"Q-\u0010_{cy\u0016\nL:B0%4a1(\u0012'AX:\u0013\u00072cB\u0010\u0001\u0004!P$koD\u0011KodJ5q{ȧo4<Dՙ$aj\u0010m\u0001\u00130$\u0016\u0018KS\u0004\u0011jo|\u0016\bs`\u0018u1_PZ\t\u0015\u0011\u001c-9p\u0012\u001e\tN\u0011M\u000eqCi\n?A {w%\u001eC!iIȭ>}F)CYHEJ\u0004ہ)\u00025Nd8\n\u0006\n$L\u001dƍ\u0017\b`\t%a\n|\u000fuM\u001f7z\u0003Œ\u0018\u000fh\u0004ƋR\u001eS\u0013\u0001\u0012X\u0003h\u0015\u00185m\u000f[\u001cWl\u000e(jH!2s%8\u0012\u00043hYj<\u0004^\u0001V\u0015`ܖǲ\u0019o\u001ew\u000b2\f\u0002F`j\u0011UriKP2\u0019+a}\u001aiPO\u0018\u0013VU{^/'yoV<כ͍3'/l'6}\tN[S\u0004\\NSx_Gt:ՒS\b\u001d=pW{-eLn.\u0013|\u001c'_qr]\u001dC\u0014KtX{`y>mv=\u001ap@\bzw\u00174\"'Mhk4O#kH'4>sbm8\u0018@}>\u001a9E\u0007E\u0000\u001fоT\u001bH-o\u0001տ\u0013EvfԧS\u0011ƢqP-g;^\u0003l_JFoԂ\u0007\u0010\u0007XVׄ\fSXs8\u001avl`+CA'{OAګ7\u0006!H\u0004䗃E\u001dd.5\u0017xs5_Ǉ':.]B\u0007Pv墌1cP/H?\u001ad1\rz.A\u001dkEtp?W\u001eС]\u0015i?K\u0001\\]I~?;`Bv\u001a\u001dY\u001b\u001c?Fi\u000fCz]\u001f`뉒+\u0017Ӧ\u0012ǭ\u0010?D#u鰾K\u0018\t\rxX8eدy}Q`JdM\u001eһ:L\u0013̧lR\u0007)?\u0007wn4\u0003T\u000fz\u001c\u0007:9tk-5RVe4<[\u0000{qbum\u0019Oa\u000f矂\u0013?\u001b2Cx[!2g(7Q\u001f~lx0ݐ7x5+VУI+֤\u0017ܨ9KbYKl1\u001f[J\u0019(\u001fz\u001eJ\u0018ZJl<Xh\u001b̖]eiڲ\u0001\\LseL-ũfr@XVYw\tp\u0001'jFa1,Yh\\>,\u001dR\u001cO\u0016h\u0006g,%\u0013Db\u0019L'85_9M,1\u0006L\u000e`su5#_|<4s\u0005r\rRM9&b3J}Ee:(H̴z-a0_\u0004\b\n=\u001b濗Ү\u0004x1t\u0016~\u0011\u0014`<Vެ\u000b@ʫ͐Ř\u0012%:\te0H6_\u0003\u001a~,[Os6gE\u0003:\u001e8p=p= \f&\u0006\u0004de<1k,\u0003vP\u0004V^`-\u0006T\r[YiG-\u0003P^Im\u001f6X&6`$V=Χ{ә\u000eV\u0010\u000f\u001b1\u0002lv\u0001%OJ̫-\tdZ\u000b\u0017IK\r [yc\\@Yj\u0013Ʋ+j-\u0004tĬ7\\\fkm}hnJ,=P\u0000-\u0001;\u000bGf\f.t\u0002.Jߍ$B12kZ\u0005ƃځ\u0010;\u0002΃6SjCQ\u0003\u0006\u001a)q(-V\u000fT1\u0019v0ulXW܉$R\u0007R\u00127\u0012$6Uvۉ\r;\u001c,\fUѣ\u000bhkcVZ\u0014DBlȗA&ױ\u000ekl7n\n6\u0004:\tޢ\nK*DUǳ\u001e|up\u0000{hMf-Ա%5\u001b\u001dMXG\u0019pb0[\ni(ۜ9\u00158ic\u001c\u0013T1!\u0003\f0\n\u0006\b15\nw#Yr/`C\u0002\u0012>\u0014ˌ\u001c=9(<\u0007.)\u0018JG\u0005oCt͒@72$詩UXK\"O=gVBEiJC\\<_\u001bVuudɠM\u000b\u0001D{s9i'Ѫ=W`\u0006ew'k4댧d\u0003*m֗A22oS>()\u0015_\u0000\u0019cLֺf8\u001dcyH8/n kI`\u0018Vz?\"I\u0019fx\r-xv3&fkb2\u0002\u0019ni\"nI\u001c\"a^\u0010w`\u001e,\u001ej\n\u001dΕt\\\nR\b\u0014z^\f\u0006nQz\u000e\u000b\fE}\u000eusc`f4J3Q6\u0019lX!\u0019BH[N#\u0015\u0012Œwz1x<0L~K%Y=\u0013\u0011\u0015-ń˱\u0014xy\u0018w㢒Y\f\f\u0001D`X=\u0018MøF^W\u001ccv0hų`R@|ᶍv8\u0007Tm\u001cڋp2\u001d~)FU*\u001a.@0\u000e>\ba듕f\u000e(rb\u001alW)r0\u000e\u0010@뿠hU$$wd!Ѝ0nAl-/M%|W-Q|S-i=\u0015Y%\u0012H\u0010@\u001eMh36fӇvJ\u001aҒ\u00106\u0018\n'?#!uX\u0015\u0015A^DQ:\toǘs﬷C>oNmr1XՈ+]\u0018\u000ek0s\u000b8࿙j)cZo\u001aj]\u0019yP\u001bhr/Z\u0016Pn\u0005\u0013h\u0007-E멻ogkvzaZ \u0016'[f\u001f3<\u0006Tf֊issUb-&kUDzeHmv~\nGKMPj($ƹ\u0004\r2yX-Oe 桍9?ʉlV\nfOjM-ez\u001fPB>M\u001dӳxkuZN\u0014=)Dr/C*/ig&7?V[jlVv\\\u0000D7Y\u001a~\u001cO\u0012\u0013;\u0003ḁ?6)\u0013*\u0019h\u0003?\\.zkf/<Y\u001c\u001f\u000bjC\u0004\u001f1&ݰ\u0013aT|o/\u0019>V\u001c\u0019W0^,d+e\u001ck\u0016~v*ћUBH\u0010R`\u0006?\u00024N(\u000f|@-\u001fu#qۘG\u0017\u00190\u0013{:~>Cx\u0010&TB\"\u0016ds^6\u001e\n\u0014c#{\u001998>yL]\u0017Ղ}!$#d\u001ceY6$\u001fO*]\u000fx\u001a\u0015^G\u0004\u001f5\u0010\u000fu\u0011>\u001eG\u000eK\u0018\u0007ﶭ\r4|=\u0002i6\u0012z^vSx/\n[pK|.OA:\u0013(Jsg<\u0015s;x%#s|ğx~\u0006VZZ\u0000>v\ro9\u001fḳHق \\5ŉ/яK\u0002{hGyeESQ$VGG^5?rçH0C;\u001d\\CWm\u001f'\u000e\u001f\rlE!ՠս\r#\u0007du\u001d9耍\u000fxGC\u0014C6\u001b6/?xn.\u0001rn\u001c+/]_<Ŵ31z\u001aE\u0013FL\n\u0004mvM搪c\u0007?v\u000f\u001dCֺ͡xZ5\u000exvZ/爧M\u001b+f\\}X'8\u0019W(I\u0019iX\u0010j/:t$\u0014@޶:6O^[\u0019_\u0010Atg\u0005\u001exuBeՓ*ޫӠwc[՗5z\u0006\u001b\u00015YaJDVvq+Xyg*/V~Zhizrk}60B3gMF\"\u0005ych5~MZ\u0013Wk9=\u001fQcd\u0016&vU`\u0011Wc-:\u0011Y<gnŻz7\u000fg]tw+Z_n\u0006Oַ\n6u79[;ϭ}'ua\u001dXǅ`Ѭ}X~f\u00176$9vݽ\u0012-0s٨|ƿ\\ڤkvz2zE\\-:%-rٲف-tQ\u0015ZyV\u001a܌ljvOA;OZ\u001aC>2-40Om\u0005(s׭`v'w޵{z=P\u0016.4{/y'K\u001e~;mۣ\u0007{`(Si{?\u0017n8{,`{\\gyb׋]锇wa\u001f\u0012]\u0019\u001c\nc?9d1o\u001d\u001eO\u001fǑ8]\u0017l,pvv\\\u000bdBqx_uod\t:#yws\u0016'\u0007}]\u001f9y\b_;#8.;2ݛ#uq`qo9^\u0006\u000fG'8_ߊI9tZ[unApD۩H?:\b+g?rV3MS=QG(Y\u000b:\u0017\u0001O\u0002\u0012sq\u0015\u001aslr\u0015\"Z=q,yW[kޏsEά`[s\u000bp>{TΝ\u0007讌NSn]NrA\u0012+MO(+z\\.9\u0005=S\f[D6^yz\n@|\f$H~A+<'?\u0017\\{\u001e+\u001b\u001f+/Ơ\u001f<\u0018i;5|7'\u0007Znf\u000e{^\n涒x_q?^Á?5K.\u001b\u000f\u001bZ6\u0003\u0001G\u0017\u0010O\u0002@\u0016\u001aǁ*\u0006ޞj@?X\u0006\u0016\u0007*?惂1\bF\u0013\u0012kj.|\u001c_^\u0004\u0007AvɆCR\u0011Zv>X\\\n's6p{\u0012\u0002FC\u001fŗ\u0006v\u0014{kS|=M]΋vI֨\rS#K;ܑ=!:o\u00116Ę\u001e]\u0014\u0017c3S\u0003*ry\u0019E#gwdy\nMolQ_q}u$V+PG\u000e.4O.}6{<\u00197cgrMD߆\n\u001e\u0019P+\n^o\\\u000b!\u001d\u000fJ*4\u0006!;E\u0013'\u0006{y\u0013\u0011/c8km\u0017jRb\"]%\u00109zWw^22\\\u0015帳:oRݰ\u001cKawsrYAggNW9K\u001e9N\u0006S.I&i%;m.]:U\u000bSn;\u001f&{b\rץ'Ov\u00168OE-u<{\u001e_M.y6\\M#gsʛ>a#y\u001e\b$ya+tRB&\u0014+Zv;ְ?Y_1؋ZXSk]n\u00150~5x\u001eL#G\"xe\u00131&\u0017ID&\u0016X%/\u000b`֍%'or*RqI>YcwxvgPWN_+t0e'\f\u001f^2Y5@<;̇3E8_uSw+Wly>6\u0013w93,ˈb]+nU\\\u000bUIˠ/{[^#Wvżn=|\u0017O+=&\u001e?^N:&\u001ekz\u0018~J\u0016i!B1G_H]E[\u0017Oe~c}n/nvSݎ#M'xJP*b*KrHqޖ3RRL*Vۓ\"UÕ≻Pۍ[oj?^>7iʿ|7'^\u001cX}[{\u001cڴ\u001dI\t\u0017w\u00057}o}qH\u000fzp͝?T'aʓ{3\u0015yyl4\"O)=<=5&gsyx>>i<ޔs@|`}hDk6uk{p[bD^\u001eqT?Vkh\\_d7Rب(5y,*[o\t{IM[G.)^)=ĕAf/>BnlelPvvތNа\u001d\u001e9ܞ<F9>߅b3^~\r'Y_v\u000eZj2&g \u0006\u000bZ\u0019a4\\\u001e\u000e_]~\u001a5C/\u0006\u000b66\"\tC\u0015bm2Y/\u001c\u001f[e붩\r*h:}іWD~if\u0015jQ$Yvz-j7\"pd‶e\\G˻&\u0019K,,UYN\u001bԑ\"PU]L\u00177.[Ƶ8\u001d)lӥ2\u0002̤!\t*@n`]سpk&#uOh\u000fKŇ\u0016#nhkk<\u0019-ܷS>Ǧj%f:$\u000f\nJ9o]SJd\u0015\u0003\u0005\u0019%Z\u000fabP_\u001c}\u0000T\u0002\u0015\u0002LdV#D3\u001bepgr\u001dȌ]=s\u0003rםT@%9\u0015;L,X\u001fƫ<u\nYf\u0012]1+Ѝ`ͺeZ\u0012Ԛ̂hNSf@7IVyoҩ\u0016-\u0015o`cC\u0003`@dCYA2\u0007\r\u0015J\u00142\u001dշm\u001a+\"f]NtYf\u001dpS}\u0004\u001c\n\u0002+եV{JYj\u0011tކƓ\u00023eKmPv֭\r+X\u00110+b2%\u0012ݥڣyph}\u001dʹ`vv\u0001j\r&xi~\u0005S2u>\u0005ǭ\u000eNW\u0003<kc:c$y)ek[_C\bW\\1{\u0012ZZ);`F}mp\u0003Ѳ\u000e5p%:\u000e(<][YxH\u0013Q{|\u0000v\u0015\u0007pHnN?E0jX\u001b\b\u0013B깇0\u0005\f7.!A>\u0012\u0013>i\u0000\u000e\u000e6XI1\u0001\u0018\\\bNm 8-*D&[W\u0003Y\u0015NjQP=t0v2tp۫\u0005\r`Y3L2Uc\\SW\u0010K\u0000a\u0012n4{g|Xzˢ\rl\u0003X\fWp4\fa\u001byԟ>\"c\u0015\u001cO149\u0010~M2t?$aI\u001f\bn`2bf.'\u0016hk5A2:\fW\u000f\u0010?-g'=\u0015{\u0003coZf֜\fy&zh?KkniD7G}?4/d<\"\u001c\u0013yoh2i=fz\u0000j,n\u001al5)\u0010U\u001bd\u000e&bzEji1{2H\u0011\u0014`o,LoW;~IZ\u0007`(kXOg\nvn$\u0005[[6\u000b\thQl\\.Ǎ,8[Q7\u0007$AF\n`-&Y*<UyTԺ K\u0018m|Ώq\r+\u0004f\u0019*fi:h7ePTme&?`\u000777\u0019(uYڎ\u001dzk\u001dƮfc\u001b\u00079r~FjΚc}\u0005\u00126\u001d`y36\u001dk\u001bLkHTOx\bx4L\u0002\u0013Y\n'C\u0012g7ZVH<-\u000bG_v:/Yg!\u0010N3IgdL[nWW\u000fΎۋ`?f\"y$GN1yAsfdO\u001dGO_h?EgWL\u0011=Yzysq9E`\u0002k\u0003<1v\u000fy9=\u000487\u0003\u000ew}\u0011H'Z}\u001d9maر(S\bVw\u00035;y,8%Eڝi\u001cX\"~\u001d\u0013]^#Ǜ3٤s\u001f𹫦\u0003(\u0012/1r~B\u001dk< \u001f\u0001HZ\u001c9wj7D{=\r\u001c\u0017\ntBYx#K{٬Wϗj*d\nirي\u000f\u001c\u000f\u0013=G\u000e\u001c,\u001a\u0012OgB'frV\u0005.ET뤗\ba|;W\u00038T{psD\u0013ٰ\f%(#bb\u000bW['LL\u001cС<\n5ft\u001e!fg{>\u0019iaP\u0004BZ!E\u001cTÖo_$\u001d~k+xzS\u001bc,\u001dDR~&y9کO[/d$\bC{8AB%\u0002+\u0004hY\t\u000b)\u001cy[WBj\\\t\u000f{3VIG^w\u001dǅ\\t\nx1.>\u001f'#G|\u0010Z\u000fWWswB:^{Mޅi{\u0013m/\r\u0004b5^\u001fëX!J'=+6:UއџO7jCPD\u0016\\\u0017]۠\u000e@MzSeBb~H=\u001c\u001d-|OQ@-N\u0002wxX~\u001cu\u001a\u0007V\u001f\bsλ\u0005\u0012H\\&zI\u0013\t&oiw*\u0018\u0007s\u0012V\u0011Y'(Jx\u0012]OrSA\u0000Ǩaʩ\u0016rh\u0014j脮=N75\u0013O6Ǡx1mˤ\u0002l6$r_J\u001c9b|\u0007\u001a&\"'\u0019\\^lФ\u0018pmΙ\u0017Ӟ4\u001f\u0018_$\u00168r\u0005jө$/ƅ@J\u0014N\tdm⍿[`T\u001d*ݻchʷl`򏯙3 >J\u000b=;/U\u0007\u0017\njTBW\u0000¦;To\u0006׭n\u001dz9gTy\u001cH@h!\u0000(K*\u001c't8C\r\u001bi\u0002ĠiH>j+K\u00158=\u0017;R.N6h증Ӌcvоʱh\"\u0011\"oU\u00029g~Xʋ\nJ\n\u001e\u0017yTG(y!1\u0012ū?F+0\u0005Zqn_g2zI\rb,Y*^;\t;EV[\u000766IC\u0012zOE\u0013\u0015\u0012=,dl@\u0019&70 qo%5lT\u00109\nPn\u0016\u0011)O\u001a#\"P&(o\u0002ͅ5@{/ڗB\u0018\nݞßǘ\u0004%S1|c J\u0007׵KlEY>PC\u00031\fK(5\u0013\u000b\u0010Պ?Ft:C-zTp\u000eBaG_\u000e\u0019\u0012\u0003ޢu\u0011\u0002e\u0007ca\u0007kث\u0015l\u0013|@(fRJ(g,lJT\u001b>k\u0004\\RlPGlb\u001d\u001b}\u0001Tw\u0011\"/Z\u001fUvآZ\u001c(a&*@b5\u0014\u0000#\u0012Po%BH~vmcˁ_QŰ.6$CuPH2\b\u0005\u0017\u0010vC).\u000b6~Xz5JG]J\u0005<6c4\u0018rl\u0004KOVo\u0010\u00184N$\u0007sI5m'{y\u000fj\f\u0004?/\u000egnF\u0019\u0003\u001ah\u0013𜫮_1yZٸhG..J\u000fɫCW%V\u001a%\u000b˴A6\u001f\fu(>\u0012;\\Sp-=\u001ay\u001e!\bNRM%\u0014\u0017L\u00107F'xS\u0017+\n=˅\"=I\u0005Cft\" 4V\u001em=jjq(_z!^)?\u0004=?\u0019\u001c\u0010h^ߒC\u000355d^}_\bE\u001a\u0004\u0017\u0018:tw\u0019'nN[\u0005\tx)y\u0015\u0017\\\u0000ӈD\u001f\u001be\u0016MdE\bG`2.Wd\u0002\t?6\u0010\\%V\u0002v\u0007TsȮBgD\u0010K\u0001\u0007BxGRHf\u000e\u0005&I&3\u0013[C}z\u001dAJإjL<vn\u000bL*kjū\u0000'A?з'O\u0013@U\u001f t7\b\u001f}\u0010\u0014R@N00x3Ò٩p@0]B<\u001dN=\u0005g=\u001a-@*\u0019<T\u001f\u001e%\u0014Es?\u0010];b7*;xQr 3+(\rȚTnѐ\u001cKLG-w\u0013\u0000\u001bFw\t-'\u000bE[);KL>\n,?T`/Fb?:]^\u001e?\u0007\u00065\u0002TJ_=.\u001b/h<=0~;svJ`\\\u0004Sc\u001ccMEԒK]k0eX@|&*_z\rB(8n'zY#\u000fF\u0007Dfo`ueLj@В\u001ads_Ǯ:gW׭dk(us N?\u000bj\u0002ck$&\u0002Y?QޜFb(>\bhh<\"nǑCx}+=^_\u001c|\u001a\u0016;к±\u0003(!gtRCo݇!\u001auS\u0012kIyv%0RR/+&pڞTG=8|\u0003&\u0006Gdv{ջ`[J\u0015_\u001aőy\u0016}55*A9\u000b%9/:\u001b%R\u0004slTq\u001eӯv}\r\u000fcq\u0013f)ē8\u0013}\\\u0000f)Wh\u001b\u001b5\u0012\u001eK9\u0018U\u0010J0eҾ\fm>nc׬kkxߑyP+^7O\u000b\u001bEN\u0017ON;@fXO?gs\u000b˽\u001af3%Ȝ\u000bwuz\u001b\bnG\t\u00069a\u000e 69r\t\u00101\b|^\tY\"\u001c\u0013\rݚlƉ\u0007\nQ$;6!\u001c\u0017d¸9\u0010\u001d+0\u000bӀ@\u001cϭd[~\u000b\u001esU\u0001r\u001f\u001bw\u000b^:,%B\u001e:\u001a$r&f\f\"cJLKm|Mof`UUa{aO'bϝt\")]\u001c٘\u001c̋ļj%[Os\u00036IMD%\u0018\u0015pQ{hOU7opf\u001f\"b\u0002rXP\u0019o;ޝj0\u001d\u0011.\u0017`\u0015 [\r9\b(M,#``\u001a˛Nj3㢰H^fI#\n{\u001d\u001fa!oˍ\rW\u0001=S\rzsV\t%ە)\u0004{T{h-H[S<\u001eO&\f+xpn.h+\u0017t\u000eDLĪ.VG1|D\u001c\n\u0018`ՇٲӴ;۪ap:._0TXV\u0001>z\u001e+ʼ\nt0\u001f\rG&v,n\u0010j\fTf\u0007!r˥b|\u0006\u0015\u0005\r\u0014\"MsT\u001f\u0001@cB,WL,0\u00068vC\u0001_IpDuN>\u0016,ii=HR^\u001d]LSs\u0010(F1\u001b`7*ռC/\u001fC'\u000eġ].\u001f.\r\u0001\u001c\u001fc\u0012Jh\u0013\u0002N.\u0005I\u001d.{jLA/<T|0m\u0004+\u001e3FA]F\u000f^kQP?\u0006u\u0005g%8YCJ</|tOXbm/\u00043մ\t\u0010XTt6>.J9\u0012(N'\u00172\u0000SA2\u0000eOqZK\n.\u001f\u0010%\\$\u000fbxu\fA3G%Z4<H{>fcr\"NoĠ\"\u0007y\u001cA[b7{PC=IXshBAH\u0000\u001d)\f]'\u001529N}\u0007@5A\u000egʉs\b}.y#\u001fCEN>o*r\u0011\u001a$\u0010pS\u0000_oL\u0017tSɐrb0͑C2t:\u0001&//*W A/\u0003\u0001y`\u001a\u0003H8\u001f\u001d\u0019\u0010L5\u0017W\rp\b\r\u0002s4R\\\u0012UI<O\\$-\u001bFXh}I^]mjT\u0016NG1&h>$V\u001a5%\\<w%\u000bloO\u0014>k_|\u0010+ё\u0003J&Β\u001d^\u0010 \n~ƍKTMNL\u000b*NYT%\u0001@9![0x*yj5+'L[\u000f\u0002t%sp7qW<Kc~{^tɱ($6\n\u0015\fq)\u0001\\;$\u0014ߺcFgmk-0Cb\u0003\rk,֚\u0000\u0002;@,V_U\u001e*beE;\u001f}Aχ%R\u0006&jBbTzbȉ\u0012b]J\u000b5xLg=g\u000fBdu\u0010>8\u0002g*ތ\u0015.pst`PqP\u001eO;DԻ#ǽ]\u0016\u0014Nޤp[x|4L.g~:N5\u0005\u000f\u001f{<=qa$\u0001O\u001fR{\u0013jl0\u0017'VIμU\fbc7\u0004Waz\u001d޲\u0015\u0019K|\rl`s`o\u0012h+\u000e\u0012\rO17O*.\u0014\u001fcCR30SJ_i5\u000f8\\HZϐ<$12Ks.'ۻ?6:\u0016og\u0006)yimS+__Nprwۀ(iE\u0004VӴ%Ձ\u00077\u0003\u0000z|\"^~>\u0019\u0007\u0019R\u00054u\u001c˷cS\u0018\u00190|%V6nҸնO\u0010\u001fl\u0019O-ƒGb\u0016\u0011\u000e\u0016WmKreR\u001d\u0018t;SҊa7\u000b{d+Xt,t^~u\u0013\td^#בzqUO?\u0010lk^tA݌\nt\u0005ekhNC\u0014K\u0007_\u0019e\ffkY%WTOO\u0003α\u001f7,\u0018?܄P㽃ѯOOQ0v\u000298rF\u001f\u000e܎7\t@PFs1֍\u001d,D\u000eX5No\u001bxhĚq>WMA\fk`\u00154nvr\u001f>?]K\u001dZ4Ed[0vo/گY\t)ޟ\u0010}\rm*\u0003\u001att#pȦ9m׆Qve\u001b*5z\u0007\u001cyo@*P\rzݒEUo\u0013r7i6\u0001,gq\u0014*[w\u0003oTwEgއ쵛\b>W*Ű1#M\u000f8ֹ}$aW<D\u001bF6\t\"Q'\u0007<Vv\u001dزOlV]\"\r\u0012]\u0006ߡ]Ԣ\r>\u0016o\rމ\u0002ȇ\u0001JJe\"\u0010C0ZJ\u0017\u0006\u0002^eU,qL?׮23#'AgzmGl,H΄\u001b}L,\u0015\u0015\bhN7\u0003\f\u0016\u0000:\u0002-16T,=rT2\u0017'agf\u0017ˎd\u0019\u0015\bH\u0000\u0015̲\u0018G_U`sڛ\u001cƁi[|>\u001fVrn_э7>\u0016{Opл\u0006do*\u0014\b\r-ra<Z{ fO,IMm@lufɾ62^<ݎwO\u001cHF=u\u001eh'\u00111_\u0013}F\n\u0001yw/\u000bߜ\u000f7_){^Ǔm9ӿ8\u0015Y~e|g%k\u0017g@U:rX}~~n\u000f>Vl\u0000gٽ\t\r7cfy@.\u000bo\u00116. \f\u001f\u001a\u000e\u001bY}.^đc:5beJEp-\u001e?pJ>+Y\u0011\u0015*(3C]\u0016K\t\u000f1o֋\u0002wuFD8\tš\u0013Y\u001f\u0003`#\u0006\u00023+ɸ\"F`h&es\u000b<f\u0006Ty陛Mi ]Q!ӛ2;6zvCEz\u0014VT>' \u0016H\\\u0000ƥh\u0017\u0017k\u0002\u0006N(S/Cq\u0017\u000b\u0011zX\u0001\u0005\u00193{h\u000e\u00159I<^\u00016\u000e|=>}4͛\u0002[±X\\\u0001ҕZr\u0005\u0014\bV;Xl\u00177*c5\u0007\tD]F\f({]\u0016]QeO\u0016\u0001\n,HF1\r>rg\u000fr#\u0016+;m\u000bh}tT̀\u001e9n)\\\u0002Kn\u0002Ş]@/\u001ch枹D\u0000E\u001e[\u0003;]\u000e\f/|ZSnX<f@QpT*\\4%-=\u001du\f(\u001e.w\u0002u\u000bJ\u0000=rlW̍|Tk\u001f\u00018\u0000:se^u\u0007+G\u000e\u0002Kj_SO\u001aЇ\b,\u0002n!rs\f(\u001b\u0015\u0002\u0014\u001aX\u0002Tʧ^\u001aPAl\u000ep\u0015\f\u001b@q\u001ahW\u00024᮸\u001d@\u001f9-{v\u0000]˹̣x0kv\u0002(ס.Yl\u0000\u0005(*؜쪺@ks'Z}j\u0005G=@:[^)-\u0013hd\u0000PTOK3\u0007Z&^P@;N\u0017oXd4]#Pߖ\u0014&\u0000cS'-QU\u0003ڗ\u0004f\t؏Wq8%@ڻ/\b)N\u0014\u0002oKj%(%\u0000\u001am4u=@*Us߆*tPǯ0upCRi\u0004\u001aV\u000eKq\u00004 @TY(PSW\reEU\u000fm.g\u0004GV&1o\"PjU~\f{\u0001uiʧ[p㫕_f6e|`gmPίT*_ˣm\r^<߫[\n>Wzk\u000e:7\u001d\u0007w-,﻿E1Mw׮ƅ_s?\u001b̽Nފ\u001fMAbqxWɽnr\u0007ѷs]X}ݦ؋]\n=\u00121Q檁gqv=\u0014\u000b\u001f';8'ם_N_׿N(f=GƦ2Tru\u0011)-P\u0016%E&\u0004S~)z)z<_F\u0007\u0017gdNC],'}\u0014:\u0017+SD)ZEoЀݵb\u0000\u001e5<0\u0014hҚ\u0018Y1^\u0018\u0018z\u001a.hrHT+9F,F.\u0016hFa3O@I\u0003`?r`\u0002\u0006i'Ppm'n\u0018q:Xt::\b4l\u0018rc#y<c\u0000r:+\u0010Y\u0004ˮ\u0001\u000f́r@mzp\u001f[\u0007K\u001d@!\u001e\u0004m\u0007ם@/̱\u0001\u0014\\\u0003)껀V@UoW@ѧXgc_\nh,9;J\t\u00167Il9M[\u0012gk/0ĩu3W.BUZ&\"g\u0012\"Ÿ́Wğ\"1'\u0011&\r^rJ+i\u0002\u001e_|<Vq_I\u001b\b\r\u0004ot\u0010\u0001N\u0006O9ы\u0013(=w8V\"\u0013wy̤\u0015cN\t\u0003\u000fZ^\u001c\u000fu\u0003ؗe\u0007I~X\u0012Ye{\u0010HʡfHENoi?y|~-aV0\u0010ܝOtO.7\u0007\u0005{\u001e^V=4\u001fl\\6_\u001bAϚ11\u001f:4~Zl\u0004)]~\u000bv3\u0003k5v\u0010,cF#Ƿri\u0000٠b\u0018ɡډA\rՓzxUOjzt_\u001bG?]#\u00125\u0002\u0017N)ۦ]\n鬡&6\u000b\u0017I;\u0000\"/)y\u00112WܦRL\u0016umK*?M~OT\u00198\f\u0010YזR*sF߄SOF\u000ea8g\u0018\u00134/)M0\u001bdYYi5wnnm!jRǼ|kM\u001d9v7!wu[Ʒ.wMK>5\u0019\rf_pt \u0019Yc\u000b\u0001W\u0003P\u0007Ԑ\u000e\\\u000b\u001emh\u000b\u00061eغ-d;|\u0015\f)\rI3/lM~\f퍿\u001dc\\b}i0\u001d00 03Kd{lmbyfW\u00173EJ%6\u0007\u000eN[Y(-\u0015'ƃ~SP/;sgTbU\u0003?\u0019C?Xh?^G\u0018#)F81?b쟣f5Fo\u0007\u000b媧G%GxLe9\u001c]zl~n=6z$gr~~25g871SR꯷\u0007\n}yD\u000fBd-CSTL\u0010Dp7\u00101-\u0001\r\u00101H6IlX3&&ꂤ\u000f`\u0015-5N,3Z<w' \t\u0003ϳP^T}\u0018Ӵ\u0006P=36\u000fu\u0001  yƛûQک\u0000\n\u0000|O̲\u0002<\u001f?Zɫ\u000e$~j7v/%z?j(C|Ǝ\u001cxJ+\u0013;\u0019\u000e$A\"n\f kblC/Jeg\u0004|\u0007Q\u0019\u0019\u0015\u0015dPq;lu\f?\f=tzw{u$TRUzet>9x,\u001e|\tjlٛP͡꒥;\u0002l.Y:4[ކ\u0019C3I%Au[7X|4\u001f)=\rXt/\u001ds\u0002~Pā1\u001b\u0001\u001f\b_\u0003m\u0018\u001dǆ\nL\u0006)#1ҘvlaJvz5\u0007yq^T#NLq\u001b4y\u0014wgQ\u0001-\u0012\u000f_^Gh\u000f\u0014]\u001d\u0019t%\"Ώ}O瘧\u0001Y<\u0002\bE\u001eN0Mas\u0018͋\u0002\u0000l)\"\u0002qel\u001b\u001dk%ز0Xe8ϸR\u0017\u0012;\u001eW\u0004᷄\u0018<_vTu.\"/\u0002VHl{['/<\u0006),\u0006<.6=&\u001dkL%\u0014\u0011#(4*Zn\u000f;R=\u001d3bS52(9nq\u0018YM,×\u001c\nĤ`\u001b\u0013N\u001b5dńJʼ\u0006(W]}5\u001axFh\u001asaI@ٰF\u001a\u001anؒ*k4@\fEՐF\u0003?}[J\u001ff>\u00004\u001abh5HǵF-%\u000b\u001d\u001a\rR4$C/gF\u001cn\u000b'wƁC7NR<Ɠv%\u0010\u0015̹j\u000f~Z\u0016\u0001P\u0007(\u001a\\RF|YBb9Q5eĹyw>\b\nj]\u0004AҲS\t\tq\u0002A :BGj\u0013\b/$\u0012sJǬݏ}7\u0004\\'>ǲ~O|\rFK\u0013nM\u0011\u0012\rGO^_A`({]\f\u0018þ'h{!7\u0017Nپg텬(\u000f)\u0002!/4\u001ein\u0017MGb4qvC2\u000fK\u0016CG]\u0014I${F2\u0010HǢ\u0001\u001a}b[l\"\u0002\r\t\b$[I\u0002 Q}[8p9\tټz\u001a\u0004!q]CJ)ljZe[B<̓q#%\u0011Z}5)ysv>%b\u0019\u0004m\u000byP#\u001fu<ͅLV\u0018Yp.Bɷ\u0018Ā\u0004\u0012\u0007kZ\u0011pK\u0015a\u001c\u000b\u000b*\u0016p\"%+]ڿi]]\"Eۜ=l\u000f`\b:\r1t|\u0004\u001d\u0011t\b_\u0019\u00003\u0005c\bP$\u0018\f\u001d\u001fAgC\u000bz\u0011t@[\u0006#hAo\u0018:>ΔE\u0003CGЙ#'\u000f\u0018:x\f%!پ_k9󱗴\bAmy\u0017s֥\u0006\u001fOfR)#v1\u000f&\u0019u\u0013loSyt3\u0011\u00132FoO-\u0002\u0011\u0003]L1>?)\u000f\u000b\u00193CΉ\u000fm+\u0017Ltg\b3sŕ\u001779L]l[@\nq{hZT+\u0005]+\u0014=HEcs!\u00071\u0018@\u0000J0PU2\b\u000b\u0010\u000f\tݜ<\u0002^\bv\u001a\\_1\u0003\u0018B[\u001b39\u0005+Z&#br:\u000bK\u001d{QD!!G3\u001cgu\u0001I\f\u0010qhy{,\u0018s\u0002o$Z\u001d\u000ebv1g\u0011gjE8\u0003\u0005.ݘ\u00004͜hɁw\u0001.]Zcvɘ:1q|f\u000f&j\u0006\u001eL.]X>_|L\f-]\u0010߂ EO \u0017S\u0002\u0018\u00171cP{Y4AZ\u001c\u000f5g\u0007w#]\u00165\u0002MG\f\u0019 ᄖ\u0010\u0016;ԻDH\u0012}\u0019㠝usTa?i\u0004\u000bca,\u0002,\u0002L3aa\u000e\u0000\u001b4CjN\u001c٤K\u0018\u00049˾3;p(\u0005%缽b\u0012\u001d r\u0010#)?\u0007Ȋbv$\u001bdg\u0018+\u0001~\u00003k\u001d\u0001>\u0017ksw\"b\u0015\u000f\u001es%\u0007\u0002\u0012o0HF@\";ސqN]2yzNpdS\u0007<2S#[|d\u001eCW\u001e\u0019i*kկ8Yxs \u001fm.\u00049U9qhƹзG\u0006Ш\u0007w)\u001dzX\u0010\u0010#yf\f;'\u0014\\sB\u0011V!\u001f\n\u0003R=]Xq;C6\fl5#L\u0006\"uj\u001e7Lߑg104V\u001e(\nYX(u>a8<\\-ij]8OI1B\u0010\u0012\\\fțJ\u0016L[Q\u0017Dp\u000e\u0005ñ$+\".h<5\u0005\u000fGPH`p~2Tp<Djpx8x\u000b\u0002\tÙ%_<~ T\u001b\u001e\u0003\u001f0\u001e~\u0012wLsF\u000bu\u001a|DZlK\b>\u000b*'g\u001cշ\u0005j(ќP|^k\u0011X!q:>0\u0005\u0011\f9Eu&!ܦ>y0!xf\u0016BZ\u0016\u0018i`8\rGA&#R\u001ax6./E\b^1\u001d7@H\u0016\u000b{\u0005\u0011311Vؕu\u0013\u0005/\u001d\\\t\f!^]\u0007Sr0\u0013z\u0013\b\"U^uDE\u001c*Zύ>\u0010j^\u0010CV\u0002\u001bp\u001d\u0010\": Du@@\u0010״k\u0013\u0000~<akM\t\u000b$#\u001b\"k!\u0016Dmt\u0018XPP8\u000fwA{+Ă!'\u0014z\f\u001c\nG*\u0004\u000f{4t\u0019%Tl\u001bMp#<6`\u000eJjy\u0001\u0002*<\u0001k\u001a@lF$\u0014K\u00120p'\u0010`\u0002>nz6\u0007%bE3\"\u001a\u000bkQ:\u0003گ2\r'gp\u0019N\u001eJ\u00133oOp%g7|\u001cS\r\u000f,YYקsap>\r3#3RjM\bRqg[\u001brq4\u0007aR^\u0018\u0016z[\u0016톃\u0010v]0\u001bݐ\u000fϬF_\b;+\u001a~A4j\u0001\rh\u0005~ֿZ\u0011v(`6\u001ba'*/F\u001eq\u0011v<vh^o\u001c+exvF{0siV\u0015yIx\u001e}͇đbq?q|;^\b:۳Z\b'fҰdWIR3[\u0018ӵU4\"\u0017]\\=f\u00131*Jr4뗈%\u0005TIF#\u000b/\"χu\u0012#\u0017%_-\"ri\u001a\u0017\fn:VT\fk\rw)k#{f@*l:Qd44\u000b\u0010Mg!;tsv\b\u000eMGsxjq\u0006)7OD\u0012@9t4,\u001d\u001bh:q\u001f4\u001d\u0010\u001a(zA4k\u001d$vn6A\bfj\u0016{aX\u0011h:TM?\u001646y?(4\u001d\rKg&FѰtH\u0004\u001f@t\u000eR@h:\u001a)f3Fʹ[4]`\u001cs\tp\u001bt4,0J\u0018MGӋt4,]ȱ[4\u001d\u001b3\u0012$\"N\u0001\u001cn\r\bMG!݂\r\fM'xD\u0003DѤ{\u0007\u0011(]*!N6gT*\u0000x&)\tО](\u001c&i\u0005:X\u0017\u001e\f\u001eu^\u001dúpW'ʧ(KD,IOΆ\u0005u\tW߄\u0014\u000e]U\u0001N{ui0\u0013\u0014^,\u0000.i\u001a\u0006tJX\tj\u0018ReOD\u000b\bbn0eT\u000bݹ1ɩe\u001cꌰ\u001dZНGУ!ݔ'\u001b|p;\u001eE2w!4\u0014e\\8o|'{`7\u0018gl'KEnW\u0012\u0000ZMnj\\숙\u0002fhqN\u000b k\r|\u001a~\u001a\u001aXN\u0004\u0001J;b\u001dJ\"C6?\u0019'\u001a\r2\u0016Zl@ԹN?\n0\u001b\n\u0010\u000b*\u001bK0\u001b\u000f\u0018\rEjC\n \u001f\r'|ӑP#\u0007m)H'7:qd\u0002]TFH[\n\u0002k}\u0019ୀ $$8\u0014Tfefi^^6\u0014:9A\u000bdЯb&[\u0001O}e\u001b2\u0005lo\u000ecvʺ1\u0013\u0013*-+VpNc\u0015Zd3х9\u0005\u0011ET\u0002%\u0000q\tdew :Z\u001e\fMk\r\b'(\u0018* \u00121u8\bS;1|\nwV원丮p\u001awWᎋ|.&*\u0010[\u001d\u0004\u001d'<h<x\"R\u001e[\fWj\u0018\n\u0015<j\u000eO\u0002c81ɋw`5T-ZT\u00041\u001d\u0000\u0016Py\\\\a:=68\u001fX\u000bpso؁h5\u0006g\b3\u0018g~PD@\fnE@L]\u001a\u00136]\u00004Ys=$xp\u001f΄Lc`Ε`&.Ε\fw\u0005bR[vE))\u0015jؓaV\u000b\u000e:!\\[kO%\"6꼰1֬\rOWS\\\u0001b\u000b\u0001L\u0019\u0010+剖{\u0000+\u0005RQC\u0006q5\fv^۝SsHT;\u0012\u0002M\u0019 \"\u001a\\\u0013{ET\u001d\r\u000bRQR7\u000fsw@NAV8.V>J$?eSr3a='q34Wq!lTjՋ'FC\u0011\\n\u001c`x\u000fF\u0002v{6 <WV\u0018OqyǂqpsQ\u001d\u00068P=\u0016\fؽNLY <6\u000fU2bV}\u00058,E>WOFGF\u0011\u001e1XƪH_\u000fט֊=\u0016{SQ\u0002m\u001eeVhQ\u0006\\\b\u0017'kc\u0011'afGl3;5\u0005YN䜲Y*\u001aXӍ/K<;Ql2e!VV1\u0013X1F\u000bt(\u000f\u001b*i7\u001c\u0012LE=IO\u00044j&$OQ\r¨4wU\u001c\u0000X\tb=m\u0013\u00107FʦL\u0018+Щ{ӻdRPB\u0015W\u001bkQVV3\u0005y\u00031\u000fRV\u0007\u001flӕs_\u0019L\u001akW\u0005ά\u000eCe#\u001f\u001b~ZZݾHpױ\u001eݳLhK1\u0014Kh{%`LPW6BRz\u0016\u000f#Z[@i+eIF4h\f\nE燐;v֜;G@v\u0015>Y]Nig\u000e%\t\u0004/mڭ\u000b\u0016?(̮+tG\u0004|lVz\u0007\u001f\u0001?b\u001ao=\u000fN\\\u001c65\u0001k)w\u0002r}a(\u0001Cƅ\fb\"Isec_\u0010E݁ʮ/؀_\u001dǜ<8\u0010t3HU\u0005ñ1SG\u0017Lm\u001f2PY$/Q\u0018@[5X$+=\u0000\u0000\u001c0\nnQ\u0018P\u000f\nP\u0014\u0003\u0018\u0002\u0014'ڑ=\u0000E13;\u0014 XdF(@7Q\t\u0014V\u0001)g^\u000e-EL'|T/\\E\u0007S\u000fо0\u001fM\u0003/\u0005Z\u0019\t(_ +\u001dY\u001buc;8\r廮\u001f_\u0000Hr'~7~\u0002\u001bY׏\u0015^y\u001bR׏.c+W\u0013YB)ܪ~[=\n\"[QEr\u0005\u0004DbUsW]υG]?\u000bVgp]}~48s.ۺ~N+9~.\u0010Z\u0013'J\u000bߢWsƼ\u00118[V\u0017D]?>]XOsB㾮\u001ffϵV׏.ZU?gܫX]?>+H~⭮\u001bTZP\u0007kU?m鲮\u001f\u0017ǅI&\tD/:[<\\\u000bg]?\n-l|Wò￮\u001fW\u0010\u0004S׏qU?.bE]?~<sE཮\u001fAm\u001e⚼z|>Đ\u0002\rz]?_@]?w7x?P\u001ag]?\u001dE\u0005WQ4\u001fA\u0001W\u000b\u001e\u0013\nW\u001e?oQ_]?\n\u001d*RO\f\fO{\u0007zI1vn\u001fKǯGD}\u001f⾮\u001f\u000fcb>0OlL׺~.oE\rC\u001f\u0013+겮\u001feb\tU\u00100HV:\u0003b-~4,>z\u0014]sF\u0006Q׏\u001f\\ SOOjU?Vۺ~\u0015AxGE_W\u00107W6\u001b\u000bAhKkWvoy]N=[-Kpa=F>Mb\u000fM6=\u0018+f\u0005q-,vmpr\u0016طN9\u001dX6ab2\u001c7fm^\u000fbȤ\u000fGR+8\u000b+Ջgm`>-*5MsRܕZ\u001dZKRV<KǉyF،\u0016N]yz7+HWuzi_?8\u00174<HOyDzzC|tt6߻/\u001b\u0007euq;_grREv~֊q\u001eQJQt|vusY[̲\r%?\u0015}W/\u000fiv5.&u `(\u0012Rw\u000fd\u000b}6r~|}ؓg%̟J@v稊`rk+]\u0005\u0018Y\u001d`\u001bq?s\u001eSZ-}:_\u0010TGl\u001aU\\ŘfOv6ބ,\u0006;\u0012C|j\bYEQ\u0000ڭ/4N$[KX\u001bgXz\n!MXR4n<@`;XH\u0002;gh\r-;}-\u001fȲ\u0015\u001c\u001c\u0013]k\u0018=\u00022=(@c\u001dj\u0018p~\\KSp7_&.t'XZ~Bo\u0010,I`/رSkJd׌d߁\\MQV|TaF7WYv7\u0019)I M>?\u001f\u001eJc\u0007{Ӽi\u0006[\u0014TN4Mv#E0Zolk?\u001cd 82\u0001xẘ\u0003\rg\t~8N/\f&B\u0011\u0010mi\u000b;\u0001g\\G\u0006*2\\1e >'3I\u0016^-Byk\u000fM+_\u000b6=ȁL&kk[kh,kI@K\u000eiGGMz?;ڨNV3\u0017T#{G\u0013\u0006}4)F/~\u0018*vk7:?xQ`T}Y[,1Js|WFy}#ʢNI\u001a2(\u0005Z\u001ay\u0007=O2O\u000fJrz\u001aO/yDBڏsD1\f0UV>=?\u0001S[S#~x\bX*\u001f\"X>h˹!Vl?keB@qTQix@?9\n좟\u001b}VAn\f|\u001aڧ\u0017x\u000f(s0şj),Zxmt^=n=\u001eG*hm\f%鰝,/ؗ\bl)\u0000V6t/ҭlA\u0019u\u0013\u00032\n沊.)SK\\'\r7m\u000fbH)\u0002ً!TT}e\u000338\u0007t̊AU7\\hK\u0013jK\b>3N\"܉c\u000f\u0004t?\f\u001dU{4Peб\u001dX[\u0007\"\u0010j\u00129@5\u000f>%R\u001dYf\u001f\u00036ޫ\"PN\u0012F\u0007`K5КA\u0013:i\u0019Z\u0015\bXxNcj\u001cc8u%2b\u0017+Y{=\u0001\u000bo\u000er5\u000f9+vw[\u0012r\"a=\u0016'uv\u0000$'\u001fa1)F5\u0013+\u001d-C\u0001\u000bXt{\u0003My6G\u0017N\\\u00197v&^\"}`=~'H\u0003\u001aY[i|G\u0012\fru'5\u0002\u001bՐD=K[\u001f؃u^\u0013p:מ]h\u00063xz=$s[[h%gp^\u001d5i\u0003vl׹m\r>67M`\u0015\u0006\u00041T)t\bY\u00079:~vn?M}! W:PkPa\u0001sXʞW70\u001178\u000fgY}p_2r\u0007D%ƽ!>Tg\u0003bv\u0006\u001d3d\u0002\u000fɄ\u0014q7G \u0015~X\u001a,@W\b\u0013tgNc\u0000עy}Dzn$\u0002L@U,_u\u0010o7\u0004\u0001\\(#\u000f-zHgB>1!f\u0003h5.VeBBkG\u0002FZ0#s{ԇj,%@@=I42iUTz\rh'D4QG%ш$$\u0004Y^-)6y\u0018_\u0006\\&IL\u001bc\u001fHV\"^\u000fdDbԓe3Yx]{GE>\u0018\u0001ƺu+]cѷ5&MU/IL\u0019\u00045f\u0004I6;VXu;g6vw**LŒ@br!5\u001bL6PDxQU\u000b[\rZ_[\u0012s/D*\u0014>V:;Î<eeD'><=D\u001c\u0000#8L\u0014bx}z)O[팓q݇\r}G(;\u0007;.g:a`3Uk:I~-Vȯ;NF~=owߟ{χ::Hق\u001cC52䰿\u001cʚ(\t?\u001d8ݾqH!wT\u000fk޾F\u0018Vl>Tԓxf\u001fieyI!o\u0000\u000f*>k~/\t@q\u0015L7ZM\u0000i\u0001_c'\u001a.a\"3f9X9\tlOk84IT!~P\u0004\bW=`\f0U\u000bW|֋=i/>kE!N|PCJ8d\u001d*;(d)s\u000e\u0016&֙F\u0000\u0002YUONo<@ Pe\u0005.v9ߜ\u0010\u001cbig8}\u0019Je-nV6s;g5wt\u00100\u001c\nȝnjN\f\u0013IP\u000eD)\u0014Ϻ:zaq>nߔ_.͛S\u0018/\u001fvՉ\u001f<tj+;%~F\fT\u001aPG^gP5t\u000f\u000fײ)FQo)c\u0002/\u0018K@+g47zF?\u0011MyT\u001e޵\u001f?5韂6\">J2J\"LU\u000fzt\tžpv\u0000\u001e\u001aVs\u001ejhn#~\u0002z\u000f\u0019\\CO=Zcg|5\u000f9k=^\r\u001arj\u001e_57WA\u001a?UH|k/-\u0016*\u0015K\u0015O|9_'+f(w ˽wk6\u001e_s\u001aO\u0016+ՕE\\\u001f?W\u0010жX\"7xn\u001cJv=-\rjVztz\u0003d.\b6RZ\u0017Xg_\u0007ؿX1Z\u000fv.\u001e\r:d%[;\u0012\u0012uS\u001c|\u0004{v\u0001>L#l\u0007\"N\u0005k\bP+F\u001aָl6nvul*k\u001fMwRk^:S\u0012G*$&'?JP\u000eASU\u0013#g(` XHR\u001eEb\tQXB[DOr\f\tH\f`+R\u0002[\u0011X\u0006\nX\u0000-\u0010B#a+˸DKoC}c?hW,:^\u000f\u0003hŇ\u0001!j>\u0000cև\u0001!j> y6 D\u0007L\u0014\u0018E\u0000Lf\u001f\u0006Ul@\u000fa@\u000f\u001f\u0003B| \u0019\u0006\u0004?E\u000b\u0011)ACǴ\b-\u0019`)E\u001bJy]\u00022\u0014[ޜ\u001f\u000f9\u0004Ӫ\u0013Z5NnxK\u000eT\u0005\u0005{zJI핫\u001f3ǐYZ]Z\u000e@[\u0010g{jі\u0017yD\u001b:ԉ\u0007g.t7h\u0000}p5\f\u0016\u000e4UoYDvg}\u0013԰YrMRj\u001a+Tf\u001fO,L2xAg(\u000fhu`\u0015fm\u0012X IúQ\u000fV\u001af\nOGPeTY\u0019G_fI[2Y\u001bd!Z6H*\u0005Do\u001bz\u00121NI18iZȚ\u0002\u000eiY\u001e9ݹ \b\u001cܥ2\u0001CjaGh{\u0010\u001a\u0019Q\u000e-!^uҤňQ\u0017\"4lt4\ti\u001e\u0001Xh\u0014X\u000eL|2\fK\u0002`\u0017\u0014X\u000e\u0002]R(jT\u0018\u000e]ޛCdvߢ[FLN_TO0~K&\b\u0016rO\u001a\u000b2\u00197n^\u001e4&dLU\u001f\u001e?-l\u0005ݻrF\u0015\u0006\u000b@+<&dBػK\u0002\u0018\u0014ՠB\u0000Ԣ\u0013:\\.\".C\u0001`NG%\u0019XI<}\u000emi\u001c\u0013;kN6]GT;\u001d2B9-%\u0000+a$\t\u0012;o\u0013s\u001fԒkU !u\u0007dS;}\u000e7\u0017)Q}\f~\u001a\u001b/ݴ?þ\u001a\u001b|QӌF\u0000ĉ\u001b0޼Xc\u001fK1\u00185\u0014\u0011#\u000fȅ92S|6\u0006oT7\u0014N\u000e\u001eL\bg\u00183l$\u0003>\u0017U}Y[sޑA\"\u001cz I<=\t\u0001lǉ\u0013\u000e}x#Y[rcW[>MӸӏUv2m]Bd'MDp\u0010m\"\u000fpg\r'ت\u0003H\b:%£iV=El\u000fd䆒ħe\u0002\u001aνoͩq1\u0005\u001a>Fc*ׯ\"\u0018[\u0000N\u0016Y|<\u001e1ӟqB\r\b t\u0011\u0010@_4-\n{Յv>96\u0014J\"37F`q\u001bZ#M*7\u001d퇃,\n\u0013\u0011\fCu3\u001f>p+lG0\u000f\fwi}\u001c\u001f>P+\u001cG0\u000fB\u0001~\u0004\u0003\bE``\u001f\b\u001f\u001f\u0001ϟF9.~\u0011Uu^9zC[b#\u0001\u001eXSnzj)\f.\fq+\u001f:)S\b\n`;\b\f\u000bo)͠+n`\u0006\u001ae\u0000;\u0012\u0011 @\u0019\u0019PÔG=Pz\u001e8R\u0010\u001e\u001b=\u001aICԺ栳Oz2f8\u0005O<c\u0019\u0010A4\u0016`\u001fE[CmOtB@\u001e9y!cH\u0004<\u0018/SBaX\u001fOg!y\u0005'࿥ʊWB\u0001|)ݧP\f\"W\fEٽby=\u0019RJu\u0005\u0010J\ftI\u001aOq\u0018\u0015\u001d+'ul۸z?}W.W\u001a\u0017\u0017\u000faMWJIRr$I\nx\"rR(\u000bBY)'T\u0017*\\N\u0017\u0000+2R\u0001W\u0015*T,;\u0005\u0002T̗$Г>\u000e/ֿC\u000fx\u0015YZ9^V^`Cri%]*\u0017WBJ?vG%W\u0006\u001f\u000bG1\u001d{z>~^&J7y}~m4\u001dWs<5\u001ac\u001dLcB7T6gߐj2W??>WԄoee\u0002zx>\u001eQz\b\u0004j<\u001b)J`s0y_>ϖhp\u0005{..ˌ\u000euoj\u001b\u0012ӈ\u0015磗=#\u001dRMEW/rn\u0006,X9nMM7]2`&ߧkNլOC&\u0014r>W\u0017R\u0005h)\\ɕ2|\u0001R`\u000b@p>C\u0017Xi\u0015d\u0005\u00044sO.\u0002\t4mTJy\u0005\u0002У%Yʗ\u0014Y*VrIY*s|)\u000fm\u000e[\u0001|NΕ@\u0015I\u0011x\u001f.\u0016S+r,\n\\QQ*+\u0005E@\u000bR\u0005\f)\u0007_\u0001h\u0014TV%+ϡdJ\u0015\u0001+h/M,P*\nY콡\u0002\u0006\u001c<\u0007ɕ\\\u0004zi\u0000#Ӵ\u0007b{\u0005\f\u0010;\u001d;[ms跋>\u0007Y7\u0003e+\u0015\u0001%04Jr\u0019`_\u0010\fR%i\u0005RĮ@s$*\b2Pզ}yצS;}\u000730-\bj\u0017JYwed!/e\n@\n\u0014E.W5m40Ms\u0015)ye_W\n\u0016hmu\u0018Pm/)L\u0005\nTK+(u\u0001\u000be\u0005;l\u0019\u000f\to\"\u0017Ɏ\u0016dE@\u0017+4\u0003R\bNn`k\u000e\u001c싺,\u001fh2\nF򊵇4,|!\u0007*˒\\eX\u00185|\u0005_֧4C\u0019O`':~\u0017+Rl~=\u000b\u000e\u0006i!)\u0015+ly) SjeڷaPLRd\u000b\u0012OQoGl\u001crf4Sxci`%])\u0002Qd^{~^~i+\rlg\u0006\u0016+\u001e\\ɕ-[\u0007E\u0015l\u0016/\u0001KS$\u001fUmg!E|dpS\u0014f\u0019+綁Z۷3ș90K\u0006_1\u000fl7b)\u001dl=Rް#)/Yϣs,e\u0014kes#\b>\tXrp\u0003[9E\u001b%S[%\u0001?\r~n\u00152J+@ )\u001dDk<˶Mފ\u0015J\u0007/Yfk\u0011g?CO\u0017e놏۬\u0001Fy9dq@ٚ9\u001d8ۭ%M[\u000f\u001dmcEy_pݺ\u001b}\u001fўk[]\bs\t$'N;\u0019k\r(/\u0018`\u000b\u0015n :\u0004Pc:\u001dDNG\u001du>h2#\u001dO/+|=\u001b߾\u0005?^D'\u0003\u001a\rendstream\rendobj\r6 0 obj\r[5 0 R]\rendobj\r23 0 obj\r<</CreationDate(D:20180502084744-04'00')/Creator(Adobe Illustrator CC 22.0 \\(Macintosh\\))/CreatorVersion(21.0.0)/ModDate(D:20180502084744-04'00')/Producer(Adobe PDF library 15.00)/Title(icon)>>\rendobj\rxref\r0 24\r0000000000 65535 f\r\n0000000016 00000 n\r\n0000000144 00000 n\r\n0000040840 00000 n\r\n0000000000 00000 f\r\n0000042658 00000 n\r\n0000173795 00000 n\r\n0000040891 00000 n\r\n0000041280 00000 n\r\n0000045640 00000 n\r\n0000042957 00000 n\r\n0000042844 00000 n\r\n0000041680 00000 n\r\n0000042097 00000 n\r\n0000042145 00000 n\r\n0000042728 00000 n\r\n0000042759 00000 n\r\n0000042992 00000 n\r\n0000045713 00000 n\r\n0000045909 00000 n\r\n0000047199 00000 n\r\n0000053461 00000 n\r\n0000119049 00000 n\r\n0000173818 00000 n\r\ntrailer\r<</Size 24/Root 1 0 R/Info 23 0 R/ID[<844A614670014D9999E027DA02C8A3BF><786BA22E66854F3FBC5B52869C6F5349>]>>\rstartxref\r174028\r%%EOF\r"
  }
]