UNPKG

@gooddollar/goodcontracts

Version:
473 lines 658 kB
{ "contractName": "UpgradeScheme", "abi": [ { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "parameters", "outputs": [ { "name": "voteParams", "type": "bytes32" }, { "name": "intVote", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" }, { "name": "", "type": "bytes32" } ], "name": "organizationsProposals", "outputs": [ { "name": "upgradeContract", "type": "address" }, { "name": "params", "type": "bytes32" }, { "name": "proposalType", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" }, { "name": "", "type": "bytes32" } ], "name": "proposalsInfo", "outputs": [ { "name": "blockNumber", "type": "uint256" }, { "name": "avatar", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_stakingToken", "type": "address" }, { "name": "_proposalId", "type": "bytes32" } ], "name": "balanceOfStakingToken", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" }, { "name": "_proposalId", "type": "bytes32" } ], "name": "reputationOf", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_proposalId", "type": "bytes32" } ], "name": "getTotalReputationSupply", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_stakingToken", "type": "address" }, { "name": "_beneficiary", "type": "address" }, { "name": "_amount", "type": "uint256" }, { "name": "_proposalId", "type": "bytes32" } ], "name": "stakingTokenTransfer", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_amount", "type": "uint256" }, { "name": "_beneficiary", "type": "address" }, { "name": "_proposalId", "type": "bytes32" } ], "name": "mintReputation", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_amount", "type": "uint256" }, { "name": "_beneficiary", "type": "address" }, { "name": "_proposalId", "type": "bytes32" } ], "name": "burnReputation", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "_avatar", "type": "address" }, { "indexed": true, "name": "_proposalId", "type": "bytes32" }, { "indexed": true, "name": "_intVoteInterface", "type": "address" }, { "indexed": false, "name": "_newController", "type": "address" }, { "indexed": false, "name": "_descriptionHash", "type": "string" } ], "name": "NewUpgradeProposal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "_avatar", "type": "address" }, { "indexed": true, "name": "_proposalId", "type": "bytes32" }, { "indexed": true, "name": "_intVoteInterface", "type": "address" }, { "indexed": false, "name": "_newUpgradeScheme", "type": "address" }, { "indexed": false, "name": "_params", "type": "bytes32" }, { "indexed": false, "name": "_descriptionHash", "type": "string" } ], "name": "ChangeUpgradeSchemeProposal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "_avatar", "type": "address" }, { "indexed": true, "name": "_proposalId", "type": "bytes32" }, { "indexed": false, "name": "_param", "type": "int256" } ], "name": "ProposalExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "_avatar", "type": "address" }, { "indexed": true, "name": "_proposalId", "type": "bytes32" } ], "name": "ProposalDeleted", "type": "event" }, { "constant": false, "inputs": [ { "name": "_proposalId", "type": "bytes32" }, { "name": "_param", "type": "int256" } ], "name": "executeProposal", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_voteParams", "type": "bytes32" }, { "name": "_intVote", "type": "address" } ], "name": "setParameters", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_voteParams", "type": "bytes32" }, { "name": "_intVote", "type": "address" } ], "name": "getParametersHash", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": false, "inputs": [ { "name": "_avatar", "type": "address" }, { "name": "_newController", "type": "address" }, { "name": "_descriptionHash", "type": "string" } ], "name": "proposeUpgrade", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_avatar", "type": "address" }, { "name": "_scheme", "type": "address" }, { "name": "_params", "type": "bytes32" }, { "name": "_descriptionHash", "type": "string" } ], "name": "proposeChangeUpgradingScheme", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"parameters\",\"outputs\":[{\"name\":\"voteParams\",\"type\":\"bytes32\"},{\"name\":\"intVote\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"organizationsProposals\",\"outputs\":[{\"name\":\"upgradeContract\",\"type\":\"address\"},{\"name\":\"params\",\"type\":\"bytes32\"},{\"name\":\"proposalType\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_voteParams\",\"type\":\"bytes32\"},{\"name\":\"_intVote\",\"type\":\"address\"}],\"name\":\"getParametersHash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"proposalsInfo\",\"outputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"name\":\"avatar\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteParams\",\"type\":\"bytes32\"},{\"name\":\"_intVote\",\"type\":\"address\"}],\"name\":\"setParameters\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_stakingToken\",\"type\":\"address\"},{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"balanceOfStakingToken\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_avatar\",\"type\":\"address\"},{\"name\":\"_newController\",\"type\":\"address\"},{\"name\":\"_descriptionHash\",\"type\":\"string\"}],\"name\":\"proposeUpgrade\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"reputationOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"name\":\"_param\",\"type\":\"int256\"}],\"name\":\"executeProposal\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"getTotalReputationSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_stakingToken\",\"type\":\"address\"},{\"name\":\"_beneficiary\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"stakingTokenTransfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_beneficiary\",\"type\":\"address\"},{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"mintReputation\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_avatar\",\"type\":\"address\"},{\"name\":\"_scheme\",\"type\":\"address\"},{\"name\":\"_params\",\"type\":\"bytes32\"},{\"name\":\"_descriptionHash\",\"type\":\"string\"}],\"name\":\"proposeChangeUpgradingScheme\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_beneficiary\",\"type\":\"address\"},{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"burnReputation\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_avatar\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_intVoteInterface\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_newController\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_descriptionHash\",\"type\":\"string\"}],\"name\":\"NewUpgradeProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_avatar\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_intVoteInterface\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_newUpgradeScheme\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_params\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_descriptionHash\",\"type\":\"string\"}],\"name\":\"ChangeUpgradeSchemeProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_avatar\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_param\",\"type\":\"int256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_avatar\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"ProposalDeleted\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"The scheme is used to upgrade the controller of an organization to a new controller.\",\"methods\":{\"executeProposal(bytes32,int256)\":{\"details\":\"execution of proposals, can only be called by the voting machine in which the vote is held.\",\"params\":{\"_param\":\"a parameter of the voting result, 1 yes and 2 is no.\",\"_proposalId\":\"the ID of the voting in the voting machine\"}},\"getParametersHash(bytes32,address)\":{\"details\":\"return a hash of the given parameters\"},\"proposeChangeUpgradingScheme(address,address,bytes32,string)\":{\"details\":\"propose to replace this scheme by another upgrading scheme\",\"params\":{\"_avatar\":\"avatar of the organization\",\"_descriptionHash\":\"proposal description hash\",\"_params\":\"the parameters of the new upgrading scheme\",\"_scheme\":\"address of the new upgrading scheme\"},\"return\":\"an id which represents the proposal\"},\"proposeUpgrade(address,address,string)\":{\"details\":\"propose an upgrade of the organization's controller\",\"params\":{\"_avatar\":\"avatar of the organization\",\"_descriptionHash\":\"proposal description hash\",\"_newController\":\"address of the new controller that is being proposed\"},\"return\":\"an id which represents the proposal\"},\"setParameters(bytes32,address)\":{\"details\":\"hash the parameters, save them if necessary, and return the hash value\"}},\"title\":\"A scheme to manage the upgrade of an organization.\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@daostack/arc/contracts/universalSchemes/UpgradeScheme.sol\":\"UpgradeScheme\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@daostack/arc/contracts/controller/Avatar.sol\":{\"keccak256\":\"0x4e4fb9d3bc21f42fbfc6a01e9f8aa483a59e9f447b0d604f55b587a81ec09ef4\",\"urls\":[\"bzzr://b0af60e651a75274a028dc4b53d06091a46ca0efa3bfb4153879e76cf86a49dc\"]},\"@daostack/arc/contracts/controller/ControllerInterface.sol\":{\"keccak256\":\"0x933e92612c90f292c7b59908958b003f1a13d90b97bed0572b566353c20974dc\",\"urls\":[\"bzzr://e8050774c20b9b22636b47cdd353eaf5df72e0bca8f2b8569365be30f4eaef0c\"]},\"@daostack/arc/contracts/controller/DAOToken.sol\":{\"keccak256\":\"0x9b213e4e3ceeffcfc1c962a43b70b8d763d8091a2dd713fc1989b97bb68786e6\",\"urls\":[\"bzzr://7ba306fdbad344e01474e3ae9c37b27b64efdc1cb17ffc0f3ec1c4427fde359d\"]},\"@daostack/arc/contracts/globalConstraints/GlobalConstraintInterface.sol\":{\"keccak256\":\"0xc006c4591ec10b845a56e13f6791db2c428610953034686d52b2a934b6c8f36f\",\"urls\":[\"bzzr://d1f293a0bbaa292296a83977cb36a14048db404a32e3f6aa9bd79ea61ac3c4c3\"]},\"@daostack/arc/contracts/libs/SafeERC20.sol\":{\"keccak256\":\"0xf6727d432f67046145b078f40c1cc4f6be7b0d12a6678ecaf457edf7550d244c\",\"urls\":[\"bzzr://cd706a2dc7540d093b591a280b464256c596ddad598b68886e6db2e7958f9916\"]},\"@daostack/arc/contracts/universalSchemes/UniversalScheme.sol\":{\"keccak256\":\"0xcfdb7d336d21b3b16a31125d3bd8c88f7c4c944510f4488162247badb6411017\",\"urls\":[\"bzzr://6cd99ec0b19ae06f7845a3ca56d2dc43ec122cfa809969248e6742e0c56076ca\"]},\"@daostack/arc/contracts/universalSchemes/UniversalSchemeInterface.sol\":{\"keccak256\":\"0x956b0dbe20b6aeea74565a9204f72fba1580874d27cd63955f93e9491cabb6b1\",\"urls\":[\"bzzr://29eac5d525cc39129df30c5b8deada4350d40c5261a85ce0b29c12fe80b10b15\"]},\"@daostack/arc/contracts/universalSchemes/UpgradeScheme.sol\":{\"keccak256\":\"0xf1b96fe311f836e717959900926f7e3d7b55bf92d46e459bb8e021a9912156e8\",\"urls\":[\"bzzr://a38fa437eae408db640573db44948b00b3308a3831176caccf9a42ae909b2c41\"]},\"@daostack/arc/contracts/votingMachines/VotingMachineCallbacks.sol\":{\"keccak256\":\"0x4052c6f57add891f5f6514a7837f54955ac1f3ad4654fa45d864e4aad19864ba\",\"urls\":[\"bzzr://b013e9ee810bf43f6de254cc61dceb59a9cf102d795d4abc527c2989ff5df568\"]},\"@daostack/infra/contracts/Reputation.sol\":{\"keccak256\":\"0x3d226dac0fe7d758f0287fb28bc25fcec1f69d19888ae3a550fa49856d61c482\",\"urls\":[\"bzzr://7f219e1874d4f1aea860cc665b75015797f55f149e9bf490abab5d7ad2adfeb9\"]},\"@daostack/infra/contracts/libs/RealMath.sol\":{\"keccak256\":\"0x3ee79c4b483da327916ac36f9d5cc6a1f2f0363db3ad06793ec67f46e1f653db\",\"urls\":[\"bzzr://548cdb33afa45d2d4bfb0ed3f557257f77c7d9ae142326d04584e20d00c153d3\"]},\"@daostack/infra/contracts/votingMachines/GenesisProtocol.sol\":{\"keccak256\":\"0x0321da6019e0e1a7fc4e1ca484d7d5d376805abb17f9eb9c46a6731e9dfe58dc\",\"urls\":[\"bzzr://4cf93479ffb97b0f90d2974a0404136bfda093edb9e4b6dd3d9737a29202ee63\"]},\"@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol\":{\"keccak256\":\"0x2bf5fba64fbda5605b9250ea8ca6d8e28dab41fb0e2b43c9145b91e1d0425eef\",\"urls\":[\"bzzr://bf7d5bb906c1f0f627d028214b0d8d2cbf0f766ead5d7b27f116b834255ffa76\"]},\"@daostack/infra/contracts/votingMachines/IntVoteInterface.sol\":{\"keccak256\":\"0x877991da94b1fe9c2accf69367b32fff474c4e4f7897e9cf5a61fa5d1378908f\",\"urls\":[\"bzzr://a7bb7b3a39a1553cb39378801976c8b192b801f9627098385eca24e62440826b\"]},\"@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol\":{\"keccak256\":\"0xb80a153793e1723b35e70ba1c3800975fbc1fae63c989cfb8134a4e58085e181\",\"urls\":[\"bzzr://e5ff7e9f77e596fff366bb31326a7d2ca82d0fdeed1d612c09589eb9fb69d9bf\"]},\"@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol\":{\"keccak256\":\"0xec215d305f0aa5a5193b6f0302a1aa6bb84e85460167f80b261faf9d30564563\",\"urls\":[\"bzzr://baae21ef9ee3e315191aece7767d3a9ab62810aff5063ad144cb2120eebdabf0\"]},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xb48974d92a87053dc1d6c5389f3d1b2ad522dec23afcb508eaa935d98dfdc0b6\",\"urls\":[\"bzzr://e665a84309432c27a26e622665dd97ff29d4d6ad7ad655d6e2c50226a5e99b56\"]},\"openzeppelin-solidity/contracts/math/Math.sol\":{\"keccak256\":\"0x37605dd0606b349cfb1b679892e1bb0ef4ddc16dedb06e229cc4402610a7a848\",\"urls\":[\"bzzr://c2253b0f57a80ee1ab7d90192aec144310e9c9a420d2ca2fcfd5999ae66e8f33\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzzr://08894efa2a557982070beda6a81a032407e70532d24bdafe80d39660c74904d9\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzzr://80cd02a56e6e33504318124d0d645c82e615cc8a4b5829cc9d82d17635c644c8\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0xa3e68fd7f987c8fbdaf4867d428a69a15f3cf2f69709a5b0a0fbef750b0e6fbc\",\"urls\":[\"bzzr://f4ebb7c5b9e429b98b07e2caca6156c13c3724e9b1191cca8423ab8427bc6265\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x5c731061b804fa256fc8c05150eafe5d20b6bb94541a8f187912bf84f7033f34\",\"urls\":[\"bzzr://63fc4af0d7a99a770925b96a6cf48f25fc00d30274266f82db05f30baa238267\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b50611b9f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ee5760003560e060020a900480639588378e11610090578063bea75f281161006a578063bea75f2814610386578063d29b5d2f146103c2578063da816894146103f4578063f81f8bf6146104ba576100ee565b80639588378e146103065780639d4c162d14610332578063b551c37314610369576100ee565b806360bdbb3f116100cc57806360bdbb3f146101c357806368e14dac146101ef5780636b8eb4031461021b57806374ad5c3314610247576100ee565b806302506804146100f357806306e3a978146101315780632453732a14610185575b600080fd5b6101106004803603602081101561010957600080fd5b50356104ec565b60408051928352600160a060020a0390911660208301528051918290030190f35b61015d6004803603604081101561014757600080fd5b50600160a060020a03813516906020013561050e565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b6101b16004803603604081101561019b57600080fd5b5080359060200135600160a060020a0316610542565b60408051918252519081900360200190f35b610110600480360360408110156101d957600080fd5b50600160a060020a038135169060200135610589565b6101b16004803603604081101561020557600080fd5b5080359060200135600160a060020a03166105b3565b6101b16004803603604081101561023157600080fd5b50600160a060020a038135169060200135610605565b6101b16004803603606081101561025d57600080fd5b600160a060020a03823581169260208101359091169181019060608101604082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106c8945050505050565b6101b16004803603604081101561031c57600080fd5b50600160a060020a03813516906020013561094c565b6103556004803603604081101561034857600080fd5b5080359060200135610a78565b604080519115158252519081900360200190f35b6101b16004803603602081101561037f57600080fd5b5035610f6f565b6103556004803603608081101561039c57600080fd5b50600160a060020a038135811691602081013590911690604081013590606001356110c7565b610355600480360360608110156103d857600080fd5b50803590600160a060020a036020820135169060400135611285565b6101b16004803603608081101561040a57600080fd5b600160a060020a0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561044557600080fd5b82018360208201111561045757600080fd5b8035906020019184600183028401116401000000008311171561047957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061143a945050505050565b610355600480360360608110156104d057600080fd5b50803590600160a060020a036020820135169060400135611747565b60026020526000908152604090208054600190910154600160a060020a031682565b60016020818152600093845260408085209091529183529120805491810154600290910154600160a060020a039092169183565b6040805160208082018590526c01000000000000000000000000600160a060020a038516028284015282516034818403018152605490920190925280519101205b92915050565b600060208181529281526040808220909352908152208054600190910154600160a060020a031682565b6000806105c08484610542565b60008181526002602052604090208581556001018054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff1990911617905591505092915050565b33600090815260208181526040808320848452909152812060010154600160a060020a031680151561063b576000915050610583565b83600160a060020a03166370a08231826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561069457600080fd5b505afa1580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b5051949350505050565b60006106d2611b1c565b600260006106df876118c4565b815260208082019290925260409081016000908120825180840184528154808252600190920154600160a060020a0390811682870181905285517f88737b5e000000000000000000000000000000000000000000000000000000008152600260048201526024810194909452336044850152908b166064840152935190955091936388737b5e9260848084019382900301818787803b15801561078157600080fd5b505af1158015610795573d6000803e3d6000fd5b505050506040513d60208110156107ab57600080fd5b505190506107b7611b33565b506040805160608082018352600160a060020a038881168084526000602080860182815260018789018181528f87168086528285528a86208c875285528a86208a51815473ffffffffffffffffffffffffffffffffffffffff1916908a16178155935192840192909255516002909201919091558982015188519485528483018981528d51998601999099528c519798951696899691957f5378fb6111ece3f1032a0e9b60cb0caa886ec384da4300631570473ae5a4fbc0958f958f95919492939285019291860191908190849084905b838110156108a0578181015183820152602001610888565b50505050905090810190601f1680156108cd5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a450604080518082018252438152600160a060020a03978816602080830191825294850151891660009081528086528381208582529095529190932092518355516001909201805473ffffffffffffffffffffffffffffffffffffffff19169290961691909117909455509192915050565b6000610956611b1c565b503360009081526020818152604080832085845282529182902082518084019093528054835260010154600160a060020a0316908201819052151561099f576000915050610583565b8060200151600160a060020a03166389ae1c906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d6020811015610a0957600080fd5b50518151604080517f4ee2cd7e000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482019390935290519190921691634ee2cd7e916044808301926020929190829003018186803b15801561069457600080fd5b336000908152602081815260408083208584529091528120600101548390600160a060020a03161515610ae3576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611b54833981519152604482015290519081900360640190fd5b33600090815260208181526040808320878452909152902060010154600160a060020a0316610b10611b33565b50600160a060020a0380821660009081526001602081815260408084208a85528252928390208351606081018552815490951685529182015490840152600201549082018190521515610b6257600080fd5b600160a060020a03821660008181526001602081815260408084208b8552909152808320805473ffffffffffffffffffffffffffffffffffffffff191681559182018390556002909101829055518892917f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe91a38460011415610f2357600082600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d6020811015610c4757600080fd5b5051604083015190915060011415610cff578151604080517f42427bf8000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015285831660248201529051918316916342427bf8916044808201926020929091908290030181600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b505050506040513d6020811015610cf257600080fd5b50511515610cff57600080fd5b816040015160021415610f2157604080517f9b51e35a000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0385811660248301529151600092841691639b51e35a916044808301926020929190829003018186803b158015610d7657600080fd5b505afa158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b50518351602085810151604080517fe869d45f000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092527fffffffff00000000000000000000000000000000000000000000000000000000851660448301528884166064830152519394509185169263e869d45f9260848082019392918290030181600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b505050506040513d6020811015610e6f57600080fd5b50511515610e7c57600080fd5b8251600160a060020a03163014610f1f5781600160a060020a0316636c525b13856040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b50511515610f1f57600080fd5b505b505b6040805186815290518791600160a060020a038516917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc09181900360200190a350600195945050505050565b6000610f79611b1c565b503360009081526020818152604080832085845282529182902082518084019093528054835260010154600160a060020a03169082018190521515610fc25760009150506110c2565b8060200151600160a060020a03166389ae1c906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d602081101561102c57600080fd5b50518151604080517f981b24d0000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a039092169163981b24d091602480820192602092909190829003018186803b15801561109257600080fd5b505afa1580156110a6573d6000803e3d6000fd5b505050506040513d60208110156110bc57600080fd5b50519150505b919050565b336000908152602081815260408083208484529091528120600101548290600160a060020a03161515611132576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611b54833981519152604482015290519081900360640190fd5b33600090815260208181526040808320868452909152902060010154600160a060020a031680151561116857600092505061127c565b80600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156111a457600080fd5b505afa1580156111b8573d6000803e3d6000fd5b505050506040513d60208110156111ce57600080fd5b5051604080517fb9a04cdd000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015289811660248301526044820189905284811660648301529151919092169163b9a04cdd9160848083019260209291908290030181600087803b15801561124c57600080fd5b505af1158015611260573d6000803e3d6000fd5b505050506040513d602081101561127657600080fd5b50519250505b50949350505050565b336000908152602081815260408083208484529091528120600101548290600160a060020a031615156112f0576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611b54833981519152604482015290519081900360640190fd5b33600090815260208181526040808320868452909152902060010154600160a060020a0316801515611326576000925050611432565b80600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561136257600080fd5b505afa158015611376573d6000803e3d6000fd5b505050506040513d602081101561138c57600080fd5b5051604080517feaf994b200000000000000000000000000000000000000000000000000000000815260048101899052600160a060020a03888116602483015284811660448301529151919092169163eaf994b29160648083019260209291908290030181600087803b15801561140257600080fd5b505af1158015611416573d6000803e3d6000fd5b505050506040513d602081101561142c57600080fd5b50519250505b509392505050565b6000611444611b1c565b60026000611451886118c4565b815260208082019290925260409081016000908120825180840184528154808252600190920154600160a060020a0390811682870181905285517f88737b5e000000000000000000000000000000000000000000000000000000008152600260048201526024810194909452336044850152908c16606484015293519095509293919284926388737b5e926084808201939182900301818787803b1580156114f857600080fd5b505af115801561150c573d6000803e3d6000fd5b505050506040513d602081101561152257600080fd5b5051600160a060020a03891660009081526001602090815260408083208484529091529020600201549091501561155857600080fd5b611560611b33565b60606040519081016040528089600160a060020a031681526020018881526020016002815250905080600160008b600160a060020a0316600160a060020a03168152602001908152602001600020600084815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a0316021790555060208201518160010155604082015181600201559050508360200151600160a060020a0316828a600160a060020a03167f54db9b1773952b7528e7872ab8f8411827fe4d14f722aecf6dc0f0fd59de99b88b8b8b6040518084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561169b578181015183820152602001611683565b50505050905090810190601f1680156116c85780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a450604080518082018252438152600160a060020a03998a166020808301918252948b1660009081528086528381208582529095529190932092518355516001909201805473ffffffffffffffffffffffffffffffffffffffff191692909816919091179096555093949350505050565b336000908152602081815260408083208484529091528120600101548290600160a060020a031615156117b2576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611b54833981519152604482015290519081900360640190fd5b33600090815260208181526040808320868452909152902060010154600160a060020a03168015156117e8576000925050611432565b80600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561182457600080fd5b505afa158015611838573d6000803e3d6000fd5b505050506040513d602081101561184e57600080fd5b5051604080517f6e94d27800000000000000000000000000000000000000000000000000000000815260048101899052600160a060020a038881166024830152848116604483015291519190921691636e94d2789160648083019260209291908290030181600087803b15801561140257600080fd5b600081600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561190257600080fd5b505afa158015611916573d6000803e3d6000fd5b505050506040513d602081101561192c57600080fd5b5051604080517f9be2faed000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a03858116602483015291519190921691639be2faed916044808301926020929190829003018186803b15801561199757600080fd5b505afa1580156119ab573d6000803e3d6000fd5b505050506040513d60208110156119c157600080fd5b50511515611a19576040805160e560020a62461bcd02815260206004820152601860248201527f736368656d65206973206e6f7420726567697374657265640000000000000000604482015290519081900360640190fd5b81600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611a5557600080fd5b505afa158015611a69573d6000803e3d6000fd5b505050506040513d6020811015611a7f57600080fd5b5051604080517f1c4d5608000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a03858116602483015291519190921691631c4d5608916044808301926020929190829003018186803b158015611aea57600080fd5b505afa158015611afe573d6000803e3d6000fd5b505050506040513d6020811015611b1457600080fd5b505192915050565b604080518082019091526000808252602082015290565b60408051606081018252600080825260208201819052918101919091529056fe6f6e6c7920566f74696e674d616368696e650000000000000000000000000000a165627a7a72305820524e368f72648f2a9961a45b574551890a4d8f61ee0f2afefbbb808daa8032cc0029", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ee5760003560e060020a900480639588378e11610090578063bea75f281161006a578063bea75f2814610386578063d29b5d2f146103c2578063da816894146103f4578063f81f8bf6146104ba576100ee565b80639588378e146103065780639d4c162d14610332578063b551c37314610369576100ee565b806360bdbb3f116100cc57806360bdbb3f146101c357806368e14dac146101ef5780636b8eb4031461021b57806374ad5c3314610247576100ee565b806302506804146100f357806306e3a978146101315780632453732a14610185575b600080fd5b6101106004803603602081101561010957600080fd5b50356104ec565b60408051928352600160a060020a0390911660208301528051918290030190f35b61015d6004803603604081101561014757600080fd5b50600160a060020a03813516906020013561050e565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b6101b16004803603604081101561019b57600080fd5b5080359060200135600160a060020a0316610542565b60408051918252519081900360200190f35b610110600480360360408110156101d957600080fd5b50600160a060020a038135169060200135610589565b6101b16004803603604081101561020557600080fd5b5080359060200135600160a060020a03166105b3565b6101b16004803603604081101561023157600080fd5b50600160a060020a038135169060200135610605565b6101b16004803603606081101561025d57600080fd5b600160a060020a03823581169260208101359091169181019060608101604082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106c8945050505050565b6101b16004803603604081101561031c57600080fd5b50600160a060020a03813516906020013561094c565b6103556004803603604081101561034857600080fd5b5080359060200135610a78565b604080519115158252519081900360200190f35b6101b16004803603602081101561037f57600080fd5b5035610f6f565b6103556004803603608081101561039c57600080fd5b50600160a060020a038135811691602081013590911690604081013590606001356110c7565b610355600480360360608110156103d857600080fd5b50803590600160a060020a036020820135169060400135611285565b6101b16004803603608081101561040a57600080fd5b600160a060020a0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561044557600080fd5b82018360208201111561045757600080fd5b8035906020019184600183028401116401000000008311171561047957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061143a945050505050565b610355600480360360608110156104d057600080fd5b50803590600160a060020a036020820135169060400135611747565b60026020526000908152604090208054600190910154600160a060020a031682565b60016020818152600093845260408085209091529183529120805491810154600290910154600160a060020a039092169183565b6040805160208082018590526c01000000000000000000000000600160a060020a038516028284015282516034818403018152605490920190925280519101205b92915050565b600060208181529281526040808220909352908152208054600190910154600160a060020a031682565b6000806105c08484610542565b60008181526002602052604090208581556001018054600160a060020a03861673ffffffffffffffffffffffffffffffffffffffff1990911617905591505092915050565b33600090815260208181526040808320848452909152812060010154600160a060020a031680151561063b576000915050610583565b83600160a060020a03166370a08231826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561069457600080fd5b505afa1580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b5051949350505050565b60006106d2611b1c565b600260006106df876118c4565b815260208082019290925260409081016000908120825180840184528154808252600190920154600160a060020a0390811682870181905285517f88737b5e000000000000000000000000000000000000000000000000000000008152600260048201526024810194909452336044850152908b166064840152935190955091936388737b5e9260848084019382900301818787803b15801561078157600080fd5b505af1158015610795573d6000803e3d6000fd5b505050506040513d60208110156107ab57600080fd5b505190506107b7611b33565b506040805160608082018352600160a060020a038881168084526000602080860182815260018789018181528f87168086528285528a86208c875285528a86208a51815473ffffffffffffffffffffffffffffffffffffffff1916908a16178155935192840192909255516002909201919091558982015188519485528483018981528d51998601999099528c519798951696899691957f5378fb6111ece3f1032a0e9b60cb0caa886ec384da4300631570473ae5a4fbc0958f958f95919492939285019291860191908190849084905b838110156108a0578181015183820152602001610888565b50505050905090810190601f1680156108cd5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a450604080518082018252438152600160a060020a03978816602080830191825294850151891660009081528086528381208582529095529190932092518355516001909201805473ffffffffffffffffffffffffffffffffffffffff19169290961691909117909455509192915050565b6000610956611b1c565b503360009081526020818152604080832085845282529182902082518084019093528054835260010154600160a060020a0316908201819052151561099f576000915050610583565b8060200151600160a060020a03166389ae1c906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d6020811015610a0957600080fd5b50518151604080517f4ee2cd7e000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482019390935290519190921691634ee2cd7e916044808301926020929190829003018186803b15801561069457600080fd5b336000908152602081815260408083208584529091528120600101548390600160a060020a03161515610ae3576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611b54833981519152604482015290519081900360640190fd5b33600090815260208181526040808320878452909152902060010154600160a060020a0316610b10611b33565b50600160a060020a0380821660009081526001602081815260408084208a85528252928390208351606081018552815490951685529182015490840152600201549082018190521515610b6257600080fd5b600160a060020a03821660008181526001602081815260408084208b8552909152808320805473ffffffffffffffffffffffffffffffffffffffff191681559182018390556002909101829055518892917f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe91a38460011415610f2357600082600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d6020811015610c4757600080fd5b5051604083015190915060011415610cff578151604080517f42427bf8000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015285831660248201529051918316916342427bf8916044808201926020929091908290030181600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b505050506040513d6020811015610cf257600080fd5b50511515610cff57600080fd5b816040015160021415610f2157604080517f9b51e35a000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0385811660248301529151600092841691639b51e35a916044808301926020929190829003018186803b158015610d7657600080fd5b505afa158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b50518351602085810151604080517fe869d45f000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092527fffffffff00000000000000000000000000000000000000000000000000000000851660448301528884166064830152519394509185169263e869d45f9260848082019392918290030181600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b505050506040513d6020811015610e6f57600080fd5b50511515610e7c57600080fd5b8251600160a060020a03163014610f1f5781600160a060020a0316636c525b13856040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b50511515610f1f57600080fd5b505b505b6040805186815290518791600160a060020a038516917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc09181900360200190a350600195945050505050565b6000610f79611b1c565b503360009081526020818152604080832085845282529182902082518084019093528054835260010154600160a060020a03169082018190521515610fc25760009150506110c2565b8060200151600160a060020a03166389ae1c906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d602081101561102c57600080fd5b50518151604080517f981b24d0000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a039092169163981b24d091602480820192602092909190829003018186803b15801561109257600080fd5b505afa1580156110a6573d6000803e3d6000fd5b505050506040513d60208110156110bc57600080fd5b50519150505b919050565b336000908152602081815260408083208484529091528120600101548290600160a060020a03161515611132576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611b54833981519152604482015290519081900360640190fd5b33600090815260208181526040808320868452909152902060010154600160a060020a031680151561116857600092505061127c565b80600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156111a457600080fd5b505afa1580156111b8573d6000803e3d6000fd5b505050506040513d60208110156111ce57600080fd5b5051604080517fb9a04cdd000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015289811660248301526044820189905284811660648301529151919092169163b9a04cdd9160848083019260209291908290030181600087803b15801561124c57600080fd5b505af1158015611260573d6000803e3d6000fd5b505050506040513d602081101561127657600080fd5b50519250505b50949350505050565b336000908152602081815260408083208484529091528120600101548290600160a060020a031615156112f0576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611b54833981519152604482015290519081900360640190fd5b33600090815260208181526040808320868452909152902060010154600160a060020a0316801515611326576000925050611432565b80600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561136257600080fd5b505afa158015611376573d6000803e3d6000fd5b505050506040513d602081101561138c57600080fd5b5051604080517feaf994b200000000000000000000000000000000000000000000000000000000815260048101899052600160a060020a03888116602483015284811660448301529151919092169163eaf994b29160648083019260209291908290030181600087803b15801561140257600080fd5b505af1158015611416573d6000803e3d6000fd5b505050506040513d602081101561142c57600080fd5b50519250505b509392505050565b6000611444611b1c565b60026000611451886118c4565b815260208082019290925260409081016000908120825180840184528154808252600190920154600160a060020a0390811682870181905285517f88737b5e000000000000000000000000000000000000000000000000000000008152600260048201526024810194909452336044850152908c16606484015293519095509293919284926388737b5e926084808201939182900301818787803b1580156114f857600080fd5b505af115801561150c573d6000803e3d6000fd5b505050506040513d602081101561152257600080fd5b5051600160a060020a03891660009081526001602090815260408083208484529091529020600201549091501561155857600080fd5b611560611b33565b60606040519081016040528089600160a060020a031681526020018881526020016002815250905080600160008b600160a060020a0316600160a060020a03168152602001908152602001600020600084815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a0316021790555060208201518160010155604082015181600201559050508360200151600160a060020a0316828a600160a060020a03167f54db9b1773952b7528e7872ab8f8411827fe4d14f722aecf6dc0f0fd59de99b88b8b8b6040518084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561169b578181015183820152602001611683565b50505050905090810190601f1680156116c85780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a450604080518082018252438152600160a060020a03998a166020808301918252948b1660009081528086528381208582529095529190932092518355516001909201805473ffffffffffffffffffffffffffffffffffffffff191692909816919091179096555093949350505050565b336000908152602081815260408083208484529091528120600101548290600160a060020a031615156117b2576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611b54833981519152604482015290519081900360640190fd5b33600090815260208181526040808320868452909152902060010154600160a060020a03168015156117e8576000925050611432565b80600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561182457600080fd5b505afa158015611838573d6000803e3d6000fd5b505050506040513d602081101561184e57600080fd5b5051604080517f6e94d27800000000000000000000000000000000000000000000000000000000815260048101899052600160a060020a038881166024830152848116604483015291519190921691636e94d2789160648083019260209291908290030181600087803b15801561140257600080fd5b600081600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561190257600080fd5b505afa158015611916573d6000803e3d6000fd5b505050506040513d602081101561192c57600080fd5b5051604080517f9be2faed000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a03858116602483015291519190921691639be2faed916044808301926020929190829003018186803b15801561199757600080fd5b505afa1580156119ab573d6000803e3d6000fd5b505050506040513d60208110156119c157600080fd5b50511515611a19576040805160e560020a62461bcd02815260206004820152601860248201527f736368656d65206973206e6f742072656769737465