0 txs
1 call
constructor
constructor(address _initialOwner, address _cowSwapRelayer)
functions
cowSwapRelayer
viewfunction cowSwapRelayer() view returns (address)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
getBuyAmount
viewfunction getBuyAmount(address sellToken) view returns (uint256 unroundedBuyAmount, uint256 roundedBuyAmount)
getSellAmount
viewfunction getSellAmount(address sellToken) view returns (uint256)
getTradeableOrderWithSignature
viewfunction getTradeableOrderWithSignature(address orderOwner, tuple params, bytes, bytes32[]) view returns (tuple order, bytes signature)
isPaused
viewfunction isPaused() view returns (bool)
isValidSignature
viewfunction isValidSignature(bytes32, bytes signature) view returns (bytes4)
orderConfig
viewfunction orderConfig(address sellToken) view returns (tuple config)
owner
viewfunction owner() view returns (address)
supportsInterface
purefunction supportsInterface(bytes4 interfaceId) pure returns (bool)
acceptOwner
nonpayablefunction acceptOwner()
createConditionalOrder
nonpayablefunction createConditionalOrder(address sellToken)
proposeNewOwner
nonpayablefunction proposeNewOwner(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
removeOrderConfig
nonpayablefunction removeOrderConfig(address sellToken)
revokeOwnership
nonpayablefunction revokeOwnership()
setCowApproval
nonpayablefunction setCowApproval(address sellToken, uint256 amount)
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setOrderConfig
nonpayablefunction setOrderConfig(address sellToken, tuple config)
setPaused
nonpayablefunction setPaused(bool paused)
updateAmountsAndAdjustmentBps
nonpayablefunction updateAmountsAndAdjustmentBps(address sellToken, uint96 maxSellAmount, uint96 minBuyAmount, int16 limitPriceAdjustmentBps)
events
ConditionalOrderCreated
event ConditionalOrderCreated(address indexed owner, (address handler, bytes32 salt, bytes staticInput) params)
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
NewOwnerAccepted
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner)
NewOwnerProposed
event NewOwnerProposed(address indexed oldOwner, address indexed oldProposedOwner, address indexed newProposedOwner)
OrderConfigRemoved
event OrderConfigRemoved(address indexed sellToken)
OrderConfigSet
event OrderConfigSet(address indexed sellToken)
PausedSet
event PausedSet(bool paused)
TokenRecovered
event TokenRecovered(address indexed to, address indexed token, uint256 amount)
errors
ExpectedNonZero
error ExpectedNonZero()
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress(address addr)
InvalidParam
error InvalidParam()
InvalidSellToken
error InvalidSellToken(address sellToken)
IsPaused
error IsPaused()
OrderDoesNotMatchTradeableOrder
error OrderDoesNotMatchTradeableOrder()
OrderNotValid
error OrderNotValid(string reason)
PollTryAtBlock
error PollTryAtBlock(uint256 blockNumber, string message)
PollTryAtEpoch
error PollTryAtEpoch(uint256 timestamp, string message)
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
Slippage
error Slippage(uint256 minAmountExpected, uint256 actualAmount)
creation bytecode
0x60a06040523480156200001157600080fd5b50604051620039c7380380620039c78339810160408190526200003491620000ed565b81620000408162000054565b506001600160a01b03166080525062000125565b6000546001600160a01b0316156200007f57604051633006171960e21b815260040160405180910390fd5b6001600160a01b038116620000ae57604051634726455360e11b81526000600482015260240160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620000e857600080fd5b919050565b600080604083850312156200010157600080fd5b6200010c83620000d0565b91506200011c60208401620000d0565b90509250929050565b60805161387f62000148600039600081816101a90152611894015261387f6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80636069b55a116100d8578063a7229fd91161008c578063bfccf0ec11610066578063bfccf0ec146104e9578063daeccc79146104fc578063ebbc49651461052a57600080fd5b8063a7229fd91461049e578063b187bd26146104b1578063b1f8100d146104d657600080fd5b806370023f6a116100bd57806370023f6a146102fa578063757781081461030d5780638da5cb5b1461048b57600080fd5b80636069b55a146102d4578063617e7c29146102e757600080fd5b806326e0a1961161012f5780633daaf325116101145780633daaf32514610286578063493a2397146102995780635f4dfa03146102ac57600080fd5b806326e0a1961461025d5780632b9689581461027e57600080fd5b806310e65c641161016057806310e65c64146101e35780631626ba7e1461020457806316c38b3c1461024857600080fd5b806301ffc9a71461017c5780630cbfe7dc146101a4575b600080fd5b61018f61018a366004612936565b610532565b60405190151581526020015b60405180910390f35b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019b565b6101f66101f1366004612969565b610663565b60405190815260200161019b565b610217610212366004612a10565b610727565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161019b565b61025b610256366004612abd565b610918565b005b61027061026b366004612b26565b610a00565b60405161019b929190612d0f565b61025b610e8d565b61025b610294366004612969565b610fa8565b61025b6102a7366004612d31565b6110ee565b6102bf6102ba366004612969565b6115cd565b6040805192835260208301919091520161019b565b61025b6102e2366004612d9d565b611605565b61025b6102f5366004612df9565b611821565b61025b610308366004612969565b6118bd565b61047e61031b366004612969565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506001600160a01b0390811660009081526003602081815260409283902083516101808101855281546bffffffffffffffffffffffff80821683526c010000000000000000000000009182900488169483019490945260018084015480861697840197909752950486166060820152600282015495861660808201527401000000000000000000000000000000000000000090950490911660a08501529081015460ff808216151560c0860152610100808304909116151560e086015262010000820490930b92840192909252640100000000820461ffff16610120840152660100000000000090910462ffffff166101408301526004015461016082015290565b60405161019b9190612e25565b6000546101cb906001600160a01b031681565b61025b6104ac366004612f3d565b6119a6565b60025461018f9074010000000000000000000000000000000000000000900460ff1681565b61025b6104e4366004612969565b611a70565b61025b6104f7366004612f7e565b611b98565b61018f61050a366004613006565b600160209081526000928352604080842090915290825290205460ff1681565b61025b611d76565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f94a2d0020000000000000000000000000000000000000000000000000000000014806105c557507fffffffff0000000000000000000000000000000000000000000000000000000082167f26e0a19600000000000000000000000000000000000000000000000000000000145b8061061157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061065d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e00000000000000000000000000000000000000000000000000000000145b92915050565b6000818161067082611e2a565b805460038201546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292935061071f926bffffffffffffffffffffffff9092169161010090910460ff16906001600160a01b038616906370a0823190602401602060405180830381865afa1580156106f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071a919061303b565b611e9f565b949350505050565b60025460009074010000000000000000000000000000000000000000900460ff161561077f576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082806020019051810190610795919061307e565b905060006107a68260000151611e2a565b805460608401519192506bffffffffffffffffffffffff169060009082116107ce57816107d4565b83606001515b905060006107e785600001518386611ec5565b6003860154909250640100000000900461ffff16905060008161080e57866080015161081f565b608087015161081f908360006120a2565b90508083111561086a576040517f2746152a00000000000000000000000000000000000000000000000000000000815260048101829052602481018490526044015b60405180910390fd5b6000610880886000015186898b608001516120ca565b905089805190602001208160405160200161089b919061313c565b60405160208183030381529060405280519060200120146108e8576040517f98c850a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507f1626ba7e000000000000000000000000000000000000000000000000000000009a9950505050505050505050565b610946336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b61097c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805482151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f40db37ff5c0bdc2c427fbb2078c8f24afea940abac0e3c23bb4ea3bf2da2b212906109f590831515815260200190565b60405180910390a150565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260025460609074010000000000000000000000000000000000000000900460ff1615610afc57610a9361012c4261317a565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600660448201527f50617573656400000000000000000000000000000000000000000000000000006064820152608401610861565b6001600160a01b0388163014610b6e576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6f72646572206f776e6572206d7573742062652073656c6600000000000000006044820152606401610861565b6000610b7d6020890189612969565b6001600160a01b031614610bed576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f68616e646c6572206d75737420626520756e73657400000000000000000000006044820152606401610861565b602087013515610c59576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f73616c74206d75737420626520756e73657400000000000000000000000000006044820152606401610861565b6000610c68604089018961318d565b810190610c759190612969565b6001600160a01b0380821660009081526003602052604090208054929350916c01000000000000000000000000900416610d0b576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73656c6c546f6b656e206e6f7420636f6e6669677572656400000000000000006044820152606401610861565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f919061303b565b905080600003610e0e57610da561012c4261317a565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600b60448201527f5a65726f42616c616e63650000000000000000000000000000000000000000006064820152608401610861565b81546003830154600091610e3b916bffffffffffffffffffffffff90911690610100900460ff1684611e9f565b90506000610e4a858386611ec5565b915050610e59858386846120ca565b965086604051602001610e6c919061313c565b60405160208183030381529060405295505050505050965096945050505050565b610ebb336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b610ef1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b031661dead14610f46576002546040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610861565b600080546040516001600160a01b03909116907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610fd6336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b61100c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025474010000000000000000000000000000000000000000900460ff1615611061576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61106a81611e2a565b50604080516001600160a01b0383166020808301919091528251808303909101815260a0820183526000828401818152606084018290526080909301829052925130939283929185917f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361916110df91906131f2565b60405180910390a25050505050565b61111c336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b611152576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661119d576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610861565b60006111af6040830160208401612969565b6001600160a01b03160361120b576111cd6040820160208301612969565b6040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610861565b61121b6040820160208301612969565b6001600160a01b0316826001600160a01b031603611243576111cd6040820160208301612969565b611250602082018261322a565b6bffffffffffffffffffffffff16600003611297576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112a7606082016040830161322a565b6bffffffffffffffffffffffff166000036112ee576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113006080830160608401612969565b6001600160a01b0316146113ff5761131e6080820160608301612969565b6001600160a01b031663950212808361133d6040850160208601612969565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c49190613247565b6113fa576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61144b565b61141161012082016101008301613264565b60010b1561144b576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061145d60a0830160808401612969565b6001600160a01b03160361147b576111cd60a0820160808301612969565b61271061149061014083016101208401613291565b61ffff1611156114cc576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114de610160820161014083016132bf565b62ffffff1660000361151c576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a80611532610160830161014084016132bf565b62ffffff16111561156f576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526003602052604090208190611593828261332a565b50506040516001600160a01b038316907f620697ccb4f53d5acb95d022fff93232f3be2e80bcdc342dd974fc516c4c271c90600090a25050565b60008082816115db82611e2a565b80549091506115fa9083906bffffffffffffffffffffffff1683611ec5565b935093505050915091565b611633336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b611669576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826bffffffffffffffffffffffff166000036116b1576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816bffffffffffffffffffffffff166000036116f9576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061170485611e2a565b60018101549091506c0100000000000000000000000090046001600160a01b0316611766578160010b600014611766576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546bffffffffffffffffffffffff8086167fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009283161783556001830180549186169190921617905560038101805461ffff841662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff9091161790556040516001600160a01b038616907f620697ccb4f53d5acb95d022fff93232f3be2e80bcdc342dd974fc516c4c271c90600090a25050505050565b61184f336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b611885576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b96001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083612287565b5050565b6118eb336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b611921576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166000818152600360208190526040808320838155600181018490556002810184905591820180547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001690556004909101829055517f77112f16adb9ba38b96415abef057fc90ed118ff5cd9ccd3640ebd3d36db56309190a250565b6119d4336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b611a0a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611a4f91815260200190565b60405180910390a3611a6b6001600160a01b03841683836123c3565b505050565b611a9e336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b611ad4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611b1f576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610861565b600254600080546040516001600160a01b03808616948116939216917f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d891a4600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611bc6336000357fffffffff000000000000000000000000000000000000000000000000000000001661221f565b611bfc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316611c47576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610861565b604080518082019091526000808252602082015260005b82811015611d6f57838382818110611c7857611c786135e3565b905060400201803603810190611c8e9190613612565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b03871660009081526001808452604080832087517fffffffff0000000000000000000000000000000000000000000000000000000016845290945292902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905501611c5e565b5050505050565b6002546001600160a01b03163314611dba576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460405133926001600160a01b03909216917f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55491a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600280549091169055565b6001600160a01b038082166000908152600360205260409020805490916c0100000000000000000000000090910416611e9a576040517fe39ca5270000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610861565b919050565b600082611eac5783611ebb565b838210611eb95783611ebb565b815b90505b9392505050565b600181015460009081906c0100000000000000000000000090046001600160a01b03168015611feb5760018401546040517f7349615f0000000000000000000000000000000000000000000000000000000081526c010000000000000000000000009091046001600160a01b031690637349615f90611f4f908990899060009081906004016136d5565b602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f90919061303b565b600385015490935062010000900460010b6000811315611fc157611fba8461ffff831660006120a2565b9350611fe9565b60008160010b1215611fe957611fe6611fd982613713565b859061ffff16600061240c565b93505b505b60018401546bffffffffffffffffffffffff1683811161200b578361200d565b805b60028601549094507401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1680612046578461205b565b806120518187613780565b61205b9190613794565b935083600003612097576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050935093915050565b6000806120b18461271061317a565b90506120c185826127108661242c565b95945050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260408051610180810182526001600160a01b03878116825285546c01000000000000000000000000900481166020830152600286015416918101919091526060810185905260808101839052600384015460a0820190612199906601000000000000900462ffffff166124dd565b63ffffffff16815260048501546020820152600060408201527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756060820152600385015460ff16151560808201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc960a0820181905260c0909101529050949350505050565b600080546001600160a01b0384811691161480611ebe57506001600160a01b03831660009081526001602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff169392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261230684826124ff565b6123bd576040516001600160a01b0384166024820152600060448201526123b39085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526125a2565b6123bd84826125a2565b50505050565b6040516001600160a01b038316602482015260448101829052611a6b9084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161234f565b60006127108381039084106124225760006120c1565b6120c18582612710865b60006124398585856126a4565b9050600182600181111561244f5761244f61366f565b0361071f57828061246257612462613751565b8486091561071f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561249a5760010161071f565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401610861565b600081806124eb81426137ab565b6124f591906137ce565b61065d91906137f6565b6000806000846001600160a01b03168460405161251c919061381a565b6000604051808303816000865af19150503d8060008114612559576040519150601f19603f3d011682016040523d82523d6000602084013e61255e565b606091505b50915091508180156125885750805115806125885750808060200190518101906125889190613247565b80156120c15750505050506001600160a01b03163b151590565b60006125f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127af9092919063ffffffff16565b90508051600014806126185750808060200190518101906126189190613247565b611a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610861565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036126fc578382816126f2576126f2613751565b0492505050611ebe565b838110612746576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610861565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6060611ebb848460008585600080866001600160a01b031685876040516127d6919061381a565b60006040518083038185875af1925050503d8060008114612813576040519150601f19603f3d011682016040523d82523d6000602084013e612818565b606091505b509150915061282987838387612834565b979650505050505050565b606083156128bd5782516000036128b6576001600160a01b0385163b6128b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610861565b508161071f565b61071f83838151156128d25781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108619190613836565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e9a57600080fd5b60006020828403121561294857600080fd5b611ebe82612906565b6001600160a01b038116811461296657600080fd5b50565b60006020828403121561297b57600080fd5b8135611ebe81612951565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156129d9576129d9612986565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612a0857612a08612986565b604052919050565b60008060408385031215612a2357600080fd5b8235915060208084013567ffffffffffffffff80821115612a4357600080fd5b818601915086601f830112612a5757600080fd5b813581811115612a6957612a69612986565b612a7b84601f19601f840116016129df565b91508082528784828501011115612a9157600080fd5b80848401858401376000848284010152508093505050509250929050565b801515811461296657600080fd5b600060208284031215612acf57600080fd5b8135611ebe81612aaf565b60008083601f840112612aec57600080fd5b50813567ffffffffffffffff811115612b0457600080fd5b6020830191508360208260051b8501011115612b1f57600080fd5b9250929050565b60008060008060008060808789031215612b3f57600080fd5b8635612b4a81612951565b9550602087013567ffffffffffffffff80821115612b6757600080fd5b908801906060828b031215612b7b57600080fd5b90955060408801359080821115612b9157600080fd5b818901915089601f830112612ba557600080fd5b813581811115612bb457600080fd5b8a6020828501011115612bc657600080fd5b602083019650809550506060890135915080821115612be457600080fd5b50612bf189828a01612ada565b979a9699509497509295939492505050565b80516001600160a01b031682526020810151612c2a60208401826001600160a01b03169052565b506040810151612c4560408401826001600160a01b03169052565b50606081015160608301526080810151608083015260a0810151612c7160a084018263ffffffff169052565b5060c081015160c083015260e081015160e083015261010080820151818401525061012080820151612ca68285018215159052565b5050610140818101519083015261016090810151910152565b60005b83811015612cda578181015183820152602001612cc2565b50506000910152565b60008151808452612cfb816020860160208601612cbf565b601f01601f19169290920160200192915050565b60006101a0612d1e8386612c03565b806101808401526120c181840185612ce3565b6000808284036101a0811215612d4657600080fd5b8335612d5181612951565b9250610180601f1982011215612d6657600080fd5b506020830190509250929050565b6bffffffffffffffffffffffff8116811461296657600080fd5b8060010b811461296657600080fd5b60008060008060808587031215612db357600080fd5b8435612dbe81612951565b93506020850135612dce81612d74565b92506040850135612dde81612d74565b91506060850135612dee81612d8e565b939692955090935050565b60008060408385031215612e0c57600080fd5b8235612e1781612951565b946020939093013593505050565b81516bffffffffffffffffffffffff16815261018081016020830151612e5660208401826001600160a01b03169052565b506040830151612e7660408401826bffffffffffffffffffffffff169052565b506060830151612e9160608401826001600160a01b03169052565b506080830151612eac60808401826001600160a01b03169052565b5060a0830151612ecc60a08401826bffffffffffffffffffffffff169052565b5060c0830151612ee060c084018215159052565b5060e0830151612ef460e084018215159052565b5061010080840151612f0a8285018260010b9052565b50506101208381015161ffff16908301526101408084015162ffffff169083015261016092830151929091019190915290565b600080600060608486031215612f5257600080fd5b8335612f5d81612951565b92506020840135612f6d81612951565b929592945050506040919091013590565b600080600060408486031215612f9357600080fd5b8335612f9e81612951565b9250602084013567ffffffffffffffff80821115612fbb57600080fd5b818601915086601f830112612fcf57600080fd5b813581811115612fde57600080fd5b8760208260061b8501011115612ff357600080fd5b6020830194508093505050509250925092565b6000806040838503121561301957600080fd5b823561302481612951565b915061303260208401612906565b90509250929050565b60006020828403121561304d57600080fd5b5051919050565b8051611e9a81612951565b805163ffffffff81168114611e9a57600080fd5b8051611e9a81612aaf565b6000610180828403121561309157600080fd5b6130996129b5565b6130a283613054565b81526130b060208401613054565b60208201526130c160408401613054565b604082015260608301516060820152608083015160808201526130e660a0840161305f565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120613119818501613073565b908201526101408381015190820152610160928301519281019290925250919050565b610180810161065d8284612c03565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561065d5761065d61314b565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131c257600080fd5b83018035915067ffffffffffffffff8211156131dd57600080fd5b602001915036819003821315612b1f57600080fd5b602081526001600160a01b038251166020820152602082015160408201526000604083015160608084015261071f6080840182612ce3565b60006020828403121561323c57600080fd5b8135611ebe81612d74565b60006020828403121561325957600080fd5b8151611ebe81612aaf565b60006020828403121561327657600080fd5b8135611ebe81612d8e565b61ffff8116811461296657600080fd5b6000602082840312156132a357600080fd5b8135611ebe81613281565b62ffffff8116811461296657600080fd5b6000602082840312156132d157600080fd5b8135611ebe816132ae565b6000813561065d81612d74565b6000813561065d81612951565b6000813561065d81612aaf565b6000813561065d81612d8e565b6000813561065d81613281565b6000813561065d816132ae565b613370613336836132dc565b82547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116178255565b6133bc61337f602084016132e9565b82546bffffffffffffffffffffffff1660609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016178255565b600181016133cf613336604085016132dc565b6133de61337f606085016132e9565b50600281016134276133f2608085016132e9565b82547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391909116178255565b61346e61343660a085016132dc565b82546001600160a01b031660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016178255565b50600381016134b461348260c085016132f6565b825490151560ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091909116178255565b6134fa6134c360e085016132f6565b8280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1691151560081b61ff0016919091179055565b61354261350a6101008501613303565b8280548260101b63ffff0000167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff8216178255505050565b6135896135526101208501613310565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1660209190911b65ffff0000000016178255565b6135d3613599610140850161331d565b82547fffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff1660309190911b68ffffff00000000000016178255565b5061016082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561362457600080fd5b6040516040810181811067ffffffffffffffff8211171561364757613647612986565b60405261365383612906565b8152602083013561366381612aaf565b60208201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110612966577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6001600160a01b038516815260208101849052608081016136f58461369e565b8360408301526137048361369e565b82606083015295945050505050565b60008160010b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800081036137485761374861314b565b60000392915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261378f5761378f613751565b500490565b808202811582820484141761065d5761065d61314b565b600063ffffffff808416806137c2576137c2613751565b92169190910492915050565b63ffffffff8181168382160280821691908281146137ee576137ee61314b565b505092915050565b63ffffffff8181168382160190808211156138135761381361314b565b5092915050565b6000825161382c818460208701612cbf565b9190910192915050565b602081526000611ebe6020830184612ce356fea264697066735822122085bd15ddb7b9f74c8162be221fcfe06c531dc5167d4bc57c5ad2fba414691dc164736f6c63430008160033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d80000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110