0 txs
15 calls
constructor
constructor(address _globalFactory)
functions
canClaimFees
viewfunction canClaimFees(address) view returns (bool)
CREATE_ROLE
viewfunction CREATE_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
GAUGE_FACTORY_MANAGER_ROLE
viewfunction GAUGE_FACTORY_MANAGER_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
globalFactory
viewfunction globalFactory() view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
activateEmergencyMode
nonpayablefunction activateEmergencyMode(address[] _gauges)
addRewardToken
nonpayablefunction addRewardToken(address _gauge, address _token)
addRewardToken
nonpayablefunction addRewardToken(address[] _gauges, address _token)
claimFees
nonpayablefunction claimFees(address[] _gauges)
createEternalGauge
nonpayablefunction createEternalGauge(address _pool, address _distribution, address _feeVault, address _votingIncentives, address _incentiveMaker) returns (address)
createGauge
nonpayablefunction createGauge(address[] _rewardtokens, address _token, address _distribution, address _feeVault, address _votingIncetives, address _claimer, bool isWeighted) returns (address)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pauseGauge
nonpayablefunction pauseGauge(address[] _gauges)
removeRewardToken
nonpayablefunction removeRewardToken(address gauge, address _token)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setClaimer
nonpayablefunction setClaimer(address claimer, address[] _gauges)
setDistribution
nonpayablefunction setDistribution(address[] _gauges, address distro)
setFeeVault
nonpayablefunction setFeeVault(address[] _gauges, address[] feevault)
setGaugeFeesClaim
nonpayablefunction setGaugeFeesClaim(address _contract, bool status)
setGlobalFactory
nonpayablefunction setGlobalFactory(address _gf)
setIncentiveMaker
nonpayablefunction setIncentiveMaker(address[] _gauges, address _incentiveMaker)
setVotingIncentives
nonpayablefunction setVotingIncentives(address _gauges, address _vi)
setVotingIncentives
nonpayablefunction setVotingIncentives(address[] _gauges, address[] _vi)
stopEmergencyMode
nonpayablefunction stopEmergencyMode(address[] _gauges)
unpauseGauge
nonpayablefunction unpauseGauge(address[] _gauges)
events
CreateGauge
event CreateGauge(address indexed strategy, address indexed gauge)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SetGaugeFeesClaimAutomation
event SetGaugeFeesClaimAutomation(address indexed automation, bool status)
SetGlobalFactory
event SetGlobalFactory(address indexed globalfactory)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b50604051620061f2380380620061f2833981016040819052620000349162000191565b6001600160a01b03811615620000a657600180546001600160a01b0319166001600160a01b0383169081179091556200007e90600080516020620061d283398151915290620000f0565b600154620000a690600080516020620061b2833981519152906001600160a01b0316620000f0565b620000b3600033620000f0565b620000ce600080516020620061b283398151915233620000f0565b620000e9600080516020620061d283398151915233620000f0565b50620001c3565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200018d576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200014c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600060208284031215620001a457600080fd5b81516001600160a01b0381168114620001bc57600080fd5b9392505050565b615fdf80620001d36000396000f3fe60806040523480156200001157600080fd5b5060043610620001f45760003560e01c80635e93d0e4116200011957806385379bc011620000af578063d0a273cb116200007a578063d0a273cb14620004a9578063d547741f14620004c0578063f0ec7e3014620004d7578063ffd32e9c14620004ee57600080fd5b806385379bc0146200043b57806391d148541462000452578063a0ea1ccc146200048c578063a217fddf14620004a057600080fd5b80636fcf23d611620000f05780636fcf23d614620003df578063725acc6b14620003f657806379251d88146200040d57806384e1a4f8146200042457600080fd5b80635e93d0e4146200039a5780636153304014620003b15780636cbbf82214620003c857600080fd5b80632ef2115b116200018f57806336568abe116200016657806336568abe146200033e5780634ac0374e1462000355578063536e198c146200036c5780635e135a89146200038357600080fd5b80632ef2115b14620002f95780632f2ff15d146200031057806330c6f602146200032757600080fd5b8063072dc20d11620001d0578063072dc20d146200027357806323cb2390146200028c578063248a9ca314620002a35780632c4c00be14620002c957600080fd5b80626f53c914620001f957806301ffc9a71462000234578063033b6d1f146200025c575b600080fd5b620002217f2ad5dda4abad2eba9015076cc6a1db468a91b444067d58b590c8c73985521a0481565b6040519081526020015b60405180910390f35b6200024b6200024536600462001734565b62000514565b60405190151581526020016200022b565b6200022160008051602062005f8a83398151915281565b6200028a62000284366004620017cc565b6200054c565b005b6200028a6200029d36600462001826565b62000612565b62000221620002b43660046200185e565b60009081526020819052604090206001015490565b620002e0620002da3660046200189f565b62000690565b6040516001600160a01b0390911681526020016200022b565b6200028a6200030a366004620019e3565b62000754565b6200028a6200032136600462001a01565b6200087d565b6200028a62000338366004620017cc565b620008ab565b6200028a6200034f36600462001a01565b6200096a565b6200028a6200036636600462001a27565b620009fa565b6200028a6200037d36600462001a27565b62000ab4565b6200028a6200039436600462001826565b62000b72565b6200028a620003ab366004620017cc565b62000bbc565b6200028a620003c236600462001a6d565b62000c7b565b620002e0620003d936600462001ac6565b62000d3a565b6200028a620003f036600462001b36565b62000e17565b6200028a6200040736600462001a27565b62000e92565b6200028a6200041e36600462001826565b62000f57565b6200028a6200043536600462001a27565b62000fa1565b6200028a6200044c36600462001b65565b6200105f565b6200024b6200046336600462001a01565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600154620002e0906001600160a01b031681565b62000221600081565b6200028a620004ba36600462001b65565b62001169565b6200028a620004d136600462001a01565b620012af565b6200028a620004e836600462001a27565b620012d8565b6200024b620004ff366004620019e3565b60026020526000908152604090205460ff1681565b60006001600160e01b03198216637965db0b60e01b14806200054657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602062005f8a83398151915262000567816200138c565b60005b838110156200060b5784848281811062000588576200058862001bd8565b90506020020160208101906200059f9190620019e3565b604051631de7e83160e21b81526001600160a01b038581166004830152919091169063779fa0c490602401600060405180830381600087803b158015620005e557600080fd5b505af1158015620005fa573d6000803e3d6000fd5b5050600190920191506200056a9050565b5050505050565b60008051602062005f8a8339815191526200062d816200138c565b604051630700f9b360e21b81526001600160a01b038381166004830152841690631c03e6cc906024015b600060405180830381600087803b1580156200067257600080fd5b505af115801562000687573d6000803e3d6000fd5b50505050505050565b60007f2ad5dda4abad2eba9015076cc6a1db468a91b444067d58b590c8c73985521a04620006be816200138c565b600089898989898989604051620006d59062001718565b620006e7979695949392919062001bee565b604051809103906000f08015801562000704573d6000803e3d6000fd5b509050806001600160a01b0316896001600160a01b03167f46843f5a58231053242305fde621fa67db852076f219ff604176b817bd97a56960405160405180910390a39998505050505050505050565b60008051602062005f8a8339815191526200076f816200138c565b6001600160a01b038216620007cb5760405162461bcd60e51b815260206004820152600f60248201527f47463a205a65726f41646472657373000000000000000000000000000000000060448201526064015b60405180910390fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790556200082a7f2ad5dda4abad2eba9015076cc6a1db468a91b444067d58b590c8c73985521a04836200139b565b6200084560008051602062005f8a833981519152836200139b565b6040516001600160a01b038316907fa8058d034a214bf4981222270790224959db0d5b82f22dae82a70e7b397912b390600090a25050565b6000828152602081905260409020600101546200089a816200138c565b620008a683836200139b565b505050565b60008051602062005f8a833981519152620008c6816200138c565b60005b838110156200060b57848482818110620008e757620008e762001bd8565b9050602002016020810190620008fe9190620019e3565b604051637f69901560e01b81526001600160a01b0385811660048301529190911690637f69901590602401600060405180830381600087803b1580156200094457600080fd5b505af115801562000959573d6000803e3d6000fd5b505060019092019150620008c99050565b6001600160a01b0381163314620009ea5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401620007c2565b620009f682826200143b565b5050565b60008051602062005f8a83398151915262000a15816200138c565b60005b8281101562000aae5783838281811062000a365762000a3662001bd8565b905060200201602081019062000a4d9190620019e3565b6001600160a01b031663d00960106040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000a8857600080fd5b505af115801562000a9d573d6000803e3d6000fd5b50506001909201915062000a189050565b50505050565b60008051602062005f8a83398151915262000acf816200138c565b60005b8281101562000aae5783838281811062000af05762000af062001bd8565b905060200201602081019062000b079190620019e3565b6040516302329a2960e01b8152600060048201526001600160a01b0391909116906302329a2990602401600060405180830381600087803b15801562000b4c57600080fd5b505af115801562000b61573d6000803e3d6000fd5b50506001909201915062000ad29050565b60008051602062005f8a83398151915262000b8d816200138c565b604051630d779edb60e31b81526001600160a01b038381166004830152841690636bbcf6d89060240162000657565b60008051602062005f8a83398151915262000bd7816200138c565b60005b838110156200060b5784848281811062000bf85762000bf862001bd8565b905060200201602081019062000c0f9190620019e3565b604051630700f9b360e21b81526001600160a01b0385811660048301529190911690631c03e6cc90602401600060405180830381600087803b15801562000c5557600080fd5b505af115801562000c6a573d6000803e3d6000fd5b50506001909201915062000bda9050565b60008051602062005f8a83398151915262000c96816200138c565b60005b828110156200060b5783838281811062000cb75762000cb762001bd8565b905060200201602081019062000cce9190620019e3565b6040516366fdac1960e11b81526001600160a01b038781166004830152919091169063cdfb583290602401600060405180830381600087803b15801562000d1457600080fd5b505af115801562000d29573d6000803e3d6000fd5b50506001909201915062000c999050565b60007f2ad5dda4abad2eba9015076cc6a1db468a91b444067d58b590c8c73985521a0462000d68816200138c565b6000878787878760405162000d7d9062001726565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a001604051809103906000f08015801562000dc9573d6000803e3d6000fd5b509050806001600160a01b0316886001600160a01b03167f46843f5a58231053242305fde621fa67db852076f219ff604176b817bd97a56960405160405180910390a3979650505050505050565b60008051602062005f8a83398151915262000e32816200138c565b6001600160a01b038316600081815260026020908152604091829020805460ff191686151590811790915591519182527f5926d07a61e1d993963bcd0db8f845acdc464dae4b74985ac0dd62ff1c17cd5d910160405180910390a2505050565b3360009081526002602052604090205460ff1662000eaf57600080fd5b60005b81811015620008a65782828281811062000ed05762000ed062001bd8565b905060200201602081019062000ee79190620019e3565b6001600160a01b031663d294f0936040518163ffffffff1660e01b815260040160408051808303816000875af115801562000f26573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f4c919062001c98565b505060010162000eb2565b60008051602062005f8a83398151915262000f72816200138c565b604051633d509c9760e01b81526001600160a01b038381166004830152841690633d509c979060240162000657565b60008051602062005f8a83398151915262000fbc816200138c565b60005b8281101562000aae5783838281811062000fdd5762000fdd62001bd8565b905060200201602081019062000ff49190620019e3565b6040516302329a2960e01b8152600160048201526001600160a01b0391909116906302329a2990602401600060405180830381600087803b1580156200103957600080fd5b505af11580156200104e573d6000803e3d6000fd5b50506001909201915062000fbf9050565b60008051602062005f8a8339815191526200107a816200138c565b8382146200108757600080fd5b60005b848110156200116157858582818110620010a857620010a862001bd8565b9050602002016020810190620010bf9190620019e3565b6001600160a01b0316636bbcf6d8858584818110620010e257620010e262001bd8565b9050602002016020810190620010f99190620019e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200113b57600080fd5b505af115801562001150573d6000803e3d6000fd5b5050600190920191506200108a9050565b505050505050565b60008051602062005f8a83398151915262001184816200138c565b838214620011d55760405162461bcd60e51b815260206004820152600f60248201527f4c656e677468206d69736d6174636800000000000000000000000000000000006044820152606401620007c2565b60005b848110156200116157858582818110620011f657620011f662001bd8565b90506020020160208101906200120d9190620019e3565b6001600160a01b031663a591f97f85858481811062001230576200123062001bd8565b9050602002016020810190620012479190620019e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200128957600080fd5b505af11580156200129e573d6000803e3d6000fd5b505060019092019150620011d89050565b600082815260208190526040902060010154620012cc816200138c565b620008a683836200143b565b60008051602062005f8a833981519152620012f3816200138c565b60005b8281101562000aae5783838281811062001314576200131462001bd8565b90506020020160208101906200132b9190620019e3565b6001600160a01b031663b1534ecd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200136657600080fd5b505af11580156200137b573d6000803e3d6000fd5b505060019092019150620012f69050565b620013988133620014bb565b50565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620009f6576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620013f73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615620009f6576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620009f657620014ef8162001537565b620014fc8360206200154a565b6040516020016200150f92919062001ce3565b60408051601f198184030181529082905262461bcd60e51b8252620007c29160040162001d68565b6060620005466001600160a01b03831660145b606060006200155b83600262001db3565b6200156890600262001dcd565b67ffffffffffffffff81111562001583576200158362001878565b6040519080825280601f01601f191660200182016040528015620015ae576020820181803683370190505b509050600360fc1b81600081518110620015cc57620015cc62001bd8565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620015fe57620015fe62001bd8565b60200101906001600160f81b031916908160001a90535060006200162484600262001db3565b6200163190600162001dcd565b90505b6001811115620016c0577f303132333435363738396162636465660000000000000000000000000000000085600f166010811062001676576200167662001bd8565b1a60f81b8282815181106200168f576200168f62001bd8565b60200101906001600160f81b031916908160001a90535060049490941c93620016b88162001de3565b905062001634565b508315620017115760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620007c2565b9392505050565b6130688062001dfe83390190565b6111248062004e6683390190565b6000602082840312156200174757600080fd5b81356001600160e01b0319811681146200171157600080fd5b60008083601f8401126200177357600080fd5b50813567ffffffffffffffff8111156200178c57600080fd5b6020830191508360208260051b8501011115620017a857600080fd5b9250929050565b80356001600160a01b0381168114620017c757600080fd5b919050565b600080600060408486031215620017e257600080fd5b833567ffffffffffffffff811115620017fa57600080fd5b620018088682870162001760565b90945092506200181d905060208501620017af565b90509250925092565b600080604083850312156200183a57600080fd5b6200184583620017af565b91506200185560208401620017af565b90509250929050565b6000602082840312156200187157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b80358015158114620017c757600080fd5b600080600080600080600060e0888a031215620018bb57600080fd5b873567ffffffffffffffff80821115620018d457600080fd5b818a0191508a601f830112620018e957600080fd5b813560208282111562001900576200190062001878565b8160051b604051601f19603f8301168101818110868211171562001928576200192862001878565b60405292835281830193508481018201928e8411156200194757600080fd5b948201945b8386101562001970576200196086620017af565b855294820194938201936200194c565b9b506200198190508c8201620017af565b9950505050506200199560408901620017af565b9450620019a560608901620017af565b9350620019b560808901620017af565b9250620019c560a08901620017af565b9150620019d560c089016200188e565b905092959891949750929550565b600060208284031215620019f657600080fd5b6200171182620017af565b6000806040838503121562001a1557600080fd5b823591506200185560208401620017af565b6000806020838503121562001a3b57600080fd5b823567ffffffffffffffff81111562001a5357600080fd5b62001a618582860162001760565b90969095509350505050565b60008060006040848603121562001a8357600080fd5b62001a8e84620017af565b9250602084013567ffffffffffffffff81111562001aab57600080fd5b62001ab98682870162001760565b9497909650939450505050565b600080600080600060a0868803121562001adf57600080fd5b62001aea86620017af565b945062001afa60208701620017af565b935062001b0a60408701620017af565b925062001b1a60608701620017af565b915062001b2a60808701620017af565b90509295509295909350565b6000806040838503121562001b4a57600080fd5b62001b5583620017af565b915062001855602084016200188e565b6000806000806040858703121562001b7c57600080fd5b843567ffffffffffffffff8082111562001b9557600080fd5b62001ba38883890162001760565b9096509450602087013591508082111562001bbd57600080fd5b5062001bcc8782880162001760565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60e08082528851908201819052600090602090610100840190828c01845b8281101562001c335781516001600160a01b03168452928401929084019060010162001c0c565b5050506001600160a01b038a8116602086015289166040850152915062001c579050565b6001600160a01b03861660608301526001600160a01b03851660808301526001600160a01b03841660a083015282151560c083015298975050505050505050565b6000806040838503121562001cac57600080fd5b505080516020909101519092909150565b60005b8381101562001cda57818101518382015260200162001cc0565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162001d1d81601785016020880162001cbd565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835162001d5c81602884016020880162001cbd565b01602801949350505050565b602081526000825180602084015262001d8981604085016020870162001cbd565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000546576200054662001d9d565b8082018082111562000546576200054662001d9d565b60008162001df55762001df562001d9d565b50600019019056fe60c06040523480156200001157600080fd5b506040516200306838038062003068833981016040819052620000349162000369565b60016000556200004433620002d3565b6001805460ff60a01b191690556001600160a01b038616620000955760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b60448201526064015b60405180910390fd5b6001600160a01b038516620000d55760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b60448201526064016200008c565b6001600160a01b038416620001155760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b60448201526064016200008c565b6001600160a01b038216620001555760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b60448201526064016200008c565b60005b87518110156200024f5760006001600160a01b0316888281518110620001825762000182620004ac565b60200260200101516001600160a01b03161462000246576001600b60008a8481518110620001b457620001b4620004ac565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060068882815181106200020a576200020a620004ac565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b60010162000158565b8115156080526001600160a01b0387811660a052600380546001600160a01b03199081168984161790915560058054821688841617905560048054909116858316179055841615620002b757600f80546001600160a01b0319166001600160a01b0386161790555b50506001805460ff60a81b1916905550620004c2945050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200035357600080fd5b919050565b805180151581146200035357600080fd5b600080600080600080600060e0888a0312156200038557600080fd5b87516001600160401b03808211156200039d57600080fd5b818a0191508a601f830112620003b257600080fd5b8151602082821115620003c957620003c962000325565b8160051b604051601f19603f83011681018181108682111715620003f157620003f162000325565b60405292835281830193508481018201928e8411156200041057600080fd5b948201945b83861015620004395762000429866200033b565b8552948201949382019362000415565b9b506200044a90508c82016200033b565b9950505050506200045e604089016200033b565b94506200046e606089016200033b565b93506200047e608089016200033b565b92506200048e60a089016200033b565b91506200049e60c0890162000358565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b60805160a051612b5d6200050b600039600081816104b801528181610f66015281816111c80152818161125801528181611be2015261209f015260006110dc0152612b5d6000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c8063853828b611610191578063c6c8f6b6116100e3578063d379be2311610097578063de5f626811610071578063de5f626814610648578063f122977714610650578063f2fde38b1461066357600080fd5b8063d379be2314610604578063da09d19d14610617578063db2e21bc1461064057600080fd5b8063cdfb5832116100c8578063cdfb5832146105cc578063d0096010146105df578063d294f093146105e757600080fd5b8063c6c8f6b6146105a5578063caa6fea4146105b857600080fd5b8063b5fd73f811610145578063b6f7097f1161011f578063b6f7097f14610577578063bf199e621461058a578063c00007b01461059257600080fd5b8063b5fd73f81461052e578063b66503cf14610551578063b6b55f251461056457600080fd5b80639e88ec10116101765780639e88ec10146104f3578063a591f97f14610513578063b1534ecd1461052657600080fd5b8063853828b6146104da5780638da5cb5b146104e257600080fd5b8063478222c21161024a578063715018a6116101fe5780637c91e4eb116101d85780637c91e4eb1461048d5780637f699015146104a057806382bfefc8146104b357600080fd5b8063715018a61461045f57806376a0adf2146104675780637bb7bed11461047a57600080fd5b80636bbcf6d81161022f5780636bbcf6d81461041b5780636e9852f21461042e57806370a082311461043657600080fd5b8063478222c2146103d25780635c975abb146103fd57600080fd5b80631c3317c7116102ac5780632e1a7d4d116102865780632e1a7d4d146103a45780633d18b912146103b75780633d509c97146103bf57600080fd5b80631c3317c714610355578063211dc32d14610368578063221ca18c1461037b57600080fd5b806318160ddd116102dd57806318160ddd146103215780631be05289146103385780631c03e6cc1461034257600080fd5b806302329a29146102f9578063055de2751461030e575b600080fd5b61030c6103073660046127b7565b610676565b005b61030c61031c3660046127e9565b610696565b6002545b6040519081526020015b60405180910390f35b61032562093a8081565b61030c6103503660046127e9565b6106e6565b61030c610363366004612806565b610817565b610325610376366004612832565b610894565b6103256103893660046127e9565b6001600160a01b031660009081526008602052604090205490565b61030c6103b236600461286b565b6108a9565b61030c6108ba565b61030c6103cd3660046127e9565b6108df565b6005546103e5906001600160a01b031681565b6040516001600160a01b03909116815260200161032f565b600154600160a01b900460ff165b604051901515815260200161032f565b61030c6104293660046127e9565b6109d6565b61030c610a66565b6103256104443660046127e9565b6001600160a01b03166000908152600e602052604090205490565b61030c610a90565b6103256104753660046127e9565b610aa2565b6103e561048836600461286b565b610ac9565b6003546103e5906001600160a01b031681565b61030c6104ae3660046127e9565b610af3565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b61030c610b83565b6001546001600160a01b03166103e5565b6105066105013660046127e9565b610ba4565b60405161032f9190612884565b61030c6105213660046127e9565b610c60565b61030c610cf0565b61040b61053c3660046127e9565b600b6020526000908152604090205460ff1681565b61030c61055f366004612806565b610d4a565b61030c61057236600461286b565b610db9565b600f546103e5906001600160a01b031681565b600654610325565b61030c6105a03660046127e9565b610dcb565b61030c6105b336600461286b565b610ea0565b60015461040b90600160a81b900460ff1681565b61030c6105da3660046127e9565b610fcc565b61030c61105c565b6105ef6110b8565b6040805192835260208301919091520161032f565b6004546103e5906001600160a01b031681565b6103256106253660046127e9565b6001600160a01b031660009081526007602052604090205490565b61030c611127565b61030c611237565b61032561065e3660046127e9565b6112d1565b61030c6106713660046127e9565b6112dc565b61067e611369565b8061068e5761068b6113c3565b50565b61068b611418565b61069e61145b565b6106a66114b4565b6004546001600160a01b0316331480156106ca57506004546001600160a01b031615155b6106d357600080fd5b6106dc8161150e565b61068b6001600055565b6106ee611369565b6001600160a01b0381166000908152600b602052604090205460ff161561074d5760405162461bcd60e51b815260206004820152600e60248201526d10b4b9a932bbb0b9322a37b5b2b760911b60448201526064015b60405180910390fd5b6001600160a01b03811661078b5760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b6044820152606401610744565b6001600160a01b0381166000818152600b6020526040808220805460ff1916600190811790915560068054918201815583527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b03191684179055517f851bbb4304bf0768ed98b97e429b5bd1dcc1f194b36cd1650f40293e951ae3939190a250565b61081f61145b565b600154600160a81b900460ff161561083657600080fd5b6003546001600160a01b0316331461087a5760405162461bcd60e51b81526020600482015260076024820152662164697374726f60c81b6044820152606401610744565b61088682826001611608565b6108906001600055565b5050565b60006108a083836118b5565b90505b92915050565b6108b16114b4565b61068b81611964565b6108c261145b565b6108ca6114b4565b6108d33361150e565b6108dd6001600055565b565b6108e7611369565b6001600160a01b0381166000908152600b602052604090205460ff16156109415760405162461bcd60e51b815260206004820152600e60248201526d10b4b9a932bbb0b9322a37b5b2b760911b6044820152606401610744565b60065460005b818110156109d157826001600160a01b03166006828154811061096c5761096c6128c8565b6000918252602090912001546001600160a01b0316036109c9576109908382611a09565b6040516001600160a01b038416907f36bd04094fa067bb9471a8fbdb0a6e8a43424a2566ad3a740c88973fa40a311890600090a2505050565b600101610947565b505050565b6109de611369565b6001600160a01b038116610a1c5760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b6044820152606401610744565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f71119a4a2850109bdeaff1aedbd330e4bc80607f423b1562fddbdc7ff4628b6490600090a250565b610a6e6114b4565b336000908152600e6020526040902054610a8790611964565b6108dd3361150e565b610a98611369565b6108dd6000611adc565b6001600160a01b0381166000908152600860205260408120546108a39062093a80906128f4565b60068181548110610ad957600080fd5b6000918252602090912001546001600160a01b0316905081565b610afb611369565b6001600160a01b038116610b395760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b6044820152606401610744565b600380546001600160a01b0319166001600160a01b0383169081179091556040517ff085c57737528946971c505b4c9d6f7ca7ab5925b0cee78d8cb75797f36f362890600090a250565b610b8b6114b4565b336000908152600e60205260409020546108dd90611964565b600654606090600090818167ffffffffffffffff811115610bc757610bc761290b565b604051908082528060200260200182016040528015610bf0578160200160208202803683370190505b5093505b81831015610c585760068381548110610c0f57610c0f6128c8565b6000918252602090912001546001600160a01b03169050610c3085826118b5565b848481518110610c4257610c426128c8565b6020908102919091010152600190920191610bf4565b505050919050565b610c68611369565b6001600160a01b038116610ca65760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b6044820152606401610744565b600580546001600160a01b0319166001600160a01b0383169081179091556040517fe68507d3387f586d218f2d30c6bd698977c73cfe98ae490919957b344476f19790600090a250565b610cf8611369565b60018054600160a81b900460ff16151514610d1257600080fd5b6001805460ff60a81b191690556040517f2b8c5008aae34863b256c67a6c2757d0ac8f800e6b4f3bb98bddf13e47b028ef90600090a1565b610d5261145b565b600154600160a81b900460ff1615610d6957600080fd5b6003546001600160a01b03163314610dad5760405162461bcd60e51b81526020600482015260076024820152662164697374726f60c81b6044820152606401610744565b61088682826000611608565b610dc16114b4565b61068b8133611b2e565b610dd361145b565b610ddb6114b4565b33610de68183611c57565b6001600160a01b038082166000908152600d60209081526040808320938616835292905220548015610e94576001600160a01b038083166000908152600d6020908152604080832093871680845293909152812055610e46908383611cf9565b826001600160a01b0316826001600160a01b03167fa0306f61d3fafe13787b78e276cb6b644382854a66cb46daae14227d3ec2679783604051610e8b91815260200190565b60405180910390a35b505061068b6001600055565b610ea861145b565b600154600160a81b900460ff16610ebe57600080fd5b336000908152600e6020526040902054811115610f1d5760405162461bcd60e51b815260206004820152600660248201527f6e6f2062616c00000000000000000000000000000000000000000000000000006044820152606401610744565b8060026000828254610f2f9190612921565b9091555050336000908152600e602052604081208054839290610f53908490612921565b90915550610f8d90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383611cf9565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a261068b6001600055565b610fd4611369565b6001600160a01b0381166110125760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b6044820152606401610744565b600480546001600160a01b0319166001600160a01b0383169081179091556040517fdfe91dcad2adcb1ecd18d2e830b469081211d6743c1e2dfa893836431fb7879490600090a250565b611064611369565b600154600160a81b900460ff161561107b57600080fd5b6001805460ff60a81b1916600160a81b1790556040517e2027e346bbcb4e71801ce26885a270290fb7d1d463cb49adf82dba74bd151d90600090a1565b6000806110c361145b565b6001546001600160a01b031633146110da57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000001561111157611108611d89565b91509150611119565b611108612085565b6111236001600055565b9091565b61112f61145b565b600154600160a81b900460ff1661114557600080fd5b336000908152600e602052604090205461118a5760405162461bcd60e51b815260040161074490602080825260049082015263062616c360e41b604082015260600190565b336000908152600e602052604081205460028054919283926111ad908490612921565b9091555050336000818152600e60205260408120556111f7907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169083611cf9565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a2506108dd6001600055565b61123f6114b4565b6040516370a0823160e01b81523360048201526108dd907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156112a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cb9190612934565b33611b2e565b60006108a38261233b565b6112e4611369565b6001600160a01b0381166113605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610744565b61068b81611adc565b6001546001600160a01b031633146108dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610744565b6113cb6123d5565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6114206114b4565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113fb3390565b6002600054036114ad5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610744565b6002600055565b600154600160a01b900460ff16156108dd5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610744565b6115178161242e565b600654600090815b81831015611602576006838154811061153a5761153a6128c8565b60009182526020808320909101546001600160a01b038781168452600d835260408085209190921680855292529091205490915080156115f6576001600160a01b038086166000908152600d60209081526040808320938616808452939091528120556115a8908683611cf9565b816001600160a01b0316856001600160a01b03167fa0306f61d3fafe13787b78e276cb6b644382854a66cb46daae14227d3ec26797836040516115ed91815260200190565b60405180910390a35b5060019092019161151f565b50505050565b611613600084611c57565b6001600160a01b0383166000908152600b602052604090205460ff1661167b5760405162461bcd60e51b815260206004820152600660248201527f21746f6b656e00000000000000000000000000000000000000000000000000006044820152606401610744565b6001600160a01b0383166000908152600760205260409020544281116116c6576116a862093a808461294d565b6001600160a01b03851660009081526008602052604090205561172b565b6001600160a01b03841660009081526008602052604081205490816116eb4285612921565b6116f591906128f4565b905062093a80611705828761296f565b61170f919061294d565b6001600160a01b03871660009081526008602052604090205550505b6001600160a01b038416600090815260096020526040902042908190556117569062093a809061296f565b6001600160a01b038516600090815260076020526040902055811561178a5761178a6001600160a01b03851633308661247d565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156117d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f59190612934565b905061180462093a808261294d565b6001600160a01b038616600090815260086020526040902054111561186b5760405162461bcd60e51b815260206004820152600560248201527f21726174650000000000000000000000000000000000000000000000000000006044820152606401610744565b846001600160a01b03167fac24935fd910bc682b5ccb1a07b718cadf8cf2f6d1404c4f3ddc3662dae40e29856040516118a691815260200190565b60405180910390a25050505050565b6001600160a01b038083166000908152600c602090815260408083209385168352929052908120548190670de0b6b3a7640000906118f28561233b565b6118fc9190612921565b6001600160a01b0386166000908152600e602052604090205461191f91906128f4565b611929919061294d565b6001600160a01b038086166000908152600d602090815260408083209388168352929052205490915061195c908261296f565b949350505050565b61196c61145b565b600154600160a81b900460ff161561198357600080fd5b600081116119bb5760405162461bcd60e51b81526020600482015260056024820152640616d6e74360dc1b6044820152606401610744565b336000908152600e6020526040902054611a005760405162461bcd60e51b815260040161074490602080825260049082015263062616c360e41b604082015260600190565b610f1d3361242e565b60068054611a1990600190612921565b81548110611a2957611a296128c8565b600091825260209091200154600680546001600160a01b039092169183908110611a5557611a556128c8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506006805480611a9457611a94612982565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03939093168152600b9092525060409020805460ff19169055565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611b3661145b565b600154600160a81b900460ff1615611b4d57600080fd5b60008211611b855760405162461bcd60e51b81526020600482015260056024820152640616d6e74360dc1b6044820152606401610744565b611b8e8161242e565b6001600160a01b0381166000908152600e602052604081208054849290611bb690849061296f565b925050819055508160026000828254611bcf919061296f565b90915550611c0a90506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682308561247d565b806001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c83604051611c4591815260200190565b60405180910390a26108906001600055565b6000611c628261233b565b6001600160a01b0383166000908152600a602052604090208190559050611c88826124b5565b6001600160a01b038084166000908152600960205260409020919091558316156109d157611cb683836118b5565b6001600160a01b039384166000818152600d602090815260408083209690971680835295815286822093909355908152600c825284812093815292905291902055565b6040516001600160a01b0383166024820152604481018290526109d190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526124d9565b600554604051637aaac16d60e11b815230600482015260009182916001600160a01b03909116908290829063f55582da90602401600060405180830381865afa158015611dda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e029190810190612998565b6005546040805163d294f09360e01b815281519394506001600160a01b039092169263d294f09392600480820193929182900301816000875af1158015611e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e719190612a56565b50506000826001600160a01b0316637e1c0c096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed79190612934565b905060005b81811015612077576040516327b2595f60e11b8152600481018290526000906001600160a01b03861690634f64b2be90602401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190612a7a565b90506000848381518110611f6657611f666128c8565b60200260200101519050600081118015611fe757506040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe39190612934565b8111155b1561206d57600f54612006906001600160a01b038481169116836125be565b600f5460405163b66503cf60e01b81526001600160a01b038481166004830152602482018490529091169063b66503cf90604401600060405180830381600087803b15801561205457600080fd5b505af1158015612068573d6000803e3d6000fd5b505050505b5050600101611edc565b506000958695509350505050565b6005546040805163d294f09360e01b8152815160009384937f0000000000000000000000000000000000000000000000000000000000000000936001600160a01b039092169263d294f093926004808201939291829003018188875af11580156120f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121179190612a56565b80935081945050506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121839190612a7a565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e99190612a7a565b9050841561227257600f5461220b906001600160a01b038481169116876125be565b600f5460405163b66503cf60e01b81526001600160a01b038481166004830152602482018890529091169063b66503cf90604401600060405180830381600087803b15801561225957600080fd5b505af115801561226d573d6000803e3d6000fd5b505050505b83156122f957600f54612292906001600160a01b038381169116866125be565b600f5460405163b66503cf60e01b81526001600160a01b038381166004830152602482018790529091169063b66503cf90604401600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505b604080518681526020810186905233917fbc567d6cbad26368064baa0ab5a757be46aae4d70f707f9203d9d9b6c8ccbfa3910160405180910390a25050509091565b6001600160a01b0381166000908152600a602052604081205460025482036123635792915050565b6002546001600160a01b038416600090815260086020908152604080832054600990925290912054612394866124b5565b61239e9190612921565b6123a891906128f4565b6123ba90670de0b6b3a76400006128f4565b6123c4919061294d565b6123ce908261296f565b9392505050565b600154600160a01b900460ff166108dd5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610744565b600654600090815b818310156116025760068381548110612451576124516128c8565b6000918252602090912001546001600160a01b031690506124728482611c57565b600190920191612436565b6040516001600160a01b03808516602483015283166044820152606481018290526116029085906323b872dd60e01b90608401611d25565b6001600160a01b0381166000908152600760205260408120546108a3904290612670565b600061252e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126869092919063ffffffff16565b8051909150156109d1578080602001905181019061254c9190612a97565b6109d15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610744565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561260f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126339190612934565b61263d919061296f565b6040516001600160a01b03851660248201526044810182905290915061160290859063095ea7b360e01b90606401611d25565b600081831061267f57816108a0565b5090919050565b606061195c848460008585600080866001600160a01b031685876040516126ad9190612ad8565b60006040518083038185875af1925050503d80600081146126ea576040519150601f19603f3d011682016040523d82523d6000602084013e6126ef565b606091505b50915091506127008783838761270b565b979650505050505050565b6060831561277a578251600003612773576001600160a01b0385163b6127735760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610744565b508161195c565b61195c838381511561278f5781518083602001fd5b8060405162461bcd60e51b81526004016107449190612af4565b801515811461068b57600080fd5b6000602082840312156127c957600080fd5b81356123ce816127a9565b6001600160a01b038116811461068b57600080fd5b6000602082840312156127fb57600080fd5b81356123ce816127d4565b6000806040838503121561281957600080fd5b8235612824816127d4565b946020939093013593505050565b6000806040838503121561284557600080fd5b8235612850816127d4565b91506020830135612860816127d4565b809150509250929050565b60006020828403121561287d57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156128bc578351835292840192918401916001016128a0565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108a3576108a36128de565b634e487b7160e01b600052604160045260246000fd5b818103818111156108a3576108a36128de565b60006020828403121561294657600080fd5b5051919050565b60008261296a57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108a3576108a36128de565b634e487b7160e01b600052603160045260246000fd5b600060208083850312156129ab57600080fd5b825167ffffffffffffffff808211156129c357600080fd5b818501915085601f8301126129d757600080fd5b8151818111156129e9576129e961290b565b8060051b604051601f19603f83011681018181108582111715612a0e57612a0e61290b565b604052918252848201925083810185019188831115612a2c57600080fd5b938501935b82851015612a4a57845184529385019392850192612a31565b98975050505050505050565b60008060408385031215612a6957600080fd5b505080516020909101519092909150565b600060208284031215612a8c57600080fd5b81516123ce816127d4565b600060208284031215612aa957600080fd5b81516123ce816127a9565b60005b83811015612acf578181015183820152602001612ab7565b50506000910152565b60008251612aea818460208701612ab4565b9190910192915050565b6020815260008251806020840152612b13816040850160208701612ab4565b601f01601f1916919091016040019291505056fea2646970667358221220a2df54248de5d57674dbabfeda40dc1b536ec15844be7ce48a870393d3fd218664736f6c6343000816003360a06040523480156200001157600080fd5b506040516200112438038062001124833981016040819052620000349162000123565b60016000556200004433620000b4565b600280546001600160a01b038087166001600160a01b03199283161790925560038054868416908316179055600480548484169216919091179055858116608052821615620000a957600580546001600160a01b0319166001600160a01b0384161790555b505050505062000193565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200011e57600080fd5b919050565b600080600080600060a086880312156200013c57600080fd5b620001478662000106565b9450620001576020870162000106565b9350620001676040870162000106565b9250620001776060870162000106565b9150620001876080870162000106565b90509295509295909350565b608051610f60620001c46000396000818161017a0152818161054e0152818161089001526109160152610f606000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063b6f7097f11610066578063b6f7097f146101d3578063d294f093146101e6578063f2fde38b14610203578063f9d5111c1461021657600080fd5b80638da5cb5b1461019c578063a591f97f146101ad578063b66503cf146101c057600080fd5b8063779fa0c4116100c8578063779fa0c41461013c5780637c91e4eb1461014f5780637f6990151461016257806382bfefc81461017557600080fd5b8063478222c2146100ef5780636bbcf6d81461011f578063715018a614610134575b600080fd5b600354610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013261012d366004610dc4565b610229565b005b61013261033f565b61013261014a366004610dc4565b610353565b600254610102906001600160a01b031681565b610132610170366004610dc4565b6103bb565b6101027f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b0316610102565b6101326101bb366004610dc4565b610423565b6101326101ce366004610de8565b6104b7565b600554610102906001600160a01b031681565b6101ee6105c9565b60408051928352602083019190915201610116565b610132610211366004610dc4565b610605565b600454610102906001600160a01b031681565b610231610695565b6001600160a01b03811661028c5760405162461bcd60e51b815260206004820152600960248201527f7a65726f2061646472000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6005546001600160a01b03908116908216036102ea5760405162461bcd60e51b815260206004820152600960248201527f73616d65206164647200000000000000000000000000000000000000000000006044820152606401610283565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f71119a4a2850109bdeaff1aedbd330e4bc80607f423b1562fddbdc7ff4628b64906020015b60405180910390a150565b610347610695565b61035160006106ef565b565b61035b610695565b6001600160a01b0381166103995760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b6044820152606401610283565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6103c3610695565b6001600160a01b0381166104015760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b6044820152606401610283565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61042b610695565b6001600160a01b0381166104695760405162461bcd60e51b8152602060048201526005602482015264041646472360dc1b6044820152606401610283565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527fe68507d3387f586d218f2d30c6bd698977c73cfe98ae490919957b344476f19790602001610334565b6104bf610741565b6002546001600160a01b031633146105195760405162461bcd60e51b815260206004820152600c60248201527f216469737472696275746f7200000000000000000000000000000000000000006044820152606401610283565b600454610533906001600160a01b0384811691168361079a565b60048054604051630cfecd0760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693820193909352602481018490529116906367f6683890604401600060405180830381600087803b1580156105a357600080fd5b505af11580156105b7573d6000803e3d6000fd5b505050506105c56001600055565b5050565b6000806105d4610741565b6001546001600160a01b031633146105eb57600080fd5b6105f3610889565b915091506106016001600055565b9091565b61060d610695565b6001600160a01b0381166106895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610283565b610692816106ef565b50565b6001546001600160a01b031633146103515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610283565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600054036107935760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610283565b6002600055565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190610e14565b6108199190610e2d565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b179052909150610883908590610b1e565b50505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190610e54565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190610e54565b6003546040805163d294f09360e01b815281519394506001600160a01b039092169263d294f09392600480820193929182900301816000875af11580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a059190610e71565b90945092508315610a9157600554610a2a906001600160a01b0384811691168661079a565b60055460405163b66503cf60e01b81526001600160a01b038481166004830152602482018790529091169063b66503cf90604401600060405180830381600087803b158015610a7857600080fd5b505af1158015610a8c573d6000803e3d6000fd5b505050505b8215610b1857600554610ab1906001600160a01b0383811691168561079a565b60055460405163b66503cf60e01b81526001600160a01b038381166004830152602482018690529091169063b66503cf90604401600060405180830381600087803b158015610aff57600080fd5b505af1158015610b13573d6000803e3d6000fd5b505050505b50509091565b6000610b73826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610c089092919063ffffffff16565b805190915015610c035780806020019051810190610b919190610e95565b610c035760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610283565b505050565b6060610c178484600085610c1f565b949350505050565b606082471015610c975760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610283565b600080866001600160a01b03168587604051610cb39190610edb565b60006040518083038185875af1925050503d8060008114610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b5091509150610d0687838387610d11565b979650505050505050565b60608315610d80578251600003610d79576001600160a01b0385163b610d795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610283565b5081610c17565b610c178383815115610d955781518083602001fd5b8060405162461bcd60e51b81526004016102839190610ef7565b6001600160a01b038116811461069257600080fd5b600060208284031215610dd657600080fd5b8135610de181610daf565b9392505050565b60008060408385031215610dfb57600080fd5b8235610e0681610daf565b946020939093013593505050565b600060208284031215610e2657600080fd5b5051919050565b80820180821115610e4e57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610e6657600080fd5b8151610de181610daf565b60008060408385031215610e8457600080fd5b505080516020909101519092909150565b600060208284031215610ea757600080fd5b81518015158114610de157600080fd5b60005b83811015610ed2578181015183820152602001610eba565b50506000910152565b60008251610eed818460208701610eb7565b9190910192915050565b6020815260008251806020840152610f16816040850160208701610eb7565b601f01601f1916919091016040019291505056fea2646970667358221220efa485db65c0c8be863ddf731614c2cc7b3aa81a13e6ff96d2ad1ce8eb0c9a1764736f6c6343000816003324768a6ab335e2a1830f89d00694f4c8c79419c278b5acd7dc0b93166bf651b1a2646970667358221220f916faaaa43b94836e786490254dfcb540fd5fc392dba932c3022f890013564c64736f6c6343000816003324768a6ab335e2a1830f89d00694f4c8c79419c278b5acd7dc0b93166bf651b12ad5dda4abad2eba9015076cc6a1db468a91b444067d58b590c8c73985521a04000000000000000000000000247009c6f39bc08d5d39ac38c9d5a0d316947d9c