0 txs
0 calls
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)
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
0x608060405234801561001057600080fd5b50614ac6806100206000396000f3fe608060405260043610620001eb5760003560e01c8063a5799f93116200010b578063c48fa11511620000a1578063f768441f116200006c578063f768441f1462000730578063fbe3c2cd1462000755578063fbeeacd91462000776578063ff200cde14620007d657600080fd5b8063c48fa1151462000692578063c687851914620006a9578063d60b347f14620006ce578063e8059810146200070b57600080fd5b8063ad66a5f111620000e2578063ad66a5f114620005d8578063b046223b146200061c578063b172b2221462000641578063b96c7e4d146200065857600080fd5b8063a5799f93146200055f578063aa4efa5b1462000584578063ad5c464814620005b857600080fd5b80632c3c02a411620001815780635f85426611620001585780635f85426614620004ca57806384acd1bb14620004fe5780639981509f146200051e5780639a8a0592146200053557600080fd5b80632c3c02a4146200045e5780632f3a3d5d14620004925780635c60da1b14620004b257600080fd5b80631a2be4da11620001c25780631a2be4da14620003225780631ff1e28614620003705780632539464514620003ae5780632b51137514620003d557600080fd5b806301f5325514620001f857806307dfd8fb14620002765780630f5287b014620002f257600080fd5b36620001f357005b600080fd5b3480156200020557600080fd5b506200021d62000217366004620037bf565b620007fb565b6040516200026d9190600060a0820190508251825260ff6020840151166020830152604083015161ffff808216604085015280606086015116606085015250506080830151608083015292915050565b60405180910390f35b3480156200028357600080fd5b506200029b62000295366004620037bf565b62000a05565b6040516200026d9190600060c08201905060ff83511682526020830151602083015261ffff604084015116604083015260ff60608401511660608301526080830151608083015260a083015160a083015292915050565b6200030962000303366004620036ca565b62000b94565b6040516001600160401b0390911681526020016200026d565b3480156200032f57600080fd5b506200035f62000341366004620036ad565b6001600160a01b031660009081526009602052604090205460ff1690565b60405190151581526020016200026d565b3480156200037d57600080fd5b50620003956200038f36600462003b5b565b62000e8d565b6040516001600160a01b0390911681526020016200026d565b348015620003bb57600080fd5b50620003d3620003cd366004620037bf565b62000ebc565b005b348015620003e257600080fd5b50620003fa620003f4366004620037bf565b62000fa0565b6040516200026d9190600060e08201905060ff83511682526020830151602083015260408301516040830152606083015161ffff8082166060850152608085015160808501528060a08601511660a0850152505060c083015160c083015292915050565b3480156200046b57600080fd5b506200035f6200047d3660046200378d565b60009081526005602052604090205460ff1690565b3480156200049f57600080fd5b506001546001600160a01b031662000395565b348015620004bf57600080fd5b506200039562001155565b348015620004d757600080fd5b50620004ef620004e936600462003909565b6200116f565b6040516200026d919062003cb8565b3480156200050b57600080fd5b506000546001600160a01b031662000395565b620003096200052f36600462003b89565b62001204565b3480156200054257600080fd5b5060025461ffff165b60405161ffff90911681526020016200026d565b3480156200056c57600080fd5b50620003d36200057e366004620037bf565b6200149e565b3480156200059157600080fd5b506200035f620005a33660046200378d565b60009081526006602052604090205460ff1690565b348015620005c557600080fd5b506004546001600160a01b031662000395565b348015620005e557600080fd5b506200060d620005f736600462003b1d565b61ffff166000908152600b602052604090205490565b6040519081526020016200026d565b3480156200062957600080fd5b50620004ef6200063b3660046200386f565b6200160b565b3480156200064e57600080fd5b506003546200060d565b3480156200066557600080fd5b506200060d62000677366004620036ad565b6001600160a01b03166000908152600a602052604090205490565b62000309620006a336600462003735565b62001684565b348015620006b657600080fd5b50620003d3620006c8366004620037bf565b62001984565b348015620006db57600080fd5b506200035f620006ed366004620036ad565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156200071857600080fd5b50620003956200072a366004620037bf565b62001994565b3480156200073d57600080fd5b50620003956200074f366004620037bf565b62001ab3565b3480156200076257600080fd5b5060025462010000900461ffff166200054b565b3480156200078357600080fd5b506200079b62000795366004620037bf565b62001bc8565b6040516200026d91908151815260208083015160ff169082015260408083015161ffff16908201526060918201519181019190915260800190565b348015620007e357600080fd5b50620003d3620007f5366004620037bf565b62001da3565b6040805160a08101825260008082526020820181905291810182905260608101829052608081018290529062000832838262001db0565b82526200084160208262003e88565b82519091506a546f6b656e42726964676514620008b15760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e67206d6f64604482015262756c6560e81b60648201526084015b60405180910390fd5b620008bd838262001e12565b60ff166020830152620008d260018262003e88565b9050816020015160ff16600114620009395760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e672061637460448201526234b7b760e91b6064820152608401620008a8565b62000945838262001e72565b61ffff1660408301526200095b60028262003e88565b905062000969838262001e72565b61ffff1660608301526200097f60028262003e88565b90506200098d838262001db0565b60808301526200099f60208262003e88565b905080835114620009ff5760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e67206c656e6044820152620cee8d60eb1b6064820152608401620008a8565b50919050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529062000a43838262001e12565b60ff16825262000a5560018262003e88565b9050816000015160ff1660021462000aa45760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642041737365744d65746160781b6044820152606401620008a8565b62000ab0838262001db0565b60208084019190915262000ac5908262003e88565b905062000ad3838262001e72565b61ffff16604083015262000ae960028262003e88565b905062000af7838262001e12565b60ff16606083015262000b0c60018262003e88565b905062000b1a838262001db0565b608083015262000b2c60208262003e88565b905062000b3a838262001db0565b60a083015262000b4c60208262003e88565b905080835114620009ff5760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642041737365744d65746160781b6044820152606401620008a8565b600080600062000bbc896001600160a01b031660009081526009602052604090205460ff1690565b1562000cb657886001600160a01b0316639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b15801562000bfc57600080fd5b505afa15801562000c11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c37919062003b3c565b9150886001600160a01b0316633d6c043b6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000c7357600080fd5b505afa15801562000c88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cae9190620037a6565b905062000cca565b505060025461ffff166001600160a01b0388165b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b038c169162000d0e919062003c41565b600060405180830381855afa9150503d806000811462000d4b576040519150601f19603f3d011682016040523d82523d6000602084013e62000d50565b606091505b5091505060008180602001905181019062000d6c919062003bf4565b90508987600860ff8416111562000dc757600062000d8c60088562004008565b62000d9990600a62003f0d565b905062000da7818462003ea3565b925062000db5818362003ea3565b915062000dc3818462003fcc565b9c50505b60025461ffff8781169116141562000df95762000de78d33308f62001ed3565b62000df38d8362001f46565b62000e6a565b62000e078d33308f62001ed3565b604051632770a7eb60e21b8152306004820152602481018d90526001600160a01b038e1690639dc29fac90604401600060405180830381600087803b15801562000e5057600080fd5b505af115801562000e65573d6000803e3d6000fd5b505050505b62000e7c8686848e8e86348f62002013565b9d9c50505050505050505050505050565b61ffff821660009081526008602090815260408083208484529091529020546001600160a01b03165b92915050565b600080600062000ecc8462002151565b92509250925081819062000ef55760405162461bcd60e51b8152600401620008a8919062003cb8565b5062000f1b8361014001516000908152600560205260409020805460ff19166001179055565b600062000f2c8460e0015162001bc8565b905062000f3c60025461ffff1690565b61ffff16816040015161ffff161462000f895760405162461bcd60e51b815260206004820152600e60248201526d1ddc9bdb99c818da185a5b881a5960921b6044820152606401620008a8565b606081015162000f999062002380565b5050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529062000fe5838262001e12565b60ff16825262000ff760018262003e88565b9050816000015160ff16600114620010455760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2102a3930b739b332b960811b6044820152606401620008a8565b620010518382620024b7565b60208084019190915262001066908262003e88565b905062001074838262001db0565b60408301526200108660208262003e88565b905062001094838262001e72565b61ffff166060830152620010aa60028262003e88565b9050620010b8838262001db0565b6080830152620010ca60208262003e88565b9050620010d8838262001e72565b61ffff1660a0830152620010ee60028262003e88565b9050620010fc8382620024b7565b60c08301526200110e60208262003e88565b905080835114620009ff5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2102a3930b739b332b960811b6044820152606401620008a8565b60006200116a6001546001600160a01b031690565b905090565b8051602080830151604080850151606080870151608088015160a089015160c08a0151955160f89990991b6001600160f81b031916978901979097526021880195909552604187019290925260f091821b6001600160f01b03199081166061880152606387019490945293901b909116608384015260858301529060a5015b6040516020818303038152906040529050919050565b6000806200121a6000546001600160a01b031690565b6001600160a01b0316631a90a2196040518163ffffffff1660e01b815260040160206040518083038186803b1580156200125357600080fd5b505afa15801562001268573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200128e9190620037a6565b9050348110620012ec5760405162461bcd60e51b815260206004820152602260248201527f76616c756520697320736d616c6c6572207468616e20776f726d686f6c652066604482015261656560f01b6064820152608401620008a8565b6000620012fa823462003fee565b905080851115620013635760405162461bcd60e51b815260206004820152602c60248201527f66656520697320626967676572207468616e20616d6f756e74206d696e75732060448201526b776f726d686f6c652066656560a01b6064820152608401620008a8565b6000620013766402540be4008362003ea3565b905060006200138b6402540be4008862003ea3565b90506000620013a0836402540be40062003fcc565b620013ac908562003fee565b90508015620013e557604051339082156108fc029083906000818181858888f19350505050158015620013e3573d6000803e3d6000fd5b505b6004546001600160a01b031663d0e30db062001402838762003fee565b6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200142e57600080fd5b505af115801562001443573d6000803e3d6000fd5b5050505050620014666200145f6004546001600160a01b031690565b8462001f46565b620014906200147860025461ffff1690565b6004546001600160a01b0316858d8d878b8e62002013565b9a9950505050505050505050565b6000806000620014ae8462002151565b925092509250818190620014d75760405162461bcd60e51b8152600401620008a8919062003cb8565b50620014fd8361014001516000908152600560205260409020805460ff19166001179055565b60006200150e8460e00151620007fb565b90506200151e60025461ffff1690565b61ffff16816040015161ffff1614806200153e5750604081015161ffff16155b6200157f5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a590818da185a5b881a5960821b6044820152606401620008a8565b606081015161ffff166000908152600b602052604081205414620015e65760405162461bcd60e51b815260206004820152601860248201527f636861696e20616c7265616479207265676973746572656400000000000000006044820152606401620008a8565b62000f998160600151826080015161ffff9091166000908152600b6020526040902055565b8051602080830151604080850151606080870151608088015160a0890151945160f898891b6001600160f81b031990811698820198909852602181019690965260f09390931b6001600160f01b031916604186015290951b909316604383015260448201929092526064810191909152608401620011ee565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b03861691620016c99162003c41565b600060405180830381855afa9150503d806000811462001706576040519150601f19603f3d011682016040523d82523d6000602084013e6200170b565b606091505b5060408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b1790529051919350600092506001600160a01b0387169162001754919062003c41565b600060405180830381855afa9150503d806000811462001791576040519150601f19603f3d011682016040523d82523d6000602084013e62001796565b606091505b5060408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b1790529051919350600092506001600160a01b03881691620017df919062003c41565b600060405180830381855afa9150503d80600081146200181c576040519150601f19603f3d011682016040523d82523d6000602084013e62001821565b606091505b509150506000838060200190518101906200183d919062003bf4565b905060008380602001905181019062001857919062003839565b905060008380602001905181019062001871919062003839565b9050600080602084015191506020830151905060006040518060c00160405280600260ff1681526020018d6001600160a01b031660001b8152602001620018bb60025461ffff1690565b61ffff1681526020018760ff1681526020018481526020018381525090506000620018e6826200160b565b9050620018fb6000546001600160a01b031690565b6001600160a01b031663b19a437e348e84600f6040518563ffffffff1660e01b81526004016200192e9392919062003da6565b6020604051808303818588803b1580156200194857600080fd5b505af11580156200195d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000e7c919062003bd7565b6200199181600062002510565b50565b600080600080620019ad6000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b8152600401620019da919062003cb8565b60006040518083038186803b158015620019f357600080fd5b505afa15801562001a08573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a329190810190620039ae565b92509250925081819062001a5b5760405162461bcd60e51b8152600401620008a8919062003cb8565b5062001a678362002c18565b62001a865760405162461bcd60e51b8152600401620008a89062003d7d565b600062001a978460e0015162000a05565b905062001aa9818560a0015162002c55565b9695505050505050565b60008060008062001acc6000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001af9919062003cb8565b60006040518083038186803b15801562001b1257600080fd5b505afa15801562001b27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b519190810190620039ae565b92509250925081819062001b7a5760405162461bcd60e51b8152600401620008a8919062003cb8565b5062001b868362002c18565b62001ba55760405162461bcd60e51b8152600401620008a89062003d7d565b600062001bb68460e0015162000a05565b905062001aa9818560a0015162002f06565b60408051608081018252600080825260208201819052918101829052606081018290529062001bf8838262001db0565b825262001c0760208262003e88565b82519091506a546f6b656e4272696467651462001c755760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206d6044820152646f64756c6560d81b6064820152608401620008a8565b62001c81838262001e12565b60ff16602083015262001c9660018262003e88565b9050816020015160ff1660021462001cff5760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206160448201526431ba34b7b760d91b6064820152608401620008a8565b62001d0b838262001e72565b61ffff16604083015262001d2160028262003e88565b905062001d2f838262001db0565b606083015262001d4160208262003e88565b905080835114620009ff5760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206c6044820152640cadccee8d60db1b6064820152608401620008a8565b6200199181600162002510565b600062001dbf82602062003e88565b8351101562001e095760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401620008a8565b50016020015190565b600062001e2182600162003e88565b8351101562001e695760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606401620008a8565b50016001015190565b600062001e8182600262003e88565b8351101562001eca5760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606401620008a8565b50016002015190565b6040516001600160a01b038085166024830152831660448201526064810182905262001f409085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262003001565b50505050565b6001600160a01b0382166000908152600a60205260409020546001600160401b0362001f73838362003e88565b111562001fe15760405162461bcd60e51b815260206004820152603560248201527f7472616e736665722065786365656473206d6178206f75747374616e64696e6760448201527408189c9a5919d959081d1bdad95b88185b5bdd5b9d605a1b6064820152608401620008a8565b6200200e8362001ff2848462003e88565b6001600160a01b039091166000908152600a6020526040902055565b505050565b6000868411156200205c5760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b6044820152606401620008a8565b6040805160e081018252600181526020810189905290810189905261ffff808b16606083015260808201879052871660a082015260c081018590526000620020a4826200116f565b9050620020b96000546001600160a01b031690565b6001600160a01b031663b19a437e868684600f6040518563ffffffff1660e01b8152600401620020ec9392919062003da6565b6020604051808303818588803b1580156200210657600080fd5b505af11580156200211b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002142919062003bd7565b9b9a5050505050505050505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018190526101008201839052610120820152610140810191909152600060606000806000620021c56000546001600160a01b031690565b6001600160a01b031663c0fd8bde886040518263ffffffff1660e01b8152600401620021f2919062003cb8565b60006040518083038186803b1580156200220b57600080fd5b505afa15801562002220573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200224a9190810190620039ae565b9250925092508162002263579194509250905062002379565b60025462010000900461ffff1661ffff16836060015161ffff1614620022c15750506040805180820190915260168152753bb937b7339033b7bb32b93730b731b29031b430b4b760511b602082015290935060009250905062002379565b6003548360800151146200231457505060408051808201909152601981527f77726f6e6720676f7665726e616e636520636f6e747261637400000000000000602082015290935060009250905062002379565b61014083015160009081526005602052604090205460ff16156200235e5782600060405180606001604052806022815260200162004a6f6022913995509550955050505062002379565b50506040805160208101909152600081529093506001925090505b9193909250565b6000620023b47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b9050620023c182620030da565b60408051600481526024810182526020810180516001600160e01b031663204a7f0760e21b179052905160009182916001600160a01b03861691620024069162003c41565b600060405180830381855af49150503d806000811462002443576040519150601f19603f3d011682016040523d82523d6000602084013e62002448565b606091505b5091509150818190620024705760405162461bcd60e51b8152600401620008a8919062003cb8565b50836001600160a01b0316836001600160a01b03167f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4960405160405180910390a350505050565b6000620024c682602062003e88565b8351101562001e095760405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606401620008a8565b6000806000620025286000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162002555919062003cb8565b60006040518083038186803b1580156200256e57600080fd5b505afa15801562002583573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025ad9190810190620039ae565b925092509250818190620025d65760405162461bcd60e51b8152600401620008a8919062003cb8565b50620025e28362002c18565b620026015760405162461bcd60e51b8152600401620008a89062003d7d565b6000620026128460e0015162000fa0565b90506200263384610140015160009081526006602052604090205460ff1690565b15620026825760405162461bcd60e51b815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c657465640000000000006044820152606401620008a8565b620026a78461014001516000908152600660205260409020805460ff19166001179055565b60025461ffff1661ffff168160a0015161ffff1614620027015760405162461bcd60e51b815260206004820152601460248201527334b73b30b634b2103a30b933b2ba1031b430b4b760611b6044820152606401620008a8565b60006200271160025461ffff1690565b61ffff16826060015161ffff161415620027435750604081015160208201516200273d9082906200311c565b620027c4565b6000620027598360600151846040015162000e8d565b90506001600160a01b038116620027c15760405162461bcd60e51b815260206004820152602560248201527f6e6f207772617070657220666f72207468697320746f6b656e2063726561746560448201526419081e595d60da1b6064820152608401620008a8565b90505b851580620027df57506004546001600160a01b038281169116145b620028395760405162461bcd60e51b815260206004820152602360248201527f696e76616c696420746f6b656e2c2063616e206f6e6c7920756e77726170205760448201526208aa8960eb1b6064820152608401620008a8565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b038416916200287d919062003c41565b600060405180830381855afa9150503d8060008114620028ba576040519150601f19603f3d011682016040523d82523d6000602084013e620028bf565b606091505b50915050600081806020019051810190620028db919062003bf4565b602085015160c086015191925090600860ff84161115620029325760006200290560088562004008565b6200291290600a62003f0d565b905062002920818462003fcc565b92506200292e818362003fcc565b9150505b801562002abf5781811115620029965760405162461bcd60e51b815260206004820152602260248201527f66656520686967686572207468616e207472616e7366657272656420616d6f756044820152611b9d60f21b6064820152608401620008a8565b891562002a305760048054604051632e1a7d4d60e01b81529182018390526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015620029e257600080fd5b505af1158015620029f7573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801562002a29573d6000803e3d6000fd5b5062002abf565b60025461ffff1661ffff16866060015161ffff161462002ab2576040516340c10f1960e01b8152336004820152602481018290526001600160a01b038616906340c10f1990604401600060405180830381600087803b15801562002a9357600080fd5b505af115801562002aa8573d6000803e3d6000fd5b5050505062002abf565b62002abf85338362003152565b600062002acd828462003fee565b60808801519091508b1562002b785760048054604051632e1a7d4d60e01b81529182018490526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801562002b2157600080fd5b505af115801562002b36573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f1935050505015801562002b71573d6000803e3d6000fd5b5062002c09565b60025461ffff1661ffff16886060015161ffff161462002bfc576040516340c10f1960e01b81526001600160a01b038281166004830152602482018490528816906340c10f1990604401600060405180830381600087803b15801562002bdd57600080fd5b505af115801562002bf2573d6000803e3d6000fd5b5050505062002c09565b62002c0987828462003152565b50505050505050505050505050565b6000816080015162002c3e836060015161ffff166000908152600b602052604090205490565b141562002c4d57506001919050565b506000919050565b600062002c6560025461ffff1690565b61ffff16836040015161ffff16141562002cd35760405162461bcd60e51b815260206004820152602860248201527f63616e206f6e6c79207772617020746f6b656e732066726f6d20666f726569676044820152676e20636861696e7360c01b6064820152608401620008a8565b60006001600160a01b031662002cf28460400151856020015162000e8d565b6001600160a01b03161462002d4a5760405162461bcd60e51b815260206004820152601c60248201527f7772617070656420617373657420616c726561647920657869737473000000006044820152606401620008a8565b600063c71f461560e01b62002d638560a0015162003184565b62002d72866080015162003184565b8660600151863089604001518a6020015160405160240162002d9b979695949392919062003d10565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093525190925060009162002de591309185910162003c92565b604051602081830303815290604052905060006040518060200162002e0a90620034f1565b601f1982820381018352601f90910116604081905262002e309190849060200162003c5f565b604051602081830303815290604052905060008660400151876020015160405160200162002e7792919060f09290921b6001600160f01b0319168252600282015260220190565b604051602081830303815290604052805190602001209050808251602084016000f59450843b62002ea757600080fd5b6040808801516020808a015161ffff90921660009081526008825283812092815291815282822080546001600160a01b0319166001600160a01b038a1690811790915582526009905220805460ff191660011790555050505092915050565b60008062002f1d8460400151856020015162000e8d565b90506001600160a01b03811662002f775760405162461bcd60e51b815260206004820152601d60248201527f7772617070656420617373657420646f6573206e6f74206578697374730000006044820152606401620008a8565b806001600160a01b031663a18cd7c662002f958660a0015162003184565b62002fa4876080015162003184565b866040518463ffffffff1660e01b815260040162002fc59392919062003ccd565b600060405180830381600087803b15801562002fe057600080fd5b505af115801562002ff5573d6000803e3d6000fd5b50929695505050505050565b600062003058826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620032bf9092919063ffffffff16565b8051909150156200200e578080602001905181019062003079919062003770565b6200200e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620008a8565b620030e581620032da565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6200314e828262003142856001600160a01b03166000908152600a602052604090205490565b62001ff2919062003fee565b5050565b6040516001600160a01b0383166024820152604481018290526200200e90849063a9059cbb60e01b9060640162001f08565b606060005b602081108015620031c75750828160208110620031b657634e487b7160e01b600052603260045260246000fd5b1a60f81b6001600160f81b03191615155b15620031e25780620031d9816200405d565b91505062003189565b6000816001600160401b038111156200320b57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801562003236576020820181803683370190505b50905060005b82811015620032b7578481602081106200326657634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106200328b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535080620032ae816200405d565b9150506200323c565b509392505050565b6060620032d0848460008562003381565b90505b9392505050565b803b620033405760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620008a8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b606082471015620033e45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620008a8565b843b620034345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620008a8565b600080866001600160a01b0316858760405162003452919062003c41565b60006040518083038185875af1925050503d806000811462003491576040519150601f19603f3d011682016040523d82523d6000602084013e62003496565b606091505b5091509150620034a8828286620034b3565b979650505050505050565b60608315620034c4575081620032d3565b825115620034d55782518084602001fd5b8160405162461bcd60e51b8152600401620008a8919062003cb8565b61099380620040dc83390190565b80356001600160a01b03811681146200351757600080fd5b919050565b600082601f8301126200352d578081fd5b815160206001600160401b038211156200354b576200354b62004091565b6200355b818360051b0162003e2b565b80838252828201915082860187848660071b89010111156200357b578586fd5b855b85811015620035eb57608080838b03121562003597578788fd5b620035a162003dda565b835181528684015187820152604080850151620035be81620040cb565b90820152606084810151620035d381620040cb565b9082015285529385019391909101906001016200357d565b5090979650505050505050565b805180151581146200351757600080fd5b600082601f8301126200361a578081fd5b8151620036316200362b8262003e5e565b62003e2b565b81815284602083860101111562003646578283fd5b620036598260208301602087016200402e565b949350505050565b80356200351781620040a7565b80516200351781620040a7565b80516200351781620040b8565b80516001600160401b03811681146200351757600080fd5b80516200351781620040cb565b600060208284031215620036bf578081fd5b620032d382620034ff565b60008060008060008060c08789031215620036e3578182fd5b620036ee87620034ff565b95506020870135945060408701356200370781620040a7565b9350606087013592506080870135915060a08701356200372781620040b8565b809150509295509295509295565b6000806040838503121562003748578182fd5b6200375383620034ff565b915060208301356200376581620040b8565b809150509250929050565b60006020828403121562003782578081fd5b620032d382620035f8565b6000602082840312156200379f578081fd5b5035919050565b600060208284031215620037b8578081fd5b5051919050565b600060208284031215620037d1578081fd5b81356001600160401b03811115620037e7578182fd5b8201601f81018413620037f8578182fd5b8035620038096200362b8262003e5e565b8181528560208385010111156200381e578384fd5b81602084016020830137908101602001929092525092915050565b6000602082840312156200384b578081fd5b81516001600160401b0381111562003861578182fd5b620036598482850162003609565b600060c0828403121562003881578081fd5b60405160c081018181106001600160401b0382111715620038a657620038a662004091565b6040528235620038b681620040cb565b8152602083810135908201526040830135620038d281620040a7565b60408201526060830135620038e781620040cb565b60608201526080838101359082015260a0928301359281019290925250919050565b600060e082840312156200391b578081fd5b60405160e081018181106001600160401b038211171562003940576200394062004091565b60405282356200395081620040cb565b80825250602083013560208201526040830135604082015260608301356200397881620040a7565b6060820152608083810135908201526200399560a0840162003661565b60a082015260c083013560c08201528091505092915050565b600080600060608486031215620039c3578081fd5b83516001600160401b0380821115620039da578283fd5b908501906101608288031215620039ef578283fd5b620039f962003e05565b62003a0483620036a0565b815262003a14602084016200367b565b602082015262003a27604084016200367b565b604082015262003a3a606084016200366e565b60608201526080830151608082015262003a5760a0840162003688565b60a082015262003a6a60c08401620036a0565b60c082015260e08301518281111562003a81578485fd5b62003a8f8982860162003609565b60e08301525061010062003aa58185016200367b565b90820152610120838101518381111562003abd578586fd5b62003acb8a8287016200351c565b91830191909152506101408381015190820152945062003aee60208701620035f8565b9350604086015191508082111562003b04578283fd5b5062003b138682870162003609565b9150509250925092565b60006020828403121562003b2f578081fd5b8135620032d381620040a7565b60006020828403121562003b4e578081fd5b8151620032d381620040a7565b6000806040838503121562003b6e578182fd5b823562003b7b81620040a7565b946020939093013593505050565b6000806000806080858703121562003b9f578182fd5b843562003bac81620040a7565b93506020850135925060408501359150606085013562003bcc81620040b8565b939692955090935050565b60006020828403121562003be9578081fd5b620032d38262003688565b60006020828403121562003c06578081fd5b8151620032d381620040cb565b6000815180845262003c2d8160208601602086016200402e565b601f01601f19169290920160200192915050565b6000825162003c558184602087016200402e565b9190910192915050565b6000835162003c738184602088016200402e565b83519083019062003c898183602088016200402e565b01949350505050565b6001600160a01b0383168152604060208201819052600090620032d09083018462003c13565b602081526000620032d3602083018462003c13565b60608152600062003ce2606083018662003c13565b828103602084015262003cf6818662003c13565b9150506001600160401b0383166040830152949350505050565b60e08152600062003d2560e083018a62003c13565b828103602084015262003d39818a62003c13565b60ff98909816604084015250506001600160401b039490941660608501526001600160a01b0392909216608084015261ffff1660a083015260c09091015292915050565b6020808252600f908201526e34b73b30b634b21032b6b4ba3a32b960891b604082015260600190565b63ffffffff8416815260606020820152600062003dc7606083018562003c13565b905060ff83166040830152949350505050565b604051608081016001600160401b038111828210171562003dff5762003dff62004091565b60405290565b60405161016081016001600160401b038111828210171562003dff5762003dff62004091565b604051601f8201601f191681016001600160401b038111828210171562003e565762003e5662004091565b604052919050565b60006001600160401b0382111562003e7a5762003e7a62004091565b50601f01601f191660200190565b6000821982111562003e9e5762003e9e6200407b565b500190565b60008262003ebf57634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111562003f0557816000190482111562003ee95762003ee96200407b565b8085161562003ef757918102915b93841c939080029062003ec9565b509250929050565b6000620032d360ff84168360008262003f295750600162000eb6565b8162003f385750600062000eb6565b816001811462003f51576002811462003f5c5762003f7c565b600191505062000eb6565b60ff84111562003f705762003f706200407b565b50506001821b62000eb6565b5060208310610133831016604e8410600b841016171562003fa1575081810a62000eb6565b62003fad838362003ec4565b806000190482111562003fc45762003fc46200407b565b029392505050565b600081600019048311821515161562003fe95762003fe96200407b565b500290565b6000828210156200400357620040036200407b565b500390565b600060ff821660ff8416808210156200402557620040256200407b565b90039392505050565b60005b838110156200404b57818101518382015260200162004031565b8381111562001f405750506000910152565b60006000198214156200407457620040746200407b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff811681146200199157600080fd5b63ffffffff811681146200199157600080fd5b60ff811681146200199157600080fdfe608060405234801561001057600080fd5b5060405161099338038061099383398101604081905261002f9161048e565b818161005c60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51610599565b60008051602061094c8339815191521461008657634e487b7160e01b600052600160045260246000fd5b6100928282600061009b565b505050506105fe565b6100a483610175565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100e55750805b156101705761016e836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561012657600080fd5b505afa15801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610474565b8361031560201b6100291760201c565b505b505050565b6101888161034160201b6100551760201c565b6101e75760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b61026a816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022357600080fd5b505afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610474565b61034160201b6100551760201c565b6102cf5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101de565b806102f460008051602061094c83398151915260001b61034760201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061033a838360405180606001604052806027815260200161096c6027913961034a565b9392505050565b3b151590565b90565b6060833b6103a95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101de565b600080856001600160a01b0316856040516103c4919061054a565b600060405180830381855af49150503d80600081146103ff576040519150601f19603f3d011682016040523d82523d6000602084013e610404565b606091505b50909250905061041582828661041f565b9695505050505050565b6060831561042e57508161033a565b82511561043e5782518084602001fd5b8160405162461bcd60e51b81526004016101de9190610566565b80516001600160a01b038116811461046f57600080fd5b919050565b600060208284031215610485578081fd5b61033a82610458565b600080604083850312156104a0578081fd5b6104a983610458565b60208401519092506001600160401b03808211156104c5578283fd5b818501915085601f8301126104d8578283fd5b8151818111156104ea576104ea6105e8565b604051601f8201601f19908116603f01168101908382118183101715610512576105126105e8565b8160405282815288602084870101111561052a578586fd5b61053b8360208301602088016105bc565b80955050505050509250929050565b6000825161055c8184602087016105bc565b9190910192915050565b60208152600082518060208401526105858160408501602087016105bc565b601f01601f19169190910160400192915050565b6000828210156105b757634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156105d75781810151838201526020016105bf565b8381111561016e5750506000910152565b634e487b7160e01b600052604160045260246000fd5b61033f8061060d6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610106565b565b606061004e83836040518060600160405280602781526020016102e36027913961012a565b9392505050565b3b151590565b90565b60006100917fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610101919061023c565b905090565b3660008037600080366000845af43d6000803e808015610125573d6000f35b3d6000fd5b6060833b61018e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101a99190610263565b600060405180830381855af49150503d80600081146101e4576040519150601f19603f3d011682016040523d82523d6000602084013e6101e9565b606091505b50915091506101f9828286610203565b9695505050505050565b6060831561021257508161004e565b8251156102225782518084602001fd5b8160405162461bcd60e51b8152600401610185919061027f565b60006020828403121561024d578081fd5b81516001600160a01b038116811461004e578182fd5b600082516102758184602087016102b2565b9190910192915050565b602081526000825180602084015261029e8160408501602087016102b2565b601f01601f19169190910160400192915050565b60005b838110156102cd5781810151838201526020016102b5565b838111156102dc576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220959829e762dc44438d2f6df566e1a7ac492d5730918a6784fcf49f01e6d24e7b64736f6c63430008040033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d6564a2646970667358221220f850c127a40792d83ad8667a509ac3b6e5f1954d99e911daf1ee837d92885ad064736f6c63430008040033