{
  "contractName": "Migrations",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "new_address",
          "type": "address"
        }
      ],
      "name": "upgrade",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "last_completed_migration",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "completed",
          "type": "uint256"
        }
      ],
      "name": "setCompleted",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a03199091161790556101e78061003b6000396000f3006060604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630900f0108114610066578063445df0ac146100875780638da5cb5b146100ac578063fdacd576146100db575b600080fd5b341561007157600080fd5b610085600160a060020a03600435166100f1565b005b341561009257600080fd5b61009a610186565b60405190815260200160405180910390f35b34156100b757600080fd5b6100bf61018c565b604051600160a060020a03909116815260200160405180910390f35b34156100e657600080fd5b61008560043561019b565b6000805433600160a060020a03908116911614156101825781905080600160a060020a031663fdacd5766001546040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401600060405180830381600087803b151561016d57600080fd5b6102c65a03f1151561017e57600080fd5b5050505b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a03908116911614156101b85760018190555b505600a165627a7a72305820a4cafe4fe74a900f50e97ef4b33db22a5f6bdab2e9212bb6efdccfb8f4e70e540029",
  "deployedBytecode": "0x6060604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630900f0108114610066578063445df0ac146100875780638da5cb5b146100ac578063fdacd576146100db575b600080fd5b341561007157600080fd5b610085600160a060020a03600435166100f1565b005b341561009257600080fd5b61009a610186565b60405190815260200160405180910390f35b34156100b757600080fd5b6100bf61018c565b604051600160a060020a03909116815260200160405180910390f35b34156100e657600080fd5b61008560043561019b565b6000805433600160a060020a03908116911614156101825781905080600160a060020a031663fdacd5766001546040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401600060405180830381600087803b151561016d57600080fd5b6102c65a03f1151561017e57600080fd5b5050505b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a03908116911614156101b85760018190555b505600a165627a7a72305820a4cafe4fe74a900f50e97ef4b33db22a5f6bdab2e9212bb6efdccfb8f4e70e540029",
  "sourceMap": "894:488:0:-;;;1046:58;;;;;;;;1081:5;:18;;-1:-1:-1;;;;;1089:10:0;1081:18;-1:-1:-1;;;;;;1081:18:0;;;;;;894:488;;;;;;",
  "deployedSourceMap": "894:488:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1215:165;;;;;;;;;;-1:-1:-1;;;;;1215:165:0;;;;;;;942:36;;;;;;;;;;;;;;;;;;;;;;;;;;;918:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;918:20:0;;;;;;;;;;;;;;1108:103;;;;;;;;;;;;;;1215:165;1277:19;1029:5;;1015:10;-1:-1:-1;;;;;1015:19:0;;;1029:5;;1015:19;1011:26;;;1310:11;1277:45;;1328:8;-1:-1:-1;;;;;1328:21:0;;1350:24;;1328:47;;;;;;;;;;;;;;;;;;-1:-1:-1;1328:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1011:26;1215:165;;:::o;942:36::-;;;;:::o;918:20::-;;;-1:-1:-1;;;;;918:20:0;;:::o;1108:103::-;1029:5;;1015:10;-1:-1:-1;;;;;1015:19:0;;;1029:5;;1015:19;1011:26;;;1170:24;:36;;;1011:26;1108:103;:::o",
  "source": "// ------------------------------------------------------------------------------\n// This file is part of netvote.\n//\n// netvote is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// netvote is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with solidity.  If not, see <http://www.gnu.org/licenses/>\n//\n// (c) 2017 netvote contributors.\n//------------------------------------------------------------------------------\n\npragma solidity ^0.4.17;\n\ncontract Migrations {\n  address public owner;\n  uint public last_completed_migration;\n\n  modifier restricted() {\n    if (msg.sender == owner) _;\n  }\n\n  function Migrations() public {\n    owner = msg.sender;\n  }\n\n  function setCompleted(uint completed) public restricted {\n    last_completed_migration = completed;\n  }\n\n  function upgrade(address new_address) public restricted {\n    Migrations upgraded = Migrations(new_address);\n    upgraded.setCompleted(last_completed_migration);\n  }\n}\n",
  "sourcePath": "/Users/slanders/netvote/elections-solidity/contracts/Migrations.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/Migrations.sol",
      "exportedSymbols": {
        "Migrations": [
          56
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".17"
          ]
        },
        "id": 1,
        "name": "PragmaDirective",
        "src": "868:24:0"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            56
          ],
          "name": "Migrations",
          "scope": 57
        },
        "children": [
          {
            "attributes": {
              "constant": false,
              "name": "owner",
              "scope": 56,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "type": "address"
                },
                "id": 2,
                "name": "ElementaryTypeName",
                "src": "918:7:0"
              }
            ],
            "id": 3,
            "name": "VariableDeclaration",
            "src": "918:20:0"
          },
          {
            "attributes": {
              "constant": false,
              "name": "last_completed_migration",
              "scope": 56,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 4,
                "name": "ElementaryTypeName",
                "src": "942:4:0"
              }
            ],
            "id": 5,
            "name": "VariableDeclaration",
            "src": "942:36:0"
          },
          {
            "attributes": {
              "name": "restricted",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6,
                "name": "ParameterList",
                "src": "1002:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3449,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 7,
                                "name": "Identifier",
                                "src": "1015:3:0"
                              }
                            ],
                            "id": 8,
                            "name": "MemberAccess",
                            "src": "1015:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3,
                              "type": "address",
                              "value": "owner"
                            },
                            "id": 9,
                            "name": "Identifier",
                            "src": "1029:5:0"
                          }
                        ],
                        "id": 10,
                        "name": "BinaryOperation",
                        "src": "1015:19:0"
                      },
                      {
                        "id": 11,
                        "name": "PlaceholderStatement",
                        "src": "1036:1:0"
                      }
                    ],
                    "id": 12,
                    "name": "IfStatement",
                    "src": "1011:26:0"
                  }
                ],
                "id": 13,
                "name": "Block",
                "src": "1005:37:0"
              }
            ],
            "id": 14,
            "name": "ModifierDefinition",
            "src": "983:59:0"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "Migrations",
              "payable": false,
              "scope": 56,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 15,
                "name": "ParameterList",
                "src": "1065:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 16,
                "name": "ParameterList",
                "src": "1075:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3,
                              "type": "address",
                              "value": "owner"
                            },
                            "id": 17,
                            "name": "Identifier",
                            "src": "1081:5:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3449,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 18,
                                "name": "Identifier",
                                "src": "1089:3:0"
                              }
                            ],
                            "id": 19,
                            "name": "MemberAccess",
                            "src": "1089:10:0"
                          }
                        ],
                        "id": 20,
                        "name": "Assignment",
                        "src": "1081:18:0"
                      }
                    ],
                    "id": 21,
                    "name": "ExpressionStatement",
                    "src": "1081:18:0"
                  }
                ],
                "id": 22,
                "name": "Block",
                "src": "1075:29:0"
              }
            ],
            "id": 23,
            "name": "FunctionDefinition",
            "src": "1046:58:0"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "setCompleted",
              "payable": false,
              "scope": 56,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "completed",
                      "scope": 35,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 24,
                        "name": "ElementaryTypeName",
                        "src": "1130:4:0"
                      }
                    ],
                    "id": 25,
                    "name": "VariableDeclaration",
                    "src": "1130:14:0"
                  }
                ],
                "id": 26,
                "name": "ParameterList",
                "src": "1129:16:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 29,
                "name": "ParameterList",
                "src": "1164:0:0"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 14,
                      "type": "modifier ()",
                      "value": "restricted"
                    },
                    "id": 27,
                    "name": "Identifier",
                    "src": "1153:10:0"
                  }
                ],
                "id": 28,
                "name": "ModifierInvocation",
                "src": "1153:10:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5,
                              "type": "uint256",
                              "value": "last_completed_migration"
                            },
                            "id": 30,
                            "name": "Identifier",
                            "src": "1170:24:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 25,
                              "type": "uint256",
                              "value": "completed"
                            },
                            "id": 31,
                            "name": "Identifier",
                            "src": "1197:9:0"
                          }
                        ],
                        "id": 32,
                        "name": "Assignment",
                        "src": "1170:36:0"
                      }
                    ],
                    "id": 33,
                    "name": "ExpressionStatement",
                    "src": "1170:36:0"
                  }
                ],
                "id": 34,
                "name": "Block",
                "src": "1164:47:0"
              }
            ],
            "id": 35,
            "name": "FunctionDefinition",
            "src": "1108:103:0"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "upgrade",
              "payable": false,
              "scope": 56,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "new_address",
                      "scope": 55,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 36,
                        "name": "ElementaryTypeName",
                        "src": "1232:7:0"
                      }
                    ],
                    "id": 37,
                    "name": "VariableDeclaration",
                    "src": "1232:19:0"
                  }
                ],
                "id": 38,
                "name": "ParameterList",
                "src": "1231:21:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 41,
                "name": "ParameterList",
                "src": "1271:0:0"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 14,
                      "type": "modifier ()",
                      "value": "restricted"
                    },
                    "id": 39,
                    "name": "Identifier",
                    "src": "1260:10:0"
                  }
                ],
                "id": 40,
                "name": "ModifierInvocation",
                "src": "1260:10:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        43
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "upgraded",
                          "scope": 55,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Migrations",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Migrations",
                              "referencedDeclaration": 56,
                              "type": "contract Migrations"
                            },
                            "id": 42,
                            "name": "UserDefinedTypeName",
                            "src": "1277:10:0"
                          }
                        ],
                        "id": 43,
                        "name": "VariableDeclaration",
                        "src": "1277:19:0"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Migrations",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 56,
                              "type": "type(contract Migrations)",
                              "value": "Migrations"
                            },
                            "id": 44,
                            "name": "Identifier",
                            "src": "1299:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 37,
                              "type": "address",
                              "value": "new_address"
                            },
                            "id": 45,
                            "name": "Identifier",
                            "src": "1310:11:0"
                          }
                        ],
                        "id": 46,
                        "name": "FunctionCall",
                        "src": "1299:23:0"
                      }
                    ],
                    "id": 47,
                    "name": "VariableDeclarationStatement",
                    "src": "1277:45:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setCompleted",
                              "referencedDeclaration": 35,
                              "type": "function (uint256) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 43,
                                  "type": "contract Migrations",
                                  "value": "upgraded"
                                },
                                "id": 48,
                                "name": "Identifier",
                                "src": "1328:8:0"
                              }
                            ],
                            "id": 50,
                            "name": "MemberAccess",
                            "src": "1328:21:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5,
                              "type": "uint256",
                              "value": "last_completed_migration"
                            },
                            "id": 51,
                            "name": "Identifier",
                            "src": "1350:24:0"
                          }
                        ],
                        "id": 52,
                        "name": "FunctionCall",
                        "src": "1328:47:0"
                      }
                    ],
                    "id": 53,
                    "name": "ExpressionStatement",
                    "src": "1328:47:0"
                  }
                ],
                "id": 54,
                "name": "Block",
                "src": "1271:109:0"
              }
            ],
            "id": 55,
            "name": "FunctionDefinition",
            "src": "1215:165:0"
          }
        ],
        "id": 56,
        "name": "ContractDefinition",
        "src": "894:488:0"
      }
    ],
    "id": 57,
    "name": "SourceUnit",
    "src": "868:515:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0xb6aa0bca9489d796237d21c11e871e66530f23e4"
    }
  },
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-26T15:58:05.151Z"
}