UNPKG

@polycity/core

Version:

Core contracts for the PolyCityDex protocol

565 lines (564 loc) 42 kB
{ "_format": "hh-sol-artifact-1", "contractName": "MasterChef", "sourceName": "contracts/MasterChef.sol", "abi": [ { "inputs": [ { "internalType": "contract PolyCityDexToken", "name": "_pichi", "type": "address" }, { "internalType": "address", "name": "_devaddr", "type": "address" }, { "internalType": "uint256", "name": "_pichiPerBlock", "type": "uint256" }, { "internalType": "uint256", "name": "_startBlock", "type": "uint256" }, { "internalType": "uint256", "name": "_bonusEndBlock", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "EmergencyWithdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "BONUS_MULTIPLIER", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_allocPoint", "type": "uint256" }, { "internalType": "contract IERC20", "name": "_lpToken", "type": "address" }, { "internalType": "bool", "name": "_withUpdate", "type": "bool" } ], "name": "add", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "bonusEndBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newBlockReward", "type": "uint256" } ], "name": "changeBlockReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_devaddr", "type": "address" } ], "name": "dev", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devaddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" } ], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_from", "type": "uint256" }, { "internalType": "uint256", "name": "_to", "type": "uint256" } ], "name": "getMultiplier", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "massUpdatePools", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" } ], "name": "migrate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "migrator", "outputs": [ { "internalType": "contract IMigratorChef", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "address", "name": "_user", "type": "address" } ], "name": "pendingPichi", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pichi", "outputs": [ { "internalType": "contract PolyCityDexToken", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pichiPerBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "poolInfo", "outputs": [ { "internalType": "contract IERC20", "name": "lpToken", "type": "address" }, { "internalType": "uint256", "name": "allocPoint", "type": "uint256" }, { "internalType": "uint256", "name": "lastRewardBlock", "type": "uint256" }, { "internalType": "uint256", "name": "accPichiPerShare", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "poolLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "_allocPoint", "type": "uint256" }, { "internalType": "bool", "name": "_withUpdate", "type": "bool" } ], "name": "set", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IMigratorChef", "name": "_migrator", "type": "address" } ], "name": "setMigrator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAllocPoint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" } ], "name": "updatePool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userInfo", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "rewardDebt", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x6080604052600060085534801561001557600080fd5b50604051611e04380380611e04833981810160405260a081101561003857600080fd5b5080516020820151604083015160608401516080909401519293919290919060006100616100e9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039687166001600160a01b03199182161790915560028054959096169416939093179093556004556003556009556100ed565b3390565b611d08806100fc6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806364482f79116100f95780638da5cb5b11610097578063d2ce6e6e11610071578063d2ce6e6e14610451578063d49e77cd14610459578063e2bbb15814610461578063f2fde38b14610484576101a9565b80638da5cb5b146103e15780638dbb1e3a146103e957806393f1a40b1461040c576101a9565b80637cd07e47116100d35780637cd07e471461036357806386f227f5146103875780638aa28550146103b35780638d88a90e146103bb576101a9565b806364482f7914610313578063715018a61461033e5780637792a7e014610346576101a9565b806323cf31181161016657806348cd4cb11161014057806348cd4cb1146102c957806351eb05a6146102d15780635312ea8e146102ee578063630b5ba11461030b576101a9565b806323cf311814610263578063441a3e7014610289578063454b0608146102ac576101a9565b8063081e3eda146101ae5780630a016189146101c85780631526fe27146101d057806317caf6f11461021d5780631aed6553146102255780631eaaa0451461022d575b600080fd5b6101b66104aa565b60408051918252519081900360200190f35b6101b66104b0565b6101ed600480360360208110156101e657600080fd5b50356104b6565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b6101b66104f7565b6101b66104fd565b6102616004803603606081101561024357600080fd5b508035906001600160a01b0360208201351690604001351515610503565b005b6102616004803603602081101561027957600080fd5b50356001600160a01b0316610688565b6102616004803603604081101561029f57600080fd5b508035906020013561070c565b610261600480360360208110156102c257600080fd5b503561085f565b6101b6610abb565b610261600480360360208110156102e757600080fd5b5035610ac1565b6102616004803603602081101561030457600080fd5b5035610ce8565b610261610d83565b6102616004803603606081101561032957600080fd5b50803590602081013590604001351515610da6565b610261610e81565b6102616004803603602081101561035c57600080fd5b5035610f2d565b61036b610f9c565b604080516001600160a01b039092168252519081900360200190f35b6101b66004803603604081101561039d57600080fd5b50803590602001356001600160a01b0316610fab565b6101b661110f565b610261600480360360208110156103d157600080fd5b50356001600160a01b0316611114565b61036b611181565b6101b6600480360360408110156103ff57600080fd5b5080359060200135611190565b6104386004803603604081101561042257600080fd5b50803590602001356001600160a01b03166111f6565b6040805192835260208301919091528051918290030190f35b61036b61121a565b61036b611229565b6102616004803603604081101561047757600080fd5b5080359060200135611238565b6102616004803603602081101561049a57600080fd5b50356001600160a01b031661133d565b60065490565b60045481565b600681815481106104c357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60085481565b60035481565b61050b61143f565b6001600160a01b031661051c611181565b6001600160a01b031614610565576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b801561057357610573610d83565b6000600954431161058657600954610588565b435b6008549091506105989085611443565b600855604080516080810182526001600160a01b0394851681526020810195865290810191825260006060820181815260068054600181018255925291517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600490920291820180546001600160a01b031916919096161790945593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40840155517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418301555090517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4290910155565b61069061143f565b6001600160a01b03166106a1611181565b6001600160a01b0316146106ea576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60006006838154811061071b57fe5b60009182526020808320868452600782526040808520338652909252922080546004909202909201925083111561078e576040805162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015290519081900360640190fd5b61079784610ac1565b60006107d182600101546107cb64e8d4a510006107c5876003015487600001546114a490919063ffffffff16565b906114fd565b90611564565b90506107dd33826115c1565b81546107e99085611564565b80835560038401546108069164e8d4a51000916107c591906114a4565b60018301558254610821906001600160a01b03163386611752565b604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b6005546001600160a01b03166108b3576040805162461bcd60e51b815260206004820152601460248201527336b4b3b930ba329d1037379036b4b3b930ba37b960611b604482015290519081900360640190fd5b6000600682815481106108c257fe5b600091825260208083206004928302018054604080516370a0823160e01b81523095810195909552519195506001600160a01b0316939284926370a0823192602480840193829003018186803b15801561091b57600080fd5b505afa15801561092f573d6000803e3d6000fd5b505050506040513d602081101561094557600080fd5b5051600554909150610964906001600160a01b038481169116836117a4565b6005546040805163ce5494bb60e01b81526001600160a01b0385811660048301529151600093929092169163ce5494bb9160248082019260209290919082900301818787803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b5051604080516370a0823160e01b815230600482015290519192506001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015610a2c57600080fd5b505afa158015610a40573d6000803e3d6000fd5b505050506040513d6020811015610a5657600080fd5b50518214610a9a576040805162461bcd60e51b815260206004820152600c60248201526b1b5a59dc985d194e8818985960a21b604482015290519081900360640190fd5b83546001600160a01b0319166001600160a01b039190911617909255505050565b60095481565b600060068281548110610ad057fe5b9060005260206000209060040201905080600201544311610af15750610ce5565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d6020811015610b6557600080fd5b5051905080610b7b575043600290910155610ce5565b6000610b8b836002015443611190565b90506000610bb86008546107c58660010154610bb2600454876114a490919063ffffffff16565b906114a4565b6001546002549192506001600160a01b03908116916340c10f199116610bdf84600a6114fd565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610c2557600080fd5b505af1158015610c39573d6000803e3d6000fd5b5050600154604080516340c10f1960e01b81523060048201526024810186905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b158015610c9057600080fd5b505af1158015610ca4573d6000803e3d6000fd5b50505050610cd2610cc7846107c564e8d4a51000856114a490919063ffffffff16565b600386015490611443565b6003850155505043600290920191909155505b50565b600060068281548110610cf757fe5b60009182526020808320858452600782526040808520338087529352909320805460049093029093018054909450610d3c926001600160a01b03919091169190611752565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b60065460005b81811015610da257610d9a81610ac1565b600101610d89565b5050565b610dae61143f565b6001600160a01b0316610dbf611181565b6001600160a01b031614610e08576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b8015610e1657610e16610d83565b610e5382610e4d60068681548110610e2a57fe5b90600052602060002090600402016001015460085461156490919063ffffffff16565b90611443565b6008819055508160068481548110610e6757fe5b906000526020600020906004020160010181905550505050565b610e8961143f565b6001600160a01b0316610e9a611181565b6001600160a01b031614610ee3576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610f3561143f565b6001600160a01b0316610f46611181565b6001600160a01b031614610f8f576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b6004819055610ce5610d83565b6005546001600160a01b031681565b60008060068481548110610fbb57fe5b600091825260208083208784526007825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d602081101561106357600080fd5b505160028501549091504311801561107a57508015155b156110da57600061108f856002015443611190565b905060006110b66008546107c58860010154610bb2600454876114a490919063ffffffff16565b90506110d56110ce846107c58464e8d4a510006114a4565b8590611443565b935050505b61110283600101546107cb64e8d4a510006107c58688600001546114a490919063ffffffff16565b9450505050505b92915050565b600a81565b6002546001600160a01b0316331461115f576040805162461bcd60e51b81526020600482015260096024820152686465763a207775743f60b81b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b600060035482116111b1576111aa600a610bb28486611564565b9050611109565b60035483106111c4576111aa8284611564565b6111aa6111dc6003548461156490919063ffffffff16565b610e4d600a610bb28760035461156490919063ffffffff16565b60076020908152600092835260408084209091529082529020805460019091015482565b6001546001600160a01b031681565b6002546001600160a01b031681565b60006006838154811061124757fe5b6000918252602080832086845260078252604080852033865290925292206004909102909101915061127884610ac1565b8054156112bb5760006112ad82600101546107cb64e8d4a510006107c5876003015487600001546114a490919063ffffffff16565b90506112b933826115c1565b505b81546112d2906001600160a01b03163330866118b7565b80546112de9084611443565b80825560038301546112fb9164e8d4a51000916107c591906114a4565b6001820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b61134561143f565b6001600160a01b0316611356611181565b6001600160a01b03161461139f576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b6001600160a01b0381166113e45760405162461bcd60e51b8152600401808060200182810382526026815260200180611be66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60008282018381101561149d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000826114b357506000611109565b828202828482816114c057fe5b041461149d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c326021913960400191505060405180910390fd5b6000808211611553576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161155c57fe5b049392505050565b6000828211156115bb576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561160c57600080fd5b505afa158015611620573d6000803e3d6000fd5b505050506040513d602081101561163657600080fd5b50519050808211156116ca576001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561169857600080fd5b505af11580156116ac573d6000803e3d6000fd5b505050506040513d60208110156116c257600080fd5b5061174d9050565b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561172057600080fd5b505af1158015611734573d6000803e3d6000fd5b505050506040513d602081101561174a57600080fd5b50505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261174d908490611917565b80158061182a575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156117fc57600080fd5b505afa158015611810573d6000803e3d6000fd5b505050506040513d602081101561182657600080fd5b5051155b6118655760405162461bcd60e51b8152600401808060200182810382526036815260200180611c9d6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261174d908490611917565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611911908590611917565b50505050565b606061196c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119c89092919063ffffffff16565b80519091501561174d5780806020019051602081101561198b57600080fd5b505161174d5760405162461bcd60e51b815260040180806020018281038252602a815260200180611c73602a913960400191505060405180910390fd5b60606119d784846000856119df565b949350505050565b606082471015611a205760405162461bcd60e51b8152600401808060200182810382526026815260200180611c0c6026913960400191505060405180910390fd5b611a2985611b3b565b611a7a576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611ab95780518252601f199092019160209182019101611a9a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611b1b576040519150601f19603f3d011682016040523d82523d6000602084013e611b20565b606091505b5091509150611b30828286611b41565b979650505050505050565b3b151590565b60608315611b5057508161149d565b825115611b605782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611baa578181015183820152602001611b92565b50505050905090810190601f168015611bd75780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220bc3a7dd09811faf66aff364d57b87d0b0b171fac19cf5e3f2679a63e8effb3ca64736f6c634300060c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806364482f79116100f95780638da5cb5b11610097578063d2ce6e6e11610071578063d2ce6e6e14610451578063d49e77cd14610459578063e2bbb15814610461578063f2fde38b14610484576101a9565b80638da5cb5b146103e15780638dbb1e3a146103e957806393f1a40b1461040c576101a9565b80637cd07e47116100d35780637cd07e471461036357806386f227f5146103875780638aa28550146103b35780638d88a90e146103bb576101a9565b806364482f7914610313578063715018a61461033e5780637792a7e014610346576101a9565b806323cf31181161016657806348cd4cb11161014057806348cd4cb1146102c957806351eb05a6146102d15780635312ea8e146102ee578063630b5ba11461030b576101a9565b806323cf311814610263578063441a3e7014610289578063454b0608146102ac576101a9565b8063081e3eda146101ae5780630a016189146101c85780631526fe27146101d057806317caf6f11461021d5780631aed6553146102255780631eaaa0451461022d575b600080fd5b6101b66104aa565b60408051918252519081900360200190f35b6101b66104b0565b6101ed600480360360208110156101e657600080fd5b50356104b6565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b6101b66104f7565b6101b66104fd565b6102616004803603606081101561024357600080fd5b508035906001600160a01b0360208201351690604001351515610503565b005b6102616004803603602081101561027957600080fd5b50356001600160a01b0316610688565b6102616004803603604081101561029f57600080fd5b508035906020013561070c565b610261600480360360208110156102c257600080fd5b503561085f565b6101b6610abb565b610261600480360360208110156102e757600080fd5b5035610ac1565b6102616004803603602081101561030457600080fd5b5035610ce8565b610261610d83565b6102616004803603606081101561032957600080fd5b50803590602081013590604001351515610da6565b610261610e81565b6102616004803603602081101561035c57600080fd5b5035610f2d565b61036b610f9c565b604080516001600160a01b039092168252519081900360200190f35b6101b66004803603604081101561039d57600080fd5b50803590602001356001600160a01b0316610fab565b6101b661110f565b610261600480360360208110156103d157600080fd5b50356001600160a01b0316611114565b61036b611181565b6101b6600480360360408110156103ff57600080fd5b5080359060200135611190565b6104386004803603604081101561042257600080fd5b50803590602001356001600160a01b03166111f6565b6040805192835260208301919091528051918290030190f35b61036b61121a565b61036b611229565b6102616004803603604081101561047757600080fd5b5080359060200135611238565b6102616004803603602081101561049a57600080fd5b50356001600160a01b031661133d565b60065490565b60045481565b600681815481106104c357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60085481565b60035481565b61050b61143f565b6001600160a01b031661051c611181565b6001600160a01b031614610565576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b801561057357610573610d83565b6000600954431161058657600954610588565b435b6008549091506105989085611443565b600855604080516080810182526001600160a01b0394851681526020810195865290810191825260006060820181815260068054600181018255925291517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600490920291820180546001600160a01b031916919096161790945593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40840155517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418301555090517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4290910155565b61069061143f565b6001600160a01b03166106a1611181565b6001600160a01b0316146106ea576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60006006838154811061071b57fe5b60009182526020808320868452600782526040808520338652909252922080546004909202909201925083111561078e576040805162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015290519081900360640190fd5b61079784610ac1565b60006107d182600101546107cb64e8d4a510006107c5876003015487600001546114a490919063ffffffff16565b906114fd565b90611564565b90506107dd33826115c1565b81546107e99085611564565b80835560038401546108069164e8d4a51000916107c591906114a4565b60018301558254610821906001600160a01b03163386611752565b604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b6005546001600160a01b03166108b3576040805162461bcd60e51b815260206004820152601460248201527336b4b3b930ba329d1037379036b4b3b930ba37b960611b604482015290519081900360640190fd5b6000600682815481106108c257fe5b600091825260208083206004928302018054604080516370a0823160e01b81523095810195909552519195506001600160a01b0316939284926370a0823192602480840193829003018186803b15801561091b57600080fd5b505afa15801561092f573d6000803e3d6000fd5b505050506040513d602081101561094557600080fd5b5051600554909150610964906001600160a01b038481169116836117a4565b6005546040805163ce5494bb60e01b81526001600160a01b0385811660048301529151600093929092169163ce5494bb9160248082019260209290919082900301818787803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b5051604080516370a0823160e01b815230600482015290519192506001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015610a2c57600080fd5b505afa158015610a40573d6000803e3d6000fd5b505050506040513d6020811015610a5657600080fd5b50518214610a9a576040805162461bcd60e51b815260206004820152600c60248201526b1b5a59dc985d194e8818985960a21b604482015290519081900360640190fd5b83546001600160a01b0319166001600160a01b039190911617909255505050565b60095481565b600060068281548110610ad057fe5b9060005260206000209060040201905080600201544311610af15750610ce5565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d6020811015610b6557600080fd5b5051905080610b7b575043600290910155610ce5565b6000610b8b836002015443611190565b90506000610bb86008546107c58660010154610bb2600454876114a490919063ffffffff16565b906114a4565b6001546002549192506001600160a01b03908116916340c10f199116610bdf84600a6114fd565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610c2557600080fd5b505af1158015610c39573d6000803e3d6000fd5b5050600154604080516340c10f1960e01b81523060048201526024810186905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b158015610c9057600080fd5b505af1158015610ca4573d6000803e3d6000fd5b50505050610cd2610cc7846107c564e8d4a51000856114a490919063ffffffff16565b600386015490611443565b6003850155505043600290920191909155505b50565b600060068281548110610cf757fe5b60009182526020808320858452600782526040808520338087529352909320805460049093029093018054909450610d3c926001600160a01b03919091169190611752565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b60065460005b81811015610da257610d9a81610ac1565b600101610d89565b5050565b610dae61143f565b6001600160a01b0316610dbf611181565b6001600160a01b031614610e08576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b8015610e1657610e16610d83565b610e5382610e4d60068681548110610e2a57fe5b90600052602060002090600402016001015460085461156490919063ffffffff16565b90611443565b6008819055508160068481548110610e6757fe5b906000526020600020906004020160010181905550505050565b610e8961143f565b6001600160a01b0316610e9a611181565b6001600160a01b031614610ee3576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610f3561143f565b6001600160a01b0316610f46611181565b6001600160a01b031614610f8f576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b6004819055610ce5610d83565b6005546001600160a01b031681565b60008060068481548110610fbb57fe5b600091825260208083208784526007825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d602081101561106357600080fd5b505160028501549091504311801561107a57508015155b156110da57600061108f856002015443611190565b905060006110b66008546107c58860010154610bb2600454876114a490919063ffffffff16565b90506110d56110ce846107c58464e8d4a510006114a4565b8590611443565b935050505b61110283600101546107cb64e8d4a510006107c58688600001546114a490919063ffffffff16565b9450505050505b92915050565b600a81565b6002546001600160a01b0316331461115f576040805162461bcd60e51b81526020600482015260096024820152686465763a207775743f60b81b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b600060035482116111b1576111aa600a610bb28486611564565b9050611109565b60035483106111c4576111aa8284611564565b6111aa6111dc6003548461156490919063ffffffff16565b610e4d600a610bb28760035461156490919063ffffffff16565b60076020908152600092835260408084209091529082529020805460019091015482565b6001546001600160a01b031681565b6002546001600160a01b031681565b60006006838154811061124757fe5b6000918252602080832086845260078252604080852033865290925292206004909102909101915061127884610ac1565b8054156112bb5760006112ad82600101546107cb64e8d4a510006107c5876003015487600001546114a490919063ffffffff16565b90506112b933826115c1565b505b81546112d2906001600160a01b03163330866118b7565b80546112de9084611443565b80825560038301546112fb9164e8d4a51000916107c591906114a4565b6001820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b61134561143f565b6001600160a01b0316611356611181565b6001600160a01b03161461139f576040805162461bcd60e51b81526020600482018190526024820152600080516020611c53833981519152604482015290519081900360640190fd5b6001600160a01b0381166113e45760405162461bcd60e51b8152600401808060200182810382526026815260200180611be66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60008282018381101561149d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000826114b357506000611109565b828202828482816114c057fe5b041461149d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c326021913960400191505060405180910390fd5b6000808211611553576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161155c57fe5b049392505050565b6000828211156115bb576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561160c57600080fd5b505afa158015611620573d6000803e3d6000fd5b505050506040513d602081101561163657600080fd5b50519050808211156116ca576001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561169857600080fd5b505af11580156116ac573d6000803e3d6000fd5b505050506040513d60208110156116c257600080fd5b5061174d9050565b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561172057600080fd5b505af1158015611734573d6000803e3d6000fd5b505050506040513d602081101561174a57600080fd5b50505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261174d908490611917565b80158061182a575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156117fc57600080fd5b505afa158015611810573d6000803e3d6000fd5b505050506040513d602081101561182657600080fd5b5051155b6118655760405162461bcd60e51b8152600401808060200182810382526036815260200180611c9d6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261174d908490611917565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611911908590611917565b50505050565b606061196c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119c89092919063ffffffff16565b80519091501561174d5780806020019051602081101561198b57600080fd5b505161174d5760405162461bcd60e51b815260040180806020018281038252602a815260200180611c73602a913960400191505060405180910390fd5b60606119d784846000856119df565b949350505050565b606082471015611a205760405162461bcd60e51b8152600401808060200182810382526026815260200180611c0c6026913960400191505060405180910390fd5b611a2985611b3b565b611a7a576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611ab95780518252601f199092019160209182019101611a9a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611b1b576040519150601f19603f3d011682016040523d82523d6000602084013e611b20565b606091505b5091509150611b30828286611b41565b979650505050505050565b3b151590565b60608315611b5057508161149d565b825115611b605782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611baa578181015183820152602001611b92565b50505050905090810190601f168015611bd75780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220bc3a7dd09811faf66aff364d57b87d0b0b171fac19cf5e3f2679a63e8effb3ca64736f6c634300060c0033", "linkReferences": {}, "deployedLinkReferences": {} }