0 txs
0 calls
constructor
constructor(address _owner, address _vetoAdmin, uint256 _delay, bool _allowPermissionlessExecution)
functions
batchedTxInfo
viewfunction batchedTxInfo(bytes32) view returns (uint64 batchBlock, uint16 index)
batchInfo
viewfunction batchInfo(uint256) view returns (address initiator, uint16 length, uint80 eta)
contractType
viewfunction contractType() view returns (bytes32)
executionAdmins
viewfunction executionAdmins() view returns (address[])
isPermissionlessExecutionAllowed
viewfunction isPermissionlessExecutionAllowed() view returns (bool)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
queueAdmins
viewfunction queueAdmins() view returns (address[])
renounceOwnership
purefunction renounceOwnership() pure
timeLock
viewfunction timeLock() view returns (address)
version
viewfunction version() view returns (uint256)
vetoAdmin
viewfunction vetoAdmin() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addExecutionAdmin
nonpayablefunction addExecutionAdmin(address admin)
addQueueAdmin
nonpayablefunction addQueueAdmin(address admin)
allowPermissionlessExecution
nonpayablefunction allowPermissionlessExecution()
cancelBatch
nonpayablefunction cancelBatch(tuple[] txs)
cancelTransaction
nonpayablefunction cancelTransaction(address target, uint256 value, string signature, bytes data, uint256 eta)
executeBatch
payablefunction executeBatch(tuple[] txs) payable
executeTransaction
payablefunction executeTransaction(address target, uint256 value, string signature, bytes data, uint256 eta) payable returns (bytes)
forbidPermissionlessExecution
nonpayablefunction forbidPermissionlessExecution()
queueTransaction
nonpayablefunction queueTransaction(address target, uint256 value, string signature, bytes data, uint256 eta) returns (bytes32 txHash)
removeExecutionAdmin
nonpayablefunction removeExecutionAdmin(address admin)
removeQueueAdmin
nonpayablefunction removeQueueAdmin(address admin)
startBatch
nonpayablefunction startBatch(uint80 eta)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateVetoAdmin
nonpayablefunction updateVetoAdmin(address admin)
events
AddExecutionAdmin
event AddExecutionAdmin(address indexed admin)
AddQueueAdmin
event AddQueueAdmin(address indexed admin)
AllowPermissionlessExecution
event AllowPermissionlessExecution()
CancelBatch
event CancelBatch(address indexed caller, uint256 indexed batchBlock)
ExecuteBatch
event ExecuteBatch(address indexed caller, uint256 indexed batchBlock)
ForbidPermissionlessExecution
event ForbidPermissionlessExecution()
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
QueueBatch
event QueueBatch(address indexed caller, uint256 indexed batchBlock)
RemoveExecutionAdmin
event RemoveExecutionAdmin(address indexed admin)
RemoveQueueAdmin
event RemoveQueueAdmin(address indexed admin)
UpdateVetoAdmin
event UpdateVetoAdmin(address indexed admin)
errors
AdminCantBeZeroAddressException
error AdminCantBeZeroAddressException()
BatchAlreadyStartedException
error BatchAlreadyStartedException()
CallerNotBatchInitiatorException
error CallerNotBatchInitiatorException()
CallerNotExecutionAdminException
error CallerNotExecutionAdminException()
CallerNotQueueAdminException
error CallerNotQueueAdminException()
CallerNotTimelockException
error CallerNotTimelockException()
CallerNotVetoAdminException
error CallerNotVetoAdminException()
CannotRenounceOwnershipException
error CannotRenounceOwnershipException()
CantPerformActionOutsideBatchException
error CantPerformActionOutsideBatchException()
ETAMistmatchException
error ETAMistmatchException()
IncorrectBatchException
error IncorrectBatchException()
TransactionAlreadyQueuedException
error TransactionAlreadyQueuedException()
UnexpectedTransactionException
error UnexpectedTransactionException(bytes32 txHash)
creation bytecode
0x60a060405234801562000010575f80fd5b5060405162002cb738038062002cb7833981016040819052620000339162000239565b6200003e336200011b565b30826040516200004e906200020f565b6001600160a01b0390921682526020820152604001604051809103905ff0801580156200007d573d5f803e3d5ffd5b506001600160a01b031660805262000095846200011b565b620000a08362000139565b8015620000e8576006805460ff60a01b1916600160a01b1790556040517fb685eb85668546ec83e13ea28713ea54fa4b650eec17dec38093c175d0751759905f90a162000111565b6040517fc0223cf20961cffb2cbec6f3436c3b37285eb1b51b99fee6328d48e7e4a52d4f905f90a15b505050506200028f565b600180546001600160a01b03191690556200013681620001c0565b50565b6001600160a01b0381166200016157604051633d1a3d3f60e21b815260040160405180910390fd5b6006546001600160a01b038281169116146200013657600680546001600160a01b0319166001600160a01b0383169081179091556040517fbf12139ff7104dab2c86fb3ded8e6381b5c4d828b15c3d572688966b267c5b21905f90a250565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b61806200215683390190565b80516001600160a01b038116811462000234575f80fd5b919050565b5f805f80608085870312156200024d575f80fd5b62000258856200021d565b935062000268602086016200021d565b9250604085015191506060850151801515811462000284575f80fd5b939692955090935050565b608051611e61620002f55f395f81816104f9015281816106c50152818161093c01528181610b4c01528181610c0201528181610c9101528181610d7901528181610e2f01528181610ec2015281816110cb0152818161165b01526117180152611e615ff3fe6080604052600436106101a4575f3560e01c806388553c5f116100e7578063d085835a11610087578063dc517f3b11610062578063dc517f3b14610543578063e30c397814610562578063f18e19931461057f578063f2fde38b1461059e575f80fd5b8063d085835a146104e8578063d1f1a3301461051b578063d6504cfe1461052f575f80fd5b8063b2c6ee9e116100c2578063b2c6ee9e1461046f578063cb2ef6f714610482578063cd823ddf146104b5578063cfe19d55146104d4575f80fd5b806388553c5f146104155780638da5cb5b14610434578063b142344c14610450575f80fd5b8063591fcdfe116101525780637c37bb501161012d5780637c37bb50146103175780637ebd8f771461034e578063815bda471461036d57806385702a4f146103f6575f80fd5b8063591fcdfe146102ce578063715018a6146102ef57806379ba509714610303575f80fd5b80633a66f901116101825780633a66f9011461025c57806343143d911461028957806354fd4d50146102b9575f80fd5b80630825f38f146101a8578063155de651146101d15780631b2886d9146101f2575b5f80fd5b6101bb6101b6366004611a17565b6105bd565b6040516101c89190611ac5565b60405180910390f35b3480156101dc575f80fd5b506101e5610632565b6040516101c89190611af7565b3480156101fd575f80fd5b5061023961020c366004611b43565b60086020525f908152604090205467ffffffffffffffff81169068010000000000000000900461ffff1682565b6040805167ffffffffffffffff909316835261ffff9091166020830152016101c8565b348015610267575f80fd5b5061027b610276366004611a17565b610643565b6040519081526020016101c8565b348015610294575f80fd5b506006546102a990600160a01b900460ff1681565b60405190151581526020016101c8565b3480156102c4575f80fd5b5061027b61013681565b3480156102d9575f80fd5b506102ed6102e8366004611a17565b6109ca565b005b3480156102fa575f80fd5b506102ed610a10565b34801561030e575f80fd5b506102ed610a42565b348015610322575f80fd5b50600654610336906001600160a01b031681565b6040516001600160a01b0390911681526020016101c8565b348015610359575f80fd5b506102ed610368366004611b5a565b610ad5565b348015610378575f80fd5b506103c2610387366004611b43565b60076020525f90815260409020546001600160a01b03811690600160a01b810461ffff1690600160b01b900469ffffffffffffffffffff1683565b604080516001600160a01b03909416845261ffff909216602084015269ffffffffffffffffffff16908201526060016101c8565b348015610401575f80fd5b506102ed610410366004611bc9565b610b41565b348015610420575f80fd5b506102ed61042f366004611bc9565b610bf7565b34801561043f575f80fd5b505f546001600160a01b0316610336565b34801561045b575f80fd5b506102ed61046a366004611bc9565b610c86565b6102ed61047d366004611b5a565b610cd8565b34801561048d575f80fd5b5061027b7f474f5645524e4f5200000000000000000000000000000000000000000000000081565b3480156104c0575f80fd5b506102ed6104cf366004611bc9565b610d6e565b3480156104df575f80fd5b506102ed610e24565b3480156104f3575f80fd5b506103367f000000000000000000000000000000000000000000000000000000000000000081565b348015610526575f80fd5b506102ed610eb7565b34801561053a575f80fd5b506101e5610f4e565b34801561054e575f80fd5b506102ed61055d366004611be2565b610f5a565b34801561056d575f80fd5b506001546001600160a01b0316610336565b34801561058a575f80fd5b506102ed610599366004611bc9565b6110c0565b3480156105a9575f80fd5b506102ed6105b8366004611bc9565b61114f565b600654606090600160a01b900460ff161580156105e457505f546001600160a01b03163314155b80156105f857506105f66004336111cc565b155b1561061657604051631850c9ab60e11b815260040160405180910390fd5b610626888888888888885f6111f2565b98975050505050505050565b606061063e6004611274565b905090565b5f80546001600160a01b0316331480159061066657506106646002336111cc565b155b1561068457604051637f60cd7d60e11b815260040160405180910390fd5b61069388888888888888611287565b6040517ff2b06537000000000000000000000000000000000000000000000000000000008152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f2b0653790602401602060405180830381865afa158015610712573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107369190611c0b565b1561076d576040517f0190fe1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b435f90815260076020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820461ffff1693830193909352600160b01b900469ffffffffffffffffffff16928101929092521561090c5780516001600160a01b0316331461080a576040517fdcfc20a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015169ffffffffffffffffffff168314610853576040517f2bb4aa1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051808201825267ffffffffffffffff43811682526020848101805161ffff9081168386019081525f898152600890945295909220935184549551909216680100000000000000000269ffffffffffffffffffff199095169190921617929092179055516108c4906001611c3e565b435f908152600760205260409020805461ffff92909216600160a01b027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff9092169190911790555b6040517f3a66f9010000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633a66f9019061097d908c908c908c908c908c908c908c90600401611c81565b6020604051808303815f875af1158015610999573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd9190611cd1565b5050979650505050505050565b6006546001600160a01b031633146109f55760405163349beb7760e01b815260040160405180910390fd5b610a068787878787878760016111f2565b5050505050505050565b6040517ffefc413200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015433906001600160a01b03168114610ac95760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610ad2816112c8565b50565b6006546001600160a01b03163314610b005760405163349beb7760e01b815260040160405180910390fd5b5f610b0d838360016112ee565b604051909150819033907fe027bfb8033351cc8b0a4c11de2e713795a10bc1e2673d187ecb7b6f39046abe905f90a3505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b8a57604051634b1c3b1160e01b815260040160405180910390fd5b6001600160a01b038116610bb157604051633d1a3d3f60e21b815260040160405180910390fd5b610bbc6004826114fe565b15610ad2576040516001600160a01b038216907f3d4ca4e9803dd5efe63afc555fa3cabd81d1165bb75f46e3cc3c4a010e99d5ac905f90a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c4057604051634b1c3b1160e01b815260040160405180910390fd5b610c4b600482611512565b15610ad2576040516001600160a01b038216907f2dfe27ec14cd334fc8116d7c31e49f3ac4cfbccfd8373f3e7057e6cbdab86a35905f90a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ccf57604051634b1c3b1160e01b815260040160405180910390fd5b610ad281611526565b600654600160a01b900460ff16158015610cfc57505f546001600160a01b03163314155b8015610d105750610d0e6004336111cc565b155b15610d2e57604051631850c9ab60e11b815260040160405180910390fd5b5f610d3a83835f6112ee565b604051909150819033907fc035779d09f6829d1145ebb032474d2cb460128e8f96d8ebba5cb01ec2f62be3905f90a3505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610db757604051634b1c3b1160e01b815260040160405180910390fd5b6001600160a01b038116610dde57604051633d1a3d3f60e21b815260040160405180910390fd5b610de96002826114fe565b15610ad2576040516001600160a01b038216907f04f8d61adee47fdcb8dddae20324e28980c3c8b957a7a18d9ec53d871933bcf2905f90a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6d57604051634b1c3b1160e01b815260040160405180910390fd5b600654600160a01b900460ff1615610eb5576006805460ff60a01b191690556040517fc0223cf20961cffb2cbec6f3436c3b37285eb1b51b99fee6328d48e7e4a52d4f905f90a15b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0057604051634b1c3b1160e01b815260040160405180910390fd5b600654600160a01b900460ff16610eb5576006805460ff60a01b1916600160a01b1790556040517fb685eb85668546ec83e13ea28713ea54fa4b650eec17dec38093c175d0751759905f90a1565b606061063e6002611274565b5f546001600160a01b03163314801590610f7c5750610f7a6002336111cc565b155b15610f9a57604051637f60cd7d60e11b815260040160405180910390fd5b435f908152600760205260409020546001600160a01b031615610fe9576040517fba54e4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051606081018252338082525f602080840182815269ffffffffffffffffffff8781168688019081524380865260079094528785209651875493519151909216600160b01b0275ffffffffffffffffffffffffffffffffffffffffffff61ffff909216600160a01b027fffffffffffffffffffff000000000000000000000000000000000000000000009094166001600160a01b03909316929092179290921791909116179093559251919290917f6721e1cb193f0df8bbe8965ee5d24bfdd018debdd337950a173a7c7a0e57304e9190a350565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461110957604051634b1c3b1160e01b815260040160405180910390fd5b611114600282611512565b15610ad2576040516001600160a01b038216907ff2ce6d13426504ef94ffdf7e0a7180ff51585ea0b231cbeb199e7ed50c732171905f90a250565b6111576115b8565b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556111945f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b0381165f90815260018301602052604081205415155b90505b92915050565b60605f6112048a8a8a8a8a8a8a611287565b5f8181526008602052604090205490915067ffffffffffffffff1615611256576040517fb2e9a47400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112668a8a8a8a8a8a8a8a611611565b9a9950505050505050505050565b60605f61128083611792565b9392505050565b5f878787878787876040516020016112a59796959493929190611c81565b604051602081830303815290604052805190602001209050979650505050505050565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055610ad2816117eb565b5f82808203611310576040516317f726ff60e31b815260040160405180910390fd5b60085f61133f87875f81811061132857611328611ce8565b905060200281019061133a9190611cfc565b611847565b815260208101919091526040015f9081205467ffffffffffffffff16925082900361137d576040516317f726ff60e31b815260040160405180910390fd5b5f82815260076020526040902054600160a01b900461ffff1681146113b5576040516317f726ff60e31b815260040160405180910390fd5b5f5b818110156114e757368686838181106113d2576113d2611ce8565b90506020028101906113e49190611cfc565b90505f6113f082611847565b5f8181526008602090815260409182902082518084019093525467ffffffffffffffff81168084526801000000000000000090910461ffff1691830191909152919250908614158061144a575083816020015161ffff1614155b15611484576040517fc100625f00000000000000000000000000000000000000000000000000000000815260048101839052602401610ac0565b6114be6114946020850185611bc9565b60208501356114a66040870187611d1a565b6114b36060890189611d1a565b89608001358e611611565b50505f908152600860205260409020805469ffffffffffffffffffff19169055506001016113b7565b50505f818152600760205260408120559392505050565b5f6111e9836001600160a01b038416611881565b5f6111e9836001600160a01b0384166118cd565b6001600160a01b03811661154d57604051633d1a3d3f60e21b815260040160405180910390fd5b6006546001600160a01b03828116911614610ad2576006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517fbf12139ff7104dab2c86fb3ded8e6381b5c4d828b15c3d572688966b267c5b21905f90a250565b5f546001600160a01b03163314610eb55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ac0565b60605f82600181111561162657611626611d5d565b036116e8576040517f0825f38f0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630825f38f908a9061169e908d9083908d908d908d908d908d90600401611c81565b5f6040518083038185885af11580156116b9573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526116e19190810190611d85565b9050610626565b6040517f591fcdfe0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063591fcdfe90611759908c908c908c908c908c908c908c90600401611c81565b5f604051808303815f87803b158015611770575f80fd5b505af1158015611782573d5f803e3d5ffd5b5050505098975050505050505050565b6060815f018054806020026020016040519081016040528092919081815260200182805480156117df57602002820191905f5260205f20905b8154815260200190600101908083116117cb575b50505050509050919050565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6111ec6118586020840184611bc9565b602084013561186a6040860186611d1a565b6118776060880188611d1a565b8860800135611287565b5f8181526001830160205260408120546118c657508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556111ec565b505f6111ec565b5f81815260018301602052604081205480156119a7575f6118ef600183611e2d565b85549091505f9061190290600190611e2d565b9050818114611961575f865f01828154811061192057611920611ce8565b905f5260205f200154905080875f01848154811061194057611940611ce8565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061197257611972611e40565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506111ec565b5f9150506111ec565b5092915050565b80356001600160a01b03811681146119cd575f80fd5b919050565b5f8083601f8401126119e2575f80fd5b50813567ffffffffffffffff8111156119f9575f80fd5b602083019150836020828501011115611a10575f80fd5b9250929050565b5f805f805f805f60a0888a031215611a2d575f80fd5b611a36886119b7565b965060208801359550604088013567ffffffffffffffff80821115611a59575f80fd5b611a658b838c016119d2565b909750955060608a0135915080821115611a7d575f80fd5b50611a8a8a828b016119d2565b989b979a50959894979596608090950135949350505050565b5f5b83811015611abd578181015183820152602001611aa5565b50505f910152565b602081525f8251806020840152611ae3816040850160208701611aa3565b601f01601f19169190910160400192915050565b602080825282518282018190525f9190848201906040850190845b81811015611b375783516001600160a01b031683529284019291840191600101611b12565b50909695505050505050565b5f60208284031215611b53575f80fd5b5035919050565b5f8060208385031215611b6b575f80fd5b823567ffffffffffffffff80821115611b82575f80fd5b818501915085601f830112611b95575f80fd5b813581811115611ba3575f80fd5b8660208260051b8501011115611bb7575f80fd5b60209290920196919550909350505050565b5f60208284031215611bd9575f80fd5b6111e9826119b7565b5f60208284031215611bf2575f80fd5b813569ffffffffffffffffffff81168114611280575f80fd5b5f60208284031215611c1b575f80fd5b81518015158114611280575f80fd5b634e487b7160e01b5f52601160045260245ffd5b61ffff8181168382160190808211156119b0576119b0611c2a565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b038816815286602082015260a060408201525f611ca960a083018789611c59565b8281036060840152611cbc818688611c59565b91505082608083015298975050505050505050565b5f60208284031215611ce1575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f8235609e19833603018112611d10575f80fd5b9190910192915050565b5f808335601e19843603018112611d2f575f80fd5b83018035915067ffffffffffffffff821115611d49575f80fd5b602001915036819003821315611a10575f80fd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611d95575f80fd5b815167ffffffffffffffff80821115611dac575f80fd5b818401915084601f830112611dbf575f80fd5b815181811115611dd157611dd1611d71565b604051601f8201601f19908116603f01168101908382118183101715611df957611df9611d71565b81604052828152876020848701011115611e11575f80fd5b611e22836020830160208801611aa3565b979650505050505050565b818103818111156111ec576111ec611c2a565b634e487b7160e01b5f52603160045260245ffdfea164736f6c6343000817000a60a060405234801561000f575f80fd5b50604051610b61380380610b6183398101604081905261002e91610074565b62015180811080610041575062278d0081115b1561005f5760405163bdf9b5f560e01b815260040160405180910390fd5b6001600160a01b039091166080525f556100ab565b5f8060408385031215610085575f80fd5b82516001600160a01b038116811461009b575f80fd5b6020939093015192949293505050565b608051610a896100d85f395f81816101f60152818161023d015281816104ce01526105fd0152610a895ff3fe6080604052600436106100b0575f3560e01c8063b1b43ae511610066578063e177246e1161004c578063e177246e14610188578063f2b06537146101a7578063f851a440146101e5575f80fd5b8063b1b43ae51461015c578063c1a287e214610172575f80fd5b8063591fcdfe11610096578063591fcdfe146101115780636a42b8f8146101325780637d645fab14610146575f80fd5b80630825f38f146100bb5780633a66f901146100e4575f80fd5b366100b757005b5f80fd5b6100ce6100c9366004610854565b610230565b6040516100db9190610944565b60405180910390f35b3480156100ef575f80fd5b506101036100fe366004610854565b6104c2565b6040519081526020016100db565b34801561011c575f80fd5b5061013061012b366004610854565b6105f2565b005b34801561013d575f80fd5b506101035f5481565b348015610151575f80fd5b5061010362278d0081565b348015610167575f80fd5b506101036201518081565b34801561017d575f80fd5b506101036212750081565b348015610193575f80fd5b506101306101a2366004610956565b6106f4565b3480156101b2575f80fd5b506101d56101c1366004610956565b60016020525f908152604090205460ff1681565b60405190151581526020016100db565b3480156101f0575f80fd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100db565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461028257604051630946186960e31b81523360048201526024015b60405180910390fd5b5f868686868660405160200161029c95949392919061096d565b60408051601f1981840301815291815281516020928301205f818152600190935291205490915060ff166102ff576040517fc952a44500000000000000000000000000000000000000000000000000000000815260048101829052602401610279565b82421015610339576040517f7720a89800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61034662127500846109b9565b421115610382576040517fd479ce4300000000000000000000000000000000000000000000000000000000815260048101829052602401610279565b5f818152600160205260408120805460ff191690558551606091036103a85750836103d4565b8580519060200120856040516020016103c29291906109de565b60405160208183030381529060405290505b5f80896001600160a01b031689846040516103ef9190610a25565b5f6040518083038185875af1925050503d805f8114610429576040519150601f19603f3d011682016040523d82523d5f602084013e61042e565b606091505b50915091508161046d576040517f948319ed00000000000000000000000000000000000000000000000000000000815260048101859052602401610279565b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b6040516104ad9493929190610a40565b60405180910390a39998505050505050505050565b5f336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461050e57604051630946186960e31b8152336004820152602401610279565b5f5461051a90426109b9565b821015610553576040517fc124b80700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f868686868660405160200161056d95949392919061096d565b60408051601f1981840301815282825280516020918201205f81815260019283905292909220805460ff1916909117905591506001600160a01b0388169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f906105e0908a908a908a908a90610a40565b60405180910390a39695505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461063d57604051630946186960e31b8152336004820152602401610279565b5f858585858560405160200161065795949392919061096d565b60408051601f1981840301815291815281516020928301205f818152600190935291205490915060ff1661068b57506106ed565b5f8181526001602052604090819020805460ff19169055516001600160a01b0387169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf87906106e3908990899089908990610a40565b60405180910390a3505b5050505050565b33301461072f576040517f93552b32000000000000000000000000000000000000000000000000000000008152336004820152602401610279565b62015180811080610742575062278d0081115b15610779576040517fbdf9b5f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81815560405182917f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c91a250565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff808411156107d6576107d66107a8565b604051601f8501601f19908116603f011681019082821181831017156107fe576107fe6107a8565b81604052809350858152868686011115610816575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f83011261083e575f80fd5b61084d838335602085016107bc565b9392505050565b5f805f805f60a08688031215610868575f80fd5b85356001600160a01b038116811461087e575f80fd5b945060208601359350604086013567ffffffffffffffff808211156108a1575f80fd5b818801915088601f8301126108b4575f80fd5b6108c3898335602085016107bc565b945060608801359150808211156108d8575f80fd5b506108e58882890161082f565b95989497509295608001359392505050565b5f5b838110156109115781810151838201526020016108f9565b50505f910152565b5f81518084526109308160208601602086016108f7565b601f01601f19169290920160200192915050565b602081525f61084d6020830184610919565b5f60208284031215610966575f80fd5b5035919050565b6001600160a01b038616815284602082015260a060408201525f61099460a0830186610919565b82810360608401526109a68186610919565b9150508260808301529695505050505050565b808201808211156109d857634e487b7160e01b5f52601160045260245ffd5b92915050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681525f8251610a178160048501602087016108f7565b919091016004019392505050565b5f8251610a368184602087016108f7565b9190910192915050565b848152608060208201525f610a586080830186610919565b8281036040840152610a6a8186610919565b9150508260608301529594505050505056fea164736f6c6343000817000a0000000000000000000000004ad2419dc6de75c3f57d7b6aa200d494c74c14430000000000000000000000004ad2419dc6de75c3f57d7b6aa200d494c74c144300000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000000