Overview ERC721
Total Supply:
327 AEPG0

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

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

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No

Created At:
Thu, 26 May 2022 21:10:45 GMT
Address.sol
Address.sol
Address.sol
AEPGen0.sol
Context.sol
ERC165.sol
ERC721.sol
IERC165.sol
IERC721.sol
IERC721Metadata.sol
IERC721Receiver.sol
Ownable.sol
Pausable.sol
SafeMath.sol
Strings.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_baseTokensUri",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "_NFTsTransferWallet",
        "type": "address"
      }
    ],
    "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": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "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"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "_HumanCurrentSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_VampireCurrentSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_ZombieCurrentSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_humanTierIndexId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_vampireTierIndexId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_zombieTierIndexId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "allMintedParts",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseTokensURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentTokenId",
    "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": [],
    "name": "getMintedPartURI",
    "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": "mintHumanNFT",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "toWallet",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mintOldHumansTokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "toWallet",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mintOldVampiresTokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "toWallet",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mintOldZombiesTokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintVampireNFT",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintZombieNFT",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintedPart",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintisLive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "oldTokensHumansLimit",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "oldTokensVampiresLimit",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "oldTokensZombiesLimit",
    "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": "pauseContract",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "resumeContract",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newSupply",
        "type": "uint256"
      }
    ],
    "name": "setHumansSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "setMintIsLive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      }
    ],
    "name": "setMintedPartURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newSupply",
        "type": "uint256"
      }
    ],
    "name": "setVampiresSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newSupply",
        "type": "uint256"
      }
    ],
    "name": "setZombiesSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "tokenTierIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "enum AEPGen0.TIER",
        "name": "tier",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "tokensOwner",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "enum AEPGen0.TIER",
        "name": "tier",
        "type": "uint8"
      }
    ],
    "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"
  }
]


