Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 274 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Safe Transfer Fr... | 15829521 | 667 days ago | IN | 0 ETH | 0.00084386 | ||||
Set Approval For... | 15729183 | 681 days ago | IN | 0 ETH | 0.00105791 | ||||
Safe Transfer Fr... | 15707921 | 684 days ago | IN | 0 ETH | 0.00201003 | ||||
Safe Transfer Fr... | 15707054 | 684 days ago | IN | 0 ETH | 0.00206883 | ||||
Safe Transfer Fr... | 15707050 | 684 days ago | IN | 0 ETH | 0.00208373 | ||||
Set Approval For... | 15706785 | 684 days ago | IN | 0 ETH | 0.00117908 | ||||
Reveal Puxxies | 15706585 | 684 days ago | IN | 0 ETH | 0.00091734 | ||||
Safe Transfer Fr... | 15703628 | 684 days ago | IN | 0 ETH | 0.0005078 | ||||
Set Approval For... | 15700118 | 685 days ago | IN | 0 ETH | 0.00026016 | ||||
Set Approval For... | 15684980 | 687 days ago | IN | 0 ETH | 0.0011385 | ||||
Set Approval For... | 15683949 | 687 days ago | IN | 0 ETH | 0.00075258 | ||||
Set Approval For... | 15683949 | 687 days ago | IN | 0 ETH | 0.00075258 | ||||
Set Approval For... | 15683949 | 687 days ago | IN | 0 ETH | 0.00075258 | ||||
Set Approval For... | 15683949 | 687 days ago | IN | 0 ETH | 0.00075258 | ||||
Set Approval For... | 15683949 | 687 days ago | IN | 0 ETH | 0.00075258 | ||||
Set Approval For... | 15683949 | 687 days ago | IN | 0 ETH | 0.00075258 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 | ||||
Set Approval For... | 15683941 | 687 days ago | IN | 0 ETH | 0.00080937 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Puxxies_Gang
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-05 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } pragma solidity ^0.8.0; library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } } pragma solidity ^0.8.0; library MerkleProof { function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } function verifyCalldata( bytes32[] calldata proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProofCalldata(proof, leaf) == root; } function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } function multiProofVerify( bytes32[] memory proof, bool[] memory proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProof(proof, proofFlags, leaves) == root; } function multiProofVerifyCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProofCalldata(proof, proofFlags, leaves) == root; } function processMultiProof( bytes32[] memory proof, bool[] memory proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } function processMultiProofCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) { return a < b ? _efficientHash(a, b) : _efficientHash(b, a); } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } } pragma solidity ^0.8.0; library Counters { struct Counter { uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.4; interface IERC721A { error ApprovalCallerNotOwnerNorApproved(); error ApprovalQueryForNonexistentToken(); error ApproveToCaller(); error BalanceQueryForZeroAddress(); error MintToZeroAddress(); error MintZeroQuantity(); error OwnerQueryForNonexistentToken(); error TransferCallerNotOwnerNorApproved(); error TransferFromIncorrectOwner(); error TransferToNonERC721ReceiverImplementer(); error TransferToZeroAddress(); error URIQueryForNonexistentToken(); error MintERC2309QuantityExceedsLimit(); error OwnershipNotInitializedForExtraData(); struct TokenOwnership { address addr; uint64 startTimestamp; bool burned; uint24 extraData; } function totalSupply() external view returns (uint256); function supportsInterface(bytes4 interfaceId) external view returns (bool); event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function setApprovalForAll(address operator, bool _approved) external; function getApproved(uint256 tokenId) external view returns (address operator); function isApprovedForAll(address owner, address operator) external view returns (bool); function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); } pragma solidity ^0.8.4; interface ERC721A__IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } contract ERC721A is IERC721A { struct TokenApprovalRef { address value; } uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1; uint256 private constant _BITPOS_NUMBER_MINTED = 64; uint256 private constant _BITPOS_NUMBER_BURNED = 128; uint256 private constant _BITPOS_AUX = 192; uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1; uint256 private constant _BITPOS_START_TIMESTAMP = 160; uint256 private constant _BITMASK_BURNED = 1 << 224; uint256 private constant _BITPOS_NEXT_INITIALIZED = 225; uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225; uint256 private constant _BITPOS_EXTRA_DATA = 232; uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1; uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1; uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000; bytes32 private constant _TRANSFER_EVENT_SIGNATURE = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef; uint256 private _currentIndex; uint256 private _burnCounter; // Token name string private _name; // Token symbol string private _symbol; mapping(uint256 => uint256) private _packedOwnerships; mapping(address => uint256) private _packedAddressData; // Mapping from token ID to approved address. mapping(uint256 => TokenApprovalRef) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _currentIndex = _startTokenId(); } function _startTokenId() internal view virtual returns (uint256) { return 1; } function _nextTokenId() internal view virtual returns (uint256) { return _currentIndex; } function totalSupply() public view virtual override returns (uint256) { unchecked { return _currentIndex - _burnCounter - _startTokenId(); } } function _totalMinted() internal view virtual returns (uint256) { unchecked { return _currentIndex - _startTokenId(); } } function _totalBurned() internal view virtual returns (uint256) { return _burnCounter; } function balanceOf(address owner) public view virtual override returns (uint256) { if (owner == address(0)) revert BalanceQueryForZeroAddress(); return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY; } function _numberMinted(address owner) internal view returns (uint256) { return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY; } function _numberBurned(address owner) internal view returns (uint256) { return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY; } function _getAux(address owner) internal view returns (uint64) { return uint64(_packedAddressData[owner] >> _BITPOS_AUX); } function _setAux(address owner, uint64 aux) internal virtual { uint256 packed = _packedAddressData[owner]; uint256 auxCasted; assembly { auxCasted := aux } packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX); _packedAddressData[owner] = packed; } function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == 0x01ffc9a7 || interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { if (!_exists(tokenId)) revert URIQueryForNonexistentToken(); string memory baseURI = _baseURI(); return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : ''; } function _baseURI() internal view virtual returns (string memory) { return ''; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { return address(uint160(_packedOwnershipOf(tokenId))); } function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) { return _unpackedOwnership(_packedOwnershipOf(tokenId)); } function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) { return _unpackedOwnership(_packedOwnerships[index]); } function _initializeOwnershipAt(uint256 index) internal virtual { if (_packedOwnerships[index] == 0) { _packedOwnerships[index] = _packedOwnershipOf(index); } } function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) { uint256 curr = tokenId; unchecked { if (_startTokenId() <= curr) if (curr < _currentIndex) { uint256 packed = _packedOwnerships[curr]; if (packed & _BITMASK_BURNED == 0) { while (packed == 0) { packed = _packedOwnerships[--curr]; } return packed; } } } revert OwnerQueryForNonexistentToken(); } function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) { ownership.addr = address(uint160(packed)); ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP); ownership.burned = packed & _BITMASK_BURNED != 0; ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA); } function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) { assembly { owner := and(owner, _BITMASK_ADDRESS) result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags)) } } function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) { assembly { result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1)) } } function approve(address to, uint256 tokenId) public virtual override { address owner = ownerOf(tokenId); if (_msgSenderERC721A() != owner) if (!isApprovedForAll(owner, _msgSenderERC721A())) { revert ApprovalCallerNotOwnerNorApproved(); } _tokenApprovals[tokenId].value = to; emit Approval(owner, to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken(); return _tokenApprovals[tokenId].value; } function setApprovalForAll(address operator, bool approved) public virtual override { if (operator == _msgSenderERC721A()) revert ApproveToCaller(); _operatorApprovals[_msgSenderERC721A()][operator] = approved; emit ApprovalForAll(_msgSenderERC721A(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _startTokenId() <= tokenId && tokenId < _currentIndex && _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; } function _isSenderApprovedOrOwner( address approvedAddress, address owner, address msgSender ) private pure returns (bool result) { assembly { owner := and(owner, _BITMASK_ADDRESS) msgSender := and(msgSender, _BITMASK_ADDRESS) result := or(eq(msgSender, owner), eq(msgSender, approvedAddress)) } } function _getApprovedSlotAndAddress(uint256 tokenId) private view returns (uint256 approvedAddressSlot, address approvedAddress) { TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId]; assembly { approvedAddressSlot := tokenApproval.slot approvedAddress := sload(approvedAddressSlot) } } function transferFrom( address from, address to, uint256 tokenId ) public virtual override { uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId); if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner(); (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId); if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A())) if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved(); if (to == address(0)) revert TransferToZeroAddress(); _beforeTokenTransfers(from, to, tokenId, 1); assembly { if approvedAddress { sstore(approvedAddressSlot, 0) } } unchecked { --_packedAddressData[from]; ++_packedAddressData[to]; _packedOwnerships[tokenId] = _packOwnershipData( to, _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked) ); if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) { uint256 nextTokenId = tokenId + 1; if (_packedOwnerships[nextTokenId] == 0) { if (nextTokenId != _currentIndex) { _packedOwnerships[nextTokenId] = prevOwnershipPacked; } } } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ''); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { transferFrom(from, to, tokenId); if (to.code.length != 0) if (!_checkContractOnERC721Received(from, to, tokenId, _data)) { revert TransferToNonERC721ReceiverImplementer(); } } function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} function _checkContractOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns ( bytes4 retval ) { return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert TransferToNonERC721ReceiverImplementer(); } else { assembly { revert(add(32, reason), mload(reason)) } } } } function _mint(address to, uint256 quantity) internal virtual { uint256 startTokenId = _currentIndex; if (quantity == 0) revert MintZeroQuantity(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); unchecked { _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1); _packedOwnerships[startTokenId] = _packOwnershipData( to, _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0) ); uint256 toMasked; uint256 end = startTokenId + quantity; assembly { toMasked := and(to, _BITMASK_ADDRESS) log4( 0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, startTokenId ) for { let tokenId := add(startTokenId, 1) } iszero(eq(tokenId, end)) { tokenId := add(tokenId, 1) } { log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId) } } if (toMasked == 0) revert MintToZeroAddress(); _currentIndex = end; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } function _mintERC2309(address to, uint256 quantity) internal virtual { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); unchecked { _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1); _packedOwnerships[startTokenId] = _packOwnershipData( to, _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0) ); emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to); _currentIndex = startTokenId + quantity; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } function _safeMint( address to, uint256 quantity, bytes memory _data ) internal virtual { _mint(to, quantity); unchecked { if (to.code.length != 0) { uint256 end = _currentIndex; uint256 index = end - quantity; do { if (!_checkContractOnERC721Received(address(0), to, index++, _data)) { revert TransferToNonERC721ReceiverImplementer(); } } while (index < end); if (_currentIndex != end) revert(); } } } function _safeMint(address to, uint256 quantity) internal virtual { _safeMint(to, quantity, ''); } function _burn(uint256 tokenId) internal virtual { _burn(tokenId, false); } function _burn(uint256 tokenId, bool approvalCheck) internal virtual { uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId); address from = address(uint160(prevOwnershipPacked)); (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId); if (approvalCheck) { if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A())) if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved(); } _beforeTokenTransfers(from, address(0), tokenId, 1); assembly { if approvedAddress { sstore(approvedAddressSlot, 0) } } unchecked { _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1; _packedOwnerships[tokenId] = _packOwnershipData( from, (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked) ); if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) { uint256 nextTokenId = tokenId + 1; if (_packedOwnerships[nextTokenId] == 0) { if (nextTokenId != _currentIndex) { _packedOwnerships[nextTokenId] = prevOwnershipPacked; } } } } emit Transfer(from, address(0), tokenId); _afterTokenTransfers(from, address(0), tokenId, 1); unchecked { _burnCounter++; } } function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual { uint256 packed = _packedOwnerships[index]; if (packed == 0) revert OwnershipNotInitializedForExtraData(); uint256 extraDataCasted; assembly { extraDataCasted := extraData } packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA); _packedOwnerships[index] = packed; } function _extraData( address from, address to, uint24 previousExtraData ) internal view virtual returns (uint24) {} function _nextExtraData( address from, address to, uint256 prevOwnershipPacked ) private view returns (uint256) { uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA); return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA; } function _msgSenderERC721A() internal view virtual returns (address) { return msg.sender; } function _toString(uint256 value) internal pure virtual returns (string memory ptr) { assembly { ptr := add(mload(0x40), 128) mstore(0x40, ptr) let end := ptr for { let temp := value ptr := sub(ptr, 1) mstore8(ptr, add(48, mod(temp, 10))) temp := div(temp, 10) } temp { temp := div(temp, 10) } { ptr := sub(ptr, 1) mstore8(ptr, add(48, mod(temp, 10))) } let length := sub(end, ptr) ptr := sub(ptr, 32) mstore(ptr, length) } } } pragma solidity ^0.8.4; contract Puxxies_Gang is ERC721A, Ownable, ReentrancyGuard { using Strings for uint256; using Counters for Counters.Counter; Counters.Counter private _tokenIdCounter; string public PROVENANCE_HASH; string public baseURI; string public baseExtension = ".json"; uint256 public constant MAX_SUPPLY = 369; uint256 private _currentId; uint256 public constant whitelist_LIMIT = 0; uint256 public constant whitelist_PRICE = 0 ether; uint256 public constant public_LIMIT = 3; uint256 public constant public_PRICE = 0 ether; bool public publicIsActive = false; bool public whitelistIsActive = false; bytes32 public root; mapping(address => uint256) private _alreadyMinted; address public beneficiary; address public royalties; address public nftContractAddress; constructor( address _royalties, address _beneficiary, string memory _initBaseURI ) ERC721A("Puxxies Gang", "PG") { beneficiary = _beneficiary; royalties = _royalties; revealPuxxies(_initBaseURI); } function _msgSender() internal view virtual override returns (address) { return msg.sender; } function _msgData() internal view virtual override returns (bytes calldata) { return msg.data; } function setProvenanceHash(string calldata hash) public onlyOwner { PROVENANCE_HASH = hash; } function setBeneficiary(address _beneficiary) public onlyOwner { beneficiary = _beneficiary; } function setRoyalties(address _royalties) public onlyOwner { royalties = _royalties; } function setPublicActive(bool _publicIsActive) public onlyOwner { publicIsActive = _publicIsActive; } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function alreadyMinted(address addr) public view returns (uint256) { return _alreadyMinted[addr]; } function freePuxxies(uint256 quantity) public payable nonReentrant { address sender = _msgSender(); require(publicIsActive, "Mint is closed"); require( quantity <= public_LIMIT - _alreadyMinted[sender], "You can't feed that many" ); require(msg.value == public_PRICE * quantity, "Incorrect payable amount"); _alreadyMinted[sender] += quantity; _internalMint(sender, quantity); } function ownerMint(address to, uint256 quantity) public onlyOwner { _internalMint(to, quantity); } function withdraw() public onlyOwner { payable(beneficiary).transfer(address(this).balance); } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : ""; } function revealPuxxies(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function numberMinted(address owner) public view returns (uint256) { return _numberMinted(owner); } function _internalMint(address to, uint256 quantity) private { require( MAX_SUPPLY >= totalSupply() + quantity, "Not enough Puxxies left!"); _safeMint(to, quantity); } function royaltyInfo(uint256 _tokenId, uint256 _salePrice) external view returns (address, uint256 royaltyAmount) { _tokenId; // silence solc warning royaltyAmount = (_salePrice / 100) * 5; return (royalties, royaltyAmount); } function supportsInterface(bytes4 interfaceId) public view override(ERC721A) returns (bool) { return super.supportsInterface(interfaceId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_royalties","type":"address"},{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"string","name":"_initBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","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":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROVENANCE_HASH","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"alreadyMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"freePuxxies","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"public_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"public_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"revealPuxxies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royalties","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"setBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"hash","type":"string"}],"name":"setProvenanceHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_publicIsActive","type":"bool"}],"name":"setPublicActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_royalties","type":"address"}],"name":"setRoyalties","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":"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":"whitelistIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelist_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelist_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600d908051906020019062000051929190620003f3565b506000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055503480156200009557600080fd5b5060405162003f6f38038062003f6f8339818101604052810190620000bb919062000538565b6040518060400160405280600c81526020017f507578786965732047616e6700000000000000000000000000000000000000008152506040518060400160405280600281526020017f504700000000000000000000000000000000000000000000000000000000000081525081600290805190602001906200013f929190620003f3565b50806003908051906020019062000158929190620003f3565b50620001696200023560201b60201c565b600081905550505062000191620001856200023e60201b60201c565b6200024660201b60201c565b600160098190555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200022c816200030c60201b60201c565b50505062000808565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200031c6200033860201b60201c565b80600c908051906020019062000334929190620003f3565b5050565b620003486200023e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200036e620003c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003be90620005da565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200040190620006d6565b90600052602060002090601f01602090048101928262000425576000855562000471565b82601f106200044057805160ff191683800117855562000471565b8280016001018555821562000471579182015b828111156200047057825182559160200191906001019062000453565b5b50905062000480919062000484565b5090565b5b808211156200049f57600081600090555060010162000485565b5090565b6000620004ba620004b48462000625565b620005fc565b905082815260208101848484011115620004d957620004d8620007a5565b5b620004e6848285620006a0565b509392505050565b600081519050620004ff81620007ee565b92915050565b600082601f8301126200051d576200051c620007a0565b5b81516200052f848260208601620004a3565b91505092915050565b600080600060608486031215620005545762000553620007af565b5b60006200056486828701620004ee565b93505060206200057786828701620004ee565b925050604084015167ffffffffffffffff8111156200059b576200059a620007aa565b5b620005a98682870162000505565b9150509250925092565b6000620005c26020836200065b565b9150620005cf82620007c5565b602082019050919050565b60006020820190508181036000830152620005f581620005b3565b9050919050565b6000620006086200061b565b90506200061682826200070c565b919050565b6000604051905090565b600067ffffffffffffffff82111562000643576200064262000771565b5b6200064e82620007b4565b9050602081019050919050565b600082825260208201905092915050565b6000620006798262000680565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015620006c0578082015181840152602081019050620006a3565b83811115620006d0576000848401525b50505050565b60006002820490506001821680620006ef57607f821691505b6020821081141562000706576200070562000742565b5b50919050565b6200071782620007b4565b810181811067ffffffffffffffff8211171562000739576200073862000771565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620007f9816200066c565b81146200080557600080fd5b50565b61375780620008186000396000f3fe6080604052600436106102515760003560e01c80634dd7d3bc11610139578063aae282e1116100b6578063e1ca320e1161007a578063e1ca320e146108a8578063e985e9c5146108d1578063ebf0c7171461090e578063f053dc5c14610939578063f2fde38b14610964578063ff1b65561461098d57610251565b8063aae282e1146107af578063b88d4fde146107da578063c668286214610803578063c87b56dd1461082e578063dc33e6811461086b57610251565b8063715018a6116100fd578063715018a6146106f05780638aca408c146107075780638da5cb5b1461073057806395d89b411461075b578063a22cb4651461078657610251565b80634dd7d3bc146106045780636352211e1461062057806368d21bfd1461065d5780636c0360eb1461068857806370a08231146106b357610251565b80631c31f710116101d257806332cb6b0c1161019657806332cb6b0c1461051a57806338af3eed146105455780633ccfd60b146105705780633fc18b071461058757806342842e0e146105b2578063484b973c146105db57610251565b80631c31f710146104365780631fe70d6f1461045f57806323b872dd1461048a5780632a55205a146104b35780632a9e63c6146104f157610251565b8063095ea7b311610219578063095ea7b3146103515780630a398b881461037a5780630e827678146103b757806310969523146103e257806318160ddd1461040b57610251565b806301ffc9a714610256578063033a02d61461029357806304a99f7c146102be57806306fdde03146102e9578063081812fc14610314575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190612a7f565b6109b8565b60405161028a9190612f13565b60405180910390f35b34801561029f57600080fd5b506102a86109ca565b6040516102b59190612f13565b60405180910390f35b3480156102ca57600080fd5b506102d36109dd565b6040516102e0919061306b565b60405180910390f35b3480156102f557600080fd5b506102fe6109e2565b60405161030b9190612f49565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190612b6f565b610a74565b6040516103489190612e83565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190612a12565b610af3565b005b34801561038657600080fd5b506103a1600480360381019061039c919061288f565b610c37565b6040516103ae919061306b565b60405180910390f35b3480156103c357600080fd5b506103cc610c80565b6040516103d9919061306b565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190612ad9565b610c85565b005b34801561041757600080fd5b50610420610ca3565b60405161042d919061306b565b60405180910390f35b34801561044257600080fd5b5061045d6004803603810190610458919061288f565b610cba565b005b34801561046b57600080fd5b50610474610d06565b6040516104819190612f13565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906128fc565b610d19565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190612b9c565b61103e565b6040516104e8929190612eea565b60405180910390f35b3480156104fd57600080fd5b506105186004803603810190610513919061288f565b611088565b005b34801561052657600080fd5b5061052f6110d4565b60405161053c919061306b565b60405180910390f35b34801561055157600080fd5b5061055a6110da565b6040516105679190612e83565b60405180910390f35b34801561057c57600080fd5b50610585611100565b005b34801561059357600080fd5b5061059c611173565b6040516105a9919061306b565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d491906128fc565b611178565b005b3480156105e757600080fd5b5061060260048036038101906105fd9190612a12565b611198565b005b61061e60048036038101906106199190612b6f565b6111ae565b005b34801561062c57600080fd5b5061064760048036038101906106429190612b6f565b61139f565b6040516106549190612e83565b60405180910390f35b34801561066957600080fd5b506106726113b1565b60405161067f919061306b565b60405180910390f35b34801561069457600080fd5b5061069d6113b6565b6040516106aa9190612f49565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d5919061288f565b611444565b6040516106e7919061306b565b60405180910390f35b3480156106fc57600080fd5b506107056114fd565b005b34801561071357600080fd5b5061072e60048036038101906107299190612a52565b611511565b005b34801561073c57600080fd5b50610745611536565b6040516107529190612e83565b60405180910390f35b34801561076757600080fd5b50610770611560565b60405161077d9190612f49565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a891906129d2565b6115f2565b005b3480156107bb57600080fd5b506107c461176a565b6040516107d19190612e83565b60405180910390f35b3480156107e657600080fd5b5061080160048036038101906107fc919061294f565b611790565b005b34801561080f57600080fd5b50610818611803565b6040516108259190612f49565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190612b6f565b611891565b6040516108629190612f49565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d919061288f565b61193b565b60405161089f919061306b565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190612b26565b61194d565b005b3480156108dd57600080fd5b506108f860048036038101906108f391906128bc565b61196f565b6040516109059190612f13565b60405180910390f35b34801561091a57600080fd5b50610923611a03565b6040516109309190612f2e565b60405180910390f35b34801561094557600080fd5b5061094e611a09565b60405161095b9190612e83565b60405180910390f35b34801561097057600080fd5b5061098b6004803603810190610986919061288f565b611a2f565b005b34801561099957600080fd5b506109a2611ab3565b6040516109af9190612f49565b60405180910390f35b60006109c382611b41565b9050919050565b600f60009054906101000a900460ff1681565b600381565b6060600280546109f19061333a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d9061333a565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b5050505050905090565b6000610a7f82611bd3565b610ab5576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610afe8261139f565b90508073ffffffffffffffffffffffffffffffffffffffff16610b1f611c32565b73ffffffffffffffffffffffffffffffffffffffff1614610b8257610b4b81610b46611c32565b61196f565b610b81576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081565b610c8d611c3a565b8181600b9190610c9e9291906125c7565b505050565b6000610cad611cb8565b6001546000540303905090565b610cc2611c3a565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60019054906101000a900460ff1681565b6000610d2482611cc1565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610d9784611d8f565b91509150610dad8187610da8611c32565b611db6565b610df957610dc286610dbd611c32565b61196f565b610df8576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610e60576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e6d8686866001611dfa565b8015610e7857600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610f4685610f22888887611e00565b7c020000000000000000000000000000000000000000000000000000000017611e28565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415610fce576000600185019050600060046000838152602001908152602001600020541415610fcc576000548114610fcb578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110368686866001611e53565b505050505050565b600080600560648461105091906131bb565b61105a91906131ec565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691509250929050565b611090611c3a565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61017181565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611108611c3a565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611170573d6000803e3d6000fd5b50565b600081565b61119383838360405180602001604052806000815250611790565b505050565b6111a0611c3a565b6111aa8282611e59565b5050565b600260095414156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb9061302b565b60405180910390fd5b60026009819055506000611206611ebe565b9050600f60009054906101000a900460ff16611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612f6b565b60405180910390fd5b601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460036112a39190613246565b8211156112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc9061304b565b60405180910390fd5b8160006112f291906131ec565b3414611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90612fab565b60405180910390fd5b81601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113829190613165565b925050819055506113938183611e59565b50600160098190555050565b60006113aa82611cc1565b9050919050565b600081565b600c80546113c39061333a565b80601f01602080910402602001604051908101604052809291908181526020018280546113ef9061333a565b801561143c5780601f106114115761010080835404028352916020019161143c565b820191906000526020600020905b81548152906001019060200180831161141f57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611505611c3a565b61150f6000611ec6565b565b611519611c3a565b80600f60006101000a81548160ff02191690831515021790555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461156f9061333a565b80601f016020809104026020016040519081016040528092919081815260200182805461159b9061333a565b80156115e85780601f106115bd576101008083540402835291602001916115e8565b820191906000526020600020905b8154815290600101906020018083116115cb57829003601f168201915b5050505050905090565b6115fa611c32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561165f576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061166c611c32565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611719611c32565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161175e9190612f13565b60405180910390a35050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61179b848484610d19565b60008373ffffffffffffffffffffffffffffffffffffffff163b146117fd576117c684848484611f8c565b6117fc576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600d80546118109061333a565b80601f016020809104026020016040519081016040528092919081815260200182805461183c9061333a565b80156118895780601f1061185e57610100808354040283529160200191611889565b820191906000526020600020905b81548152906001019060200180831161186c57829003601f168201915b505050505081565b606061189c82611bd3565b6118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290612feb565b60405180910390fd5b60006118e56120ec565b905060008151116119055760405180602001604052806000815250611933565b8061190f8461217e565b600d60405160200161192393929190612e52565b6040516020818303038152906040525b915050919050565b6000611946826122df565b9050919050565b611955611c3a565b80600c908051906020019061196b92919061264d565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60105481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a37611c3a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e90612f8b565b60405180910390fd5b611ab081611ec6565b50565b600b8054611ac09061333a565b80601f0160208091040260200160405190810160405280929190818152602001828054611aec9061333a565b8015611b395780601f10611b0e57610100808354040283529160200191611b39565b820191906000526020600020905b815481529060010190602001808311611b1c57829003601f168201915b505050505081565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b9c57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611bcc5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600081611bde611cb8565b11158015611bed575060005482105b8015611c2b575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b611c42611ebe565b73ffffffffffffffffffffffffffffffffffffffff16611c60611536565b73ffffffffffffffffffffffffffffffffffffffff1614611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90612fcb565b60405180910390fd5b565b60006001905090565b60008082905080611cd0611cb8565b11611d5857600054811015611d575760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082161415611d55575b6000811415611d4b576004600083600190039350838152602001908152602001600020549050611d20565b8092505050611d8a565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611e17868684612336565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b80611e62610ca3565b611e6c9190613165565b6101711015611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea79061300b565b60405180910390fd5b611eba828261233f565b5050565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611fb2611c32565b8786866040518563ffffffff1660e01b8152600401611fd49493929190612e9e565b602060405180830381600087803b158015611fee57600080fd5b505af192505050801561201f57506040513d601f19601f8201168201806040525081019061201c9190612aac565b60015b612099573d806000811461204f576040519150601f19603f3d011682016040523d82523d6000602084013e612054565b606091505b50600081511415612091576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600c80546120fb9061333a565b80601f01602080910402602001604051908101604052809291908181526020018280546121279061333a565b80156121745780601f1061214957610100808354040283529160200191612174565b820191906000526020600020905b81548152906001019060200180831161215757829003601f168201915b5050505050905090565b606060008214156121c6576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506122da565b600082905060005b600082146121f85780806121e19061339d565b915050600a826121f191906131bb565b91506121ce565b60008167ffffffffffffffff811115612214576122136134d3565b5b6040519080825280601f01601f1916602001820160405280156122465781602001600182028036833780820191505090505b5090505b600085146122d35760018261225f9190613246565b9150600a8561226e91906133e6565b603061227a9190613165565b60f81b8183815181106122905761228f6134a4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122cc91906131bb565b945061224a565b8093505050505b919050565b600067ffffffffffffffff6040600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054901c169050919050565b60009392505050565b61235982826040518060200160405280600081525061235d565b5050565b61236783836123fa565b60008373ffffffffffffffffffffffffffffffffffffffff163b146123f557600080549050600083820390505b6123a76000868380600101945086611f8c565b6123dd576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106123945781600054146123f257600080fd5b50505b505050565b600080549050600082141561243b576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124486000848385611dfa565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506124bf836124b06000866000611e00565b6124b9856125b7565b17611e28565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461256057808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612525565b50600082141561259c576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506125b26000848385611e53565b505050565b60006001821460e11b9050919050565b8280546125d39061333a565b90600052602060002090601f0160209004810192826125f5576000855561263c565b82601f1061260e57803560ff191683800117855561263c565b8280016001018555821561263c579182015b8281111561263b578235825591602001919060010190612620565b5b50905061264991906126d3565b5090565b8280546126599061333a565b90600052602060002090601f01602090048101928261267b57600085556126c2565b82601f1061269457805160ff19168380011785556126c2565b828001600101855582156126c2579182015b828111156126c15782518255916020019190600101906126a6565b5b5090506126cf91906126d3565b5090565b5b808211156126ec5760008160009055506001016126d4565b5090565b60006127036126fe846130ab565b613086565b90508281526020810184848401111561271f5761271e613511565b5b61272a8482856132f8565b509392505050565b6000612745612740846130dc565b613086565b90508281526020810184848401111561276157612760613511565b5b61276c8482856132f8565b509392505050565b600081359050612783816136c5565b92915050565b600081359050612798816136dc565b92915050565b6000813590506127ad816136f3565b92915050565b6000815190506127c2816136f3565b92915050565b600082601f8301126127dd576127dc613507565b5b81356127ed8482602086016126f0565b91505092915050565b60008083601f84011261280c5761280b613507565b5b8235905067ffffffffffffffff81111561282957612828613502565b5b6020830191508360018202830111156128455761284461350c565b5b9250929050565b600082601f83011261286157612860613507565b5b8135612871848260208601612732565b91505092915050565b6000813590506128898161370a565b92915050565b6000602082840312156128a5576128a461351b565b5b60006128b384828501612774565b91505092915050565b600080604083850312156128d3576128d261351b565b5b60006128e185828601612774565b92505060206128f285828601612774565b9150509250929050565b6000806000606084860312156129155761291461351b565b5b600061292386828701612774565b935050602061293486828701612774565b92505060406129458682870161287a565b9150509250925092565b600080600080608085870312156129695761296861351b565b5b600061297787828801612774565b945050602061298887828801612774565b93505060406129998782880161287a565b925050606085013567ffffffffffffffff8111156129ba576129b9613516565b5b6129c6878288016127c8565b91505092959194509250565b600080604083850312156129e9576129e861351b565b5b60006129f785828601612774565b9250506020612a0885828601612789565b9150509250929050565b60008060408385031215612a2957612a2861351b565b5b6000612a3785828601612774565b9250506020612a488582860161287a565b9150509250929050565b600060208284031215612a6857612a6761351b565b5b6000612a7684828501612789565b91505092915050565b600060208284031215612a9557612a9461351b565b5b6000612aa38482850161279e565b91505092915050565b600060208284031215612ac257612ac161351b565b5b6000612ad0848285016127b3565b91505092915050565b60008060208385031215612af057612aef61351b565b5b600083013567ffffffffffffffff811115612b0e57612b0d613516565b5b612b1a858286016127f6565b92509250509250929050565b600060208284031215612b3c57612b3b61351b565b5b600082013567ffffffffffffffff811115612b5a57612b59613516565b5b612b668482850161284c565b91505092915050565b600060208284031215612b8557612b8461351b565b5b6000612b938482850161287a565b91505092915050565b60008060408385031215612bb357612bb261351b565b5b6000612bc18582860161287a565b9250506020612bd28582860161287a565b9150509250929050565b612be58161327a565b82525050565b612bf48161328c565b82525050565b612c0381613298565b82525050565b6000612c1482613122565b612c1e8185613138565b9350612c2e818560208601613307565b612c3781613520565b840191505092915050565b6000612c4d8261312d565b612c578185613149565b9350612c67818560208601613307565b612c7081613520565b840191505092915050565b6000612c868261312d565b612c90818561315a565b9350612ca0818560208601613307565b80840191505092915050565b60008154612cb98161333a565b612cc3818661315a565b94506001821660008114612cde5760018114612cef57612d22565b60ff19831686528186019350612d22565b612cf88561310d565b60005b83811015612d1a57815481890152600182019150602081019050612cfb565b838801955050505b50505092915050565b6000612d38600e83613149565b9150612d4382613531565b602082019050919050565b6000612d5b602683613149565b9150612d668261355a565b604082019050919050565b6000612d7e601883613149565b9150612d89826135a9565b602082019050919050565b6000612da1602083613149565b9150612dac826135d2565b602082019050919050565b6000612dc4602f83613149565b9150612dcf826135fb565b604082019050919050565b6000612de7601883613149565b9150612df28261364a565b602082019050919050565b6000612e0a601f83613149565b9150612e1582613673565b602082019050919050565b6000612e2d601883613149565b9150612e388261369c565b602082019050919050565b612e4c816132ee565b82525050565b6000612e5e8286612c7b565b9150612e6a8285612c7b565b9150612e768284612cac565b9150819050949350505050565b6000602082019050612e986000830184612bdc565b92915050565b6000608082019050612eb36000830187612bdc565b612ec06020830186612bdc565b612ecd6040830185612e43565b8181036060830152612edf8184612c09565b905095945050505050565b6000604082019050612eff6000830185612bdc565b612f0c6020830184612e43565b9392505050565b6000602082019050612f286000830184612beb565b92915050565b6000602082019050612f436000830184612bfa565b92915050565b60006020820190508181036000830152612f638184612c42565b905092915050565b60006020820190508181036000830152612f8481612d2b565b9050919050565b60006020820190508181036000830152612fa481612d4e565b9050919050565b60006020820190508181036000830152612fc481612d71565b9050919050565b60006020820190508181036000830152612fe481612d94565b9050919050565b6000602082019050818103600083015261300481612db7565b9050919050565b6000602082019050818103600083015261302481612dda565b9050919050565b6000602082019050818103600083015261304481612dfd565b9050919050565b6000602082019050818103600083015261306481612e20565b9050919050565b60006020820190506130806000830184612e43565b92915050565b60006130906130a1565b905061309c828261336c565b919050565b6000604051905090565b600067ffffffffffffffff8211156130c6576130c56134d3565b5b6130cf82613520565b9050602081019050919050565b600067ffffffffffffffff8211156130f7576130f66134d3565b5b61310082613520565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613170826132ee565b915061317b836132ee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131b0576131af613417565b5b828201905092915050565b60006131c6826132ee565b91506131d1836132ee565b9250826131e1576131e0613446565b5b828204905092915050565b60006131f7826132ee565b9150613202836132ee565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561323b5761323a613417565b5b828202905092915050565b6000613251826132ee565b915061325c836132ee565b92508282101561326f5761326e613417565b5b828203905092915050565b6000613285826132ce565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561332557808201518184015260208101905061330a565b83811115613334576000848401525b50505050565b6000600282049050600182168061335257607f821691505b6020821081141561336657613365613475565b5b50919050565b61337582613520565b810181811067ffffffffffffffff82111715613394576133936134d3565b5b80604052505050565b60006133a8826132ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133db576133da613417565b5b600182019050919050565b60006133f1826132ee565b91506133fc836132ee565b92508261340c5761340b613446565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4d696e7420697320636c6f736564000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e636f72726563742070617961626c6520616d6f756e740000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682050757878696573206c656674210000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f596f752063616e277420666565642074686174206d616e790000000000000000600082015250565b6136ce8161327a565b81146136d957600080fd5b50565b6136e58161328c565b81146136f057600080fd5b50565b6136fc816132a2565b811461370757600080fd5b50565b613713816132ee565b811461371e57600080fd5b5056fea26469706673582212206828fe5e45dae81e9992886cd171009a85cef085393dd8af5d84fca20d67845c64736f6c634300080700330000000000000000000000008ccd7fe0e34eccb3fe0c55e5ae6ed9ffcb48575e0000000000000000000000008ccd7fe0e34eccb3fe0c55e5ae6ed9ffcb48575e0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d5466725a4a6d4252767554665747366e324b6879454c4363325533385135654574624e4b6a584852577158372f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102515760003560e01c80634dd7d3bc11610139578063aae282e1116100b6578063e1ca320e1161007a578063e1ca320e146108a8578063e985e9c5146108d1578063ebf0c7171461090e578063f053dc5c14610939578063f2fde38b14610964578063ff1b65561461098d57610251565b8063aae282e1146107af578063b88d4fde146107da578063c668286214610803578063c87b56dd1461082e578063dc33e6811461086b57610251565b8063715018a6116100fd578063715018a6146106f05780638aca408c146107075780638da5cb5b1461073057806395d89b411461075b578063a22cb4651461078657610251565b80634dd7d3bc146106045780636352211e1461062057806368d21bfd1461065d5780636c0360eb1461068857806370a08231146106b357610251565b80631c31f710116101d257806332cb6b0c1161019657806332cb6b0c1461051a57806338af3eed146105455780633ccfd60b146105705780633fc18b071461058757806342842e0e146105b2578063484b973c146105db57610251565b80631c31f710146104365780631fe70d6f1461045f57806323b872dd1461048a5780632a55205a146104b35780632a9e63c6146104f157610251565b8063095ea7b311610219578063095ea7b3146103515780630a398b881461037a5780630e827678146103b757806310969523146103e257806318160ddd1461040b57610251565b806301ffc9a714610256578063033a02d61461029357806304a99f7c146102be57806306fdde03146102e9578063081812fc14610314575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190612a7f565b6109b8565b60405161028a9190612f13565b60405180910390f35b34801561029f57600080fd5b506102a86109ca565b6040516102b59190612f13565b60405180910390f35b3480156102ca57600080fd5b506102d36109dd565b6040516102e0919061306b565b60405180910390f35b3480156102f557600080fd5b506102fe6109e2565b60405161030b9190612f49565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190612b6f565b610a74565b6040516103489190612e83565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190612a12565b610af3565b005b34801561038657600080fd5b506103a1600480360381019061039c919061288f565b610c37565b6040516103ae919061306b565b60405180910390f35b3480156103c357600080fd5b506103cc610c80565b6040516103d9919061306b565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190612ad9565b610c85565b005b34801561041757600080fd5b50610420610ca3565b60405161042d919061306b565b60405180910390f35b34801561044257600080fd5b5061045d6004803603810190610458919061288f565b610cba565b005b34801561046b57600080fd5b50610474610d06565b6040516104819190612f13565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906128fc565b610d19565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190612b9c565b61103e565b6040516104e8929190612eea565b60405180910390f35b3480156104fd57600080fd5b506105186004803603810190610513919061288f565b611088565b005b34801561052657600080fd5b5061052f6110d4565b60405161053c919061306b565b60405180910390f35b34801561055157600080fd5b5061055a6110da565b6040516105679190612e83565b60405180910390f35b34801561057c57600080fd5b50610585611100565b005b34801561059357600080fd5b5061059c611173565b6040516105a9919061306b565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d491906128fc565b611178565b005b3480156105e757600080fd5b5061060260048036038101906105fd9190612a12565b611198565b005b61061e60048036038101906106199190612b6f565b6111ae565b005b34801561062c57600080fd5b5061064760048036038101906106429190612b6f565b61139f565b6040516106549190612e83565b60405180910390f35b34801561066957600080fd5b506106726113b1565b60405161067f919061306b565b60405180910390f35b34801561069457600080fd5b5061069d6113b6565b6040516106aa9190612f49565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d5919061288f565b611444565b6040516106e7919061306b565b60405180910390f35b3480156106fc57600080fd5b506107056114fd565b005b34801561071357600080fd5b5061072e60048036038101906107299190612a52565b611511565b005b34801561073c57600080fd5b50610745611536565b6040516107529190612e83565b60405180910390f35b34801561076757600080fd5b50610770611560565b60405161077d9190612f49565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a891906129d2565b6115f2565b005b3480156107bb57600080fd5b506107c461176a565b6040516107d19190612e83565b60405180910390f35b3480156107e657600080fd5b5061080160048036038101906107fc919061294f565b611790565b005b34801561080f57600080fd5b50610818611803565b6040516108259190612f49565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190612b6f565b611891565b6040516108629190612f49565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d919061288f565b61193b565b60405161089f919061306b565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190612b26565b61194d565b005b3480156108dd57600080fd5b506108f860048036038101906108f391906128bc565b61196f565b6040516109059190612f13565b60405180910390f35b34801561091a57600080fd5b50610923611a03565b6040516109309190612f2e565b60405180910390f35b34801561094557600080fd5b5061094e611a09565b60405161095b9190612e83565b60405180910390f35b34801561097057600080fd5b5061098b6004803603810190610986919061288f565b611a2f565b005b34801561099957600080fd5b506109a2611ab3565b6040516109af9190612f49565b60405180910390f35b60006109c382611b41565b9050919050565b600f60009054906101000a900460ff1681565b600381565b6060600280546109f19061333a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1d9061333a565b8015610a6a5780601f10610a3f57610100808354040283529160200191610a6a565b820191906000526020600020905b815481529060010190602001808311610a4d57829003601f168201915b5050505050905090565b6000610a7f82611bd3565b610ab5576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610afe8261139f565b90508073ffffffffffffffffffffffffffffffffffffffff16610b1f611c32565b73ffffffffffffffffffffffffffffffffffffffff1614610b8257610b4b81610b46611c32565b61196f565b610b81576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081565b610c8d611c3a565b8181600b9190610c9e9291906125c7565b505050565b6000610cad611cb8565b6001546000540303905090565b610cc2611c3a565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60019054906101000a900460ff1681565b6000610d2482611cc1565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610d9784611d8f565b91509150610dad8187610da8611c32565b611db6565b610df957610dc286610dbd611c32565b61196f565b610df8576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610e60576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e6d8686866001611dfa565b8015610e7857600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610f4685610f22888887611e00565b7c020000000000000000000000000000000000000000000000000000000017611e28565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415610fce576000600185019050600060046000838152602001908152602001600020541415610fcc576000548114610fcb578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110368686866001611e53565b505050505050565b600080600560648461105091906131bb565b61105a91906131ec565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691509250929050565b611090611c3a565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61017181565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611108611c3a565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611170573d6000803e3d6000fd5b50565b600081565b61119383838360405180602001604052806000815250611790565b505050565b6111a0611c3a565b6111aa8282611e59565b5050565b600260095414156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb9061302b565b60405180910390fd5b60026009819055506000611206611ebe565b9050600f60009054906101000a900460ff16611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612f6b565b60405180910390fd5b601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460036112a39190613246565b8211156112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc9061304b565b60405180910390fd5b8160006112f291906131ec565b3414611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90612fab565b60405180910390fd5b81601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113829190613165565b925050819055506113938183611e59565b50600160098190555050565b60006113aa82611cc1565b9050919050565b600081565b600c80546113c39061333a565b80601f01602080910402602001604051908101604052809291908181526020018280546113ef9061333a565b801561143c5780601f106114115761010080835404028352916020019161143c565b820191906000526020600020905b81548152906001019060200180831161141f57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611505611c3a565b61150f6000611ec6565b565b611519611c3a565b80600f60006101000a81548160ff02191690831515021790555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461156f9061333a565b80601f016020809104026020016040519081016040528092919081815260200182805461159b9061333a565b80156115e85780601f106115bd576101008083540402835291602001916115e8565b820191906000526020600020905b8154815290600101906020018083116115cb57829003601f168201915b5050505050905090565b6115fa611c32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561165f576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061166c611c32565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611719611c32565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161175e9190612f13565b60405180910390a35050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61179b848484610d19565b60008373ffffffffffffffffffffffffffffffffffffffff163b146117fd576117c684848484611f8c565b6117fc576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600d80546118109061333a565b80601f016020809104026020016040519081016040528092919081815260200182805461183c9061333a565b80156118895780601f1061185e57610100808354040283529160200191611889565b820191906000526020600020905b81548152906001019060200180831161186c57829003601f168201915b505050505081565b606061189c82611bd3565b6118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290612feb565b60405180910390fd5b60006118e56120ec565b905060008151116119055760405180602001604052806000815250611933565b8061190f8461217e565b600d60405160200161192393929190612e52565b6040516020818303038152906040525b915050919050565b6000611946826122df565b9050919050565b611955611c3a565b80600c908051906020019061196b92919061264d565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60105481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a37611c3a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e90612f8b565b60405180910390fd5b611ab081611ec6565b50565b600b8054611ac09061333a565b80601f0160208091040260200160405190810160405280929190818152602001828054611aec9061333a565b8015611b395780601f10611b0e57610100808354040283529160200191611b39565b820191906000526020600020905b815481529060010190602001808311611b1c57829003601f168201915b505050505081565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b9c57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611bcc5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600081611bde611cb8565b11158015611bed575060005482105b8015611c2b575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b611c42611ebe565b73ffffffffffffffffffffffffffffffffffffffff16611c60611536565b73ffffffffffffffffffffffffffffffffffffffff1614611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90612fcb565b60405180910390fd5b565b60006001905090565b60008082905080611cd0611cb8565b11611d5857600054811015611d575760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082161415611d55575b6000811415611d4b576004600083600190039350838152602001908152602001600020549050611d20565b8092505050611d8a565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611e17868684612336565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b80611e62610ca3565b611e6c9190613165565b6101711015611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea79061300b565b60405180910390fd5b611eba828261233f565b5050565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611fb2611c32565b8786866040518563ffffffff1660e01b8152600401611fd49493929190612e9e565b602060405180830381600087803b158015611fee57600080fd5b505af192505050801561201f57506040513d601f19601f8201168201806040525081019061201c9190612aac565b60015b612099573d806000811461204f576040519150601f19603f3d011682016040523d82523d6000602084013e612054565b606091505b50600081511415612091576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600c80546120fb9061333a565b80601f01602080910402602001604051908101604052809291908181526020018280546121279061333a565b80156121745780601f1061214957610100808354040283529160200191612174565b820191906000526020600020905b81548152906001019060200180831161215757829003601f168201915b5050505050905090565b606060008214156121c6576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506122da565b600082905060005b600082146121f85780806121e19061339d565b915050600a826121f191906131bb565b91506121ce565b60008167ffffffffffffffff811115612214576122136134d3565b5b6040519080825280601f01601f1916602001820160405280156122465781602001600182028036833780820191505090505b5090505b600085146122d35760018261225f9190613246565b9150600a8561226e91906133e6565b603061227a9190613165565b60f81b8183815181106122905761228f6134a4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122cc91906131bb565b945061224a565b8093505050505b919050565b600067ffffffffffffffff6040600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054901c169050919050565b60009392505050565b61235982826040518060200160405280600081525061235d565b5050565b61236783836123fa565b60008373ffffffffffffffffffffffffffffffffffffffff163b146123f557600080549050600083820390505b6123a76000868380600101945086611f8c565b6123dd576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106123945781600054146123f257600080fd5b50505b505050565b600080549050600082141561243b576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124486000848385611dfa565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506124bf836124b06000866000611e00565b6124b9856125b7565b17611e28565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461256057808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612525565b50600082141561259c576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506125b26000848385611e53565b505050565b60006001821460e11b9050919050565b8280546125d39061333a565b90600052602060002090601f0160209004810192826125f5576000855561263c565b82601f1061260e57803560ff191683800117855561263c565b8280016001018555821561263c579182015b8281111561263b578235825591602001919060010190612620565b5b50905061264991906126d3565b5090565b8280546126599061333a565b90600052602060002090601f01602090048101928261267b57600085556126c2565b82601f1061269457805160ff19168380011785556126c2565b828001600101855582156126c2579182015b828111156126c15782518255916020019190600101906126a6565b5b5090506126cf91906126d3565b5090565b5b808211156126ec5760008160009055506001016126d4565b5090565b60006127036126fe846130ab565b613086565b90508281526020810184848401111561271f5761271e613511565b5b61272a8482856132f8565b509392505050565b6000612745612740846130dc565b613086565b90508281526020810184848401111561276157612760613511565b5b61276c8482856132f8565b509392505050565b600081359050612783816136c5565b92915050565b600081359050612798816136dc565b92915050565b6000813590506127ad816136f3565b92915050565b6000815190506127c2816136f3565b92915050565b600082601f8301126127dd576127dc613507565b5b81356127ed8482602086016126f0565b91505092915050565b60008083601f84011261280c5761280b613507565b5b8235905067ffffffffffffffff81111561282957612828613502565b5b6020830191508360018202830111156128455761284461350c565b5b9250929050565b600082601f83011261286157612860613507565b5b8135612871848260208601612732565b91505092915050565b6000813590506128898161370a565b92915050565b6000602082840312156128a5576128a461351b565b5b60006128b384828501612774565b91505092915050565b600080604083850312156128d3576128d261351b565b5b60006128e185828601612774565b92505060206128f285828601612774565b9150509250929050565b6000806000606084860312156129155761291461351b565b5b600061292386828701612774565b935050602061293486828701612774565b92505060406129458682870161287a565b9150509250925092565b600080600080608085870312156129695761296861351b565b5b600061297787828801612774565b945050602061298887828801612774565b93505060406129998782880161287a565b925050606085013567ffffffffffffffff8111156129ba576129b9613516565b5b6129c6878288016127c8565b91505092959194509250565b600080604083850312156129e9576129e861351b565b5b60006129f785828601612774565b9250506020612a0885828601612789565b9150509250929050565b60008060408385031215612a2957612a2861351b565b5b6000612a3785828601612774565b9250506020612a488582860161287a565b9150509250929050565b600060208284031215612a6857612a6761351b565b5b6000612a7684828501612789565b91505092915050565b600060208284031215612a9557612a9461351b565b5b6000612aa38482850161279e565b91505092915050565b600060208284031215612ac257612ac161351b565b5b6000612ad0848285016127b3565b91505092915050565b60008060208385031215612af057612aef61351b565b5b600083013567ffffffffffffffff811115612b0e57612b0d613516565b5b612b1a858286016127f6565b92509250509250929050565b600060208284031215612b3c57612b3b61351b565b5b600082013567ffffffffffffffff811115612b5a57612b59613516565b5b612b668482850161284c565b91505092915050565b600060208284031215612b8557612b8461351b565b5b6000612b938482850161287a565b91505092915050565b60008060408385031215612bb357612bb261351b565b5b6000612bc18582860161287a565b9250506020612bd28582860161287a565b9150509250929050565b612be58161327a565b82525050565b612bf48161328c565b82525050565b612c0381613298565b82525050565b6000612c1482613122565b612c1e8185613138565b9350612c2e818560208601613307565b612c3781613520565b840191505092915050565b6000612c4d8261312d565b612c578185613149565b9350612c67818560208601613307565b612c7081613520565b840191505092915050565b6000612c868261312d565b612c90818561315a565b9350612ca0818560208601613307565b80840191505092915050565b60008154612cb98161333a565b612cc3818661315a565b94506001821660008114612cde5760018114612cef57612d22565b60ff19831686528186019350612d22565b612cf88561310d565b60005b83811015612d1a57815481890152600182019150602081019050612cfb565b838801955050505b50505092915050565b6000612d38600e83613149565b9150612d4382613531565b602082019050919050565b6000612d5b602683613149565b9150612d668261355a565b604082019050919050565b6000612d7e601883613149565b9150612d89826135a9565b602082019050919050565b6000612da1602083613149565b9150612dac826135d2565b602082019050919050565b6000612dc4602f83613149565b9150612dcf826135fb565b604082019050919050565b6000612de7601883613149565b9150612df28261364a565b602082019050919050565b6000612e0a601f83613149565b9150612e1582613673565b602082019050919050565b6000612e2d601883613149565b9150612e388261369c565b602082019050919050565b612e4c816132ee565b82525050565b6000612e5e8286612c7b565b9150612e6a8285612c7b565b9150612e768284612cac565b9150819050949350505050565b6000602082019050612e986000830184612bdc565b92915050565b6000608082019050612eb36000830187612bdc565b612ec06020830186612bdc565b612ecd6040830185612e43565b8181036060830152612edf8184612c09565b905095945050505050565b6000604082019050612eff6000830185612bdc565b612f0c6020830184612e43565b9392505050565b6000602082019050612f286000830184612beb565b92915050565b6000602082019050612f436000830184612bfa565b92915050565b60006020820190508181036000830152612f638184612c42565b905092915050565b60006020820190508181036000830152612f8481612d2b565b9050919050565b60006020820190508181036000830152612fa481612d4e565b9050919050565b60006020820190508181036000830152612fc481612d71565b9050919050565b60006020820190508181036000830152612fe481612d94565b9050919050565b6000602082019050818103600083015261300481612db7565b9050919050565b6000602082019050818103600083015261302481612dda565b9050919050565b6000602082019050818103600083015261304481612dfd565b9050919050565b6000602082019050818103600083015261306481612e20565b9050919050565b60006020820190506130806000830184612e43565b92915050565b60006130906130a1565b905061309c828261336c565b919050565b6000604051905090565b600067ffffffffffffffff8211156130c6576130c56134d3565b5b6130cf82613520565b9050602081019050919050565b600067ffffffffffffffff8211156130f7576130f66134d3565b5b61310082613520565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613170826132ee565b915061317b836132ee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131b0576131af613417565b5b828201905092915050565b60006131c6826132ee565b91506131d1836132ee565b9250826131e1576131e0613446565b5b828204905092915050565b60006131f7826132ee565b9150613202836132ee565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561323b5761323a613417565b5b828202905092915050565b6000613251826132ee565b915061325c836132ee565b92508282101561326f5761326e613417565b5b828203905092915050565b6000613285826132ce565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561332557808201518184015260208101905061330a565b83811115613334576000848401525b50505050565b6000600282049050600182168061335257607f821691505b6020821081141561336657613365613475565b5b50919050565b61337582613520565b810181811067ffffffffffffffff82111715613394576133936134d3565b5b80604052505050565b60006133a8826132ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133db576133da613417565b5b600182019050919050565b60006133f1826132ee565b91506133fc836132ee565b92508261340c5761340b613446565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4d696e7420697320636c6f736564000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e636f72726563742070617961626c6520616d6f756e740000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682050757878696573206c656674210000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f596f752063616e277420666565642074686174206d616e790000000000000000600082015250565b6136ce8161327a565b81146136d957600080fd5b50565b6136e58161328c565b81146136f057600080fd5b50565b6136fc816132a2565b811461370757600080fd5b50565b613713816132ee565b811461371e57600080fd5b5056fea26469706673582212206828fe5e45dae81e9992886cd171009a85cef085393dd8af5d84fca20d67845c64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008ccd7fe0e34eccb3fe0c55e5ae6ed9ffcb48575e0000000000000000000000008ccd7fe0e34eccb3fe0c55e5ae6ed9ffcb48575e0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d5466725a4a6d4252767554665747366e324b6879454c4363325533385135654574624e4b6a584852577158372f00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _royalties (address): 0x8CCd7fE0e34ECcb3fE0c55e5Ae6ed9ffCB48575e
Arg [1] : _beneficiary (address): 0x8CCd7fE0e34ECcb3fE0c55e5Ae6ed9ffCB48575e
Arg [2] : _initBaseURI (string): https://ipfs.io/ipfs/QmTfrZJmBRvuTfWG6n2KhyELCc2U38Q5eEtbNKjXHRWqX7/
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000008ccd7fe0e34eccb3fe0c55e5ae6ed9ffcb48575e
Arg [1] : 0000000000000000000000008ccd7fe0e34eccb3fe0c55e5ae6ed9ffcb48575e
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000044
Arg [4] : 68747470733a2f2f697066732e696f2f697066732f516d5466725a4a6d425276
Arg [5] : 7554665747366e324b6879454c4363325533385135654574624e4b6a58485257
Arg [6] : 7158372f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
31238:4355:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35395:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31853:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31749:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15355:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18747:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18336:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33328:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31686:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32735:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13477:185;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32850:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31894:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20565:1775;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35095:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;32966:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31550:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32034:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34077:108;;;;;;;;;;;;;:::i;:::-;;31796:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22351:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33952:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33466:476;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16014:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31636:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31471:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13962:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8072:103;;;;;;;;;;;;;:::i;:::-;;33078:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7830:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15466:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18977:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32109:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22547:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31499:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34199:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34754:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34641:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19296:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31942:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32071:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8186:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31431:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35395:195;35517:4;35546:36;35570:11;35546:23;:36::i;:::-;35539:43;;35395:195;;;:::o;31853:34::-;;;;;;;;;;;;;:::o;31749:40::-;31788:1;31749:40;:::o;15355:100::-;15409:13;15442:5;15435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15355:100;:::o;18747:218::-;18823:7;18848:16;18856:7;18848;:16::i;:::-;18843:64;;18873:34;;;;;;;;;;;;;;18843:64;18927:15;:24;18943:7;18927:24;;;;;;;;;;;:30;;;;;;;;;;;;18920:37;;18747:218;;;:::o;18336:400::-;18417:13;18433:16;18441:7;18433;:16::i;:::-;18417:32;;18489:5;18466:28;;:19;:17;:19::i;:::-;:28;;;18462:175;;18514:44;18531:5;18538:19;:17;:19::i;:::-;18514:16;:44::i;:::-;18509:128;;18586:35;;;;;;;;;;;;;;18509:128;18462:175;18682:2;18649:15;:24;18665:7;18649:24;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;18720:7;18716:2;18700:28;;18709:5;18700:28;;;;;;;;;;;;18406:330;18336:400;;:::o;33328:113::-;33386:7;33413:14;:20;33428:4;33413:20;;;;;;;;;;;;;;;;33406:27;;33328:113;;;:::o;31686:49::-;31728:7;31686:49;:::o;32735:107::-;7784:13;:11;:13::i;:::-;32830:4:::1;;32812:15;:22;;;;;;;:::i;:::-;;32735:107:::0;;:::o;13477:185::-;13538:7;13628:15;:13;:15::i;:::-;13613:12;;13597:13;;:28;:46;13590:53;;13477:185;:::o;32850:108::-;7784:13;:11;:13::i;:::-;32938:12:::1;32924:11;;:26;;;;;;;;;;;;;;;;;;32850:108:::0;:::o;31894:37::-;;;;;;;;;;;;;:::o;20565:1775::-;20699:27;20729;20748:7;20729:18;:27::i;:::-;20699:57;;20814:4;20773:45;;20789:19;20773:45;;;20769:86;;20827:28;;;;;;;;;;;;;;20769:86;20869:27;20898:23;20925:35;20952:7;20925:26;:35::i;:::-;20868:92;;;;20987:68;21012:15;21029:4;21035:19;:17;:19::i;:::-;20987:24;:68::i;:::-;20982:180;;21075:43;21092:4;21098:19;:17;:19::i;:::-;21075:16;:43::i;:::-;21070:92;;21127:35;;;;;;;;;;;;;;21070:92;20982:180;21193:1;21179:16;;:2;:16;;;21175:52;;;21204:23;;;;;;;;;;;;;;21175:52;21240:43;21262:4;21268:2;21272:7;21281:1;21240:21;:43::i;:::-;21332:15;21329:101;;;21413:1;21392:19;21385:30;21329:101;21500:18;:24;21519:4;21500:24;;;;;;;;;;;;;;;;21498:26;;;;;;;;;;;;21542:18;:22;21561:2;21542:22;;;;;;;;;;;;;;;;21540:24;;;;;;;;;;;21623:146;21660:2;21709:45;21724:4;21730:2;21734:19;21709:14;:45::i;:::-;12078:8;21681:73;21623:18;:146::i;:::-;21594:17;:26;21612:7;21594:26;;;;;;;;;;;:175;;;;21853:1;12078:8;21802:19;:47;:52;21798:426;;;21875:19;21907:1;21897:7;:11;21875:33;;21982:1;21948:17;:30;21966:11;21948:30;;;;;;;;;;;;:35;21944:265;;;22048:13;;22033:11;:28;22029:161;;22147:19;22114:17;:30;22132:11;22114:30;;;;;;;;;;;:52;;;;22029:161;21944:265;21856:368;21798:426;22271:7;22267:2;22252:27;;22261:4;22252:27;;;;;;;;;;;;22290:42;22311:4;22317:2;22321:7;22330:1;22290:20;:42::i;:::-;20688:1652;;;20565:1775;;;:::o;35095:290::-;35204:7;35213:21;35332:1;35325:3;35312:10;:16;;;;:::i;:::-;35311:22;;;;:::i;:::-;35295:38;;35352:9;;;;;;;;;;;35344:33;;35095:290;;;;;:::o;32966:100::-;7784:13;:11;:13::i;:::-;33048:10:::1;33036:9;;:22;;;;;;;;;;;;;;;;;;32966:100:::0;:::o;31550:40::-;31587:3;31550:40;:::o;32034:26::-;;;;;;;;;;;;;:::o;34077:108::-;7784:13;:11;:13::i;:::-;34133:11:::1;;;;;;;;;;;34125:29;;:52;34155:21;34125:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34077:108::o:0;31796:46::-;31835:7;31796:46;:::o;22351:185::-;22489:39;22506:4;22512:2;22516:7;22489:39;;;;;;;;;;;;:16;:39::i;:::-;22351:185;;;:::o;33952:112::-;7784:13;:11;:13::i;:::-;34029:27:::1;34043:2;34047:8;34029:13;:27::i;:::-;33952:112:::0;;:::o;33466:476::-;189:1;347:7;;:19;;339:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;189:1;425:7;:18;;;;33544:14:::1;33561:12;:10;:12::i;:::-;33544:29;;33594:14;;;;;;;;;;;33586:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;33687:14;:22;33702:6;33687:22;;;;;;;;;;;;;;;;31788:1;33672:37;;;;:::i;:::-;33660:8;:49;;33638:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;33808:8;31835:7;33793:23;;;;:::i;:::-;33780:9;:36;33772:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;33884:8;33858:14;:22;33873:6;33858:22;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;33903:31;33917:6;33925:8;33903:13;:31::i;:::-;33533:409;145:1:::0;480:7;:22;;;;33466:476;:::o;16014:152::-;16086:7;16129:27;16148:7;16129:18;:27::i;:::-;16106:52;;16014:152;;;:::o;31636:43::-;31678:1;31636:43;:::o;31471:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13962:233::-;14034:7;14075:1;14058:19;;:5;:19;;;14054:60;;;14086:28;;;;;;;;;;;;;;14054:60;11570:13;14132:18;:25;14151:5;14132:25;;;;;;;;;;;;;;;;:55;14125:62;;13962:233;;;:::o;8072:103::-;7784:13;:11;:13::i;:::-;8137:30:::1;8164:1;8137:18;:30::i;:::-;8072:103::o:0;33078:115::-;7784:13;:11;:13::i;:::-;33170:15:::1;33153:14;;:32;;;;;;;;;;;;;;;;;;33078:115:::0;:::o;7830:87::-;7876:7;7903:6;;;;;;;;;;;7896:13;;7830:87;:::o;15466:104::-;15522:13;15555:7;15548:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15466:104;:::o;18977:308::-;19088:19;:17;:19::i;:::-;19076:31;;:8;:31;;;19072:61;;;19116:17;;;;;;;;;;;;;;19072:61;19198:8;19146:18;:39;19165:19;:17;:19::i;:::-;19146:39;;;;;;;;;;;;;;;:49;19186:8;19146:49;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;19258:8;19222:55;;19237:19;:17;:19::i;:::-;19222:55;;;19268:8;19222:55;;;;;;:::i;:::-;;;;;;;;18977:308;;:::o;32109:33::-;;;;;;;;;;;;;:::o;22547:399::-;22714:31;22727:4;22733:2;22737:7;22714:12;:31::i;:::-;22778:1;22760:2;:14;;;:19;22756:183;;22799:56;22830:4;22836:2;22840:7;22849:5;22799:30;:56::i;:::-;22794:145;;22883:40;;;;;;;;;;;;;;22794:145;22756:183;22547:399;;;;:::o;31499:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;34199:430::-;34297:13;34340:16;34348:7;34340;:16::i;:::-;34324:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;34433:28;34464:10;:8;:10::i;:::-;34433:41;;34519:1;34494:14;34488:28;:32;:133;;;;;;;;;;;;;;;;;34556:14;34572:18;:7;:16;:18::i;:::-;34592:13;34539:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;34488:133;34481:140;;;34199:430;;;:::o;34754:113::-;34812:7;34839:20;34853:5;34839:13;:20::i;:::-;34832:27;;34754:113;;;:::o;34641:103::-;7784:13;:11;:13::i;:::-;34725:11:::1;34715:7;:21;;;;;;;;;;;;:::i;:::-;;34641:103:::0;:::o;19296:164::-;19393:4;19417:18;:25;19436:5;19417:25;;;;;;;;;;;;;;;:35;19443:8;19417:35;;;;;;;;;;;;;;;;;;;;;;;;;19410:42;;19296:164;;;;:::o;31942:19::-;;;;:::o;32071:24::-;;;;;;;;;;;;;:::o;8186:201::-;7784:13;:11;:13::i;:::-;8295:1:::1;8275:22;;:8;:22;;;;8267:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8351:28;8370:8;8351:18;:28::i;:::-;8186:201:::0;:::o;31431:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15094:250::-;15179:4;15240:10;15225:25;;:11;:25;;;;:68;;;;15283:10;15268:25;;:11;:25;;;;15225:68;:111;;;;15326:10;15311:25;;:11;:25;;;;15225:111;15205:131;;15094:250;;;:::o;19472:244::-;19537:4;19593:7;19574:15;:13;:15::i;:::-;:26;;:66;;;;;19627:13;;19617:7;:23;19574:66;:133;;;;;19706:1;11944:8;19658:17;:26;19676:7;19658:26;;;;;;;;;;;;:44;:49;19574:133;19554:153;;19472:244;;;:::o;30201:105::-;30261:7;30288:10;30281:17;;30201:105;:::o;7930:132::-;8005:12;:10;:12::i;:::-;7994:23;;:7;:5;:7::i;:::-;:23;;;7986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7930:132::o;13259:92::-;13315:7;13342:1;13335:8;;13259:92;:::o;16737:673::-;16804:7;16824:12;16839:7;16824:22;;16907:4;16888:15;:13;:15::i;:::-;:23;16884:459;;16941:13;;16934:4;:20;16930:413;;;16979:14;16996:17;:23;17014:4;16996:23;;;;;;;;;;;;16979:40;;17093:1;11944:8;17065:6;:24;:29;17061:263;;;17148:113;17165:1;17155:6;:11;17148:113;;;17208:17;:25;17226:6;;;;;;;17208:25;;;;;;;;;;;;17199:34;;17148:113;;;17294:6;17287:13;;;;;;17061:263;16956:387;16930:413;16884:459;17371:31;;;;;;;;;;;;;;16737:673;;;;:::o;20155:400::-;20257:27;20286:23;20327:38;20368:15;:24;20384:7;20368:24;;;;;;;;;;;20327:65;;20460:18;20437:41;;20517:19;20511:26;20492:45;;20422:126;20155:400;;;:::o;19728:416::-;19877:11;19959:16;19952:5;19948:28;19939:37;;20027:16;20016:9;20012:32;19999:45;;20109:15;20098:9;20095:30;20087:5;20076:9;20073:20;20070:56;20060:66;;19728:416;;;;;:::o;22958:159::-;;;;;:::o;29878:311::-;30013:7;30033:16;12141:3;30059:19;:41;;30033:68;;12141:3;30127:31;30138:4;30144:2;30148:9;30127:10;:31::i;:::-;30119:40;;:62;;30112:69;;;29878:311;;;;;:::o;17798:298::-;17878:14;17962:16;17955:5;17951:28;17942:37;;18071:5;18057:11;18032:23;18028:41;18025:52;18018:5;18015:63;18005:73;;17798:298;;;;:::o;23127:158::-;;;;;:::o;34878:201::-;34991:8;34975:13;:11;:13::i;:::-;:24;;;;:::i;:::-;31587:3;34961:38;;34952:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;35048:23;35058:2;35062:8;35048:9;:23::i;:::-;34878:201;;:::o;32452:107::-;32514:7;32541:10;32534:17;;32452:107;:::o;8400:191::-;8474:16;8493:6;;;;;;;;;;;8474:25;;8519:8;8510:6;;:17;;;;;;;;;;;;;;;;;;8574:8;8543:40;;8564:8;8543:40;;;;;;;;;;;;8463:128;8400:191;:::o;23295:716::-;23458:4;23504:2;23479:45;;;23525:19;:17;:19::i;:::-;23546:4;23552:7;23561:5;23479:88;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;23475:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23779:1;23762:6;:13;:18;23758:235;;;23808:40;;;;;;;;;;;;;;23758:235;23951:6;23945:13;23936:6;23932:2;23928:15;23921:38;23475:529;23648:54;;;23638:64;;;:6;:64;;;;23631:71;;;23295:716;;;;;;:::o;33212:108::-;33272:13;33305:7;33298:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33212:108;:::o;696:540::-;752:13;799:1;790:5;:10;786:53;;;817:10;;;;;;;;;;;;;;;;;;;;;786:53;849:12;864:5;849:20;;880:14;905:78;920:1;912:4;:9;905:78;;938:8;;;;;:::i;:::-;;;;969:2;961:10;;;;;:::i;:::-;;;905:78;;;993:19;1025:6;1015:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;993:39;;1043:154;1059:1;1050:5;:10;1043:154;;1087:1;1077:11;;;;;:::i;:::-;;;1154:2;1146:5;:10;;;;:::i;:::-;1133:2;:24;;;;:::i;:::-;1120:39;;1103:6;1110;1103:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1183:2;1174:11;;;;;:::i;:::-;;;1043:154;;;1221:6;1207:21;;;;;696:540;;;;:::o;14208:178::-;14269:7;11570:13;11641:2;14297:18;:25;14316:5;14297:25;;;;;;;;;;;;;;;;:50;;14296:82;14289:89;;14208:178;;;:::o;29719:147::-;29856:6;29719:147;;;;;:::o;27221:112::-;27298:27;27308:2;27312:8;27298:27;;;;;;;;;;;;:9;:27::i;:::-;27221:112;;:::o;26545:664::-;26676:19;26682:2;26686:8;26676:5;:19::i;:::-;26755:1;26737:2;:14;;;:19;26733:458;;26777:11;26791:13;;26777:27;;26823:13;26845:8;26839:3;:14;26823:30;;26872:233;26903:62;26942:1;26946:2;26950:7;;;;;;26959:5;26903:30;:62::i;:::-;26898:167;;27001:40;;;;;;;;;;;;;;26898:167;27100:3;27092:5;:11;26872:233;;27162:3;27145:13;;:20;27141:34;;27167:8;;;27141:34;26758:433;;26733:458;26545:664;;;:::o;24021:1533::-;24094:20;24117:13;;24094:36;;24157:1;24145:8;:13;24141:44;;;24167:18;;;;;;;;;;;;;;24141:44;24198:61;24228:1;24232:2;24236:12;24250:8;24198:21;:61::i;:::-;24386:1;11641:2;24356:1;:26;;24355:32;24343:8;:45;24317:18;:22;24336:2;24317:22;;;;;;;;;;;;;;;;:71;;;;;;;;;;;24451:139;24488:2;24542:33;24565:1;24569:2;24573:1;24542:14;:33::i;:::-;24509:30;24530:8;24509:20;:30::i;:::-;:66;24451:18;:139::i;:::-;24417:17;:31;24435:12;24417:31;;;;;;;;;;;:173;;;;24607:16;24638:11;24667:8;24652:12;:23;24638:37;;24769:16;24765:2;24761:25;24749:37;;25003:12;24971:8;24946:1;24897:25;24872:1;24848;24821:214;25115:1;25101:12;25097:20;25055:299;25156:3;25147:7;25144:16;25055:299;;25327:7;25317:8;25314:1;25287:25;25284:1;25281;25276:59;25209:1;25200:7;25196:15;25185:26;;25055:299;;;25059:77;25399:1;25387:8;:13;25383:45;;;25409:19;;;;;;;;;;;;;;25383:45;25461:3;25445:13;:19;;;;24280:1196;;25486:60;25515:1;25519:2;25523:12;25537:8;25486:20;:60::i;:::-;24083:1471;24021:1533;;:::o;18109:214::-;18179:14;18302:1;18292:8;18289:15;18263:24;18259:46;18249:56;;18109:214;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:553::-;1844:8;1854:6;1904:3;1897:4;1889:6;1885:17;1881:27;1871:122;;1912:79;;:::i;:::-;1871:122;2025:6;2012:20;2002:30;;2055:18;2047:6;2044:30;2041:117;;;2077:79;;:::i;:::-;2041:117;2191:4;2183:6;2179:17;2167:29;;2245:3;2237:4;2229:6;2225:17;2215:8;2211:32;2208:41;2205:128;;;2252:79;;:::i;:::-;2205:128;1786:553;;;;;:::o;2359:340::-;2415:5;2464:3;2457:4;2449:6;2445:17;2441:27;2431:122;;2472:79;;:::i;:::-;2431:122;2589:6;2576:20;2614:79;2689:3;2681:6;2674:4;2666:6;2662:17;2614:79;:::i;:::-;2605:88;;2421:278;2359:340;;;;:::o;2705:139::-;2751:5;2789:6;2776:20;2767:29;;2805:33;2832:5;2805:33;:::i;:::-;2705:139;;;;:::o;2850:329::-;2909:6;2958:2;2946:9;2937:7;2933:23;2929:32;2926:119;;;2964:79;;:::i;:::-;2926:119;3084:1;3109:53;3154:7;3145:6;3134:9;3130:22;3109:53;:::i;:::-;3099:63;;3055:117;2850:329;;;;:::o;3185:474::-;3253:6;3261;3310:2;3298:9;3289:7;3285:23;3281:32;3278:119;;;3316:79;;:::i;:::-;3278:119;3436:1;3461:53;3506:7;3497:6;3486:9;3482:22;3461:53;:::i;:::-;3451:63;;3407:117;3563:2;3589:53;3634:7;3625:6;3614:9;3610:22;3589:53;:::i;:::-;3579:63;;3534:118;3185:474;;;;;:::o;3665:619::-;3742:6;3750;3758;3807:2;3795:9;3786:7;3782:23;3778:32;3775:119;;;3813:79;;:::i;:::-;3775:119;3933:1;3958:53;4003:7;3994:6;3983:9;3979:22;3958:53;:::i;:::-;3948:63;;3904:117;4060:2;4086:53;4131:7;4122:6;4111:9;4107:22;4086:53;:::i;:::-;4076:63;;4031:118;4188:2;4214:53;4259:7;4250:6;4239:9;4235:22;4214:53;:::i;:::-;4204:63;;4159:118;3665:619;;;;;:::o;4290:943::-;4385:6;4393;4401;4409;4458:3;4446:9;4437:7;4433:23;4429:33;4426:120;;;4465:79;;:::i;:::-;4426:120;4585:1;4610:53;4655:7;4646:6;4635:9;4631:22;4610:53;:::i;:::-;4600:63;;4556:117;4712:2;4738:53;4783:7;4774:6;4763:9;4759:22;4738:53;:::i;:::-;4728:63;;4683:118;4840:2;4866:53;4911:7;4902:6;4891:9;4887:22;4866:53;:::i;:::-;4856:63;;4811:118;4996:2;4985:9;4981:18;4968:32;5027:18;5019:6;5016:30;5013:117;;;5049:79;;:::i;:::-;5013:117;5154:62;5208:7;5199:6;5188:9;5184:22;5154:62;:::i;:::-;5144:72;;4939:287;4290:943;;;;;;;:::o;5239:468::-;5304:6;5312;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5614:2;5640:50;5682:7;5673:6;5662:9;5658:22;5640:50;:::i;:::-;5630:60;;5585:115;5239:468;;;;;:::o;5713:474::-;5781:6;5789;5838:2;5826:9;5817:7;5813:23;5809:32;5806:119;;;5844:79;;:::i;:::-;5806:119;5964:1;5989:53;6034:7;6025:6;6014:9;6010:22;5989:53;:::i;:::-;5979:63;;5935:117;6091:2;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6062:118;5713:474;;;;;:::o;6193:323::-;6249:6;6298:2;6286:9;6277:7;6273:23;6269:32;6266:119;;;6304:79;;:::i;:::-;6266:119;6424:1;6449:50;6491:7;6482:6;6471:9;6467:22;6449:50;:::i;:::-;6439:60;;6395:114;6193:323;;;;:::o;6522:327::-;6580:6;6629:2;6617:9;6608:7;6604:23;6600:32;6597:119;;;6635:79;;:::i;:::-;6597:119;6755:1;6780:52;6824:7;6815:6;6804:9;6800:22;6780:52;:::i;:::-;6770:62;;6726:116;6522:327;;;;:::o;6855:349::-;6924:6;6973:2;6961:9;6952:7;6948:23;6944:32;6941:119;;;6979:79;;:::i;:::-;6941:119;7099:1;7124:63;7179:7;7170:6;7159:9;7155:22;7124:63;:::i;:::-;7114:73;;7070:127;6855:349;;;;:::o;7210:529::-;7281:6;7289;7338:2;7326:9;7317:7;7313:23;7309:32;7306:119;;;7344:79;;:::i;:::-;7306:119;7492:1;7481:9;7477:17;7464:31;7522:18;7514:6;7511:30;7508:117;;;7544:79;;:::i;:::-;7508:117;7657:65;7714:7;7705:6;7694:9;7690:22;7657:65;:::i;:::-;7639:83;;;;7435:297;7210:529;;;;;:::o;7745:509::-;7814:6;7863:2;7851:9;7842:7;7838:23;7834:32;7831:119;;;7869:79;;:::i;:::-;7831:119;8017:1;8006:9;8002:17;7989:31;8047:18;8039:6;8036:30;8033:117;;;8069:79;;:::i;:::-;8033:117;8174:63;8229:7;8220:6;8209:9;8205:22;8174:63;:::i;:::-;8164:73;;7960:287;7745:509;;;;:::o;8260:329::-;8319:6;8368:2;8356:9;8347:7;8343:23;8339:32;8336:119;;;8374:79;;:::i;:::-;8336:119;8494:1;8519:53;8564:7;8555:6;8544:9;8540:22;8519:53;:::i;:::-;8509:63;;8465:117;8260:329;;;;:::o;8595:474::-;8663:6;8671;8720:2;8708:9;8699:7;8695:23;8691:32;8688:119;;;8726:79;;:::i;:::-;8688:119;8846:1;8871:53;8916:7;8907:6;8896:9;8892:22;8871:53;:::i;:::-;8861:63;;8817:117;8973:2;8999:53;9044:7;9035:6;9024:9;9020:22;8999:53;:::i;:::-;8989:63;;8944:118;8595:474;;;;;:::o;9075:118::-;9162:24;9180:5;9162:24;:::i;:::-;9157:3;9150:37;9075:118;;:::o;9199:109::-;9280:21;9295:5;9280:21;:::i;:::-;9275:3;9268:34;9199:109;;:::o;9314:118::-;9401:24;9419:5;9401:24;:::i;:::-;9396:3;9389:37;9314:118;;:::o;9438:360::-;9524:3;9552:38;9584:5;9552:38;:::i;:::-;9606:70;9669:6;9664:3;9606:70;:::i;:::-;9599:77;;9685:52;9730:6;9725:3;9718:4;9711:5;9707:16;9685:52;:::i;:::-;9762:29;9784:6;9762:29;:::i;:::-;9757:3;9753:39;9746:46;;9528:270;9438:360;;;;:::o;9804:364::-;9892:3;9920:39;9953:5;9920:39;:::i;:::-;9975:71;10039:6;10034:3;9975:71;:::i;:::-;9968:78;;10055:52;10100:6;10095:3;10088:4;10081:5;10077:16;10055:52;:::i;:::-;10132:29;10154:6;10132:29;:::i;:::-;10127:3;10123:39;10116:46;;9896:272;9804:364;;;;:::o;10174:377::-;10280:3;10308:39;10341:5;10308:39;:::i;:::-;10363:89;10445:6;10440:3;10363:89;:::i;:::-;10356:96;;10461:52;10506:6;10501:3;10494:4;10487:5;10483:16;10461:52;:::i;:::-;10538:6;10533:3;10529:16;10522:23;;10284:267;10174:377;;;;:::o;10581:845::-;10684:3;10721:5;10715:12;10750:36;10776:9;10750:36;:::i;:::-;10802:89;10884:6;10879:3;10802:89;:::i;:::-;10795:96;;10922:1;10911:9;10907:17;10938:1;10933:137;;;;11084:1;11079:341;;;;10900:520;;10933:137;11017:4;11013:9;11002;10998:25;10993:3;10986:38;11053:6;11048:3;11044:16;11037:23;;10933:137;;11079:341;11146:38;11178:5;11146:38;:::i;:::-;11206:1;11220:154;11234:6;11231:1;11228:13;11220:154;;;11308:7;11302:14;11298:1;11293:3;11289:11;11282:35;11358:1;11349:7;11345:15;11334:26;;11256:4;11253:1;11249:12;11244:17;;11220:154;;;11403:6;11398:3;11394:16;11387:23;;11086:334;;10900:520;;10688:738;;10581:845;;;;:::o;11432:366::-;11574:3;11595:67;11659:2;11654:3;11595:67;:::i;:::-;11588:74;;11671:93;11760:3;11671:93;:::i;:::-;11789:2;11784:3;11780:12;11773:19;;11432:366;;;:::o;11804:::-;11946:3;11967:67;12031:2;12026:3;11967:67;:::i;:::-;11960:74;;12043:93;12132:3;12043:93;:::i;:::-;12161:2;12156:3;12152:12;12145:19;;11804:366;;;:::o;12176:::-;12318:3;12339:67;12403:2;12398:3;12339:67;:::i;:::-;12332:74;;12415:93;12504:3;12415:93;:::i;:::-;12533:2;12528:3;12524:12;12517:19;;12176:366;;;:::o;12548:::-;12690:3;12711:67;12775:2;12770:3;12711:67;:::i;:::-;12704:74;;12787:93;12876:3;12787:93;:::i;:::-;12905:2;12900:3;12896:12;12889:19;;12548:366;;;:::o;12920:::-;13062:3;13083:67;13147:2;13142:3;13083:67;:::i;:::-;13076:74;;13159:93;13248:3;13159:93;:::i;:::-;13277:2;13272:3;13268:12;13261:19;;12920:366;;;:::o;13292:::-;13434:3;13455:67;13519:2;13514:3;13455:67;:::i;:::-;13448:74;;13531:93;13620:3;13531:93;:::i;:::-;13649:2;13644:3;13640:12;13633:19;;13292:366;;;:::o;13664:::-;13806:3;13827:67;13891:2;13886:3;13827:67;:::i;:::-;13820:74;;13903:93;13992:3;13903:93;:::i;:::-;14021:2;14016:3;14012:12;14005:19;;13664:366;;;:::o;14036:::-;14178:3;14199:67;14263:2;14258:3;14199:67;:::i;:::-;14192:74;;14275:93;14364:3;14275:93;:::i;:::-;14393:2;14388:3;14384:12;14377:19;;14036:366;;;:::o;14408:118::-;14495:24;14513:5;14495:24;:::i;:::-;14490:3;14483:37;14408:118;;:::o;14532:589::-;14757:3;14779:95;14870:3;14861:6;14779:95;:::i;:::-;14772:102;;14891:95;14982:3;14973:6;14891:95;:::i;:::-;14884:102;;15003:92;15091:3;15082:6;15003:92;:::i;:::-;14996:99;;15112:3;15105:10;;14532:589;;;;;;:::o;15127:222::-;15220:4;15258:2;15247:9;15243:18;15235:26;;15271:71;15339:1;15328:9;15324:17;15315:6;15271:71;:::i;:::-;15127:222;;;;:::o;15355:640::-;15550:4;15588:3;15577:9;15573:19;15565:27;;15602:71;15670:1;15659:9;15655:17;15646:6;15602:71;:::i;:::-;15683:72;15751:2;15740:9;15736:18;15727:6;15683:72;:::i;:::-;15765;15833:2;15822:9;15818:18;15809:6;15765:72;:::i;:::-;15884:9;15878:4;15874:20;15869:2;15858:9;15854:18;15847:48;15912:76;15983:4;15974:6;15912:76;:::i;:::-;15904:84;;15355:640;;;;;;;:::o;16001:332::-;16122:4;16160:2;16149:9;16145:18;16137:26;;16173:71;16241:1;16230:9;16226:17;16217:6;16173:71;:::i;:::-;16254:72;16322:2;16311:9;16307:18;16298:6;16254:72;:::i;:::-;16001:332;;;;;:::o;16339:210::-;16426:4;16464:2;16453:9;16449:18;16441:26;;16477:65;16539:1;16528:9;16524:17;16515:6;16477:65;:::i;:::-;16339:210;;;;:::o;16555:222::-;16648:4;16686:2;16675:9;16671:18;16663:26;;16699:71;16767:1;16756:9;16752:17;16743:6;16699:71;:::i;:::-;16555:222;;;;:::o;16783:313::-;16896:4;16934:2;16923:9;16919:18;16911:26;;16983:9;16977:4;16973:20;16969:1;16958:9;16954:17;16947:47;17011:78;17084:4;17075:6;17011:78;:::i;:::-;17003:86;;16783:313;;;;:::o;17102:419::-;17268:4;17306:2;17295:9;17291:18;17283:26;;17355:9;17349:4;17345:20;17341:1;17330:9;17326:17;17319:47;17383:131;17509:4;17383:131;:::i;:::-;17375:139;;17102:419;;;:::o;17527:::-;17693:4;17731:2;17720:9;17716:18;17708:26;;17780:9;17774:4;17770:20;17766:1;17755:9;17751:17;17744:47;17808:131;17934:4;17808:131;:::i;:::-;17800:139;;17527:419;;;:::o;17952:::-;18118:4;18156:2;18145:9;18141:18;18133:26;;18205:9;18199:4;18195:20;18191:1;18180:9;18176:17;18169:47;18233:131;18359:4;18233:131;:::i;:::-;18225:139;;17952:419;;;:::o;18377:::-;18543:4;18581:2;18570:9;18566:18;18558:26;;18630:9;18624:4;18620:20;18616:1;18605:9;18601:17;18594:47;18658:131;18784:4;18658:131;:::i;:::-;18650:139;;18377:419;;;:::o;18802:::-;18968:4;19006:2;18995:9;18991:18;18983:26;;19055:9;19049:4;19045:20;19041:1;19030:9;19026:17;19019:47;19083:131;19209:4;19083:131;:::i;:::-;19075:139;;18802:419;;;:::o;19227:::-;19393:4;19431:2;19420:9;19416:18;19408:26;;19480:9;19474:4;19470:20;19466:1;19455:9;19451:17;19444:47;19508:131;19634:4;19508:131;:::i;:::-;19500:139;;19227:419;;;:::o;19652:::-;19818:4;19856:2;19845:9;19841:18;19833:26;;19905:9;19899:4;19895:20;19891:1;19880:9;19876:17;19869:47;19933:131;20059:4;19933:131;:::i;:::-;19925:139;;19652:419;;;:::o;20077:::-;20243:4;20281:2;20270:9;20266:18;20258:26;;20330:9;20324:4;20320:20;20316:1;20305:9;20301:17;20294:47;20358:131;20484:4;20358:131;:::i;:::-;20350:139;;20077:419;;;:::o;20502:222::-;20595:4;20633:2;20622:9;20618:18;20610:26;;20646:71;20714:1;20703:9;20699:17;20690:6;20646:71;:::i;:::-;20502:222;;;;:::o;20730:129::-;20764:6;20791:20;;:::i;:::-;20781:30;;20820:33;20848:4;20840:6;20820:33;:::i;:::-;20730:129;;;:::o;20865:75::-;20898:6;20931:2;20925:9;20915:19;;20865:75;:::o;20946:307::-;21007:4;21097:18;21089:6;21086:30;21083:56;;;21119:18;;:::i;:::-;21083:56;21157:29;21179:6;21157:29;:::i;:::-;21149:37;;21241:4;21235;21231:15;21223:23;;20946:307;;;:::o;21259:308::-;21321:4;21411:18;21403:6;21400:30;21397:56;;;21433:18;;:::i;:::-;21397:56;21471:29;21493:6;21471:29;:::i;:::-;21463:37;;21555:4;21549;21545:15;21537:23;;21259:308;;;:::o;21573:141::-;21622:4;21645:3;21637:11;;21668:3;21665:1;21658:14;21702:4;21699:1;21689:18;21681:26;;21573:141;;;:::o;21720:98::-;21771:6;21805:5;21799:12;21789:22;;21720:98;;;:::o;21824:99::-;21876:6;21910:5;21904:12;21894:22;;21824:99;;;:::o;21929:168::-;22012:11;22046:6;22041:3;22034:19;22086:4;22081:3;22077:14;22062:29;;21929:168;;;;:::o;22103:169::-;22187:11;22221:6;22216:3;22209:19;22261:4;22256:3;22252:14;22237:29;;22103:169;;;;:::o;22278:148::-;22380:11;22417:3;22402:18;;22278:148;;;;:::o;22432:305::-;22472:3;22491:20;22509:1;22491:20;:::i;:::-;22486:25;;22525:20;22543:1;22525:20;:::i;:::-;22520:25;;22679:1;22611:66;22607:74;22604:1;22601:81;22598:107;;;22685:18;;:::i;:::-;22598:107;22729:1;22726;22722:9;22715:16;;22432:305;;;;:::o;22743:185::-;22783:1;22800:20;22818:1;22800:20;:::i;:::-;22795:25;;22834:20;22852:1;22834:20;:::i;:::-;22829:25;;22873:1;22863:35;;22878:18;;:::i;:::-;22863:35;22920:1;22917;22913:9;22908:14;;22743:185;;;;:::o;22934:348::-;22974:7;22997:20;23015:1;22997:20;:::i;:::-;22992:25;;23031:20;23049:1;23031:20;:::i;:::-;23026:25;;23219:1;23151:66;23147:74;23144:1;23141:81;23136:1;23129:9;23122:17;23118:105;23115:131;;;23226:18;;:::i;:::-;23115:131;23274:1;23271;23267:9;23256:20;;22934:348;;;;:::o;23288:191::-;23328:4;23348:20;23366:1;23348:20;:::i;:::-;23343:25;;23382:20;23400:1;23382:20;:::i;:::-;23377:25;;23421:1;23418;23415:8;23412:34;;;23426:18;;:::i;:::-;23412:34;23471:1;23468;23464:9;23456:17;;23288:191;;;;:::o;23485:96::-;23522:7;23551:24;23569:5;23551:24;:::i;:::-;23540:35;;23485:96;;;:::o;23587:90::-;23621:7;23664:5;23657:13;23650:21;23639:32;;23587:90;;;:::o;23683:77::-;23720:7;23749:5;23738:16;;23683:77;;;:::o;23766:149::-;23802:7;23842:66;23835:5;23831:78;23820:89;;23766:149;;;:::o;23921:126::-;23958:7;23998:42;23991:5;23987:54;23976:65;;23921:126;;;:::o;24053:77::-;24090:7;24119:5;24108:16;;24053:77;;;:::o;24136:154::-;24220:6;24215:3;24210;24197:30;24282:1;24273:6;24268:3;24264:16;24257:27;24136:154;;;:::o;24296:307::-;24364:1;24374:113;24388:6;24385:1;24382:13;24374:113;;;24473:1;24468:3;24464:11;24458:18;24454:1;24449:3;24445:11;24438:39;24410:2;24407:1;24403:10;24398:15;;24374:113;;;24505:6;24502:1;24499:13;24496:101;;;24585:1;24576:6;24571:3;24567:16;24560:27;24496:101;24345:258;24296:307;;;:::o;24609:320::-;24653:6;24690:1;24684:4;24680:12;24670:22;;24737:1;24731:4;24727:12;24758:18;24748:81;;24814:4;24806:6;24802:17;24792:27;;24748:81;24876:2;24868:6;24865:14;24845:18;24842:38;24839:84;;;24895:18;;:::i;:::-;24839:84;24660:269;24609:320;;;:::o;24935:281::-;25018:27;25040:4;25018:27;:::i;:::-;25010:6;25006:40;25148:6;25136:10;25133:22;25112:18;25100:10;25097:34;25094:62;25091:88;;;25159:18;;:::i;:::-;25091:88;25199:10;25195:2;25188:22;24978:238;24935:281;;:::o;25222:233::-;25261:3;25284:24;25302:5;25284:24;:::i;:::-;25275:33;;25330:66;25323:5;25320:77;25317:103;;;25400:18;;:::i;:::-;25317:103;25447:1;25440:5;25436:13;25429:20;;25222:233;;;:::o;25461:176::-;25493:1;25510:20;25528:1;25510:20;:::i;:::-;25505:25;;25544:20;25562:1;25544:20;:::i;:::-;25539:25;;25583:1;25573:35;;25588:18;;:::i;:::-;25573:35;25629:1;25626;25622:9;25617:14;;25461:176;;;;:::o;25643:180::-;25691:77;25688:1;25681:88;25788:4;25785:1;25778:15;25812:4;25809:1;25802:15;25829:180;25877:77;25874:1;25867:88;25974:4;25971:1;25964:15;25998:4;25995:1;25988:15;26015:180;26063:77;26060:1;26053:88;26160:4;26157:1;26150:15;26184:4;26181:1;26174:15;26201:180;26249:77;26246:1;26239:88;26346:4;26343:1;26336:15;26370:4;26367:1;26360:15;26387:180;26435:77;26432:1;26425:88;26532:4;26529:1;26522:15;26556:4;26553:1;26546:15;26573:117;26682:1;26679;26672:12;26696:117;26805:1;26802;26795:12;26819:117;26928:1;26925;26918:12;26942:117;27051:1;27048;27041:12;27065:117;27174:1;27171;27164:12;27188:117;27297:1;27294;27287:12;27311:102;27352:6;27403:2;27399:7;27394:2;27387:5;27383:14;27379:28;27369:38;;27311:102;;;:::o;27419:164::-;27559:16;27555:1;27547:6;27543:14;27536:40;27419:164;:::o;27589:225::-;27729:34;27725:1;27717:6;27713:14;27706:58;27798:8;27793:2;27785:6;27781:15;27774:33;27589:225;:::o;27820:174::-;27960:26;27956:1;27948:6;27944:14;27937:50;27820:174;:::o;28000:182::-;28140:34;28136:1;28128:6;28124:14;28117:58;28000:182;:::o;28188:234::-;28328:34;28324:1;28316:6;28312:14;28305:58;28397:17;28392:2;28384:6;28380:15;28373:42;28188:234;:::o;28428:174::-;28568:26;28564:1;28556:6;28552:14;28545:50;28428:174;:::o;28608:181::-;28748:33;28744:1;28736:6;28732:14;28725:57;28608:181;:::o;28795:174::-;28935:26;28931:1;28923:6;28919:14;28912:50;28795:174;:::o;28975:122::-;29048:24;29066:5;29048:24;:::i;:::-;29041:5;29038:35;29028:63;;29087:1;29084;29077:12;29028:63;28975:122;:::o;29103:116::-;29173:21;29188:5;29173:21;:::i;:::-;29166:5;29163:32;29153:60;;29209:1;29206;29199:12;29153:60;29103:116;:::o;29225:120::-;29297:23;29314:5;29297:23;:::i;:::-;29290:5;29287:34;29277:62;;29335:1;29332;29325:12;29277:62;29225:120;:::o;29351:122::-;29424:24;29442:5;29424:24;:::i;:::-;29417:5;29414:35;29404:63;;29463:1;29460;29453:12;29404:63;29351:122;:::o
Swarm Source
ipfs://6828fe5e45dae81e9992886cd171009a85cef085393dd8af5d84fca20d67845c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.