0 txs
0 calls
constructor
constructor(address _governorImplementation, address _timelockImplementation)
functions
governorImplementation
viewfunction governorImplementation() view returns (address)
timelockImplementation
viewfunction timelockImplementation() view returns (address)
version
purefunction version() pure returns (string)
deployGovernanceWithTimelock
nonpayablefunction deployGovernanceWithTimelock(tuple govParams, address stToken, bytes32 deploymentNonce) returns (address governor, address timelock)
deployGovernedStakingToken
nonpayablefunction deployGovernedStakingToken(string name, string symbol, address underlying, tuple govParams, bytes32 deploymentNonce) returns (address stToken, address governor, address timelock)
events
DeployedGovernance
event DeployedGovernance(address indexed stToken, address governor, address timelock)
DeployedGovernedStakingToken
event DeployedGovernedStakingToken(address indexed underlying, address indexed stToken, address governor, address timelock)
errors
FailedDeployment
error FailedDeployment()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
creation bytecode
0x60c060405234801561001057600080fd5b5060405161603238038061603283398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a051615f6a6100c86000396000818161010101526101c7015260008181610140015261019b0152615f6a6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806354fd4d501461005c578063a7f520231461008c578063c59ee4a9146100bf578063c5e8f3e5146100fc578063c68106451461013b575b600080fd5b60408051808201825260058152640342e302e360dc1b6020820152905161008391906107fc565b60405180910390f35b61009f61009a36600461083f565b610162565b604080516001600160a01b03938416815292909116602083015201610083565b6100d26100cd36600461093e565b6105b1565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610083565b6101237f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610083565b6101237f000000000000000000000000000000000000000000000000000000000000000081565b60008060003386868660405160200161017e9493929190610b15565b6040516020818303038152906040528051906020012090506101c07f0000000000000000000000000000000000000000000000000000000000000000826106f9565b92506101ec7f0000000000000000000000000000000000000000000000000000000000000000826106f9565b9150816001600160a01b0384166322f120de878361020d60208c018c610b55565b61021d60408d0160208e01610b70565b604080516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015265ffffffffffff909116604484015263ffffffff1660648301528a0135608482015260608a013560a482015260c401600060405180830381600087803b15801561029457600080fd5b505af11580156102a8573d6000803e3d6000fd5b5060009250600191506102b89050565b6040519080825280602002602001820160405280156102e1578160200160208202803683370190505b50905084816000815181106102f8576102f8610b8b565b6001600160a01b03928316602091820292909201015260405163c4c4c7b360e01b81529083169063c4c4c7b39061033d9060808c013590859081903090600401610bdc565b600060405180830381600087803b15801561035757600080fd5b505af115801561036b573d6000803e3d6000fd5b5050505060005b61037f60a08a018a610c21565b905081101561049657826001600160a01b0316632f2ff15d846001600160a01b031663b08e51c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f99190610c72565b61040660a08d018d610c21565b8581811061041657610416610b8b565b905060200201602081019061042b9190610c8b565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401600060405180830381600087803b15801561047257600080fd5b505af1158015610486573d6000803e3d6000fd5b5050600190920191506103729050565b50816001600160a01b03166336568abe836001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105089190610c72565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401600060405180830381600087803b15801561054757600080fd5b505af115801561055b573d6000803e3d6000fd5b5050604080516001600160a01b03898116825288811660208301528b1693507f7eea00380f9fd293aa7bfda08d5c6982de11a2e005c93e51d70f49c136de992292500160405180910390a2505050935093915050565b6000806000803389898989896040516020016105d296959493929190610ca8565b604051602081830303815290604052805190602001209050808989893062049d4062093a80604051610603906107a9565b61061296959493929190610d15565b8190604051809103906000f5905080158015610632573d6000803e3d6000fd5b509350610640868583610162565b60405163f2fde38b60e01b81526001600160a01b0380831660048301529295509093509085169063f2fde38b90602401600060405180830381600087803b15801561068a57600080fd5b505af115801561069e573d6000803e3d6000fd5b5050604080516001600160a01b038781168252868116602083015280891694508b1692507f26652ce8089c295fb8085fd5075eaf9c073716bda0147ed1902c9a0877b7434f910160405180910390a350955095509592505050565b60006107078383600061070e565b9392505050565b60008147101561073e5760405163cf47918160e01b81524760048201526024810183905260440160405180910390fd5b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166107075760405163b06ebf3d60e01b815260040160405180910390fd5b6151f480610d6a83390190565b6000815180845260005b818110156107dc576020818501810151868301820152016107c0565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061070760208301846107b6565b600060c0828403121561082157600080fd5b50919050565b6001600160a01b038116811461083c57600080fd5b50565b60008060006060848603121561085457600080fd5b833567ffffffffffffffff81111561086b57600080fd5b6108778682870161080f565b935050602084013561088881610827565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108c057600080fd5b813567ffffffffffffffff8111156108da576108da610899565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561090957610909610899565b60405281815283820160200185101561092157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561095657600080fd5b853567ffffffffffffffff81111561096d57600080fd5b610979888289016108af565b955050602086013567ffffffffffffffff81111561099657600080fd5b6109a2888289016108af565b94505060408601356109b381610827565b9250606086013567ffffffffffffffff8111156109cf57600080fd5b6109db8882890161080f565b95989497509295608001359392505050565b803565ffffffffffff81168114610a0357600080fd5b919050565b803563ffffffff81168114610a0357600080fd5b81835260208301925060008160005b84811015610a5c578135610a3e81610827565b6001600160a01b031686526020958601959190910190600101610a2b565b5093949350505050565b65ffffffffffff610a76826109ed565b16825263ffffffff610a8a60208301610a08565b166020830152604081810135908301526060808201359083015260808082013590830152600060a082013536839003601e19018112610ac857600080fd5b820160208101903567ffffffffffffffff811115610ae557600080fd5b8060051b3603821315610af757600080fd5b60c060a0860152610b0c60c086018284610a1c565b95945050505050565b6001600160a01b0385168152608060208201819052600090610b3990830186610a66565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215610b6757600080fd5b610707826109ed565b600060208284031215610b8257600080fd5b61070782610a08565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b82811015610a5c5781516001600160a01b0316865260209586019590910190600101610bb5565b848152608060208201526000610bf56080830186610ba1565b8281036040840152610c078186610ba1565b91505060018060a01b038316606083015295945050505050565b6000808335601e19843603018112610c3857600080fd5b83018035915067ffffffffffffffff821115610c5357600080fd5b6020019150600581901b3603821315610c6b57600080fd5b9250929050565b600060208284031215610c8457600080fd5b5051919050565b600060208284031215610c9d57600080fd5b813561070781610827565b6001600160a01b038716815260c060208201819052600090610ccc908301886107b6565b8281036040840152610cde81886107b6565b6001600160a01b038716606085015283810360808501529050610d018186610a66565b9150508260a0830152979650505050505050565b60c081526000610d2860c08301896107b6565b8281036020840152610d3a81896107b6565b6001600160a01b03978816604085015295909616606083015250608081019290925260a090910152939250505056fe6101c060405234801561001157600080fd5b506040516151f43803806151f483398101604081905261003091610a77565b828680604051806040016040528060018152602001603160f81b815250878a8a816003908161005f9190610ba0565b50600461006c8282610ba0565b505050600080610081836101f960201b60201c565b9150915081610091576012610093565b805b60ff1660a05250506001600160a01b03166080526100b28260056102d5565b610160526100c18160066102d5565b61018052815160208084019190912061012052815190820120610140524660e0526101506101205161014051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60c05250503061010052506001600160a01b03811661018a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61019381610308565b5061019d8261035a565b6101a6816103ee565b836040516101b390610997565b6001600160a01b039091168152602001604051809103906000f0801580156101df573d6000803e3d6000fd5b506001600160a01b03166101a05250610e84945050505050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b0387169161024091610c5e565b600060405180830381855afa9150503d806000811461027b576040519150601f19603f3d011682016040523d82523d6000602084013e610280565b606091505b509150915081801561029457506020815110155b156102c8576000818060200190518101906102af9190610c7a565b905060ff81116102c6576001969095509350505050565b505b5060009485945092505050565b60006020835110156102f1576102ea8361044d565b9050610302565b816102fc8482610ba0565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b3380610366818061048b565b62127500831115801561037c5750620151808310155b610399576040516301d6c5f960e31b815260040160405180910390fd5b6103ab8367099e8db03256ce5d610ca9565b600e81905560408051918252602082018590527fec69f8199b922497574fa428c2a3983ec55d921ceaaf0a0e22352df10e25f56b910160405180910390a1505050565b6224ea0081111561041257604051631075dfc560e01b815260040160405180910390fd5b600f8190556040518181527f1785a3c870828b01f121cc06ea0a7e33b66fb1baa08ba1bc0f3f08a68253c80f9060200160405180910390a150565b600080829050601f81511115610478578260405163305a27a960e01b81526004016101819190610ccb565b805161048382610cfe565b179392505050565b6000610497600c610511565b805190915060005b8181101561050a5760008382815181106104bb576104bb610d22565b602002602001015190506104d48161052560201b60201c565b6104de85826106ec565b856001600160a01b0316856001600160a01b0316146105015761050186826106ec565b5060010161049f565b5050505050565b6060600061051e83610804565b9392505050565b6001600160a01b03811660008181526010602052604090819020600381015460048083015493516370a0823160e01b8152309181019190915291939092916370a0823190602401602060405180830381865afa158015610589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ad9190610c7a565b6105b79190610d38565b600383015581546000906105cb9042610d4b565b9050806000036105db5750505050565b60008360020154836105ed9190610d4b565b90506000600161061961061685600e54670de0b6b3a76400006106109190610d4b565b90610860565b90565b61062b90670de0b6b3a7640000610d4b565b6106359190610d4b565b90506000670de0b6b3a764000061064c8385610d5e565b6106569190610ca9565b9050600061066360025490565b905080156106df576000816106766108c2565b61068190600a610e5c565b61069385670de0b6b3a7640000610d5e565b61069d9190610d5e565b6106a79190610ca9565b9050808860010160008282546106bd9190610d38565b92505081905550828860020160008282546106d89190610d38565b9091555050505b5050429094555050505050565b6001600160a01b0382166106fe575050565b6001600160a01b038082166000818152601060209081526040808320815160a08101835281548152600182015481850190815260028301548285015260038301546060830152600490920154608082015294845260128352818420958816845294909152812080549351929390926107769190610d4b565b9050801561050a576000670de0b6b3a76400006107916108c2565b61079c90600a610e5c565b836107bc896001600160a01b031660009081526020819052604090205490565b6107c69190610d5e565b6107d09190610ca9565b6107da9190610ca9565b9050808360010160008282546107f09190610d38565b909155505050602083015182555050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561085457602002820191906000526020600020905b815481526020019060010190808311610840575b50505050509050919050565b600082816001841661087a57670de0b6b3a764000061087c565b815b9050600184901c93505b83156108ba5761089682806108d1565b915060018416156108ae576108ab81836108d1565b90505b600184901c9350610886565b949350505050565b60006108cc610987565b905090565b60008080600019848609848602925082811083820303915050806000036109055750670de0b6b3a764000090049050610302565b670de0b6b3a7640000811061093757604051635173648d60e01b81526004810186905260248101859052604401610181565b6000670de0b6b3a764000085870962040000818503049310909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b60008060a0516108cc9190610e6b565b6108728061498283390190565b634e487b7160e01b600052604160045260246000fd5b60005b838110156109d55781810151838201526020016109bd565b50506000910152565b600082601f8301126109ef57600080fd5b81516001600160401b03811115610a0857610a086109a4565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610a3657610a366109a4565b604052818152838201602001851015610a4e57600080fd5b6108ba8260208301602087016109ba565b6001600160a01b0381168114610a7457600080fd5b50565b60008060008060008060c08789031215610a9057600080fd5b86516001600160401b03811115610aa657600080fd5b610ab289828a016109de565b602089015190975090506001600160401b03811115610ad057600080fd5b610adc89828a016109de565b9550506040870151610aed81610a5f565b6060880151909450610afe81610a5f565b608088015160a090980151969995985093969395939492505050565b600181811c90821680610b2e57607f821691505b602082108103610b4e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b9b57806000526020600020601f840160051c81016020851015610b7b5750805b601f840160051c820191505b8181101561050a5760008155600101610b87565b505050565b81516001600160401b03811115610bb957610bb96109a4565b610bcd81610bc78454610b1a565b84610b54565b6020601f821160018114610c015760008315610be95750848201515b600019600385901b1c1916600184901b17845561050a565b600084815260208120601f198516915b82811015610c315787850151825560209485019460019092019101610c11565b5084821015610c4f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60008251610c708184602087016109ba565b9190910192915050565b600060208284031215610c8c57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082610cc657634e487b7160e01b600052601260045260246000fd5b500490565b6020815260008251806020840152610cea8160408501602087016109ba565b601f01601f19169190910160400192915050565b80516020808301519190811015610b4e5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b8082018082111561030257610302610c93565b8181038181111561030257610302610c93565b808202811582820484141761030257610302610c93565b6001815b6001841115610db057808504811115610d9457610d94610c93565b6001841615610da257908102905b60019390931c928002610d79565b935093915050565b600082610dc757506001610302565b81610dd457506000610302565b8160018114610dea5760028114610df457610e10565b6001915050610302565b60ff841115610e0557610e05610c93565b50506001821b610302565b5060208310610133831016604e8410600b8410161715610e33575081810a610302565b610e406000198484610d75565b8060001904821115610e5457610e54610c93565b029392505050565b600061051e60ff841683610db8565b60ff818116838216019081111561030257610302610c93565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051613a52610f30600039600081816107df01528181611c5d0152611c8401526000611aef01526000611ac20152600061177901526000611751015260006116ac015260006116d6015260006117000152600061167b0152600081816104d5015281816108fd01528181610a790152818161199c01528181611c3c01526128ff0152613a526000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c8063715018a6116101d3578063c313079c11610104578063d505accf116100a2578063ef8b30f71161007c578063ef8b30f7146107b4578063f1127ed814610873578063f2fde38b146108b2578063f9f031df146108c557600080fd5b8063d505accf14610814578063d905777e14610827578063dd62ed3e1461083a57600080fd5b8063c6e6f592116100de578063c6e6f592146107b4578063cb4224f2146107c7578063ce3eb05c146107da578063ce96cb771461080157600080fd5b8063c313079c1461075a578063c3cda520146107a1578063c63d75b61461053357600080fd5b806395d89b4111610171578063a943600d1161014b578063a943600d1461070e578063b3d7f6b914610721578063b460af9414610734578063ba0876521461074757600080fd5b806395d89b41146106e05780639ab24eb0146106e8578063a9059cbb146106fb57600080fd5b80638da5cb5b116101ad5780638da5cb5b1461068a5780638e539e8c1461069b57806391ddadf4146106ae57806394bf804d146106cd57600080fd5b8063715018a6146106545780637ecebe001461065c57806384b0196e1461066f57600080fd5b806338d52e0f116102ad57806354c8dbcc1161024b578063646033bc11610225578063646033bc146105e75780636e553f65146105f05780636fcfff451461060357806370a082311461062b57600080fd5b806354c8dbcc14610595578063587cde1e146105a85780635c19a95c146105d457600080fd5b8063402d267d11610287578063402d267d146105335780634bf5d7e9146105485780634cdad506146103b657806351127c2c1461057257600080fd5b806338d52e0f146104d35780633a46b1a81461050d5780633d509c971461052057600080fd5b806314655a2f1161031a5780631c03e6cc116102f45780631c03e6cc1461048b57806323b872dd1461049e578063313ce567146104b15780633644e515146104cb57600080fd5b806314655a2f1461041457806318160ddd14610479578063181783581461048157600080fd5b806307a2d13a1161035657806307a2d13a146103b6578063095ea7b3146103c95780630a28a477146103ec57806312edb24c146103ff57600080fd5b806301e1d1141461037d57806306fdde031461039857806307089246146103ad575b600080fd5b6103856108e5565b6040519081526020015b60405180910390f35b6103a0610975565b60405161038f91906133a8565b610385600f5481565b6103856103c43660046133bb565b610a07565b6103dc6103d73660046133eb565b610a1a565b604051901515815260200161038f565b6103856103fa3660046133bb565b610a32565b610407610a3f565b60405161038f9190613415565b610451610422366004613461565b601060205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161038f565b600254610385565b610489610a4b565b005b610489610499366004613461565b610a5b565b6103dc6104ac36600461347c565b610c11565b6104b9610c37565b60405160ff909116815260200161038f565b610385610c41565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161038f565b61038561051b3660046133eb565b610c4b565b61048961052e366004613461565b610ccc565b610385610541366004613461565b5060001990565b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b60208201526103a0565b6103dc610580366004613461565b60116020526000908152604090205460ff1681565b6104896105a33660046133bb565b610d5f565b6104f56105b6366004613461565b6001600160a01b039081166000908152600860205260409020541690565b6104896105e2366004613461565b610d73565b610385600e5481565b6103856105fe3660046134b9565b610d7e565b610616610611366004613461565b610da4565b60405163ffffffff909116815260200161038f565b610385610639366004613461565b6001600160a01b031660009081526020819052604090205490565b610489610daf565b61038561066a366004613461565b610dc3565b610677610dce565b60405161038f9796959493929190613521565b600b546001600160a01b03166104f5565b6103856106a93660046133bb565b610e14565b6106b6610e7e565b60405165ffffffffffff909116815260200161038f565b6103856106db3660046134b9565b610e88565b6103a0610ea6565b6103856106f6366004613461565b610eb5565b6103dc6107093660046133eb565b610ee5565b61048961071c3660046133bb565b610ef3565b61038561072f3660046133bb565b610f04565b610385610742366004613591565b610f11565b610385610755366004613591565b610f69565b61078c6107683660046135cd565b60126020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161038f565b6104896107af366004613608565b610fb8565b6103856107c23660046133bb565b611075565b6103856107d53660046133bb565b611082565b6104f57f000000000000000000000000000000000000000000000000000000000000000081565b61038561080f366004613461565b61109f565b610489610822366004613660565b6110c3565b610385610835366004613461565b6111fd565b6103856108483660046135cd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6108866108813660046136cb565b61121b565b60408051825165ffffffffffff1681526020928301516001600160d01b0316928101929092520161038f565b6104896108c0366004613461565b611239565b6108d86108d336600461370b565b611274565b60405161038f9190613782565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561094c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109709190613795565b905090565b606060038054610984906137ae565b80601f01602080910402602001604051908101604052809291908181526020018280546109b0906137ae565b80156109fd5780601f106109d2576101008083540402835291602001916109fd565b820191906000526020600020905b8154815290600101906020018083116109e057829003601f168201915b5050505050905090565b6000610a1482600061145e565b92915050565b600033610a28818585611498565b5060019392505050565b6000610a148260016114aa565b6060610970600c6114da565b3333610a5782826114e7565b5050565b610a63611567565b6001600160a01b0381163014801590610aae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b8190610ade57604051636eb43ee160e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b506001600160a01b038116600090815260116020526040902054819060ff1615610b2757604051638ad2e83b60e01b81526001600160a01b039091166004820152602401610ad5565b50610b33600c82611594565b610b5057604051630dd5f2b160e01b815260040160405180910390fd5b6001600160a01b0381166000818152601060205260409081902042815590516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc9190613795565b60038201556040516001600160a01b03831681527ff3e4c2c64e71e6ba2eaab9a599bced62f9eb91d2cda610bf41aa8c80ff2cf8269060200160405180910390a15050565b600033610c1f8582856115a9565b610c2a858585611614565b60019150505b9392505050565b6000610970611673565b600061097061169f565b600080610c56610e7e565b90508065ffffffffffff168310610c9157604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610ad5565b610cbb610c9d846117ca565b6001600160a01b038616600090815260096020526040902090611801565b6001600160d01b0316949350505050565b610cd4611567565b6001600160a01b0381166000908152601160205260409020805460ff19166001179055610d02600c826118b7565b610d1f576040516303ac144760e21b815260040160405180910390fd5b6040516001600160a01b03821681527f66257bcef574219c04f7c05f7a1c78d599da10491294c92a5805c48b4cdf5009906020015b60405180910390a150565b610d67611567565b610d70816118cc565b50565b33610a578183611925565b60006000196000610d8e85611075565b9050610d9c33858784611997565b949350505050565b6000610a1482611a29565b610db7611567565b610dc16000611a4b565b565b6000610a1482611a9d565b600060608060008060006060610de2611abb565b610dea611ae8565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600080610e1f610e7e565b90508065ffffffffffff168310610e5a57604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610ad5565b610e6e610e66846117ca565b600a90611801565b6001600160d01b03169392505050565b6000610970611b15565b60006000196000610e9885610f04565b9050610d9c33858388611997565b606060048054610984906137ae565b6001600160a01b0381166000908152600960205260408120610ed690611b20565b6001600160d01b031692915050565b600033610a28818585611614565b610efb611567565b610d7081611b59565b6000610a1482600161145e565b600080610f1d8361109f565b905080851115610f4657828582604051633fa733bb60e21b8152600401610ad5939291906137e8565b6000610f5186610a32565b9050610f603386868985611bed565b95945050505050565b600080610f75836111fd565b905080851115610f9e57828582604051632e52afbb60e21b8152600401610ad5939291906137e8565b6000610fa986610a07565b9050610f60338686848a611bed565b83421115610fdc57604051632341d78760e11b815260048101859052602401610ad5565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906110569061104e9060a00160405160208183030381529060405280519060200120611d78565b858585611da5565b90506110628187611dd3565b61106c8188611925565b50505050505050565b6000610a148260006114aa565b600061108e8233610d7e565b905061109a3333611925565b919050565b6001600160a01b038116600090815260208190526040812054610a1490600061145e565b834211156110e75760405163313c898160e11b815260048101859052602401610ad5565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886111348c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061118f82611d78565b9050600061119f82878787611da5565b9050896001600160a01b0316816001600160a01b0316146111e6576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610ad5565b6111f18a8a8a611498565b50505050505050505050565b6001600160a01b038116600090815260208190526040812054610a14565b6040805180820190915260008082526020820152610c308383611e26565b611241611567565b6001600160a01b03811661126b57604051631e4fbdf760e01b815260006004820152602401610ad5565b610d7081611a4b565b6060333361128282826114e7565b8367ffffffffffffffff81111561129b5761129b613809565b6040519080825280602002602001820160405280156112c4578160200160208202803683370190505b50925060005b848110156114555760008686838181106112e6576112e661381f565b90506020020160208101906112fb9190613461565b6001600160a01b0381166000908152601060209081526040808320601283528184203385529092529091206001810154885193945091929091908890869081106113475761134761381f565b6020026020010181815250508684815181106113655761136561381f565b602002602001015160001461144a578684815181106113865761138661381f565b60200260200101518260040160008282546113a1919061384b565b92505081905550600081600101819055506113d683338987815181106113c9576113c961381f565b6020026020010151611e5c565b7f9310ccfcb8de723f578a9e4282ea9f521f05ae40dc08f3068dfad528a65ee3c7338489878151811061140b5761140b61381f565b6020026020010151604051611441939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a15b5050506001016112ca565b50505092915050565b6000610c3061146b6108e5565b61147690600161384b565b6114826000600a61393d565b60025461148f919061384b565b85919085611ebb565b6114a58383836001611eff565b505050565b6000610c306114ba82600a61393d565b6002546114c7919061384b565b6114cf6108e5565b61148f90600161384b565b60606000610c3083611fc6565b60006114f3600c6114da565b805190915060005b818110156115605760008382815181106115175761151761381f565b6020026020010151905061152a81612022565b61153485826121e9565b856001600160a01b0316856001600160a01b0316146115575761155786826121e9565b506001016114fb565b5050505050565b600b546001600160a01b03163314610dc15760405163118cdaa760e01b8152336004820152602401610ad5565b6000610c30836001600160a01b038416612301565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461160e57818110156115ff57828183604051637dc7a0d960e11b8152600401610ad5939291906137e8565b61160e84848484036000611eff565b50505050565b6001600160a01b03831661163e57604051634b637e8f60e11b815260006004820152602401610ad5565b6001600160a01b0382166116685760405163ec442f0560e01b815260006004820152602401610ad5565b6114a5838383612350565b6000610970817f000000000000000000000000000000000000000000000000000000000000000061394c565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156116f857507f000000000000000000000000000000000000000000000000000000000000000046145b1561172257507f000000000000000000000000000000000000000000000000000000000000000090565b610970604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff8211156117fd576040516306dfcc6560e41b81526030600482015260248101839052604401610ad5565b5090565b81546000908181600581111561186057600061181c84612367565b6118269085613965565b60008881526020902090915081015465ffffffffffff90811690871610156118505780915061185e565b61185b81600161384b565b92505b505b600061186e878785856124c0565b905080156118a95761189387611885600184613965565b600091825260209091200190565b54600160301b90046001600160d01b03166118ac565b60005b979650505050505050565b6000610c30836001600160a01b038416612522565b6224ea008111156118f057604051631075dfc560e01b815260040160405180910390fd5b600f8190556040518181527f1785a3c870828b01f121cc06ea0a7e33b66fb1baa08ba1bc0f3f08a68253c80f90602001610d54565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46114a58183611992866111fd565b612615565b6119c37f0000000000000000000000000000000000000000000000000000000000000000853085612781565b6119cd83826127ba565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051611a1b929190918252602082015260400190565b60405180910390a350505050565b6001600160a01b038116600090815260096020526040812054610a14906127f0565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116600090815260076020526040812054610a14565b60606109707f00000000000000000000000000000000000000000000000000000000000000006005612821565b60606109707f00000000000000000000000000000000000000000000000000000000000000006006612821565b6000610970426117ca565b80546000908015611b5057611b3a83611885600184613965565b54600160301b90046001600160d01b0316610c30565b60009392505050565b3333611b6582826114e7565b621275008311158015611b7b5750620151808310155b611b98576040516301d6c5f960e31b815260040160405180910390fd5b611baa8367099e8db03256ce5d61398e565b600e81905560408051918252602082018590527fec69f8199b922497574fa428c2a3983ec55d921ceaaf0a0e22352df10e25f56b910160405180910390a1505050565b600f54600003611c0957611c0485858585856128cc565b611560565b826001600160a01b0316856001600160a01b031614611c2d57611c2d8386836115a9565b611c37838261297d565b611c827f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846129b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663650e15058584600f5442611cc1919061384b565b6040518463ffffffff1660e01b8152600401611cdf939291906137e8565b600060405180830381600087803b158015611cf957600080fd5b505af1158015611d0d573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611d69929190918252602082015260400190565b60405180910390a45050505050565b6000610a14611d8561169f565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611db788888888612a43565b925092509250611dc78282612b12565b50909695505050505050565b6001600160a01b03821660009081526007602052604090208054600181019091558181146114a5576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610ad5565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610c309083612bcb565b6040516001600160a01b038381166024830152604482018390526114a591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612c3b565b6000611eea611ec983612cac565b8015611ee5575060008480611ee057611ee0613978565b868809115b151590565b611ef5868686612cd9565b610f60919061384b565b6001600160a01b038416611f295760405163e602df0560e01b815260006004820152602401610ad5565b6001600160a01b038316611f5357604051634a1406b160e11b815260006004820152602401610ad5565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561160e57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611a1b91815260200190565b60608160000180548060200260200160405190810160405280929190818152602001828054801561201657602002820191906000526020600020905b815481526020019060010190808311612002575b50505050509050919050565b6001600160a01b03811660008181526010602052604090819020600381015460048083015493516370a0823160e01b8152309181019190915291939092916370a0823190602401602060405180830381865afa158015612086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120aa9190613795565b6120b4919061384b565b600383015581546000906120c89042613965565b9050806000036120d85750505050565b60008360020154836120ea9190613965565b90506000600161211661211385600e54670de0b6b3a764000061210d9190613965565b90612d94565b90565b61212890670de0b6b3a7640000613965565b6121329190613965565b90506000670de0b6b3a764000061214983856139a2565b612153919061398e565b9050600061216060025490565b905080156121dc57600081612173610c37565b61217e90600a61393d565b61219085670de0b6b3a76400006139a2565b61219a91906139a2565b6121a4919061398e565b9050808860010160008282546121ba919061384b565b92505081905550828860020160008282546121d5919061384b565b9091555050505b5050429094555050505050565b6001600160a01b0382166121fb575050565b6001600160a01b038082166000818152601060209081526040808320815160a08101835281548152600182015481850190815260028301548285015260038301546060830152600490920154608082015294845260128352818420958816845294909152812080549351929390926122739190613965565b90508015611560576000670de0b6b3a764000061228e610c37565b61229990600a61393d565b836122b9896001600160a01b031660009081526020819052604090205490565b6122c391906139a2565b6122cd919061398e565b6122d7919061398e565b9050808360010160008282546122ed919061384b565b909155505050602083015182555050505050565b600081815260018301602052604081205461234857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a14565b506000610a14565b828261235c82826114e7565b611560858585612dee565b600060018211612375575090565b816001600160801b821061238e5760809190911c9060401b5b6801000000000000000082106123a95760409190911c9060201b5b64010000000082106123c05760209190911c9060101b5b6201000082106123d55760109190911c9060081b5b61010082106123e95760089190911c9060041b5b601082106123fc5760049190911c9060021b5b600482106124085760011b5b600302600190811c9081858161242057612420613978565b048201901c9050600181858161243857612438613978565b048201901c9050600181858161245057612450613978565b048201901c9050600181858161246857612468613978565b048201901c9050600181858161248057612480613978565b048201901c9050600181858161249857612498613978565b048201901c90506124b78185816124b1576124b1613978565b04821190565b90039392505050565b60005b8183101561251a5760006124d78484612e55565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561250657809250612514565b61251181600161384b565b93505b506124c3565b509392505050565b6000818152600183016020526040812054801561260b576000612546600183613965565b855490915060009061255a90600190613965565b90508082146125bf57600086600001828154811061257a5761257a61381f565b906000526020600020015490508087600001848154811061259d5761259d61381f565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806125d0576125d06139b9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a14565b6000915050610a14565b816001600160a01b0316836001600160a01b0316141580156126375750600081115b156114a5576001600160a01b038316156126df576001600160a01b0383166000908152600960205260408120819061267a90612e7061267586612e7c565b612eb0565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516126d4929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156114a5576001600160a01b0382166000908152600960205260408120819061271890612ee961267586612e7c565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612772929190918252602082015260400190565b60405180910390a25050505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261160e9186918216906323b872dd90608401611e89565b6001600160a01b0382166127e45760405163ec442f0560e01b815260006004820152602401610ad5565b610a5760008383612350565b600063ffffffff8211156117fd576040516306dfcc6560e41b81526020600482015260248101839052604401610ad5565b606060ff831461283b5761283483612ef5565b9050610a14565b818054612847906137ae565b80601f0160208091040260200160405190810160405280929190818152602001828054612873906137ae565b80156128c05780601f10612895576101008083540402835291602001916128c0565b820191906000526020600020905b8154815290600101906020018083116128a357829003601f168201915b50505050509050610a14565b826001600160a01b0316856001600160a01b0316146128f0576128f08386836115a9565b6128fa838261297d565b6129257f00000000000000000000000000000000000000000000000000000000000000008584611e5c565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611d69929190918252602082015260400190565b6001600160a01b0382166129a757604051634b637e8f60e11b815260006004820152602401610ad5565b610a5782600083612350565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612a048482612f34565b61160e576040516001600160a01b03848116602483015260006044830152612a3991869182169063095ea7b390606401611e89565b61160e8482612c3b565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612a7e5750600091506003905082612b08565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612ad2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612afe57506000925060019150829050612b08565b9250600091508190505b9450945094915050565b6000826003811115612b2657612b266139cf565b03612b2f575050565b6001826003811115612b4357612b436139cf565b03612b615760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612b7557612b756139cf565b03612b965760405163fce698f760e01b815260048101829052602401610ad5565b6003826003811115612baa57612baa6139cf565b03610a57576040516335e2f38360e21b815260048101829052602401610ad5565b6040805180820190915260008082526020820152826000018263ffffffff1681548110612bfa57612bfa61381f565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b600080602060008451602086016000885af180612c5e576040513d6000823e3d81fd5b50506000513d91508115612c76578060011415612c83565b6001600160a01b0384163b155b1561160e57604051635274afe760e01b81526001600160a01b0385166004820152602401610ad5565b60006002826003811115612cc257612cc26139cf565b612ccc91906139e5565b60ff166001149050919050565b6000838302816000198587098281108382030391505080600003612d1057838281612d0657612d06613978565b0492505050610c30565b808411612d2757612d276003851502601118612f83565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000828160018416612dae57670de0b6b3a7640000612db0565b815b9050600184901c93505b8315610d9c57612dca8283612f95565b91506001841615612de257612ddf8183612f95565b90505b600184901c9350612dba565b612df983838361304b565b6001600160a01b038316612e4a576000612e1260025490565b90506001600160d01b0380821115612e4757604051630e58ae9360e11b81526004810183905260248101829052604401610ad5565b50505b6114a5838383613162565b6000612e64600284841861398e565b610c309084841661384b565b6000610c308284613a07565b60006001600160d01b038211156117fd576040516306dfcc6560e41b815260d0600482015260248101839052604401610ad5565b600080612edc612ebe610e7e565b612ed4612eca88611b20565b868863ffffffff16565b8791906131d8565b915091505b935093915050565b6000610c308284613a26565b60606000612f02836131e6565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000806000806020600086516020880160008a5af192503d91506000519050828015612f7957508115612f6a5780600114612f79565b6000866001600160a01b03163b115b9695505050505050565b634e487b71600052806020526024601cfd5b6000808060001984860984860292508281108382030391505080600003612fc95750670de0b6b3a764000090049050610a14565b670de0b6b3a76400008110612ffb57604051635173648d60e01b81526004810186905260248101859052604401610ad5565b6000670de0b6b3a764000085870962040000818503049310909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b6001600160a01b03831661307657806002600082825461306b919061384b565b909155506130d59050565b6001600160a01b038316600090815260208190526040902054818110156130b65783818360405163391434e360e21b8152600401610ad5939291906137e8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166130f157600280548290039055613110565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161315591815260200190565b60405180910390a3505050565b6001600160a01b03831661318457613181600a612ee961267584612e7c565b50505b6001600160a01b0382166131a6576131a3600a612e7061267584612e7c565b50505b6001600160a01b038381166000908152600860205260408082205485841683529120546114a592918216911683612615565b600080612edc85858561320e565b600060ff8216601f811115610a1457604051632cd44ac360e21b815260040160405180910390fd5b82546000908190801561330757600061322c87611885600185613965565b805490915065ffffffffffff80821691600160301b90046001600160d01b031690881682111561326f57604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036132a857825465ffffffffffff16600160301b6001600160d01b038916021783556132f9565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b9450859350612ee192505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081612ee1565b6000815180845260005b818110156133885760208185018101518683018201520161336c565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610c306020830184613362565b6000602082840312156133cd57600080fd5b5035919050565b80356001600160a01b038116811461109a57600080fd5b600080604083850312156133fe57600080fd5b613407836133d4565b946020939093013593505050565b602080825282518282018190526000918401906040840190835b818110156134565783516001600160a01b031683526020938401939092019160010161342f565b509095945050505050565b60006020828403121561347357600080fd5b610c30826133d4565b60008060006060848603121561349157600080fd5b61349a846133d4565b92506134a8602085016133d4565b929592945050506040919091013590565b600080604083850312156134cc57600080fd5b823591506134dc602084016133d4565b90509250929050565b600081518084526020840193506020830160005b828110156135175781518652602095860195909101906001016134f9565b5093949350505050565b60ff60f81b8816815260e06020820152600061354060e0830189613362565b82810360408401526135528189613362565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061358381856134e5565b9a9950505050505050505050565b6000806000606084860312156135a657600080fd5b833592506135b6602085016133d4565b91506135c4604085016133d4565b90509250925092565b600080604083850312156135e057600080fd5b6135e9836133d4565b91506134dc602084016133d4565b803560ff8116811461109a57600080fd5b60008060008060008060c0878903121561362157600080fd5b61362a876133d4565b95506020870135945060408701359350613646606088016135f7565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a03121561367b57600080fd5b613684886133d4565b9650613692602089016133d4565b955060408801359450606088013593506136ae608089016135f7565b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156136de57600080fd5b6136e7836133d4565b9150602083013563ffffffff8116811461370057600080fd5b809150509250929050565b6000806020838503121561371e57600080fd5b823567ffffffffffffffff81111561373557600080fd5b8301601f8101851361374657600080fd5b803567ffffffffffffffff81111561375d57600080fd5b8560208260051b840101111561377257600080fd5b6020919091019590945092505050565b602081526000610c3060208301846134e5565b6000602082840312156137a757600080fd5b5051919050565b600181811c908216806137c257607f821691505b6020821081036137e257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a1457610a14613835565b6001815b6001841115612ee15780850481111561387d5761387d613835565b600184161561388b57908102905b60019390931c928002613862565b6000826138a857506001610a14565b816138b557506000610a14565b81600181146138cb57600281146138d5576138f1565b6001915050610a14565b60ff8411156138e6576138e6613835565b50506001821b610a14565b5060208310610133831016604e8410600b8410161715613914575081810a610a14565b613921600019848461385e565b806000190482111561393557613935613835565b029392505050565b6000610c3060ff841683613899565b60ff8181168382160190811115610a1457610a14613835565b81810381811115610a1457610a14613835565b634e487b7160e01b600052601260045260246000fd5b60008261399d5761399d613978565b500490565b8082028115828204841417610a1457610a14613835565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060ff8316806139f8576139f8613978565b8060ff84160691505092915050565b6001600160d01b038281168282160390811115610a1457610a14613835565b6001600160d01b038181168382160190811115610a1457610a1461383556fea164736f6c634300081c000a60c060405234801561001057600080fd5b5060405161087238038061087283398101604081905261002f91610044565b6001600160a01b03166080523360a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516107b06100c26000396000818161015701528181610184015281816103ec0152610443015260008181606c015281816101c70152818161030301526103cb01526107b06000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063327107f714610067578063650e1505146100ab5780638920f2c4146100c0578063f3c73bd1146100d3578063f4dadc61146100e6578063fbfa77cf14610152575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b9366004610709565b610179565b005b6100be6100ce36600461074a565b61028b565b6100be6100e136600461074a565b61036b565b6101286100f436600461074a565b600160208190526000918252604090912080549181015460028201546003909201546001600160a01b039093169290919084565b604080516001600160a01b03909516855260208501939093529183015260608201526080016100a2565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101c25760405163d66f609b60e01b815260040160405180910390fd5b6101ee7f0000000000000000000000000000000000000000000000000000000000000000333085610516565b6000805481806101fd83610763565b9091555060008181526001602081815260409283902080546001600160a01b0319166001600160a01b038a16908117825592810188905560028101879055835185815291820192909252918201869052606082018590529192507f1f0650dfb293ab82d4436fe83b01202a80a399c0ad904483e28ad3167a2b15fc9060800160405180910390a15050505050565b6000818152600160205260409020600281015442108015906102b05750600281015415155b6102cd57604051631652935760e31b815260040160405180910390fd5b6003810154156102f05760405163108203d360e31b815260040160405180910390fd5b42600382015580546001820154610334917f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0390911690610583565b6040518281527f0df361b71c1497d91c4df7d933bc9dc7591dd48ffad57fd10b91dd2ccd8457089060200160405180910390a15050565b600081815260016020526040902080546001600160a01b031633146103a35760405163d66f609b60e01b815260040160405180910390fd5b6003810154156103c65760405163108203d360e31b815260040160405180910390fd5b6104157f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083600101546105b9565b60018101548154604051636e553f6560e01b815260048101929092526001600160a01b0390811660248301527f00000000000000000000000000000000000000000000000000000000000000001690636e553f65906044016020604051808303816000875af115801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b0919061078a565b506040518281527f6aa8cc9f50405fe8d4778b8400a2168790bb26c5c38e83fe6ad5a0b70f4473c69060200160405180910390a1506000908152600160208190526040822080546001600160a01b03191681559081018290556002810182905560030155565b6040516001600160a01b03848116602483015283811660448301526064820183905261057d9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610645565b50505050565b6040516001600160a01b038381166024830152604482018390526105b491859182169063a9059cbb9060640161054b565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261060a84826106ba565b61057d576040516001600160a01b0384811660248301526000604483015261063f91869182169063095ea7b39060640161054b565b61057d84825b600080602060008451602086016000885af180610668576040513d6000823e3d81fd5b50506000513d9150811561068057806001141561068d565b6001600160a01b0384163b155b1561057d57604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b6000806000806020600086516020880160008a5af192503d915060005190508280156106ff575081156106f057806001146106ff565b6000866001600160a01b03163b115b9695505050505050565b60008060006060848603121561071e57600080fd5b83356001600160a01b038116811461073557600080fd5b95602085013595506040909401359392505050565b60006020828403121561075c57600080fd5b5035919050565b60006001820161078357634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561079c57600080fd5b505191905056fea164736f6c634300081c000aa164736f6c634300081c000a00000000000000000000000038e6c0573f325c2ab5644df1e08ad84c997d57480000000000000000000000003af43b15c2a274fb737bfdc85993665dc13ccc25