0 txs
1 call
constructor
No constructor.
functions
bridgeContracts
viewfunction bridgeContracts(uint16 chainId_) view returns (bytes32)
chainId
viewfunction chainId() view returns (uint16)
encodeAssetMeta
purefunction encodeAssetMeta(tuple meta) pure returns (bytes encoded)
encodeTransfer
purefunction encodeTransfer(tuple transfer) pure returns (bytes encoded)
governanceActionIsConsumed
viewfunction governanceActionIsConsumed(bytes32 hash) view returns (bool)
governanceChainId
viewfunction governanceChainId() view returns (uint16)
governanceContract
viewfunction governanceContract() view returns (bytes32)
implementation
viewfunction implementation() view returns (address)
isInitialized
viewfunction isInitialized(address impl) view returns (bool)
isTransferCompleted
viewfunction isTransferCompleted(bytes32 hash) view returns (bool)
isWrappedAsset
viewfunction isWrappedAsset(address token) view returns (bool)
outstandingBridged
viewfunction outstandingBridged(address token) view returns (uint256)
parseAssetMeta
purefunction parseAssetMeta(bytes encoded) pure returns (tuple meta)
parseRegisterChain
purefunction parseRegisterChain(bytes encoded) pure returns (tuple chain)
parseTransfer
purefunction parseTransfer(bytes encoded) pure returns (tuple transfer)
parseUpgrade
purefunction parseUpgrade(bytes encoded) pure returns (tuple chain)
tokenImplementation
viewfunction tokenImplementation() view returns (address)
WETH
viewfunction WETH() view returns (address)
wormhole
viewfunction wormhole() view returns (address)
wrappedAsset
viewfunction wrappedAsset(uint16 tokenChainId, bytes32 tokenAddress) view returns (address)
attestToken
payablefunction attestToken(address tokenAddress, uint32 nonce) payable returns (uint64 sequence)
completeTransfer
nonpayablefunction completeTransfer(bytes encodedVm)
completeTransferAndUnwrapETH
nonpayablefunction completeTransferAndUnwrapETH(bytes encodedVm)
createWrapped
nonpayablefunction createWrapped(bytes encodedVm) returns (address token)
initialize
nonpayablefunction initialize()
registerChain
nonpayablefunction registerChain(bytes encodedVM)
transferTokens
payablefunction transferTokens(address token, uint256 amount, uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) payable returns (uint64 sequence)
updateWrapped
nonpayablefunction updateWrapped(bytes encodedVm) returns (address token)
upgrade
nonpayablefunction upgrade(bytes encodedVM)
wrapAndTransferETH
payablefunction wrapAndTransferETH(uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) payable returns (uint64 sequence)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
ContractUpgraded
event ContractUpgraded(address indexed oldContract, address indexed newContract)
Upgraded
event Upgraded(address indexed implementation)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50615202806100206000396000f3fe608060405260043610620001f75760003560e01c8063a5799f93116200010b578063c48fa11511620000a1578063f768441f116200006c578063f768441f1462000755578063fbe3c2cd146200077a578063fbeeacd9146200079b578063ff200cde14620007fb57600080fd5b8063c48fa11514620006b7578063c687851914620006ce578063d60b347f14620006f3578063e8059810146200073057600080fd5b8063ad66a5f111620000e2578063ad66a5f114620005fd578063b046223b1462000641578063b172b2221462000666578063b96c7e4d146200067d57600080fd5b8063a5799f931462000584578063aa4efa5b14620005a9578063ad5c464814620005dd57600080fd5b80632c3c02a4116200018d5780638129fc1c11620001585780638129fc1c146200050b57806384acd1bb14620005235780639981509f14620005435780639a8a0592146200055a57600080fd5b80632c3c02a4146200046b5780632f3a3d5d146200049f5780635c60da1b14620004bf5780635f85426614620004d757600080fd5b80631a2be4da11620001ce5780631a2be4da146200032f5780631ff1e286146200037d5780632539464514620003bb5780632b51137514620003e257600080fd5b806301f53255146200020457806307dfd8fb14620002825780630f5287b014620002fe57600080fd5b36620001ff57005b600080fd5b3480156200021157600080fd5b50620002296200022336600462003e7d565b62000820565b604051620002799190600060a0820190508251825260ff6020840151166020830152604083015161ffff808216604085015280606086015116606085015250506080830151608083015292915050565b60405180910390f35b3480156200028f57600080fd5b50620002a7620002a136600462003e7d565b62000a78565b604051620002799190600060c08201905060ff83511682526020830151602083015261ffff604084015116604083015260ff60608401511660608301526080830151608083015260a083015160a083015292915050565b620003156200030f36600462003d88565b62000c1f565b60405167ffffffffffffffff909116815260200162000279565b3480156200033c57600080fd5b506200036c6200034e36600462003d6b565b6001600160a01b031660009081526009602052604090205460ff1690565b604051901515815260200162000279565b3480156200038a57600080fd5b50620003a26200039c3660046200421e565b620010dd565b6040516001600160a01b03909116815260200162000279565b348015620003c857600080fd5b50620003e0620003da36600462003e7d565b6200110c565b005b348015620003ef57600080fd5b50620004076200040136600462003e7d565b620011ff565b604051620002799190600060e08201905060ff83511682526020830151602083015260408301516040830152606083015161ffff8082166060850152608085015160808501528060a08601511660a0850152505060c083015160c083015292915050565b3480156200047857600080fd5b506200036c6200048a36600462003e4b565b60009081526005602052604090205460ff1690565b348015620004ac57600080fd5b506001546001600160a01b0316620003a2565b348015620004cc57600080fd5b50620003a2620013ce565b348015620004e457600080fd5b50620004fc620004f636600462003fca565b620013e8565b60405162000279919062004379565b3480156200051857600080fd5b50620003e0620014ad565b3480156200053057600080fd5b506000546001600160a01b0316620003a2565b62000315620005543660046200424c565b62001581565b3480156200056757600080fd5b5060025461ffff165b60405161ffff909116815260200162000279565b3480156200059157600080fd5b50620003e0620005a336600462003e7d565b6200183b565b348015620005b657600080fd5b506200036c620005c836600462003e4b565b60009081526006602052604090205460ff1690565b348015620005ea57600080fd5b506004546001600160a01b0316620003a2565b3480156200060a57600080fd5b50620006326200061c366004620041e0565b61ffff166000908152600b602052604090205490565b60405190815260200162000279565b3480156200064e57600080fd5b50620004fc6200066036600462003f2f565b620019b5565b3480156200067357600080fd5b5060035462000632565b3480156200068a57600080fd5b50620006326200069c36600462003d6b565b6001600160a01b03166000908152600a602052604090205490565b62000315620006c836600462003df3565b62001a5e565b348015620006db57600080fd5b50620003e0620006ed36600462003e7d565b62001d90565b3480156200070057600080fd5b506200036c6200071236600462003d6b565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156200073d57600080fd5b50620003a26200074f36600462003e7d565b62001d9d565b3480156200076257600080fd5b50620003a26200077436600462003e7d565b62001edd565b3480156200078757600080fd5b5060025462010000900461ffff1662000570565b348015620007a857600080fd5b50620007c0620007ba36600462003e7d565b62002013565b6040516200027991908151815260208083015160ff169082015260408083015161ffff16908201526060918201519181019190915260800190565b3480156200080857600080fd5b50620003e06200081a36600462003e7d565b62002236565b6040805160a08101825260008082526020820181905291810182905260608101829052608081018290529062000857838262002243565b82526200086660208262004526565b82519091506a546f6b656e42726964676514620008f05760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e67206d6f6460448201527f756c65000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b620008fc8382620022ad565b60ff1660208301526200091160018262004526565b9050816020015160ff16600114620009925760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e672061637460448201527f696f6e00000000000000000000000000000000000000000000000000000000006064820152608401620008e7565b6200099e838262002317565b61ffff166040830152620009b460028262004526565b9050620009c2838262002317565b61ffff166060830152620009d860028262004526565b9050620009e6838262002243565b6080830152620009f860208262004526565b90508083511462000a725760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e67206c656e60448201527f67746800000000000000000000000000000000000000000000000000000000006064820152608401620008e7565b50919050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529062000ab68382620022ad565b60ff16825262000ac860018262004526565b9050816000015160ff1660021462000b235760405162461bcd60e51b815260206004820152601160248201527f696e76616c69642041737365744d6574610000000000000000000000000000006044820152606401620008e7565b62000b2f838262002243565b60208084019190915262000b44908262004526565b905062000b52838262002317565b61ffff16604083015262000b6860028262004526565b905062000b768382620022ad565b60ff16606083015262000b8b60018262004526565b905062000b99838262002243565b608083015262000bab60208262004526565b905062000bb9838262002243565b60a083015262000bcb60208262004526565b90508083511462000a725760405162461bcd60e51b815260206004820152601160248201527f696e76616c69642041737365744d6574610000000000000000000000000000006044820152606401620008e7565b600080600062000c47896001600160a01b031660009081526009602052604090205460ff1690565b1562000d4157886001600160a01b0316639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b15801562000c8757600080fd5b505afa15801562000c9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cc29190620041ff565b9150886001600160a01b0316633d6c043b6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000cfe57600080fd5b505afa15801562000d13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d39919062003e64565b905062000d55565b505060025461ffff166001600160a01b0388165b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b038c169162000d99919062004304565b600060405180830381855afa9150503d806000811462000dd6576040519150601f19603f3d011682016040523d82523d6000602084013e62000ddb565b606091505b5091505060008180602001905181019062000df79190620042b7565b905062000e1062000e098b8362002381565b82620023c0565b995062000e2060025461ffff1690565b61ffff168461ffff16141562000fe657604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17905290516000916001600160a01b038e169162000e85919062004304565b600060405180830381855afa9150503d806000811462000ec2576040519150601f19603f3d011682016040523d82523d6000602084013e62000ec7565b606091505b5091505060008180602001905181019062000ee3919062003e64565b905062000ef38d33308f620023f5565b6040513060248201526000906001600160a01b038f16906370a0823160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905162000f6e919062004304565b600060405180830381855afa9150503d806000811462000fab576040519150601f19603f3d011682016040523d82523d6000602084013e62000fb0565b606091505b5091505060008180602001905181019062000fcc919062003e64565b905062000fda83826200468c565b9d505050505062001070565b62000ff48b33308d620023f5565b6040517f9dc29fac000000000000000000000000000000000000000000000000000000008152306004820152602481018b90526001600160a01b038c1690639dc29fac90604401600060405180830381600087803b1580156200105657600080fd5b505af11580156200106b573d6000803e3d6000fd5b505050505b60006200107e8b8362002381565b905060006200108e898462002381565b90506200109e60025461ffff1690565b61ffff168661ffff161415620010ba57620010ba8d8362002499565b620010cc8686848e8e86348f6200256f565b9d9c50505050505050505050505050565b61ffff821660009081526008602090815260408083208484529091529020546001600160a01b03165b92915050565b60008060006200111c84620026b8565b925092509250818190620011455760405162461bcd60e51b8152600401620008e7919062004379565b506200116b8361014001516000908152600560205260409020805460ff19166001179055565b60006200117c8460e0015162002013565b90506200118c60025461ffff1690565b61ffff16816040015161ffff1614620011e85760405162461bcd60e51b815260206004820152600e60248201527f77726f6e6720636861696e2069640000000000000000000000000000000000006044820152606401620008e7565b6060810151620011f890620028ee565b5050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905290620012448382620022ad565b60ff1682526200125660018262004526565b9050816000015160ff16600114620012b15760405162461bcd60e51b815260206004820152601060248201527f696e76616c6964205472616e73666572000000000000000000000000000000006044820152606401620008e7565b620012bd838262002a3e565b602080840191909152620012d2908262004526565b9050620012e0838262002243565b6040830152620012f260208262004526565b905062001300838262002317565b61ffff1660608301526200131660028262004526565b905062001324838262002243565b60808301526200133660208262004526565b905062001344838262002317565b61ffff1660a08301526200135a60028262004526565b905062001368838262002a3e565b60c08301526200137a60208262004526565b90508083511462000a725760405162461bcd60e51b815260206004820152601060248201527f696e76616c6964205472616e73666572000000000000000000000000000000006044820152606401620008e7565b6000620013e36001546001600160a01b031690565b905090565b8051602080830151604080850151606080870151608088015160a089015160c08a0151955160f89990991b7fff0000000000000000000000000000000000000000000000000000000000000016978901979097526021880195909552604187019290925260f091821b7fffff0000000000000000000000000000000000000000000000000000000000009081166061880152606387019490945293901b909116608384015260858301529060a5015b6040516020818303038152906040529050919050565b6000620014e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905062001506816001600160a01b031660009081526007602052604090205460ff1690565b15620015555760405162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a6564000000000000000000000000006044820152606401620008e7565b6200157e816001600160a01b03166000908152600760205260409020805460ff19166001179055565b50565b600080620015976000546001600160a01b031690565b6001600160a01b0316631a90a2196040518163ffffffff1660e01b815260040160206040518083038186803b158015620015d057600080fd5b505afa158015620015e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200160b919062003e64565b9050348110620016845760405162461bcd60e51b815260206004820152602260248201527f76616c756520697320736d616c6c6572207468616e20776f726d686f6c65206660448201527f65650000000000000000000000000000000000000000000000000000000000006064820152608401620008e7565b60006200169282346200468c565b9050808511156200170c5760405162461bcd60e51b815260206004820152602c60248201527f66656520697320626967676572207468616e20616d6f756e74206d696e75732060448201527f776f726d686f6c652066656500000000000000000000000000000000000000006064820152608401620008e7565b60006200171b82601262002381565b905060006200172c87601262002381565b905060006200173d836012620023c0565b6200174990856200468c565b905080156200178257604051339082156108fc029083906000818181858888f1935050505015801562001780573d6000803e3d6000fd5b505b6004546001600160a01b031663d0e30db06200179f83876200468c565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015620017cb57600080fd5b505af1158015620017e0573d6000803e3d6000fd5b505050505062001803620017fc6004546001600160a01b031690565b8462002499565b6200182d6200181560025461ffff1690565b6004546001600160a01b0316858d8d878b8e6200256f565b9a9950505050505050505050565b60008060006200184b84620026b8565b925092509250818190620018745760405162461bcd60e51b8152600401620008e7919062004379565b506200189a8361014001516000908152600560205260409020805460ff19166001179055565b6000620018ab8460e0015162000820565b9050620018bb60025461ffff1690565b61ffff16816040015161ffff161480620018db5750604081015161ffff16155b620019295760405162461bcd60e51b815260206004820152601060248201527f696e76616c696420636861696e206964000000000000000000000000000000006044820152606401620008e7565b606081015161ffff166000908152600b602052604081205414620019905760405162461bcd60e51b815260206004820152601860248201527f636861696e20616c7265616479207265676973746572656400000000000000006044820152606401620008e7565b620011f88160600151826080015161ffff9091166000908152600b6020526040902055565b8051602080830151604080850151606080870151608088015160a0890151945160f898891b7fff0000000000000000000000000000000000000000000000000000000000000090811698820198909852602181019690965260f09390931b7fffff00000000000000000000000000000000000000000000000000000000000016604186015290951b90931660438301526044820192909252606481019190915260840162001497565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b0386169162001aa39162004304565b600060405180830381855afa9150503d806000811462001ae0576040519150601f19603f3d011682016040523d82523d6000602084013e62001ae5565b606091505b5060408051600481526024810182526020810180516001600160e01b03167f95d89b41000000000000000000000000000000000000000000000000000000001790529051919350600092506001600160a01b0387169162001b47919062004304565b600060405180830381855afa9150503d806000811462001b84576040519150601f19603f3d011682016040523d82523d6000602084013e62001b89565b606091505b5060408051600481526024810182526020810180516001600160e01b03167f06fdde03000000000000000000000000000000000000000000000000000000001790529051919350600092506001600160a01b0388169162001beb919062004304565b600060405180830381855afa9150503d806000811462001c28576040519150601f19603f3d011682016040523d82523d6000602084013e62001c2d565b606091505b5091505060008380602001905181019062001c499190620042b7565b905060008380602001905181019062001c63919062003ef8565b905060008380602001905181019062001c7d919062003ef8565b9050600080602084015191506020830151905060006040518060c00160405280600260ff1681526020018d6001600160a01b031660001b815260200162001cc760025461ffff1690565b61ffff1681526020018760ff168152602001848152602001838152509050600062001cf282620019b5565b905062001d076000546001600160a01b031690565b6001600160a01b031663b19a437e348e84600f6040518563ffffffff1660e01b815260040162001d3a9392919062004440565b6020604051808303818588803b15801562001d5457600080fd5b505af115801562001d69573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620010cc91906200429a565b6200157e81600062002a9f565b60008060008062001db66000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001de3919062004379565b60006040518083038186803b15801562001dfc57600080fd5b505afa15801562001e11573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e3b919081019062004070565b92509250925081819062001e645760405162461bcd60e51b8152600401620008e7919062004379565b5062001e7083620031f1565b62001eb05760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21032b6b4ba3a32b960891b6044820152606401620008e7565b600062001ec18460e0015162000a78565b905062001ed3818560a001516200322e565b9695505050505050565b60008060008062001ef66000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001f23919062004379565b60006040518083038186803b15801562001f3c57600080fd5b505afa15801562001f51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f7b919081019062004070565b92509250925081819062001fa45760405162461bcd60e51b8152600401620008e7919062004379565b5062001fb083620031f1565b62001ff05760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21032b6b4ba3a32b960891b6044820152606401620008e7565b6000620020018460e0015162000a78565b905062001ed3818560a0015162003531565b60408051608081018252600080825260208201819052918101829052606081018290529062002043838262002243565b82526200205260208262004526565b82519091506a546f6b656e42726964676514620020d85760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206d60448201527f6f64756c650000000000000000000000000000000000000000000000000000006064820152608401620008e7565b620020e48382620022ad565b60ff166020830152620020f960018262004526565b9050816020015160ff166002146200217a5760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206160448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152608401620008e7565b62002186838262002317565b61ffff1660408301526200219c60028262004526565b9050620021aa838262002243565b6060830152620021bc60208262004526565b90508083511462000a725760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152608401620008e7565b6200157e81600162002a9f565b60006200225282602062004526565b83511015620022a45760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401620008e7565b50016020015190565b6000620022bc82600162004526565b835110156200230e5760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401620008e7565b50016001015190565b60006200232682600262004526565b83511015620023785760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401620008e7565b50016002015190565b600060088260ff161115620023b9576200239d600883620046a6565b620023aa90600a620045ab565b620023b6908462004541565b92505b5090919050565b600060088260ff161115620023b957620023dc600883620046a6565b620023e990600a620045ab565b620023b690846200466a565b6040516001600160a01b0380851660248301528316604482015260648101829052620024939085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200362c565b50505050565b6001600160a01b0382166000908152600a602052604090205467ffffffffffffffff620024c7838362004526565b11156200253d5760405162461bcd60e51b815260206004820152603560248201527f7472616e736665722065786365656473206d6178206f75747374616e64696e6760448201527f206272696467656420746f6b656e20616d6f756e7400000000000000000000006064820152608401620008e7565b6200256a836200254e848462004526565b6001600160a01b039091166000908152600a6020526040902055565b505050565b600086841115620025c35760405162461bcd60e51b815260206004820152601260248201527f666565206578636565647320616d6f756e7400000000000000000000000000006044820152606401620008e7565b6040805160e081018252600181526020810189905290810189905261ffff808b16606083015260808201879052871660a082015260c0810185905260006200260b82620013e8565b9050620026206000546001600160a01b031690565b6001600160a01b031663b19a437e868684600f6040518563ffffffff1660e01b8152600401620026539392919062004440565b6020604051808303818588803b1580156200266d57600080fd5b505af115801562002682573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620026a991906200429a565b9b9a5050505050505050505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820181905261010082018390526101208201526101408101919091526000606060008060006200272c6000546001600160a01b031690565b6001600160a01b031663c0fd8bde886040518263ffffffff1660e01b815260040162002759919062004379565b60006040518083038186803b1580156200277257600080fd5b505afa15801562002787573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620027b1919081019062004070565b92509250925081620027ca5791945092509050620028e7565b60025462010000900461ffff1661ffff16836060015161ffff16146200282f57505060408051808201909152601681527f77726f6e6720676f7665726e616e636520636861696e000000000000000000006020820152909350600092509050620028e7565b6003548360800151146200288257505060408051808201909152601981527f77726f6e6720676f7665726e616e636520636f6e7472616374000000000000006020820152909350600092509050620028e7565b61014083015160009081526005602052604090205460ff1615620028cc57826000604051806060016040528060228152602001620051ab60229139955095509550505050620028e7565b50506040805160208101909152600081529093506001925090505b9193909250565b6000620029227f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b90506200292f8262003718565b60408051600481526024810182526020810180516001600160e01b03167f8129fc1c00000000000000000000000000000000000000000000000000000000179052905160009182916001600160a01b038616916200298d9162004304565b600060405180830381855af49150503d8060008114620029ca576040519150601f19603f3d011682016040523d82523d6000602084013e620029cf565b606091505b5091509150818190620029f75760405162461bcd60e51b8152600401620008e7919062004379565b50836001600160a01b0316836001600160a01b03167f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4960405160405180910390a350505050565b600062002a4d82602062004526565b83511015620022a45760405162461bcd60e51b815260206004820152601560248201527f746f55696e743235365f6f75744f66426f756e647300000000000000000000006044820152606401620008e7565b600080600062002ab76000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162002ae4919062004379565b60006040518083038186803b15801562002afd57600080fd5b505afa15801562002b12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b3c919081019062004070565b92509250925081819062002b655760405162461bcd60e51b8152600401620008e7919062004379565b5062002b7183620031f1565b62002bb15760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21032b6b4ba3a32b960891b6044820152606401620008e7565b600062002bc28460e00151620011ff565b905062002be384610140015160009081526006602052604090205460ff1690565b1562002c325760405162461bcd60e51b815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c657465640000000000006044820152606401620008e7565b62002c578461014001516000908152600660205260409020805460ff19166001179055565b60025461ffff1661ffff168160a0015161ffff161462002cba5760405162461bcd60e51b815260206004820152601460248201527f696e76616c69642074617267657420636861696e0000000000000000000000006044820152606401620008e7565b600062002cca60025461ffff1690565b61ffff16826060015161ffff16141562002cfc57506040810151602082015162002cf69082906200375a565b62002d95565b600062002d1283606001518460400151620010dd565b90506001600160a01b03811662002d925760405162461bcd60e51b815260206004820152602560248201527f6e6f207772617070657220666f72207468697320746f6b656e2063726561746560448201527f64207965740000000000000000000000000000000000000000000000000000006064820152608401620008e7565b90505b85158062002db057506004546001600160a01b038281169116145b62002e245760405162461bcd60e51b815260206004820152602360248201527f696e76616c696420746f6b656e2c2063616e206f6e6c7920756e77726170205760448201527f45544800000000000000000000000000000000000000000000000000000000006064820152608401620008e7565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b0384169162002e68919062004304565b600060405180830381855afa9150503d806000811462002ea5576040519150601f19603f3d011682016040523d82523d6000602084013e62002eaa565b606091505b5091505060008180602001905181019062002ec69190620042b7565b9050600062002eda856020015183620023c0565b9050600062002eee8660c0015184620023c0565b9050801562003098578181111562002f6f5760405162461bcd60e51b815260206004820152602260248201527f66656520686967686572207468616e207472616e7366657272656420616d6f7560448201527f6e740000000000000000000000000000000000000000000000000000000000006064820152608401620008e7565b8915620030095760048054604051632e1a7d4d60e01b81529182018390526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801562002fbb57600080fd5b505af115801562002fd0573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801562003002573d6000803e3d6000fd5b5062003098565b60025461ffff1661ffff16866060015161ffff16146200308b576040516340c10f1960e01b8152336004820152602481018290526001600160a01b038616906340c10f1990604401600060405180830381600087803b1580156200306c57600080fd5b505af115801562003081573d6000803e3d6000fd5b5050505062003098565b6200309885338362003790565b6000620030a682846200468c565b60808801519091508b15620031515760048054604051632e1a7d4d60e01b81529182018490526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015620030fa57600080fd5b505af11580156200310f573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f193505050501580156200314a573d6000803e3d6000fd5b50620031e2565b60025461ffff1661ffff16886060015161ffff1614620031d5576040516340c10f1960e01b81526001600160a01b038281166004830152602482018490528816906340c10f1990604401600060405180830381600087803b158015620031b657600080fd5b505af1158015620031cb573d6000803e3d6000fd5b50505050620031e2565b620031e287828462003790565b50505050505050505050505050565b6000816080015162003217836060015161ffff166000908152600b602052604090205490565b14156200322657506001919050565b506000919050565b60006200323e60025461ffff1690565b61ffff16836040015161ffff161415620032c15760405162461bcd60e51b815260206004820152602860248201527f63616e206f6e6c79207772617020746f6b656e732066726f6d20666f7265696760448201527f6e20636861696e730000000000000000000000000000000000000000000000006064820152608401620008e7565b60006001600160a01b0316620032e084604001518560200151620010dd565b6001600160a01b031614620033385760405162461bcd60e51b815260206004820152601c60248201527f7772617070656420617373657420616c726561647920657869737473000000006044820152606401620008e7565b600063c71f461560e01b620033518560a00151620037db565b620033608660800151620037db565b8660600151863089604001518a60200151604051602401620033899796959493929190620043d2565b60408051601f19818403018152918152602080830180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251909250600091620033eb91309185910162004355565b6040516020818303038152906040529050600060405180602001620034109062003bad565b601f1982820381018352601f909101166040819052620034369190849060200162004322565b60405160208183030381529060405290506000866040015187602001516040516020016200349592919060f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b604051602081830303815290604052805190602001209050808251602084016000f59450843b620034c557600080fd5b6040808801516020808a015161ffff909216600090815260088252838120928152918152828220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038a1690811790915582526009905220805460ff191660011790555050505092915050565b6000806200354884604001518560200151620010dd565b90506001600160a01b038116620035a25760405162461bcd60e51b815260206004820152601d60248201527f7772617070656420617373657420646f6573206e6f74206578697374730000006044820152606401620008e7565b806001600160a01b031663a18cd7c6620035c08660a00151620037db565b620035cf8760800151620037db565b866040518463ffffffff1660e01b8152600401620035f0939291906200438e565b600060405180830381600087803b1580156200360b57600080fd5b505af115801562003620573d6000803e3d6000fd5b50929695505050505050565b600062003683826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620039479092919063ffffffff16565b8051909150156200256a5780806020019051810190620036a4919062003e2e565b6200256a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620008e7565b620037238162003962565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6200378c828262003780856001600160a01b03166000908152600a602052604090205490565b6200254e91906200468c565b5050565b6040516001600160a01b0383166024820152604481018290526200256a9084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002443565b606060005b6020811080156200383657508281602081106200380d57634e487b7160e01b600052603260045260246000fd5b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b156200385157806200384881620046fb565b915050620037e0565b60008167ffffffffffffffff8111156200387b57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015620038a6576020820181803683370190505b50905060005b828110156200393f57848160208110620038d657634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110620038fb57634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806200393681620046fb565b915050620038ac565b509392505050565b606062003958848460008562003a26565b90505b9392505050565b803b620039d85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401620008e7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60608247101562003aa05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401620008e7565b843b62003af05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620008e7565b600080866001600160a01b0316858760405162003b0e919062004304565b60006040518083038185875af1925050503d806000811462003b4d576040519150601f19603f3d011682016040523d82523d6000602084013e62003b52565b606091505b509150915062003b6482828662003b6f565b979650505050505050565b6060831562003b805750816200395b565b82511562003b915782518084602001fd5b8160405162461bcd60e51b8152600401620008e7919062004379565b610a31806200477a83390190565b80356001600160a01b038116811462003bd357600080fd5b919050565b600082601f83011262003be9578081fd5b8151602067ffffffffffffffff82111562003c085762003c086200472f565b62003c18818360051b01620044c7565b80838252828201915082860187848660071b890101111562003c38578586fd5b855b8581101562003ca857608080838b03121562003c54578788fd5b62003c5e62004474565b83518152868401518782015260408085015162003c7b8162004769565b9082015260608481015162003c908162004769565b90820152855293850193919091019060010162003c3a565b5090979650505050505050565b8051801515811462003bd357600080fd5b600082601f83011262003cd7578081fd5b815162003cee62003ce882620044fb565b620044c7565b81815284602083860101111562003d03578283fd5b62003d16826020830160208701620046cc565b949350505050565b803562003bd38162004745565b805162003bd38162004745565b805162003bd38162004756565b805167ffffffffffffffff8116811462003bd357600080fd5b805162003bd38162004769565b60006020828403121562003d7d578081fd5b6200395b8262003bbb565b60008060008060008060c0878903121562003da1578182fd5b62003dac8762003bbb565b955060208701359450604087013562003dc58162004745565b9350606087013592506080870135915060a087013562003de58162004756565b809150509295509295509295565b6000806040838503121562003e06578182fd5b62003e118362003bbb565b9150602083013562003e238162004756565b809150509250929050565b60006020828403121562003e40578081fd5b6200395b8262003cb5565b60006020828403121562003e5d578081fd5b5035919050565b60006020828403121562003e76578081fd5b5051919050565b60006020828403121562003e8f578081fd5b813567ffffffffffffffff81111562003ea6578182fd5b8201601f8101841362003eb7578182fd5b803562003ec862003ce882620044fb565b81815285602083850101111562003edd578384fd5b81602084016020830137908101602001929092525092915050565b60006020828403121562003f0a578081fd5b815167ffffffffffffffff81111562003f21578182fd5b62003d168482850162003cc6565b600060c0828403121562003f41578081fd5b60405160c0810181811067ffffffffffffffff8211171562003f675762003f676200472f565b604052823562003f778162004769565b815260208381013590820152604083013562003f938162004745565b6040820152606083013562003fa88162004769565b60608201526080838101359082015260a0928301359281019290925250919050565b600060e0828403121562003fdc578081fd5b60405160e0810181811067ffffffffffffffff821117156200400257620040026200472f565b6040528235620040128162004769565b80825250602083013560208201526040830135604082015260608301356200403a8162004745565b6060820152608083810135908201526200405760a0840162003d1e565b60a082015260c083013560c08201528091505092915050565b60008060006060848603121562004085578081fd5b835167ffffffffffffffff808211156200409d578283fd5b908501906101608288031215620040b2578283fd5b620040bc620044a0565b620040c78362003d5e565b8152620040d76020840162003d38565b6020820152620040ea6040840162003d38565b6040820152620040fd6060840162003d2b565b6060820152608083015160808201526200411a60a0840162003d45565b60a08201526200412d60c0840162003d5e565b60c082015260e08301518281111562004144578485fd5b620041528982860162003cc6565b60e0830152506101006200416881850162003d38565b90820152610120838101518381111562004180578586fd5b6200418e8a82870162003bd8565b918301919091525061014083810151908201529450620041b16020870162003cb5565b93506040860151915080821115620041c7578283fd5b50620041d68682870162003cc6565b9150509250925092565b600060208284031215620041f2578081fd5b81356200395b8162004745565b60006020828403121562004211578081fd5b81516200395b8162004745565b6000806040838503121562004231578182fd5b82356200423e8162004745565b946020939093013593505050565b6000806000806080858703121562004262578182fd5b84356200426f8162004745565b9350602085013592506040850135915060608501356200428f8162004756565b939692955090935050565b600060208284031215620042ac578081fd5b6200395b8262003d45565b600060208284031215620042c9578081fd5b81516200395b8162004769565b60008151808452620042f0816020860160208601620046cc565b601f01601f19169290920160200192915050565b6000825162004318818460208701620046cc565b9190910192915050565b6000835162004336818460208801620046cc565b8351908301906200434c818360208801620046cc565b01949350505050565b6001600160a01b0383168152604060208201526000620039586040830184620042d6565b6020815260006200395b6020830184620042d6565b606081526000620043a36060830186620042d6565b8281036020840152620043b78186620042d6565b91505067ffffffffffffffff83166040830152949350505050565b60e081526000620043e760e083018a620042d6565b8281036020840152620043fb818a620042d6565b60ff989098166040840152505067ffffffffffffffff9490941660608501526001600160a01b0392909216608084015261ffff1660a083015260c09091015292915050565b63ffffffff84168152606060208201526000620044616060830185620042d6565b905060ff83166040830152949350505050565b6040516080810167ffffffffffffffff811182821017156200449a576200449a6200472f565b60405290565b604051610160810167ffffffffffffffff811182821017156200449a576200449a6200472f565b604051601f8201601f1916810167ffffffffffffffff81118282101715620044f357620044f36200472f565b604052919050565b600067ffffffffffffffff8211156200451857620045186200472f565b50601f01601f191660200190565b600082198211156200453c576200453c62004719565b500190565b6000826200455d57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620045a357816000190482111562004587576200458762004719565b808516156200459557918102915b93841c939080029062004567565b509250929050565b60006200395b60ff841683600082620045c75750600162001106565b81620045d65750600062001106565b8160018114620045ef5760028114620045fa576200461a565b600191505062001106565b60ff8411156200460e576200460e62004719565b50506001821b62001106565b5060208310610133831016604e8410600b84101617156200463f575081810a62001106565b6200464b838362004562565b806000190482111562004662576200466262004719565b029392505050565b600081600019048311821515161562004687576200468762004719565b500290565b600082821015620046a157620046a162004719565b500390565b600060ff821660ff841680821015620046c357620046c362004719565b90039392505050565b60005b83811015620046e9578181015183820152602001620046cf565b83811115620024935750506000910152565b600060001982141562004712576200471262004719565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff811681146200157e57600080fd5b63ffffffff811681146200157e57600080fd5b60ff811681146200157e57600080fdfe60806040523480156200001157600080fd5b5060405162000a3138038062000a318339810160408190526200003491620004ca565b81816200006360017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51620005e7565b600080516020620009ea833981519152146200008f57634e487b7160e01b600052600160045260246000fd5b6200009d82826000620000a7565b5050505062000650565b620000b2836200018c565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a2600082511180620000f45750805b15620001875762000185836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013857600080fd5b505afa1580156200014d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001739190620004ad565b836200033d60201b620000291760201c565b505b505050565b620001a2816200036c60201b620000551760201c565b620002025760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6200028c816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024057600080fd5b505afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b9190620004ad565b6200036c60201b620000551760201c565b620002f35760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401620001f9565b806200031c600080516020620009ea83398151915260001b6200037260201b6200005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606062000365838360405180606001604052806027815260200162000a0a6027913962000375565b9392505050565b3b151590565b90565b6060833b620003d65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f9565b600080856001600160a01b031685604051620003f3919062000594565b600060405180830381855af49150503d806000811462000430576040519150601f19603f3d011682016040523d82523d6000602084013e62000435565b606091505b5090925090506200044882828662000452565b9695505050505050565b606083156200046357508162000365565b825115620004745782518084602001fd5b8160405162461bcd60e51b8152600401620001f99190620005b2565b80516001600160a01b0381168114620004a857600080fd5b919050565b600060208284031215620004bf578081fd5b620003658262000490565b60008060408385031215620004dd578081fd5b620004e88362000490565b60208401519092506001600160401b038082111562000505578283fd5b818501915085601f83011262000519578283fd5b8151818111156200052e576200052e6200063a565b604051601f8201601f19908116603f011681019083821181831017156200055957620005596200063a565b8160405282815288602084870101111562000572578586fd5b620005858360208301602088016200060b565b80955050505050509250929050565b60008251620005a88184602087016200060b565b9190910192915050565b6020815260008251806020840152620005d38160408501602087016200060b565b601f01601f19169190910160400192915050565b6000828210156200060657634e487b7160e01b81526011600452602481fd5b500390565b60005b83811015620006285781810151838201526020016200060e565b83811115620001855750506000910152565b634e487b7160e01b600052604160045260246000fd5b61038a80620006606000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610120565b565b606061004e838360405180606001604052806027815260200161032e60279139610144565b9392505050565b3b151590565b90565b600061009e7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e357600080fd5b505afa1580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b919061027a565b905090565b3660008037600080366000845af43d6000803e80801561013f573d6000f35b3d6000fd5b6060833b6101bf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516101e791906102ae565b600060405180830381855af49150503d8060008114610222576040519150601f19603f3d011682016040523d82523d6000602084013e610227565b606091505b5091509150610237828286610241565b9695505050505050565b6060831561025057508161004e565b8251156102605782518084602001fd5b8160405162461bcd60e51b81526004016101b691906102ca565b60006020828403121561028b578081fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461004e578182fd5b600082516102c08184602087016102fd565b9190910192915050565b60208152600082518060208401526102e98160408501602087016102fd565b601f01601f19169190910160400192915050565b60005b83811015610318578181015183820152602001610300565b83811115610327576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220023fb812aee356ef775e058780e58e0f0e320743ef57a43f3069e9559fd8a41f64736f6c63430008040033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d6564a264697066735822122027ad6e4310eb75410d9ddc5e90abbc8ec9033c4356d7ca7f21c504082f5bfb3a64736f6c63430008040033