@daostack/arc-experimental
Version:
A platform for building DAOs
461 lines (460 loc) • 47 kB
JSON
{
"contractName": "UpgradeScheme",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_avatar",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint64[3]",
"name": "_packageVersion",
"type": "uint64[3]"
},
{
"indexed": false,
"internalType": "bytes32[]",
"name": "_contractsNames",
"type": "bytes32[]"
},
{
"indexed": false,
"internalType": "address[]",
"name": "_contractsToUpgrade",
"type": "address[]"
},
{
"indexed": false,
"internalType": "string",
"name": "_descriptionHash",
"type": "string"
}
],
"name": "NewUpgradeProposal",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_avatar",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "ProposalDeleted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_avatar",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bool",
"name": "_decision",
"type": "bool"
}
],
"name": "ProposalExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_avatar",
"type": "address"
},
{
"indexed": false,
"internalType": "address[]",
"name": "_upgradedContracts",
"type": "address[]"
}
],
"name": "UpgradedContracts",
"type": "event"
},
{
"inputs": [],
"name": "arcPackage",
"outputs": [
{
"internalType": "contract Package",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "avatar",
"outputs": [
{
"internalType": "contract Avatar",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "_stakingToken",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "balanceOfStakingToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "burnReputation",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"internalType": "int256",
"name": "_decision",
"type": "int256"
}
],
"name": "executeProposal",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "getTotalReputationSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract Avatar",
"name": "_avatar",
"type": "address"
},
{
"internalType": "contract IntVoteInterface",
"name": "_votingMachine",
"type": "address"
},
{
"internalType": "uint256[11]",
"name": "_votingParams",
"type": "uint256[11]"
},
{
"internalType": "address",
"name": "_voteOnBehalf",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_voteParamsHash",
"type": "bytes32"
},
{
"internalType": "contract Package",
"name": "_package",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "mintReputation",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "organizationProposals",
"outputs": [
{
"internalType": "bool",
"name": "exist",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "proposalsBlockNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64[3]",
"name": "_packageVersion",
"type": "uint64[3]"
},
{
"internalType": "bytes32[]",
"name": "_contractsNames",
"type": "bytes32[]"
},
{
"internalType": "address[]",
"name": "_contractsToUpgrade",
"type": "address[]"
},
{
"internalType": "string",
"name": "_descriptionHash",
"type": "string"
}
],
"name": "proposeUpgrade",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "reputationOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "_stakingToken",
"type": "address"
},
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "stakingTokenTransfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "voteParamsHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "votingMachine",
"outputs": [
{
"internalType": "contract IntVoteInterface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50612419806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063985e313f11610097578063bea75f2811610066578063bea75f281461043b578063d29b5d2f14610477578063d8145e2d146104a9578063f81f8bf6146104c6576100f5565b8063985e313f146101bd5780639d4c162d1461020c578063a191f8e814610243578063b551c3731461041e576100f5565b80635aef7de6116100d35780635aef7de6146101405780636b8eb403146101485780637a5cb92c146101745780639588378e14610191576100f5565b80632b304bc5146100fa5780633edf7ca11461011e5780634ea2c7ec14610126575b600080fd5b6101026104f8565b604080516001600160a01b039092168252519081900360200190f35b610102610507565b61012e610516565b60408051918252519081900360200190f35b61010261051c565b61012e6004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561052b565b61012e6004803603602081101561018a57600080fd5b5035610605565b61012e600480360360408110156101a757600080fd5b506001600160a01b038135169060200135610617565b61020a60048036036102008110156101d457600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0013516610748565b005b61022f6004803603604081101561022257600080fd5b50803590602001356107a6565b604080519115158252519081900360200190f35b61012e600480360360c081101561025957600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091949392602081019250359050600160201b8111156102a657600080fd5b8201836020820111156102b857600080fd5b803590602001918460208302840111600160201b831117156102d957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561032857600080fd5b82018360208201111561033a57600080fd5b803590602001918460208302840111600160201b8311171561035b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460018302840111600160201b831117156103dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ed7945050505050565b61012e6004803603602081101561043457600080fd5b50356115ed565b61022f6004803603608081101561045157600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611884565b61022f6004803603606081101561048d57600080fd5b508035906001600160a01b0360208201351690604001356119e8565b61022f600480360360208110156104bf57600080fd5b5035611b43565b61022f600480360360608110156104dc57600080fd5b508035906001600160a01b036020820135169060400135611b5b565b6038546001600160a01b031681565b6034546001600160a01b031681565b60355481565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610584576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b1580156105d157600080fd5b505afa1580156105e5573d6000803e3d6000fd5b505050506040513d60208110156105fb57600080fd5b5051949350505050565b60366020526000908152604090205481565b60345460009082906001600160a01b03163314610670576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156106be57600080fd5b505afa1580156106d2573d6000803e3d6000fd5b505050506040513d60208110156106e857600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b1580156105d157600080fd5b61077f86868487600b806020026040519081016040528092919082600b60200280828437600092019190915250899150611c819050565b603880546001600160a01b0319166001600160a01b03929092169190911790555050505050565b60345460009083906001600160a01b031633146107ff576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b6000848152603760205260409020600381015460ff16610866576040805162461bcd60e51b815260206004820152601760248201527f6d7573742062652061206c6976652070726f706f73616c000000000000000000604482015290519081900360640190fd5b8360011415610e0d5760038101805460ff1916905560028101805460408051602080840282018101909252828152606093909290918301828280156108d457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108b6575b5050505050905060005b8151811015610d895760008360010182815481106108f857fe5b90600052602060002001549050606061091082611eee565b603854604051630efa075560e11b81529192506000916001600160a01b0390911690631df40eaa90889060048101906064018286835b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019060080190602082600701049283019260010382029150808411610946579050505091505060206040518083038186803b1580156109a757600080fd5b505afa1580156109bb573d6000803e3d6000fd5b505050506040513d60208110156109d157600080fd5b50516040516335b41c4b60e11b81526020600482018181528551602484015285516001600160a01b0390941693636b68389693879383926044909201919085019080838360005b83811015610a30578181015183820152602001610a18565b50505050905090810190601f168015610a5d5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610a7a57600080fd5b505afa158015610a8e573d6000803e3d6000fd5b505050506040513d6020811015610aa457600080fd5b505160335460408051638da5cb5b60e01b815290519293506000926001600160a01b0390921691638da5cb5b91600480820192602092909190829003018186803b158015610af157600080fd5b505afa158015610b05573d6000803e3d6000fd5b505050506040513d6020811015610b1b57600080fd5b505186519091506000906001600160a01b03831690632bf1645890899089908110610b4257fe5b60200260200101518560405160240180826001600160a01b03168152602001915050604051602081830303815290604052631b2ce7f360e11b6001600160e01b0319166020820180516001600160e01b03838183161783525050505060006040518463ffffffff1660e01b815260040180846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610c01578181015183820152602001610be9565b50505050905090810190601f168015610c2e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c4f57600080fd5b505af1158015610c63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610c8c57600080fd5b815160208301805160405192949293830192919084600160201b821115610cb257600080fd5b908301906020820185811115610cc757600080fd5b8251600160201b811182820188101715610ce057600080fd5b82525081516020918201929091019080838360005b83811015610d0d578181015183820152602001610cf5565b50505050905090810190601f168015610d3a5780820380516001836020036101000a031916815260200191505b5060405250505050905080610d78576000878781518110610d5757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b5050600190930192506108de915050565b5060335460408051602080825284518183015284516001600160a01b03909416937f46b8ba2f89eecbe06b4e49568dd05bcdc85759f982a55b8d2448c701577cf39b93869392839291830191818601910280838360005b83811015610df8578181015183820152602001610de0565b505050509050019250505060405180910390a2505b600085815260376020526040812090610e26828261212d565b610e34600183016000612134565b610e42600283016000612134565b50600301805460ff1916905560335460405186916001600160a01b0316907f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe90600090a360335460408051600187148152905187926001600160a01b0316917fd8b58d7c4ba1519b89f0a4b59f85c776d1bb2876a5087a4e604403c4c3c69f6d919081900360200190a3506001949350505050565b60335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610f1c57600080fd5b505afa158015610f30573d6000803e3d6000fd5b505050506040513d6020811015610f4657600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b158015610f9057600080fd5b505afa158015610fa4573d6000803e3d6000fd5b505050506040513d6020811015610fba57600080fd5b5051611008576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b603c845111156110495760405162461bcd60e51b815260040180806020018281038252602881526020018061235f6028913960400191505060405180910390fd5b82518451146110895760405162461bcd60e51b81526004018080602001828103825260378152602001806122fa6037913960400191505060405180910390fd5b603854604051631ae7200b60e11b81526001600160a01b03909116906335ce40169087906004018082606080838360005b838110156110d25781810151838201526020016110ba565b5050505090500191505060206040518083038186803b1580156110f457600080fd5b505afa158015611108573d6000803e3d6000fd5b505050506040513d602081101561111e57600080fd5b505161115b5760405162461bcd60e51b815260040180806020018281038252602e815260200180612331602e913960400191505060405180910390fd5b60005b835181101561133f57603854604051630efa075560e11b81526000916001600160a01b031690631df40eaa908990600401808260608083838a5b838110156111b0578181015183820152602001611198565b5050505090500191505060206040518083038186803b1580156111d257600080fd5b505afa1580156111e6573d6000803e3d6000fd5b505050506040513d60208110156111fc57600080fd5b505186516001600160a01b0390911690636b6838969061122f9089908690811061122257fe5b6020026020010151611eee565b6040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561127b578181015183820152602001611263565b50505050905090810190601f1680156112a85780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1580156112c557600080fd5b505afa1580156112d9573d6000803e3d6000fd5b505050506040513d60208110156112ef57600080fd5b50516001600160a01b031614156113375760405162461bcd60e51b815260040180806020018281038252602f8152602001806123b5602f913960400191505060405180910390fd5b60010161115e565b5060345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b50516040805160808101825288815260208181018990528183018890526001606083015260008481526037909152919091208151929350909161141b9082906003612155565b50602082810151805161143492600185019201906121fd565b5060408201518051611450916002840191602090910190612244565b50606091820151600391909101805460ff1916911515919091179055600082815260366020526040808220439055603354905184936001600160a01b03909216927f8e0f592dd8219624d327cf775f602bbbc5547e2db7af547d55de187aa0bd6970928b928b928b928b9291829187918190849084905b838110156114df5781810151838201526020016114c7565b50505050905001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561152a578181015183820152602001611512565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611569578181015183820152602001611551565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156115a557818101518382015260200161158d565b50505050905090810190601f1680156115d25780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a395945050505050565b60345460009082906001600160a01b03163314611646576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561169457600080fd5b505afa1580156116a8573d6000803e3d6000fd5b505050506040513d60208110156116be57600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b15801561170857600080fd5b505afa15801561171c573d6000803e3d6000fd5b505050506040513d602081101561173257600080fd5b5051611780576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ce57600080fd5b505afa1580156117e2573d6000803e3d6000fd5b505050506040513d60208110156117f857600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b15801561185157600080fd5b505afa158015611865573d6000803e3d6000fd5b505050506040513d602081101561187b57600080fd5b50519392505050565b60345460009082906001600160a01b031633146118dd576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561192b57600080fd5b505afa15801561193f573d6000803e3d6000fd5b505050506040513d602081101561195557600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050506040513d60208110156119dc57600080fd5b50519695505050505050565b60345460009082906001600160a01b03163314611a41576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8f57600080fd5b505afa158015611aa3573d6000803e3d6000fd5b505050506040513d6020811015611ab957600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050506040513d6020811015611b3857600080fd5b505195945050505050565b60376020526000908152604090206003015460ff1681565b60345460009082906001600160a01b03163314611bb4576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0257600080fd5b505afa158015611c16573d6000803e3d6000fd5b505050506040513d6020811015611c2c57600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b158015611b0e57600080fd5b6001600160a01b038416611cdc576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b611ce58561200e565b603480546001600160a01b0319166001600160a01b03861617905582611ee1576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b83811015611d4f578181015183820152602001611d37565b50505050905001826001600160a01b031681526020019250505060206040518083038186803b158015611d8157600080fd5b505afa158015611d95573d6000803e3d6000fd5b505050506040513d6020811015611dab57600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b158015611dfd57600080fd5b505afa158015611e11573d6000803e3d6000fd5b505050506040513d6101a0811015611e2857600080fd5b5051905080611eda57604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b83811015611e79578181015183820152602001611e61565b50505050905001826001600160a01b0316815260200192505050602060405180830381600087803b158015611ead57600080fd5b505af1158015611ec1573d6000803e3d6000fd5b505050506040513d6020811015611ed757600080fd5b50505b5050611ee7565b60358390555b5050505050565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b6020811015611f6c576008810260020a85026001600160f81b0319811615611f635780848481518110611f4557fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101611f16565b60608267ffffffffffffffff81118015611f8557600080fd5b506040519080825280601f01601f191660200182016040528015611fb0576020820181803683370190505b509050600091505b8282101561200557838281518110611fcc57fe5b602001015160f81c60f81b818381518110611fe357fe5b60200101906001600160f81b031916908160001a905350600190910190611fb8565b95945050505050565b600054610100900460ff16806120275750612027612127565b80612035575060005460ff16155b6120705760405162461bcd60e51b815260040180806020018281038252602e815260200180612387602e913960400191505060405180910390fd5b600054610100900460ff1615801561209b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382166120f6576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015612123576000805461ff00191690555b5050565b303b1590565b5060009055565b508054600082559060005260206000209081019061215291906122a5565b50565b6001830191839082156121ed5791602002820160005b838211156121b757835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550926020019260080160208160070104928301926001030261216b565b80156121eb5782816101000a81549067ffffffffffffffff02191690556008016020816007010492830192600103026121b7565b505b506121f99291506122ba565b5090565b828054828255906000526020600020908101928215612238579160200282015b8281111561223857825182559160200191906001019061221d565b506121f99291506122a5565b828054828255906000526020600020908101928215612299579160200282015b8281111561229957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612264565b506121f99291506122da565b5b808211156121f957600081556001016122a6565b5b808211156121f957805467ffffffffffffffff191681556001016122bb565b5b808211156121f95780546001600160a01b03191681556001016122db56fe75706772616465206e616d6520616e64206164647265737320617272617973206d757374206861766520657175616c206c656e677468735370656369666965642076657273696f6e20646f65736e277420657869737420696e20746865205061636b61676563616e207570677261646520757020746f20363020636f6e74726163747320617420612074696d65436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564436f6e7472616374206e616d6520646f6573206e6f7420657869737420696e2041726348697665207061636b616765a2646970667358221220abe957ec6c5a09257ed3a606cdfb6f6962bbef9a1f7ba4cdcccedf6f85e423d564736f6c634300060c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063985e313f11610097578063bea75f2811610066578063bea75f281461043b578063d29b5d2f14610477578063d8145e2d146104a9578063f81f8bf6146104c6576100f5565b8063985e313f146101bd5780639d4c162d1461020c578063a191f8e814610243578063b551c3731461041e576100f5565b80635aef7de6116100d35780635aef7de6146101405780636b8eb403146101485780637a5cb92c146101745780639588378e14610191576100f5565b80632b304bc5146100fa5780633edf7ca11461011e5780634ea2c7ec14610126575b600080fd5b6101026104f8565b604080516001600160a01b039092168252519081900360200190f35b610102610507565b61012e610516565b60408051918252519081900360200190f35b61010261051c565b61012e6004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561052b565b61012e6004803603602081101561018a57600080fd5b5035610605565b61012e600480360360408110156101a757600080fd5b506001600160a01b038135169060200135610617565b61020a60048036036102008110156101d457600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0013516610748565b005b61022f6004803603604081101561022257600080fd5b50803590602001356107a6565b604080519115158252519081900360200190f35b61012e600480360360c081101561025957600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091949392602081019250359050600160201b8111156102a657600080fd5b8201836020820111156102b857600080fd5b803590602001918460208302840111600160201b831117156102d957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561032857600080fd5b82018360208201111561033a57600080fd5b803590602001918460208302840111600160201b8311171561035b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460018302840111600160201b831117156103dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ed7945050505050565b61012e6004803603602081101561043457600080fd5b50356115ed565b61022f6004803603608081101561045157600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611884565b61022f6004803603606081101561048d57600080fd5b508035906001600160a01b0360208201351690604001356119e8565b61022f600480360360208110156104bf57600080fd5b5035611b43565b61022f600480360360608110156104dc57600080fd5b508035906001600160a01b036020820135169060400135611b5b565b6038546001600160a01b031681565b6034546001600160a01b031681565b60355481565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610584576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b1580156105d157600080fd5b505afa1580156105e5573d6000803e3d6000fd5b505050506040513d60208110156105fb57600080fd5b5051949350505050565b60366020526000908152604090205481565b60345460009082906001600160a01b03163314610670576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156106be57600080fd5b505afa1580156106d2573d6000803e3d6000fd5b505050506040513d60208110156106e857600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b1580156105d157600080fd5b61077f86868487600b806020026040519081016040528092919082600b60200280828437600092019190915250899150611c819050565b603880546001600160a01b0319166001600160a01b03929092169190911790555050505050565b60345460009083906001600160a01b031633146107ff576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b6000848152603760205260409020600381015460ff16610866576040805162461bcd60e51b815260206004820152601760248201527f6d7573742062652061206c6976652070726f706f73616c000000000000000000604482015290519081900360640190fd5b8360011415610e0d5760038101805460ff1916905560028101805460408051602080840282018101909252828152606093909290918301828280156108d457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108b6575b5050505050905060005b8151811015610d895760008360010182815481106108f857fe5b90600052602060002001549050606061091082611eee565b603854604051630efa075560e11b81529192506000916001600160a01b0390911690631df40eaa90889060048101906064018286835b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019060080190602082600701049283019260010382029150808411610946579050505091505060206040518083038186803b1580156109a757600080fd5b505afa1580156109bb573d6000803e3d6000fd5b505050506040513d60208110156109d157600080fd5b50516040516335b41c4b60e11b81526020600482018181528551602484015285516001600160a01b0390941693636b68389693879383926044909201919085019080838360005b83811015610a30578181015183820152602001610a18565b50505050905090810190601f168015610a5d5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610a7a57600080fd5b505afa158015610a8e573d6000803e3d6000fd5b505050506040513d6020811015610aa457600080fd5b505160335460408051638da5cb5b60e01b815290519293506000926001600160a01b0390921691638da5cb5b91600480820192602092909190829003018186803b158015610af157600080fd5b505afa158015610b05573d6000803e3d6000fd5b505050506040513d6020811015610b1b57600080fd5b505186519091506000906001600160a01b03831690632bf1645890899089908110610b4257fe5b60200260200101518560405160240180826001600160a01b03168152602001915050604051602081830303815290604052631b2ce7f360e11b6001600160e01b0319166020820180516001600160e01b03838183161783525050505060006040518463ffffffff1660e01b815260040180846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610c01578181015183820152602001610be9565b50505050905090810190601f168015610c2e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c4f57600080fd5b505af1158015610c63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610c8c57600080fd5b815160208301805160405192949293830192919084600160201b821115610cb257600080fd5b908301906020820185811115610cc757600080fd5b8251600160201b811182820188101715610ce057600080fd5b82525081516020918201929091019080838360005b83811015610d0d578181015183820152602001610cf5565b50505050905090810190601f168015610d3a5780820380516001836020036101000a031916815260200191505b5060405250505050905080610d78576000878781518110610d5757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b5050600190930192506108de915050565b5060335460408051602080825284518183015284516001600160a01b03909416937f46b8ba2f89eecbe06b4e49568dd05bcdc85759f982a55b8d2448c701577cf39b93869392839291830191818601910280838360005b83811015610df8578181015183820152602001610de0565b505050509050019250505060405180910390a2505b600085815260376020526040812090610e26828261212d565b610e34600183016000612134565b610e42600283016000612134565b50600301805460ff1916905560335460405186916001600160a01b0316907f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe90600090a360335460408051600187148152905187926001600160a01b0316917fd8b58d7c4ba1519b89f0a4b59f85c776d1bb2876a5087a4e604403c4c3c69f6d919081900360200190a3506001949350505050565b60335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610f1c57600080fd5b505afa158015610f30573d6000803e3d6000fd5b505050506040513d6020811015610f4657600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b158015610f9057600080fd5b505afa158015610fa4573d6000803e3d6000fd5b505050506040513d6020811015610fba57600080fd5b5051611008576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b603c845111156110495760405162461bcd60e51b815260040180806020018281038252602881526020018061235f6028913960400191505060405180910390fd5b82518451146110895760405162461bcd60e51b81526004018080602001828103825260378152602001806122fa6037913960400191505060405180910390fd5b603854604051631ae7200b60e11b81526001600160a01b03909116906335ce40169087906004018082606080838360005b838110156110d25781810151838201526020016110ba565b5050505090500191505060206040518083038186803b1580156110f457600080fd5b505afa158015611108573d6000803e3d6000fd5b505050506040513d602081101561111e57600080fd5b505161115b5760405162461bcd60e51b815260040180806020018281038252602e815260200180612331602e913960400191505060405180910390fd5b60005b835181101561133f57603854604051630efa075560e11b81526000916001600160a01b031690631df40eaa908990600401808260608083838a5b838110156111b0578181015183820152602001611198565b5050505090500191505060206040518083038186803b1580156111d257600080fd5b505afa1580156111e6573d6000803e3d6000fd5b505050506040513d60208110156111fc57600080fd5b505186516001600160a01b0390911690636b6838969061122f9089908690811061122257fe5b6020026020010151611eee565b6040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561127b578181015183820152602001611263565b50505050905090810190601f1680156112a85780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1580156112c557600080fd5b505afa1580156112d9573d6000803e3d6000fd5b505050506040513d60208110156112ef57600080fd5b50516001600160a01b031614156113375760405162461bcd60e51b815260040180806020018281038252602f8152602001806123b5602f913960400191505060405180910390fd5b60010161115e565b5060345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b50516040805160808101825288815260208181018990528183018890526001606083015260008481526037909152919091208151929350909161141b9082906003612155565b50602082810151805161143492600185019201906121fd565b5060408201518051611450916002840191602090910190612244565b50606091820151600391909101805460ff1916911515919091179055600082815260366020526040808220439055603354905184936001600160a01b03909216927f8e0f592dd8219624d327cf775f602bbbc5547e2db7af547d55de187aa0bd6970928b928b928b928b9291829187918190849084905b838110156114df5781810151838201526020016114c7565b50505050905001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561152a578181015183820152602001611512565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611569578181015183820152602001611551565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156115a557818101518382015260200161158d565b50505050905090810190601f1680156115d25780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a395945050505050565b60345460009082906001600160a01b03163314611646576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561169457600080fd5b505afa1580156116a8573d6000803e3d6000fd5b505050506040513d60208110156116be57600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b15801561170857600080fd5b505afa15801561171c573d6000803e3d6000fd5b505050506040513d602081101561173257600080fd5b5051611780576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ce57600080fd5b505afa1580156117e2573d6000803e3d6000fd5b505050506040513d60208110156117f857600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b15801561185157600080fd5b505afa158015611865573d6000803e3d6000fd5b505050506040513d602081101561187b57600080fd5b50519392505050565b60345460009082906001600160a01b031633146118dd576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561192b57600080fd5b505afa15801561193f573d6000803e3d6000fd5b505050506040513d602081101561195557600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050506040513d60208110156119dc57600080fd5b50519695505050505050565b60345460009082906001600160a01b03163314611a41576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8f57600080fd5b505afa158015611aa3573d6000803e3d6000fd5b505050506040513d6020811015611ab957600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b505050506040513d6020811015611b3857600080fd5b505195945050505050565b60376020526000908152604090206003015460ff1681565b60345460009082906001600160a01b03163314611bb4576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0257600080fd5b505afa158015611c16573d6000803e3d6000fd5b505050506040513d6020811015611c2c57600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b158015611b0e57600080fd5b6001600160a01b038416611cdc576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b611ce58561200e565b603480546001600160a01b0319166001600160a01b03861617905582611ee1576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b83811015611d4f578181015183820152602001611d37565b50505050905001826001600160a01b031681526020019250505060206040518083038186803b158015611d8157600080fd5b505afa158015611d95573d6000803e3d6000fd5b505050506040513d6020811015611dab57600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b158015611dfd57600080fd5b505afa158015611e11573d6000803e3d6000fd5b505050506040513d6101a0811015611e2857600080fd5b5051905080611eda57604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b83811015611e79578181015183820152602001611e61565b50505050905001826001600160a01b0316815260200192505050602060405180830381600087803b158015611ead57600080fd5b505af1158015611ec1573d6000803e3d6000fd5b505050506040513d6020811015611ed757600080fd5b50505b5050611ee7565b60358390555b5050505050565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b6020811015611f6c576008810260020a85026001600160f81b0319811615611f635780848481518110611f4557fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101611f16565b60608267ffffffffffffffff81118015611f8557600080fd5b506040519080825280601f01601f191660200182016040528015611fb0576020820181803683370190505b509050600091505b8282101561200557838281518110611fcc57fe5b602001015160f81c60f81b818381518110611fe357fe5b60200101906001600160f81b031916908160001a905350600190910190611fb8565b95945050505050565b600054610100900460ff16806120275750612027612127565b80612035575060005460ff16155b6120705760405162461bcd60e51b815260040180806020018281038252602e815260200180612387602e913960400191505060405180910390fd5b600054610100900460ff1615801561209b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382166120f6576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015612123576000805461ff00191690555b5050565b303b1590565b5060009055565b508054600082559060005260206000209081019061215291906122a5565b50565b6001830191839082156121ed5791602002820160005b838211156121b757835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550926020019260080160208160070104928301926001030261216b565b80156121eb5782816101000a81549067ffffffffffffffff02191690556008016020816007010492830192600103026121b7565b505b506121f99291506122ba565b5090565b828054828255906000526020600020908101928215612238579160200282015b8281111561223857825182559160200191906001019061221d565b506121f99291506122a5565b828054828255906000526020600020908101928215612299579160200282015b8281111561229957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612264565b506121f99291506122da565b5b808211156121f957600081556001016122a6565b5b808211156121f957805467ffffffffffffffff191681556001016122bb565b5b808211156121f95780546001600160a01b03191681556001016122db56fe75706772616465206e616d6520616e64206164647265737320617272617973206d757374206861766520657175616c206c656e677468735370656369666965642076657273696f6e20646f65736e277420657869737420696e20746865205061636b61676563616e207570677261646520757020746f20363020636f6e74726163747320617420612074696d65436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564436f6e7472616374206e616d6520646f6573206e6f7420657869737420696e2041726348697665207061636b616765a2646970667358221220abe957ec6c5a09257ed3a606cdfb6f6962bbef9a1f7ba4cdcccedf6f85e423d564736f6c634300060c0033",
"linkReferences": {},
"deployedLinkReferences": {}
}