Contract Creation Code
60806040526040518060400160405280600f81526020017f416c7465722045676f2050756e6b7300000000000000000000000000000000008152506007908051906020019062000051929190620005b9565b506040518060400160405280600581526020017f4145504730000000000000000000000000000000000000000000000000000000815250600890805190602001906200009f929190620005b9565b506000600b5561022a600c55603f600d556040600e556102a9600f556000601055600060115560006012556102af60135560486014556048601555604051806020016040528060008152506018908051906020019062000101929190620005b9565b506000601a60006101000a81548160ff0219169083151502179055503480156200012a57600080fd5b5060405162005efd38038062005efd833981810160405281019062000150919062000903565b600780546200015f9062000998565b80601f01602080910402602001604051908101604052809291908181526020018280546200018d9062000998565b8015620001de5780601f10620001b257610100808354040283529160200191620001de565b820191906000526020600020905b815481529060010190602001808311620001c057829003601f168201915b505050505060088054620001f29062000998565b80601f0160208091040260200160405190810160405280929190818152602001828054620002209062000998565b8015620002715780601f10620002455761010080835404028352916020019162000271565b820191906000526020600020905b8154815290600101906020018083116200025357829003601f168201915b505050505060008060006101000a81548160ff021916908315150217905550620002b0620002a46200038c60201b60201c565b6200039460201b60201c565b8160019080519060200190620002c8929190620005b9565b508060029080519060200190620002e1929190620005b9565b5050508160099080519060200190620002fc929190620005b9565b5080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003846040518060400160405280600581526020017f70617274310000000000000000000000000000000000000000000000000000008152506200045960201b60201c565b505062000ac2565b600033905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620004696200038c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200048f6200059060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004df9062000a2e565b60405180910390fd5b60008151036200052f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005269062000aa0565b60405180910390fd5b806018908051906020019062000547929190620005b9565b5060196018908060018154018082558091505060019003906000526020600020016000909190919091509080546200057f9062000998565b6200058c9291906200064a565b5050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620005c79062000998565b90600052602060002090601f016020900481019282620005eb576000855562000637565b82601f106200060657805160ff191683800117855562000637565b8280016001018555821562000637579182015b828111156200063657825182559160200191906001019062000619565b5b509050620006469190620006e2565b5090565b828054620006589062000998565b90600052602060002090601f0160209004810192826200067c5760008555620006cf565b82601f106200068f5780548555620006cf565b82800160010185558215620006cf57600052602060002091601f016020900482015b82811115620006ce578254825591600101919060010190620006b1565b5b509050620006de9190620006e2565b5090565b5b80821115620006fd576000816000905550600101620006e3565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200076a826200071f565b810181811067ffffffffffffffff821117156200078c576200078b62000730565b5b80604052505050565b6000620007a162000701565b9050620007af82826200075f565b919050565b600067ffffffffffffffff821115620007d257620007d162000730565b5b620007dd826200071f565b9050602081019050919050565b60005b838110156200080a578082015181840152602081019050620007ed565b838111156200081a576000848401525b50505050565b6000620008376200083184620007b4565b62000795565b9050828152602081018484840111156200085657620008556200071a565b5b62000863848285620007ea565b509392505050565b600082601f83011262000883576200088262000715565b5b81516200089584826020860162000820565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008cb826200089e565b9050919050565b620008dd81620008be565b8114620008e957600080fd5b50565b600081519050620008fd81620008d2565b92915050565b600080604083850312156200091d576200091c6200070b565b5b600083015167ffffffffffffffff8111156200093e576200093d62000710565b5b6200094c858286016200086b565b92505060206200095f85828601620008ec565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009b157607f821691505b602082108103620009c757620009c662000969565b5b50919050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000a16602083620009cd565b915062000a2382620009de565b602082019050919050565b6000602082019050818103600083015262000a498162000a07565b9050919050565b7f50617274206e616d6520697320656d7074790000000000000000000000000000600082015250565b600062000a88601283620009cd565b915062000a958262000a50565b602082019050919050565b6000602082019050818103600083015262000abb8162000a79565b9050919050565b61542b8062000ad26000396000f3fe6080604052600436106102ad5760003560e01c806370dadf9711610175578063b925f76a116100dc578063e12ca54e11610095578063f59ddcea1161006f578063f59ddcea14610a3d578063f735a95f14610a47578063f9aacc1114610a70578063fef7abf514610a9b576102ad565b8063e12ca54e146109ae578063e985e9c5146109d7578063f2fde38b14610a14576102ad565b8063b925f76a146108b1578063c4bc5da5146108ef578063c87b56dd14610906578063cc5aa74214610943578063d28d88521461096c578063dc55645814610997576102ad565b806396d109d91161012e57806396d109d9146107b557806399e8b39c146107e0578063a22cb4651461080b578063b09f126614610834578063b28f98981461085f578063b88d4fde14610888576102ad565b806370dadf97146106f6578063715018a614610734578063821968a31461074b5780638da5cb5b146107555780638eb18ce71461078057806395d89b411461078a576102ad565b80633b866bd1116102195780635e9ccfde116101d25780635e9ccfde146105be5780636352211e146105e957806364bf5ec4146106265780636f0f7e5b14610651578063701fdec61461067c57806370a08231146106b9576102ad565b80633b866bd1146104d257806342842e0e146104fd578063439766ce1461052657806344b8bb791461053d578063510c1dfc146105685780635c975abb14610593576102ad565b8063135d3e591161026b578063135d3e59146103d457806323b872dd146103ff57806326353b37146104285780632f66bcdc14610451578063310ed5fc1461047c57806331bfe149146104a7576102ad565b80629a9b7b146102b257806301ffc9a7146102dd57806306fdde031461031a578063081812fc14610345578063095ea7b31461038257806309ae8c7b146103ab575b600080fd5b3480156102be57600080fd5b506102c7610ac4565b6040516102d491906138f5565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff919061397c565b610aca565b60405161031191906139c4565b60405180910390f35b34801561032657600080fd5b5061032f610bac565b60405161033c9190613a78565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190613ac6565b610c3e565b6040516103799190613b34565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190613b7b565b610cc3565b005b3480156103b757600080fd5b506103d260048036038101906103cd9190613ac6565b610dda565b005b3480156103e057600080fd5b506103e9610e60565b6040516103f691906138f5565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613bbb565b610e66565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613d43565b610ec6565b005b34801561045d57600080fd5b50610466610fe1565b6040516104739190613a78565b60405180910390f35b34801561048857600080fd5b50610491611079565b60405161049e91906138f5565b60405180910390f35b3480156104b357600080fd5b506104bc61107f565b6040516104c99190613a78565b60405180910390f35b3480156104de57600080fd5b506104e761110d565b6040516104f491906138f5565b60405180910390f35b34801561050957600080fd5b50610524600480360381019061051f9190613bbb565b611113565b005b34801561053257600080fd5b5061053b611133565b005b34801561054957600080fd5b506105526111b9565b60405161055f91906138f5565b60405180910390f35b34801561057457600080fd5b5061057d6111bf565b60405161058a91906138f5565b60405180910390f35b34801561059f57600080fd5b506105a86111c5565b6040516105b591906139c4565b60405180910390f35b3480156105ca57600080fd5b506105d36111db565b6040516105e091906138f5565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b9190613ac6565b6111e1565b60405161061d9190613b34565b60405180910390f35b34801561063257600080fd5b5061063b611292565b60405161064891906138f5565b60405180910390f35b34801561065d57600080fd5b50610666611298565b60405161067391906138f5565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190613ac6565b61129e565b6040516106b09190613a78565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190613d8c565b61134a565b6040516106ed91906138f5565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190613b7b565b611401565b60405161072b929190613e30565b60405180910390f35b34801561074057600080fd5b5061074961144f565b005b6107536114d7565b005b34801561076157600080fd5b5061076a611682565b6040516107779190613b34565b60405180910390f35b6107886116ab565b005b34801561079657600080fd5b5061079f611856565b6040516107ac9190613a78565b60405180910390f35b3480156107c157600080fd5b506107ca6118e8565b6040516107d791906139c4565b60405180910390f35b3480156107ec57600080fd5b506107f56118fb565b6040516108029190613a78565b60405180910390f35b34801561081757600080fd5b50610832600480360381019061082d9190613e85565b611989565b005b34801561084057600080fd5b5061084961199f565b6040516108569190613a78565b60405180910390f35b34801561086b57600080fd5b5061088660048036038101906108819190613ac6565b611a2d565b005b34801561089457600080fd5b506108af60048036038101906108aa9190613f66565b611ab3565b005b3480156108bd57600080fd5b506108d860048036038101906108d39190613ac6565b611b15565b6040516108e6929190613e30565b60405180910390f35b3480156108fb57600080fd5b50610904611b46565b005b34801561091257600080fd5b5061092d60048036038101906109289190613ac6565b611bcc565b60405161093a9190613a78565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190613b7b565b611e88565b005b34801561097857600080fd5b50610981611fce565b60405161098e9190613a78565b60405180910390f35b3480156109a357600080fd5b506109ac61205c565b005b3480156109ba57600080fd5b506109d560048036038101906109d09190613b7b565b6120f5565b005b3480156109e357600080fd5b506109fe60048036038101906109f99190613fe9565b61223b565b604051610a0b91906139c4565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a369190613d8c565b6122cf565b005b610a456123c6565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190613ac6565b612571565b005b348015610a7c57600080fd5b50610a856125f7565b604051610a9291906138f5565b60405180910390f35b348015610aa757600080fd5b50610ac26004803603810190610abd9190613b7b565b6125fd565b005b600b5481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b9557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ba55750610ba482612743565b5b9050919050565b606060018054610bbb90614058565b80601f0160208091040260200160405190810160405280929190818152602001828054610be790614058565b8015610c345780601f10610c0957610100808354040283529160200191610c34565b820191906000526020600020905b815481529060010190602001808311610c1757829003601f168201915b5050505050905090565b6000610c49826127ad565b610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f906140fb565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cce826111e1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d359061418d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d5d612819565b73ffffffffffffffffffffffffffffffffffffffff161480610d8c5750610d8b81610d86612819565b61223b565b5b610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc29061421f565b60405180910390fd5b610dd58383612821565b505050565b610de2612819565b73ffffffffffffffffffffffffffffffffffffffff16610e00611682565b73ffffffffffffffffffffffffffffffffffffffff1614610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d9061428b565b60405180910390fd5b8060148190555050565b60135481565b610e77610e71612819565b826128da565b610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead9061431d565b60405180910390fd5b610ec18383836129b8565b505050565b610ece612819565b73ffffffffffffffffffffffffffffffffffffffff16610eec611682565b73ffffffffffffffffffffffffffffffffffffffff1614610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f399061428b565b60405180910390fd5b6000815103610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90614389565b60405180910390fd5b8060189080519060200190610f9c929190613780565b506019601890806001815401808255809150506001900390600052602060002001600090919091909150908054610fd290614058565b610fdd929190613806565b5050565b6060600060188054610ff290614058565b80601f016020809104026020016040519081016040528092919081815260200182805461101e90614058565b801561106b5780601f106110405761010080835404028352916020019161106b565b820191906000526020600020905b81548152906001019060200180831161104e57829003601f168201915b505050505090508091505090565b60145481565b6018805461108c90614058565b80601f01602080910402602001604051908101604052809291908181526020018280546110b890614058565b80156111055780601f106110da57610100808354040283529160200191611105565b820191906000526020600020905b8154815290600101906020018083116110e857829003601f168201915b505050505081565b60155481565b61112e83838360405180602001604052806000815250611ab3565b505050565b61113b612819565b73ffffffffffffffffffffffffffffffffffffffff16611159611682565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a69061428b565b60405180910390fd5b6111b7612c1e565b565b600c5481565b600e5481565b60008060009054906101000a900460ff16905090565b60125481565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112809061441b565b60405180910390fd5b80915050919050565b60105481565b60115481565b601981815481106112ae57600080fd5b9060005260206000200160009150905080546112c990614058565b80601f01602080910402602001604051908101604052809291908181526020018280546112f590614058565b80156113425780601f1061131757610100808354040283529160200191611342565b820191906000526020600020905b81548152906001019060200180831161132557829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b1906144ad565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6017602052816000526040600020818154811061141d57600080fd5b9060005260206000209060020201600091509150508060000154908060010160009054906101000a900460ff16905082565b611457612819565b73ffffffffffffffffffffffffffffffffffffffff16611475611682565b73ffffffffffffffffffffffffffffffffffffffff16146114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c29061428b565b60405180910390fd5b6114d56000612cc0565b565b6114df6111c5565b1561151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151690614519565b60405180910390fd5b60011515601a60009054906101000a900460ff16151514611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90614585565b60405180910390fd5b601554601254106115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b2906145f1565b60405180910390fd5b670a688906bd8b00003414611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc9061465d565b60405180910390fd5b611617611610612819565b6002612d85565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561167f573d6000803e3d6000fd5b50565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116b36111c5565b156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90614519565b60405180910390fd5b60011515601a60009054906101000a900460ff16151514611749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174090614585565b60405180910390fd5b6014546011541061178f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611786906146c9565b60405180910390fd5b6706f05b59d3b2000034146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090614735565b60405180910390fd5b6117eb6117e4612819565b6001612d85565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611853573d6000803e3d6000fd5b50565b60606002805461186590614058565b80601f016020809104026020016040519081016040528092919081815260200182805461189190614058565b80156118de5780601f106118b3576101008083540402835291602001916118de565b820191906000526020600020905b8154815290600101906020018083116118c157829003601f168201915b5050505050905090565b601a60009054906101000a900460ff1681565b6009805461190890614058565b80601f016020809104026020016040519081016040528092919081815260200182805461193490614058565b80156119815780601f1061195657610100808354040283529160200191611981565b820191906000526020600020905b81548152906001019060200180831161196457829003601f168201915b505050505081565b61199b611994612819565b8383612f1b565b5050565b600880546119ac90614058565b80601f01602080910402602001604051908101604052809291908181526020018280546119d890614058565b8015611a255780601f106119fa57610100808354040283529160200191611a25565b820191906000526020600020905b815481529060010190602001808311611a0857829003601f168201915b505050505081565b611a35612819565b73ffffffffffffffffffffffffffffffffffffffff16611a53611682565b73ffffffffffffffffffffffffffffffffffffffff1614611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa09061428b565b60405180910390fd5b8060138190555050565b611ac4611abe612819565b836128da565b611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa9061431d565b60405180910390fd5b611b0f84848484613087565b50505050565b60166020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b611b4e612819565b73ffffffffffffffffffffffffffffffffffffffff16611b6c611682565b73ffffffffffffffffffffffffffffffffffffffff1614611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb99061428b565b60405180910390fd5b611bca6130e3565b565b6060611bd7826127ad565b611c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0d906147c7565b60405180910390fd5b6000601660008481526020019081526020016000206000015411611c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6690614833565b60405180910390fd5b6000611c906016600085815260200190815260200160002060000154613184565b905060006016600085815260200190815260200160002060010160009054906101000a900460ff1690506000604051806020016040528060008152509050816002811115611ce157611ce0613db9565b5b60006002811115611cf557611cf4613db9565b5b03611d37576040518060400160405280600681526020017f68756d616e2f00000000000000000000000000000000000000000000000000008152509050611e06565b816002811115611d4a57611d49613db9565b5b600280811115611d5d57611d5c613db9565b5b03611d9f576040518060400160405280600881526020017f76616d706972652f0000000000000000000000000000000000000000000000008152509050611e05565b816002811115611db257611db1613db9565b5b60016002811115611dc657611dc5613db9565b5b03611e04576040518060400160405280600781526020017f7a6f6d6269652f0000000000000000000000000000000000000000000000000081525090505b5b5b6000601882604051602001611e1c92919061496f565b604051602081830303815290604052905060008185604051602001611e429291906149ea565b60405160208183030381529060405290506000600982604051602001611e6992919061496f565b6040516020818303038152906040529050809650505050505050919050565b611e90612819565b73ffffffffffffffffffffffffffffffffffffffff16611eae611682565b73ffffffffffffffffffffffffffffffffffffffff1614611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb9061428b565b60405180910390fd5b600c546010541115611f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4290614a65565b60405180910390fd5b601054600c54611f5b9190614ab4565b811115611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9490614b5a565b60405180910390fd5b6000600190505b818111611fc957611fb6836000612d85565b8080611fc190614b7a565b915050611fa4565b505050565b60078054611fdb90614058565b80601f016020809104026020016040519081016040528092919081815260200182805461200790614058565b80156120545780601f1061202957610100808354040283529160200191612054565b820191906000526020600020905b81548152906001019060200180831161203757829003601f168201915b505050505081565b612064612819565b73ffffffffffffffffffffffffffffffffffffffff16612082611682565b73ffffffffffffffffffffffffffffffffffffffff16146120d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cf9061428b565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b6120fd612819565b73ffffffffffffffffffffffffffffffffffffffff1661211b611682565b73ffffffffffffffffffffffffffffffffffffffff1614612171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121689061428b565b60405180910390fd5b600d5460115411156121b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121af90614c0e565b60405180910390fd5b601154600d546121c89190614ab4565b81111561220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220190614b5a565b60405180910390fd5b6000600190505b81811161223657612223836001612d85565b808061222e90614b7a565b915050612211565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6122d7612819565b73ffffffffffffffffffffffffffffffffffffffff166122f5611682565b73ffffffffffffffffffffffffffffffffffffffff161461234b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123429061428b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614ca0565b60405180910390fd5b6123c381612cc0565b50565b6123ce6111c5565b1561240e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240590614519565b60405180910390fd5b60011515601a60009054906101000a900460ff16151514612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90614585565b60405180910390fd5b601354601054106124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a190614d0c565b60405180910390fd5b6703782dace9d9000034146124f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124eb90614d78565b60405180910390fd5b6125066124ff612819565b6000612d85565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561256e573d6000803e3d6000fd5b50565b612579612819565b73ffffffffffffffffffffffffffffffffffffffff16612597611682565b73ffffffffffffffffffffffffffffffffffffffff16146125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e49061428b565b60405180910390fd5b8060158190555050565b600d5481565b612605612819565b73ffffffffffffffffffffffffffffffffffffffff16612623611682565b73ffffffffffffffffffffffffffffffffffffffff1614612679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126709061428b565b60405180910390fd5b600e5460125411156126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614de4565b60405180910390fd5b601254600e546126d09190614ab4565b811115612712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270990614b5a565b60405180910390fd5b6000600190505b81811161273e5761272b836002612d85565b808061273690614b7a565b915050612719565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612894836111e1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006128e5826127ad565b612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291b90614e76565b60405180910390fd5b600061292f836111e1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806129715750612970818561223b565b5b806129af57508373ffffffffffffffffffffffffffffffffffffffff1661299784610c3e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166129d8826111e1565b73ffffffffffffffffffffffffffffffffffffffff1614612a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2590614f08565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9490614f9a565b60405180910390fd5b612aa88383836132e4565b612ab3600082612821565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b039190614ab4565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b5a9190614fba565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c198383836132e9565b505050565b612c266111c5565b15612c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5d90614519565b60405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ca9612819565b604051612cb69190613b34565b60405180910390a1565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612d8d6132ee565b6000612d9882613308565b905060008103612da757600080fd5b612daf613893565b8281602001906002811115612dc757612dc6613db9565b5b90816002811115612ddb57612dda613db9565b5b81525050818160000181815250508060166000600b5481526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690836002811115612e3457612e33613db9565b5b0217905550905050612e4884600b546133fd565b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600b548152602001856002811115612ead57612eac613db9565b5b81525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a81548160ff02191690836002811115612f0e57612f0d613db9565b5b0217905550505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f809061505c565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161307a91906139c4565b60405180910390a3505050565b6130928484846129b8565b61309e848484846135d6565b6130dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d4906150ee565b60405180910390fd5b50505050565b6130eb6111c5565b61312a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131219061515a565b60405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61316d612819565b60405161317a9190613b34565b60405180910390a1565b6060600082036131cb576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506132df565b600082905060005b600082146131fd5780806131e690614b7a565b915050600a826131f691906151a9565b91506131d3565b60008167ffffffffffffffff81111561321957613218613c18565b5b6040519080825280601f01601f19166020018201604052801561324b5781602001600182028036833780820191505090505b5090505b600085146132d8576001826132649190614ab4565b9150600a8561327391906151da565b603061327f9190614fba565b60f81b8183815181106132955761329461520b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856132d191906151a9565b945061324f565b8093505050505b919050565b505050565b505050565b600b600081548092919061330190614b7a565b9190505550565b600081600281111561331d5761331c613db9565b5b6000600281111561333157613330613db9565b5b03613358576010600081548092919061334990614b7a565b919050555060105490506133f8565b81600281111561336b5761336a613db9565b5b60028081111561337e5761337d613db9565b5b036133a5576012600081548092919061339690614b7a565b919050555060125490506133f8565b8160028111156133b8576133b7613db9565b5b600160028111156133cc576133cb613db9565b5b036133f357601160008154809291906133e490614b7a565b919050555060115490506133f8565b600090505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361346c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346390615286565b60405180910390fd5b613475816127ad565b156134b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ac906152f2565b60405180910390fd5b6134c1600083836132e4565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135119190614fba565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135d2600083836132e9565b5050565b60006135f78473ffffffffffffffffffffffffffffffffffffffff1661375d565b15613750578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613620612819565b8786866040518563ffffffff1660e01b81526004016136429493929190615367565b6020604051808303816000875af192505050801561367e57506040513d601f19601f8201168201806040525081019061367b91906153c8565b60015b613700573d80600081146136ae576040519150601f19603f3d011682016040523d82523d6000602084013e6136b3565b606091505b5060008151036136f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ef906150ee565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613755565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461378c90614058565b90600052602060002090601f0160209004810192826137ae57600085556137f5565b82601f106137c757805160ff19168380011785556137f5565b828001600101855582156137f5579182015b828111156137f45782518255916020019190600101906137d9565b5b50905061380291906138bf565b5090565b82805461381290614058565b90600052602060002090601f0160209004810192826138345760008555613882565b82601f106138455780548555613882565b8280016001018555821561388257600052602060002091601f016020900482015b82811115613881578254825591600101919060010190613866565b5b50905061388f91906138bf565b5090565b604051806040016040528060008152602001600060028111156138b9576138b8613db9565b5b81525090565b5b808211156138d85760008160009055506001016138c0565b5090565b6000819050919050565b6138ef816138dc565b82525050565b600060208201905061390a60008301846138e6565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61395981613924565b811461396457600080fd5b50565b60008135905061397681613950565b92915050565b6000602082840312156139925761399161391a565b5b60006139a084828501613967565b91505092915050565b60008115159050919050565b6139be816139a9565b82525050565b60006020820190506139d960008301846139b5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a195780820151818401526020810190506139fe565b83811115613a28576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a4a826139df565b613a5481856139ea565b9350613a648185602086016139fb565b613a6d81613a2e565b840191505092915050565b60006020820190508181036000830152613a928184613a3f565b905092915050565b613aa3816138dc565b8114613aae57600080fd5b50565b600081359050613ac081613a9a565b92915050565b600060208284031215613adc57613adb61391a565b5b6000613aea84828501613ab1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b1e82613af3565b9050919050565b613b2e81613b13565b82525050565b6000602082019050613b496000830184613b25565b92915050565b613b5881613b13565b8114613b6357600080fd5b50565b600081359050613b7581613b4f565b92915050565b60008060408385031215613b9257613b9161391a565b5b6000613ba085828601613b66565b9250506020613bb185828601613ab1565b9150509250929050565b600080600060608486031215613bd457613bd361391a565b5b6000613be286828701613b66565b9350506020613bf386828701613b66565b9250506040613c0486828701613ab1565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613c5082613a2e565b810181811067ffffffffffffffff82111715613c6f57613c6e613c18565b5b80604052505050565b6000613c82613910565b9050613c8e8282613c47565b919050565b600067ffffffffffffffff821115613cae57613cad613c18565b5b613cb782613a2e565b9050602081019050919050565b82818337600083830152505050565b6000613ce6613ce184613c93565b613c78565b905082815260208101848484011115613d0257613d01613c13565b5b613d0d848285613cc4565b509392505050565b600082601f830112613d2a57613d29613c0e565b5b8135613d3a848260208601613cd3565b91505092915050565b600060208284031215613d5957613d5861391a565b5b600082013567ffffffffffffffff811115613d7757613d7661391f565b5b613d8384828501613d15565b91505092915050565b600060208284031215613da257613da161391a565b5b6000613db084828501613b66565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110613df957613df8613db9565b5b50565b6000819050613e0a82613de8565b919050565b6000613e1a82613dfc565b9050919050565b613e2a81613e0f565b82525050565b6000604082019050613e4560008301856138e6565b613e526020830184613e21565b9392505050565b613e62816139a9565b8114613e6d57600080fd5b50565b600081359050613e7f81613e59565b92915050565b60008060408385031215613e9c57613e9b61391a565b5b6000613eaa85828601613b66565b9250506020613ebb85828601613e70565b9150509250929050565b600067ffffffffffffffff821115613ee057613edf613c18565b5b613ee982613a2e565b9050602081019050919050565b6000613f09613f0484613ec5565b613c78565b905082815260208101848484011115613f2557613f24613c13565b5b613f30848285613cc4565b509392505050565b600082601f830112613f4d57613f4c613c0e565b5b8135613f5d848260208601613ef6565b91505092915050565b60008060008060808587031215613f8057613f7f61391a565b5b6000613f8e87828801613b66565b9450506020613f9f87828801613b66565b9350506040613fb087828801613ab1565b925050606085013567ffffffffffffffff811115613fd157613fd061391f565b5b613fdd87828801613f38565b91505092959194509250565b6000806040838503121561400057613fff61391a565b5b600061400e85828601613b66565b925050602061401f85828601613b66565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061407057607f821691505b60208210810361408357614082614029565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006140e5602c836139ea565b91506140f082614089565b604082019050919050565b60006020820190508181036000830152614114816140d8565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006141776021836139ea565b91506141828261411b565b604082019050919050565b600060208201905081810360008301526141a68161416a565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006142096038836139ea565b9150614214826141ad565b604082019050919050565b60006020820190508181036000830152614238816141fc565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006142756020836139ea565b91506142808261423f565b602082019050919050565b600060208201905081810360008301526142a481614268565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006143076031836139ea565b9150614312826142ab565b604082019050919050565b60006020820190508181036000830152614336816142fa565b9050919050565b7f50617274206e616d6520697320656d7074790000000000000000000000000000600082015250565b60006143736012836139ea565b915061437e8261433d565b602082019050919050565b600060208201905081810360008301526143a281614366565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006144056029836139ea565b9150614410826143a9565b604082019050919050565b60006020820190508181036000830152614434816143f8565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614497602a836139ea565b91506144a28261443b565b604082019050919050565b600060208201905081810360008301526144c68161448a565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006145036010836139ea565b915061450e826144cd565b602082019050919050565b60006020820190508181036000830152614532816144f6565b9050919050565b7f4d696e74206973206e6f74204c69766520796574000000000000000000000000600082015250565b600061456f6014836139ea565b915061457a82614539565b602082019050919050565b6000602082019050818103600083015261459e81614562565b9050919050565b7f56616d7069726520537570706c79204c696d6974205265616368656400000000600082015250565b60006145db601c836139ea565b91506145e6826145a5565b602082019050919050565b6000602082019050818103600083015261460a816145ce565b9050919050565b7f56414d5049524520507269636520697320302e37352041564158000000000000600082015250565b6000614647601a836139ea565b915061465282614611565b602082019050919050565b600060208201905081810360008301526146768161463a565b9050919050565b7f5a6f6d62696520537570706c79204c696d697420526561636865640000000000600082015250565b60006146b3601b836139ea565b91506146be8261467d565b602082019050919050565b600060208201905081810360008301526146e2816146a6565b9050919050565b7f5a4f4d42494520507269636520697320302e3520415641580000000000000000600082015250565b600061471f6018836139ea565b915061472a826146e9565b602082019050919050565b6000602082019050818103600083015261474e81614712565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006147b1602f836139ea565b91506147bc82614755565b604082019050919050565b600060208201905081810360008301526147e0816147a4565b9050919050565b7f696e646578206f6620746f6b656e206973206e6f742073657400000000000000600082015250565b600061481d6019836139ea565b9150614828826147e7565b602082019050919050565b6000602082019050818103600083015261484c81614810565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461488081614058565b61488a8186614853565b945060018216600081146148a557600181146148b6576148e9565b60ff198316865281860193506148e9565b6148bf8561485e565b60005b838110156148e1578154818901526001820191506020810190506148c2565b838801955050505b50505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b6000614928600183614853565b9150614933826148f2565b600182019050919050565b6000614949826139df565b6149538185614853565b93506149638185602086016139fb565b80840191505092915050565b600061497b8285614873565b91506149868261491b565b9150614992828461493e565b91508190509392505050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006149d4600583614853565b91506149df8261499e565b600582019050919050565b60006149f6828561493e565b9150614a02828461493e565b9150614a0d826149c7565b91508190509392505050565b7f4f6c642068756d616e7320746f6b656e73204d696e7465642100000000000000600082015250565b6000614a4f6019836139ea565b9150614a5a82614a19565b602082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614abf826138dc565b9150614aca836138dc565b925082821015614add57614adc614a85565b5b828203905092915050565b7f616d6f756e7420697320696e636f727265637421206f7220616c72656164792060008201527f6d696e7465640000000000000000000000000000000000000000000000000000602082015250565b6000614b446026836139ea565b9150614b4f82614ae8565b604082019050919050565b60006020820190508181036000830152614b7381614b37565b9050919050565b6000614b85826138dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bb757614bb6614a85565b5b600182019050919050565b7f4f6c64205a6f6d6269657320746f6b656e73204d696e74656421000000000000600082015250565b6000614bf8601a836139ea565b9150614c0382614bc2565b602082019050919050565b60006020820190508181036000830152614c2781614beb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c8a6026836139ea565b9150614c9582614c2e565b604082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f48756d616e20537570706c79204c696d69742052656163686564000000000000600082015250565b6000614cf6601a836139ea565b9150614d0182614cc0565b602082019050919050565b60006020820190508181036000830152614d2581614ce9565b9050919050565b7f48756d616e20507269636520697320302e323520415641580000000000000000600082015250565b6000614d626018836139ea565b9150614d6d82614d2c565b602082019050919050565b60006020820190508181036000830152614d9181614d55565b9050919050565b7f4f6c642056616d706972657320746f6b656e73204d696e746564210000000000600082015250565b6000614dce601b836139ea565b9150614dd982614d98565b602082019050919050565b60006020820190508181036000830152614dfd81614dc1565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614e60602c836139ea565b9150614e6b82614e04565b604082019050919050565b60006020820190508181036000830152614e8f81614e53565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614ef26025836139ea565b9150614efd82614e96565b604082019050919050565b60006020820190508181036000830152614f2181614ee5565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f846024836139ea565b9150614f8f82614f28565b604082019050919050565b60006020820190508181036000830152614fb381614f77565b9050919050565b6000614fc5826138dc565b9150614fd0836138dc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561500557615004614a85565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006150466019836139ea565b915061505182615010565b602082019050919050565b6000602082019050818103600083015261507581615039565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006150d86032836139ea565b91506150e38261507c565b604082019050919050565b60006020820190508181036000830152615107816150cb565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006151446014836139ea565b915061514f8261510e565b602082019050919050565b6000602082019050818103600083015261517381615137565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006151b4826138dc565b91506151bf836138dc565b9250826151cf576151ce61517a565b5b828204905092915050565b60006151e5826138dc565b91506151f0836138dc565b925082615200576151ff61517a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006152706020836139ea565b915061527b8261523a565b602082019050919050565b6000602082019050818103600083015261529f81615263565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006152dc601c836139ea565b91506152e7826152a6565b602082019050919050565b6000602082019050818103600083015261530b816152cf565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061533982615312565b615343818561531d565b93506153538185602086016139fb565b61535c81613a2e565b840191505092915050565b600060808201905061537c6000830187613b25565b6153896020830186613b25565b61539660408301856138e6565b81810360608301526153a8818461532e565b905095945050505050565b6000815190506153c281613950565b92915050565b6000602082840312156153de576153dd61391a565b5b60006153ec848285016153b3565b9150509291505056fea2646970667358221220ea71a0c0b26ee832862af9e89b262c91100888ae9a48e298d808b682fe709a0464736f6c634300080e0033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000041cbfeb5a0c68d1dc6f16a272cf59b8ae3a26b4b000000000000000000000000000000000000000000000000000000000000001d68747470733a2f2f616c74657265676f70756e6b732e636f6d2f6e6674000000