Overview ERC721
Total Supply:
666 HB

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

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

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No

Created At:
Fri, 15 Jul 2022 00:04:40 GMT
HELLBORN.sol
HELLBORN.sol
HELLBORN.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "uint96",
        "name": "_royaltyFeesInBips",
        "type": "uint96"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "HELL_LIST_MINT",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_salePrice",
        "type": "uint256"
      }
    ],
    "name": "calculateRoyalty",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "endSale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "freeRollHELLBORNs",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_numToMint",
        "type": "uint256"
      }
    ],
    "name": "getCostForMintingHELLBORNs",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "getHELLBORNsBelongingToOwner",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "getNumFreeRollHELLBORNs",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPrice",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "get_MAX_MINTABLE_AT_ONCE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "numRolls",
        "type": "uint256"
      }
    ],
    "name": "giveFreeRoll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "hellURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "imageHash",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isSaleOn",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_numToMint",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "numTotalHELLBORNs",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "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": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "saleHasBeenStarted",
    "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": "baseURI",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_contractURI",
        "type": "string"
      }
    ],
    "name": "setContractURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_imageHash",
        "type": "string"
      }
    ],
    "name": "setImageHash",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newMAXMINT",
        "type": "uint256"
      }
    ],
    "name": "setMAX_MINTABLE_AT_ONCE",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newPrice",
        "type": "uint256"
      }
    ],
    "name": "setPrice",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "_royaltyFeesInBips",
        "type": "uint96"
      }
    ],
    "name": "setRoyaltyInfo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "startSale",
    "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": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawFailsafe",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawTeam",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040526000600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506042600e556000600f5573d71f9f35bb9477483b1c54474e7700147e819d3b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d71f9f35bb9477483b1c54474e7700147e819d3b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061029a6102ae5560006102af5561029a6102b1553480156200010f57600080fd5b5060405162005a2338038062005a238339818101604052810190620001359190620003d5565b6040518060400160405280600881526020017f48454c4c424f524e0000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f48420000000000000000000000000000000000000000000000000000000000008152506000620001b36200030660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508160019080519060200190620002699291906200030e565b508060029080519060200190620002829291906200030e565b5050506001600b8190555080601060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550336010600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000498565b600033905090565b8280546200031c9062000419565b90600052602060002090601f0160209004810192826200034057600085556200038c565b82601f106200035b57805160ff19168380011785556200038c565b828001600101855582156200038c579182015b828111156200038b5782518255916020019190600101906200036e565b5b5090506200039b91906200039f565b5090565b5b80821115620003ba576000816000905550600101620003a0565b5090565b600081519050620003cf816200047e565b92915050565b600060208284031215620003e857600080fd5b6000620003f884828501620003be565b91505092915050565b60006bffffffffffffffffffffffff82169050919050565b600060028204905060018216806200043257607f821691505b602082108114156200044957620004486200044f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620004898162000401565b81146200049557600080fd5b50565b61557b80620004a86000396000f3fe60806040526004361061027d5760003560e01c8063779e170d1161014f578063a2e69613116100c1578063caf6a5be1161007a578063caf6a5be14610976578063e8a3d485146109b3578063e985e9c5146109de578063f2f5ec1514610a1b578063f2fde38b14610a44578063ff7ea29514610a6d5761027d565b8063a2e696131461087a578063a6f6e1c2146108b7578063b66a0e5d146108e2578063b88d4fde146108f9578063bb51f32d14610922578063c87b56dd146109395761027d565b806395d89b411161011357806395d89b411461078b57806398d5fdca146107b65780639a37f4b8146107e1578063a0712d681461080a578063a1d8981914610826578063a22cb465146108515761027d565b8063779e170d146106a6578063831db630146106d15780638da5cb5b1461070e57806391b7f5ed14610739578063938e3d7b146107625761027d565b80632a55205a116101f357806351605d80116101ac57806351605d801461058457806355f804b3146105af5780635828735d146105d85780636352211e1461061557806370a0823114610652578063715018a61461068f5761027d565b80632a55205a146104755780632f745c59146104b3578063380d831b146104f05780633af03e8a1461050757806342842e0e1461051e5780634f6ccce7146105475761027d565b8063095ea7b311610245578063095ea7b314610379578063122fe1d2146103a257806318160ddd146103cd5780632231e71b146103f857806323b872dd1461043557806326a442131461045e5761027d565b806301ffc9a71461028257806302fa7c47146102bf57806304299b2a146102e857806306fdde0314610311578063081812fc1461033c575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a49190613fd5565b610a98565b6040516102b69190614c92565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190613f99565b610ada565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190614027565b610bcc565b005b34801561031d57600080fd5b50610326610c62565b6040516103339190614cad565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190614068565b610cf4565b6040516103709190614b71565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b9190613f5d565b610d79565b005b3480156103ae57600080fd5b506103b7610e91565b6040516103c49190614cad565b60405180910390f35b3480156103d957600080fd5b506103e2610f23565b6040516103ef919061500f565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190613df2565b610f30565b60405161042c9190614c70565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190613e57565b6110ac565b005b34801561046a57600080fd5b5061047361110c565b005b34801561048157600080fd5b5061049c60048036038101906104979190614091565b6112a7565b6040516104aa929190614bd8565b60405180910390f35b3480156104bf57600080fd5b506104da60048036038101906104d59190613f5d565b6112e1565b6040516104e7919061500f565b60405180910390f35b3480156104fc57600080fd5b50610505611386565b005b34801561051357600080fd5b5061051c61141f565b005b34801561052a57600080fd5b5061054560048036038101906105409190613e57565b61154a565b005b34801561055357600080fd5b5061056e60048036038101906105699190614068565b61156a565b60405161057b919061500f565b60405180910390f35b34801561059057600080fd5b50610599611601565b6040516105a69190614cad565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d19190614027565b61168f565b005b3480156105e457600080fd5b506105ff60048036038101906105fa9190614068565b611726565b60405161060c919061500f565b60405180910390f35b34801561062157600080fd5b5061063c60048036038101906106379190614068565b6117de565b6040516106499190614b71565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190613df2565b611890565b604051610686919061500f565b60405180910390f35b34801561069b57600080fd5b506106a4611948565b005b3480156106b257600080fd5b506106bb611a82565b6040516106c89190614c92565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190613df2565b611a95565b604051610705919061500f565b60405180910390f35b34801561071a57600080fd5b50610723611adf565b6040516107309190614b71565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190614068565b611b08565b005b34801561076e57600080fd5b5061078960048036038101906107849190614027565b611b8e565b005b34801561079757600080fd5b506107a0611c24565b6040516107ad9190614cad565b60405180910390f35b3480156107c257600080fd5b506107cb611cb6565b6040516107d8919061500f565b60405180910390f35b3480156107ed57600080fd5b5061080860048036038101906108039190614068565b611cc0565b005b610824600480360381019061081f9190614068565b611d46565b005b34801561083257600080fd5b5061083b611f0a565b6040516108489190614c92565b60405180910390f35b34801561085d57600080fd5b5061087860048036038101906108739190613f21565b611f1d565b005b34801561088657600080fd5b506108a1600480360381019061089c9190614068565b61209e565b6040516108ae919061500f565b60405180910390f35b3480156108c357600080fd5b506108cc6120e8565b6040516108d9919061500f565b60405180910390f35b3480156108ee57600080fd5b506108f76120f2565b005b34801561090557600080fd5b50610920600480360381019061091b9190613ea6565b6121a6565b005b34801561092e57600080fd5b50610937612208565b005b34801561094557600080fd5b50610960600480360381019061095b9190614068565b61237b565b60405161096d9190614cad565b60405180910390f35b34801561098257600080fd5b5061099d60048036038101906109989190613df2565b612414565b6040516109aa919061500f565b60405180910390f35b3480156109bf57600080fd5b506109c861242d565b6040516109d59190614cad565b60405180910390f35b3480156109ea57600080fd5b50610a056004803603810190610a009190613e1b565b6124bb565b604051610a129190614c92565b60405180910390f35b348015610a2757600080fd5b50610a426004803603810190610a3d9190613f5d565b61254f565b005b348015610a5057600080fd5b50610a6b6004803603810190610a669190613df2565b61267b565b005b348015610a7957600080fd5b50610a82612824565b604051610a8f919061500f565b60405180910390f35b6000632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ad35750610ad28261282e565b5b9050919050565b610ae26128a8565b73ffffffffffffffffffffffffffffffffffffffff16610b00611adf565b73ffffffffffffffffffffffffffffffffffffffff1614610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90614eef565b60405180910390fd5b816010600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505050565b610bd46128a8565b73ffffffffffffffffffffffffffffffffffffffff16610bf2611adf565b73ffffffffffffffffffffffffffffffffffffffff1614610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f90614eef565b60405180910390fd5b80600c9080519060200190610c5e929190613c01565b5050565b606060018054610c7190615359565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9d90615359565b8015610cea5780601f10610cbf57610100808354040283529160200191610cea565b820191906000526020600020905b815481529060010190602001808311610ccd57829003601f168201915b5050505050905090565b6000610cff826128b0565b610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590614ecf565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d84826117de565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90614f4f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e146128a8565b73ffffffffffffffffffffffffffffffffffffffff161480610e435750610e4281610e3d6128a8565b6124bb565b5b610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990614e0f565b60405180910390fd5b610e8c838361291c565b505050565b606060118054610ea090615359565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecc90615359565b8015610f195780601f10610eee57610100808354040283529160200191610f19565b820191906000526020600020905b815481529060010190602001808311610efc57829003601f168201915b5050505050905090565b6000600980549050905090565b60606000610f3d83611890565b90506000811415610fc057600067ffffffffffffffff811115610f89577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610fb75781602001602082028036833780820191505090505b509150506110a7565b60008167ffffffffffffffff811115611002577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156110305781602001602082028036833780820191505090505b50905060005b828110156110a05761104885826112e1565b828281518110611081577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080806110989061538b565b915050611036565b5080925050505b919050565b6110bd6110b76128a8565b826129d5565b6110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390614f8f565b60405180910390fd5b611107838383612ab3565b505050565b6002600b541415611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114990614fcf565b60405180910390fd5b6002600b8190555060006102b060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490614daf565b60405180910390fd5b60006102b060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006102b060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611272610f23565b61127a612824565b6112849190615223565b905080821115611292578091505b61129b82612d0f565b50506001600b81905550565b6000806010600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112d68461209e565b915091509250929050565b60006112ec83611890565b821061132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490614cef565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61138e6128a8565b73ffffffffffffffffffffffffffffffffffffffff166113ac611adf565b73ffffffffffffffffffffffffffffffffffffffff1614611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f990614eef565b60405180910390fd5b6000600d60006101000a81548160ff021916908315150217905550565b6114276128a8565b73ffffffffffffffffffffffffffffffffffffffff16611445611adf565b73ffffffffffffffffffffffffffffffffffffffff161461149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290614eef565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516114c190614b5c565b60006040518083038185875af1925050503d80600081146114fe576040519150601f19603f3d011682016040523d82523d6000602084013e611503565b606091505b5050905080611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e90614f6f565b60405180910390fd5b50565b611565838383604051806020016040528060008152506121a6565b505050565b6000611574610f23565b82106115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac90614faf565b60405180910390fd5b600982815481106115ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b600c805461160e90615359565b80601f016020809104026020016040519081016040528092919081815260200182805461163a90615359565b80156116875780601f1061165c57610100808354040283529160200191611687565b820191906000526020600020905b81548152906001019060200180831161166a57829003601f168201915b505050505081565b6116976128a8565b73ffffffffffffffffffffffffffffffffffffffff166116b5611adf565b73ffffffffffffffffffffffffffffffffffffffff161461170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290614eef565b60405180910390fd5b806102b29080519060200190611722929190613c01565b5050565b6000611730612824565b82611739610f23565b6117439190615142565b1115611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b90614def565b60405180910390fd5b600e548211156117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090614e8f565b60405180910390fd5b600f54826117d791906151c9565b9050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e90614e4f565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614e2f565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119506128a8565b73ffffffffffffffffffffffffffffffffffffffff1661196e611adf565b73ffffffffffffffffffffffffffffffffffffffff16146119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90614eef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900460ff1681565b60006102b060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b106128a8565b73ffffffffffffffffffffffffffffffffffffffff16611b2e611adf565b73ffffffffffffffffffffffffffffffffffffffff1614611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b90614eef565b60405180910390fd5b80600f8190555050565b611b966128a8565b73ffffffffffffffffffffffffffffffffffffffff16611bb4611adf565b73ffffffffffffffffffffffffffffffffffffffff1614611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190614eef565b60405180910390fd5b8060119080519060200190611c20929190613c01565b5050565b606060028054611c3390615359565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5f90615359565b8015611cac5780601f10611c8157610100808354040283529160200191611cac565b820191906000526020600020905b815481529060010190602001808311611c8f57829003601f168201915b5050505050905090565b6000600f54905090565b611cc86128a8565b73ffffffffffffffffffffffffffffffffffffffff16611ce6611adf565b73ffffffffffffffffffffffffffffffffffffffff1614611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3390614eef565b60405180910390fd5b80600e8190555050565b6002600b541415611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8390614fcf565b60405180910390fd5b6002600b81905550600d60009054906101000a900460ff16611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda90614ccf565b60405180910390fd5b6000611ded610f23565b9050611df7612824565b8282611e039190615142565b1115611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b90614fef565b60405180910390fd5b600082600f54611e5491906151c9565b905080341015611e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9090614e6f565b60405180910390fd5b80341115611ef4573373ffffffffffffffffffffffffffffffffffffffff166108fc8234611ec79190615223565b9081150290604051600060405180830381858888f19350505050158015611ef2573d6000803e3d6000fd5b505b611efd83612d0f565b50506001600b8190555050565b600d60019054906101000a900460ff1681565b611f256128a8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8a90614d8f565b60405180910390fd5b8060066000611fa06128a8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661204d6128a8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120929190614c92565b60405180910390a35050565b6000601060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16612710836120d79190615198565b6120e191906151c9565b9050919050565b6000600e54905090565b6120fa6128a8565b73ffffffffffffffffffffffffffffffffffffffff16612118611adf565b73ffffffffffffffffffffffffffffffffffffffff161461216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590614eef565b60405180910390fd5b6001600d60006101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff021916908315150217905550565b6121b76121b16128a8565b836129d5565b6121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed90614f8f565b60405180910390fd5b61220284848484612dae565b50505050565b6122106128a8565b73ffffffffffffffffffffffffffffffffffffffff1661222e611adf565b73ffffffffffffffffffffffffffffffffffffffff1614612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90614eef565b60405180910390fd5b60004790506000600660648361229a9190615198565b6122a491906151c9565b9050600081836122b49190615223565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505061231657600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505061237657600080fd5b505050565b60606000612387612e0a565b9050600061239484612e9d565b905060006040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525090506000835114156123e55781935050505061240f565b8282826040516020016123fa93929190614b2b565b60405160208183030381529060405293505050505b919050565b6102b06020528060005260406000206000915090505481565b6011805461243a90615359565b80601f016020809104026020016040519081016040528092919081815260200182805461246690615359565b80156124b35780601f10612488576101008083540402835291602001916124b3565b820191906000526020600020905b81548152906001019060200180831161249657829003601f168201915b505050505081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6125576128a8565b73ffffffffffffffffffffffffffffffffffffffff16612575611adf565b73ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290614eef565b60405180910390fd5b60006102b060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818161261c9190615142565b6102b060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816102af5461266f9190615142565b6102af81905550505050565b6126836128a8565b73ffffffffffffffffffffffffffffffffffffffff166126a1611adf565b73ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90614eef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275e90614d2f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061029a905090565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806128a157506128a08261304a565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661298f836117de565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006129e0826128b0565b612a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1690614dcf565b60405180910390fd5b6000612a2a836117de565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a9957508373ffffffffffffffffffffffffffffffffffffffff16612a8184610cf4565b73ffffffffffffffffffffffffffffffffffffffff16145b80612aaa5750612aa981856124bb565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612ad3826117de565b73ffffffffffffffffffffffffffffffffffffffff1614612b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2090614f0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9090614d6f565b60405180910390fd5b612ba483838361312c565b612baf60008261291c565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bff9190615223565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c569190615142565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600e54811115612d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4b90614f2f565b60405180910390fd5b60006102ae54905060005b82811015612da1576000612d73848361313c565b9050612d7f33826131aa565b8280612d8a9061532f565b935050508080612d999061538b565b915050612d5f565b50806102ae819055505050565b612db9848484612ab3565b612dc5848484846131c8565b612e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfb90614d0f565b60405180910390fd5b50505050565b60606102b28054612e1a90615359565b80601f0160208091040260200160405190810160405280929190818152602001828054612e4690615359565b8015612e935780601f10612e6857610100808354040283529160200191612e93565b820191906000526020600020905b815481529060010190602001808311612e7657829003601f168201915b5050505050905090565b60606000821415612ee5576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613045565b600082905060005b60008214612f17578080612f009061538b565b915050600a82612f109190615198565b9150612eed565b60008167ffffffffffffffff811115612f59577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612f8b5781602001600182028036833780820191505090505b5090505b6000851461303e57600182612fa49190615223565b9150600a85612fb391906153d4565b6030612fbf9190615142565b60f81b818381518110612ffb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856130379190615198565b9450612f8f565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061311557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061312557506131248261335f565b5b9050919050565b6131378383836133c9565b505050565b600080333a43426001436131509190615223565b4088886040516020016131699796959493929190614c01565b6040516020818303038152906040528051906020012060001c905060006102ae548261319591906153d4565b90506131a0816134dd565b9250505092915050565b6131c4828260405180602001604052806000815250613648565b5050565b60006131e98473ffffffffffffffffffffffffffffffffffffffff166136a3565b15613352578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026132126128a8565b8786866040518563ffffffff1660e01b81526004016132349493929190614b8c565b602060405180830381600087803b15801561324e57600080fd5b505af192505050801561327f57506040513d601f19601f8201168201806040525081019061327c9190613ffe565b60015b613302573d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b506000815114156132fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f190614d0f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613357565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6133d48383836136b6565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561341757613412816136bb565b613456565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613455576134548382613704565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134995761349481613871565b6134d8565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146134d7576134d682826139b4565b5b5b505050565b60008060148361029a811061351b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0154905060008082141561353157839050613535565b8190505b600060016102ae546135479190615223565b905080851461362457600060148261029a811061358d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0154905060008114156135e0578160148761029a81106135d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0181905550613622565b8060148761029a811061361c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01819055505b505b6102ae60008154809291906136389061532f565b9190505550819350505050919050565b6136528383613a33565b61365f60008484846131c8565b61369e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369590614d0f565b60405180910390fd5b505050565b600080823b905060008111915050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161371184611890565b61371b9190615223565b9050600060086000848152602001908152602001600020549050818114613800576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506138859190615223565b90506000600a60008481526020019081526020016000205490506000600983815481106138db577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060098381548110613923577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480613998577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006139bf83611890565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a9a90614eaf565b60405180910390fd5b613aac816128b0565b15613aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae390614d4f565b60405180910390fd5b613af86000838361312c565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b489190615142565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054613c0d90615359565b90600052602060002090601f016020900481019282613c2f5760008555613c76565b82601f10613c4857805160ff1916838001178555613c76565b82800160010185558215613c76579182015b82811115613c75578251825591602001919060010190613c5a565b5b509050613c839190613c87565b5090565b5b80821115613ca0576000816000905550600101613c88565b5090565b6000613cb7613cb28461505b565b61502a565b905082815260208101848484011115613ccf57600080fd5b613cda8482856152ed565b509392505050565b6000613cf5613cf08461508b565b61502a565b905082815260208101848484011115613d0d57600080fd5b613d188482856152ed565b509392505050565b600081359050613d2f816154d2565b92915050565b600081359050613d44816154e9565b92915050565b600081359050613d5981615500565b92915050565b600081519050613d6e81615500565b92915050565b600082601f830112613d8557600080fd5b8135613d95848260208601613ca4565b91505092915050565b600082601f830112613daf57600080fd5b8135613dbf848260208601613ce2565b91505092915050565b600081359050613dd781615517565b92915050565b600081359050613dec8161552e565b92915050565b600060208284031215613e0457600080fd5b6000613e1284828501613d20565b91505092915050565b60008060408385031215613e2e57600080fd5b6000613e3c85828601613d20565b9250506020613e4d85828601613d20565b9150509250929050565b600080600060608486031215613e6c57600080fd5b6000613e7a86828701613d20565b9350506020613e8b86828701613d20565b9250506040613e9c86828701613dc8565b9150509250925092565b60008060008060808587031215613ebc57600080fd5b6000613eca87828801613d20565b9450506020613edb87828801613d20565b9350506040613eec87828801613dc8565b925050606085013567ffffffffffffffff811115613f0957600080fd5b613f1587828801613d74565b91505092959194509250565b60008060408385031215613f3457600080fd5b6000613f4285828601613d20565b9250506020613f5385828601613d35565b9150509250929050565b60008060408385031215613f7057600080fd5b6000613f7e85828601613d20565b9250506020613f8f85828601613dc8565b9150509250929050565b60008060408385031215613fac57600080fd5b6000613fba85828601613d20565b9250506020613fcb85828601613ddd565b9150509250929050565b600060208284031215613fe757600080fd5b6000613ff584828501613d4a565b91505092915050565b60006020828403121561401057600080fd5b600061401e84828501613d5f565b91505092915050565b60006020828403121561403957600080fd5b600082013567ffffffffffffffff81111561405357600080fd5b61405f84828501613d9e565b91505092915050565b60006020828403121561407a57600080fd5b600061408884828501613dc8565b91505092915050565b600080604083850312156140a457600080fd5b60006140b285828601613dc8565b92505060206140c385828601613dc8565b9150509250929050565b60006140d98383614b0d565b60208301905092915050565b6140ee81615257565b82525050565b60006140ff826150cb565b61410981856150f9565b9350614114836150bb565b8060005b8381101561414557815161412c88826140cd565b9750614137836150ec565b925050600181019050614118565b5085935050505092915050565b61415b81615269565b82525050565b61416a81615275565b82525050565b600061417b826150d6565b614185818561510a565b93506141958185602086016152fc565b61419e816154c1565b840191505092915050565b60006141b4826150e1565b6141be8185615126565b93506141ce8185602086016152fc565b6141d7816154c1565b840191505092915050565b60006141ed826150e1565b6141f78185615137565b93506142078185602086016152fc565b80840191505092915050565b6000614220601883615126565b91507f53616c65206861736e27742073746172746564207965742e00000000000000006000830152602082019050919050565b6000614260602b83615126565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b60006142c6603283615126565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b600061432c602683615126565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614392601c83615126565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b60006143d2602483615126565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614438601983615126565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000614478601d83615126565b91507f596f7520617265206e6f7420696e207468652048454c4c2d4c495354210000006000830152602082019050919050565b60006144b8602c83615126565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061451e602183615126565b91507f546865726520617265206e6f742074686973206d616e7920484273206c65667460008301527f2e000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614584603883615126565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b60006145ea602a83615126565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000614650602983615126565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006146b6602683615126565b91507f546f6f206c6974746c652073656e742c20706c656173652073656e64206d6f7260008301527f65206574682e00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061471c601e83615126565b91507f596f752063616e6e6f74206d696e742074686174206d616e79204842732e00006000830152602082019050919050565b600061475c602083615126565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b600061479c602c83615126565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000614802602083615126565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614842602983615126565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006148a8601983615126565b91507f4d696e74696e6720746f6f206d616e79206174206f6e63652e000000000000006000830152602082019050919050565b60006148e8602183615126565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061494e60008361511b565b9150600082019050919050565b6000614968601083615126565b91507f5472616e73666572206661696c65642e000000000000000000000000000000006000830152602082019050919050565b60006149a8603183615126565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000614a0e602c83615126565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6000614a74601f83615126565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000614ab4602683615126565b91507f5468657265206172656e27742074686973206d616e792048454c4c424f524e7360008301527f206c6566742e00000000000000000000000000000000000000000000000000006020830152604082019050919050565b614b16816152cb565b82525050565b614b25816152cb565b82525050565b6000614b3782866141e2565b9150614b4382856141e2565b9150614b4f82846141e2565b9150819050949350505050565b6000614b6782614941565b9150819050919050565b6000602082019050614b8660008301846140e5565b92915050565b6000608082019050614ba160008301876140e5565b614bae60208301866140e5565b614bbb6040830185614b1c565b8181036060830152614bcd8184614170565b905095945050505050565b6000604082019050614bed60008301856140e5565b614bfa6020830184614b1c565b9392505050565b600060e082019050614c16600083018a6140e5565b614c236020830189614b1c565b614c306040830188614b1c565b614c3d6060830187614b1c565b614c4a6080830186614161565b614c5760a0830185614b1c565b614c6460c0830184614b1c565b98975050505050505050565b60006020820190508181036000830152614c8a81846140f4565b905092915050565b6000602082019050614ca76000830184614152565b92915050565b60006020820190508181036000830152614cc781846141a9565b905092915050565b60006020820190508181036000830152614ce881614213565b9050919050565b60006020820190508181036000830152614d0881614253565b9050919050565b60006020820190508181036000830152614d28816142b9565b9050919050565b60006020820190508181036000830152614d488161431f565b9050919050565b60006020820190508181036000830152614d6881614385565b9050919050565b60006020820190508181036000830152614d88816143c5565b9050919050565b60006020820190508181036000830152614da88161442b565b9050919050565b60006020820190508181036000830152614dc88161446b565b9050919050565b60006020820190508181036000830152614de8816144ab565b9050919050565b60006020820190508181036000830152614e0881614511565b9050919050565b60006020820190508181036000830152614e2881614577565b9050919050565b60006020820190508181036000830152614e48816145dd565b9050919050565b60006020820190508181036000830152614e6881614643565b9050919050565b60006020820190508181036000830152614e88816146a9565b9050919050565b60006020820190508181036000830152614ea88161470f565b9050919050565b60006020820190508181036000830152614ec88161474f565b9050919050565b60006020820190508181036000830152614ee88161478f565b9050919050565b60006020820190508181036000830152614f08816147f5565b9050919050565b60006020820190508181036000830152614f2881614835565b9050919050565b60006020820190508181036000830152614f488161489b565b9050919050565b60006020820190508181036000830152614f68816148db565b9050919050565b60006020820190508181036000830152614f888161495b565b9050919050565b60006020820190508181036000830152614fa88161499b565b9050919050565b60006020820190508181036000830152614fc881614a01565b9050919050565b60006020820190508181036000830152614fe881614a67565b9050919050565b6000602082019050818103600083015261500881614aa7565b9050919050565b60006020820190506150246000830184614b1c565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561505157615050615492565b5b8060405250919050565b600067ffffffffffffffff82111561507657615075615492565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156150a6576150a5615492565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061514d826152cb565b9150615158836152cb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561518d5761518c615405565b5b828201905092915050565b60006151a3826152cb565b91506151ae836152cb565b9250826151be576151bd615434565b5b828204905092915050565b60006151d4826152cb565b91506151df836152cb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561521857615217615405565b5b828202905092915050565b600061522e826152cb565b9150615239836152cb565b92508282101561524c5761524b615405565b5b828203905092915050565b6000615262826152ab565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006bffffffffffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561531a5780820151818401526020810190506152ff565b83811115615329576000848401525b50505050565b600061533a826152cb565b9150600082141561534e5761534d615405565b5b600182039050919050565b6000600282049050600182168061537157607f821691505b6020821081141561538557615384615463565b5b50919050565b6000615396826152cb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156153c9576153c8615405565b5b600182019050919050565b60006153df826152cb565b91506153ea836152cb565b9250826153fa576153f9615434565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6154db81615257565b81146154e657600080fd5b50565b6154f281615269565b81146154fd57600080fd5b50565b6155098161527f565b811461551457600080fd5b50565b615520816152cb565b811461552b57600080fd5b50565b615537816152d5565b811461554257600080fd5b5056fea264697066735822122001a324e3eb7891508878539cd8fc1cba6a62325b0fe342e72e8768214ef7fa1b64736f6c63430008000033000000000000000000000000000000000000000000000000000000000000029a