0 txs
911 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
baseURI
viewfunction baseURI() view returns (string)
DEFAULT_PAYLOAD_SIZE_LIMIT
viewfunction DEFAULT_PAYLOAD_SIZE_LIMIT() view returns (uint256)
dstChainIdToBatchLimit
viewfunction dstChainIdToBatchLimit(uint16) view returns (uint256)
dstChainIdToTransferGas
viewfunction dstChainIdToTransferGas(uint16) view returns (uint256)
estimateSendBatchFee
viewfunction estimateSendBatchFee(uint16 _dstChainId, bytes _toAddress, uint256[] _tokenIds, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
estimateSendFee
viewfunction estimateSendFee(uint16 _dstChainId, bytes _toAddress, uint256 _tokenId, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
failedMessages
viewfunction failedMessages(uint16, bytes, uint64) view returns (bytes32)
FUNCTION_TYPE_SEND
viewfunction FUNCTION_TYPE_SEND() view returns (uint16)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getTokenIDsOfAddress
viewfunction getTokenIDsOfAddress(address _address) view returns (uint256[])
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isTrustedRemote
viewfunction isTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
lzEndpoint
viewfunction lzEndpoint() view returns (address)
minDstGasLookup
viewfunction minDstGasLookup(uint16, uint16) view returns (uint256)
minGasToTransferAndStore
viewfunction minGasToTransferAndStore() view returns (uint256)
name
viewfunction name() view returns (string)
operatorFilteringEnabled
viewfunction operatorFilteringEnabled() view returns (bool)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
payloadSizeLimitLookup
viewfunction payloadSizeLimitLookup(uint16) view returns (uint256)
precrime
viewfunction precrime() view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address, uint256)
storedCredits
viewfunction storedCredits(bytes32) view returns (uint16 srcChainId, address toAddress, uint256 index, bool creditsRemain)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
trustedRemoteLookup
viewfunction trustedRemoteLookup(uint16) view returns (bytes)
approve
nonpayablefunction approve(address operator, uint256 tokenId)
clearCredits
nonpayablefunction clearCredits(bytes _payload)
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
initialize
nonpayablefunction initialize(string _name, string _symbol, uint256 _minGasToTransfer, address _lzEndpoint)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
nonblockingLzReceive
nonpayablefunction nonblockingLzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
registerForOperatorFiltering
nonpayablefunction registerForOperatorFiltering(address subscriptionAddress, bool subscribe)
renounceOwnership
nonpayablefunction renounceOwnership()
retryMessage
payablefunction retryMessage(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload) payable
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
sendBatchFrom
payablefunction sendBatchFrom(address _from, uint16 _dstChainId, bytes _toAddress, uint256[] _tokenIds, address _refundAddress, address _zroPaymentAddress, bytes _adapterParams) payable
sendFrom
payablefunction sendFrom(address _from, uint16 _dstChainId, bytes _toAddress, uint256 _tokenId, address _refundAddress, address _zroPaymentAddress, bytes _adapterParams) payable
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string newBaseURI)
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setDefaultRoyalty
nonpayablefunction setDefaultRoyalty(address receiver, uint96 feeNumerator)
setDstChainIdToBatchLimit
nonpayablefunction setDstChainIdToBatchLimit(uint16 _dstChainId, uint256 _dstChainIdToBatchLimit)
setDstChainIdToTransferGas
nonpayablefunction setDstChainIdToTransferGas(uint16 _dstChainId, uint256 _dstChainIdToTransferGas)
setMinDstGas
nonpayablefunction setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas)
setMinGasToTransferAndStore
nonpayablefunction setMinGasToTransferAndStore(uint256 _minGasToTransferAndStore)
setOperatorFilteringEnabled
nonpayablefunction setOperatorFilteringEnabled(bool value)
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 _srcChainId, bytes _path)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
CreditCleared
event CreditCleared(bytes32 _hashedPayload)
CreditStored
event CreditStored(bytes32 _hashedPayload, bytes _payload)
Initialized
event Initialized(uint8 version)
MessageFailed
event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReceiveFromChain
event ReceiveFromChain(uint16 indexed _srcChainId, bytes indexed _srcAddress, address indexed _toAddress, uint256[] _tokenIds)
RetryMessageSuccess
event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash)
SendToChain
event SendToChain(uint16 indexed _dstChainId, address indexed _from, bytes indexed _toAddress, uint256[] _tokenIds)
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)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6154bf80620000f36000396000f3fe6080604052600436106103b75760003560e01c806370a08231116101f2578063b88d4fde1161010d578063df2a5b3b116100a0578063f2fde38b1161006f578063f2fde38b14610c26578063f5ecbdbc14610c46578063fa25f9b614610c66578063fb796e6c14610c9357600080fd5b8063df2a5b3b14610b7c578063e985e9c514610b9c578063eb8d72b714610be6578063f235364114610c0657600080fd5b8063c87b56dd116100dc578063c87b56dd14610b09578063cbed8b9c14610b29578063d12473a514610b49578063d1deba1f14610b6957600080fd5b8063b88d4fde14610a93578063baf3292d14610ab3578063bd3a13f614610ad3578063c446183414610af357600080fd5b80639ea5d6b111610185578063ab3ffb9311610154578063ab3ffb9314610a18578063af3fb21c14610a2b578063b353aaa714610a53578063b7c0b8e814610a7357600080fd5b80639ea5d6b1146109985780639f38369a146109b8578063a22cb465146109d8578063a6c3d165146109f857600080fd5b80638da5cb5b116101c15780638da5cb5b146109255780638ffa1f2a14610943578063950c8a741461096357806395d89b411461098357600080fd5b806370a0823114610898578063715018a6146108b85780637533d788146108cd5780638cfd8f5c146108ed57600080fd5b80632f745c59116102e25780634f6ccce7116102755780635f0ba118116102445780635f0ba118146108165780636352211e1461084357806366ad5c8a146108635780636c0360eb1461088357600080fd5b80634f6ccce714610774578063519056361461079457806355f804b3146107a75780635b8c41e6146107c757600080fd5b806342d65a8d116102b157806342d65a8d146106f157806346d8efad1461071157806348288190146107315780634ac3f4ff1461074757600080fd5b80632f745c59146106645780633d8b38f6146106845780633f1f4fa4146106a457806342842e0e146106d157600080fd5b80630b4cad4c1161035a57806322a3ecf91161032957806322a3ecf91461054d57806323b872dd146105d05780632a205e3d146105f05780632a55205a1461062557600080fd5b80630b4cad4c146104cd5780630df37483146104ed57806310ddb1371461050d57806318160ddd1461052d57600080fd5b806306fdde031161039657806306fdde031461043357806307e0db1714610455578063081812fc14610475578063095ea7b3146104ad57600080fd5b80621d3567146103bc57806301ffc9a7146103de57806304634d8d14610413575b600080fd5b3480156103c857600080fd5b506103dc6103d7366004614375565b610cae565b005b3480156103ea57600080fd5b506103fe6103f936600461441e565b610eca565b60405190151581526020015b60405180910390f35b34801561041f57600080fd5b506103dc61042e36600461445b565b610ef9565b34801561043f57600080fd5b50610448610f0f565b60405161040a91906144f8565b34801561046157600080fd5b506103dc61047036600461450b565b610fa2565b34801561048157600080fd5b50610495610490366004614526565b61100f565b6040516001600160a01b03909116815260200161040a565b3480156104b957600080fd5b506103dc6104c836600461453f565b611037565b3480156104d957600080fd5b506103dc6104e8366004614526565b61105c565b3480156104f957600080fd5b506103dc61050836600461456b565b6110cf565b34801561051957600080fd5b506103dc61052836600461450b565b6110ee565b34801561053957600080fd5b50610193545b60405190815260200161040a565b34801561055957600080fd5b506105a1610568366004614526565b60fe6020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b0316919060ff1684565b6040805161ffff90951685526001600160a01b039093166020850152918301521515606082015260800161040a565b3480156105dc57600080fd5b506103dc6105eb366004614587565b61112a565b3480156105fc57600080fd5b5061061061060b36600461469b565b611161565b6040805192835260208301919091520161040a565b34801561063157600080fd5b50610645610640366004614729565b611187565b604080516001600160a01b03909316835260208301919091520161040a565b34801561067057600080fd5b5061053f61067f36600461453f565b611237565b34801561069057600080fd5b506103fe61069f36600461474b565b6112ce565b3480156106b057600080fd5b5061053f6106bf36600461450b565b60686020526000908152604090205481565b3480156106dd57600080fd5b506103dc6106ec366004614587565b61139a565b3480156106fd57600080fd5b506103dc61070c36600461474b565b6113cb565b34801561071d57600080fd5b506103dc61072c36600461479d565b611435565b34801561073d57600080fd5b5061053f60fb5481565b34801561075357600080fd5b5061053f61076236600461450b565b60fc6020526000908152604090205481565b34801561078057600080fd5b5061053f61078f366004614526565b611447565b6103dc6107a23660046147d2565b6114dc565b3480156107b357600080fd5b506103dc6107c236600461488b565b6114f3565b3480156107d357600080fd5b5061053f6107e23660046148cc565b6097602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561082257600080fd5b50610836610831366004614929565b611508565b60405161040a9190614981565b34801561084f57600080fd5b5061049561085e366004614526565b6115a9565b34801561086f57600080fd5b506103dc61087e366004614375565b61160a565b34801561088f57600080fd5b506104486116e6565b3480156108a457600080fd5b5061053f6108b3366004614929565b611775565b3480156108c457600080fd5b506103dc6117fc565b3480156108d957600080fd5b506104486108e836600461450b565b611810565b3480156108f957600080fd5b5061053f610908366004614994565b606760209081526000928352604080842090915290825290205481565b34801561093157600080fd5b506033546001600160a01b0316610495565b34801561094f57600080fd5b506103dc61095e3660046149be565b611829565b34801561096f57600080fd5b50606954610495906001600160a01b031681565b34801561098f57600080fd5b50610448611a74565b3480156109a457600080fd5b506103dc6109b336600461456b565b611a84565b3480156109c457600080fd5b506104486109d336600461450b565b611b07565b3480156109e457600080fd5b506103dc6109f336600461479d565b611c1e565b348015610a0457600080fd5b506103dc610a1336600461474b565b611c3e565b6103dc610a26366004614a7b565b611cd1565b348015610a3757600080fd5b50610a40600181565b60405161ffff909116815260200161040a565b348015610a5f57600080fd5b50606554610495906001600160a01b031681565b348015610a7f57600080fd5b506103dc610a8e366004614b30565b611ce0565b348015610a9f57600080fd5b506103dc610aae366004614b4b565b611cfc565b348015610abf57600080fd5b506103dc610ace366004614929565b611d2e565b348015610adf57600080fd5b506103dc610aee366004614bb6565b611d8a565b348015610aff57600080fd5b5061053f61271081565b348015610b1557600080fd5b50610448610b24366004614526565b611ed5565b348015610b3557600080fd5b506103dc610b44366004614c35565b611f3b565b348015610b5557600080fd5b506103dc610b6436600461456b565b611fb4565b6103dc610b77366004614375565b612038565b348015610b8857600080fd5b506103dc610b97366004614ca3565b61224e565b348015610ba857600080fd5b506103fe610bb7366004614cdf565b6001600160a01b0391821660009081526101326020908152604080832093909416825291909152205460ff1690565b348015610bf257600080fd5b506103dc610c0136600461474b565b612300565b348015610c1257600080fd5b50610610610c21366004614d0d565b61235a565b348015610c3257600080fd5b506103dc610c41366004614929565b612408565b348015610c5257600080fd5b50610448610c61366004614d86565b612481565b348015610c7257600080fd5b5061053f610c8136600461450b565b60fd6020526000908152604090205481565b348015610c9f57600080fd5b506101f5546103fe9060ff1681565b6065546001600160a01b0316336001600160a01b031614610d165760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526066602052604081208054610d3490614dd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6090614dd3565b8015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b50505050509050805186869050148015610dc8575060008151115b8015610df0575080516020820120604051610de69088908890614e0e565b6040518091039020145b610e4b5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610d0d565b610ec18787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061251692505050565b50505050505050565b6000610ed58261258f565b80610ee45750610ee4826125ac565b80610ef35750610ef3826125d1565b92915050565b610f016125f6565b610f0b8282612650565b5050565b606061012d8054610f1f90614dd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4b90614dd3565b8015610f985780601f10610f6d57610100808354040283529160200191610f98565b820191906000526020600020905b815481529060010190602001808311610f7b57829003601f168201915b5050505050905090565b610faa6125f6565b6065546040516307e0db1760e01b815261ffff831660048201526001600160a01b03909116906307e0db17906024015b600060405180830381600087803b158015610ff457600080fd5b505af1158015611008573d6000803e3d6000fd5b5050505050565b600061101a8261274e565b50600090815261013160205260409020546001600160a01b031690565b816101f55460ff161561104d5761104d8161279e565b61105783836127e2565b505050565b6110646125f6565b600081116110ca5760405162461bcd60e51b815260206004820152602d60248201527f4f4e46543732313a206d696e476173546f5472616e73666572416e6453746f7260448201526c065206d757374206265203e203609c1b6064820152608401610d0d565b60fb55565b6110d76125f6565b61ffff909116600090815260686020526040902055565b6110f66125f6565b6065546040516310ddb13760e01b815261ffff831660048201526001600160a01b03909116906310ddb13790602401610fda565b826001600160a01b0381163314611150576101f55460ff1615611150576111503361279e565b61115b8484846128f3565b50505050565b600080611179878761117288612925565b878761235a565b915091509550959350505050565b60008281526101c4602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916111fe5750604080518082019091526101c3546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101516000906127109061121d906001600160601b031687614e34565b6112279190614e53565b91519350909150505b9250929050565b600061124283611775565b82106112a45760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610d0d565b506001600160a01b0391909116600090815261019160209081526040808320938352929052205490565b61ffff8316600090815260666020526040812080548291906112ef90614dd3565b80601f016020809104026020016040519081016040528092919081815260200182805461131b90614dd3565b80156113685780601f1061133d57610100808354040283529160200191611368565b820191906000526020600020905b81548152906001019060200180831161134b57829003601f168201915b50505050509050838360405161137f929190614e0e565b60405180910390208180519060200120149150509392505050565b826001600160a01b03811633146113c0576101f55460ff16156113c0576113c03361279e565b61115b848484612970565b6113d36125f6565b6065546040516342d65a8d60e01b81526001600160a01b03909116906342d65a8d9061140790869086908690600401614e9e565b600060405180830381600087803b15801561142157600080fd5b505af1158015610ec1573d6000803e3d6000fd5b61143d6125f6565b610f0b828261298b565b60006114536101935490565b82106114b65760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610d0d565b61019382815481106114ca576114ca614ebc565b90600052602060002001549050919050565b610ec18787876114eb88612925565b878787612a01565b6114fb6125f6565b6110576101f683836141f9565b6060600061151583611775565b90506000816001600160401b03811115611531576115316145c8565b60405190808252806020026020018201604052801561155a578160200160208202803683370190505b50905060005b828110156115a1576115728582611237565b82828151811061158457611584614ebc565b60209081029190910101528061159981614ed2565b915050611560565b509392505050565b600081815261012f60205260408120546001600160a01b031680610ef35760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610d0d565b3330146116685760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610d0d565b6116de8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250612be892505050565b505050505050565b6101f680546116f490614dd3565b80601f016020809104026020016040519081016040528092919081815260200182805461172090614dd3565b801561176d5780601f106117425761010080835404028352916020019161176d565b820191906000526020600020905b81548152906001019060200180831161175057829003601f168201915b505050505081565b60006001600160a01b0382166117df5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610d0d565b506001600160a01b03166000908152610130602052604090205490565b6118046125f6565b61180e6000612d3f565b565b606660205260009081526040902080546116f490614dd3565b8051602080830191909120600081815260fe90925260409091206002015460ff166118965760405162461bcd60e51b815260206004820152601a60248201527f4f4e46543732313a206e6f20637265646974732073746f7265640000000000006044820152606401610d0d565b6000828060200190518101906118ac9190614f32565b600084815260fe6020526040812080546001909101549294509092506118e89161ffff8216916201000090046001600160a01b03169085612d91565b600084815260fe602052604090206001015490915081116119665760405162461bcd60e51b815260206004820152603260248201527f4f4e46543732313a206e6f7420656e6f7567682067617320746f2070726f636560448201527139b99031b932b234ba103a3930b739b332b960711b6064820152608401610d0d565b81518114156119de57600083815260fe602052604080822080546001600160b01b031916815560018101929092556002909101805460ff19169055517fd7be02b8dd0d27bd0517a9cb4d7469ce27df4313821ae5ec1ff69acc594ba233906119d19085815260200190565b60405180910390a161115b565b60408051608081018252600085815260fe6020818152848320805461ffff8082168752620100008083046001600160a01b03908116868a019081529989019a8b52600160608a018181529d9098529590945295519651969095166001600160b01b031990951694909417949091160292909217815591519082015591516002909201805460ff1916921515929092179091555050565b606061012e8054610f1f90614dd3565b611a8c6125f6565b60008111611af05760405162461bcd60e51b815260206004820152602b60248201527f4f4e46543732313a20647374436861696e4964546f42617463684c696d69742060448201526a06d757374206265203e20360ac1b6064820152608401610d0d565b61ffff909116600090815260fc6020526040902055565b61ffff8116600090815260666020526040812080546060929190611b2a90614dd3565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5690614dd3565b8015611ba35780601f10611b7857610100808354040283529160200191611ba3565b820191906000526020600020905b815481529060010190602001808311611b8657829003601f168201915b50505050509050805160001415611bfc5760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610d0d565b611c17600060148351611c0f9190614fec565b839190612de3565b9392505050565b816101f55460ff1615611c3457611c348161279e565b6110578383612ef0565b611c466125f6565b818130604051602001611c5b93929190615003565b60408051601f1981840301815291815261ffff85166000908152606660209081529190208251611c909391929091019061427d565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce838383604051611cc493929190614e9e565b60405180910390a1505050565b610ec187878787878787612a01565b611ce86125f6565b6101f5805460ff1916911515919091179055565b836001600160a01b0381163314611d22576101f55460ff1615611d2257611d223361279e565b61100885858585612efb565b611d366125f6565b606980546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200160405180910390a150565b600054610100900460ff1615808015611daa5750600054600160ff909116105b80611dc45750303b158015611dc4575060005460ff166001145b611e275760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d0d565b6000805460ff191660011790558015611e4a576000805461ff0019166101001790555b611e5685858585612f2d565b611e5e612f78565b611e66612f78565b611e6e612f9f565b6101f5805460ff19166001179055611e88336102ee612650565b8015611008576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050505050565b6060611ee08261274e565b6000611eea612fbe565b90506000815111611f0a5760405180602001604052806000815250611c17565b80611f1484612fce565b604051602001611f25929190615029565b6040516020818303038152906040529392505050565b611f436125f6565b6065546040516332fb62e760e21b81526001600160a01b039091169063cbed8b9c90611f7b9088908890889088908890600401615058565b600060405180830381600087803b158015611f9557600080fd5b505af1158015611fa9573d6000803e3d6000fd5b505050505050505050565b611fbc6125f6565b600081116120215760405162461bcd60e51b815260206004820152602c60248201527f4f4e46543732313a20647374436861696e4964546f5472616e7366657247617360448201526b0206d757374206265203e20360a41b6064820152608401610d0d565b61ffff909116600090815260fd6020526040902055565b61ffff8616600090815260976020526040808220905161205b9088908890614e0e565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806120db5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610d0d565b8083836040516120ec929190614e0e565b60405180910390201461214b5760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610d0d565b61ffff8716600090815260976020526040808220905161216e9089908990614e0e565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252612206918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612be892505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e5878787878560405161223d959493929190615091565b60405180910390a150505050505050565b6122566125f6565b6000811161229e5760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610d0d565b61ffff83811660008181526067602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611cc4565b6123086125f6565b61ffff831660009081526066602052604090206123269083836141f9565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab838383604051611cc493929190614e9e565b600080600086866040516020016123729291906150cc565b60408051601f198184030181529082905260655463040a7bb160e41b83529092506001600160a01b0316906340a7bb10906123b9908b90309086908b908b906004016150fa565b6040805180830381865afa1580156123d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f9919061514e565b92509250509550959350505050565b6124106125f6565b6001600160a01b0381166124755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d0d565b61247e81612d3f565b50565b606554604051633d7b2f6f60e21b815261ffff808716600483015285166024820152306044820152606481018390526060916001600160a01b03169063f5ecbdbc90608401600060405180830381865afa1580156124e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261250b9190810190615172565b90505b949350505050565b6000806125795a60966366ad5c8a60e01b8989898960405160240161253e94939291906151a6565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190613062565b91509150816116de576116de86868686856130ec565b60006001600160e01b031982161580610ef35750610ef38261317a565b60006001600160e01b0319821663780e9d6360e01b1480610ef35750610ef38261258f565b60006001600160e01b0319821663152a902d60e11b1480610ef35750610ef3826125ac565b6033546001600160a01b0316331461180e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d0d565b6127106001600160601b03821611156126be5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610d0d565b6001600160a01b0382166127145760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610d0d565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b909102176101c355565b612757816131ba565b61247e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610d0d565b69c617113400112233445560005230601a5280603a52600080604460166daaeb6d7670e522a718067333cd4e5afa6127da573d6000803e3d6000fd5b6000603a5250565b60006127ed826115a9565b9050806001600160a01b0316836001600160a01b0316141561285b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610d0d565b336001600160a01b038216148061287757506128778133610bb7565b6128e95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610d0d565b61105783836131d8565b6128fe335b82613247565b61291a5760405162461bcd60e51b8152600401610d0d906151e4565b6110578383836132c6565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061295f5761295f614ebc565b602090810291909101015292915050565b61105783838360405180602001604052806000815250611cfc565b6001600160a01b0390911690637d3e3dbe816129b857826129b15750634420e4866129b8565b5063a0af29035b8060e01b60005230600452826024526004600060446000806daaeb6d7670e522a718067333cd4e5af16129f7578060005160e01c14156129f757600080fd5b5060006024525050565b6000845111612a525760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a20746f6b656e4964735b5d20697320656d7074790000000000006044820152606401610d0d565b835160011480612a76575061ffff8616600090815260fc6020526040902054845111155b612ad65760405162461bcd60e51b815260206004820152602b60248201527f4f4e46543732313a2062617463682073697a652065786365656473206473742060448201526a18985d18da081b1a5b5a5d60aa1b6064820152608401610d0d565b60005b8451811015612b1957612b07888888888581518110612afa57612afa614ebc565b602002602001015161343a565b80612b1181614ed2565b915050612ad9565b5060008585604051602001612b2f9291906150cc565b6040516020818303038152906040529050612b7487600184885160fd60008d61ffff1661ffff16815260200190815260200160002054612b6f9190614e34565b613523565b612b82878286868634613602565b85604051612b909190615231565b6040518091039020886001600160a01b03168861ffff167fe1b87c47fdeb4f9cbadbca9df3af7aba453bb6e501075d0440d88125b711522a88604051612bd69190614981565b60405180910390a45050505050505050565b60008082806020019051810190612bff9190614f32565b601482015191935091506000612c1788838386612d91565b90508251811015612ceb5784516020808701919091206040805160808101825261ffff808d1682526001600160a01b03808816838701908152838501888152600160608601818152600089815260fe909a529887902095518654935190941662010000026001600160b01b03199093169390941692909217178355519082015592516002909301805493151560ff199094169390931790925590517f10e0b70d256bccc84b7027506978bd8b68984a870788b93b479def144c839ad790612ce1908390899061524d565b60405180910390a1505b816001600160a01b031687604051612d039190615231565b60405180910390208961ffff167f5b821db8a46f8ecbe1941ba2f51cfeea9643268b56631f70d45e2a745d99026586604051612bd69190614981565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000825b825181101561250b5760fb545a1015612dad5761250b565b612dd18686858481518110612dc457612dc4614ebc565b602002602001015161378c565b80612ddb81614ed2565b915050612d95565b606081612df181601f615266565b1015612e305760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610d0d565b612e3a8284615266565b84511015612e7e5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610d0d565b606082158015612e9d5760405191506000825260208201604052612ee7565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612ed6578051835260209283019201612ebe565b5050858452601f01601f1916604052505b50949350505050565b610f0b3383836137ec565b612f053383613247565b612f215760405162461bcd60e51b8152600401610d0d906151e4565b61115b848484846138bc565b600054610100900460ff16612f545760405162461bcd60e51b8152600401610d0d9061527e565b612f5e84846138ef565b612f6661393f565b612f6f8161396f565b61115b826139b8565b600054610100900460ff1661180e5760405162461bcd60e51b8152600401610d0d9061527e565b61180e733cc6cdda760b79bafa08df41ecfa224f810dceb6600161298b565b60606101f68054610f1f90614dd3565b60606000612fdb836139df565b60010190506000816001600160401b03811115612ffa57612ffa6145c8565b6040519080825280601f01601f191660200182016040528015613024576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461305d576115a1565b61302e565b6000606060008060008661ffff166001600160401b03811115613087576130876145c8565b6040519080825280601f01601f1916602001820160405280156130b1576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156130d3578692505b828152826000602083013e909890975095505050505050565b8180519060200120609760008761ffff1661ffff1681526020019081526020016000208560405161311d9190615231565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90611ec690879087908790879087906152c9565b60006001600160e01b031982166380ac58cd60e01b14806131ab57506001600160e01b03198216635b5e139f60e01b145b80610ef35750610ef382613ab7565b600090815261012f60205260409020546001600160a01b0316151590565b60008181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061320e826115a9565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080613253836115a9565b9050806001600160a01b0316846001600160a01b0316148061329b57506001600160a01b038082166000908152610132602090815260408083209388168352929052205460ff165b8061250e5750836001600160a01b03166132b48461100f565b6001600160a01b031614949350505050565b826001600160a01b03166132d9826115a9565b6001600160a01b0316146132ff5760405162461bcd60e51b8152600401610d0d9061531b565b6001600160a01b0382166133615760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610d0d565b61336e8383836001613aec565b826001600160a01b0316613381826115a9565b6001600160a01b0316146133a75760405162461bcd60e51b8152600401610d0d9061531b565b60008181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080546000190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b613443336128f8565b6134a65760405162461bcd60e51b815260206004820152602e60248201527f4f4e46543732313a2073656e642063616c6c6572206973206e6f74206f776e6560448201526d1c881b9bdc88185c1c1c9bdd995960921b6064820152608401610d0d565b836001600160a01b03166134b9826115a9565b6001600160a01b03161461351a5760405162461bcd60e51b815260206004820152602260248201527f4f4e46543732313a2073656e642066726f6d20696e636f7272656374206f776e60448201526132b960f11b6064820152608401610d0d565b61115b81613af8565b600061352e83613b9e565b61ffff808716600090815260676020908152604080832093891683529290529081205491925090613560908490615266565b9050600081116135b25760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610d0d565b808210156116de5760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610d0d565b61ffff86166000908152606660205260408120805461362090614dd3565b80601f016020809104026020016040519081016040528092919081815260200182805461364c90614dd3565b80156136995780601f1061366e57610100808354040283529160200191613699565b820191906000526020600020905b81548152906001019060200180831161367c57829003601f168201915b5050505050905080516000141561370b5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610d0d565b613716878751613bfa565b60655460405162c5803160e81b81526001600160a01b039091169063c5803100908490613751908b9086908c908c908c908c90600401615360565b6000604051808303818588803b15801561376a57600080fd5b505af115801561377e573d6000803e3d6000fd5b505050505050505050505050565b613795816131ba565b15806137c157506137a5816131ba565b80156137c15750306137b6826115a9565b6001600160a01b0316145b6137ca57600080fd5b6137d3816131ba565b6137e1576110578282613c68565b6110573083836132c6565b816001600160a01b0316836001600160a01b0316141561384e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d0d565b6001600160a01b0383811660008181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6138c78484846132c6565b6138d384848484613c82565b61115b5760405162461bcd60e51b8152600401610d0d906153c7565b600054610100900460ff166139165760405162461bcd60e51b8152600401610d0d9061527e565b815161392a9061012d90602085019061427d565b5080516110579061012e90602084019061427d565b600054610100900460ff166139665760405162461bcd60e51b8152600401610d0d9061527e565b61180e33612d3f565b600054610100900460ff166139965760405162461bcd60e51b8152600401610d0d9061527e565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166110645760405162461bcd60e51b8152600401610d0d9061527e565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613a1e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613a4a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613a6857662386f26fc10000830492506010015b6305f5e1008310613a80576305f5e100830492506008015b6127108310613a9457612710830492506004015b60648310613aa6576064830492506002015b600a8310610ef35760010192915050565b60006001600160e01b031982166322bac5d960e01b1480610ef357506301ffc9a760e01b6001600160e01b0319831614610ef3565b61115b84848484613d7d565b6000613b03826115a9565b9050613b13816000846001613aec565b613b1c826115a9565b60008381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526101308452828520805460001901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000602282511015613bf25760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610d0d565b506022015190565b61ffff821660009081526068602052604090205480613c1857506127105b808211156110575760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610d0d565b610f0b828260405180602001604052806000815250613eac565b60006001600160a01b0384163b15613d7557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613cc6903390899088908890600401615419565b6020604051808303816000875af1925050508015613d01575060408051601f3d908101601f19168201909252613cfe91810190615456565b60015b613d5b573d808015613d2f576040519150601f19603f3d011682016040523d82523d6000602084013e613d34565b606091505b508051613d535760405162461bcd60e51b8152600401610d0d906153c7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061250e565b50600161250e565b6001811115613dec5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610d0d565b816001600160a01b038516613e4a57613e45816101938054600083815261019460205260408120829055600182018355919091527ffc8af01f449989052b52093a58fc9f42d0b11f0c6dd5dca0463dab62346ccc680155565b613e6d565b836001600160a01b0316856001600160a01b031614613e6d57613e6d8582613edf565b6001600160a01b038416613e8957613e8481613f81565b611008565b846001600160a01b0316846001600160a01b031614611008576110088482614036565b613eb6838361407c565b613ec36000848484613c82565b6110575760405162461bcd60e51b8152600401610d0d906153c7565b60006001613eec84611775565b613ef69190614fec565b60008381526101926020526040902054909150808214613f4c576001600160a01b038416600090815261019160209081526040808320858452825280832054848452818420819055835261019290915290208190555b506000918252610192602090815260408084208490556001600160a01b03909416835261019181528383209183525290812055565b61019354600090613f9490600190614fec565b600083815261019460205260408120546101938054939450909284908110613fbe57613fbe614ebc565b90600052602060002001549050806101938381548110613fe057613fe0614ebc565b6000918252602080832090910192909255828152610194909152604080822084905585825281205561019380548061401a5761401a615473565b6001900381819060005260206000200160009055905550505050565b600061404183611775565b6001600160a01b0390931660009081526101916020908152604080832086845282528083208590559382526101929052919091209190915550565b6001600160a01b0382166140d25760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d0d565b6140db816131ba565b156141285760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d0d565b614136600083836001613aec565b61413f816131ba565b1561418c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d0d565b6001600160a01b0382166000818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461420590614dd3565b90600052602060002090601f016020900481019282614227576000855561426d565b82601f106142405782800160ff1982351617855561426d565b8280016001018555821561426d579182015b8281111561426d578235825591602001919060010190614252565b506142799291506142f1565b5090565b82805461428990614dd3565b90600052602060002090601f0160209004810192826142ab576000855561426d565b82601f106142c457805160ff191683800117855561426d565b8280016001018555821561426d579182015b8281111561426d5782518255916020019190600101906142d6565b5b8082111561427957600081556001016142f2565b803561ffff8116811461431857600080fd5b919050565b60008083601f84011261432f57600080fd5b5081356001600160401b0381111561434657600080fd5b60208301915083602082850101111561123057600080fd5b80356001600160401b038116811461431857600080fd5b6000806000806000806080878903121561438e57600080fd5b61439787614306565b955060208701356001600160401b03808211156143b357600080fd5b6143bf8a838b0161431d565b90975095508591506143d360408a0161435e565b945060608901359150808211156143e957600080fd5b506143f689828a0161431d565b979a9699509497509295939492505050565b6001600160e01b03198116811461247e57600080fd5b60006020828403121561443057600080fd5b8135611c1781614408565b6001600160a01b038116811461247e57600080fd5b80356143188161443b565b6000806040838503121561446e57600080fd5b82356144798161443b565b915060208301356001600160601b038116811461449557600080fd5b809150509250929050565b60005b838110156144bb5781810151838201526020016144a3565b8381111561115b5750506000910152565b600081518084526144e48160208601602086016144a0565b601f01601f19169290920160200192915050565b602081526000611c1760208301846144cc565b60006020828403121561451d57600080fd5b611c1782614306565b60006020828403121561453857600080fd5b5035919050565b6000806040838503121561455257600080fd5b823561455d8161443b565b946020939093013593505050565b6000806040838503121561457e57600080fd5b61455d83614306565b60008060006060848603121561459c57600080fd5b83356145a78161443b565b925060208401356145b78161443b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614606576146066145c8565b604052919050565b60006001600160401b03821115614627576146276145c8565b50601f01601f191660200190565b600082601f83011261464657600080fd5b81356146596146548261460e565b6145de565b81815284602083860101111561466e57600080fd5b816020850160208301376000918101602001919091529392505050565b8035801515811461431857600080fd5b600080600080600060a086880312156146b357600080fd5b6146bc86614306565b945060208601356001600160401b03808211156146d857600080fd5b6146e489838a01614635565b9550604088013594506146f96060890161468b565b9350608088013591508082111561470f57600080fd5b5061471c88828901614635565b9150509295509295909350565b6000806040838503121561473c57600080fd5b50508035926020909101359150565b60008060006040848603121561476057600080fd5b61476984614306565b925060208401356001600160401b0381111561478457600080fd5b6147908682870161431d565b9497909650939450505050565b600080604083850312156147b057600080fd5b82356147bb8161443b565b91506147c96020840161468b565b90509250929050565b600080600080600080600060e0888a0312156147ed57600080fd5b87356147f88161443b565b965061480660208901614306565b955060408801356001600160401b038082111561482257600080fd5b61482e8b838c01614635565b965060608a0135955060808a013591506148478261443b565b90935060a0890135906148598261443b565b90925060c0890135908082111561486f57600080fd5b5061487c8a828b01614635565b91505092959891949750929550565b6000806020838503121561489e57600080fd5b82356001600160401b038111156148b457600080fd5b6148c08582860161431d565b90969095509350505050565b6000806000606084860312156148e157600080fd5b6148ea84614306565b925060208401356001600160401b0381111561490557600080fd5b61491186828701614635565b9250506149206040850161435e565b90509250925092565b60006020828403121561493b57600080fd5b8135611c178161443b565b600081518084526020808501945080840160005b838110156149765781518752958201959082019060010161495a565b509495945050505050565b602081526000611c176020830184614946565b600080604083850312156149a757600080fd5b6149b083614306565b91506147c960208401614306565b6000602082840312156149d057600080fd5b81356001600160401b038111156149e657600080fd5b61250e84828501614635565b60006001600160401b03821115614a0b57614a0b6145c8565b5060051b60200190565b600082601f830112614a2657600080fd5b81356020614a36614654836149f2565b82815260059290921b84018101918181019086841115614a5557600080fd5b8286015b84811015614a705780358352918301918301614a59565b509695505050505050565b600080600080600080600060e0888a031215614a9657600080fd5b8735614aa18161443b565b9650614aaf60208901614306565b955060408801356001600160401b0380821115614acb57600080fd5b614ad78b838c01614635565b965060608a0135915080821115614aed57600080fd5b614af98b838c01614a15565b955060808a01359150614b0b8261443b565b819450614b1a60a08b01614450565b935060c08a013591508082111561486f57600080fd5b600060208284031215614b4257600080fd5b611c178261468b565b60008060008060808587031215614b6157600080fd5b8435614b6c8161443b565b93506020850135614b7c8161443b565b92506040850135915060608501356001600160401b03811115614b9e57600080fd5b614baa87828801614635565b91505092959194509250565b60008060008060808587031215614bcc57600080fd5b84356001600160401b0380821115614be357600080fd5b614bef88838901614635565b95506020870135915080821115614c0557600080fd5b50614c1287828801614635565b935050604085013591506060850135614c2a8161443b565b939692955090935050565b600080600080600060808688031215614c4d57600080fd5b614c5686614306565b9450614c6460208701614306565b93506040860135925060608601356001600160401b03811115614c8657600080fd5b614c928882890161431d565b969995985093965092949392505050565b600080600060608486031215614cb857600080fd5b614cc184614306565b9250614ccf60208501614306565b9150604084013590509250925092565b60008060408385031215614cf257600080fd5b8235614cfd8161443b565b915060208301356144958161443b565b600080600080600060a08688031215614d2557600080fd5b614d2e86614306565b945060208601356001600160401b0380821115614d4a57600080fd5b614d5689838a01614635565b95506040880135915080821115614d6c57600080fd5b614d7889838a01614a15565b94506146f96060890161468b565b60008060008060808587031215614d9c57600080fd5b614da585614306565b9350614db360208601614306565b92506040850135614dc38161443b565b9396929550929360600135925050565b600181811c90821680614de757607f821691505b60208210811415614e0857634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614e4e57614e4e614e1e565b500290565b600082614e7057634e487b7160e01b600052601260045260246000fd5b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8416815260406020820152600061250b604083018486614e75565b634e487b7160e01b600052603260045260246000fd5b6000600019821415614ee657614ee6614e1e565b5060010190565b600082601f830112614efe57600080fd5b8151614f0c6146548261460e565b818152846020838601011115614f2157600080fd5b61250e8260208301602087016144a0565b60008060408385031215614f4557600080fd5b82516001600160401b0380821115614f5c57600080fd5b614f6886838701614eed565b9350602091508185015181811115614f7f57600080fd5b85019050601f81018613614f9257600080fd5b8051614fa0614654826149f2565b81815260059190911b82018301908381019088831115614fbf57600080fd5b928401925b82841015614fdd57835182529284019290840190614fc4565b80955050505050509250929050565b600082821015614ffe57614ffe614e1e565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b6000835161503b8184602088016144a0565b83519083019061504f8183602088016144a0565b01949350505050565b600061ffff808816835280871660208401525084604083015260806060830152615086608083018486614e75565b979650505050505050565b61ffff861681526080602082015260006150af608083018688614e75565b6001600160401b0394909416604083015250606001529392505050565b6040815260006150df60408301856144cc565b82810360208401526150f18185614946565b95945050505050565b61ffff861681526001600160a01b038516602082015260a060408201819052600090615128908301866144cc565b8415156060840152828103608084015261514281856144cc565b98975050505050505050565b6000806040838503121561516157600080fd5b505080516020909101519092909150565b60006020828403121561518457600080fd5b81516001600160401b0381111561519a57600080fd5b61250e84828501614eed565b61ffff851681526080602082015260006151c360808301866144cc565b6001600160401b0385166040840152828103606084015261508681856144cc565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600082516152438184602087016144a0565b9190910192915050565b82815260406020820152600061250e60408301846144cc565b6000821982111561527957615279614e1e565b500190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b61ffff8616815260a0602082015260006152e660a08301876144cc565b6001600160401b0386166040840152828103606084015261530781866144cc565b9050828103608084015261514281856144cc565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b61ffff8716815260c06020820152600061537d60c08301886144cc565b828103604084015261538f81886144cc565b6001600160a01b0387811660608601528616608085015283810360a085015290506153ba81856144cc565b9998505050505050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061544c908301846144cc565b9695505050505050565b60006020828403121561546857600080fd5b8151611c1781614408565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220370d3f28a1fb697536d037a720db7c9f1b21aaaa19244bddf79e4c26e79e409b64736f6c634300080c0033