0 txs
32 calls
constructor
No constructor.
functions
circulatingSupply
viewfunction circulatingSupply() view returns (uint256)
creditedPackets
viewfunction creditedPackets(uint16, bytes, uint64) view returns (bool)
DEFAULT_PAYLOAD_SIZE_LIMIT
viewfunction DEFAULT_PAYLOAD_SIZE_LIMIT() view returns (uint256)
estimateSendAndCallFee
viewfunction estimateSendAndCallFee(uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, bytes _payload, uint64 _dstGasForCall, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
estimateSendFee
viewfunction estimateSendFee(uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
failedMessages
viewfunction failedMessages(uint16, bytes, uint64) view returns (bytes32)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
isTrustedRemote
viewfunction isTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
lzEndpoint
viewfunction lzEndpoint() view returns (address)
minDstGasLookup
viewfunction minDstGasLookup(uint16, uint16) view returns (uint256)
NO_EXTRA_GAS
viewfunction NO_EXTRA_GAS() view returns (uint256)
outboundAmount
viewfunction outboundAmount() view returns (uint256)
owner
viewfunction owner() view returns (address)
payloadSizeLimitLookup
viewfunction payloadSizeLimitLookup(uint16) view returns (uint256)
precrime
viewfunction precrime() view returns (address)
PT_SEND_AND_CALL
viewfunction PT_SEND_AND_CALL() view returns (uint8)
PT_SEND
viewfunction PT_SEND() view returns (uint8)
sharedDecimals
viewfunction sharedDecimals() view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
token
viewfunction token() view returns (address)
trustedRemoteLookup
viewfunction trustedRemoteLookup(uint16) view returns (bytes)
callOnOFTReceived
nonpayablefunction callOnOFTReceived(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _from, address _to, uint256 _amount, bytes _payload, uint256 _gasForCall)
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
initialize
nonpayablefunction initialize(address _token, uint8 _sharedDecimals, address _lzEndpoint)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
nonblockingLzReceive
nonpayablefunction nonblockingLzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
renounceOwnership
nonpayablefunction renounceOwnership()
retryMessage
payablefunction retryMessage(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload) payable
sendAndCall
payablefunction sendAndCall(address _from, uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, bytes _payload, uint64 _dstGasForCall, tuple _callParams) payable
sendFrom
payablefunction sendFrom(address _from, uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, tuple _callParams) payable
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setMinDstGas
nonpayablefunction setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas)
setPayloadSizeLimit
nonpayablefunction setPayloadSizeLimit(uint16 _dstChainId, uint256 _size)
setPrecrime
nonpayablefunction setPrecrime(address _precrime)
setReceiveVersion
nonpayablefunction setReceiveVersion(uint16 _version)
setSendVersion
nonpayablefunction setSendVersion(uint16 _version)
setTrustedRemote
nonpayablefunction setTrustedRemote(uint16 _remoteChainId, bytes _path)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
CallOFTReceivedSuccess
event CallOFTReceivedSuccess(uint16 indexed _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _hash)
Initialized
event Initialized(uint8 version)
MessageFailed
event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason)
NonContractAddress
event NonContractAddress(address _address)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReceiveFromChain
event ReceiveFromChain(uint16 indexed _srcChainId, address indexed _to, uint256 _amount)
RetryMessageSuccess
event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash)
SendToChain
event SendToChain(uint16 indexed _dstChainId, address indexed _from, bytes32 indexed _toAddress, uint256 _amount)
SetMinDstGas
event SetMinDstGas(uint16 _dstChainId, uint16 _type, uint256 _minDstGas)
SetPrecrime
event SetPrecrime(address precrime)
SetTrustedRemote
event SetTrustedRemote(uint16 _remoteChainId, bytes _path)
SetTrustedRemoteAddress
event SetTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061419d806100206000396000f3fe60806040526004361061023a5760003560e01c80639358928b1161012e578063cbed8b9c116100ab578063eb8d72b71161006f578063eb8d72b714610718578063f2fde38b14610738578063f35f9e4514610758578063f5ecbdbc14610778578063fc0c546a1461079857600080fd5b8063cbed8b9c14610690578063d1deba1f146106b0578063df2a5b3b146106c3578063e6a20ae6146106e3578063eaffd49a146106f857600080fd5b8063a4c51df5116100f2578063a4c51df5146105fa578063a6c3d1651461061a578063b353aaa71461063a578063baf3292d1461065a578063c44618341461067a57600080fd5b80639358928b1461053d578063950c8a74146105525780639689cb05146105725780639bdb9812146105885780639f38369a146105da57600080fd5b80634c42899a116101bc5780637533d788116101805780637533d7881461047957806376203b48146104a6578063857749b0146104b95780638cfd8f5c146104d35780638da5cb5b1461050b57600080fd5b80634c42899a146103bb5780635b8c41e6146103e257806366ad5c8a14610431578063695ef6bf14610451578063715018a61461046457600080fd5b8063365260b411610203578063365260b4146102f65780633d8b38f61461032b5780633f1f4fa41461034b57806342d65a8d1461038657806344770515146103a657600080fd5b80621d35671461023f57806301ffc9a71461026157806307e0db17146102965780630df37483146102b657806310ddb137146102d6575b600080fd5b34801561024b57600080fd5b5061025f61025a3660046132a1565b6107b6565b005b34801561026d57600080fd5b5061028161027c366004613334565b6109d2565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025f6102b136600461335e565b610a09565b3480156102c257600080fd5b5061025f6102d1366004613379565b610a76565b3480156102e257600080fd5b5061025f6102f136600461335e565b610a95565b34801561030257600080fd5b506103166103113660046133b1565b610ad1565b6040805192835260208301919091520161028d565b34801561033757600080fd5b50610281610346366004613418565b610b26565b34801561035757600080fd5b5061037861036636600461335e565b60686020526000908152604090205481565b60405190815260200161028d565b34801561039257600080fd5b5061025f6103a1366004613418565b610bf3565b3480156103b257600080fd5b50610378600081565b3480156103c757600080fd5b506103d0600081565b60405160ff909116815260200161028d565b3480156103ee57600080fd5b506103786103fd3660046134d7565b606a602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561043d57600080fd5b5061025f61044c3660046132a1565b610c5d565b61025f61045f3660046135a4565b610d39565b34801561047057600080fd5b5061025f610da4565b34801561048557600080fd5b5061049961049436600461335e565b610db8565b60405161028d919061366f565b61025f6104b4366004613682565b610e52565b3480156104c557600080fd5b50606b546103d09060ff1681565b3480156104df57600080fd5b506103786104ee366004613734565b606760209081526000928352604080842090915290825290205481565b34801561051757600080fd5b506033546001600160a01b03165b6040516001600160a01b03909116815260200161028d565b34801561054957600080fd5b50610378610f01565b34801561055e57600080fd5b50606954610525906001600160a01b031681565b34801561057e57600080fd5b50610378606f5481565b34801561059457600080fd5b506102816105a33660046134d7565b606c602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205460ff1681565b3480156105e657600080fd5b506104996105f536600461335e565b610f82565b34801561060657600080fd5b50610316610615366004613767565b611092565b34801561062657600080fd5b5061025f610635366004613418565b611121565b34801561064657600080fd5b50606554610525906001600160a01b031681565b34801561066657600080fd5b5061025f610675366004613824565b6111b4565b34801561068657600080fd5b5061037861271081565b34801561069c57600080fd5b5061025f6106ab366004613841565b611210565b61025f6106be3660046132a1565b61127e565b3480156106cf57600080fd5b5061025f6106de3660046138af565b611494565b3480156106ef57600080fd5b506103d0600181565b34801561070457600080fd5b5061025f6107133660046138eb565b611546565b34801561072457600080fd5b5061025f610733366004613418565b611665565b34801561074457600080fd5b5061025f610753366004613824565b6116bf565b34801561076457600080fd5b5061025f6107733660046139c2565b611738565b34801561078457600080fd5b50610499610793366004613a0d565b6119f0565b3480156107a457600080fd5b50606d546001600160a01b0316610525565b6065546001600160a01b0316336001600160a01b03161461081e5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff86166000908152606660205260408120805461083c90613a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461086890613a5a565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b505050505090508051868690501480156108d0575060008151115b80156108f85750805160208201206040516108ee9088908890613a8f565b6040518091039020145b6109535760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610815565b6109c98787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611a8592505050565b50505050505050565b60006001600160e01b03198216631f7ecdf760e01b1480610a0357506301ffc9a760e01b6001600160e01b03198316145b92915050565b610a11611afe565b6065546040516307e0db1760e01b815261ffff831660048201526001600160a01b03909116906307e0db17906024015b600060405180830381600087803b158015610a5b57600080fd5b505af1158015610a6f573d6000803e3d6000fd5b5050505050565b610a7e611afe565b61ffff909116600090815260686020526040902055565b610a9d611afe565b6065546040516310ddb13760e01b815261ffff831660048201526001600160a01b03909116906310ddb13790602401610a41565b600080610b178888888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5892505050565b91509150965096945050505050565b61ffff831660009081526066602052604081208054829190610b4790613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7390613a5a565b8015610bc05780601f10610b9557610100808354040283529160200191610bc0565b820191906000526020600020905b815481529060010190602001808311610ba357829003601f168201915b505050505090508383604051610bd7929190613a8f565b60405180910390208180519060200120149150505b9392505050565b610bfb611afe565b6065546040516342d65a8d60e01b81526001600160a01b03909116906342d65a8d90610c2f90869086908690600401613ac8565b600060405180830381600087803b158015610c4957600080fd5b505af11580156109c9573d6000803e3d6000fd5b333014610cbb5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610815565b610d318686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611c2e92505050565b505050505050565b610d3185858585610d4d6020870187613824565b610d5d6040880160208901613824565b610d6a6040890189613ae6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cb592505050565b610dac611afe565b610db66000611d9d565b565b60666020526000908152604090208054610dd190613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfd90613a5a565b8015610e4a5780601f10610e1f57610100808354040283529160200191610e4a565b820191906000526020600020905b815481529060010190602001808311610e2d57829003601f168201915b505050505081565b610ef68888888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250610e9f9150506020890189613824565b610eaf60408a0160208b01613824565b610ebc60408b018b613ae6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b505050505050505050565b606f54606d54604080516318160ddd60e01b81529051600093926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f739190613b2c565b610f7d9190613b5b565b905090565b61ffff8116600090815260666020526040812080546060929190610fa590613a5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd190613a5a565b801561101e5780601f10610ff35761010080835404028352916020019161101e565b820191906000526020600020905b81548152906001019060200180831161100157829003601f168201915b505050505090508051600014156110775760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610815565b610bec60006014835161108a9190613b5b565b839190611eeb565b60008061110f8b8b8b8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b81528e93508d9250908c908c9081908401838280828437600092019190915250611ff892505050565b91509150995099975050505050505050565b611129611afe565b81813060405160200161113e93929190613b72565b60408051601f1981840301815291815261ffff851660009081526066602090815291902082516111739391929091019061311e565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce8383836040516111a793929190613ac8565b60405180910390a1505050565b6111bc611afe565b606980546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200160405180910390a150565b611218611afe565b6065546040516332fb62e760e21b81526001600160a01b039091169063cbed8b9c906112509088908890889088908890600401613b98565b600060405180830381600087803b15801561126a57600080fd5b505af1158015610ef6573d6000803e3d6000fd5b61ffff86166000908152606a602052604080822090516112a19088908890613a8f565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806113215760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610815565b808383604051611332929190613a8f565b6040518091039020146113915760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610815565b61ffff87166000908152606a602052604080822090516113b49089908990613a8f565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f8801829004820283018201905286825261144c918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611c2e92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611483959493929190613bc6565b60405180910390a150505050505050565b61149c611afe565b600081116114e45760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610815565b61ffff83811660008181526067602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac0906060016111a7565b3330146115955760405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606401610815565b6115a0308686612095565b9350846001600160a01b03168a61ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf866040516115e291815260200190565b60405180910390a3604051633fe79aed60e11b81526001600160a01b03861690637fcf35da908390611626908e908e908e908e908e908d908d908d90600401613c01565b600060405180830381600088803b15801561164057600080fd5b5087f1158015611654573d6000803e3d6000fd5b505050505050505050505050505050565b61166d611afe565b61ffff8316600090815260666020526040902061168b9083836131a2565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab8383836040516111a793929190613ac8565b6116c7611afe565b6001600160a01b03811661172c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610815565b61173581611d9d565b50565b600054610100900460ff16158080156117585750600054600160ff909116105b806117725750303b158015611772575060005460ff166001145b6117d55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610815565b6000805460ff1916600117905580156117f8576000805461ff0019166101001790555b61180283836121cf565b61180a6121dd565b606d80546001600160a01b0386166001600160a01b0319909116811790915560408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051600092839290916118649190613c5c565b600060405180830381855afa9150503d806000811461189f576040519150601f19603f3d011682016040523d82523d6000602084013e6118a4565b606091505b5091509150816119055760405162461bcd60e51b815260206004820152602660248201527f50726f78794f46543a206661696c656420746f2067657420746f6b656e20646560448201526563696d616c7360d01b6064820152608401610815565b60008180602001905181019061191b9190613c78565b90508060ff168660ff1611156119885760405162461bcd60e51b815260206004820152602c60248201527f50726f78794f46543a20736861726564446563696d616c73206d75737420626560448201526b203c3d20646563696d616c7360a01b6064820152608401610815565b6119928682613c95565b61199d90600a613d9c565b606e555050811590506119ea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b606554604051633d7b2f6f60e21b815261ffff808716600483015285166024820152306044820152606481018390526060916001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015611a52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7a9190810190613dab565b90505b949350505050565b600080611ae85a60966366ad5c8a60e01b89898989604051602401611aad9493929190613e18565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091523092919061220c565b9150915081610d3157610d318686868685612296565b6033546001600160a01b03163314610db65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610815565b6000806000611ba687611b6a88612333565b6040805160006020820152602181019390935260c09190911b6001600160c01b0319166041830152805160298184030181526049909201905290565b60655460405163040a7bb160e41b81529192506001600160a01b0316906340a7bb1090611bdf908b90309086908b908b90600401613e56565b6040805180830381865afa158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1f9190613eaa565b92509250509550959350505050565b6000611c3a82826123a2565b905060ff8116611c5557611c50858585856123fe565b610a6f565b60ff811660011415611c6d57611c508585858561248e565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606401610815565b6000611cc38782848161269c565b611ccc8561277b565b509050611cdb888888846127a4565b905060008111611d295760405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606401610815565b6000611d3887611b6a84612333565b9050611d488882878787346128d8565b86896001600160a01b03168961ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a85604051611d8991815260200190565b60405180910390a450979650505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611e07896001846001600160401b03891661269c565b611e108761277b565b509050611e1f8a8a8a846127a4565b905060008111611e6d5760405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606401610815565b6000611e84338a611e7d85612333565b8a8a612a62565b9050611e948a82878787346128d8565b888b6001600160a01b03168b61ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a85604051611ed591815260200190565b60405180910390a4509998505050505050505050565b606081611ef981601f613ece565b1015611f385760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610815565b611f428284613ece565b84511015611f865760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610815565b606082158015611fa55760405191506000825260208201604052611fef565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611fde578051835260209283019201611fc6565b5050858452601f01601f1916604052505b50949350505050565b600080600061200b338a611e7d8b612333565b60655460405163040a7bb160e41b81529192506001600160a01b0316906340a7bb1090612044908d90309086908b908b90600401613e56565b6040805180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120849190613eaa565b925092505097509795505050505050565b606d546040516370a0823160e01b81526001600160a01b03848116600483015260009283929116906370a0823190602401602060405180830381865afa1580156120e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121079190613b2c565b90506001600160a01b03851630141561213657606d54612131906001600160a01b03168585612aa3565b61214e565b606d5461214e906001600160a01b0316868686612b0b565b606d546040516370a0823160e01b81526001600160a01b038681166004830152839216906370a0823190602401602060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bc9190613b2c565b6121c69190613b5b565b95945050505050565b6121d98282612b43565b5050565b600054610100900460ff166122045760405162461bcd60e51b815260040161081590613ee6565b610db6612b7c565b6000606060008060008661ffff166001600160401b038111156122315761223161346a565b6040519080825280601f01601f19166020018201604052801561225b576020820181803683370190505b50905060008087516020890160008d8df191503d92508683111561227d578692505b828152826000602083013e909890975095505050505050565b8180519060200120606a60008761ffff1661ffff168152602001908152602001600020856040516122c79190613c5c565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906123249087908790879087908790613f31565b60405180910390a15050505050565b60008061233f606e5490565b6123499084613f99565b90506001600160401b03811115610a035760405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606401610815565b60006123af826001613ece565b835110156123f55760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606401610815565b50016001015190565b60008061240a83612bac565b90925090506001600160a01b0382166124235761dead91505b600061242e82612c31565b905061243b878483612c4f565b9050826001600160a01b03168761ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf8360405161247d91815260200190565b60405180910390a350505050505050565b600080600080600061249f86612c8b565b945094509450945094506000606c60008b61ffff1661ffff168152602001908152602001600020896040516124d49190613c5c565b90815260408051602092819003830190206001600160401b038b166000908152925281205460ff16915061250785612c31565b905081612575576125198b3083612c4f565b61ffff8c166000908152606c6020526040908190209051919250600191612541908d90613c5c565b90815260408051602092819003830190206001600160401b038d16600090815292529020805460ff19169115159190911790555b6001600160a01b0386163b6125cc576040516001600160a01b03871681527f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9060200160405180910390a1505050505050506119ea565b8a8a8a8a8a8a868a60008a6125ea578b6001600160401b03166125ec565b5a5b905060008061261e5a609663eaffd49a60e01b8e8e8e8d8d8d8d8d604051602401611aad989796959493929190613fad565b915091508115612677578751602089012060405161ffff8d16907fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88490612669908e908e908690614021565b60405180910390a250612684565b6126848b8b8b8b85612296565b50505050505050505050505050505050505050505050565b60006126a783612d42565b61ffff8087166000908152606760209081526040808320938916835292905290812054919250906126d9908490613ece565b90506000811161272b5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610815565b80821015610d315760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610815565b600080612787606e5490565b612791908461404f565b905061279d8184613b5b565b9150915091565b60006001600160a01b03851633146128095760405162461bcd60e51b815260206004820152602260248201527f50726f78794f46543a206f776e6572206973206e6f742073656e642063616c6c60448201526132b960f11b6064820152608401610815565b612814853084612095565b91506000806128228461277b565b9092509050801561284457606d54612844906001600160a01b03168883612aa3565b81606f60008282546128569190613ece565b909155506000905061286e6001600160401b03612c31565b9050606f548110156128cc5760405162461bcd60e51b815260206004820152602160248201527f50726f78794f46543a206f7574626f756e64416d6f756e74206f766572666c6f6044820152607760f81b6064820152608401610815565b50909695505050505050565b61ffff8616600090815260666020526040812080546128f690613a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461292290613a5a565b801561296f5780601f106129445761010080835404028352916020019161296f565b820191906000526020600020905b81548152906001019060200180831161295257829003601f168201915b505050505090508051600014156129e15760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610815565b6129ec878751612d9e565b60655460405162c5803160e81b81526001600160a01b039091169063c5803100908490612a27908b9086908c908c908c908c90600401614063565b6000604051808303818588803b158015612a4057600080fd5b505af1158015612a54573d6000803e3d6000fd5b505050505050505050505050565b6060600185856001600160a01b0389168587604051602001612a89969594939291906140ca565b604051602081830303815290604052905095945050505050565b6040516001600160a01b038316602482015260448101829052612b0690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612e0c565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526119ea9085906323b872dd60e01b90608401612acf565b612b6581606580546001600160a01b0319166001600160a01b03831617905550565b50606b805460ff191660ff92909216919091179055565b600054610100900460ff16612ba35760405162461bcd60e51b815260040161081590613ee6565b610db633611d9d565b60008080612bba84826123a2565b60ff16148015612bcb575082516029145b612c125760405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606401610815565b612c1d83600d612ede565b9150612c2a836021612f43565b9050915091565b6000612c3c606e5490565b610a03906001600160401b03841661412b565b600081606f6000828254612c639190613b5b565b90915550506001600160a01b038316301415612c80575080610bec565b611a7d308484612095565b600080806060816001612c9e87836123a2565b60ff1614612ce95760405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606401610815565b612cf486600d612ede565b9350612d01866021612f43565b9250612d0e866029612fa0565b9450612d1b866049612f43565b9050612d376051808851612d2f9190613b5b565b889190611eeb565b915091939590929450565b6000602282511015612d965760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610815565b506022015190565b61ffff821660009081526068602052604090205480612dbc57506127105b80821115612b065760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610815565b6000612e61826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ffe9092919063ffffffff16565b805190915015612b065780806020019051810190612e7f919061414a565b612b065760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610815565b6000612eeb826014613ece565b83511015612f335760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610815565b500160200151600160601b900490565b6000612f50826008613ece565b83511015612f975760405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606401610815565b50016008015190565b6000612fad826020613ece565b83511015612ff55760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610815565b50016020015190565b6060611a7d848460008585600080866001600160a01b031685876040516130259190613c5c565b60006040518083038185875af1925050503d8060008114613062576040519150601f19603f3d011682016040523d82523d6000602084013e613067565b606091505b509150915061307887838387613083565b979650505050505050565b606083156130ef5782516130e8576001600160a01b0385163b6130e85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610815565b5081611a7d565b611a7d83838151156131045781518083602001fd5b8060405162461bcd60e51b8152600401610815919061366f565b82805461312a90613a5a565b90600052602060002090601f01602090048101928261314c5760008555613192565b82601f1061316557805160ff1916838001178555613192565b82800160010185558215613192579182015b82811115613192578251825591602001919060010190613177565b5061319e929150613216565b5090565b8280546131ae90613a5a565b90600052602060002090601f0160209004810192826131d05760008555613192565b82601f106131e95782800160ff19823516178555613192565b82800160010185558215613192579182015b828111156131925782358255916020019190600101906131fb565b5b8082111561319e5760008155600101613217565b803561ffff8116811461323d57600080fd5b919050565b60008083601f84011261325457600080fd5b5081356001600160401b0381111561326b57600080fd5b60208301915083602082850101111561328357600080fd5b9250929050565b80356001600160401b038116811461323d57600080fd5b600080600080600080608087890312156132ba57600080fd5b6132c38761322b565b955060208701356001600160401b03808211156132df57600080fd5b6132eb8a838b01613242565b90975095508591506132ff60408a0161328a565b9450606089013591508082111561331557600080fd5b5061332289828a01613242565b979a9699509497509295939492505050565b60006020828403121561334657600080fd5b81356001600160e01b031981168114610bec57600080fd5b60006020828403121561337057600080fd5b610bec8261322b565b6000806040838503121561338c57600080fd5b6133958361322b565b946020939093013593505050565b801515811461173557600080fd5b60008060008060008060a087890312156133ca57600080fd5b6133d38761322b565b9550602087013594506040870135935060608701356133f1816133a3565b925060808701356001600160401b0381111561340c57600080fd5b61332289828a01613242565b60008060006040848603121561342d57600080fd5b6134368461322b565b925060208401356001600160401b0381111561345157600080fd5b61345d86828701613242565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156134a8576134a861346a565b604052919050565b60006001600160401b038211156134c9576134c961346a565b50601f01601f191660200190565b6000806000606084860312156134ec57600080fd5b6134f58461322b565b925060208401356001600160401b0381111561351057600080fd5b8401601f8101861361352157600080fd5b803561353461352f826134b0565b613480565b81815287602083850101111561354957600080fd5b8160208401602083013760006020838301015280945050505061356e6040850161328a565b90509250925092565b6001600160a01b038116811461173557600080fd5b60006060828403121561359e57600080fd5b50919050565b600080600080600060a086880312156135bc57600080fd5b85356135c781613577565b94506135d56020870161322b565b9350604086013592506060860135915060808601356001600160401b038111156135fe57600080fd5b61360a8882890161358c565b9150509295509295909350565b60005b8381101561363257818101518382015260200161361a565b838111156119ea5750506000910152565b6000815180845261365b816020860160208601613617565b601f01601f19169290920160200192915050565b602081526000610bec6020830184613643565b60008060008060008060008060e0898b03121561369e57600080fd5b88356136a981613577565b97506136b760208a0161322b565b9650604089013595506060890135945060808901356001600160401b03808211156136e157600080fd5b6136ed8c838d01613242565b909650945084915061370160a08c0161328a565b935060c08b013591508082111561371757600080fd5b506137248b828c0161358c565b9150509295985092959890939650565b6000806040838503121561374757600080fd5b6137508361322b565b915061375e6020840161322b565b90509250929050565b600080600080600080600080600060e08a8c03121561378557600080fd5b61378e8a61322b565b985060208a0135975060408a0135965060608a01356001600160401b03808211156137b857600080fd5b6137c48d838e01613242565b90985096508691506137d860808d0161328a565b955060a08c013591506137ea826133a3565b90935060c08b0135908082111561380057600080fd5b5061380d8c828d01613242565b915080935050809150509295985092959850929598565b60006020828403121561383657600080fd5b8135610bec81613577565b60008060008060006080868803121561385957600080fd5b6138628661322b565b94506138706020870161322b565b93506040860135925060608601356001600160401b0381111561389257600080fd5b61389e88828901613242565b969995985093965092949392505050565b6000806000606084860312156138c457600080fd5b6138cd8461322b565b92506138db6020850161322b565b9150604084013590509250925092565b6000806000806000806000806000806101008b8d03121561390b57600080fd5b6139148b61322b565b995060208b01356001600160401b038082111561393057600080fd5b61393c8e838f01613242565b909b50995089915061395060408e0161328a565b985060608d0135975060808d0135915061396982613577565b90955060a08c0135945060c08c0135908082111561398657600080fd5b506139938d828e01613242565b9150809450508092505060e08b013590509295989b9194979a5092959850565b60ff8116811461173557600080fd5b6000806000606084860312156139d757600080fd5b83356139e281613577565b925060208401356139f2816139b3565b91506040840135613a0281613577565b809150509250925092565b60008060008060808587031215613a2357600080fd5b613a2c8561322b565b9350613a3a6020860161322b565b92506040850135613a4a81613577565b9396929550929360600135925050565b600181811c90821680613a6e57607f821691505b6020821081141561359e57634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff84168152604060208201526000611a7a604083018486613a9f565b6000808335601e19843603018112613afd57600080fd5b8301803591506001600160401b03821115613b1757600080fd5b60200191503681900382131561328357600080fd5b600060208284031215613b3e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015613b6d57613b6d613b45565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152613078608083018486613a9f565b61ffff86168152608060208201526000613be4608083018688613a9f565b6001600160401b0394909416604083015250606001529392505050565b61ffff8916815260c060208201526000613c1f60c08301898b613a9f565b6001600160401b038816604084015286606084015285608084015282810360a0840152613c4d818587613a9f565b9b9a5050505050505050505050565b60008251613c6e818460208701613617565b9190910192915050565b600060208284031215613c8a57600080fd5b8151610bec816139b3565b600060ff821660ff841680821015613caf57613caf613b45565b90039392505050565b600181815b80851115613cf3578160001904821115613cd957613cd9613b45565b80851615613ce657918102915b93841c9390800290613cbd565b509250929050565b600082613d0a57506001610a03565b81613d1757506000610a03565b8160018114613d2d5760028114613d3757613d53565b6001915050610a03565b60ff841115613d4857613d48613b45565b50506001821b610a03565b5060208310610133831016604e8410600b8410161715613d76575081810a610a03565b613d808383613cb8565b8060001904821115613d9457613d94613b45565b029392505050565b6000610bec60ff841683613cfb565b600060208284031215613dbd57600080fd5b81516001600160401b03811115613dd357600080fd5b8201601f81018413613de457600080fd5b8051613df261352f826134b0565b818152856020838501011115613e0757600080fd5b6121c6826020830160208601613617565b61ffff85168152608060208201526000613e356080830186613643565b6001600160401b038516604084015282810360608401526130788185613643565b61ffff861681526001600160a01b038516602082015260a060408201819052600090613e8490830186613643565b84151560608401528281036080840152613e9e8185613643565b98975050505050505050565b60008060408385031215613ebd57600080fd5b505080516020909101519092909150565b60008219821115613ee157613ee1613b45565b500190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b61ffff8616815260a060208201526000613f4e60a0830187613643565b6001600160401b03861660408401528281036060840152613f6f8186613643565b90508281036080840152613e9e8185613643565b634e487b7160e01b600052601260045260246000fd5b600082613fa857613fa8613f83565b500490565b600061010061ffff8b168352806020840152613fcb8184018b613643565b6001600160401b038a166040850152606084018990526001600160a01b038816608085015260a0840187905283810360c0850152905061400b8186613643565b9150508260e08301529998505050505050505050565b6060815260006140346060830186613643565b6001600160401b039490941660208301525060400152919050565b60008261405e5761405e613f83565b500690565b61ffff8716815260c06020820152600061408060c0830188613643565b82810360408401526140928188613643565b6001600160a01b0387811660608601528616608085015283810360a085015290506140bd8185613643565b9998505050505050505050565b60ff60f81b8760f81b16815285600182015260006001600160401b0360c01b808760c01b166021840152856029840152808560c01b166049840152508251614119816051850160208701613617565b91909101605101979650505050505050565b600081600019048311821515161561414557614145613b45565b500290565b60006020828403121561415c57600080fd5b8151610bec816133a356fea26469706673582212200fa7c2b4ed034ffd63b80e64220925685fcdc0f756d71d886c75c2618c671c9764736f6c634300080a0033