Overview ERC1155
Total Supply:
0 TTRB

Holders:
41
Profile Summary
Blockchain:
Ethereum (1)

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

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 20 runs

Created At:
Sun, 31 Dec 2023 14:24:23 GMT
DropERC1155.sol
contracts
prebuilts
drop
DropERC1155.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "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": false,
        "internalType": "uint256",
        "name": "_fromTokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_toTokenId",
        "type": "uint256"
      }
    ],
    "name": "BatchMetadataUpdate",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "startTimestamp",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxClaimableSupply",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "supplyClaimed",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "quantityLimitPerWallet",
            "type": "uint256"
          },
          {
            "internalType": "bytes32",
            "name": "merkleRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "pricePerToken",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "metadata",
            "type": "string"
          }
        ],
        "indexed": false,
        "internalType": "struct IClaimCondition.ClaimCondition[]",
        "name": "claimConditions",
        "type": "tuple[]"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "resetEligibility",
        "type": "bool"
      }
    ],
    "name": "ClaimConditionsUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "prevURI",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "newURI",
        "type": "string"
      }
    ],
    "name": "ContractURIUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "newRoyaltyRecipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newRoyaltyBps",
        "type": "uint256"
      }
    ],
    "name": "DefaultRoyalty",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "platformFeeRecipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "flatFee",
        "type": "uint256"
      }
    ],
    "name": "FlatPlatformFeeUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "maxTotalSupply",
        "type": "uint256"
      }
    ],
    "name": "MaxTotalSupplyUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "MetadataFrozen",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "prevOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnerUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "platformFeeRecipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "platformFeeBps",
        "type": "uint256"
      }
    ],
    "name": "PlatformFeeInfoUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "enum IPlatformFee.PlatformFeeType",
        "name": "feeType",
        "type": "uint8"
      }
    ],
    "name": "PlatformFeeTypeUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      }
    ],
    "name": "PrimarySaleRecipientUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "royaltyRecipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "royaltyBps",
        "type": "uint256"
      }
    ],
    "name": "RoyaltyForToken",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "saleRecipient",
        "type": "address"
      }
    ],
    "name": "SaleRecipientForTokenUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "claimConditionIndex",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "claimer",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "quantityClaimed",
        "type": "uint256"
      }
    ],
    "name": "TokensClaimed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "startTokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "endTokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "baseURI",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "encryptedBaseURI",
        "type": "bytes"
      }
    ],
    "name": "TokensLazyMinted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "TransferBatch",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "TransferSingle",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "value",
        "type": "string"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "URI",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      }
    ],
    "name": "balanceOfBatch",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "batchFrozen",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "burnBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_quantity",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_currency",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_pricePerToken",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "bytes32[]",
            "name": "proof",
            "type": "bytes32[]"
          },
          {
            "internalType": "uint256",
            "name": "quantityLimitPerWallet",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "pricePerToken",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          }
        ],
        "internalType": "struct IDrop1155.AllowlistProof",
        "name": "_allowlistProof",
        "type": "tuple"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "claim",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "claimCondition",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "currentStartId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "count",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractType",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractVersion",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_index",
        "type": "uint256"
      }
    ],
    "name": "freezeBatchBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "getActiveClaimConditionId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getBaseURICount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_index",
        "type": "uint256"
      }
    ],
    "name": "getBatchIdAtIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_conditionId",
        "type": "uint256"
      }
    ],
    "name": "getClaimConditionById",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "startTimestamp",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxClaimableSupply",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "supplyClaimed",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "quantityLimitPerWallet",
            "type": "uint256"
          },
          {
            "internalType": "bytes32",
            "name": "merkleRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "pricePerToken",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "metadata",
            "type": "string"
          }
        ],
        "internalType": "struct IClaimCondition.ClaimCondition",
        "name": "condition",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getDefaultRoyaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getFlatPlatformFeeInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPlatformFeeInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPlatformFeeType",
    "outputs": [
      {
        "internalType": "enum IPlatformFee.PlatformFeeType",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getRoleMember",
    "outputs": [
      {
        "internalType": "address",
        "name": "member",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleMemberCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "count",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "getRoyaltyInfoForToken",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_conditionId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_claimer",
        "type": "address"
      }
    ],
    "name": "getSupplyClaimedByWallet",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "supplyClaimedByWallet",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRoleWithSwitch",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_defaultAdmin",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_symbol",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_contractURI",
        "type": "string"
      },
      {
        "internalType": "address[]",
        "name": "_trustedForwarders",
        "type": "address[]"
      },
      {
        "internalType": "address",
        "name": "_saleRecipient",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_royaltyRecipient",
        "type": "address"
      },
      {
        "internalType": "uint128",
        "name": "_royaltyBps",
        "type": "uint128"
      },
      {
        "internalType": "uint128",
        "name": "_platformFeeBps",
        "type": "uint128"
      },
      {
        "internalType": "address",
        "name": "_platformFeeRecipient",
        "type": "address"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "forwarder",
        "type": "address"
      }
    ],
    "name": "isTrustedForwarder",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "_baseURIForTokens",
        "type": "string"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "lazyMint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "batchId",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "maxTotalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "data",
        "type": "bytes[]"
      }
    ],
    "name": "multicall",
    "outputs": [
      {
        "internalType": "bytes[]",
        "name": "results",
        "type": "bytes[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nextTokenIdToMint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "primarySaleRecipient",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "salePrice",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "royaltyAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeBatchTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "saleRecipient",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "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": "_tokenId",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "startTimestamp",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxClaimableSupply",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "supplyClaimed",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "quantityLimitPerWallet",
            "type": "uint256"
          },
          {
            "internalType": "bytes32",
            "name": "merkleRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "pricePerToken",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "metadata",
            "type": "string"
          }
        ],
        "internalType": "struct IClaimCondition.ClaimCondition[]",
        "name": "_conditions",
        "type": "tuple[]"
      },
      {
        "internalType": "bool",
        "name": "_resetClaimEligibility",
        "type": "bool"
      }
    ],
    "name": "setClaimConditions",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_uri",
        "type": "string"
      }
    ],
    "name": "setContractURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_royaltyRecipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_royaltyBps",
        "type": "uint256"
      }
    ],
    "name": "setDefaultRoyaltyInfo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_platformFeeRecipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_flatFee",
        "type": "uint256"
      }
    ],
    "name": "setFlatPlatformFeeInfo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_maxTotalSupply",
        "type": "uint256"
      }
    ],
    "name": "setMaxTotalSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_newOwner",
        "type": "address"
      }
    ],
    "name": "setOwner",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_platformFeeRecipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_platformFeeBps",
        "type": "uint256"
      }
    ],
    "name": "setPlatformFeeInfo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum IPlatformFee.PlatformFeeType",
        "name": "_feeType",
        "type": "uint8"
      }
    ],
    "name": "setPlatformFeeType",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_saleRecipient",
        "type": "address"
      }
    ],
    "name": "setPrimarySaleRecipient",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_bps",
        "type": "uint256"
      }
    ],
    "name": "setRoyaltyInfoForToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_saleRecipient",
        "type": "address"
      }
    ],
    "name": "setSaleRecipientForToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "",
        "type": "uint256"
      }
    ],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_index",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "_uri",
        "type": "string"
      }
    ],
    "name": "updateBatchBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "uri",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_conditionId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_claimer",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_quantity",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_currency",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_pricePerToken",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "bytes32[]",
            "name": "proof",
            "type": "bytes32[]"
          },
          {
            "internalType": "uint256",
            "name": "quantityLimitPerWallet",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "pricePerToken",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          }
        ],
        "internalType": "struct IDrop1155.AllowlistProof",
        "name": "_allowlistProof",
        "type": "tuple"
      }
    ],
    "name": "verifyClaim",
    "outputs": [
      {
        "internalType": "bool",
        "name": "isOverride",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b806200004f5750303b1580156200004f575060005460ff166001145b620000b75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000db576000805461ff0019166101001790555b801562000122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50615f9c80620001336000396000f3fe6080604052600436106102c15760003560e01c80638da5cb5b116101775780638da5cb5b146107205780639010d07c1461073e57806391d148541461075e578063938e3d7b1461077e57806395d89b411461079e5780639bcf7a15146107b3578063a07ced9e146107d3578063a0a8e460146107f3578063a217fddf1461080f578063a22cb46514610824578063a32fa5b314610844578063ac9650d814610864578063b24f2d3914610891578063b6f10c79146108bc578063bd85b039146108dc578063c7337d6b14610909578063ca15c8731461093f578063cb2ef6f71461095f578063d37c353b14610980578063d45573f6146109a0578063d45b28d7146109b5578063d547741f146109e2578063de903ddd14610a02578063e159163414610a22578063e57553da14610a42578063e8a3d48514610a66578063e9703d2514610a7b578063e985e9c514610ac4578063ea1def9c14610b0d578063f242432a14610b2d578063f28083c314610b4d57600080fd5b8062fdd58e146102c657806301ffc9a7146102f957806306fdde0314610329578063079fe40e1461034b5780630e89341c1461036d57806313af40351461038d578063183718d1146103af5780631e7ac488146103cf5780632419f51b146103ef578063248a9ca31461040f57806324aaffaa1461043c57806329c49b9b146104695780632a55205a146104895780632eb2c2d6146104b75780632f2ff15d146104d757806336568abe146104f75780633b1475a7146105175780634cc157df1461052c5780634e1273f41461056e578063572b6c051461059b57806357bc3d78146105bb5780635811ddab146105ce5780635ab063e81461061b578063600dd5ea1461063b57806363b45e2d1461065b5780636b20c454146106705780636f4f2837146106905780637e54523c146106b057806383040532146106d057806387198cf214610700575b600080fd5b3480156102d257600080fd5b506102e66102e1366004614906565b610b74565b6040519081526020015b60405180910390f35b34801561030557600080fd5b50610319610314366004614948565b610c0f565b60405190151581526020016102f0565b34801561033557600080fd5b5061033e610c37565b6040516102f091906149b5565b34801561035757600080fd5b50610360610cc5565b6040516102f091906149c8565b34801561037957600080fd5b5061033e6103883660046149dc565b610cd4565b34801561039957600080fd5b506103ad6103a83660046149f5565b610d15565b005b3480156103bb57600080fd5b506103ad6103ca366004614a6b565b610d45565b3480156103db57600080fd5b506103ad6103ea366004614906565b611084565b3480156103fb57600080fd5b506102e661040a3660046149dc565b6110b6565b34801561041b57600080fd5b506102e661042a3660046149dc565b6000908152600d602052604090205490565b34801561044857600080fd5b506102e66104573660046149dc565b60de6020526000908152604090205481565b34801561047557600080fd5b506103ad610484366004614ac9565b611124565b34801561049557600080fd5b506104a96104a4366004614af9565b611196565b6040516102f0929190614b1b565b3480156104c357600080fd5b506103ad6104d2366004614c82565b6111d3565b3480156104e357600080fd5b506103ad6104f2366004614ac9565b611231565b34801561050357600080fd5b506103ad610512366004614ac9565b6112c7565b34801561052357600080fd5b50600b546102e6565b34801561053857600080fd5b5061054c6105473660046149dc565b611326565b604080516001600160a01b03909316835261ffff9091166020830152016102f0565b34801561057a57600080fd5b5061058e610589366004614da3565b611391565b6040516102f09190614e42565b3480156105a757600080fd5b506103196105b63660046149f5565b6114b2565b6103ad6105c9366004614e67565b6114d0565b3480156105da57600080fd5b506102e66105e9366004614f0c565b6000928352600f60209081526040808520938552600390930181528284206001600160a01b0390921684525290205490565b34801561062757600080fd5b506102e66106363660046149dc565b611613565b34801561064757600080fd5b506103ad610656366004614906565b6116c4565b34801561066757600080fd5b506008546102e6565b34801561067c57600080fd5b506103ad61068b366004614f45565b6116f2565b34801561069c57600080fd5b506103ad6106ab3660046149f5565b61178f565b3480156106bc57600080fd5b506103ad6106cb366004614906565b6117bc565b3480156106dc57600080fd5b506103196106eb3660046149dc565b600a6020526000908152604090205460ff1681565b34801561070c57600080fd5b506103ad61071b366004614af9565b6117ea565b34801561072c57600080fd5b506007546001600160a01b0316610360565b34801561074a57600080fd5b50610360610759366004614af9565b611846565b34801561076a57600080fd5b50610319610779366004614ac9565b611934565b34801561078a57600080fd5b506103ad610799366004614fba565b61195f565b3480156107aa57600080fd5b5061033e61198c565b3480156107bf57600080fd5b506103ad6107ce366004614fee565b611999565b3480156107df57600080fd5b506103ad6107ee3660046149dc565b6119c8565b3480156107ff57600080fd5b50604051600481526020016102f0565b34801561081b57600080fd5b506102e6600081565b34801561083057600080fd5b506103ad61083f366004615026565b6119eb565b34801561085057600080fd5b5061031961085f366004614ac9565b6119fd565b34801561087057600080fd5b5061088461087f366004615054565b611a53565b6040516102f09190615095565b34801561089d57600080fd5b506004546001600160a01b03811690600160a01b900461ffff1661054c565b3480156108c857600080fd5b506103ad6108d73660046150f9565b611bc6565b3480156108e857600080fd5b506102e66108f73660046149dc565b60dd6020526000908152604090205481565b34801561091557600080fd5b506103606109243660046149dc565b60df602052600090815260409020546001600160a01b031681565b34801561094b57600080fd5b506102e661095a3660046149dc565b611bf3565b34801561096b57600080fd5b506a44726f704552433131353560a81b6102e6565b34801561098c57600080fd5b506102e661099b36600461515b565b611c7c565b3480156109ac57600080fd5b5061054c611d89565b3480156109c157600080fd5b506109d56109d0366004614af9565b611da6565b6040516102f091906151d4565b3480156109ee57600080fd5b506103ad6109fd366004614ac9565b611f0d565b348015610a0e57600080fd5b506103ad610a1d366004615241565b611f26565b348015610a2e57600080fd5b506103ad610a3d3660046152a3565b611f80565b348015610a4e57600080fd5b506104a96002546003546001600160a01b0390911691565b348015610a7257600080fd5b5061033e6121c9565b348015610a8757600080fd5b50610aaf610a963660046149dc565b600f602052600090815260409020805460019091015482565b604080519283526020830191909152016102f0565b348015610ad057600080fd5b50610319610adf3660046153b5565b6001600160a01b03918216600090815260a76020908152604080832093909416825291909152205460ff1690565b348015610b1957600080fd5b50610319610b283660046153e3565b6121d6565b348015610b3957600080fd5b506103ad610b4836600461545c565b6125de565b348015610b5957600080fd5b50600254600160b01b900460ff166040516102f091906154da565b60006001600160a01b038316610be45760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b50600081815260a6602090815260408083206001600160a01b03861684529091529020545b92915050565b6000610c1a82612635565b80610c095750506001600160e01b03191663152a902d60e11b1490565b60d88054610c4490615502565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7090615502565b8015610cbd5780601f10610c9257610100808354040283529160200191610cbd565b820191906000526020600020905b815481529060010190602001808311610ca057829003601f168201915b505050505081565b6006546001600160a01b031690565b60606000610ce183612685565b905080610ced84612821565b604051602001610cfe929190615536565b604051602081830303815290604052915050919050565b610d1d6128b3565b610d395760405162461bcd60e51b8152600401610bdb90615565565b610d42816128c6565b50565b610d4d6128b3565b610d695760405162461bcd60e51b8152600401610bdb90615565565b6000848152600f6020526040902080546001820154818415610d9257610d8f82846155a3565b90505b600184018690558084556000805b87811015610f4057801580610dd85750888882818110610dc257610dc26155b6565b9050602002810190610dd491906155cc565b3582105b610e095760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610bdb565b60006002870181610e1a84876155a3565b8152602001908152602001600020600201549050898983818110610e4057610e406155b6565b9050602002810190610e5291906155cc565b60200135811115610e9a5760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e4818db185a5b595960721b6044820152606401610bdb565b898983818110610eac57610eac6155b6565b9050602002810190610ebe91906155cc565b600288016000610ece85886155a3565b81526020019081526020016000208181610ee89190615748565b50819050600288016000610efc85886155a3565b8152602081019190915260400160002060020155898983818110610f2257610f226155b6565b9050602002810190610f3491906155cc565b35925050600101610da0565b508515610fb757835b82811015610fb1576000818152600280880160205260408220828155600181018390559081018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590610fa76007830182614893565b5050600101610f49565b5061103d565b8683111561103d57865b8381101561103b57600286016000610fd983866155a3565b81526020810191909152604001600090812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b0319169055906110316007830182614893565b5050600101610fc1565b505b887f066f72a648b18490c0bc4ab07d508cdb5d6589fa188c63cfba1e0547f3a6556a89898960405161107193929190615834565b60405180910390a2505050505050505050565b61108c6128b3565b6110a85760405162461bcd60e51b8152600401610bdb90615565565b6110b28282612918565b5050565b60006110c160085490565b82106110ff5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610bdb565b60088281548110611112576111126155b6565b90600052602060002001549050919050565b600061113081336129cc565b600083815260df60205260409081902080546001600160a01b0319166001600160a01b0385161790555183907f359479172ba65a6639b0df237f704e030498cb7135d5e89b56f598bd1d84b016906111899085906149c8565b60405180910390a2505050565b6000806000806111a586611326565b90945084925061ffff1690506127106111be828761591c565b6111c89190615933565b925050509250929050565b6111db612a4c565b6001600160a01b0316856001600160a01b03161480611201575061120185610adf612a4c565b61121d5760405162461bcd60e51b8152600401610bdb90615955565b61122a8585858585612a56565b5050505050565b6000828152600d602052604090205461124a90336129cc565b6000828152600c602090815260408083206001600160a01b038516845290915290205460ff16156112bd5760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610bdb565b6110b28282612c07565b336001600160a01b0382161461131c5760405162461bcd60e51b815260206004820152601a60248201527921b0b71037b7363c903932b737bab731b2903337b91039b2b63360311b6044820152606401610bdb565b6110b28282612c1b565b6000818152600560209081526040808320815180830190925280546001600160a01b03168083526001909101549282019290925282911561136d5780516020820151611387565b6004546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b606081518351146113f65760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610bdb565b600083516001600160401b0381111561141157611411614b34565b60405190808252806020026020018201604052801561143a578160200160208202803683370190505b50905060005b84518110156114aa5761148585828151811061145e5761145e6155b6565b6020026020010151858381518110611478576114786155b6565b6020026020010151610b74565b828281518110611497576114976155b6565b6020908102919091010152600101611440565b509392505050565b6001600160a01b031660009081526042602052604090205460ff1690565b6114df86888787878787612c72565b60006114ea87611613565b9050611502816114f8612d00565b89898989896121d6565b506000878152600f60209081526040808320848452600290810190925282200180548892906115329084906155a3565b90915550506000878152600f602090815260408083208484526003019091528120879161155d612d00565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461158c91906155a3565b909155506115a09050876000888888612d0a565b6115ab888888612e4d565b876001600160a01b03166115bd612d00565b6001600160a01b0316827ffa76a4010d9533e3e964f2930a65fb6042a12fa6ff5b08281837a10b0be7321e8a8a604051611601929190918252602082015260400190565b60405180910390a45050505050505050565b6000818152600f60205260408120600181015481548391611633916155a3565b90505b815481111561168d576002820160006116506001846159a3565b815260200190815260200160002060000154421061167b576116736001826159a3565b949350505050565b80611685816159b6565b915050611636565b5060405162461bcd60e51b815260206004820152600b60248201526a10a1a7a72224aa24a7a71760a91b6044820152606401610bdb565b6116cc6128b3565b6116e85760405162461bcd60e51b8152600401610bdb90615565565b6110b28282612e68565b6116fa612a4c565b6001600160a01b0316836001600160a01b03161480611720575061172083610adf612a4c565b61177f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f726044820152691030b8383937bb32b21760b11b6064820152608401610bdb565b61178a838383612ee5565b505050565b6117976128b3565b6117b35760405162461bcd60e51b8152600401610bdb90615565565b610d42816130fb565b6117c46128b3565b6117e05760405162461bcd60e51b8152600401610bdb90615565565b6110b2828261316b565b60006117f681336129cc565b600083815260de602090815260409182902084905581518581529081018490527fc58cd6132bb46df23d468939c03dd023b74b509aaa6b04c39d5a6461c65963bd910160405180910390a1505050565b6000828152600e602052604081205481805b8281101561192b576000868152600e602090815260408083208484526001019091529020546001600160a01b0316156118d4578482036118c2576000868152600e602090815260408083209383526001909301905220546001600160a01b03169250610c09915050565b6118cd6001836155a3565b9150611919565b6118df866000611934565b801561190657506000868152600e6020908152604080832083805260020190915290205481145b15611919576119166001836155a3565b91505b6119246001826155a3565b9050611858565b50505092915050565b6000918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6119676128b3565b6119835760405162461bcd60e51b8152600401610bdb90615565565b610d42816131c9565b60d98054610c4490615502565b6119a16128b3565b6119bd5760405162461bcd60e51b8152600401610bdb90615565565b61178a838383613299565b60dc546119d581336129cc565b60006119e0836110b6565b905061178a81613341565b6110b26119f6612a4c565b838361345e565b6000828152600c6020908152604080832083805290915281205460ff16611a4a57506000828152600c602090815260408083206001600160a01b038516845290915290205460ff16610c09565b50600192915050565b6060816001600160401b03811115611a6d57611a6d614b34565b604051908082528060200260200182016040528015611aa057816020015b6060815260200190600190039081611a8b5790505b5090506000611aad612a4c565b9050336001600160a01b038216141560005b8481101561192b578115611b3e57611b1c30878784818110611ae357611ae36155b6565b9050602002810190611af591906155ec565b86604051602001611b08939291906159cd565b604051602081830303815290604052613536565b848281518110611b2e57611b2e6155b6565b6020026020010181905250611bbe565b611ba030878784818110611b5457611b546155b6565b9050602002810190611b6691906155ec565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061353692505050565b848281518110611bb257611bb26155b6565b60200260200101819052505b600101611abf565b611bce6128b3565b611bea5760405162461bcd60e51b8152600401610bdb90615565565b610d4281613562565b6000818152600e6020526040812054815b81811015611c57576000848152600e602090815260408083208484526001019091529020546001600160a01b031615611c4557611c426001846155a3565b92505b611c506001826155a3565b9050611c04565b50611c63836000611934565b15611c7657611c736001836155a3565b91505b50919050565b6000611c866135c6565b611ca25760405162461bcd60e51b8152600401610bdb90615565565b85600003611cda5760405162461bcd60e51b81526020600482015260056024820152640c08185b5d60da1b6044820152606401610bdb565b6000600b549050611d22818888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135d692505050565b600b919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d6001611d588a846155a3565b611d6291906159a3565b88888888604051611d779594939291906159ee565b60405180910390a25095945050505050565b6002546001600160a01b03811691600160a01b90910461ffff1690565b611dfa60405180610100016040528060008152602001600081526020016000815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001606081525090565b6000838152600f6020908152604080832085845260029081018352928190208151610100810183528154815260018201549381019390935292830154908201526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b031660c082015260078201805491929160e084019190611e8390615502565b80601f0160208091040260200160405190810160405280929190818152602001828054611eaf90615502565b8015611efc5780601f10611ed157610100808354040283529160200191611efc565b820191906000526020600020905b815481529060010190602001808311611edf57829003601f168201915b505050505081525050905092915050565b6000828152600d602052604090205461131c90336129cc565b60dc54611f3381336129cc565b6000611f3e856110b6565b905061122a8185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363a92505050565b600054610100900460ff1615808015611fa05750600054600160ff909116105b80611fc15750611faf306136df565b158015611fc1575060005460ff166001145b6120245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bdb565b6000805460ff191660011790558015612047576000805461ff0019166101001790555b7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a67f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f806120b38a6136ee565b6120cb60405180602001604052806000815250613726565b6120d48b6131c9565b6120dd8e6128c6565b6120e860008f612c07565b6120f2828f612c07565b6120fc838f612c07565b612107836000612c07565b612111818f612c07565b61211b8182613756565b61212e85876001600160801b0316612918565b61214188886001600160801b0316612e68565b61214a896130fb565b60da83905560db82905560dc81905560d86121658e82615a27565b5060d96121728d82615a27565b5050505080156121bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b60018054610c4490615502565b6000858152600f602090815260408083208a8452600290810183528184208251610100810184528154815260018201549481019490945290810154918301919091526003810154606083015260048101546080830152600581015460a083015260068101546001600160a01b031660c08301526007810180548493929160e084019161226190615502565b80601f016020809104026020016040519081016040528092919081815260200182805461228d90615502565b80156122da5780601f106122af576101008083540402835291602001916122da565b820191906000526020600020905b8154815290600101906020018083116122bd57829003601f168201915b50505091909252505050606081015160a082015160c083015160808401519394509192909190156123ba576123b66123128780615ae0565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060808088015191508e9060208b01359060408c013590612367908d0160608e016149f5565b6040516001600160601b0319606095861b811660208301526034820194909452605481019290925290921b1660748201526088016040516020818303038152906040528051906020012061379e565b5094505b84156124415785602001356000036123d257826123d8565b85602001355b92506000198660400135036123ed57816123f3565b85604001355b91506000198660400135141580156124245750600061241860808801606089016149f5565b6001600160a01b031614155b61242e578061243e565b61243e60808701606088016149f5565b90505b6000600f60008c815260200190815260200160002060030160008e815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020549050816001600160a01b0316896001600160a01b03161415806124b15750828814155b156124f15760405162461bcd60e51b815260206004820152601060248201526f2150726963654f7243757272656e637960801b6044820152606401610bdb565b891580612506575083612504828c6155a3565b115b1561253c5760405162461bcd60e51b8152600401610bdb906020808252600490820152632151747960e01b604082015260600190565b84602001518a866040015161255191906155a3565b111561258c5760405162461bcd60e51b815260206004820152600a602482015269214d6178537570706c7960b01b6044820152606401610bdb565b84514210156125ce5760405162461bcd60e51b815260206004820152600e60248201526d18d85b9d0818db185a5b481e595d60921b6044820152606401610bdb565b5050505050979650505050505050565b6125e6612a4c565b6001600160a01b0316856001600160a01b0316148061260c575061260c85610adf612a4c565b6126285760405162461bcd60e51b8152600401610bdb90615955565b61122a8585858585613862565b60006001600160e01b03198216636cdb3d1360e11b148061266657506001600160e01b031982166303a24d0760e21b145b80610c0957506301ffc9a760e01b6001600160e01b0319831614610c09565b6060600061269260085490565b9050600060088054806020026020016040519081016040528092919081815260200182805480156126e257602002820191906000526020600020905b8154815260200190600101908083116126ce575b5050505050905060005b828110156127e657818181518110612706576127066155b6565b60200260200101518510156127d4576009600083838151811061272b5761272b6155b6565b60200260200101518152602001908152602001600020805461274c90615502565b80601f016020809104026020016040519081016040528092919081815260200182805461277890615502565b80156127c55780601f1061279a576101008083540402835291602001916127c5565b820191906000526020600020905b8154815290600101906020018083116127a857829003601f168201915b50505050509350505050919050565b6127df6001826155a3565b90506126ec565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610bdb565b6060600061282e836139a9565b60010190506000816001600160401b0381111561284d5761284d614b34565b6040519080825280601f01601f191660200182016040528015612877576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461288157509392505050565b60006128c181610779612a4c565b905090565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b61271081111561293a5760405162461bcd60e51b8152600401610bdb90615b29565b6001600160a01b0382166129605760405162461bcd60e51b8152600401610bdb90615b52565b600280546001600160b01b031916600160a01b61ffff8416026001600160a01b031916176001600160a01b0384169081179091556040518281527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a25050565b6000828152600c602090815260408083206001600160a01b038516845290915290205460ff166110b257612a0a816001600160a01b03166014613a7f565b612a15836020613a7f565b604051602001612a26929190615b7d565b60408051601f198184030181529082905262461bcd60e51b8252610bdb916004016149b5565b60006128c1613c1a565b8151835114612a775760405162461bcd60e51b8152600401610bdb90615bea565b6001600160a01b038416612a9d5760405162461bcd60e51b8152600401610bdb90615c32565b6000612aa7612a4c565b9050612ab7818787878787613c3f565b60005b8451811015612b99576000858281518110612ad757612ad76155b6565b602002602001015190506000858381518110612af557612af56155b6565b602090810291909101810151600084815260a6835260408082206001600160a01b038e168352909352919091205490915081811015612b465760405162461bcd60e51b8152600401610bdb90615c77565b600083815260a6602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290612b859084906155a3565b909155505060019093019250612aba915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612be9929190615cc1565b60405180910390a4612bff818787878787613dea565b505050505050565b612c118282613f4c565b6110b28282613fa7565b612c258282614014565b6000828152600e602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b600087815260de60205260409020541580612cb15750600087815260de602090815260408083205460dd90925290912054612cae9087906155a3565b11155b612cf75760405162461bcd60e51b8152602060048201526017602482015276657863656564206d617820746f74616c20737570706c7960481b6044820152606401610bdb565b50505050505050565b60006128c1612a4c565b80600003612d35573415612d305760405162461bcd60e51b8152600401610bdb90615cef565b61122a565b600080612d40611d89565b909250905060006001600160a01b03871615612d5c5786612d9e565b600088815260df60205260409020546001600160a01b031615612d9657600088815260df60205260409020546001600160a01b0316612d9e565b612d9e610cc5565b90506000612dac858861591c565b90506000612710612dc161ffff86168461591c565b612dcb9190615933565b9050600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03891601612dfd5750348214612e01565b5034155b80612e1e5760405162461bcd60e51b8152600401610bdb90615cef565b612e3188612e2a612a4c565b8885614076565b6121bc88612e3d612a4c565b86612e4886886159a3565b614076565b61178a838383604051806020016040528060008152506140bc565b612710811115612e8a5760405162461bcd60e51b8152600401610bdb90615b29565b600480546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb906020016129c0565b6001600160a01b038316612f475760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610bdb565b8051825114612f685760405162461bcd60e51b8152600401610bdb90615bea565b6000612f72612a4c565b9050612f9281856000868660405180602001604052806000815250613c3f565b60005b835181101561308c576000848281518110612fb257612fb26155b6565b602002602001015190506000848381518110612fd057612fd06155b6565b602090810291909101810151600084815260a6835260408082206001600160a01b038c16835290935291909120549091508181101561305d5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610bdb565b600092835260a6602090815260408085206001600160a01b038b16865290915290922091039055600101612f95565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516130dd929190615cc1565b60405180910390a46040805160208101909152600090525b50505050565b6001600160a01b0381166131215760405162461bcd60e51b8152600401610bdb90615b52565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b6003819055600280546001600160a01b0319166001600160a01b0384161790556040517ff8086cee80709bd44c82f89dbca54115ebd05e840a88ab81df9cf5be9754eb63906131bd9084908490614b1b565b60405180910390a15050565b6000600180546131d890615502565b80601f016020809104026020016040519081016040528092919081815260200182805461320490615502565b80156132515780601f1061322657610100808354040283529160200191613251565b820191906000526020600020905b81548152906001019060200180831161323457829003601f168201915b5050505050905081600190816132679190615a27565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a1681836040516131bd929190615d0b565b6127108111156132bb5760405162461bcd60e51b8152600401610bdb90615b29565b6040805180820182526001600160a01b038481168083526020808401868152600089815260058352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d91015b60405180910390a3505050565b6000818152600960205260408120805461335a90615502565b80601f016020809104026020016040519081016040528092919081815260200182805461338690615502565b80156133d35780601f106133a8576101008083540402835291602001916133d3565b820191906000526020600020905b8154815290600101906020018083116133b657829003601f168201915b50505050509050600081511161341b5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840c4c2e8c6d609b1b6044820152606401610bdb565b6000828152600a6020526040808220805460ff19166001179055517feef043febddf4e1d1cf1f72ff1407b84e036e805aa0934418cb82095da8d71649190a15050565b816001600160a01b0316836001600160a01b0316036134d15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610bdb565b6001600160a01b03838116600081815260a76020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101613334565b606061355b8383604051806060016040528060278152602001615f40602791396141e3565b9392505050565b6002805482919060ff60b01b1916600160b01b836001811115613587576135876154c4565b02179055507fd246da9440709ce0dd3f4fd669abc85ada012ab9774b8ecdcc5059ba1486b9c1816040516135bb91906154da565b60405180910390a150565b60006128c160db54610779612a4c565b6000806135e384866155a3565b60088054600181019091557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30181905560008181526009602052604090209092508291506136318482615a27565b50935093915050565b6000828152600a602052604090205460ff16156136885760405162461bcd60e51b815260206004820152600c60248201526b2130ba31b410333937bd32b760a11b6044820152606401610bdb565b60008281526009602052604090206136a08282615a27565b507f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c6136cb8361425b565b6040805191825260208201859052016131bd565b6001600160a01b03163b151590565b600054610100900460ff166137155760405162461bcd60e51b8152600401610bdb90615d30565b61371d61436b565b610d4281614394565b600054610100900460ff1661374d5760405162461bcd60e51b8152600401610bdb90615d30565b610d4281614419565b6000828152600d6020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6000808281805b8751811015613856576137b960028361591c565b915060008882815181106137cf576137cf6155b6565b6020026020010151905080841161381157604080516020810186905290810182905260600160405160208183030381529060405280519060200120935061384d565b604080516020810183905290810185905260600160405160208183030381529060405280519060200120935060018361384a91906155a3565b92505b506001016137a5565b50941495939450505050565b6001600160a01b0384166138885760405162461bcd60e51b8152600401610bdb90615c32565b6000613892612a4c565b9050600061389f85614425565b905060006138ac85614425565b90506138bc838989858589613c3f565b600086815260a6602090815260408083206001600160a01b038c168452909152902054858110156138ff5760405162461bcd60e51b8152600401610bdb90615c77565b600087815260a6602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061393e9084906155a3565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461399e848a8a8a8a8a614470565b505050505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106139e85772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613a12576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613a3057662386f26fc10000830492506010015b6305f5e1008310613a48576305f5e100830492506008015b6127108310613a5c57612710830492506004015b60648310613a6e576064830492506002015b600a8310610c095760010192915050565b60606000613a8e83600261591c565b613a999060026155a3565b6001600160401b03811115613ab057613ab0614b34565b6040519080825280601f01601f191660200182016040528015613ada576020820181803683370190505b509050600360fc1b81600081518110613af557613af56155b6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613b2457613b246155b6565b60200101906001600160f81b031916908160001a9053506000613b4884600261591c565b613b539060016155a3565b90505b6001811115613bcb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613b8757613b876155b6565b1a60f81b828281518110613b9d57613b9d6155b6565b60200101906001600160f81b031916908160001a90535060049490941c93613bc4816159b6565b9050613b56565b50831561355b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bdb565b6000613c25336114b2565b15613c37575060131936013560601c90565b503390565b90565b613c4c60da546000611934565b158015613c6157506001600160a01b03851615155b8015613c7557506001600160a01b03841615155b15613cf057613c8660da5486611934565b80613c985750613c9860da5485611934565b613cf05760405162461bcd60e51b8152602060048201526024808201527f7265737472696374656420746f205452414e534645525f524f4c4520686f6c6460448201526332b9399760e11b6064820152608401610bdb565b6001600160a01b038516613d6e5760005b8351811015613d6c57828181518110613d1c57613d1c6155b6565b602002602001015160dd6000868481518110613d3a57613d3a6155b6565b602002602001015181526020019081526020016000206000828254613d5f91906155a3565b9091555050600101613d01565b505b6001600160a01b038416612bff5760005b8351811015612cf757828181518110613d9a57613d9a6155b6565b602002602001015160dd6000868481518110613db857613db86155b6565b602002602001015181526020019081526020016000206000828254613ddd91906159a3565b9091555050600101613d7f565b613dfc846001600160a01b03166136df565b15612bff5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190613e359089908990889088908890600401615d7b565b6020604051808303816000875af1925050508015613e70575060408051601f3d908101601f19168201909252613e6d91810190615dcd565b60015b613f1c57613e7c615dea565b806308c379a003613eb55750613e90615e05565b80613e9b5750613eb7565b8060405162461bcd60e51b8152600401610bdb91906149b5565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610bdb565b6001600160e01b0319811663bc197c8160e01b14612cf75760405162461bcd60e51b8152600401610bdb90615e8e565b6000828152600c602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000828152600e6020526040812080549160019190613fc683856155a3565b90915550506000928352600e6020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b61401e82826129cc565b6000828152600c602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b80156130f55773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038516016140b0576140ab8282614532565b6130f5565b6130f5848484846145d4565b6001600160a01b03841661411c5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610bdb565b6000614126612a4c565b9050600061413385614425565b9050600061414085614425565b905061415183600089858589613c3f565b600086815260a6602090815260408083206001600160a01b038b168452909152812080548792906141839084906155a3565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612cf783600089898989614470565b6060600080856001600160a01b0316856040516142009190615ed6565b600060405180830381855af49150503d806000811461423b576040519150601f19603f3d011682016040523d82523d6000602084013e614240565b606091505b509150915061425186838387614627565b9695505050505050565b60008061426760085490565b9050600060088054806020026020016040519081016040528092919081815260200182805480156142b757602002820191906000526020600020905b8154815260200190600101908083116142a3575b5050505050905060005b82811015614330578181815181106142db576142db6155b6565b6020026020010151850361432857801561431d57816142fb6001836159a3565b8151811061430b5761430b6155b6565b60200260200101519350505050919050565b506000949350505050565b6001016142c1565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a590818985d18da1259608a1b6044820152606401610bdb565b600054610100900460ff166143925760405162461bcd60e51b8152600401610bdb90615d30565b565b600054610100900460ff166143bb5760405162461bcd60e51b8152600401610bdb90615d30565b60005b81518110156110b2576001604260008484815181106143df576143df6155b6565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016143be565b60a86110b28282615a27565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061445f5761445f6155b6565b602090810291909101015292915050565b614482846001600160a01b03166136df565b15612bff5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906144bb9089908990889088908890600401615ee8565b6020604051808303816000875af19250505080156144f6575060408051601f3d908101601f191682019092526144f391810190615dcd565b60015b61450257613e7c615dea565b6001600160e01b0319811663f23a6e6160e01b14612cf75760405162461bcd60e51b8152600401610bdb90615e8e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461457f576040519150601f19603f3d011682016040523d82523d6000602084013e614584565b606091505b505090508061178a5760405162461bcd60e51b815260206004820152601c60248201527b1b985d1a5d99481d1bdad95b881d1c985b9cd9995c8819985a5b195960221b6044820152606401610bdb565b816001600160a01b0316836001600160a01b031603156130f557306001600160a01b03841603614612576140ab6001600160a01b038516838361469e565b6130f56001600160a01b0385168484846146f4565b6060831561469457825160000361468d57614641856136df565b61468d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bdb565b5081611673565b611673838361472c565b61178a8363a9059cbb60e01b84846040516024016146bd929190614b1b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261473c565b6040516001600160a01b03808516602483015283166044820152606481018290526130f59085906323b872dd60e01b906084016146bd565b815115613e9b5781518083602001fd5b6000614791826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661480e9092919063ffffffff16565b80519091501561178a57808060200190518101906147af9190615f22565b61178a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bdb565b6060611673848460008585600080866001600160a01b031685876040516148359190615ed6565b60006040518083038185875af1925050503d8060008114614872576040519150601f19603f3d011682016040523d82523d6000602084013e614877565b606091505b509150915061488887838387614627565b979650505050505050565b50805461489f90615502565b6000825580601f106148af575050565b601f016020900490600052602060002090810190610d4291905b808211156148dd57600081556001016148c9565b5090565b6001600160a01b0381168114610d4257600080fd5b8035614901816148e1565b919050565b6000806040838503121561491957600080fd5b8235614924816148e1565b946020939093013593505050565b6001600160e01b031981168114610d4257600080fd5b60006020828403121561495a57600080fd5b813561355b81614932565b60005b83811015614980578181015183820152602001614968565b50506000910152565b600081518084526149a1816020860160208601614965565b601f01601f19169290920160200192915050565b60208152600061355b6020830184614989565b6001600160a01b0391909116815260200190565b6000602082840312156149ee57600080fd5b5035919050565b600060208284031215614a0757600080fd5b813561355b816148e1565b60008083601f840112614a2457600080fd5b5081356001600160401b03811115614a3b57600080fd5b6020830191508360208260051b8501011115614a5657600080fd5b9250929050565b8015158114610d4257600080fd5b60008060008060608587031215614a8157600080fd5b8435935060208501356001600160401b03811115614a9e57600080fd5b614aaa87828801614a12565b9094509250506040850135614abe81614a5d565b939692955090935050565b60008060408385031215614adc57600080fd5b823591506020830135614aee816148e1565b809150509250929050565b60008060408385031215614b0c57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715614b6f57614b6f614b34565b6040525050565b60006001600160401b03821115614b8f57614b8f614b34565b5060051b60200190565b600082601f830112614baa57600080fd5b81356020614bb782614b76565b604051614bc48282614b4a565b80915083815260208101915060208460051b870101935086841115614be857600080fd5b602086015b84811015614c045780358352918301918301614bed565b509695505050505050565b600082601f830112614c2057600080fd5b81356001600160401b03811115614c3957614c39614b34565b604051614c50601f8301601f191660200182614b4a565b818152846020838601011115614c6557600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614c9a57600080fd5b8535614ca5816148e1565b94506020860135614cb5816148e1565b935060408601356001600160401b0380821115614cd157600080fd5b614cdd89838a01614b99565b94506060880135915080821115614cf357600080fd5b614cff89838a01614b99565b93506080880135915080821115614d1557600080fd5b50614d2288828901614c0f565b9150509295509295909350565b600082601f830112614d4057600080fd5b81356020614d4d82614b76565b604051614d5a8282614b4a565b80915083815260208101915060208460051b870101935086841115614d7e57600080fd5b602086015b84811015614c04578035614d96816148e1565b8352918301918301614d83565b60008060408385031215614db657600080fd5b82356001600160401b0380821115614dcd57600080fd5b614dd986838701614d2f565b93506020850135915080821115614def57600080fd5b50614dfc85828601614b99565b9150509250929050565b60008151808452602080850194506020840160005b83811015614e3757815187529582019590820190600101614e1b565b509495945050505050565b60208152600061355b6020830184614e06565b600060808284031215611c7657600080fd5b600080600080600080600060e0888a031215614e8257600080fd5b8735614e8d816148e1565b965060208801359550604088013594506060880135614eab816148e1565b93506080880135925060a08801356001600160401b0380821115614ece57600080fd5b614eda8b838c01614e55565b935060c08a0135915080821115614ef057600080fd5b50614efd8a828b01614c0f565b91505092959891949750929550565b600080600060608486031215614f2157600080fd5b83359250602084013591506040840135614f3a816148e1565b809150509250925092565b600080600060608486031215614f5a57600080fd5b8335614f65816148e1565b925060208401356001600160401b0380821115614f8157600080fd5b614f8d87838801614b99565b93506040860135915080821115614fa357600080fd5b50614fb086828701614b99565b9150509250925092565b600060208284031215614fcc57600080fd5b81356001600160401b03811115614fe257600080fd5b61167384828501614c0f565b60008060006060848603121561500357600080fd5b833592506020840135615015816148e1565b929592945050506040919091013590565b6000806040838503121561503957600080fd5b8235615044816148e1565b91506020830135614aee81614a5d565b6000806020838503121561506757600080fd5b82356001600160401b0381111561507d57600080fd5b61508985828601614a12565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156150ec57603f198886030184526150da858351614989565b945092850192908501906001016150be565b5092979650505050505050565b60006020828403121561510b57600080fd5b81356002811061355b57600080fd5b60008083601f84011261512c57600080fd5b5081356001600160401b0381111561514357600080fd5b602083019150836020828501011115614a5657600080fd5b60008060008060006060868803121561517357600080fd5b8535945060208601356001600160401b038082111561519157600080fd5b61519d89838a0161511a565b909650945060408801359150808211156151b657600080fd5b506151c38882890161511a565b969995985093965092949392505050565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260018060a01b0360c08301511660e0820152600060e0830151610100808185015250611673610120840182614989565b60008060006040848603121561525657600080fd5b8335925060208401356001600160401b0381111561527357600080fd5b61527f8682870161511a565b9497909650939450505050565b80356001600160801b038116811461490157600080fd5b6000806000806000806000806000806101408b8d0312156152c357600080fd5b6152cc8b6148f6565b995060208b01356001600160401b03808211156152e857600080fd5b6152f48e838f01614c0f565b9a5060408d013591508082111561530a57600080fd5b6153168e838f01614c0f565b995060608d013591508082111561532c57600080fd5b6153388e838f01614c0f565b985060808d013591508082111561534e57600080fd5b5061535b8d828e01614d2f565b96505061536a60a08c016148f6565b945061537860c08c016148f6565b935061538660e08c0161528c565b92506153956101008c0161528c565b91506153a46101208c016148f6565b90509295989b9194979a5092959850565b600080604083850312156153c857600080fd5b82356153d3816148e1565b91506020830135614aee816148e1565b600080600080600080600060e0888a0312156153fe57600080fd5b873596506020880135615410816148e1565b95506040880135945060608801359350608088013561542e816148e1565b925060a0880135915060c08801356001600160401b0381111561545057600080fd5b614efd8a828b01614e55565b600080600080600060a0868803121561547457600080fd5b853561547f816148e1565b9450602086013561548f816148e1565b9350604086013592506060860135915060808601356001600160401b038111156154b857600080fd5b614d2288828901614c0f565b634e487b7160e01b600052602160045260246000fd5b60208101600283106154fc57634e487b7160e01b600052602160045260246000fd5b91905290565b600181811c9082168061551657607f821691505b602082108103611c7657634e487b7160e01b600052602260045260246000fd5b60008351615548818460208801614965565b83519083019061555c818360208801614965565b01949350505050565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c0957610c0961558d565b634e487b7160e01b600052603260045260246000fd5b6000823560fe198336030181126155e257600080fd5b9190910192915050565b6000808335601e1984360301811261560357600080fd5b8301803591506001600160401b0382111561561d57600080fd5b602001915036819003821315614a5657600080fd5b601f82111561178a576000816000526020600020601f850160051c8101602086101561565b5750805b601f850160051c820191505b81811015612bff57828155600101615667565b600019600383901b1c191660019190911b1790565b6001600160401b038311156156a6576156a6614b34565b6156ba836156b48354615502565b83615632565b6000601f8411600181146156e857600085156156d65750838201355b6156e0868261567a565b84555061122a565b600083815260209020601f19861690835b8281101561571957868501358255602094850194600190920191016156f9565b50868210156157365760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201556006810160c0830135615790816148e1565b81546001600160a01b0319166001600160a01b03919091161790556157b860e08301836155ec565b6130f581836007860161568f565b6000808335601e198436030181126157dd57600080fd5b83016020810192503590506001600160401b038111156157fc57600080fd5b803603821315614a5657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408082528181018490526000906060808401600587901b850182018885805b8a81101561590657888403605f190185528235368d900360fe19018112615879578283fd5b8c018035855260208082013581870152888201358987015287820135888701526080808301359087015260a080830135908701526101009060c0808401356158c0816148e1565b6001600160a01b03169088015260e06158db848201856157c6565b945083828a01526158ef848a01868361580b565b998301999850505094909401935050600101615854565b5050508615156020870152935061167392505050565b8082028115828204841417610c0957610c0961558d565b60008261595057634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b81810381811115610c0957610c0961558d565b6000816159c5576159c561558d565b506000190190565b8284823760609190911b6001600160601b0319169101908152601401919050565b858152606060208201526000615a0860608301868861580b565b8281036040840152615a1b81858761580b565b98975050505050505050565b81516001600160401b03811115615a4057615a40614b34565b615a5481615a4e8454615502565b84615632565b602080601f831160018114615a835760008415615a715750858301515b615a7b858261567a565b865550612bff565b600085815260208120601f198616915b82811015615ab257888601518255948401946001909101908401615a93565b5085821015615ad05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808335601e19843603018112615af757600080fd5b8301803591506001600160401b03821115615b1157600080fd5b6020019150600581901b3603821315614a5657600080fd5b6020808252600f908201526e45786365656473206d61782062707360881b604082015260600190565b602080825260119082015270125b9d985b1a59081c9958da5c1a595b9d607a1b604082015260600190565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351615bad816015850160208801614965565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351615bde816026840160208801614965565b01602601949350505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000615cd46040830185614e06565b8281036020840152615ce68185614e06565b95945050505050565b60208082526002908201526110ab60f11b604082015260600190565b604081526000615d1e6040830185614989565b8281036020840152615ce68185614989565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090615da790830186614e06565b8281036060840152615db98186614e06565b90508281036080840152615a1b8185614989565b600060208284031215615ddf57600080fd5b815161355b81614932565b600060033d1115613c3c5760046000803e5060005160e01c90565b600060443d1015615e135790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615e4257505050505090565b8285019150815181811115615e5a5750505050505090565b843d8701016020828501011115615e745750505050505090565b615e8360208286010187614b4a565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b600082516155e2818460208701614965565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061488890830184614989565b600060208284031215615f3457600080fd5b815161355b81614a5d56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205c8988b95d2731b030dc633f47f1b46c83be22ba4ef88a327412e55f43b1021d64736f6c63430008170033