@netvote/elections-solidity
Version:
Elections Contracts
839 lines • 122 kB
JSON
{
"contractName": "TokenElection",
"abi": [
{
"constant": false,
"inputs": [],
"name": "activate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "gateway",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "b",
"type": "address"
}
],
"name": "ballotExists",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "voteToken",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "addr",
"type": "address"
}
],
"name": "removeAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "electionStartTime",
"type": "uint256"
},
{
"name": "electionEndTime",
"type": "uint256"
}
],
"name": "setTimes",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "addr",
"type": "address"
}
],
"name": "isAdmin",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "electionPhase",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "votes",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "endTime",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "abort",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "createdBy",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "voteId",
"type": "bytes32"
},
{
"name": "vote",
"type": "string"
},
{
"name": "passphrase",
"type": "string"
},
{
"name": "jti",
"type": "bytes32"
}
],
"name": "castVote",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "entry",
"type": "bytes32"
}
],
"name": "addAuthorized",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "close",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "acct",
"type": "address"
}
],
"name": "setVoteOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "electionType",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "privateKey",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "election",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "removeSelf",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "entry",
"type": "bytes32"
}
],
"name": "isAuthorized",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "publicKey",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "key",
"type": "string"
}
],
"name": "setPublicKey",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "addr",
"type": "address"
}
],
"name": "addAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "entry",
"type": "bytes32"
}
],
"name": "removeAuthorized",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "startTime",
"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": "value",
"type": "uint256"
}
],
"name": "withdrawVotes",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "getVoteAt",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "tokenAddress",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isLocked",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "unlock",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getBallotCount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "balanceTime",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "metadataLocation",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "allowVoteUpdates",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isClosed",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "voteId",
"type": "bytes32"
},
{
"name": "vote",
"type": "string"
},
{
"name": "passphrase",
"type": "string"
},
{
"name": "jti",
"type": "bytes32"
}
],
"name": "updateVote",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "b",
"type": "address"
}
],
"name": "removeBallot",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "b",
"type": "address"
}
],
"name": "getBallotIndex",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "deductVote",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "key",
"type": "string"
}
],
"name": "setPrivateKey",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getVoteCount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "withdrawAllVotes",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "checkConfig",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "lock",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "b",
"type": "address"
}
],
"name": "addBallot",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "getBallot",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "hashedUserId",
"type": "bytes32"
},
{
"name": "allowanceAddress",
"type": "address"
},
{
"name": "ownerOfAllowance",
"type": "address"
},
{
"name": "allowUpdates",
"type": "bool"
},
{
"name": "revealerAddress",
"type": "address"
},
{
"name": "location",
"type": "string"
},
{
"name": "gatewayAddress",
"type": "address"
},
{
"name": "autoActivate",
"type": "bool"
},
{
"name": "erc20Token",
"type": "address"
},
{
"name": "balanceTimestamp",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [],
"name": "KeyReleased",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "voteId",
"type": "bytes32"
}
],
"name": "Vote",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "voteId",
"type": "bytes32"
}
],
"name": "UpdateVote",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Closed",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Activated",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Aborted",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Locked",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Unlocked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
}
],
"bytecode": "0x60606040526003805461ffff191690556012805460ff1916905534156200002557600080fd5b604051620025b9380380620025b983398101604052808051919060200180519190602001805191906020018051919060200180519190602001805182019190602001805191906020018051919060200180519190602001805190602001909190505089898989898989600087878787878033898f308b336000806101000a815481600160a060020a030219169083600160a060020a031602179055506000600160a060020a031682600160a060020a031614158015620000ed5750600160a060020a03811615155b1515620000f957600080fd5b620001128364010000000062000e856200038282021704565b60098054600160a060020a0319908116600160a060020a0394851617909155600d805490911691831691909117905583166000908152600160208190526040909120805460ff1916909117905550600e81805162000175929160200190620006a3565b5050600f8054600160a060020a031916600160a060020a03939093169290921790915550620001b28564010000000062000382810262000e851704565b506012805461010060a860020a031916610100600160a060020a039586160217905560138054600160a060020a031916929093169190911760a060020a60ff02191674010000000000000000000000000000000000000000911515919091021790555060408051908101604052600581527f4241534943000000000000000000000000000000000000000000000000000000602082015260149080516200025e929160200190620006a3565b50620002783064010000000062001be5620003c282021704565b8015620002975762000297640100000000620008cf620004c082021704565b5050505050600160a060020a03851615159250620002b791505057600080fd5b620002d08264010000000062001e306200056d82021704565b1515620002dc57600080fd5b60408051908101604052600581527f544f4b454e0000000000000000000000000000000000000000000000000000006020820152601490805162000325929160200190620006a3565b5060178054600160a060020a031916600160a060020a0384161790554281106200034e57600080fd5b60188190558215620003725762000372640100000000620008cf620004c082021704565b5050505050505050505062000745565b6200039b3364010000000062000a8e6200057582021704565b1515620003a757600080fd5b6000908152600260205260409020805460ff19166001179055565b620003da640100000000620013bb620005c682021704565b158015620003fe5750600060038054610100900460ff1690811115620003fc57fe5b145b15156200040a57600080fd5b620004233364010000000062000a8e6200057582021704565b15156200042f57600080fd5b73__AddressSet____________________________63f9802f856004836040517c010000000000000000000000000000000000000000000000000000000063ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515620004a857600080fd5b6102c65a03f41515620004ba57600080fd5b50505050565b620004d8640100000000620013bb620005c682021704565b158015620004fc5750600060038054610100900460ff1690811115620004fa57fe5b145b15156200050857600080fd5b620005213364010000000062000a8e6200057582021704565b15156200052d57600080fd5b6015541580156200053e5750601654155b1562000553574260158190556224ea00016016555b6200056b64010000000062001ced620005d082021704565b565b6000903b1190565b6000600160a060020a03821615801590620005c05750600054600160a060020a0383811691161480620005c05750600160a060020a03821660009081526001602052604090205460ff165b92915050565b60035460ff165b90565b620005e8640100000000620013bb620005c682021704565b1580156200060c5750600060038054610100900460ff16908111156200060a57fe5b145b15156200061857600080fd5b620006313364010000000062000a8e6200057582021704565b15156200063d57600080fd5b6200065564010000000062001ae66200069e82021704565b15156200066157600080fd5b6003805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b600190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006e657805160ff191683800117855562000716565b8280016001018555821562000716579182015b8281111562000716578251825591602001919060010190620006f9565b506200072492915062000728565b5090565b620005cd91905b808211156200072457600081556001016200072f565b611e6480620007556000396000f3006060604052600436106102375763ffffffff60e060020a6000350416630f15f4c0811461023c578063116191b614610251578063138b1fa014610280578063160d66ae146102b35780631785f53c146102c657806322434836146102e557806324d7806c146102fe578063265050b61461031d5780632b38cd96146103545780633197cbb6146103e157806335a063b4146104065780633a5673a4146104195780634126ebe21461042c57806341af099d146104c657806343d726d6146104dc57806347beabd6146104ef5780634885c72a1461050e57806349da5a0f146105215780634b1d3ede146105345780635e898dac1461054757806362f4ed901461055a57806363ffab31146105705780636f6fc0771461058357806370480275146105d457806372e789b3146105f357806378e97925146106095780638da5cb5b1461061c578063961edb251461062f5780639cc8f2b3146106455780639d76ea581461065b578063a4e2d6341461066e578063a69df4b514610681578063b474149514610694578063b752619b146106a7578063b86901af146106ba578063bf41bf36146106cd578063c2b6b58c146106e0578063d6807a5c146106f3578063d71c67721461078d578063db30eafb146107ac578063de61a732146107cb578063e0d4f017146107de578063e7b3387c1461082f578063ee51d4e114610842578063f098fe4714610855578063f2fde38b14610868578063f83d08ba14610887578063f8c74afa1461089a578063f9d5ee75146108b9575b600080fd5b341561024757600080fd5b61024f6108cf565b005b341561025c57600080fd5b610264610946565b604051600160a060020a03909116815260200160405180910390f35b341561028b57600080fd5b61029f600160a060020a0360043516610955565b604051901515815260200160405180910390f35b34156102be57600080fd5b6102646109de565b34156102d157600080fd5b61024f600160a060020a03600435166109f2565b34156102f057600080fd5b61024f600435602435610a2e565b341561030957600080fd5b61029f600160a060020a0360043516610a8e565b341561032857600080fd5b610330610add565b6040518082600381111561034057fe5b60ff16815260200191505060405180910390f35b341561035f57600080fd5b61036a600435610aeb565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103a657808201518382015260200161038e565b50505050905090810190601f1680156103d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103ec57600080fd5b6103f4610b9b565b60405190815260200160405180910390f35b341561041157600080fd5b61024f610ba1565b341561042457600080fd5b61036a610bf2565b341561043757600080fd5b61024f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505093359350610c5d92505050565b34156104d157600080fd5b61024f600435610e85565b34156104e757600080fd5b61024f610eb4565b34156104fa57600080fd5b61024f600160a060020a0360043516610f3a565b341561051957600080fd5b61036a610f7d565b341561052c57600080fd5b61036a610fe8565b341561053f57600080fd5b610264611053565b341561055257600080fd5b61024f611062565b341561056557600080fd5b61029f600435611098565b341561057b57600080fd5b61036a6110ad565b341561058e57600080fd5b61024f60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061111895505050505050565b34156105df57600080fd5b61024f600160a060020a036004351661114a565b34156105fe57600080fd5b61024f60043561118c565b341561061457600080fd5b6103f46111b8565b341561062757600080fd5b6102646111be565b341561063a57600080fd5b61024f6004356111cd565b341561065057600080fd5b61036a600435611271565b341561066657600080fd5b6102646113ac565b341561067957600080fd5b61029f6113bb565b341561068c57600080fd5b61024f6113c5565b341561069f57600080fd5b6103f4611422565b34156106b257600080fd5b6103f461149b565b34156106c557600080fd5b61036a6114a1565b34156106d857600080fd5b61029f61150c565b34156106eb57600080fd5b61029f61152d565b34156106fe57600080fd5b61024f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650509335935061154d92505050565b341561079857600080fd5b61024f600160a060020a0360043516611720565b34156107b757600080fd5b6103f4600160a060020a03600435166117df565b34156107d657600080fd5b61024f611848565b34156107e957600080fd5b61024f60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061192395505050505050565b341561083a57600080fd5b6103f4611981565b341561084d57600080fd5b61024f6119db565b341561086057600080fd5b61029f611ae6565b341561087357600080fd5b61024f600160a060020a0360043516611aeb565b341561089257600080fd5b61024f611b86565b34156108a557600080fd5b61024f600160a060020a0360043516611be5565b34156108c457600080fd5b610264600435611c8d565b6108d76113bb565b1580156108f95750600060038054610100900460ff16908111156108f757fe5b145b151561090457600080fd5b61090d33610a8e565b151561091857600080fd5b6015541580156109285750601654155b1561093c574260158190556224ea00016016555b610944611ced565b565b600d54600160a060020a031681565b600073__AddressSet____________________________63758241e0600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156109be57600080fd5b6102c65a03f415156109cf57600080fd5b50505060405180519392505050565b6012546101009004600160a060020a031681565b60005433600160a060020a03908116911614610a0d57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b610a366113bb565b158015610a585750600060038054610100900460ff1690811115610a5657fe5b145b1515610a6357600080fd5b610a6c33610a8e565b1515610a7757600080fd5b818111610a8357600080fd5b601591909155601655565b6000600160a060020a03821615801590610ad75750600054600160a060020a0383811691161480610ad75750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600354610100900460ff1681565b600b6020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b820191906000526020600020905b815481529060010190602001808311610b7657829003601f168201915b505050505081565b60165481565b610baa33610a8e565b1515610bb557600080fd5b6003805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b610c656113bb565b158015610c875750600160038054610100900460ff1690811115610c8557fe5b145b1515610c9257600080fd5b600d5433600160a060020a03908116911614610cad57600080fd5b8373__NoRemovalBytes32Set___________________63bd4a0da160078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610d0d57600080fd5b6102c65a03f41515610d1e57600080fd5b5050506040518051159050610d3257600080fd5b6000828152600c6020526040902054829060ff1615610d5057600080fd5b6000838152600c602052604090819020805460ff1916600117905573__NoRemovalBytes32Set___________________9063bda02f009060079089905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610dc357600080fd5b6102c65a03f41515610dd457600080fd5b5050506000868152600b60205260409020858051610df6929160200190611d86565b50600954600160a060020a031663de61a7326040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610e3657600080fd5b6102c65a03f11515610e4757600080fd5b5050507fe071651fdb9485bc1f9dbd3312c8a999c04ad7a5fef33ee1036e1fc709c4da4f8660405190815260200160405180910390a1505050505050565b610e8e33610a8e565b1515610e9957600080fd5b6000908152600260205260409020805460ff19166001179055565b610ebc6113bb565b158015610ede5750600160038054610100900460ff1690811115610edc57fe5b145b1515610ee957600080fd5b610ef233610a8e565b1515610efd57600080fd5b6003805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b610f4333610a8e565b1515610f4e57600080fd5b6013805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60148054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b60118054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b600954600160a060020a031681565b61106b33610a8e565b151561107657600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60009081526002602052604090205460ff1690565b60108054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b600f5433600160a060020a0390811691161461113357600080fd5b6010818051611146929160200190611d86565b5050565b60005433600160a060020a0390811691161461116557600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b61119533610a8e565b15156111a057600080fd5b6000908152600260205260409020805460ff19169055565b60155481565b600054600160a060020a031681565b60135433600160a060020a039081169116146111e857600080fd5b601254601354600160a060020a0361010090920482169163a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561125357600080fd5b6102c65a03f1151561126457600080fd5b5050506040518051505050565b611279611e04565b600b600073__NoRemovalBytes32Set___________________637a3d376c600786846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156112db57600080fd5b6102c65a03f415156112ec57600080fd5b50505060405180519050600019166000191681526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113a05780601f10611375576101008083540402835291602001916113a0565b820191906000526020600020905b81548152906001019060200180831161138357829003601f168201915b50505050509050919050565b601754600160a060020a031681565b60035460ff165b90565b6113ce33610a8e565b15156113d957600080fd5b60035460ff1615156113ea57600080fd5b6003805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561147c57600080fd5b6102c65a03f4151561148d57600080fd5b505050604051805191505090565b60185481565b600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b60135474010000000000000000000000000000000000000000900460ff1681565b6000600260038054610100900460ff169081111561154757fe5b14905090565b6115556113bb565b1580156115775750600160038054610100900460ff169081111561157557fe5b145b151561158257600080fd5b600d5433600160a060020a0390811691161461159d57600080fd5b600954600160a060020a031663bf41bf366000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156115e557600080fd5b6102c65a03f115156115f657600080fd5b50505060405180519050151561160b57600080fd5b6000818152600c6020526040902054819060ff161561162957600080fd5b73__NoRemovalBytes32Set___________________63bd4a0da160078760006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561168857600080fd5b6102c65a03f4151561169957600080fd5b5050506040518051905015156116ae57600080fd5b6000828152600c60209081526040808320805460ff19166001179055878352600b90915290208480516116e5929160200190611d86565b507fb76baefd7e249e81a2c6ab2dd1692b4629b993e50c0f341cd9410ca6b0f3392e8560405190815260200160405180910390a15050505050565b6117286113bb565b15801561174a5750600060038054610100900460ff169081111561174857fe5b145b151561175557600080fd5b61175e33610a8e565b151561176957600080fd5b73__AddressSet____________________________63e134066a60048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156117c857600080fd5b6102c65a03f415156117d957600080fd5b50505050565b600073__AddressSet____________________________6318c40249600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156109be57600080fd5b6118506113bb565b1580156118725750600160038054610100900460ff169081111561187057fe5b145b151561187d57600080fd5b601554612a2f1901421161189057600080fd5b601654612a300142106118a257600080fd5b60125460ff16156118b257600080fd5b6012805460ff191660011790819055600160a060020a03610100909104166365775d156040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561190357600080fd5b6102c65a03f1151561191457600080fd5b50506012805460ff1916905550565b600f5433600160a060020a0390811691161461193e57600080fd5b6011818051611951929160200190611d86565b507ff9d8c4f7f692590eaf6d41d6160024ffe0ce509fa752efcf47543eb851869cfb60405160405180910390a150565b600073__NoRemovalBytes32Set___________________6366b26fbf6007836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561147c57600080fd5b60135433600160a060020a039081169116146119f657600080fd5b601254601354600160a060020a0361010090920482169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a6257600080fd5b6102c65a03f11515611a7357600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611ac957600080fd5b6102c65a03f11515611ada57600080fd5b50505060405180515050565b600190565b60005433600160a060020a03908116911614611b0657600080fd5b600160a060020a0381161515611b1b57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611b8f33610a8e565b1515611b9a57600080fd5b60035460ff1615611baa57600080fd5b6003805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b611bed6113bb565b158015611c0f5750600060038054610100900460ff1690811115611c0d57fe5b145b1515611c1a57600080fd5b611c2333610a8e565b1515611c2e57600080fd5b73__AddressSet____________________________63f9802f8560048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156117c857600080fd5b600073__AddressSet____________________________635c2125a7600484846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156109be57600080fd5b611cf56113bb565b158015611d175750600060038054610100900460ff1690811115611d1557fe5b145b1515611d2257600080fd5b611d2b33610a8e565b1515611d3657600080fd5b611d3e611ae6565b1515611d4957600080fd5b6003805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dc757805160ff1916838001178555611df4565b82800160010185558215611df4579182015b82811115611df4578251825591602001919060010190611dd9565b50611e00929150611e16565b5090565b60206040519081016040526000815290565b6113c291905b80821115611e005760008155600101611e1c565b6000903b11905600a165627a7a723058206234ebd4226c3b505578059c736358f824c221d00150b75d499ae7120c37af7c0029",
"deployedBytecode": "0x6060604052600436106102375763ffffffff60e060020a6000350416630f15f4c0811461023c578063116191b614610251578063138b1fa014610280578063160d66ae146102b35780631785f53c146102c657806322434836146102e557806324d7806c146102fe578063265050b61461031d5780632b38cd96146103545780633197cbb6146103e157806335a063b4146104065780633a5673a4146104195780634126ebe21461042c57806341af099d146104c657806343d726d6146104dc57806347beabd6146104ef5780634885c72a1461050e57806349da5a0f146105215780634b1d3ede146105345780635e898dac1461054757806362f4ed901461055a57806363ffab31146105705780636f6fc0771461058357806370480275146105d457806372e789b3146105f357806378e97925146106095780638da5cb5b1461061c578063961edb251461062f5780639cc8f2b3146106455780639d76ea581461065b578063a4e2d6341461066e578063a69df4b514610681578063b474149514610694578063b752619b146106a7578063b86901af146106ba578063bf41bf36146106cd578063c2b6b58c146106e0578063d6807a5c146106f3578063d71c67721461078d578063db30eafb146107ac578063de61a732146107cb578063e0d4f017146107de578063e7b3387c1461082f578063ee51d4e114610842578063f098fe4714610855578063f2fde38b14610868578063f83d08ba14610887578063f8c74afa1461089a578063f9d5ee75146108b9575b600080fd5b341561024757600080fd5b61024f6108cf565b005b341561025c57600080fd5b610264610946565b604051600160a060020a03909116815260200160405180910390f35b341561028b57600080fd5b61029f600160a060020a0360043516610955565b604051901515815260200160405180910390f35b34156102be57600080fd5b6102646109de565b34156102d157600080fd5b61024f600160a060020a03600435166109f2565b34156102f057600080fd5b61024f600435602435610a2e565b341561030957600080fd5b61029f600160a060020a0360043516610a8e565b341561032857600080fd5b610330610add565b6040518082600381111561034057fe5b60ff16815260200191505060405180910390f35b341561035f57600080fd5b61036a600435610aeb565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103a657808201518382015260200161038e565b50505050905090810190601f1680156103d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103ec57600080fd5b6103f4610b9b565b60405190815260200160405180910390f35b341561041157600080fd5b61024f610ba1565b341561042457600080fd5b61036a610bf2565b341561043757600080fd5b61024f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505093359350610c5d92505050565b34156104d157600080fd5b61024f600435610e85565b34156104e757600080fd5b61024f610eb4565b34156104fa57600080fd5b61024f600160a060020a0360043516610f3a565b341561051957600080fd5b61036a610f7d565b341561052c57600080fd5b61036a610fe8565b341561053f57600080fd5b610264611053565b341561055257600080fd5b61024f611062565b341561056557600080fd5b61029f600435611098565b341561057b57600080fd5b61036a6110ad565b341561058e57600080fd5b61024f60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061111895505050505050565b34156105df57600080fd5b61024f600160a060020a036004351661114a565b34156105fe57600080fd5b61024f60043561118c565b341561061457600080fd5b6103f46111b8565b341561062757600080fd5b6102646111be565b341561063a57600080fd5b61024f6004356111cd565b341561065057600080fd5b61036a600435611271565b341561066657600080fd5b6102646113ac565b341561067957600080fd5b61029f6113bb565b341561068c57600080fd5b61024f6113c5565b341561069f57600080fd5b6103f4611422565b34156106b257600080fd5b6103f461149b565b34156106c557600080fd5b61036a6114a1565b34156106d857600080fd5b61029f61150c565b34156106eb57600080fd5b61029f61152d565b34156106fe57600080fd5b61024f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650509335935061154d92505050565b341561079857600080fd5b61024f600160a060020a0360043516611720565b34156107b757600080fd5b6103f4600160a060020a03600435166117df565b34156107d657600080fd5b61024f611848565b34156107e957600080fd5b61024f60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061192395505050505050565b341561083a57600080fd5b6103f4611981565b341561084d57600080fd5b61024f6119db565b341561086057600080fd5b61029f611ae6565b341561087357600080fd5b61024f600160a060020a0360043516611aeb565b341561089257600080fd5b61024f611b86565b34156108a557600080fd5b61024f600160a060020a0360043516611be5565b34156108c457600080fd5b610264600435611c8d565b6108d76113bb565b1580156108f95750600060038054610100900460ff16908111156108f757fe5b145b151561090457600080fd5b61090d33610a8e565b151561091857600080fd5b6015541580156109285750601654155b1561093c574260158190556224ea00016016555b610944611ced565b565b600d54600160a060020a031681565b600073__AddressSet____________________________63758241e0600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156109be57600080fd5b6102c65a03f415156109cf57600080fd5b50505060405180519392505050565b6012546101009004600160a060020a031681565b60005433600160a060020a03908116911614610a0d57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b610a366113bb565b158015610a585750600060038054610100900460ff1690811115610a5657fe5b145b1515610a6357600080fd5b610a6c33610a8e565b1515610a7757600080fd5b818111610a8357600080fd5b601591909155601655565b6000600160a060020a03821615801590610ad75750600054600160a060020a0383811691161480610ad75750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600354610100900460ff1681565b600b6020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b820191906000526020600020905b815481529060010190602001808311610b7657829003601f168201915b505050505081565b60165481565b610baa33610a8e565b1515610bb557600080fd5b6003805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b610c656113bb565b158015610c875750600160038054610100900460ff1690811115610c8557fe5b145b1515610c9257600080fd5b600d5433600160a060020a03908116911614610cad57600080fd5b8373__NoRemovalBytes32Set___________________63bd4a0da160078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610d0d57600080fd5b6102c65a03f41515610d1e57600080fd5b5050506040518051159050610d3257600080fd5b6000828152600c6020526040902054829060ff1615610d5057600080fd5b6000838152600c602052604090819020805460ff1916600117905573__NoRemovalBytes32Set___________________9063bda02f009060079089905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610dc357600080fd5b6102c65a03f41515610dd457600080fd5b5050506000868152600b60205260409020858051610df6929160200190611d86565b50600954600160a060020a031663de61a7326040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610e3657600080fd5b6102c65a03f11515610e4757600080fd5b5050507fe071651fdb9485bc1f9dbd3312c8a999c04ad7a5fef33ee1036e1fc709c4da4f8660405190815260200160405180910390a1505050505050565b610e8e33610a8e565b1515610e9957600080fd5b6000908152600260205260409020805460ff19166001179055565b610ebc6113bb565b158015610ede5750600160038054610100900460ff1690811115610edc57fe5b145b1515610ee957600080fd5b610ef233610a8e565b1515610efd57600080fd5b6003805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b610f4333610a8e565b1515610f4e57600080fd5b6013805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60148054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b60118054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b600954600160a060020a031681565b61106b33610a8e565b151561107657600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60009081526002602052604090205460ff1690565b60108054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b600f5433600160a060020a0390811691161461113357600080fd5b6010818051611146929160200190611d86565b5050565b60005433600160a060020a0390811691161461116557600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b61119533610a8e565b15156111a057600080fd5b6000908152600260205260409020805460ff19169055565b60155481565b600054600160a060020a031681565b60135433600160a060020a039081169116146111e857600080fd5b601254601354600160a060020a0361010090920482169163a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561125357600080fd5b6102c65a03f1151561126457600080fd5b5050506040518051505050565b611279611e04565b600b600073__NoRemovalBytes32Set___________________637a3d376c600786846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156112db57600080fd5b6102c65a03f415156112ec57600080fd5b50505060405180519050600019166000191681526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113a05780601f10611375576101008083540402835291602001916113a0565b820191906000526020600020905b81548152906001019060200180831161138357829003601f168201915b50505050509050919050565b601754600160a060020a031681565b60035460ff165b90565b6113ce33610a8e565b15156113d957600080fd5b60035460ff1615156113ea57600080fd5b6003805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561147c57600080fd5b6102c65a03f4151561148d57600080fd5b505050604051805191505090565b60185481565b600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b935780601f10610b6857610100808354040283529160200191610b93565b60135474010000000000000000000000000000000000000000900460ff1681565b6000600260038054610100900460ff169081111561154757fe5b14905090565b6115556113bb565b1580156115775750600160038054610100900460ff169081111561157557fe5b145b151561158257600080fd5b600d5433600160a060020a0390811691161461159d57600080fd5b600954600160a060020a031663bf41bf366000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156115e557600080fd5b6102c65a03f115156115f657600080fd5b50505060405180519050151561160b57600080fd5b6000818152600c6020526040902054819060ff161561162957600080fd5b73__NoRemovalBytes32Set___________________63bd4a0da160078760006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561168857600080fd5b6102c65a03f4151561169957600080fd5b5050506040518051905015156116ae57600080fd5b6000828152600c60209081526040808320805460ff19166001179055878352600b90915290208480516116e5929160200190611d86565b507fb76baefd7e249e81a2c6ab2dd1692b4629b993e50c0f341cd9410ca6b0f3392e8560405190815260200160405180910390a15050505050565b6117286113bb565b15801561174a5750600060038054610100900460ff169081111561174857fe5b145b151561175557600080fd5b61175e33610a8e565b151561176957600080fd5b73__AddressSet____________________________63e134066a60048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156117c857600080fd5b6102c65a03f415156117d957600080fd5b50505050565b600073__AddressSet____________________________6318c40249600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156109be57600080fd5b6118506113bb565b1580156118725750600160038054610100900460ff169081111561187057fe5b145b151561187d57600080fd5b601554612a2f1901421161189057600080fd5b601654612a300142106118a257600080fd5b60125460ff16156118b257600080fd5b6012805460ff191660011790819055600160a060020a03610100909104166365775d156040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561190357600080fd5b6102c65a03f1151561191457600080fd5b50506012805460ff1916905550565b600f5433600160a060020a0390811691161461193e57600080fd5b6011818051611951929160200190611d86565b507ff9d8c4f7f692590eaf6d41d6160024ffe0ce509fa752efcf47543eb851869cfb60405160405180910390a150565b600073__NoRemovalBytes32Set___________________6366b26fbf6007836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561147c57600080fd5b60135433600160a060020a039081169116146119f657600080fd5b601254601354600160a060020a0361010090920482169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a6257600080fd5b6102c65a03f11515611a7357600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611ac957600080fd5b6102c65a03f11515611ada57600080fd5b50505060405180515050565b600190565b60005433600160a060020a03908116911614611b0657600080fd5b600160a060020a0381161515611b1b57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611b8f33610a8e565b1515611b9a57600080fd5b60035460ff1615611baa57600080fd5b6003805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b611bed6113bb565b158015611c0f5750600060038054610100900460ff1690811115611c0d57fe5b145b1515611c1a57600080fd5b611c2333610a8e565b1515611c2e57600080fd5b73__AddressSet____________________________63f9802f8560048360405160e060020a63ffffffff8516028152600481019