Token migration announcement. XPower token contract has migrated to a new address.
Overview ERC1155
Total Supply:
0 LOKINFT

Holders:
2
Profile Summary
Blockchain:
C-Chain (43114)

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

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Created At:
Thu, 01 Dec 2022 21:15:43 GMT
AccessControl.sol
@openzeppelin
contracts
access
AccessControl.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "nftUri",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "moeLink",
        "type": "address"
      },
      {
        "internalType": "address[]",
        "name": "nftBase",
        "type": "address[]"
      },
      {
        "internalType": "uint256",
        "name": "deadlineIn",
        "type": "uint256"
      }
    ],
    "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": 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": "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": "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": [],
    "name": "EXA",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "GIGA",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "KILO",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MEGA",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "NFT_SEAL_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "NFT_SEAL_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PETA",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "TERA",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UNIT",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "URI_DATA_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "URI_DATA_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "YOTTA",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "ZETTA",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "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": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "uint256",
        "name": "level",
        "type": "uint256"
      }
    ],
    "name": "denominationOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "exists",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "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": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleMemberCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "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": "uint256",
        "name": "anno",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "level",
        "type": "uint256"
      }
    ],
    "name": "idBy",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "anno",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "levels",
        "type": "uint256[]"
      }
    ],
    "name": "idsBy",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "base",
        "type": "address"
      }
    ],
    "name": "indexOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "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": "uint256",
        "name": "nftId",
        "type": "uint256"
      }
    ],
    "name": "levelOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "nftId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "index",
        "type": "uint256[]"
      }
    ],
    "name": "migrate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "nftIds",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "index",
        "type": "uint256[]"
      }
    ],
    "name": "migrateBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "nftId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "index",
        "type": "uint256[]"
      }
    ],
    "name": "migrateFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "nftIds",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "index",
        "type": "uint256[]"
      }
    ],
    "name": "migrateFromBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "level",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "levels",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "mintBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "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": "index",
        "type": "uint256"
      }
    ],
    "name": "seal",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sealedAll",
    "outputs": [
      {
        "internalType": "bool[]",
        "name": "",
        "type": "bool[]"
      }
    ],
    "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": "string",
        "name": "newuri",
        "type": "string"
      }
    ],
    "name": "setURI",
    "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": "id",
        "type": "uint256"
      }
    ],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "uri",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "year",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "nftId",
        "type": "uint256"
      }
    ],
    "name": "yearOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b50604051620045e8380380620045e883398101604081905262000034916200077b565b6040518060400160405280600b81526020016a58506f776572204c6f6b6960a81b815250604051806040016040528060078152602001661313d2d253919560ca1b81525085858585858585848481818462000095816200035560201b60201c565b50620000a360003362000367565b620000de7f4a89d315e602b0589d706720a2c812227309c5069c55dff3ebf78f5e797aac69600080516020620045a8833981519152620003aa565b620000f9600080516020620045a88339815191523362000367565b620001347fbc524e8ef0f829ac5a52282466b7de9273cee2f628ae71bbcd8e2d8cd73f4a59600080516020620045c8833981519152620003aa565b6200014f600080516020620045c88339815191523362000367565b6200015b814262000886565b60085581516001600160401b038111156200017a576200017a62000684565b604051908082528060200260200182016040528015620001a4578160200160208202803683370190505b508051620001bb9160069160209091019062000561565b5081516001600160401b03811115620001d857620001d862000684565b60405190808252806020026020018201604052801562000202578160200160208202803683370190505b5080516200021991600991602090910190620005cb565b5060005b8251811015620002e4578281815181106200023c576200023c6200089c565b6020026020010151600682815481106200025a576200025a6200089c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060076000858481518110620002a257620002a26200089c565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080620002db90620008b2565b9150506200021d565b50505062000301620002fb620003f560201b60201c565b620003f9565b600b6200030f86826200095c565b50600c6200031e85826200095c565b5050600d80546001600160a01b0319166001600160a01b0398909816979097179096555062000a289b505050505050505050505050565b60026200036382826200095c565b5050565b6200037e82826200044b60201b620017a51760201c565b6000828152600560209081526040909120620003a59183906200182b620004ef821b17901c565b505050565b600082815260046020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526004602090815260408083206001600160a01b038516845290915290205460ff16620003635760008281526004602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620004ab3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000506836001600160a01b0384166200050f565b90505b92915050565b6000818152600183016020526040812054620005585750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000509565b50600062000509565b828054828255906000526020600020908101928215620005b9579160200282015b82811115620005b957825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000582565b50620005c79291506200066d565b5090565b82805482825590600052602060002090601f01602090048101928215620005b95791602002820160005b838211156200063457835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302620005f5565b8015620006635782816101000a81549060ff021916905560010160208160000104928301926001030262000634565b5050620005c79291505b5b80821115620005c757600081556001016200066e565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620006c557620006c562000684565b604052919050565b80516001600160a01b0381168114620006e557600080fd5b919050565b600082601f830112620006fc57600080fd5b815160206001600160401b038211156200071a576200071a62000684565b8160051b6200072b8282016200069a565b92835284810182019282810190878511156200074657600080fd5b83870192505b8483101562000770576200076083620006cd565b825291830191908301906200074c565b979650505050505050565b600080600080608085870312156200079257600080fd5b84516001600160401b0380821115620007aa57600080fd5b818701915087601f830112620007bf57600080fd5b815181811115620007d457620007d462000684565b6020620007ea601f8301601f191682016200069a565b8281528a82848701011115620007ff57600080fd5b60005b838110156200081f57858101830151828201840152820162000802565b506000818401830152975062000837898201620006cd565b9650505060408701519150808211156200085057600080fd5b506200085f87828801620006ea565b606096909601519497939650505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000509576200050962000870565b634e487b7160e01b600052603260045260246000fd5b600060018201620008c757620008c762000870565b5060010190565b600181811c90821680620008e357607f821691505b6020821081036200090457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a557600081815260208120601f850160051c81016020861015620009335750805b601f850160051c820191505b8181101562000954578281556001016200093f565b505050505050565b81516001600160401b0381111562000978576200097862000684565b6200099081620009898454620008ce565b846200090a565b602080601f831160018114620009c85760008415620009af5750858301515b600019600386901b1c1916600185901b17855562000954565b600085815260208120601f198616915b82811015620009f957888601518255948401946001909101908401620009d8565b508582101562000a185787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613b708062000a386000396000f3fe608060405234801561001057600080fd5b50600436106103415760003560e01c80638da5cb5b116101b8578063cb431e7611610104578063e985e9c5116100a2578063f2fde38b1161007c578063f2fde38b1461075d578063f326971614610770578063f5298aca14610778578063fd6aad251461078b57600080fd5b8063e985e9c5146106e7578063eb49721414610723578063f242432a1461074a57600080fd5b8063d547741f116100de578063d547741f146106b1578063d5e5e062146106c4578063d81d0a15146106cc578063df435be8146106df57600080fd5b8063cb431e761461065b578063cd9b869a14610663578063cde828951461068a57600080fd5b8063a217fddf11610171578063bd85b0391161014b578063bd85b0391461060d578063c446d5501461062d578063c7b8b19d14610635578063ca15c8731461064857600080fd5b8063a217fddf146105df578063a22cb465146105e7578063ad888520146105fa57600080fd5b80638da5cb5b146105655780639010d07c1461058a57806391d148541461059d57806394c209a5146105b057806395d89b41146105d75780639d8e2177146105df57600080fd5b806340da7ce7116102925780636252e4e7116102305780636d5e30321161020a5780636d5e30321461052f578063715018a61461054257806386fe212d1461054a57806389c3cbae1461055d57600080fd5b80636252e4e7146105015780636b20c454146105145780636c749c261461052757600080fd5b80634f558e791161026c5780634f558e79146104b157806355095bd2146104d35780635925e211146104e657806361c0c976146104ee57600080fd5b806340da7ce7146104695780634e1273f41461047c5780634ebe18411461049c57600080fd5b806319fe0665116102ff5780632eb2c2d6116102d95780632eb2c2d6146104285780632f2ff15d1461043b578063361ce97e1461044e57806336568abe1461045657600080fd5b806319fe0665146103df578063248a9ca3146103f257806329cd827d1461041557600080fd5b8062fdd58e1461034657806301ffc9a71461036c57806302fe53051461038f57806306fdde03146103a45780630e89341c146103b9578063156e29f6146103cc575b600080fd5b610359610354366004612ab3565b6107b4565b6040519081526020015b60405180910390f35b61037f61037a366004612af3565b61084d565b6040519015158152602001610363565b6103a261039d366004612baf565b610858565b005b6103ac61088f565b6040516103639190612c4f565b6103ac6103c7366004612c62565b61091d565b6103a26103da366004612c7b565b6109b1565b6103a26103ed366004612d42565b610b03565b610359610400366004612c62565b60009081526004602052604090206001015490565b610359610423366004612c62565b610b14565b6103a2610436366004612de9565b610b69565b6103a2610449366004612e92565b610bb5565b610359600381565b6103a2610464366004612e92565b610bda565b6103a2610477366004612ebe565b610c54565b61048f61048a366004612f1e565b610e05565b6040516103639190613023565b6104a4610f2e565b6040516103639190613036565b61037f6104bf366004612c62565b600090815260036020526040902054151590565b6103596104e1366004612c62565b610fa6565b610359601581565b6103a26104fc36600461307c565b610fd7565b61035961050f3660046130c1565b610fe3565b6103a26105223660046130e3565b61106b565b610359601281565b61035961053d366004612c62565b6110ae565b6103a2611106565b6103a2610558366004612c62565b61111a565b610359600c81565b600a546001600160a01b03165b6040516001600160a01b039091168152602001610363565b6105726105983660046130c1565b611186565b61037f6105ab366004612e92565b61119e565b6103597fbc524e8ef0f829ac5a52282466b7de9273cee2f628ae71bbcd8e2d8cd73f4a5981565b6103ac6111c9565b610359600081565b6103a26105f536600461311d565b6111d6565b6103a2610608366004613159565b6111e1565b61035961061b366004612c62565b60009081526003602052604090205490565b610359600981565b61048f6106433660046131e5565b6113c3565b610359610656366004612c62565b61146a565b610359600681565b6103597f4a89d315e602b0589d706720a2c812227309c5069c55dff3ebf78f5e797aac6981565b6103597f18279111969b053eb32d637cdc8d9e7e53d648d3969f60ee55ddd0f63a7c328081565b6103a26106bf366004612e92565b611481565b610359601881565b6103a26106da3660046130e3565b6114a6565b610359600f81565b61037f6106f5366004613221565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6103597f21b4f2a846971d5096997e4122542f612858bcbb112ef24ef9b354083523151981565b6103a261075836600461324b565b611653565b6103a261076b3660046132af565b611698565b610359611711565b6103a2610786366004612c7b565b611762565b6103596107993660046132af565b6001600160a01b031660009081526007602052604090205490565b60006001600160a01b0383166108245760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b600061084782611840565b7f4a89d315e602b0589d706720a2c812227309c5069c55dff3ebf78f5e797aac696108828161184b565b61088b82611855565b5050565b600b805461089c906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546108c8906132ca565b80156109155780601f106108ea57610100808354040283529160200191610915565b820191906000526020600020905b8154815290600101906020018083116108f857829003601f168201915b505050505081565b60606002805461092c906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610958906132ca565b80156109a55780601f1061097a576101008083540402835291602001916109a5565b820191906000526020600020905b81548152906001019060200180831161098857829003601f168201915b50505050509050919050565b60006109bc83610b14565b6109c6908361331a565b9050600081116109e85760405162461bcd60e51b815260040161081b90613331565b600d546040805163313ce56760e01b815290516001600160a01b03909216916379cc6790918791849163313ce5679160048083019260209291908290030181865afa158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f919061335e565b610a6a90600a613465565b610a74908561331a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610aba57600080fd5b505af1158015610ace573d6000803e3d6000fd5b50505050610afd84610ae7610ae1611711565b86610fe3565b8460405180602001604052806000815250611861565b50505050565b610b0f338484846111e1565b505050565b6000610b2160038361348a565b15610b3e5760405162461bcd60e51b815260040161081b9061349e565b60648210610b5e5760405162461bcd60e51b815260040161081b906134c9565b61084782600a6134f0565b6001600160a01b038516331480610b855750610b8585336106f5565b610ba15760405162461bcd60e51b815260040161081b906134fc565b610bae858585858561194a565b5050505050565b600082815260046020526040902060010154610bd08161184b565b610b0f8383611af4565b6001600160a01b0381163314610c4a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161081b565b61088b8282611b16565b600981600081518110610c6957610c6961354a565b602002602001015181548110610c8157610c8161354a565b90600052602060002090602091828204019190069054906101000a900460ff1615610ce15760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb881cd9585b195960821b604482015260640161081b565b6008544290811115610d275760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b604482015260640161081b565b600682600081518110610d3c57610d3c61354a565b602002602001015181548110610d5457610d5461354a565b600091825260209091200154604051637a94c56560e11b81526001600160a01b03878116600483015260248201879052604482018690529091169063f5298aca90606401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505060008311610dea5760405162461bcd60e51b815260040161081b90613331565b610bae85858560405180602001604052806000815250611861565b60608151835114610e6a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161081b565b600083516001600160401b03811115610e8557610e85612b10565b604051908082528060200260200182016040528015610eae578160200160208202803683370190505b50905060005b8451811015610f2657610ef9858281518110610ed257610ed261354a565b6020026020010151858381518110610eec57610eec61354a565b60200260200101516107b4565b828281518110610f0b57610f0b61354a565b6020908102919091010152610f1f81613560565b9050610eb4565b509392505050565b60606009805480602002602001604051908101604052809291908181526020018280548015610f9c57602002820191906000526020600020906000905b825461010083900a900460ff161515815260206001928301818104948501949093039092029101808411610f6b5790505b5050505050905090565b600080610fb4606484613579565b90506107b281116108475760405162461bcd60e51b815260040161081b9061358d565b610b0f33848484610c54565b6000610ff060038361348a565b1561100d5760405162461bcd60e51b815260040161081b9061349e565b6064821061102d5760405162461bcd60e51b815260040161081b906134c9565b6107b2831161104e5760405162461bcd60e51b815260040161081b9061358d565b8161105a84606461331a565b61106491906135b3565b9392505050565b6001600160a01b038316331480611087575061108783336106f5565b6110a35760405162461bcd60e51b815260040161081b906134fc565b610b0f838383611b38565b6000806110bc60648461348a565b90506110c960038261348a565b156110e65760405162461bcd60e51b815260040161081b9061349e565b606481106108475760405162461bcd60e51b815260040161081b906134c9565b61110e611cd4565b6111186000611d2e565b565b7fbc524e8ef0f829ac5a52282466b7de9273cee2f628ae71bbcd8e2d8cd73f4a596111448161184b565b6001600983815481106111595761115961354a565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055505050565b60008281526005602052604081206110649083611d80565b60009182526004602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600c805461089c906132ca565b61088b338383611d8c565b6009816000815181106111f6576111f661354a565b60200260200101518154811061120e5761120e61354a565b90600052602060002090602091828204019190069054906101000a900460ff161561126e5760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb881cd9585b195960821b604482015260640161081b565b60085442908111156112b45760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b604482015260640161081b565b6006826000815181106112c9576112c961354a565b6020026020010151815481106112e1576112e161354a565b600091825260209091200154604051631ac8311560e21b81526001600160a01b0390911690636b20c4549061131e908890889088906004016135c6565b600060405180830381600087803b15801561133857600080fd5b505af115801561134c573d6000803e3d6000fd5b5050505060005b83518110156113a75760008482815181106113705761137061354a565b6020026020010151116113955760405162461bcd60e51b815260040161081b90613331565b8061139f81613560565b915050611353565b50610bae85858560405180602001604052806000815250611e6c565b6060600082516001600160401b038111156113e0576113e0612b10565b604051908082528060200260200182016040528015611409578160200160208202803683370190505b50905060005b8351811015610f265761143b8585838151811061142e5761142e61354a565b6020026020010151610fe3565b82828151811061144d5761144d61354a565b60209081029190910101528061146281613560565b91505061140f565b600081815260056020526040812061084790611fc6565b60008281526004602052604090206001015461149c8161184b565b610b0f8383611b16565b6000805b835181101561153d5760006114d78583815181106114ca576114ca61354a565b6020026020010151610b14565b8483815181106114e9576114e961354a565b60200260200101516114fb919061331a565b90506000811161151d5760405162461bcd60e51b815260040161081b90613331565b61152781846135b3565b925050808061153590613560565b9150506114aa565b50600d546040805163313ce56760e01b815290516001600160a01b03909216916379cc6790918791849163313ce5679160048083019260209291908290030181865afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b5919061335e565b6115c090600a613465565b6115ca908561331a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561161057600080fd5b505af1158015611624573d6000803e3d6000fd5b50505050610afd8461163d611637611711565b866113c3565b8460405180602001604052806000815250611e6c565b6001600160a01b03851633148061166f575061166f85336106f5565b61168b5760405162461bcd60e51b815260040161081b906134fc565b610bae8585858585611fd0565b6116a0611cd4565b6001600160a01b0381166117055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081b565b61170e81611d2e565b50565b60008063bc19138061172442606461331a565b61172e9190613579565b61173a906107b26135b3565b90506107b2811161175d5760405162461bcd60e51b815260040161081b9061358d565b919050565b6001600160a01b03831633148061177e575061177e83336106f5565b61179a5760405162461bcd60e51b815260040161081b906134fc565b610b0f838383612108565b6117af828261119e565b61088b5760008281526004602090815260408083206001600160a01b03851684529091529020805460ff191660011790556117e73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611064836001600160a01b038416612220565b60006108478261226f565b61170e813361227a565b600261088b828261364c565b6001600160a01b0384166118875760405162461bcd60e51b815260040161081b9061370b565b336000611893856122d3565b905060006118a0856122d3565b90506118b18360008985858961231e565b6000868152602081815260408083206001600160a01b038b168452909152812080548792906118e19084906135b3565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46119418360008989898961232c565b50505050505050565b815183511461196b5760405162461bcd60e51b815260040161081b9061374c565b6001600160a01b0384166119915760405162461bcd60e51b815260040161081b90613794565b336119a081878787878761231e565b60005b8451811015611a865760008582815181106119c0576119c061354a565b6020026020010151905060008583815181106119de576119de61354a565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015611a2e5760405162461bcd60e51b815260040161081b906137d9565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611a6b9084906135b3565b9250508190555050505080611a7f90613560565b90506119a3565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611ad6929190613823565b60405180910390a4611aec818787878787612487565b505050505050565b611afe82826117a5565b6000828152600560205260409020610b0f908261182b565b611b208282612542565b6000828152600560205260409020610b0f90826125a9565b6001600160a01b038316611b5e5760405162461bcd60e51b815260040161081b90613851565b8051825114611b7f5760405162461bcd60e51b815260040161081b9061374c565b6000339050611ba28185600086866040518060200160405280600081525061231e565b60005b8351811015611c67576000848281518110611bc257611bc261354a565b602002602001015190506000848381518110611be057611be061354a565b602090810291909101810151600084815280835260408082206001600160a01b038c168352909352919091205490915081811015611c305760405162461bcd60e51b815260040161081b90613894565b6000928352602083815260408085206001600160a01b038b1686529091529092209103905580611c5f81613560565b915050611ba5565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611cb8929190613823565b60405180910390a4604080516020810190915260009052610afd565b600a546001600160a01b031633146111185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081b565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061106483836125be565b816001600160a01b0316836001600160a01b031603611dff5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161081b565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416611e925760405162461bcd60e51b815260040161081b9061370b565b8151835114611eb35760405162461bcd60e51b815260040161081b9061374c565b33611ec38160008787878761231e565b60005b8451811015611f5e57838181518110611ee157611ee161354a565b6020026020010151600080878481518110611efe57611efe61354a565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254611f4691906135b3565b90915550819050611f5681613560565b915050611ec6565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611faf929190613823565b60405180910390a4610bae81600087878787612487565b6000610847825490565b6001600160a01b038416611ff65760405162461bcd60e51b815260040161081b90613794565b336000612002856122d3565b9050600061200f856122d3565b905061201f83898985858961231e565b6000868152602081815260408083206001600160a01b038c168452909152902054858110156120605760405162461bcd60e51b815260040161081b906137d9565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061209d9084906135b3565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46120fd848a8a8a8a8a61232c565b505050505050505050565b6001600160a01b03831661212e5760405162461bcd60e51b815260040161081b90613851565b33600061213a846122d3565b90506000612147846122d3565b90506121678387600085856040518060200160405280600081525061231e565b6000858152602081815260408083206001600160a01b038a168452909152902054848110156121a85760405162461bcd60e51b815260040161081b90613894565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052611941565b600081815260018301602052604081205461226757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610847565b506000610847565b6000610847826125e8565b612284828261119e565b61088b57612291816125f3565b61229c836020612605565b6040516020016122ad9291906138d8565b60408051601f198184030181529082905262461bcd60e51b825261081b91600401612c4f565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061230d5761230d61354a565b602090810291909101015292915050565b611aec8686868686866127a0565b6001600160a01b0384163b15611aec5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612370908990899088908890889060040161394d565b6020604051808303816000875af19250505080156123ab575060408051601f3d908101601f191682019092526123a891810190613992565b60015b612457576123b76139af565b806308c379a0036123f057506123cb6139cb565b806123d657506123f2565b8060405162461bcd60e51b815260040161081b9190612c4f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161081b565b6001600160e01b0319811663f23a6e6160e01b146119415760405162461bcd60e51b815260040161081b90613a54565b6001600160a01b0384163b15611aec5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906124cb9089908990889088908890600401613a9c565b6020604051808303816000875af1925050508015612506575060408051601f3d908101601f1916820190925261250391810190613992565b60015b612512576123b76139af565b6001600160e01b0319811663bc197c8160e01b146119415760405162461bcd60e51b815260040161081b90613a54565b61254c828261119e565b1561088b5760008281526004602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611064836001600160a01b038416612919565b60008260000182815481106125d5576125d561354a565b9060005260206000200154905092915050565b600061084782612a0c565b60606108476001600160a01b03831660145b6060600061261483600261331a565b61261f9060026135b3565b6001600160401b0381111561263657612636612b10565b6040519080825280601f01601f191660200182016040528015612660576020820181803683370190505b509050600360fc1b8160008151811061267b5761267b61354a565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106126aa576126aa61354a565b60200101906001600160f81b031916908160001a90535060006126ce84600261331a565b6126d99060016135b3565b90505b6001811115612751576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061270d5761270d61354a565b1a60f81b8282815181106127235761272361354a565b60200101906001600160f81b031916908160001a90535060049490941c9361274a81613afa565b90506126dc565b5083156110645760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161081b565b6001600160a01b0385166128275760005b8351811015612825578281815181106127cc576127cc61354a565b6020026020010151600360008684815181106127ea576127ea61354a565b60200260200101518152602001908152602001600020600082825461280f91906135b3565b9091555061281e905081613560565b90506127b1565b505b6001600160a01b038416611aec5760005b83518110156119415760008482815181106128555761285561354a565b6020026020010151905060008483815181106128735761287361354a565b60200260200101519050600060036000848152602001908152602001600020549050818110156128f65760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b606482015260840161081b565b6000928352600360205260409092209103905561291281613560565b9050612838565b60008181526001830160205260408120548015612a0257600061293d600183613b11565b855490915060009061295190600190613b11565b90508181146129b65760008660000182815481106129715761297161354a565b90600052602060002001549050808760000184815481106129945761299461354a565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806129c7576129c7613b24565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610847565b6000915050610847565b60006001600160e01b03198216635a05180f60e01b148061084757506108478260006001600160e01b03198216637965db0b60e01b148061084757506108478260006001600160e01b03198216636cdb3d1360e11b1480612a7d57506001600160e01b031982166303a24d0760e21b145b8061084757506301ffc9a760e01b6001600160e01b0319831614610847565b80356001600160a01b038116811461175d57600080fd5b60008060408385031215612ac657600080fd5b612acf83612a9c565b946020939093013593505050565b6001600160e01b03198116811461170e57600080fd5b600060208284031215612b0557600080fd5b813561106481612add565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715612b4b57612b4b612b10565b6040525050565b60006001600160401b03831115612b6b57612b6b612b10565b604051612b82601f8501601f191660200182612b26565b809150838152848484011115612b9757600080fd5b83836020830137600060208583010152509392505050565b600060208284031215612bc157600080fd5b81356001600160401b03811115612bd757600080fd5b8201601f81018413612be857600080fd5b612bf784823560208401612b52565b949350505050565b60005b83811015612c1a578181015183820152602001612c02565b50506000910152565b60008151808452612c3b816020860160208601612bff565b601f01601f19169290920160200192915050565b6020815260006110646020830184612c23565b600060208284031215612c7457600080fd5b5035919050565b600080600060608486031215612c9057600080fd5b612c9984612a9c565b95602085013595506040909401359392505050565b60006001600160401b03821115612cc757612cc7612b10565b5060051b60200190565b600082601f830112612ce257600080fd5b81356020612cef82612cae565b604051612cfc8282612b26565b83815260059390931b8501820192828101915086841115612d1c57600080fd5b8286015b84811015612d375780358352918301918301612d20565b509695505050505050565b600080600060608486031215612d5757600080fd5b83356001600160401b0380821115612d6e57600080fd5b612d7a87838801612cd1565b94506020860135915080821115612d9057600080fd5b612d9c87838801612cd1565b93506040860135915080821115612db257600080fd5b50612dbf86828701612cd1565b9150509250925092565b600082601f830112612dda57600080fd5b61106483833560208501612b52565b600080600080600060a08688031215612e0157600080fd5b612e0a86612a9c565b9450612e1860208701612a9c565b935060408601356001600160401b0380821115612e3457600080fd5b612e4089838a01612cd1565b94506060880135915080821115612e5657600080fd5b612e6289838a01612cd1565b93506080880135915080821115612e7857600080fd5b50612e8588828901612dc9565b9150509295509295909350565b60008060408385031215612ea557600080fd5b82359150612eb560208401612a9c565b90509250929050565b60008060008060808587031215612ed457600080fd5b612edd85612a9c565b9350602085013592506040850135915060608501356001600160401b03811115612f0657600080fd5b612f1287828801612cd1565b91505092959194509250565b60008060408385031215612f3157600080fd5b82356001600160401b0380821115612f4857600080fd5b818501915085601f830112612f5c57600080fd5b81356020612f6982612cae565b604051612f768282612b26565b83815260059390931b8501820192828101915089841115612f9657600080fd5b948201945b83861015612fbb57612fac86612a9c565b82529482019490820190612f9b565b96505086013592505080821115612fd157600080fd5b50612fde85828601612cd1565b9150509250929050565b600081518084526020808501945080840160005b8381101561301857815187529582019590820190600101612ffc565b509495945050505050565b6020815260006110646020830184612fe8565b6020808252825182820181905260009190848201906040850190845b81811015613070578351151583529284019291840191600101613052565b50909695505050505050565b60008060006060848603121561309157600080fd5b833592506020840135915060408401356001600160401b038111156130b557600080fd5b612dbf86828701612cd1565b600080604083850312156130d457600080fd5b50508035926020909101359150565b6000806000606084860312156130f857600080fd5b61310184612a9c565b925060208401356001600160401b0380821115612d9057600080fd5b6000806040838503121561313057600080fd5b61313983612a9c565b91506020830135801515811461314e57600080fd5b809150509250929050565b6000806000806080858703121561316f57600080fd5b61317885612a9c565b935060208501356001600160401b038082111561319457600080fd5b6131a088838901612cd1565b945060408701359150808211156131b657600080fd5b6131c288838901612cd1565b935060608701359150808211156131d857600080fd5b50612f1287828801612cd1565b600080604083850312156131f857600080fd5b8235915060208301356001600160401b0381111561321557600080fd5b612fde85828601612cd1565b6000806040838503121561323457600080fd5b61323d83612a9c565b9150612eb560208401612a9c565b600080600080600060a0868803121561326357600080fd5b61326c86612a9c565b945061327a60208701612a9c565b9350604086013592506060860135915060808601356001600160401b038111156132a357600080fd5b612e8588828901612dc9565b6000602082840312156132c157600080fd5b61106482612a9c565b600181811c908216806132de57607f821691505b6020821081036132fe57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761084757610847613304565b6020808252601390820152721b9bdb8b5c1bdcda5d1a5d9948185b5bdd5b9d606a1b604082015260600190565b60006020828403121561337057600080fd5b815160ff8116811461106457600080fd5b600181815b808511156133bc5781600019048211156133a2576133a2613304565b808516156133af57918102915b93841c9390800290613386565b509250929050565b6000826133d357506001610847565b816133e057506000610847565b81600181146133f657600281146134005761341c565b6001915050610847565b60ff84111561341157613411613304565b50506001821b610847565b5060208310610133831016604e8410600b841016171561343f575081810a610847565b6134498383613381565b806000190482111561345d5761345d613304565b029392505050565b600061106460ff8416836133c4565b634e487b7160e01b600052601260045260246000fd5b60008261349957613499613474565b500690565b6020808252601190820152701b9bdb8b5d195c9b985c9e481b195d995b607a1b604082015260600190565b6020808252600d908201526c1a5b9d985b1a59081b195d995b609a1b604082015260600190565b600061106483836133c4565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161357257613572613304565b5060010190565b60008261358857613588613474565b500490565b6020808252600c908201526b34b73b30b634b2103cb2b0b960a11b604082015260600190565b8082018082111561084757610847613304565b6001600160a01b03841681526060602082018190526000906135ea90830185612fe8565b82810360408401526135fc8185612fe8565b9695505050505050565b601f821115610b0f57600081815260208120601f850160051c8101602086101561362d5750805b601f850160051c820191505b81811015611aec57828155600101613639565b81516001600160401b0381111561366557613665612b10565b6136798161367384546132ca565b84613606565b602080601f8311600181146136ae57600084156136965750858301515b600019600386901b1c1916600185901b178555611aec565b600085815260208120601f198616915b828110156136dd578886015182559484019460019091019084016136be565b50858210156136fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6040815260006138366040830185612fe8565b82810360208401526138488185612fe8565b95945050505050565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613910816017850160208801612bff565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613941816028840160208801612bff565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061398790830184612c23565b979650505050505050565b6000602082840312156139a457600080fd5b815161106481612add565b600060033d11156139c85760046000803e5060005160e01c5b90565b600060443d10156139d95790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715613a0857505050505090565b8285019150815181811115613a205750505050505090565b843d8701016020828501011115613a3a5750505050505090565b613a4960208286010187612b26565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090613ac890830186612fe8565b8281036060840152613ada8186612fe8565b90508281036080840152613aee8185612c23565b98975050505050505050565b600081613b0957613b09613304565b506000190190565b8181038181111561084757610847613304565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220415a712ab65ce5f6ac7657c1a5de810252eb6fcf0d79aed66bdd91f3f31bdf8f64736f6c6343000811003321b4f2a846971d5096997e4122542f612858bcbb112ef24ef9b354083523151918279111969b053eb32d637cdc8d9e7e53d648d3969f60ee55ddd0f63a7c328000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000f310c35c006a86bd0df6595b1856ce8ef06bbd300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000007861f80000000000000000000000000000000000000000000000000000000000000006b68747470733a2f2f697066732e78706f7765726d696e652e636f6d2f697066732f516d52585475714267586431754366506b67414e4139683864515148517873346d73416a35336d6d7956714651712f6e6674732f333230783432372f6c6f6b692f7b69647d2e6a736f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000092e332cc5e9772f18e15b9ab72e2dc86f5336d2b0000000000000000000000003e56f51369a4652095b9e45541ba4373526d57220000000000000000000000008de2e43282fe87c8f04387b6511615edf86af5e400000000000000000000000074af5454e7a3b2a8d0f452b20b770d7d547e6a110000000000000000000000008d558f21e745e84a818a6e0879294ae98423717a0000000000000000000000007fd7c89caa8c0a071ab16f0e3fb95f9fe30dc3de