Overview ERC721
Total Supply:
2,812 ORE

Holders:
1,291
Profile Summary
Blockchain:
C-Chain (43114)

Contract Source Code Verified (Partial Match)
Contract Name:
V2UniversalChainsONFT721

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Created At:
Tue, 08 Aug 2023 13:55:18 GMT
ILayerZeroEndpoint.sol
@layerzerolabs
solidity-examples
contracts
interfaces
ILayerZeroEndpoint.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_minGasToTransfer",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_layerZeroEndpoint",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_startMintId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_endMintId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_mintingFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_bridgeFee",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_protocolAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_onftOld",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "UniversalChainsONFT721_IncorrectMintingFee",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UniversalChainsONFT721_MaxLimitReached",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UniversalChainsONFT721_NoEarningsToClaim",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UniversalChainsONFT721_OnlyProtocolAddressCanClaim",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UniversalChainsONFT721_ReferralEarningsShareBipsIsTooHigh",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UniversalChainsONFT721_ReferrerCannotBeSender",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UniversalChainsONFT721_TokenURIIsLocked",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "uint16",
        "name": "dstChainId",
        "type": "uint16"
      }
    ],
    "name": "BridgeFeeEarned",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "oldBridgeFee",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "newBridgeFee",
        "type": "uint256"
      }
    ],
    "name": "BridgeFeeUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "_hashedPayload",
        "type": "bytes32"
      }
    ],
    "name": "CreditCleared",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "_hashedPayload",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "CreditStored",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "claimer",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "EarningsClaimed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_reason",
        "type": "bytes"
      }
    ],
    "name": "MessageFailed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "oldMintingFee",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "newMintingFee",
        "type": "uint256"
      }
    ],
    "name": "MintingFeeUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "referrer",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "referralEarnings",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "protocolEarnings",
        "type": "uint256"
      }
    ],
    "name": "ONFTMinted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "oldTokenId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "newTokenId",
        "type": "uint256"
      }
    ],
    "name": "OldToNewConversion",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldProtocolAddress",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newProtocolAddress",
        "type": "address"
      }
    ],
    "name": "ProtocolAddressUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "protocolAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "ProtocolEarningsClaimed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "indexed": true,
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "_toAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "_tokenIds",
        "type": "uint256[]"
      }
    ],
    "name": "ReceiveFromChain",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "oldReferralEarningsShareBips",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "newReferralEarningsShareBips",
        "type": "uint256"
      }
    ],
    "name": "ReferralEarningsShareBipsUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "referrer",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "newShareBips",
        "type": "uint256"
      }
    ],
    "name": "ReferrerToShareBipsUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "_payloadHash",
        "type": "bytes32"
      }
    ],
    "name": "RetryMessageSuccess",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "_from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bytes",
        "name": "_toAddress",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "_tokenIds",
        "type": "uint256[]"
      }
    ],
    "name": "SendToChain",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_dstChainIdToBatchLimit",
        "type": "uint256"
      }
    ],
    "name": "SetDstChainIdToBatchLimit",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_dstChainIdToTransferGas",
        "type": "uint256"
      }
    ],
    "name": "SetDstChainIdToTransferGas",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_type",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_minDstGas",
        "type": "uint256"
      }
    ],
    "name": "SetMinDstGas",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_minGasToTransferAndStore",
        "type": "uint256"
      }
    ],
    "name": "SetMinGasToTransferAndStore",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "precrime",
        "type": "address"
      }
    ],
    "name": "SetPrecrime",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_remoteChainId",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_path",
        "type": "bytes"
      }
    ],
    "name": "SetTrustedRemote",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "_remoteChainId",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_remoteAddress",
        "type": "bytes"
      }
    ],
    "name": "SetTrustedRemoteAddress",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "TokenURILocked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "string",
        "name": "oldTokenURI",
        "type": "string"
      },
      {
        "indexed": true,
        "internalType": "string",
        "name": "newTokenURI",
        "type": "string"
      }
    ],
    "name": "TokenURIUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DEFAULT_PAYLOAD_SIZE_LIMIT",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DENOMINATOR",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "FUNCTION_TYPE_SEND",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "amountMinted",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "amountOfMintsWithReferrer",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "bridgeFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "claimEarnings",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_referrer",
        "type": "address"
      }
    ],
    "name": "claimEarningsAsProtocol",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "claimProtocolEarnings",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "clearCredits",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "name": "dstChainIdToBatchLimit",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "name": "dstChainIdToTransferGas",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_toAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint256[]",
        "name": "_tokenIds",
        "type": "uint256[]"
      },
      {
        "internalType": "bool",
        "name": "_useZro",
        "type": "bool"
      },
      {
        "internalType": "bytes",
        "name": "_adapterParams",
        "type": "bytes"
      }
    ],
    "name": "estimateSendBatchFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "nativeFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "zroFee",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_toAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "_useZro",
        "type": "bool"
      },
      {
        "internalType": "bytes",
        "name": "_adapterParams",
        "type": "bytes"
      }
    ],
    "name": "estimateSendFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "nativeFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "zroFee",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "name": "failedMessages",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      }
    ],
    "name": "forceResumeReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_version",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_chainId",
        "type": "uint16"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_configType",
        "type": "uint256"
      }
    ],
    "name": "getConfig",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_remoteChainId",
        "type": "uint16"
      }
    ],
    "name": "getTrustedRemoteAddress",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isTokenURILocked",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      }
    ],
    "name": "isTrustedRemote",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lockTokenURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lzEndpoint",
    "outputs": [
      {
        "internalType": "contract ILayerZeroEndpoint",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "lzReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxMintId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "name": "minDstGasLookup",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "minGasToTransferAndStore",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "referrer",
        "type": "address"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintingFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nextMintId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "nonblockingLzReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "oldOnftToNew",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "onftOld",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "name": "payloadSizeLimitLookup",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "precrime",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "protocolAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "protocolEarningsClaimed",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "protocolEarningsOpen",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "referralEarningsClaimed",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "referralEarningsOpen",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "referralEarningsShareBips",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "referrerToShareBips",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_srcAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "_nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "_payload",
        "type": "bytes"
      }
    ],
    "name": "retryMessage",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_from",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_toAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint256[]",
        "name": "_tokenIds",
        "type": "uint256[]"
      },
      {
        "internalType": "address payable",
        "name": "_refundAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_zroPaymentAddress",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "_adapterParams",
        "type": "bytes"
      }
    ],
    "name": "sendBatchFrom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_from",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_toAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "address payable",
        "name": "_refundAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_zroPaymentAddress",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "_adapterParams",
        "type": "bytes"
      }
    ],
    "name": "sendFrom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_bridgeFee",
        "type": "uint256"
      }
    ],
    "name": "setBridgeFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_version",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_chainId",
        "type": "uint16"
      },
      {
        "internalType": "uint256",
        "name": "_configType",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_config",
        "type": "bytes"
      }
    ],
    "name": "setConfig",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "internalType": "uint256",
        "name": "_dstChainIdToBatchLimit",
        "type": "uint256"
      }
    ],
    "name": "setDstChainIdToBatchLimit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "internalType": "uint256",
        "name": "_dstChainIdToTransferGas",
        "type": "uint256"
      }
    ],
    "name": "setDstChainIdToTransferGas",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_packetType",
        "type": "uint16"
      },
      {
        "internalType": "uint256",
        "name": "_minGas",
        "type": "uint256"
      }
    ],
    "name": "setMinDstGas",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_minGasToTransferAndStore",
        "type": "uint256"
      }
    ],
    "name": "setMinGasToTransferAndStore",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_mintingFee",
        "type": "uint256"
      }
    ],
    "name": "setMintingFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_dstChainId",
        "type": "uint16"
      },
      {
        "internalType": "uint256",
        "name": "_size",
        "type": "uint256"
      }
    ],
    "name": "setPayloadSizeLimit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_precrime",
        "type": "address"
      }
    ],
    "name": "setPrecrime",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_protocolAddress",
        "type": "address"
      }
    ],
    "name": "setProtocolAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_version",
        "type": "uint16"
      }
    ],
    "name": "setReceiveVersion",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_referralEarningsShareBips",
        "type": "uint256"
      }
    ],
    "name": "setReferralEarningsShareBips",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "referrer",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "shareBips",
        "type": "uint256"
      }
    ],
    "name": "setReferrerToShareBips",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_version",
        "type": "uint16"
      }
    ],
    "name": "setSendVersion",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "newtokenURI",
        "type": "string"
      }
    ],
    "name": "setTokenURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_remoteChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_path",
        "type": "bytes"
      }
    ],
    "name": "setTrustedRemote",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_remoteChainId",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "_remoteAddress",
        "type": "bytes"
      }
    ],
    "name": "setTrustedRemoteAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "name": "storedCredits",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "srcChainId",
        "type": "uint16"
      },
      {
        "internalType": "address",
        "name": "toAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "creditsRemain",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "name": "trustedRemoteLookup",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
60a06040526127106015556107d0601d553480156200001d57600080fd5b5060405162005d8138038062005d818339810160408190526200004091620002b0565b6040518060400160405280601281526020017127b6b734a937b1b59022b234b1ba39902b1960711b815250604051806040016040528060038152602001624f524560e81b8152508989838383838080620000a9620000a36200019960201b60201c565b6200019d565b6001600160a01b031660805250600160065581620001195760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b606482015260840160405180910390fd5b5060075581516200013290600b906020850190620001ed565b5080516200014890600c906020840190620001ed565b505050601799909955505050601894909455601a92909255601b55601c80546001600160a01b039283166001600160a01b031991821617909155601680549290931691161790555062000368915050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001fb906200032b565b90600052602060002090601f0160209004810192826200021f57600085556200026a565b82601f106200023a57805160ff19168380011785556200026a565b828001600101855582156200026a579182015b828111156200026a5782518255916020019190600101906200024d565b50620002789291506200027c565b5090565b5b808211156200027857600081556001016200027d565b80516001600160a01b0381168114620002ab57600080fd5b919050565b600080600080600080600080610100898b031215620002ce57600080fd5b88519750620002e060208a0162000293565b965060408901519550606089015194506080890151935060a089015192506200030c60c08a0162000293565b91506200031c60e08a0162000293565b90509295985092959890939650565b600181811c908216806200034057607f821691505b602082108114156200036257634e487b7160e01b600052602260045260246000fd5b50919050565b6080516159c5620003bc60003960008181610ca501528181610f900152818161129401528181611519015281816117ef015281816126a101528181612fec0152818161399d015261435a01526159c56000f3fe6080604052600436106104935760003560e01c8063763a842611610260578063baf3292d11610144578063e0e0b2d8116100c1578063eee95d6a11610085578063eee95d6a14610eb9578063f235364114610ed3578063f2fde38b14610ef3578063f5ecbdbc14610f13578063fa25f9b614610f33578063fc83db9414610f6057600080fd5b8063e0e0b2d814610dfa578063e1d4c87014610e1a578063e985e9c514610e30578063eb8d72b714610e79578063ed329f3814610e9957600080fd5b8063d12473a511610108578063d12473a514610d72578063d1deba1f14610d92578063d9ceab1314610da5578063df2a5b3b14610dba578063e0df5b6f14610dda57600080fd5b8063baf3292d14610ce7578063c446183414610d07578063c87b56dd14610d1d578063cbed8b9c14610d3d578063cc144e6b14610d5d57600080fd5b8063998cdf83116101dd578063aa4d35cc116101a1578063aa4d35cc14610c15578063ab3ffb9314610c42578063af3fb21c14610c55578063b005b6e214610c7d578063b353aaa714610c93578063b88d4fde14610cc757600080fd5b8063998cdf8314610b755780639ea5d6b114610b955780639f38369a14610bb5578063a22cb46514610bd5578063a6c3d16514610bf557600080fd5b80638ffa1f2a116102245780638ffa1f2a14610aea578063918f867414610b0a578063950c8a7414610b2057806395d0d96614610b4057806395d89b4114610b6057600080fd5b8063763a842614610a3b5780637af284d514610a6857806382b12dd714610a7e5780638cfd8f5c14610a945780638da5cb5b14610acc57600080fd5b80633f1f4fa4116103875780635a64ad951161030457806366ad5c8a116102c857806366ad5c8a1461099d5780636a627842146109bd5780636aa99da3146109d057806370a08231146109e6578063715018a614610a065780637533d78814610a1b57600080fd5b80635a64ad95146108e35780635b8c41e6146108f95780635e5a9e30146109485780636352211e1461095d57806366038eb41461097d57600080fd5b80634f6ccce71161034b5780634f6ccce71461085a578063519056361461087a57806353806b681461088d578063572625f8146108a357806358e47004146108c357600080fd5b80633f1f4fa4146107aa57806342842e0e146107d757806342d65a8d146107f757806348288190146108175780634ac3f4ff1461082d57600080fd5b80631249c58b11610415578063250fed95116103d9578063250fed95146106f35780632a205e3d1461071f5780632f745c59146107545780633339f8ca146107745780633d8b38f61461078a57600080fd5b80631249c58b1461060957806318160ddd1461061157806322a3ecf914610630578063238a4709146106b357806323b872dd146106d357600080fd5b8063081812fc1161045c578063081812fc14610569578063095ea7b3146105895780630b4cad4c146105a95780630df37483146105c957806310ddb137146105e957600080fd5b80621d35671461049857806301ffc9a7146104ba5780630676c1b7146104ef57806306fdde031461052757806307e0db1714610549575b600080fd5b3480156104a457600080fd5b506104b86104b3366004614963565b610f8d565b005b3480156104c657600080fd5b506104da6104d5366004614a0c565b6111be565b60405190151581526020015b60405180910390f35b3480156104fb57600080fd5b50601c5461050f906001600160a01b031681565b6040516001600160a01b0390911681526020016104e6565b34801561053357600080fd5b5061053c6111e1565b6040516104e69190614a81565b34801561055557600080fd5b506104b8610564366004614a94565b611273565b34801561057557600080fd5b5061050f610584366004614aaf565b6112fc565b34801561059557600080fd5b506104b86105a4366004614ae8565b611323565b3480156105b557600080fd5b506104b86105c4366004614aaf565b611439565b3480156105d557600080fd5b506104b86105e4366004614b14565b6114d9565b3480156105f557600080fd5b506104b8610604366004614a94565b6114f8565b6104b8611550565b34801561061d57600080fd5b506013545b6040519081526020016104e6565b34801561063c57600080fd5b5061068461064b366004614aaf565b600a6020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b0316919060ff1684565b6040805161ffff90951685526001600160a01b03909316602085015291830152151560608201526080016104e6565b3480156106bf57600080fd5b506104b86106ce366004614aaf565b61155c565b3480156106df57600080fd5b506104b86106ee366004614b30565b61159d565b3480156106ff57600080fd5b5061062261070e366004614b71565b602080526000908152604090205481565b34801561072b57600080fd5b5061073f61073a366004614c69565b6115cf565b604080519283526020830191909152016104e6565b34801561076057600080fd5b5061062261076f366004614ae8565b611653565b34801561078057600080fd5b5061062260225481565b34801561079657600080fd5b506104da6107a5366004614cf7565b6116e9565b3480156107b657600080fd5b506106226107c5366004614a94565b60036020526000908152604090205481565b3480156107e357600080fd5b506104b86107f2366004614b30565b6117b5565b34801561080357600080fd5b506104b8610812366004614cf7565b6117d0565b34801561082357600080fd5b5061062260075481565b34801561083957600080fd5b50610622610848366004614a94565b60086020526000908152604090205481565b34801561086657600080fd5b50610622610875366004614aaf565b611856565b6104b8610888366004614d49565b6118e9565b34801561089957600080fd5b5061062260235481565b3480156108af57600080fd5b506104b86108be366004614ae8565b611900565b3480156108cf57600080fd5b506104b86108de366004614b71565b611972565b3480156108ef57600080fd5b50610622601a5481565b34801561090557600080fd5b50610622610914366004614e02565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561095457600080fd5b506104b86119cc565b34801561096957600080fd5b5061050f610978366004614aaf565b611a30565b34801561098957600080fd5b506104b8610998366004614aaf565b611a90565b3480156109a957600080fd5b506104b86109b8366004614963565b611af4565b6104b86109cb366004614b71565b611bd0565b3480156109dc57600080fd5b5061062260175481565b3480156109f257600080fd5b50610622610a01366004614b71565b611dbc565b348015610a1257600080fd5b506104b8611e42565b348015610a2757600080fd5b5061053c610a36366004614a94565b611e54565b348015610a4757600080fd5b50610622610a56366004614b71565b601f6020526000908152604090205481565b348015610a7457600080fd5b5061062260195481565b348015610a8a57600080fd5b50610622601b5481565b348015610aa057600080fd5b50610622610aaf366004614e5f565b600260209081526000928352604080842090915290825290205481565b348015610ad857600080fd5b506000546001600160a01b031661050f565b348015610af657600080fd5b506104b8610b05366004614e92565b611eee565b348015610b1657600080fd5b5061062260155481565b348015610b2c57600080fd5b5060045461050f906001600160a01b031681565b348015610b4c57600080fd5b506104b8610b5b366004614b71565b61213a565b348015610b6c57600080fd5b5061053c612291565b348015610b8157600080fd5b506104b8610b90366004614aaf565b6122a0565b348015610ba157600080fd5b506104b8610bb0366004614b14565b6122e1565b348015610bc157600080fd5b5061053c610bd0366004614a94565b612398565b348015610be157600080fd5b506104b8610bf0366004614ec6565b6124af565b348015610c0157600080fd5b506104b8610c10366004614cf7565b6124be565b348015610c2157600080fd5b50610622610c30366004614b71565b60216020526000908152604090205481565b6104b8610c50366004614f7b565b612551565b348015610c6157600080fd5b50610c6a600181565b60405161ffff90911681526020016104e6565b348015610c8957600080fd5b50610622601d5481565b348015610c9f57600080fd5b5061050f7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cd357600080fd5b506104b8610ce2366004615030565b612560565b348015610cf357600080fd5b506104b8610d02366004614b71565b612598565b348015610d1357600080fd5b5061062261271081565b348015610d2957600080fd5b5061053c610d38366004614aaf565b6125ee565b348015610d4957600080fd5b506104b8610d5836600461509b565b612682565b348015610d6957600080fd5b506104b8612717565b348015610d7e57600080fd5b506104b8610d8d366004614b14565b61283a565b6104b8610da0366004614963565b6128ea565b348015610db157600080fd5b506104b8612b00565b348015610dc657600080fd5b506104b8610dd5366004615109565b612bf9565b348015610de657600080fd5b506104b8610df5366004615145565b612cab565b348015610e0657600080fd5b506104b8610e15366004614aaf565b612dd6565b348015610e2657600080fd5b5061062260185481565b348015610e3c57600080fd5b506104da610e4b36600461518d565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205460ff1690565b348015610e8557600080fd5b506104b8610e94366004614cf7565b612ebd565b348015610ea557600080fd5b5060165461050f906001600160a01b031681565b348015610ec557600080fd5b506025546104da9060ff1681565b348015610edf57600080fd5b5061073f610eee3660046151c6565b612f17565b348015610eff57600080fd5b506104b8610f0e366004614b71565b612f45565b348015610f1f57600080fd5b5061053c610f2e36600461523f565b612fbb565b348015610f3f57600080fd5b50610622610f4e366004614a94565b60096020526000908152604090205481565b348015610f6c57600080fd5b50610622610f7b366004614b71565b601e6020526000908152604090205481565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461100a5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff8616600090815260016020526040812080546110289061528c565b80601f01602080910402602001604051908101604052809291908181526020018280546110549061528c565b80156110a15780601f10611076576101008083540402835291602001916110a1565b820191906000526020600020905b81548152906001019060200180831161108457829003601f168201915b505050505090508051868690501480156110bc575060008151115b80156110e45750805160208201206040516110da90889088906152c7565b6040518091039020145b61113f5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401611001565b6111b58787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061306e92505050565b50505050505050565b60006001600160e01b0319821615806111db57506111db826130e7565b92915050565b6060600b80546111f09061528c565b80601f016020809104026020016040519081016040528092919081815260200182805461121c9061528c565b80156112695780601f1061123e57610100808354040283529160200191611269565b820191906000526020600020905b81548152906001019060200180831161124c57829003601f168201915b5050505050905090565b61127b61310c565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b1580156112e157600080fd5b505af11580156112f5573d6000803e3d6000fd5b5050505050565b600061130782613166565b506000908152600f60205260409020546001600160a01b031690565b600061132e82611a30565b9050806001600160a01b0316836001600160a01b0316141561139c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401611001565b336001600160a01b03821614806113b857506113b88133610e4b565b61142a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401611001565b61143483836131b6565b505050565b61144161310c565b6000811161149d5760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b6064820152608401611001565b60078190556040518181527ffebbc4f8bb9ec2313950c718d43123124b15778efda4c1f1d529de2995b4f34d906020015b60405180910390a150565b6114e161310c565b61ffff909116600090815260036020526040902055565b61150061310c565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb137906024016112c7565b61155a6000611bd0565b565b61156461310c565b601a805490829055604051829082907fc24d648b8b29d6566f302551df9152ced5a44785e31f38d1d047c8168dd3451990600090a35050565b6115a8335b82613224565b6115c45760405162461bcd60e51b8152600401611001906152d7565b6114348383836132a2565b6000803063f235364188886115e389613413565b88886040518663ffffffff1660e01b815260040161160595949392919061535f565b6040805180830381865afa158015611621573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164591906153b6565b915091509550959350505050565b600061165e83611dbc565b82106116c05760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401611001565b506001600160a01b03919091166000908152601160209081526040808320938352929052205490565b61ffff83166000908152600160205260408120805482919061170a9061528c565b80601f01602080910402602001604051908101604052809291908181526020018280546117369061528c565b80156117835780601f1061175857610100808354040283529160200191611783565b820191906000526020600020905b81548152906001019060200180831161176657829003601f168201915b50505050509050838360405161179a9291906152c7565b60405180910390208180519060200120149150509392505050565b61143483838360405180602001604052806000815250612560565b6117d861310c565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d9061182890869086908690600401615403565b600060405180830381600087803b15801561184257600080fd5b505af11580156111b5573d6000803e3d6000fd5b600061186160135490565b82106118c45760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401611001565b601382815481106118d7576118d7615421565b90600052602060002001549050919050565b6111b58787876118f888613413565b87878761345e565b61190861310c565b60155481111561192b57604051632c6afc6b60e01b815260040160405180910390fd5b6001600160a01b038216600081815260216020526040808220849055518392917fb71a050e7329e65bc477e712b3e8737f9988cf6b059c3da6fea14b22cfd9ac3f91a35050565b61197a61310c565b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f2756814479f687d805be12ef7dfd27c72bc645462236412ee56a627f389e4e3390600090a35050565b6119d461310c565b60255460ff16156119f857604051632126323360e01b815260040160405180910390fd5b6025805460ff191660011790556040517fa16ef1d57052da76658ef579a7c207409f7c895e180172c9e47756f136ef249c90600090a1565b6000818152600d60205260408120546001600160a01b0316806111db5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401611001565b611a9861310c565b611388811115611abb57604051632c6afc6b60e01b815260040160405180910390fd5b601d805490829055604051829082907fe9bbf0e4ea1260e88f283fe8b9e553a70a721a95f14120d229e072f8e87717f190600090a35050565b333014611b525760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401611001565b611bc88686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152899350915087908790819084018382808284376000920191909152506134d092505050565b505050505050565b6018546017541115611bf5576040516352b1c17f60e01b815260040160405180910390fd5b6001600160a01b038116331415611c1f57604051630cd0ed9f60e41b815260040160405180910390fd5b601a543414611c4157604051632ea462a760e01b815260040160405180910390fd5b60198054906000611c518361544d565b9091555050601780549081906000611c688361544d565b9091555050601a546000906001600160a01b03841615611d4c576001600160a01b03841660009081526021602052604081205415611cbe576001600160a01b038516600090815260216020526040902054611cc2565b601d545b6001600160a01b03861660009081526020805260408120805492935090611ce88361544d565b919050555060155481601a54611cfe9190615468565b611d089190615487565b925082601a54611d1891906154a9565b6001600160a01b0386166000908152601e6020526040812080549294508592909190611d459084906154c0565b9091555050505b8060226000828254611d5e91906154c0565b90915550611d6e90503384613639565b604080518381526020810183905284916001600160a01b0387169133917f03ae4d26ba7241097fdc1ff8b8074252686f09cdb03bcfbcff676de5c979bf26910160405180910390a450505050565b60006001600160a01b038216611e265760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401611001565b506001600160a01b03166000908152600e602052604090205490565b611e4a61310c565b61155a6000613653565b60016020526000908152604090208054611e6d9061528c565b80601f0160208091040260200160405190810160405280929190818152602001828054611e999061528c565b8015611ee65780601f10611ebb57610100808354040283529160200191611ee6565b820191906000526020600020905b815481529060010190602001808311611ec957829003601f168201915b505050505081565b611ef66136a3565b80516020808301919091206000818152600a90925260409091206002015460ff16611f575760405162461bcd60e51b81526020600482015260116024820152701b9bc818dc99591a5d1cc81cdd1bdc9959607a1b6044820152606401611001565b600082806020019051810190611f6d919061551d565b6000848152600a602052604081208054600190910154929450909250611fa99161ffff8216916201000090046001600160a01b031690856136fd565b6000848152600a6020526040902060010154909150811161201e5760405162461bcd60e51b815260206004820152602960248201527f6e6f7420656e6f7567682067617320746f2070726f6365737320637265646974604482015268103a3930b739b332b960b91b6064820152608401611001565b8151811415612096576000838152600a602052604080822080546001600160b01b031916815560018101929092556002909101805460ff19169055517fd7be02b8dd0d27bd0517a9cb4d7469ce27df4313821ae5ec1ff69acc594ba233906120899085815260200190565b60405180910390a161212a565b604080516080810182526000858152600a6020818152848320805461ffff80821687526001600160a01b03620100008084048216868a019081529989018b8152600160608b01818152998f90529790965297519851169096026001600160b01b03199091169690951695909517939093178455915191830191909155516002909101805491151560ff199092169190911790555b5050506121376001600655565b50565b601c546001600160a01b0316336001600160a01b03161461216e57604051630397ba2960e61b815260040160405180910390fd5b6001600160a01b0381166000908152601e6020526040902054806121a55760405163a4c3a61b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152601e60205260408120819055602380548392906121d29084906154c0565b9091555050601c546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612224576040519150601f19603f3d011682016040523d82523d6000602084013e612229565b606091505b505090508061224a5760405162461bcd60e51b8152600401611001906155d7565b601c546040518381526001600160a01b03909116907f6a8d334a32dfb49dae325dba76deb51b0b8f5ea50b1cdfa70710f4dc1b9c24c59060200160405180910390a2505050565b6060600c80546111f09061528c565b6122a861310c565b601b805490829055604051829082907f3e7af433b010df0902f945628a14ef63c63e1e5e8306127bde522445a470588f90600090a35050565b6122e961310c565b600081116123445760405162461bcd60e51b815260206004820152602260248201527f647374436861696e4964546f42617463684c696d6974206d757374206265203e604482015261020360f41b6064820152608401611001565b61ffff8216600081815260086020908152604091829020849055815192835282018390527f7315f7654d594ead24a30160ed9ba2d23247f543016b918343591e93d7afdb6d91015b60405180910390a15050565b61ffff81166000908152600160205260408120805460609291906123bb9061528c565b80601f01602080910402602001604051908101604052809291908181526020018280546123e79061528c565b80156124345780601f1061240957610100808354040283529160200191612434565b820191906000526020600020905b81548152906001019060200180831161241757829003601f168201915b5050505050905080516000141561248d5760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401611001565b6124a86000601483516124a091906154a9565b83919061374f565b9392505050565b6124ba33838361385c565b5050565b6124c661310c565b8181306040516020016124db93929190615605565b60408051601f1981840301815291815261ffff85166000908152600160209081529190208251612510939192909101906147e0565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161254493929190615403565b60405180910390a1505050565b6111b58787878787878761345e565b61256a3383613224565b6125865760405162461bcd60e51b8152600401611001906152d7565b6125928484848461392b565b50505050565b6125a061310c565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020016114ce565b6060602480546125fd9061528c565b80601f01602080910402602001604051908101604052809291908181526020018280546126299061528c565b80156126765780601f1061264b57610100808354040283529160200191612676565b820191906000526020600020905b81548152906001019060200180831161265957829003601f168201915b50505050509050919050565b61268a61310c565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c906126de908890889088908890889060040161562b565b600060405180830381600087803b1580156126f857600080fd5b505af115801561270c573d6000803e3d6000fd5b505050505050505050565b601c546001600160a01b0316336001600160a01b03161461274b57604051630397ba2960e61b815260040160405180910390fd5b6022548061276c5760405163a4c3a61b60e01b815260040160405180910390fd5b6000602281905550806023600082825461278691906154c0565b9091555050604051600090339083908381818185875af1925050503d80600081146127cd576040519150601f19603f3d011682016040523d82523d6000602084013e6127d2565b606091505b50509050806127f35760405162461bcd60e51b8152600401611001906155d7565b601c546040518381526001600160a01b03909116907f14a6770a5ea104b5a2786ef29ae0b7519505f923bd33a6aa0e467649e2f10be6906020015b60405180910390a25050565b61284261310c565b6000811161289e5760405162461bcd60e51b815260206004820152602360248201527f647374436861696e4964546f5472616e73666572476173206d7573742062652060448201526203e20360ec1b6064820152608401611001565b61ffff8216600081815260096020908152604091829020849055815192835282018390527fc46df2983228ac2d9754e94a0d565e6671665dc8ad38602bc8e544f0685a29fb910161238c565b61ffff8616600090815260056020526040808220905161290d90889088906152c7565b90815260408051602092819003830190206001600160401b0387166000908152925290205490508061298d5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401611001565b80838360405161299e9291906152c7565b6040518091039020146129fd5760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401611001565b61ffff87166000908152600560205260408082209051612a2090899089906152c7565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252612ab8918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506134d092505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051612aef959493929190615664565b60405180910390a150505050505050565b336000908152601e602052604090205480612b2e5760405163a4c3a61b60e01b815260040160405180910390fd5b336000908152601e60209081526040808320839055601f90915281208054839290612b5a9084906154c0565b9091555050604051600090339083908381818185875af1925050503d8060008114612ba1576040519150601f19603f3d011682016040523d82523d6000602084013e612ba6565b606091505b5050905080612bc75760405162461bcd60e51b8152600401611001906155d7565b60405182815233907f6a8d334a32dfb49dae325dba76deb51b0b8f5ea50b1cdfa70710f4dc1b9c24c59060200161282e565b612c0161310c565b60008111612c495760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401611001565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001612544565b612cb361310c565b600060248054612cc29061528c565b80601f0160208091040260200160405190810160405280929190818152602001828054612cee9061528c565b8015612d3b5780601f10612d1057610100808354040283529160200191612d3b565b820191906000526020600020905b815481529060010190602001808311612d1e57829003601f168201915b5050602554939450505060ff909116159050612d6a57604051632126323360e01b815260040160405180910390fd5b8151612d7d9060249060208501906147e0565b5081604051612d8c919061569f565b604051809103902081604051612da2919061569f565b604051908190038120907ffd07e2c2d6dc82f4d6b1b46f25e49eb888aba92d238fb40945856412cce2f2dd90600090a35050565b60198054906000612de68361544d565b9091555050601780549081906000612dfd8361544d565b90915550506016546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401600060405180830381600087803b158015612e6257600080fd5b505af1158015612e76573d6000803e3d6000fd5b50505050612e8a612e843390565b82613639565b6040518190839033907f2932d75b1fcddc05bbaa0f76a3eb817df126c550db511c3941fcb78b5f89d8bf90600090a45050565b612ec561310c565b61ffff83166000908152600160205260409020612ee3908383614864565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161254493929190615403565b600080612f27878787878761395e565b601b549193509150612f3990836154c0565b91509550959350505050565b612f4d61310c565b6001600160a01b038116612fb25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611001565b61213781613653565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa15801561303b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261306391908101906156bb565b90505b949350505050565b6000806130d15a60966366ad5c8a60e01b8989898960405160240161309694939291906156ef565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190613a29565b9150915081611bc857611bc88686868685613ab3565b60006001600160e01b0319821663780e9d6360e01b14806111db57506111db82613b50565b6000546001600160a01b0316331461155a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611001565b61316f81613b6d565b6121375760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401611001565b6000818152600f6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906131eb82611a30565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061323083611a30565b9050806001600160a01b0316846001600160a01b0316148061327757506001600160a01b0380821660009081526010602090815260408083209388168352929052205460ff165b806130665750836001600160a01b0316613290846112fc565b6001600160a01b031614949350505050565b826001600160a01b03166132b582611a30565b6001600160a01b0316146132db5760405162461bcd60e51b81526004016110019061572d565b6001600160a01b03821661333d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401611001565b61334a8383836001613b8a565b826001600160a01b031661335d82611a30565b6001600160a01b0316146133835760405162461bcd60e51b81526004016110019061572d565b6000818152600f6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600e8552838620805460001901905590871680865283862080546001019055868652600d90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061344d5761344d615421565b602090810291909101015292915050565b6000601b543461346e91906154a9565b9050601b5460225461348091906154c0565b6022556134938888888888888888613b96565b601b5460405161ffff891691907f03d9859f08e12254abdf67e11e2d4e08e635a1189c868a784ae79b3d7e47284d90600090a35050505050505050565b600080828060200190518101906134e7919061551d565b6014820151919350915060006134ff888383866136fd565b905082518110156135d35784516020808701919091206040805160808101825261ffff808d1682526001600160a01b038088168387019081528385018881526001606086018181526000898152600a909a529887902095518654935190941662010000026001600160b01b03199093169390941692909217178355519082015592516002909301805493151560ff199094169390931790925590517f10e0b70d256bccc84b7027506978bd8b68984a870788b93b479def144c839ad7906135c99083908990615772565b60405180910390a1505b816001600160a01b0316876040516135eb919061569f565b60405180910390208961ffff167f5b821db8a46f8ecbe1941ba2f51cfeea9643268b56631f70d45e2a745d99026586604051613627919061578b565b60405180910390a45050505050505050565b6124ba828260405180602001604052806000815250613d6b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600260065414156136f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611001565b6002600655565b6000825b8251811015613063576007545a101561371957613063565b61373d868685848151811061373057613730615421565b6020026020010151613d9e565b806137478161544d565b915050613701565b60608161375d81601f6154c0565b101561379c5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401611001565b6137a682846154c0565b845110156137ea5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401611001565b6060821580156138095760405191506000825260208201604052613853565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561384257805183526020928301920161382a565b5050858452601f01601f1916604052505b50949350505050565b816001600160a01b0316836001600160a01b031614156138be5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401611001565b6001600160a01b03838116600081815260106020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6139368484846132a2565b61394284848484613dfe565b6125925760405162461bcd60e51b81526004016110019061579e565b600080600086866040516020016139769291906157f0565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906139da908b90309086908b908b9060040161581e565b6040805180830381865afa1580156139f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1a91906153b6565b92509250509550959350505050565b6000606060008060008661ffff166001600160401b03811115613a4e57613a4e614b8e565b6040519080825280601f01601f191660200182016040528015613a78576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115613a9a578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff16815260200190815260200160002085604051613ae4919061569f565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90613b419087908790879087908790615866565b60405180910390a15050505050565b60006001600160e01b0319821615806111db57506111db82613ef9565b6000908152600d60205260409020546001600160a01b0316151590565b61259284848484613f39565b6000855111613bdd5760405162461bcd60e51b8152602060048201526013602482015272746f6b656e4964735b5d20697320656d70747960681b6044820152606401611001565b845160011480613c01575061ffff8716600090815260086020526040902054855111155b613c585760405162461bcd60e51b815260206004820152602260248201527f62617463682073697a65206578636565647320647374206261746368206c696d6044820152611a5d60f21b6064820152608401611001565b60005b8551811015613c9b57613c89898989898581518110613c7c57613c7c615421565b6020026020010151614066565b80613c938161544d565b915050613c5b565b5060008686604051602001613cb19291906157f0565b6040516020818303038152906040529050613cf6886001858951600960008e61ffff1661ffff16815260200190815260200160002054613cf19190615468565b614151565b613d04888287878787614230565b86604051613d12919061569f565b6040518091039020896001600160a01b03168961ffff167fe1b87c47fdeb4f9cbadbca9df3af7aba453bb6e501075d0440d88125b711522a89604051613d58919061578b565b60405180910390a4505050505050505050565b613d7583836143d6565b613d826000848484613dfe565b6114345760405162461bcd60e51b81526004016110019061579e565b613da781613b6d565b1580613dd35750613db781613b6d565b8015613dd3575030613dc882611a30565b6001600160a01b0316145b613ddc57600080fd5b613de581613b6d565b613df3576114348282613639565b6114343083836132a2565b60006001600160a01b0384163b15613ef157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613e429033908990889088906004016158b8565b6020604051808303816000875af1925050508015613e7d575060408051601f3d908101601f19168201909252613e7a918101906158f5565b60015b613ed7573d808015613eab576040519150601f19603f3d011682016040523d82523d6000602084013e613eb0565b606091505b508051613ecf5760405162461bcd60e51b81526004016110019061579e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613066565b506001613066565b60006001600160e01b031982166380ac58cd60e01b1480613f2a57506001600160e01b03198216635b5e139f60e01b145b806111db57506111db82614551565b6001811115613fa85760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401611001565b816001600160a01b03851661400457613fff81601380546000838152601460205260408120829055600182018355919091527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900155565b614027565b836001600160a01b0316856001600160a01b031614614027576140278582614586565b6001600160a01b0384166140435761403e81614623565b6112f5565b846001600160a01b0316846001600160a01b0316146112f5576112f584826146d2565b61406f336115a2565b6140d25760405162461bcd60e51b815260206004820152602e60248201527f4f4e46543732313a2073656e642063616c6c6572206973206e6f74206f776e6560448201526d1c881b9bdc88185c1c1c9bdd995960921b6064820152608401611001565b836001600160a01b03166140e582611a30565b6001600160a01b0316146141465760405162461bcd60e51b815260206004820152602260248201527f4f4e46543732313a2073656e642066726f6d20696e636f7272656374206f776e60448201526132b960f11b6064820152608401611001565b6125928430836132a2565b600061415c83614716565b61ffff80871660009081526002602090815260408083209389168352929052908120549192509061418e9084906154c0565b9050600081116141e05760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401611001565b80821015611bc85760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401611001565b61ffff86166000908152600160205260408120805461424e9061528c565b80601f016020809104026020016040519081016040528092919081815260200182805461427a9061528c565b80156142c75780601f1061429c576101008083540402835291602001916142c7565b820191906000526020600020905b8154815290600101906020018083116142aa57829003601f168201915b505050505090508051600014156143395760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401611001565b614344878751614772565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c580310090849061439b908b9086908c908c908c908c90600401615912565b6000604051808303818588803b1580156143b457600080fd5b505af11580156143c8573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b03821661442c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611001565b61443581613b6d565b156144825760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401611001565b614490600083836001613b8a565b61449981613b6d565b156144e65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401611001565b6001600160a01b0382166000818152600e6020908152604080832080546001019055848352600d90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160e01b031982166322bac5d960e01b14806111db57506301ffc9a760e01b6001600160e01b03198316146111db565b6000600161459384611dbc565b61459d91906154a9565b6000838152601260205260409020549091508082146145f0576001600160a01b03841660009081526011602090815260408083208584528252808320548484528184208190558352601290915290208190555b5060009182526012602090815260408084208490556001600160a01b039094168352601181528383209183525290812055565b601354600090614635906001906154a9565b6000838152601460205260408120546013805493945090928490811061465d5761465d615421565b90600052602060002001549050806013838154811061467e5761467e615421565b60009182526020808320909101929092558281526014909152604080822084905585825281205560138054806146b6576146b6615979565b6001900381819060005260206000200160009055905550505050565b60006146dd83611dbc565b6001600160a01b039093166000908152601160209081526040808320868452825280832085905593825260129052919091209190915550565b600060228251101561476a5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401611001565b506022015190565b61ffff82166000908152600360205260409020548061479057506127105b808211156114345760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401611001565b8280546147ec9061528c565b90600052602060002090601f01602090048101928261480e5760008555614854565b82601f1061482757805160ff1916838001178555614854565b82800160010185558215614854579182015b82811115614854578251825591602001919060010190614839565b506148609291506148d8565b5090565b8280546148709061528c565b90600052602060002090601f0160209004810192826148925760008555614854565b82601f106148ab5782800160ff19823516178555614854565b82800160010185558215614854579182015b828111156148545782358255916020019190600101906148bd565b5b8082111561486057600081556001016148d9565b803561ffff811681146148ff57600080fd5b919050565b60008083601f84011261491657600080fd5b5081356001600160401b0381111561492d57600080fd5b60208301915083602082850101111561494557600080fd5b9250929050565b80356001600160401b03811681146148ff57600080fd5b6000806000806000806080878903121561497c57600080fd5b614985876148ed565b955060208701356001600160401b03808211156149a157600080fd5b6149ad8a838b01614904565b90975095508591506149c160408a0161494c565b945060608901359150808211156149d757600080fd5b506149e489828a01614904565b979a9699509497509295939492505050565b6001600160e01b03198116811461213757600080fd5b600060208284031215614a1e57600080fd5b81356124a8816149f6565b60005b83811015614a44578181015183820152602001614a2c565b838111156125925750506000910152565b60008151808452614a6d816020860160208601614a29565b601f01601f19169290920160200192915050565b6020815260006124a86020830184614a55565b600060208284031215614aa657600080fd5b6124a8826148ed565b600060208284031215614ac157600080fd5b5035919050565b6001600160a01b038116811461213757600080fd5b80356148ff81614ac8565b60008060408385031215614afb57600080fd5b8235614b0681614ac8565b946020939093013593505050565b60008060408385031215614b2757600080fd5b614b06836148ed565b600080600060608486031215614b4557600080fd5b8335614b5081614ac8565b92506020840135614b6081614ac8565b929592945050506040919091013590565b600060208284031215614b8357600080fd5b81356124a881614ac8565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614bcc57614bcc614b8e565b604052919050565b60006001600160401b03821115614bed57614bed614b8e565b50601f01601f191660200190565b6000614c0e614c0984614bd4565b614ba4565b9050828152838383011115614c2257600080fd5b828260208301376000602084830101529392505050565b600082601f830112614c4a57600080fd5b6124a883833560208501614bfb565b803580151581146148ff57600080fd5b600080600080600060a08688031215614c8157600080fd5b614c8a866148ed565b945060208601356001600160401b0380821115614ca657600080fd5b614cb289838a01614c39565b955060408801359450614cc760608901614c59565b93506080880135915080821115614cdd57600080fd5b50614cea88828901614c39565b9150509295509295909350565b600080600060408486031215614d0c57600080fd5b614d15846148ed565b925060208401356001600160401b03811115614d3057600080fd5b614d3c86828701614904565b9497909650939450505050565b600080600080600080600060e0888a031215614d6457600080fd5b8735614d6f81614ac8565b9650614d7d602089016148ed565b955060408801356001600160401b0380821115614d9957600080fd5b614da58b838c01614c39565b965060608a0135955060808a01359150614dbe82614ac8565b90935060a089013590614dd082614ac8565b90925060c08901359080821115614de657600080fd5b50614df38a828b01614c39565b91505092959891949750929550565b600080600060608486031215614e1757600080fd5b614e20846148ed565b925060208401356001600160401b03811115614e3b57600080fd5b614e4786828701614c39565b925050614e566040850161494c565b90509250925092565b60008060408385031215614e7257600080fd5b614e7b836148ed565b9150614e89602084016148ed565b90509250929050565b600060208284031215614ea457600080fd5b81356001600160401b03811115614eba57600080fd5b61306684828501614c39565b60008060408385031215614ed957600080fd5b8235614ee481614ac8565b9150614e8960208401614c59565b60006001600160401b03821115614f0b57614f0b614b8e565b5060051b60200190565b600082601f830112614f2657600080fd5b81356020614f36614c0983614ef2565b82815260059290921b84018101918181019086841115614f5557600080fd5b8286015b84811015614f705780358352918301918301614f59565b509695505050505050565b600080600080600080600060e0888a031215614f9657600080fd5b8735614fa181614ac8565b9650614faf602089016148ed565b955060408801356001600160401b0380821115614fcb57600080fd5b614fd78b838c01614c39565b965060608a0135915080821115614fed57600080fd5b614ff98b838c01614f15565b955060808a0135915061500b82614ac8565b81945061501a60a08b01614add565b935060c08a0135915080821115614de657600080fd5b6000806000806080858703121561504657600080fd5b843561505181614ac8565b9350602085013561506181614ac8565b92506040850135915060608501356001600160401b0381111561508357600080fd5b61508f87828801614c39565b91505092959194509250565b6000806000806000608086880312156150b357600080fd5b6150bc866148ed565b94506150ca602087016148ed565b93506040860135925060608601356001600160401b038111156150ec57600080fd5b6150f888828901614904565b969995985093965092949392505050565b60008060006060848603121561511e57600080fd5b615127846148ed565b9250615135602085016148ed565b9150604084013590509250925092565b60006020828403121561515757600080fd5b81356001600160401b0381111561516d57600080fd5b8201601f8101841361517e57600080fd5b61306684823560208401614bfb565b600080604083850312156151a057600080fd5b82356151ab81614ac8565b915060208301356151bb81614ac8565b809150509250929050565b600080600080600060a086880312156151de57600080fd5b6151e7866148ed565b945060208601356001600160401b038082111561520357600080fd5b61520f89838a01614c39565b9550604088013591508082111561522557600080fd5b61523189838a01614f15565b9450614cc760608901614c59565b6000806000806080858703121561525557600080fd5b61525e856148ed565b935061526c602086016148ed565b9250604085013561527c81614ac8565b9396929550929360600135925050565b600181811c908216806152a057607f821691505b602082108114156152c157634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600081518084526020808501945080840160005b8381101561535457815187529582019590820190600101615338565b509495945050505050565b61ffff8616815260a06020820152600061537c60a0830187614a55565b828103604084015261538e8187615324565b9050841515606084015282810360808401526153aa8185614a55565b98975050505050505050565b600080604083850312156153c957600080fd5b505080516020909101519092909150565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff841681526040602082015260006130636040830184866153da565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561546157615461615437565b5060010190565b600081600019048311821515161561548257615482615437565b500290565b6000826154a457634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156154bb576154bb615437565b500390565b600082198211156154d3576154d3615437565b500190565b600082601f8301126154e957600080fd5b81516154f7614c0982614bd4565b81815284602083860101111561550c57600080fd5b613066826020830160208701614a29565b6000806040838503121561553057600080fd5b82516001600160401b038082111561554757600080fd5b615553868387016154d8565b935060209150818501518181111561556a57600080fd5b85019050601f8101861361557d57600080fd5b805161558b614c0982614ef2565b81815260059190911b820183019083810190888311156155aa57600080fd5b928401925b828410156155c8578351825292840192908401906155af565b80955050505050509250929050565b6020808252601490820152732330b4b632b2103a379039b2b7321022ba3432b960611b604082015260600190565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff8088168352808716602084015250846040830152608060608301526156596080830184866153da565b979650505050505050565b61ffff861681526080602082015260006156826080830186886153da565b6001600160401b0394909416604083015250606001529392505050565b600082516156b1818460208701614a29565b9190910192915050565b6000602082840312156156cd57600080fd5b81516001600160401b038111156156e357600080fd5b613066848285016154d8565b61ffff8516815260806020820152600061570c6080830186614a55565b6001600160401b038516604084015282810360608401526156598185614a55565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b8281526040602082015260006130666040830184614a55565b6020815260006124a86020830184615324565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6040815260006158036040830185614a55565b82810360208401526158158185615324565b95945050505050565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061584c90830186614a55565b841515606084015282810360808401526153aa8185614a55565b61ffff8616815260a06020820152600061588360a0830187614a55565b6001600160401b038616604084015282810360608401526158a48186614a55565b905082810360808401526153aa8185614a55565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906158eb90830184614a55565b9695505050505050565b60006020828403121561590757600080fd5b81516124a8816149f6565b61ffff8716815260c06020820152600061592f60c0830188614a55565b82810360408401526159418188614a55565b6001600160a01b0387811660608601528616608085015283810360a0850152905061596c8185614a55565b9998505050505050505050565b634e487b7160e01b600052603160045260246000fdfea264697066735822122032411c9f467cd15a24dcf23b50685f367cbe4f327c6e0b14d3cd11baf76e5b5764736f6c634300080c003300000000000000000000000000000000000000000000000000000000000186a00000000000000000000000003c2269811836af69497e5f486a85d7316753cf6200000000000000000000000000000000000000000000000000000000005b8d810000000000000000000000000000000000000000000000000000000000632ea000000000000000000000000000000000000000000000000000a9d1d8c443800000000000000000000000000000000000000000000000000000387cf73bedc000000000000000000000000000f85056e2120eff18e5a87dab068147cf8ba8ad2e0000000000000000000000001169226a38715a9eb1b776205e780c2f165dce64