0 txs
0 calls
constructor
constructor(address _bungeeGateway, address _tokenMessengerV2, address _msgTransmitterV2, address _circleUsdc, address _swapExecutor, address _feeCollector, address _owner)
functions
_chainIdToDomainMap
viewfunction _chainIdToDomainMap(uint256) view returns (uint32)
BUNGEE_GATEWAY
viewfunction BUNGEE_GATEWAY() view returns (address)
CIRCLE_USDC
viewfunction CIRCLE_USDC() view returns (address)
decodeBungeeMessage
purefunction decodeBungeeMessage(bytes cctpMsg) pure returns (tuple)
domainToChainIdMap
viewfunction domainToChainIdMap(uint32) view returns (uint256)
expiry
viewfunction expiry() view returns (uint256)
FEE_COLLECTOR
viewfunction FEE_COLLECTOR() view returns (address)
getDestinationDomain
viewfunction getDestinationDomain(uint256 toChainId) view returns (uint32)
hasRole
viewfunction hasRole(bytes32 role_, address address_) view returns (bool)
msgTransmitterV2
viewfunction msgTransmitterV2() view returns (address)
NATIVE_TOKEN_ADDRESS
viewfunction NATIVE_TOKEN_ADDRESS() view returns (address)
nominee
viewfunction nominee() view returns (address)
owner
viewfunction owner() view returns (address)
SINGLE_OUTPUT_IMPL_ID
viewfunction SINGLE_OUTPUT_IMPL_ID() view returns (uint8)
SWAP_EXECUTOR
viewfunction SWAP_EXECUTOR() view returns (address)
tokenMessengerV2
viewfunction tokenMessengerV2() view returns (address)
addDestinationChainSupport
nonpayablefunction addDestinationChainSupport(uint256 toChainId, uint32 domain)
addDomainToChainIdMap
nonpayablefunction addDomainToChainIdMap(uint256 chainId, uint32 domain)
claimOwner
nonpayablefunction claimOwner()
execute
nonpayablefunction execute(bytes32 requestHash, address receiverContract, tuple exec) returns (uint256 extractedAmount, address extractedToken)
fulfil
payablefunction fulfil(bytes32 requestHash, tuple fulfilExec, address transmitter) payable
grantRole
nonpayablefunction grantRole(bytes32 role_, address grantee_)
nominateOwner
nonpayablefunction nominateOwner(address nominee_)
releaseFunds
nonpayablefunction releaseFunds(address token, uint256 amount, address recipient)
removeDestinationChainSupport
nonpayablefunction removeDestinationChainSupport(uint256 toChainId)
removeDomainToChainIdMap
nonpayablefunction removeDomainToChainIdMap(uint32 domain)
rescue
nonpayablefunction rescue(address token, address to, uint256 amount)
revokeRole
nonpayablefunction revokeRole(bytes32 role_, address revokee_)
setExpiry
nonpayablefunction setExpiry(uint256 _expiry)
withdrawRequestOnDestination
nonpayablefunction withdrawRequestOnDestination(tuple request, bytes withdrawRequestData)
events
OwnerClaimed
event OwnerClaimed(address indexed claimer)
OwnerNominated
event OwnerNominated(address indexed nominee)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed grantee)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed revokee)
WithdrawOnDestination
event WithdrawOnDestination(bytes32 indexed requestHash, address token, uint256 amount, address to)
errors
CallerNotBungeeGateway
error CallerNotBungeeGateway()
FulfilmentDeadlineNotMet
error FulfilmentDeadlineNotMet()
InvalidFulfil
error InvalidFulfil()
InvalidMsg
error InvalidMsg()
InvalidReceiver
error InvalidReceiver()
InvalidTokenAddress
error InvalidTokenAddress()
MsgReceiveFailed
error MsgReceiveFailed()
NoPermit
error NoPermit(bytes32 role)
NotImplemented
error NotImplemented()
OnlyNominee
error OnlyNominee()
OnlyOwner
error OnlyOwner()
SwapOutputInsufficient
error SwapOutputInsufficient()
TransferFailed
error TransferFailed()
UnsupportedRequest
error UnsupportedRequest()
WrongAffiliateFeeLength
error WrongAffiliateFeeLength()
ZeroAddress
error ZeroAddress()
creation bytecode
0x610120604052610e106004553480156200001857600080fd5b5060405162003527380380620035278339810160408190526200003b91620001bd565b6001600160a01b0387811660805283811660a052600080546001600160a01b03191691841691909117905580806200007381620000f1565b50620000a290507fc4c453d647953c0fd35db5a34ee76e60fb4abc3a8fb891a25936b70b38f292538262000145565b620000ce7f82db594318110a04b6349ce48645aa69f0892751bc893d15e61d9e2b9c4630f58262000145565b5050506001600160a01b0392831660c05290821660e05216610100525062000252565b600180546001600160a01b0383166001600160a01b031991821681179092556002805490911690556040517ffbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f8790600090a250565b60008281526003602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551909184917f2ae6a113c0ed5b78a53413ffbb7679881f11145ccfba4fb92e863dfcd5a1d2f39190a35050565b80516001600160a01b0381168114620001b857600080fd5b919050565b600080600080600080600060e0888a031215620001d957600080fd5b620001e488620001a0565b9650620001f460208901620001a0565b95506200020460408901620001a0565b94506200021460608901620001a0565b93506200022460808901620001a0565b92506200023460a08901620001a0565b91506200024460c08901620001a0565b905092959891949750929550565b60805160a05160c05160e051610100516131ef62000338600039600081816104e801528181611191015281816111ef015281816114af0152818161152f015281816115b90152818161176e0152818161180a01528181611b2f0152611c2f015260008181610357015281816110f9015281816114040152611e7f01526000818161053c01528181611b500152611bfc01526000818161023101528181610c0501528181610c4201528181611550015261158c0152600081816103de01528181610735015281816108820152818161094b01528181610b6401526121b601526131ef6000f3fe6080604052600436106101d15760003560e01c8063815b9c48116100f7578063b4e53d7c11610095578063e184c9be11610064578063e184c9be146105e6578063ec756c95146105fc578063fe7bf40614610639578063fec366c21461065957600080fd5b8063b4e53d7c1461055e578063c1a936dd1461057e578063d547741f1461059e578063df2ebdbb146105be57600080fd5b806391d14854116100d157806391d14854146104a65780639bdb675d146104d6578063a2a028ff1461050a578063ae0026a51461052a57600080fd5b8063815b9c4814610420578063881b4387146104405780638da5cb5b1461048857600080fd5b80633bd1adec1161016f5780635b94db271161013e5780635b94db271461038c57806362524dd7146103ac57806370372d85146103cc5780637f660b011461040057600080fd5b80633bd1adec146103095780633cbc7eaa1461031e5780633fa55cf8146103455780634d1efe3d1461037957600080fd5b806312ba63d9116101ab57806312ba63d91461027057806320f99c0a146102ab57806320ff430b146102c95780632f2ff15d146102e957600080fd5b806301cceb38146101dd5780630581fbbf146101ff5780630b3458791461021f57600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612500565b6106cf565b005b34801561020b57600080fd5b506101fd61021a366004612519565b61072a565b34801561022b57600080fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027c57600080fd5b5061029d61028b3660046125d2565b60066020526000908152604090205481565b604051908152602001610267565b3480156102b757600080fd5b506002546001600160a01b0316610253565b3480156102d557600080fd5b506101fd6102e4366004612610565b610783565b3480156102f557600080fd5b506101fd610304366004612651565b610808565b34801561031557600080fd5b506101fd610841565b34801561032a57600080fd5b50610333600181565b60405160ff9091168152602001610267565b34801561035157600080fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b6101fd610387366004612681565b610877565b34801561039857600080fd5b506101fd6103a73660046126e1565b6108cb565b3480156103b857600080fd5b506101fd6103c7366004612705565b610940565b3480156103d857600080fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b34801561040c57600080fd5b50600054610253906001600160a01b031681565b34801561042c57600080fd5b506101fd61043b366004612500565b610994565b34801561044c57600080fd5b5061047361045b366004612500565b60056020526000908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610267565b34801561049457600080fd5b506001546001600160a01b0316610253565b3480156104b257600080fd5b506104c66104c1366004612651565b610a00565b6040519015158152602001610267565b3480156104e257600080fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b50610473610525366004612500565b610a30565b34801561053657600080fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b34801561056a57600080fd5b506101fd6105793660046125d2565b610a51565b34801561058a57600080fd5b506101fd61059936600461273c565b610ab9565b3480156105aa57600080fd5b506101fd6105b9366004612651565b610b21565b3480156105ca57600080fd5b5061025373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3480156105f257600080fd5b5061029d60045481565b34801561060857600080fd5b5061061c610617366004612768565b610b56565b604080519283526001600160a01b03909116602083015201610267565b34801561064557600080fd5b506101fd61065436600461273c565b610f09565b34801561066557600080fd5b506106796106743660046128af565b610f8f565b6040516102679190815181526020808301519082015260408083015163ffffffff16908201526060808301516001600160a01b0316908201526080808301519082015260a0918201519181019190915260c00190565b33600090815260008051602061319a833981519152602052604090205460008051602061317a8339815191529060ff166107245760405163962f633360e01b8152600481018290526024015b60405180910390fd5b50600455565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461077357604051634556123760e01b815260040160405180910390fd5b61077e83838361105f565b505050565b3360009081527f271b3e2292ab6fd3ff496cd98d6d375af02f11568a701741f48bba7789f13a7060205260409020547fc4c453d647953c0fd35db5a34ee76e60fb4abc3a8fb891a25936b70b38f292539060ff166107f75760405163962f633360e01b81526004810182905260240161071b565b610802848484611252565b50505050565b6001546001600160a01b0316331461083357604051635fc483c560e01b815260040160405180910390fd5b61083d82826112de565b5050565b6002546001600160a01b0316331461086c57604051637c91ccdd60e01b815260040160405180910390fd5b61087533611339565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108c057604051634556123760e01b815260040160405180910390fd5b61077e83838361138d565b6001546001600160a01b031633146108f657604051635fc483c560e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290600090a250565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461098957604051634556123760e01b815260040160405180910390fd5b61077e838383611850565b33600090815260008051602061319a833981519152602052604090205460008051602061317a8339815191529060ff166109e45760405163962f633360e01b81526004810182905260240161071b565b506000908152600560205260409020805463ffffffff19169055565b60008281526003602090815260408083206001600160a01b038516845290915281205460ff165b90505b92915050565b600081815260056020526040812054610a2a9060019063ffffffff16612902565b33600090815260008051602061319a833981519152602052604090205460008051602061317a8339815191529060ff16610aa15760405163962f633360e01b81526004810182905260240161071b565b5063ffffffff16600090815260066020526040812055565b33600090815260008051602061319a833981519152602052604090205460008051602061317a8339815191529060ff16610b095760405163962f633360e01b81526004810182905260240161071b565b5063ffffffff16600090815260066020526040902055565b6001546001600160a01b03163314610b4c57604051635fc483c560e01b815260040160405180910390fd5b61083d8282611869565b600080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ba257604051634556123760e01b815260040160405180910390fd5b6000610bb16080850185612926565b90501115610e5d576000610be1610bc88580612974565b610bdb906101e08101906101c0016126e1565b306118c1565b9050610c38610bf08580612974565b610c0390610140810190610120016126e1565b7f0000000000000000000000000000000000000000000000000000000000000000610c2e8780612974565b6101400135611963565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630be0eba8610c718680612974565b610c8490610140810190610120016126e1565b610c8e8780612974565b6101400135610ca360c0890160a08a016126e1565b610cb060808a018a612926565b6040518663ffffffff1660e01b8152600401610cd0959493929190612995565b600060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b5060009250839150610d3d9050610d158780612974565b610d28906101e08101906101c0016126e1565b610d386040890160208a016126e1565b6118c1565b610d4791906129e9565b9050610d538580612974565b6101e00135811015610d7857604051633453a1e760e01b815260040160405180910390fd5b60008080610dd384610d8a8a80612974565b610d9990610220810190612926565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061199292505050565b919450925090508115610e0857610e08610ded8980612974565b610e00906101e08101906101c0016126e1565b83838d611a31565b610e3183610e168a80612974565b610e29906101e08101906101c0016126e1565b8c8c8c611abd565b82610e3c8980612974565b610e4f906101e08101906101c0016126e1565b965096505050505050610f01565b60008080610e7d610e6e8780612974565b6101400135610d8a8880612974565b919450925090508115610eb257610eb2610e978780612974565b610eaa90610140810190610120016126e1565b83838b611a31565b610edb83610ec08880612974565b610ed390610140810190610120016126e1565b8a8a8a611abd565b82610ee68780612974565b610ef990610140810190610120016126e1565b945094505050505b935093915050565b33600090815260008051602061319a833981519152602052604090205460008051602061317a8339815191529060ff16610f595760405163962f633360e01b81526004810182905260240161071b565b610f648260016129fc565b600093845260056020526040909320805463ffffffff191663ffffffff909416939093179092555050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529080808080610fdd610fd4609460e4612a19565b889060a0611c9d565b806020019051810190610ff09190612a2c565b945094509450945094506040518060c0016040528086815260200161101f600c8a611daa90919063ffffffff16565b815260200161102f896004611e08565b63ffffffff168152602001846001600160a01b031681526020018381526020018281525095505050505050919050565b60008061106e83850185612a76565b9150915061107c8282611e65565b600061108f61108a87612bbc565b611f19565b905061109a8361213e565b60006110a584610f8f565b905060008160a00151116110b857600080fd5b8060a001514210156110dd57604051630888f67560e41b815260040160405180910390fd5b6020810151604051633fad85c960e21b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063feb6172490602401602060405180830381865afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c9190612c83565b60000361118c57604051633f560aab60e21b815260040160405180910390fd5b6111c77f00000000000000000000000000000000000000000000000000000000000000006111c060c08a0160a08b016126e1565b8351611963565b805182907fe6cea8072222bb5dd02862b1f55e8609a98566d603d56964af44c187c81536ed907f00000000000000000000000000000000000000000000000000000000000000009061121f60c08c0160a08d016126e1565b604080516001600160a01b039485168152602081019390935292168183015290519081900360600190a250505050505050565b6001600160a01b0382166112795760405163d92e233d60e01b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038416016112a85761077e828261226a565b826001600160a01b03163b6000036112d357604051630f58058360e11b815260040160405180910390fd5b61077e838383612286565b60008281526003602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551909184917f2ae6a113c0ed5b78a53413ffbb7679881f11145ccfba4fb92e863dfcd5a1d2f39190a35050565b600180546001600160a01b0383166001600160a01b031991821681179092556002805490911690556040517ffbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f8790600090a250565b6000808080806113a06060880188612926565b8101906113ad9190612c9c565b945094509450945094506113c18282611e65565b6113ca8261213e565b60006113d583610f8f565b905060008160a00151116113e857600080fd5b6020810151604051633fad85c960e21b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063feb6172490602401602060405180830381865afa158015611453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114779190612c83565b60000361149757604051633f560aab60e21b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156114fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115229190612c83565b9050861561161a576115757f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089611963565b60405163017c1d7560e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630be0eba8906115e7907f0000000000000000000000000000000000000000000000000000000000000000908b908b908b90600401612d91565b600060405180830381600087803b15801561160157600080fd5b505af1158015611615573d6000803e3d6000fd5b505050505b81608001518960400135101561164357604051633f560aab60e21b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6116628a80612974565b61167590610180810190610160016126e1565b6001600160a01b0316036116b357600061168f8a80612974565b6101a0013511156116b35760405163e68a12b760e01b815260040160405180910390fd5b6116f86116c08a80612974565b6116d390610180810190610160016126e1565b6116dd8b80612974565b6116ee9060c081019060a0016126e1565b8b60400135611963565b60006117048a80612974565b6101a0013511156117565761175673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6117318b80612974565b6117429060c081019060a0016126e1565b61174c8c80612974565b6101a00135611963565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156117bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e19190612c83565b6117eb90836129e9565b905060008184600001516117ff91906129e9565b1115611843576118437f0000000000000000000000000000000000000000000000000000000000000000846060015183866000015161183e91906129e9565b611963565b5050505050505050505050565b60405163d623472560e01b815260040160405180910390fd5b60008281526003602090815260408083206001600160a01b0385168085529252808320805460ff1916905551909184917f155aaafb6329a2098580462df33ec4b7441b19729b9601c5fc17ae1cf99a8a529190a35050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038416016118f957506001600160a01b03811631610a2a565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa15801561193f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a279190612c83565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038416016112d35761077e82826122d6565b60008060008060008086511115611a265760008651601b146119c757604051634115207f60e01b815260040160405180910390fd5b6119d287601461234f565b90506119df8760006123ac565b925066ffffffffffffff811615611a2457662386f26fc10000611a0b66ffffffffffffff83168a612dce565b611a159190612de5565b9150611a2182896129e9565b97505b505b959690945092505050565b600054611a499085906001600160a01b031685611963565b60005460405163404e3d4960e01b81526001600160a01b0384811660048301526024820186905286811660448301529091169063404e3d4990606401600060405180830381600087803b158015611a9f57600080fd5b505af1158015611ab3573d6000803e3d6000fd5b5050505050505050565b6000611ad5611acc8380612974565b60200135610a30565b9050600080611ae76060850185612926565b810190611af4919061273c565b90925090506001600160a01b038516611b2057604051631e4ec46b60e01b815260040160405180910390fd5b6001600160a01b038516611b757f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008b612411565b6000611b81848b6129e9565b88611b93610100890160e08a016126e1565b886040013560045442611ba69190612a19565b6040805160208101969096528501939093526001600160a01b039091166060840152608083015260a082015260c00160408051601f198184030181529082905263779b432d60e01b825291506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063779b432d90611c5f908d90899087907f00000000000000000000000000000000000000000000000000000000000000009082908c908c908b90600401612e07565b600060405180830381600087803b158015611c7957600080fd5b505af1158015611c8d573d6000803e3d6000fd5b5050505050505050505050505050565b606081611cab81601f612a19565b1015611cea5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161071b565b611cf48284612a19565b84511015611d385760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161071b565b606082158015611d575760405191506000825260208201604052611da1565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611d90578051835260209283019201611d78565b5050858452601f01601f1916604052505b50949350505050565b6000611db7826020612a19565b83511015611dff5760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b604482015260640161071b565b50016020015190565b6000611e15826004612a19565b83511015611e5c5760405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b604482015260640161071b565b50016004015190565b604051630afd9fa560e31b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906357ecfd2890611eb69086908690600401612e6a565b6020604051808303816000875af1158015611ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef99190612e98565b90508061077e5760405163043d7c2960e21b815260040160405180910390fd5b604051670a4cae2eacae6e8560c31b60208201527510985cda58d4995c5d595cdd0818985cda58d4995c4b60521b60288201527f6164647265737320737761704f7574707574546f6b656e2c0000000000000000603e820152751d5a5b9d0c8d4d881b5a5b94ddd85c13dd5d1c1d5d0b60521b605682015270189e5d195ccccc881b595d1859185d184b607a1b606c82015273189e5d195cc81859999a5b1a585d195199595ccb60621b607d820152721d5a5b9d0c8d4d881b5a5b91195cdd11d85ccb606a1b60918201527f62797465732064657374696e6174696f6e5061796c6f61642c0000000000000060a48201527f61646472657373206578636c75736976655472616e736d69747465722900000060bd82015260009060da0160405160208183030381529060405260405160200161205490612eba565b60408051601f1981840301815290829052612072929160200161306b565b604051602081830303815290604052805190602001206120958360000151612456565b8360200151846040015185606001518660800151805190602001208760a001518860c00151805190602001208960e001516040516020016121219998979695949392919098895260208901979097526001600160a01b0395861660408901526060880194909452608087019290925260a086015260c085015260e0840152166101008201526101200190565b604051602081830303815290604052805190602001209050919050565b600061215661214f60946064612a19565b8390611daa565b90506000612165836004611e08565b9050600061217f61217860946024612a19565b8590611daa565b63ffffffff8316600090815260066020526040908190205490516374f8d3fd60e01b815230600482015260248101919091529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374f8d3fd90604401602060405180830381865afa158015612205573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612229919061309a565b6001600160a01b03848116911614158061224c57506001600160a01b0381163014155b1561080257604051631bd147a760e01b815260040160405180910390fd5b60003860003884865af161083d5763b12d13eb6000526004601cfd5b816014528060345263a9059cbb60601b60005260206000604460106000875af180600160005114166122cb57803d853b1517106122cb576390b8ec186000526004601cfd5b506000603452505050565b6000826001600160a01b03168261138890604051600060405180830381858888f193505050503d8060008114612328576040519150601f19603f3d011682016040523d82523d6000602084013e61232d565b606091505b505090508061077e576040516312171d8360e31b815260040160405180910390fd5b600061235c826007612a19565b835110156123a35760405162461bcd60e51b8152602060048201526014602482015273746f55696e7435365f6f75744f66426f756e647360601b604482015260640161071b565b50016007015190565b60006123b9826014612a19565b835110156124015760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015260640161071b565b500160200151600160601b900490565b816014528060345263095ea7b360601b60005260206000604460106000875af180600160005114166122cb57803d853b1517106122cb57633e3f8f736000526004601cfd5b600060405160200161246790612eba565b604051602081830303815290604052805190602001208260000151468460400151856060015186608001518760a001518860c001518960e001518a61010001518b61012001518c61014001518d61016001518e61018001518f6101a001516040516020016124e29e9d9c9b9a999897969594939291906130b7565b60408051601f19818403018152908290526121219291602001613153565b60006020828403121561251257600080fd5b5035919050565b60008060006040848603121561252e57600080fd5b833567ffffffffffffffff8082111561254657600080fd5b908501906102a0828803121561255b57600080fd5b9093506020850135908082111561257157600080fd5b818601915086601f83011261258557600080fd5b81358181111561259457600080fd5b8760208285010111156125a657600080fd5b6020830194508093505050509250925092565b803563ffffffff811681146125cd57600080fd5b919050565b6000602082840312156125e457600080fd5b610a27826125b9565b6001600160a01b038116811461260257600080fd5b50565b80356125cd816125ed565b60008060006060848603121561262557600080fd5b8335612630816125ed565b92506020840135612640816125ed565b929592945050506040919091013590565b6000806040838503121561266457600080fd5b823591506020830135612676816125ed565b809150509250929050565b60008060006060848603121561269657600080fd5b83359250602084013567ffffffffffffffff8111156126b457600080fd5b840160a081870312156126c657600080fd5b915060408401356126d6816125ed565b809150509250925092565b6000602082840312156126f357600080fd5b81356126fe816125ed565b9392505050565b60008060006060848603121561271a57600080fd5b8335612725816125ed565b92506020840135915060408401356126d6816125ed565b6000806040838503121561274f57600080fd5b8235915061275f602084016125b9565b90509250929050565b60008060006060848603121561277d57600080fd5b83359250602084013561278f816125ed565b9150604084013567ffffffffffffffff8111156127ab57600080fd5b840161012081870312156126d657600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff811182821017156127f8576127f86127be565b60405290565b604051610100810167ffffffffffffffff811182821017156127f8576127f86127be565b600082601f83011261283357600080fd5b813567ffffffffffffffff8082111561284e5761284e6127be565b604051601f8301601f19908116603f01168101908282118183101715612876576128766127be565b8160405283815286602085880101111561288f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156128c157600080fd5b813567ffffffffffffffff8111156128d857600080fd5b6128e484828501612822565b949350505050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff82811682821603908082111561291f5761291f6128ec565b5092915050565b6000808335601e1984360301811261293d57600080fd5b83018035915067ffffffffffffffff82111561295857600080fd5b60200191503681900382131561296d57600080fd5b9250929050565b6000823561029e1983360301811261298b57600080fd5b9190910192915050565b6001600160a01b038681168252602082018690528416604082015260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b81810381811115610a2a57610a2a6128ec565b63ffffffff81811683821601908082111561291f5761291f6128ec565b80820180821115610a2a57610a2a6128ec565b600080600080600060a08688031215612a4457600080fd5b85519450602086015193506040860151612a5d816125ed565b6060870151608090970151959894975095949392505050565b60008060408385031215612a8957600080fd5b823567ffffffffffffffff80821115612aa157600080fd5b612aad86838701612822565b93506020850135915080821115612ac357600080fd5b50612ad085828601612822565b9150509250929050565b60006101c08284031215612aed57600080fd5b612af56127d4565b905081358152602082013560208201526040820135604082015260608201356060820152612b2560808301612605565b6080820152612b3660a08301612605565b60a0820152612b4760c08301612605565b60c0820152612b5860e08301612605565b60e0820152610100612b6b8184016125b9565b90820152610120612b7d838201612605565b908201526101408281013590820152610160612b9a818401612605565b9082015261018082810135908201526101a09182013591810191909152919050565b60006102a08236031215612bcf57600080fd5b612bd76127fe565b612be13684612ada565b8152612bf06101c08401612605565b60208201526101e08301356040820152610200830135606082015261022083013567ffffffffffffffff80821115612c2757600080fd5b612c3336838701612822565b608084015261024085013560a0840152610260850135915080821115612c5857600080fd5b50612c6536828601612822565b60c083015250612c786102808401612605565b60e082015292915050565b600060208284031215612c9557600080fd5b5051919050565b600080600080600060a08688031215612cb457600080fd5b853594506020860135612cc6816125ed565b9350604086013567ffffffffffffffff80821115612ce357600080fd5b612cef89838a01612822565b94506060880135915080821115612d0557600080fd5b612d1189838a01612822565b93506080880135915080821115612d2757600080fd5b50612d3488828901612822565b9150509295509295909350565b60005b83811015612d5c578181015183820152602001612d44565b50506000910152565b60008151808452612d7d816020860160208601612d41565b601f01601f19169290920160200192915050565b6001600160a01b0385811682526020820185905283166040820152608060608201819052600090612dc490830184612d65565b9695505050505050565b8082028115828204841417610a2a57610a2a6128ec565b600082612e0257634e487b7160e01b600052601260045260246000fd5b500490565b88815263ffffffff8881166020830152604082018890526001600160a01b03871660608301526080820186905260a08201859052831660c082015261010060e08201819052600090612e5b83820185612d65565b9b9a5050505050505050505050565b604081526000612e7d6040830185612d65565b8281036020840152612e8f8185612d65565b95945050505050565b600060208284031215612eaa57600080fd5b815180151581146126fe57600080fd5b6c084c2e6d2c6a4cae2eacae6e85609b1b8152751d5a5b9d0c8d4d881bdc9a59da5b90da185a5b92590b60521b600d8201527f75696e743235362064657374696e6174696f6e436861696e49642c00000000006023820152701d5a5b9d0c8d4d88191958591b1a5b994b607a1b603e8201526d1d5a5b9d0c8d4d881b9bdb98d94b60921b604f8201526e1859191c995cdcc81cd95b99195c8b608a1b605d820152701859191c995cdcc81c9958d95a5d995c8b607a1b606c820152701859191c995cdcc819195b1959d85d194b607a1b607d820152751859191c995cdcc8189d5b99d95951d85d195dd85e4b60521b608e820152741d5a5b9d0ccc881cddda5d18da189bd85c9912590b605a1b60a4820152721859191c995cdcc81a5b9c1d5d151bdad95b8b606a1b60b9820152731d5a5b9d0c8d4d881a5b9c1d5d105b5bdd5b9d0b60621b60cc820152731859191c995cdcc81bdd5d1c1d5d151bdad95b8b60621b60e08201527f75696e74323536206d696e4f7574707574416d6f756e742c75696e743235362060f48201526c72656675656c416d6f756e742960981b61011482015260006101218201610a2a565b6000835161307d818460208801612d41565b835190830190613091818360208801612d41565b01949350505050565b6000602082840312156130ac57600080fd5b81516126fe816125ed565b8e8152602081018e9052604081018d9052606081018c90526001600160a01b038b811660808301528a811660a083015289811660c0830152881660e08201526101c0810163ffffffff88166101008301526001600160a01b038716610120830152856101408301526131356101608301866001600160a01b03169052565b6101808201939093526101a001529c9b505050505050505050505050565b8281526000825161316b816020850160208701612d41565b91909101602001939250505056fe82db594318110a04b6349ce48645aa69f0892751bc893d15e61d9e2b9c4630f5e17a3662b7be2cdde41358207b836de8e81394bf08bc2fa8bb14da2ac9638c01a26469706673582212206c27b15268f93790677a7056bd987d862350f537347471fb5a29930af3dcb48664736f6c634300081300330000000000000000000000009f0035e3fbd664ef2ae74ed35b4861c542fd954100000000000000000000000028b5a0e9c621a5badaa536219b3a228c8168cf5d00000000000000000000000081d40f21f12a8f0e3252bccb954d722d4c464b64000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda0291300000000000000000000000010adcef9619d9c957c54a9dc6091f007fa5532630000000000000000000000009c5fbd790a4d7921dbc66b09830f2d485a21f307000000000000000000000000daee4d2156de6fe6f7d50ca047136d758f96a6f0